from QBClasses import SalesOrderQuery, InvoiceQuery, TransactionQuery, InvoiceAdd, SalesOrderAdd from utils import timing, makeAList, makeLinkedTxnList, prepareData from pprint import pprint, PrettyPrinter import datetime import xmltodict def addSO(data:dict)->bool: CustomerRef_FullName=data.get('CustomerRef_FullName', None) TemplateRef_FullName=data.get('TemplateRef_FullName', None) TxnDate=data.get('TxnDate', None) #default today RefNumber=data.get('RefNumber', None) ShipAddress=data.get('ShipAddress', None) PONumber=data.get('PONumber', None) Memo=data.get('Memo', None) IsToBePrint=False #default False IsToBeEmail=False #default False SalesOrderLineAdd:list[dict]=data.get('SalesOrderLineAdd', []) for SOLine in SalesOrderLineAdd: ItemRef_FullName=SOLine.get('ItemRef_FullName', None) Quantity=SOLine.get('Quantity', None) UnitOfMeasure=SOLine.get('UnitOfMeasure', None) def main(): data = {'requestID': '345', 'CustomerRef_FullName': '999 HPL', 'RefNumber':'Ref12345', 'TxnDate': "2024-09-01"} # data = { 'CustomerRef_FullName': '999 HPL', 'RefNumber':'Ref12345', 'TxnDate': "2024-09-01"} includeRetElement = ['TxnID', 'EditSequence', 'CustomerRef', 'TemplateRef', 'TxnDate', 'RefNumber', 'TotalAmount', 'SalesOrderLineRet'] data['IncludeRetElement'] = includeRetElement lineAdd = [{'ItemRef_FullName':'TACO:AA:TH-006AA', 'Quantity':5, 'Rate':1200}, {'ItemRef_FullName':'TACO:J_FC_NT:TH-807J','Other1':"my reftoother1", 'Quantity':1, 'Rate':5500}] lineAdd = [{'ItemRef_FullName':'TACO:AA:TH-006AA', 'Quantity':5, 'Rate':1200}, {'ItemRef_FullName':'TACO:J_FC_NT:TH-807J','Other1':"my reftoother1", 'Quantity':1, }] # lineAdd = {'ItemRef_FullName':'Item123', 'Quantity':5, 'Rate':1200}#, {'ItemRef_FullName':'Item23A', 'Quantity':1, 'Rate':5500} data['SalesOrderLineAdd']=lineAdd # {'requestID': '345', 'CustomerRef_FullName': '999 HPL', 'RefNumber':'Ref12345', 'TxnDate': "2024-09-01", 'IncludeRetElement': ['TxnID', 'EditSequence', 'CustomerRef', 'TemplateRef', 'TxnDate', 'RefNumber', 'TotalAmount', 'SalesOrderLineRet'], 'SalesOrderLineAdd': [{'ItemRef_FullName':'TACO:AA:TH-006AA', 'Quantity':5, 'Rate':1200}, {'ItemRef_FullName':'TACO:J_FC_NT:TH-807J','Other1':"my reftoother1", 'Quantity':1, }] } print("") print('this is the format to ADD SO or INV') pprint(data, sort_dicts=False) print("") soAdd = SalesOrderAdd(**data) print(f'{soAdd = }') print(f'{soAdd.__repr__ = }') print(f'{soAdd.all() = }') pprint(soAdd.to_json()) def test_preparedata(): print("Test Preparedata") data = '''order: Sumber rejeki\n TH-001AA : 4 :Kirim Krian\n ECO-016= 7\n ''' prepareData(data) if __name__=='__main__': # test_preparedata() main() # data={'root':data} # print(f'{data = }') # QBXML = xmltodict.unparse(data, pretty=True).replace("", "")#.replace(f'version="{version}"', f'version="{version}"?') # print(QBXML)