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
|
from datetime import date
|
||||||
import timeit
|
import timeit
|
||||||
import os
|
import os
|
||||||
|
import json
|
||||||
|
|
||||||
class CustomerQuery:
|
class CustomerQuery:
|
||||||
def __init__(self, **kwargs) -> None:
|
def __init__(self, **kwargs) -> None:
|
||||||
# print(f'kwargs:{kwargs}')
|
print(f'kwargs:{kwargs}')
|
||||||
# print(args)
|
# print(args)
|
||||||
self.CustomerPriceLevelNames = []
|
self.CustomerPriceLevelNames = []
|
||||||
self.SPPriceLevelNames = []
|
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'],)
|
# 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(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]))
|
# 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.IncludeRetElement = kwargs['IncludeRetElement'] if 'IncludeRetElement' in kwargs else []
|
||||||
self.TxnDateRangeFilter = kwargs['TxnDateRangeFilter'] if 'TxnDateRangeFilter' in kwargs else None
|
self.TxnDateRangeFilter = kwargs['TxnDateRangeFilter'] if 'TxnDateRangeFilter' in kwargs else None
|
||||||
self.FullName = kwargs['FullName'] if 'FullName' 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):
|
def get_customer_pricelevel_list(self):
|
||||||
QBXML = ET.fromstring(response_string)
|
QBXML = ET.fromstring(self.response_string)
|
||||||
CustomerRets = QBXML.findall('.//CustomerRet')
|
CustomerRets = QBXML.findall('.//CustomerRet')
|
||||||
# print(f'CustomerRets:{CustomerRets}')
|
# print(f'CustomerRets:{CustomerRets}')
|
||||||
PriceLevelName = None
|
PriceLevelName = None
|
||||||
@ -60,8 +66,12 @@ class CustomerQuery:
|
|||||||
_df = pd.DataFrame.from_dict(Customer)
|
_df = pd.DataFrame.from_dict(Customer)
|
||||||
print(_df)
|
print(_df)
|
||||||
_df.to_excel(os.path.join(os.getcwd(), self.item_inventory_path, self._filename), index=False)
|
_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 ):
|
def create_customerquery_QBXML(self ):
|
||||||
root = ET.Element("QBXML")
|
root = ET.Element("QBXML")
|
||||||
root.tail = "\n"
|
root.tail = "\n"
|
||||||
@ -73,6 +83,9 @@ class CustomerQuery:
|
|||||||
QBXMLMsgsRq.text = "\n "
|
QBXMLMsgsRq.text = "\n "
|
||||||
CustomerQueryRq = self.create_sub_element(ET, QBXMLMsgsRq, "CustomerQueryRq","\n " )
|
CustomerQueryRq = self.create_sub_element(ET, QBXMLMsgsRq, "CustomerQueryRq","\n " )
|
||||||
# FullName = self.create_sub_element(ET, CustomerQueryRq, "FullName", self.FullName, 6)
|
# 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']
|
IncludeRetElement = ['FullName', 'PriceLevelRef', 'DataExtRet']
|
||||||
for x in IncludeRetElement:
|
for x in IncludeRetElement:
|
||||||
IncludeRetElement = self.create_sub_element(ET, CustomerQueryRq, "IncludeRetElement", x, 4)
|
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 + """<?qbxml version="13.0"?>"""
|
||||||
qbxml_query = qbxml_query + "\n" + mydata
|
qbxml_query = qbxml_query + "\n" + mydata
|
||||||
print(f'create_customer_QBXML->qbxml_query: {qbxml_query}')
|
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):
|
def create_sub_element(self, ET, parentNode, thisNode, text="\n", whiteSpace = 0, attrib =None):
|
||||||
if type(attrib) is not dict:
|
if type(attrib) is not dict:
|
||||||
@ -108,13 +141,13 @@ class CustomerQuery:
|
|||||||
ticket = sessionManager.BeginSession("", 2)
|
ticket = sessionManager.BeginSession("", 2)
|
||||||
|
|
||||||
# Send query and receive response
|
# Send query and receive response
|
||||||
response_string = sessionManager.ProcessRequest(ticket, qbxml_query)
|
self.response_string = sessionManager.ProcessRequest(ticket, qbxml_query)
|
||||||
|
|
||||||
# Disconnect from Quickbooks
|
# Disconnect from Quickbooks
|
||||||
sessionManager.EndSession(ticket) # Close the company file
|
sessionManager.EndSession(ticket) # Close the company file
|
||||||
sessionManager.CloseConnection() # Close the connection
|
sessionManager.CloseConnection() # Close the connection
|
||||||
# print (f'response_string:{response_string}')
|
# print (f'self.response_string:{self.response_string}')
|
||||||
return response_string
|
return self.response_string
|
||||||
|
|
||||||
def status_ok(self, QBXML): #for CustomerRs
|
def status_ok(self, QBXML): #for CustomerRs
|
||||||
|
|
||||||
@ -140,6 +173,8 @@ if __name__ == '__main__':
|
|||||||
ini=CustomerQuery()
|
ini=CustomerQuery()
|
||||||
iya = ini.create_customerquery_QBXML()
|
iya = ini.create_customerquery_QBXML()
|
||||||
# print(iya)
|
# print(iya)
|
||||||
ini.get_customer_pricelevel_list(iya)
|
Customer= ini.get_customer_pricelevel_list()
|
||||||
|
print(f'{Customer = }')
|
||||||
print("The time difference is :", timeit.default_timer() - starttime)
|
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
|
from qbpurchaseorderquery import PurchaseOrderQuery
|
||||||
import pdfexcel4DNwithxlrd
|
import pdfexcel4DNwithxlrd
|
||||||
from ItemInventoryQuery import ItemInventoryQuery
|
from ItemInventoryQuery import ItemInventoryQuery
|
||||||
from SO_to_Inv import readSO
|
from SO_to_Inv import readSO, CustomerQuery
|
||||||
import os
|
import os
|
||||||
|
|
||||||
import pprint
|
import pprint
|
||||||
@ -68,6 +68,21 @@ async def get_iteminventory_fullname(maxreturned:Union[int, None] = None):
|
|||||||
else:
|
else:
|
||||||
return {'Info': f"NOT Saved", 'Status':'ERROR', 'msg':data}
|
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/")
|
@app.post("/upload-file/")
|
||||||
async def create_upload_file(uploaded_file: UploadFile):
|
async def create_upload_file(uploaded_file: UploadFile):
|
||||||
base_file_location = f"DN_Excel_files"
|
base_file_location = f"DN_Excel_files"
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user