add PPN Masukan on itemreceipt macro and BRANCH detection

This commit is contained in:
bcomsugi 2025-03-17 01:03:27 +07:00
parent a09792ba8a
commit e66a26a98d
2 changed files with 44 additions and 9 deletions

View File

@ -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

View File

@ -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: