update discount correctly

This commit is contained in:
bcomsugi 2023-11-12 23:51:02 +07:00
parent c723c7bd62
commit 2e22a01b52
2 changed files with 83 additions and 2 deletions

View File

@ -10,7 +10,7 @@ import os
import pythoncom import pythoncom
# from icecream import ic # from icecream import ic
ic.configureOutput(includeContext=True, ) # ic.configureOutput(includeContext=True, )
class SalesOrderQuery: class SalesOrderQuery:
def __init__(self, **kwargs) -> None: def __init__(self, **kwargs) -> None:
# print(f'kwargs:{kwargs}') # print(f'kwargs:{kwargs}')
@ -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)
@ -272,6 +272,8 @@ class SalesOrderQuery:
for SalesOrderRet in SalesOrderRets: for SalesOrderRet in SalesOrderRets:
RefNumber = SalesOrderRet.find('RefNumber').text RefNumber = SalesOrderRet.find('RefNumber').text
# Memo = SalesOrderRet.find('Memo').text # Memo = SalesOrderRet.find('Memo').text
TxnDate = SalesOrderRet.find('TxnDate').text
TxnNumber = SalesOrderRet.find('TxnNumber').text
CustomerFullName = SalesOrderRet.find('CustomerRef/FullName').text CustomerFullName = SalesOrderRet.find('CustomerRef/FullName').text
TxnID = SalesOrderRet.find('TxnID').text TxnID = SalesOrderRet.find('TxnID').text
TotalAmount = SalesOrderRet.find('TotalAmount').text TotalAmount = SalesOrderRet.find('TotalAmount').text
@ -279,6 +281,7 @@ class SalesOrderQuery:
IsManuallyClosed = SalesOrderRet.find('IsManuallyClosed').text IsManuallyClosed = SalesOrderRet.find('IsManuallyClosed').text
# print(CustomerFullName, TxnID, TotalAmount) # print(CustomerFullName, TxnID, TotalAmount)
SalesOrderdict = {'RefNumber':RefNumber, 'CustomerFullName':CustomerFullName, 'TxnID':TxnID, SalesOrderdict = {'RefNumber':RefNumber, 'CustomerFullName':CustomerFullName, 'TxnID':TxnID,
'TxnDate':TxnDate, 'TxnNumber':TxnNumber,
'TotalAmount':TotalAmount, 'IsFullyInvoiced':IsFullyInvoiced, 'IsManuallyClosed':IsManuallyClosed, 'SalesOrderLineRet':[]} 'TotalAmount':TotalAmount, 'IsFullyInvoiced':IsFullyInvoiced, 'IsManuallyClosed':IsManuallyClosed, 'SalesOrderLineRet':[]}
SalesOrderLineRet = SalesOrderRet.findall('SalesOrderLineRet') SalesOrderLineRet = SalesOrderRet.findall('SalesOrderLineRet')
ic(len(SalesOrderLineRet)) ic(len(SalesOrderLineRet))
@ -327,6 +330,82 @@ class SalesOrderQuery:
# print(f'_get_sales_order_header->Salesorderlist: {self.SalesOrderList}') # print(f'_get_sales_order_header->Salesorderlist: {self.SalesOrderList}')
return 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
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
OverrideUOMSetRef = SalesOrderLineRet.find('OverrideUOMSetRef/FullName')
if OverrideUOMSetRef != None:
OverrideUOMSetRef = OverrideUOMSetRef.text
Rate = float(SalesOrderLineRet.find('Rate').text)
Amount = float(SalesOrderLineRet.find('Amount').text)
# if self.SPPriceLevelName:
Invoiced = SalesOrderLineRet.find('Invoiced').text
LineIsManuallyClosed = SalesOrderLineRet.find('IsManuallyClosed').text
# print(TxnLineID, ItemFullName)
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
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 addDiscountToInvoiceList(self, _dict:dict): def addDiscountToInvoiceList(self, _dict:dict):
print("addDiscountToInvoiceList") print("addDiscountToInvoiceList")

View File

@ -2,6 +2,8 @@ from django.urls import path
from . import views from . import views
from icecream import install from icecream import install
install() install()
from icecream import ic
ic.configureOutput(includeContext=True, )
app_name = "Invoice" app_name = "Invoice"
urlpatterns = [ urlpatterns = [