Quickbooks-API/addSO.py
2024-09-04 07:08:52 +07:00

58 lines
3.0 KiB
Python

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("</?qbxml>", "")#.replace(f'version="{version}"', f'version="{version}"?')
# print(QBXML)