Integrate to Quick Books Invoicing APIs from Spring Boot project
- or -
Post a project like this1496
$250
- Posted:
- Proposals: 10
- Remote
- #2726654
- OPPORTUNITY
- Awarded
Senior Full Stack Web Developer ✮Blockchain Expert ✮Experienced Graphic Designer ✮WordPress Expert ✮Virtual Assistant ✮ , excel expert ✮ PHP
Islamabad
Software Development | SaaS | Product Development | Infusionsoft/Keap |CRM | CMS
Malvern
Java developer,Spring,Hibernate,Rest web services,Micro services,Multi threading ,Consulting,web applications development,Banking Application development
New Delhi
Full stack engineer | Angular / Vue / React | Node.js / Python / PHP / Laravel / Shopify / Wordpress
Ahmedabad
1131351240489525225422841151294953729711843449781346140635973283762681
Description
Experience Level: Entry
We need a series of use-case to be created in easy steps to enable integration with Quick Books APIs for invoicing.
Create a spring boot project (REST API only - not web interface) with all of these capabilities and provide the QB test account and information so that we can test that it works.
These can be triggered initially as seperate REST apis in a @RestController.
We will provide a simple java object model of an invoice list with invoice details. We would like these use-case completed against a trial copy of quick books.
1) Query customers in QB to match a name to a QB id.
/customerQuery/{displayName} returns QB customerId.
In QB, display name is unique. We need the ID to create the invoice. Test this works against the sandbox data in QB.
https://developer.intuit.com/app/developer/qbo/docs/api/accounting/most-commonly-used/customer
2) Query Items. Send an Item Name, return the QB ItemId
/itemQuery/{name} returns QB customerId.
name is unique in QB.
https://developer.intuit.com/app/developer/qbo/docs/api/accounting/most-commonly-used/item
3) Create invoice in QB for each invoice in java invoice list. Must record exceptions and build a log.info output for now). Exceptions may include invalid data, invoice exists etc. We would also like the response from QB logged, in particular the ID created for the invoice in QB.
https://developer.intuit.com/app/developer/qbo/docs/api/accounting/most-commonly-used/invoice
/invoicesCreate
List will look like this (written in JSON but you will need it in Java objects)
{
[
{
invoiceNumber: "0000001",
invoiceDate: 2020-12-13,
customerName: "test 123",
InvoiceAmount: 200.00,
lines: [
{
"ItemDescription": "ABC123",
"TaxCode": "GST",
"Qty": 2,
"UnitPrice": 100,
"Amount": 200.00
}
]
},
{
invoiceNumber: "0000002",
invoiceDate: 2020-12-14,
customerName: "test 124",
InvoiceAmount: 300.00,
lines: [
{
"ItemDescription": "ABC123",
"TaxCode": "GST",
"Qty": 1,
"UnitPrice": 100,
"Amount": 100.00
},
{
"ItemDescription": "ABC123",
"TaxCode": "GST",
"Qty": 2,
"UnitPrice": 100,
"Amount": 200.00
}
]
}
]
}
The list will be read in, for each invoice read:
- For each invoice, access QB for the customerID
- For each invoice.lines access QB for itemID
- Create a relevant Java object model for QB invoice.
- POST (create) and invoice
4) Compare the invoice list against the invoices in QB to see if there are any discrepancies in invoice#/invoice total$.
/InvoicesCompare
https://developer.intuit.com/app/developer/qbo/docs/api/accounting/most-commonly-used/invoice#query-an-invoice
For each of the above invoices, read them in and query QB for the invoice. log.info():
1) If Invoice does not exist.
2) If invoice date is different.
3) If invoice Amount is different.
4) If invoice items are different (in any way).
If the invoice is missing, run your create invoice method (3) and create it in QB. Log that your did this.
Create a spring boot project (REST API only - not web interface) with all of these capabilities and provide the QB test account and information so that we can test that it works.
These can be triggered initially as seperate REST apis in a @RestController.
We will provide a simple java object model of an invoice list with invoice details. We would like these use-case completed against a trial copy of quick books.
1) Query customers in QB to match a name to a QB id.
/customerQuery/{displayName} returns QB customerId.
In QB, display name is unique. We need the ID to create the invoice. Test this works against the sandbox data in QB.
https://developer.intuit.com/app/developer/qbo/docs/api/accounting/most-commonly-used/customer
2) Query Items. Send an Item Name, return the QB ItemId
/itemQuery/{name} returns QB customerId.
name is unique in QB.
https://developer.intuit.com/app/developer/qbo/docs/api/accounting/most-commonly-used/item
3) Create invoice in QB for each invoice in java invoice list. Must record exceptions and build a log.info output for now). Exceptions may include invalid data, invoice exists etc. We would also like the response from QB logged, in particular the ID created for the invoice in QB.
https://developer.intuit.com/app/developer/qbo/docs/api/accounting/most-commonly-used/invoice
/invoicesCreate
List will look like this (written in JSON but you will need it in Java objects)
{
[
{
invoiceNumber: "0000001",
invoiceDate: 2020-12-13,
customerName: "test 123",
InvoiceAmount: 200.00,
lines: [
{
"ItemDescription": "ABC123",
"TaxCode": "GST",
"Qty": 2,
"UnitPrice": 100,
"Amount": 200.00
}
]
},
{
invoiceNumber: "0000002",
invoiceDate: 2020-12-14,
customerName: "test 124",
InvoiceAmount: 300.00,
lines: [
{
"ItemDescription": "ABC123",
"TaxCode": "GST",
"Qty": 1,
"UnitPrice": 100,
"Amount": 100.00
},
{
"ItemDescription": "ABC123",
"TaxCode": "GST",
"Qty": 2,
"UnitPrice": 100,
"Amount": 200.00
}
]
}
]
}
The list will be read in, for each invoice read:
- For each invoice, access QB for the customerID
- For each invoice.lines access QB for itemID
- Create a relevant Java object model for QB invoice.
- POST (create) and invoice
4) Compare the invoice list against the invoices in QB to see if there are any discrepancies in invoice#/invoice total$.
/InvoicesCompare
https://developer.intuit.com/app/developer/qbo/docs/api/accounting/most-commonly-used/invoice#query-an-invoice
For each of the above invoices, read them in and query QB for the invoice. log.info():
1) If Invoice does not exist.
2) If invoice date is different.
3) If invoice Amount is different.
4) If invoice items are different (in any way).
If the invoice is missing, run your create invoice method (3) and create it in QB. Log that your did this.
Stuart G.
100% (6)Projects Completed
6
Freelancers worked with
5
Projects awarded
55%
Last project
6 Sep 2020
United Kingdom
New Proposal
Login to your account and send a proposal now to get this project.
Log inClarification Board Ask a Question
-
There are no clarification messages.
We collect cookies to enable the proper functioning and security of our website, and to enhance your experience. By clicking on 'Accept All Cookies', you consent to the use of these cookies. You can change your 'Cookies Settings' at any time. For more information, please read ourCookie Policy
Cookie Settings
Accept All Cookies