mirror of
https://github.com/bcomsugi/dasaproject.git
synced 2026-01-10 17:22:38 +07:00
update testing only
This commit is contained in:
parent
0eb88abf08
commit
faf5becb20
@ -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
17
main.py
@ -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"
|
||||
|
||||
Loading…
Reference in New Issue
Block a user