diff --git a/config-sample.py b/config-sample.py
index ec5a6af..5e9ba2d 100644
--- a/config-sample.py
+++ b/config-sample.py
@@ -30,3 +30,7 @@ ProfileID = 'urn:peppol:pint:billing-1@sg-1'
InvoiceTypeCode = '380'
PeppolID = 'SGUEN200212345Z'
CountryID = 'SG'
+SupplierAddress = '1 Cameron Road #42-01, Singapore'
+SupplierPostalCode = '001321'
+GSTRegNo = 'GSTREGNUMBER'
+SupplierUEN = 'UENNUMBER'
diff --git a/extract_invoice.py b/extract_invoice.py
index 5fcf46e..a66a558 100644
--- a/extract_invoice.py
+++ b/extract_invoice.py
@@ -25,7 +25,7 @@ def extract_invoice(document):
#print (invoice['response']['data'][0]['businessPartner'])
uuid = invoice['response']['data'][0]['id']
uuid = uuid[:8]+'-'+uuid[8:12]+'-'+uuid[12:16]+'-'+uuid[16:20]+'-'+uuid[20:32]
- print(uuid)
+ #print(uuid)
lastCalculatedOnDate = invoice['response']['data'][0]['lastCalculatedOnDate']
daysTillDue = invoice['response']['data'][0]['daysTillDue']
dueDate = date(int(lastCalculatedOnDate[0:4]), int(lastCalculatedOnDate[5:7]), int(lastCalculatedOnDate[8:10])) + timedelta(days=daysTillDue)
@@ -44,12 +44,15 @@ def extract_invoice(document):
lines_json = json.dumps(lines)
#print(lines_json)
lines = json.loads(lines_json)
+ #print(lines)
lines_output = '['
first_line = True
for key in lines:
#print (key)
linetemp_json = json.dumps(key)
+ #print(linetemp_json)
linetemp = json.loads(linetemp_json)
+ #print(linetemp)
if linetemp['product'] != None:
if not first_line:
lines_output = lines_output+','
@@ -62,13 +65,14 @@ def extract_invoice(document):
else:
lines_output = lines_output + '{"service_name": "'+product+'","service_description": "'+linetemp['description']+'","service_quantity": '+str(linetemp['invoicedQuantity'])+',"service_price": '+str(linetemp['unitPrice'])+',"service_vat": '+gst_rate+'}'
lines_output = lines_output+']'
- print(lines_output)
+ #print(lines_output)
ubloutput = xml_header+'\n'+'\n'
ubloutput = ubloutput+indentation+CustomizationID+'\n'
ubloutput = ubloutput+indentation+ProfileID+'\n'
ubloutput = ubloutput+indentation+InvoiceTypeCode+'\n'
ubloutput = ubloutput+indentation+''+invoice['response']['data'][0]['documentNo']+''+'\n'
+ ubloutput = ubloutput+indentation+''+uuid+''+'\n'
ubloutput = ubloutput+indentation+''+invoice['response']['data'][0]['invoiceDate']+''+'\n'
ubloutput = ubloutput+indentation+''+invoice['response']['data'][0]['currency$_identifier']+''+'\n'
ubloutput = ubloutput+indentation+''+'\n'
@@ -78,13 +82,22 @@ def extract_invoice(document):
ubloutput = ubloutput+indentation+indentation+indentation+indentation+'5790000436071'+'\n'
ubloutput = ubloutput+indentation+indentation+indentation+''+'\n'
ubloutput = ubloutput+indentation+indentation+indentation+''+'\n'
+ ubloutput = ubloutput+indentation+indentation+indentation+indentation+''+SupplierAddress+''+'\n'
+ ubloutput = ubloutput+indentation+indentation+indentation+indentation+''+SupplierPostalCode+''+'\n'
ubloutput = ubloutput+indentation+indentation+indentation+indentation+''+'\n'
ubloutput = ubloutput+indentation+indentation+indentation+indentation+indentation+''+CountryID+''+'\n'
ubloutput = ubloutput+indentation+indentation+indentation+indentation+''+'\n'
ubloutput = ubloutput+indentation+indentation+indentation+''+'\n'
ubloutput = ubloutput+indentation+indentation+indentation+''+'\n'
ubloutput = ubloutput+indentation+indentation+indentation+indentation+''+invoice['response']['data'][0]['client$_identifier']+''+'\n'
+ ubloutput = ubloutput+indentation+indentation+indentation+indentation+''+SupplierUEN+''+'\n'
ubloutput = ubloutput+indentation+indentation+indentation+''+'\n'
+ ubloutput = ubloutput+indentation+indentation+indentation+''+'\n'
+ ubloutput = ubloutput+indentation+indentation+indentation+indentation+''+GSTRegNo+''+'\n'
+ ubloutput = ubloutput+indentation+indentation+indentation+indentation+''+'\n'
+ ubloutput = ubloutput+indentation+indentation+indentation+indentation+indentation+'GST'+'\n'
+ ubloutput = ubloutput+indentation+indentation+indentation+indentation+''+'\n'
+ ubloutput = ubloutput+indentation+indentation+indentation+''+'\n'
ubloutput = ubloutput+indentation+indentation+''+'\n'
ubloutput = ubloutput+indentation+''+'\n'
ubloutput = ubloutput+indentation+''+'\n'
@@ -94,6 +107,7 @@ def extract_invoice(document):
ubloutput = ubloutput+indentation+indentation+indentation+indentation+'5790000436071'+'\n'
ubloutput = ubloutput+indentation+indentation+indentation+''+'\n'
ubloutput = ubloutput+indentation+indentation+indentation+''+'\n'
+ ubloutput = ubloutput+indentation+indentation+indentation+indentation+''+invoice['response']['data'][0]['partnerAddress$_identifier']+''+'\n'
ubloutput = ubloutput+indentation+indentation+indentation+indentation+''+'\n'
ubloutput = ubloutput+indentation+indentation+indentation+indentation+indentation+''+CountryID+''+'\n'
ubloutput = ubloutput+indentation+indentation+indentation+indentation+''+'\n'
@@ -117,11 +131,61 @@ def extract_invoice(document):
ubloutput = ubloutput+indentation+indentation+indentation+''+'\n'
ubloutput = ubloutput+indentation+indentation+''+'\n'
ubloutput = ubloutput+indentation+''+'\n'
+ ubloutput = ubloutput+indentation+''+'\n'
+ ubloutput = ubloutput+indentation+indentation+''+f"{summedLineAmount:.2f}"+''+f"{summedLineAmount:.2f}"+''+f"{invoice['response']['data'][0]['grandTotalAmount']:.2f}"+''+f"{invoice['response']['data'][0]['grandTotalAmount']:.2f}"+''+'\n'
+ ubloutput = ubloutput+indentation+''+'\n'
+ url = ob_api_url+"InvoiceLine?_where=invoice='"+invoice['response']['data'][0]['id']+"'&_noActiveFilter=false&_sortBy=lineNo"
-
-
+ response = requests.request("GET", url, headers=headers, data=payload) #extracts invoice lines
+ #print(response.text)
+ lines = json.loads(response.text)['response']['data']
+ lines_json = json.dumps(lines)
+ #print(lines_json)
+ lines = json.loads(lines_json)
+ #print(lines)
+ lines_output = '['
+ first_line = True
+ for key in lines:
+ #print (key)
+ linetemp_json = json.dumps(key)
+ #print(linetemp_json)
+ linetemp = json.loads(linetemp_json)
+ print(linetemp)
+ if linetemp['product'] != None:
+ if not first_line:
+ lines_output = lines_output+','
+ first_line = False
+ url = ob_api_url+"Product?_where=id='"+linetemp['product']+"'&_noActiveFilter=false"
+ response = requests.request("GET", url, headers=headers, data=payload) #extracts product from master
+ product = json.loads(response.text)['response']['data'][0]['searchKey']
+ if product != comment_product:
+ lines_output = lines_output + '{"service_name": "'+product+'","service_description": "'+linetemp['product$_identifier']+'","service_quantity": '+str(linetemp['invoicedQuantity'])+',"service_price": '+str(linetemp['unitPrice'])+',"service_vat": '+gst_rate+'}'
+ ubloutput = ubloutput+indentation+indentation+''+str(linetemp['lineNo'])+''+'\n'
+ ubloutput = ubloutput+indentation+indentation+''+'\n'
+ ubloutput = ubloutput+indentation+indentation+indentation+''+linetemp['product$_identifier']+''+'\n'
+ ubloutput = ubloutput+indentation+indentation+indentation+''+'\n'
+ ubloutput = ubloutput+indentation+indentation+indentation+indentation+'SR'+'\n'
+ ubloutput = ubloutput+indentation+indentation+indentation+indentation+''+'\n'
+ ubloutput = ubloutput+indentation+indentation+indentation+indentation+indentation+'GST'+'\n'
+ ubloutput = ubloutput+indentation+indentation+indentation+indentation+''+'\n'
+ ubloutput = ubloutput+indentation+indentation+indentation+''+'\n'
+ ubloutput = ubloutput+indentation+indentation+''+'\n'
+ ubloutput = ubloutput+indentation+indentation+''+str(linetemp['invoicedQuantity'])+''+'\n'
+ ubloutput = ubloutput+indentation+indentation+''+'\n'
+ ubloutput = ubloutput+indentation+indentation+indentation+''+str(linetemp['unitPrice'])+''+'\n'
+ ubloutput = ubloutput+indentation+indentation+''+'\n'
+ ubloutput = ubloutput+indentation+indentation+''+str(linetemp['lineNetAmount'])+''+'\n'
+ else:
+ lines_output = lines_output + '{"service_name": "'+product+'","service_description": "'+linetemp['description']+'","service_quantity": '+str(linetemp['invoicedQuantity'])+',"service_price": '+str(linetemp['unitPrice'])+',"service_vat": '+gst_rate+'}'
+ lines_output = lines_output+']'
+
+ ubloutput = ubloutput+indentation+''+'\n'
print(ubloutput)
@@ -130,6 +194,7 @@ def extract_invoice(document):
+
payload = json.dumps({
"sales_invoice_number": invoice['response']['data'][0]['documentNo'],
"sales_invoice_date": invoice['response']['data'][0]['invoiceDate']+"T00:00:00Z",