update testing only

This commit is contained in:
bcomsugi 2024-08-19 18:55:16 +07:00
parent 0eb88abf08
commit faf5becb20
2 changed files with 63 additions and 13 deletions

View File

@ -7,10 +7,11 @@ import pandas as pd
from datetime import date
import timeit
import os
import json
class CustomerQuery:
def __init__(self, **kwargs) -> None:
# print(f'kwargs:{kwargs}')
print(f'kwargs:{kwargs}')
# print(args)
self.CustomerPriceLevelNames = []
self.SPPriceLevelNames = []
@ -20,12 +21,17 @@ class CustomerQuery:
# self._df_customer = pd.read_excel(os.path.join(os.getcwd(), self.item_inventory_path, self._filename), usecols=['FullName', 'PriceLevelName', 'Special Cust'],)
# print(self._df_customer)
# print(type(self._df_customer.loc[(self._df_customer['FullName']=="ECO:0:ECO-002") & (self._df_customer['PriceLevelName']=="T 202202")].values.tolist()[0][2]))
self.MaxReturned = kwargs['MaxReturned'] if 'MaxReturned' in kwargs else None
if isinstance(self.MaxReturned, int):
self.MaxReturned = str(self.MaxReturned)
print(f'{self.MaxReturned=}')
self.IncludeRetElement = kwargs['IncludeRetElement'] if 'IncludeRetElement' in kwargs else []
self.TxnDateRangeFilter = kwargs['TxnDateRangeFilter'] if 'TxnDateRangeFilter' in kwargs else None
self.FullName = kwargs['FullName'] if 'FullName' in kwargs else None
self.response_string = None
def get_customer_pricelevel_list(self, response_string):
QBXML = ET.fromstring(response_string)
def get_customer_pricelevel_list(self):
QBXML = ET.fromstring(self.response_string)
CustomerRets = QBXML.findall('.//CustomerRet')
# print(f'CustomerRets:{CustomerRets}')
PriceLevelName = None
@ -60,8 +66,12 @@ class CustomerQuery:
_df = pd.DataFrame.from_dict(Customer)
print(_df)
_df.to_excel(os.path.join(os.getcwd(), self.item_inventory_path, self._filename), index=False)
return PriceLevelName, SP_PriceLevelName
CustomerDict = _df.to_dict('records')
return CustomerDict
def create_QBXML(self):
return self.create_customerquery_QBXML()
def create_customerquery_QBXML(self ):
root = ET.Element("QBXML")
root.tail = "\n"
@ -73,6 +83,9 @@ class CustomerQuery:
QBXMLMsgsRq.text = "\n "
CustomerQueryRq = self.create_sub_element(ET, QBXMLMsgsRq, "CustomerQueryRq","\n " )
# FullName = self.create_sub_element(ET, CustomerQueryRq, "FullName", self.FullName, 6)
if self.MaxReturned is not None:
print("masuk maxreturn")
MaxReturned = self.create_sub_element(ET, CustomerQueryRq, "MaxReturned", self.MaxReturned, 4)
IncludeRetElement = ['FullName', 'PriceLevelRef', 'DataExtRet']
for x in IncludeRetElement:
IncludeRetElement = self.create_sub_element(ET, CustomerQueryRq, "IncludeRetElement", x, 4)
@ -83,9 +96,29 @@ class CustomerQuery:
qbxml_query = qbxml_query + """<?qbxml version="13.0"?>"""
qbxml_query = qbxml_query + "\n" + mydata
print(f'create_customer_QBXML->qbxml_query: {qbxml_query}')
response_string=self.connect_to_quickbooks(qbxml_query)
self.response_string=self.connect_to_quickbooks(qbxml_query)
return response_string
return self.response_string
def to_json(self):
start = timeit.default_timer()
js_data=None
# print(self.create_QBXML())
# self.response_string = self.connect_to_quickbooks(self.create_QBXML())
# ret, msg = self.status_ok(self.response_string)
ret = True
if ret:
df = pd.DataFrame.from_dict(self.get_customer_pricelevel_list())
print(df)
if len(df)>0:
js_data = json.dumps(df.to_dict("records"))
else:
False, 'There is no data(df==0)'
else:
return False, msg
print("The difference of time is :", timeit.default_timer() - start)
return True, js_data
def create_sub_element(self, ET, parentNode, thisNode, text="\n", whiteSpace = 0, attrib =None):
if type(attrib) is not dict:
@ -108,13 +141,13 @@ class CustomerQuery:
ticket = sessionManager.BeginSession("", 2)
# Send query and receive response
response_string = sessionManager.ProcessRequest(ticket, qbxml_query)
self.response_string = sessionManager.ProcessRequest(ticket, qbxml_query)
# Disconnect from Quickbooks
sessionManager.EndSession(ticket) # Close the company file
sessionManager.CloseConnection() # Close the connection
# print (f'response_string:{response_string}')
return response_string
# print (f'self.response_string:{self.response_string}')
return self.response_string
def status_ok(self, QBXML): #for CustomerRs
@ -140,6 +173,8 @@ if __name__ == '__main__':
ini=CustomerQuery()
iya = ini.create_customerquery_QBXML()
# print(iya)
ini.get_customer_pricelevel_list(iya)
print("The time difference is :", timeit.default_timer() - starttime)
Customer= ini.get_customer_pricelevel_list()
print(f'{Customer = }')
res, jsondt = ini.to_json()
print(f'{jsondt=}')
print("The time difference is :", timeit.default_timer() - starttime)

17
main.py
View File

@ -16,7 +16,7 @@ import shutil
from qbpurchaseorderquery import PurchaseOrderQuery
import pdfexcel4DNwithxlrd
from ItemInventoryQuery import ItemInventoryQuery
from SO_to_Inv import readSO
from SO_to_Inv import readSO, CustomerQuery
import os
import pprint
@ -68,6 +68,21 @@ async def get_iteminventory_fullname(maxreturned:Union[int, None] = None):
else:
return {'Info': f"NOT Saved", 'Status':'ERROR', 'msg':data}
@app.get('/get-customer-fullname')
async def get_customer_fullname(maxreturned:Union[int, None] = None):
print(f'{maxreturned = }')
# item_inv = CustomerQuery( IncludeRetElement=['FullName'], MaxReturned=maxreturned) #MaxReturned=None means get ALL items
customer = CustomerQuery.CustomerQuery(MaxReturned=maxreturned)
# QBXML = customer.create_QBXML()
itu = customer.create_customerquery_QBXML()
status, data = customer.to_json()
if status:
return data
else:
return {'Info': f"NOT Saved", 'Status':'ERROR', 'msg':data}
@app.post("/upload-file/")
async def create_upload_file(uploaded_file: UploadFile):
base_file_location = f"DN_Excel_files"