Compare commits

...

2 Commits

3 changed files with 25 additions and 12 deletions

View File

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

View File

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

24
exim.py
View File

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