_get_sales_order_header fixed disc

This commit is contained in:
bcomsugi 2023-11-13 00:57:24 +07:00
parent 2e22a01b52
commit c160fc619b
2 changed files with 10 additions and 76 deletions

View File

@ -260,7 +260,7 @@ class SalesOrderQuery:
return False, status_code return False, status_code
def _get_sales_order_header_(self, response_string): def _get_sales_order_header(self, response_string):
print('_get_sales_order_header') print('_get_sales_order_header')
ic(f'responsestring:{response_string}') ic(f'responsestring:{response_string}')
QBXML = ET.fromstring(response_string) QBXML = ET.fromstring(response_string)
@ -288,77 +288,7 @@ class SalesOrderQuery:
if len(SalesOrderLineRet) > 0: if len(SalesOrderLineRet) > 0:
disc_amount=0 disc_amount=0
for SalesOrderLineRet in SalesOrderLineRet: for SalesOrderLineRet in SalesOrderLineRet:
TxnLineID = SalesOrderLineRet.find('TxnLineID').text disc = 0
ItemFullName = SalesOrderLineRet.find('ItemRef/FullName')
if ItemFullName is None:
ic("no itemfullname")
break
else:
ItemFullName=ItemFullName.text
ic(ItemFullName)
Quantity = SalesOrderLineRet.find('Quantity').text
UnitOfMeasure = SalesOrderLineRet.find('UnitOfMeasure').text
Rate = float(SalesOrderLineRet.find('Rate').text)
Amount = float(SalesOrderLineRet.find('Amount').text)
# if self.SPPriceLevelName:
if self.Customer[2]:
# print(Rate, (Rate - self._df_price_level.loc[(self._df_price_level['FullName']==ItemFullName) & (self._df_price_level['PriceLevelName']==self.SPPriceLevelName)].values.tolist()[0][2]))
ic(Quantity, Rate, (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 += float(Quantity) * (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+=float(Quantity)*2000 #testing only
Invoiced = SalesOrderLineRet.find('Invoiced').text
LineIsManuallyClosed = SalesOrderLineRet.find('IsManuallyClosed').text
# print(TxnLineID, ItemFullName)
BackOrdered = float(Quantity) - float(Invoiced)
if BackOrdered:
SalesOrderLinedict = {'TxnLineID':TxnLineID,
'ItemFullName':ItemFullName,
'Quantity':Quantity,
'UOM':UnitOfMeasure,
'Rate':Rate,
'Amount':Amount,
'BackOrdered':BackOrdered,
'Invoiced':Invoiced,
'LineIsManuallyClosed':LineIsManuallyClosed,
}
SalesOrderdict['SalesOrderLineRet'].append(SalesOrderLinedict)
SalesOrderdict['Disc_Amount']=disc_amount
_SalesOrderlist.append(SalesOrderdict)
# print(_SalesOrderlist)
self.SalesOrderList=_SalesOrderlist
# print(f'_get_sales_order_header->Salesorderlist: {self.SalesOrderList}')
return self.SalesOrderList
def _get_sales_order_header(self, response_string):
print('_get_sales_order_header_2')
ic(f'responsestring:{response_string}')
QBXML = ET.fromstring(response_string)
datadict = {}
SalesOrderdict = {}
_SalesOrderlist = []
SalesOrderRets = QBXML.findall('.//SalesOrderRet')
# print(SalesOrderRets)
for SalesOrderRet in SalesOrderRets:
RefNumber = SalesOrderRet.find('RefNumber').text
# Memo = SalesOrderRet.find('Memo').text
TxnDate = SalesOrderRet.find('TxnDate').text
TxnNumber = SalesOrderRet.find('TxnNumber').text
CustomerFullName = SalesOrderRet.find('CustomerRef/FullName').text
TxnID = SalesOrderRet.find('TxnID').text
TotalAmount = SalesOrderRet.find('TotalAmount').text
IsFullyInvoiced = SalesOrderRet.find('IsFullyInvoiced').text
IsManuallyClosed = SalesOrderRet.find('IsManuallyClosed').text
# print(CustomerFullName, TxnID, TotalAmount)
SalesOrderdict = {'RefNumber':RefNumber, 'CustomerFullName':CustomerFullName, 'TxnID':TxnID,
'TxnDate':TxnDate, 'TxnNumber':TxnNumber,
'TotalAmount':TotalAmount, 'IsFullyInvoiced':IsFullyInvoiced, 'IsManuallyClosed':IsManuallyClosed, 'SalesOrderLineRet':[]}
SalesOrderLineRet = SalesOrderRet.findall('SalesOrderLineRet')
ic(len(SalesOrderLineRet))
if len(SalesOrderLineRet) > 0:
disc_amount=0
for SalesOrderLineRet in SalesOrderLineRet:
TxnLineID = SalesOrderLineRet.find('TxnLineID').text TxnLineID = SalesOrderLineRet.find('TxnLineID').text
ItemFullName = SalesOrderLineRet.find('ItemRef/FullName') ItemFullName = SalesOrderLineRet.find('ItemRef/FullName')
if ItemFullName is None: if ItemFullName is None:
@ -382,10 +312,12 @@ class SalesOrderQuery:
BackOrdered = float(Quantity) - float(Invoiced) BackOrdered = float(Quantity) - float(Invoiced)
if BackOrdered and LineIsManuallyClosed.lower() == 'false' : if BackOrdered and LineIsManuallyClosed.lower() == 'false' :
if self.Customer[2]: if self.Customer[2]:
# print(Rate, (Rate - self._df_price_level.loc[(self._df_price_level['FullName']==ItemFullName) & (self._df_price_level['PriceLevelName']==self.SPPriceLevelName)].values.tolist()[0][2])) disc = 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(Quantity, BackOrdered, Rate, (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]))
disc_amount += BackOrdered * (Rate-self._df_price_level.loc[(self._df_price_level['FullName']==ItemFullName) & (self._df_price_level['PriceLevelName']==self.Customer[2])].values.tolist()[0][2]) if disc > 0:
# disc_amount+=float(Quantity)*2000 #testing only ic(Quantity, BackOrdered, Rate, (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 * disc # (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])
SalesOrderLinedict = {'TxnLineID':TxnLineID, SalesOrderLinedict = {'TxnLineID':TxnLineID,
'ItemFullName':ItemFullName, 'ItemFullName':ItemFullName,
@ -396,6 +328,7 @@ class SalesOrderQuery:
'BackOrdered':BackOrdered, 'BackOrdered':BackOrdered,
'Invoiced':Invoiced, 'Invoiced':Invoiced,
'LineIsManuallyClosed':LineIsManuallyClosed, 'LineIsManuallyClosed':LineIsManuallyClosed,
'disc':disc,
} }
SalesOrderdict['SalesOrderLineRet'].append(SalesOrderLinedict) SalesOrderdict['SalesOrderLineRet'].append(SalesOrderLinedict)
SalesOrderdict['Disc_Amount']=disc_amount SalesOrderdict['Disc_Amount']=disc_amount

View File

@ -105,6 +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()))
return render( request, "Invoice/so_list_form.html", context) return render( request, "Invoice/so_list_form.html", context)
# return HttpResponse('') # return HttpResponse('')