From 0f65abb29ff5c7968d50f2187dcc8f1466aa4e17 Mon Sep 17 00:00:00 2001 From: bcomsugi Date: Sun, 23 Feb 2025 22:46:00 +0700 Subject: [PATCH] minor update exim.py --- QBClass/QBClasses.py | 11 ++++++++--- QBClass/server.py | 2 +- exim.py | 24 ++++++++++++++++-------- 3 files changed, 25 insertions(+), 12 deletions(-) diff --git a/QBClass/QBClasses.py b/QBClass/QBClasses.py index 1a6354c..450b97e 100644 --- a/QBClass/QBClasses.py +++ b/QBClass/QBClasses.py @@ -312,8 +312,9 @@ def LineAdd(lineAdd:Union[list, dict])->dict: class InvoiceAdd(baseQBQuery): def __init__(self, *args, **kwargs): - print(f'{args = }') - print(f'{kwargs = }') + # print(f'{args = }') + # pprint.pprint(args, sort_dicts=False) + # print(f'{kwargs = }') super().__init__(*args, **kwargs) # self.includeRetElements_allowed = ['TxnID', 'TimeCreated', 'TimeModified', 'EditSequence', 'TxnNumber', 'CustomerRef', 'ClassRef', 'ARAccontRef', 'TemplateRef'] self.onError = "stopOnError" @@ -329,13 +330,16 @@ class InvoiceAdd(baseQBQuery): # self.QBDict[self.classNameRq]={} # self.QBDict={} print('before') + print(f'{len(args) = }') if len(args)==0: + print("Only 1 args") self.create_data(kwargs) self.qbdicttemp = self.QBDict.copy() del self.QBDict[self.__class__.__name__] self.QBDict[self.classNameRq]=self.qbdicttemp else: self.qbdictlist = [] + print("more than 1 args") for arg in args: self.create_data(arg) self.qbdictlist.append(self.QBDict.copy()) @@ -345,7 +349,7 @@ class InvoiceAdd(baseQBQuery): def create_data(self, kwargs): - # print(kwargs) + # pprint.pprint(kwargs, sort_dicts=False) self.isRequiredFieldSatisfied = False # self.QBDict[self.__class__.__name__]={'@defMacro':'MACROTYPE'} self.QBDict[self.__class__.__name__]={} @@ -586,6 +590,7 @@ class InvoiceAdd(baseQBQuery): self.QBDict[self.classNameRq]["IncludeRetElement"]=kwargs['IncludeRetElement'] # print(self.classNameRq) + print('self.QBDICT') pprint.pprint(self.QBDict, sort_dicts=False) diff --git a/QBClass/server.py b/QBClass/server.py index d9595b2..c120b54 100644 --- a/QBClass/server.py +++ b/QBClass/server.py @@ -22,7 +22,7 @@ def timing(f): class baseQBQuery: def __init__(self, *args, **kwargs, ) -> None: # print(f'{kwargs = }') - print(f'{args = }') + # print(f'{args = }') self.QBXML = None self.QBDict = {} self.response_string = None diff --git a/exim.py b/exim.py index b684158..fc1e562 100644 --- a/exim.py +++ b/exim.py @@ -1,7 +1,7 @@ # from . import QBClasses from pprint import pprint # from QBClass.QBClasses import InvoiceQuery, SalesOrderQuery -from QBClass.QBClasses import InvoiceQuery, SalesOrderQuery +from QBClass.QBClasses import InvoiceQuery, SalesOrderQuery, InvoiceAdd # import timeit import time import json @@ -363,6 +363,7 @@ def make_invoiceadd_dict(iq_list): inv_line_no_soline = [] inv_line_no_itemref = [] invoiceaddlist = [] + invadddict = {} for inv_line in iq_list: # if 'InvoiceLineRet' not in txn: # print(f"{txn['RefNumber'] = } doesnt have InvoiceLineRet") @@ -420,7 +421,7 @@ def make_invoiceadd_dict(iq_list): inv_line['InvoiceLineRet'] = [inv_line['InvoiceLineRet']] for idx, invlineret in enumerate(inv_line['InvoiceLineRet']): - print(f'{invlineret = }') + # print(f'{invlineret = }') if 'ItemRef' not in invlineret: inv_line_no_itemref.append({'RefNumber':inv_line['RefNumber'], 'idx':idx,}) @@ -454,7 +455,8 @@ def make_invoiceadd_dict(iq_list): invadddict['InvoiceLineAdd'] = invoicelineadd_list invoiceaddlist.append(invadddict) - pprint(invadddict, sort_dicts=False) + # pprint(invadddict, sort_dicts=False) + pprint(invoiceaddlist, sort_dicts=False) for x in invoiceaddlist: if '10671' in x['RefNumber']: pprint(x, sort_dicts=False) @@ -463,7 +465,8 @@ def make_invoiceadd_dict(iq_list): # if '10671' in y['ItemRef_FullName']: # pprint(x, sort_dicts=False) # break - print(f'{len(invoiceaddlist) = }') + print(f'make_invoiceadd_dict - >{len(invoiceaddlist) = }') + return invoiceaddlist def writeToFile(iq_list=None, so_dict=None, filename = "", suffix="", indent=2): if not filename: @@ -529,6 +532,7 @@ def main(fromtxndate, totxndate, maxreturned:int=None): # process() invqueryfilename = f'exim\Data\{fromtxndate}iq' + # if maxreturned: # iq_list, so_dict = get_all_so_from_invoice(MaxReturned=maxreturned) @@ -542,7 +546,7 @@ def main(fromtxndate, totxndate, maxreturned:int=None): # ## Reading from QB and write to a file depends on txndate # iq_list, so_dict = get_all_so_from_invoice(FromTxnDate=fromtxndate, ToTxnDate=totxndate) - # writeToFile(iq_list, so_dict, filename=invqueryfilename) + # writeToFile(iq_list, so_dict, filename=invqueryfilename) ### reading from existing file the iq_list and so_dict jsonfile @@ -556,13 +560,17 @@ def main(fromtxndate, totxndate, maxreturned:int=None): print(len(iq_list)) print(f'Seems {invqueryfilename}{suffix}.json is {checking_iqwith_so(iq_list)}') #checking the iq_list. is it good to import to new QB? - make_invoiceadd_dict(iq_list) + return make_invoiceadd_dict(iq_list) if __name__=='__main__': # print(np.arange('2021-02', '2021-03', dtype='datetime64[D]')) - fromtxndate = '2022-08-01' + fromtxndate = '2022-07-02' totxndate = get_last_date_of_month(fromtxndate) _fromdate = datetime.datetime.fromisoformat(fromtxndate) print(fromtxndate) - main(fromtxndate, totxndate) + readydata = main(fromtxndate, totxndate, 2) + # print(readydata) + + IA = InvoiceAdd(*readydata, debug=False) + # IA.all()