update invoiceaddqbxml

This commit is contained in:
bcomsugi 2023-11-13 01:40:15 +07:00
parent bd0304b409
commit f3b1cac25b
2 changed files with 35 additions and 22 deletions

View File

@ -179,26 +179,38 @@ class SalesOrderQuery:
disc_amount = 0 disc_amount = 0
for soidx, salesorder in enumerate(self.SalesOrderList): for soidx, salesorder in enumerate(self.SalesOrderList):
SOTxnId = salesorder['TxnID'] SOTxnId = salesorder['TxnID']
disc_amount+=int(salesorder['Disc_Amount']) # disc_amount+=int(salesorder['Disc_Amount'])
print(f'create_invoiceadd_QBXML->SOTxnId: {SOTxnId}') print(f'create_invoiceadd_QBXML->SOTxnId: {SOTxnId}')
for itemline in salesorder['SalesOrderLineRet']: for itemline in salesorder['SalesOrderLineRet']:
# if 'DNQuantity' in itemline: backOrdered = str(itemline['BackOrdered'])
InvoiceLineAdd = self.create_sub_element(ET, InvoiceAdd, "InvoiceLineAdd", "\n ", 10 ) # backOrdered = '1' #testing purpose
# Quantity = self.create_sub_element(ET, InvoiceLineAdd, "Quantity", str(itemline['DNQuantity'] ), 12 ) if float(backOrdered) > 0:
# Quantity = self.create_sub_element(ET, InvoiceLineAdd, "Quantity", str(itemline['BackOrdered'] ), 12 ) discPerPcs = float(itemline['discPerPcs'])
# UnitOfMeasure = self.create_sub_element(ET, InvoiceLineAdd, "UnitOfMeasure", str(itemline['UOM']), 12 ) discPerItem = float(backOrdered) * discPerPcs
LinkToTxn = self.create_sub_element(ET, InvoiceLineAdd, "LinkToTxn", "\n ", 10 ) disc_amount += discPerItem
TxnID = self.create_sub_element(ET, LinkToTxn, "TxnID", SOTxnId,14 )
TxnLineID = self.create_sub_element(ET, LinkToTxn, "TxnLineID", itemline['TxnLineID'], 12 )
if soidx == len(self.SalesOrderList)-1: #last list then set the'400_Sales_discount'
print(f'disc_amount:{format(disc_amount, ".2f")}')
if disc_amount != 0:
# disc_amount=format(disc_amount, ".2f")
InvoiceLineAdd = self.create_sub_element(ET, InvoiceAdd, "InvoiceLineAdd", "\n ", 10 ) InvoiceLineAdd = self.create_sub_element(ET, InvoiceAdd, "InvoiceLineAdd", "\n ", 10 )
ItemRef = self.create_sub_element(ET, InvoiceLineAdd, "ItemRef", "\n ", 12) # Quantity = self.create_sub_element(ET, InvoiceLineAdd, "Quantity", str(itemline['DNQuantity'] ), 12 )
ItemFullName = self.create_sub_element(ET, ItemRef, "FullName", "400_Sales Discount", 12) Quantity = self.create_sub_element(ET, InvoiceLineAdd, "Quantity", backOrdered, 12 )
ItemRate = self.create_sub_element(ET, InvoiceLineAdd, "Rate", str(disc_amount), 10) # UnitOfMeasure = self.create_sub_element(ET, InvoiceLineAdd, "UnitOfMeasure", str(itemline['UOM']), 12 )
LinkToTxn = self.create_sub_element(ET, InvoiceLineAdd, "LinkToTxn", "\n ", 10 )
TxnID = self.create_sub_element(ET, LinkToTxn, "TxnID", SOTxnId,14 )
TxnLineID = self.create_sub_element(ET, LinkToTxn, "TxnLineID", itemline['TxnLineID'], 12 )
# if soidx == len(self.SalesOrderList)-1: #last list then set the'400_Sales_discount'
# print(f'disc_amount:{format(disc_amount, ".2f")}')
# if disc_amount != 0:
# # disc_amount=format(disc_amount, ".2f")
# InvoiceLineAdd = self.create_sub_element(ET, InvoiceAdd, "InvoiceLineAdd", "\n ", 10 )
# ItemRef = self.create_sub_element(ET, InvoiceLineAdd, "ItemRef", "\n ", 12)
# ItemFullName = self.create_sub_element(ET, ItemRef, "FullName", "400_Sales Discount", 12)
# ItemRate = self.create_sub_element(ET, InvoiceLineAdd, "Rate", str(disc_amount), 10)
if disc_amount != 0:
# disc_amount=format(disc_amount, ".2f")
InvoiceLineAdd = self.create_sub_element(ET, InvoiceAdd, "InvoiceLineAdd", "\n ", 10 )
ItemRef = self.create_sub_element(ET, InvoiceLineAdd, "ItemRef", "\n ", 12)
ItemFullName = self.create_sub_element(ET, ItemRef, "FullName", "400_Sales Discount", 12)
ItemRate = self.create_sub_element(ET, InvoiceLineAdd, "Rate", str(disc_amount), 10)
mydata = ET.tostring(root, encoding = "unicode") mydata = ET.tostring(root, encoding = "unicode")
@ -311,7 +323,7 @@ class SalesOrderQuery:
LineIsManuallyClosed = SalesOrderLineRet.find('IsManuallyClosed').text LineIsManuallyClosed = SalesOrderLineRet.find('IsManuallyClosed').text
# print(TxnLineID, ItemFullName) # print(TxnLineID, ItemFullName)
BackOrdered = float(Quantity) - float(Invoiced) BackOrdered = float(Quantity) - float(Invoiced)
if BackOrdered and LineIsManuallyClosed.lower() == 'false' : if BackOrdered > 0 and LineIsManuallyClosed.lower() == 'false' :
if self.Customer[2]: if self.Customer[2]:
discPerPcs = Rate-self._df_price_level.loc[(self._df_price_level['FullName']==ItemFullName) & (self._df_price_level['PriceLevelName']==self.Customer[2])].values.tolist()[0][2] discPerPcs = Rate-self._df_price_level.loc[(self._df_price_level['FullName']==ItemFullName) & (self._df_price_level['PriceLevelName']==self.Customer[2])].values.tolist()[0][2]
# ic(Rate, disc, (Rate - self._df_price_level.loc[(self._df_price_level['FullName']==ItemFullName) & (self._df_price_level['PriceLevelName']==self.SPPriceLevelName)].values.tolist()[0][2])) # ic(Rate, disc, (Rate - self._df_price_level.loc[(self._df_price_level['FullName']==ItemFullName) & (self._df_price_level['PriceLevelName']==self.SPPriceLevelName)].values.tolist()[0][2]))
@ -320,8 +332,8 @@ class SalesOrderQuery:
discPerItem = BackOrdered * discPerPcs discPerItem = BackOrdered * discPerPcs
disc_amount += discPerItem disc_amount += discPerItem
# disc_amount += BackOrdered * discPerPcs # (Rate-self._df_price_level.loc[(self._df_price_level['FullName']==ItemFullName) & (self._df_price_level['PriceLevelName']==self.Customer[2])].values.tolist()[0][2]) # disc_amount += BackOrdered * discPerPcs # (Rate-self._df_price_level.loc[(self._df_price_level['FullName']==ItemFullName) & (self._df_price_level['PriceLevelName']==self.Customer[2])].values.tolist()[0][2])
# disc_amount += BackOrdered * 2500#(Rate-self._df_price_level.loc[(self._df_price_level['FullName']==ItemFullName) & (self._df_price_level['PriceLevelName']==self.Customer[2])].values.tolist()[0][2]) else:
discPerPcs = 0
SalesOrderLinedict = {'TxnLineID':TxnLineID, SalesOrderLinedict = {'TxnLineID':TxnLineID,
'ItemFullName':ItemFullName, 'ItemFullName':ItemFullName,
'Quantity':Quantity, 'Quantity':Quantity,
@ -331,7 +343,8 @@ class SalesOrderQuery:
'BackOrdered':BackOrdered, 'BackOrdered':BackOrdered,
'Invoiced':Invoiced, 'Invoiced':Invoiced,
'LineIsManuallyClosed':LineIsManuallyClosed, 'LineIsManuallyClosed':LineIsManuallyClosed,
'disc':discPerItem, # backorder qty * disc per pcs 'discPerItem':discPerItem, # backorder qty * disc per pcs
'discPerPcs':discPerPcs,
} }
SalesOrderdict['SalesOrderLineRet'].append(SalesOrderLinedict) SalesOrderdict['SalesOrderLineRet'].append(SalesOrderLinedict)
SalesOrderdict['Disc_Amount']=disc_amount SalesOrderdict['Disc_Amount']=disc_amount

View File

@ -105,7 +105,7 @@ def show_inv(request):
if itu: if itu:
invoiceaddQBXML=ini.create_invoiceadd_QBXML() invoiceaddQBXML=ini.create_invoiceadd_QBXML()
print(invoiceaddQBXML) print(invoiceaddQBXML)
# print(ini.connect_to_quickbooks(ini.create_invoiceadd_QBXML())) print(ini.connect_to_quickbooks(ini.create_invoiceadd_QBXML()))
return render( request, "Invoice/so_list_form.html", context) return render( request, "Invoice/so_list_form.html", context)
# return HttpResponse('') # return HttpResponse('')