From c160fc619b56ea31022b45b596a63e1719b09842 Mon Sep 17 00:00:00 2001 From: bcomsugi Date: Mon, 13 Nov 2023 00:57:24 +0700 Subject: [PATCH] _get_sales_order_header fixed disc --- SO_to_Inv/readSO.py | 85 +++++------------------------------------ django/Invoice/views.py | 1 + 2 files changed, 10 insertions(+), 76 deletions(-) diff --git a/SO_to_Inv/readSO.py b/SO_to_Inv/readSO.py index 1e3114d..eec1c68 100644 --- a/SO_to_Inv/readSO.py +++ b/SO_to_Inv/readSO.py @@ -260,7 +260,7 @@ class SalesOrderQuery: 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') ic(f'responsestring:{response_string}') QBXML = ET.fromstring(response_string) @@ -288,77 +288,7 @@ class SalesOrderQuery: if len(SalesOrderLineRet) > 0: disc_amount=0 for SalesOrderLineRet in SalesOrderLineRet: - TxnLineID = SalesOrderLineRet.find('TxnLineID').text - 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: + disc = 0 TxnLineID = SalesOrderLineRet.find('TxnLineID').text ItemFullName = SalesOrderLineRet.find('ItemRef/FullName') if ItemFullName is None: @@ -382,10 +312,12 @@ class SalesOrderQuery: BackOrdered = float(Quantity) - float(Invoiced) if BackOrdered and LineIsManuallyClosed.lower() == 'false' : 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, 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 * (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 + 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(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])) + if disc > 0: + 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, 'ItemFullName':ItemFullName, @@ -396,6 +328,7 @@ class SalesOrderQuery: 'BackOrdered':BackOrdered, 'Invoiced':Invoiced, 'LineIsManuallyClosed':LineIsManuallyClosed, + 'disc':disc, } SalesOrderdict['SalesOrderLineRet'].append(SalesOrderLinedict) SalesOrderdict['Disc_Amount']=disc_amount diff --git a/django/Invoice/views.py b/django/Invoice/views.py index 9fd4b10..57c9e65 100644 --- a/django/Invoice/views.py +++ b/django/Invoice/views.py @@ -105,6 +105,7 @@ def show_inv(request): if itu: invoiceaddQBXML=ini.create_invoiceadd_QBXML() print(invoiceaddQBXML) + # print(ini.connect_to_quickbooks(ini.create_invoiceadd_QBXML())) return render( request, "Invoice/so_list_form.html", context) # return HttpResponse('')