mirror of
https://github.com/bcomsugi/dasaproject.git
synced 2026-01-10 05:52:38 +07:00
add PPN Masukan on itemreceipt macro and BRANCH detection
This commit is contained in:
parent
a09792ba8a
commit
e66a26a98d
@ -86,15 +86,30 @@ def read_DN_excel(filename):
|
||||
# TxnDate = rawdata[2][3].strip().split(" ")[-1]
|
||||
_y=1
|
||||
_x=0
|
||||
BRANCH = None
|
||||
BRANCH_LIST = ['SBY', 'BGR', 'CRB']
|
||||
BRANCH_ADDRESS = ['BUDURAN', 'CIBINONG', 'CARUBAN']
|
||||
col_value=None
|
||||
for col in range(1,wb.sheets()[0].ncols):
|
||||
|
||||
col_value = wb.sheets()[0].col_values(col)
|
||||
print("col=",col, col_value[1])
|
||||
print(f"{col=} {col_value=} {col_value[1]=}")
|
||||
if "TCO-DN" in col_value[1]:
|
||||
_x=col
|
||||
break
|
||||
if _x == 0 :
|
||||
return False, "Cannot find TCO-DN cell"
|
||||
|
||||
branchindex = None
|
||||
for idx, branchadd in enumerate(BRANCH_ADDRESS):
|
||||
for cvalu in col_value:
|
||||
if branchadd in cvalu:
|
||||
branchindex = idx
|
||||
break
|
||||
if branchindex!=None:
|
||||
break
|
||||
if branchindex != None:
|
||||
BRANCH = BRANCH_LIST[branchindex]
|
||||
print(f'{branchindex = } {BRANCH = }')
|
||||
|
||||
# if "TCO-DN" in wb.sheets()[0].cell(_y, _x).value.strip():
|
||||
|
||||
@ -104,8 +119,8 @@ def read_DN_excel(filename):
|
||||
# print(DNRefNum)
|
||||
TxnDate = wb.sheets()[0].cell(_y+1, _x).value.strip().split(" ")[-1]
|
||||
Memo = DNRefNum
|
||||
print(f'pdfexcel4DNwithxlrd.py->DNRefNum:{DNRefNum}, TxnDate:{TxnDate}')
|
||||
DeliveryNotedict={'DNRefNum':DNRefNum, 'TxnDate':TxnDate, 'Memo': Memo}
|
||||
print(f'pdfexcel4DNwithxlrd.py->DNRefNum:{DNRefNum}, TxnDate:{TxnDate} {BRANCH = }')
|
||||
DeliveryNotedict={'DNRefNum':DNRefNum, 'TxnDate':TxnDate, 'Memo': Memo, 'BRANCH':BRANCH}
|
||||
wks=wb.sheets()
|
||||
for sheet in wks:
|
||||
# rawdata=ws.range("c1").current_region.value
|
||||
|
||||
@ -100,25 +100,44 @@ class PurchaseOrderQuery:
|
||||
TxnDate = self.create_sub_element(ET, ItemReceiptAdd, "TxnDate", self.DN['TxnDate'], 8 )
|
||||
RefNumber = self.create_sub_element(ET, ItemReceiptAdd, "RefNumber", self.DN['DNRefNum'], 8 )
|
||||
Memo = self.create_sub_element(ET, ItemReceiptAdd, "Memo", self.DN['Memo'], 10 )
|
||||
DNTotalAmount = 0
|
||||
for purchaseorder in self.PurchaseOrderList:
|
||||
POTxnId = purchaseorder['TxnID']
|
||||
print(f'create_itemreceiptadd_QBXML->POTxnID: {POTxnId}')
|
||||
for itemline in purchaseorder['PurchaseOrderLineRet']:
|
||||
if 'DNQuantity' in itemline:
|
||||
DNQty = itemline['DNQuantity']
|
||||
Rate = itemline['Rate']
|
||||
DNAmount = DNQty*Rate
|
||||
DNTotalAmount += DNAmount
|
||||
ItemLineAdd = self.create_sub_element(ET, ItemReceiptAdd, "ItemLineAdd", "\n ", 10 )
|
||||
Quantity = self.create_sub_element(ET, ItemLineAdd, "Quantity", str(itemline['DNQuantity'] ), 12 )
|
||||
Quantity = self.create_sub_element(ET, ItemLineAdd, "Quantity", str(DNQty), 12 )
|
||||
UnitOfMeasure = self.create_sub_element(ET, ItemLineAdd, "UnitOfMeasure", str(itemline['UOM']), 12 )
|
||||
LinkToTxn = self.create_sub_element(ET, ItemLineAdd, "LinkToTxn", "\n ",10 )
|
||||
TxnID = self.create_sub_element(ET, LinkToTxn, "TxnID", POTxnId,14 )
|
||||
TxnLineID = self.create_sub_element(ET, LinkToTxn, "TxnLineID", itemline['TxnLineID'],12 )
|
||||
|
||||
PPN11percent = round(0.11*DNTotalAmount ,2)
|
||||
if self.DN['BRANCH']!=None and self.DN['BRANCH']!='BGR' and DNTotalAmount:
|
||||
ItemLineAdd = self.create_sub_element(ET, ItemReceiptAdd, "ItemLineAdd", "\n ", 10 )
|
||||
ItemRef = self.create_sub_element(ET, ItemLineAdd, "ItemRef", "\n ", 12 )
|
||||
ItemRef = self.create_sub_element(ET, ItemRef, "FullName", "PPN Masukan", 14 )
|
||||
# Quantity = self.create_sub_element(ET, ItemLineAdd, "Quantity", "1", 12 )
|
||||
Quantity = self.create_sub_element(ET, ItemLineAdd, "Cost", str(PPN11percent), 12 )
|
||||
# Quantity = self.create_sub_element(ET, ItemLineAdd, "Quantity", str(DNQty), 12 )
|
||||
# UnitOfMeasure = self.create_sub_element(ET, ItemLineAdd, "UnitOfMeasure", str(itemline['UOM']), 12 )
|
||||
# LinkToTxn = self.create_sub_element(ET, ItemLineAdd, "LinkToTxn", "\n ",10 )
|
||||
# TxnID = self.create_sub_element(ET, LinkToTxn, "TxnID", POTxnId,14 )
|
||||
# TxnLineID = self.create_sub_element(ET, LinkToTxn, "TxnLineID", itemline['TxnLineID'],12 )
|
||||
|
||||
mydata = ET.tostring(root, encoding = "unicode")
|
||||
|
||||
qbxml_query = """<?xml version="1.0" encoding="utf-8"?>\n"""
|
||||
qbxml_query = qbxml_query + """<?qbxml version="13.0"?>"""
|
||||
qbxml_query = qbxml_query + "\n" + mydata
|
||||
# print(f'create_itemreceiptadd_QBXML->Create_ItemReceiptadd_QBXML: {qbxml_query}')
|
||||
print(f'create_itemreceiptadd_QBXML->Create_ItemReceiptadd_QBXML: {qbxml_query}')
|
||||
# print(f"replyfrom qbxml:{self.connect_to_quickbooks(qbxml_query)}")
|
||||
|
||||
print(f'{self.DN["BRANCH"]= } {DNTotalAmount= :_} {PPN11percent= :_} {DNTotalAmount+PPN11percent= :_}')
|
||||
return qbxml_query
|
||||
|
||||
|
||||
@ -273,7 +292,7 @@ class PurchaseOrderQuery:
|
||||
break
|
||||
else:
|
||||
print(f"{_poline['ItemFullName']} BackOrdered < Qty in DN {_poline['BackOrdered']}<{QuantityIn_dict}")
|
||||
Error_msg = f"BackOrdered < Qty in DN {_poline['BackOrdered']}<{QuantityIn_dict}"
|
||||
Error_msg = f"BackOrdered < Qty in DN {_poline['BackOrdered']=}<{QuantityIn_dict=}"
|
||||
else:
|
||||
# print(f"UOM different {_poline['UOM']} <> {_dict['UOM']}")
|
||||
Error_msg = f"UOM different {_poline['UOM']} <> {_dict['UOM']}"
|
||||
@ -306,7 +325,7 @@ class PurchaseOrderQuery:
|
||||
else:
|
||||
_dflist = self.dfDN.to_dict('records')
|
||||
# print(self.dfDN)
|
||||
print(f'_dflist1:{_dflist}')
|
||||
print(f'{_dflist = }')
|
||||
# print("")
|
||||
# print(f'self.PurchaseOrderList: {self.PurchaseOrderList}')
|
||||
for idx, xdf in enumerate(_dflist):
|
||||
@ -341,6 +360,7 @@ class PurchaseOrderQuery:
|
||||
# raise ValueError("Incorrect data format, should be YYYY-MM-DD")
|
||||
|
||||
def get_ext_doc_no_list(self, dndict=None):
|
||||
# print(f'{dndict = }')
|
||||
if dndict:
|
||||
dnlist = dndict['lines']
|
||||
else:
|
||||
|
||||
Loading…
Reference in New Issue
Block a user