From 5854568f28026ac3599c01fdb584db032c8d3e35 Mon Sep 17 00:00:00 2001 From: bcomsugi Date: Wed, 27 Sep 2023 15:49:36 +0700 Subject: [PATCH] test --- .gitignore | 171 +++++ DASAServer.bat | 9 + DASAServer.bat - Shortcut.lnk | Bin 0 -> 1137 bytes FASTApiItemReceipt.bat | 5 + GeneralSummaryReport.xml | 146 +++++ ItemInventory140723.xlsx | Bin 0 -> 460295 bytes ItemInventoryQuery.py | 199 ++++++ ItemIventoryQuery.xml | 114 ++++ ItemReceipt.ini | 5 + ItemReceiptXml.xml | 272 ++++++++ PriceLevelQuery.py | 146 +++++ PriceLevelQueryv2.py | 147 +++++ SO_to_Inv/CustomerQuery.py | 144 +++++ SO_to_Inv/InvoiceAdd.xml | 454 ++++++++++++++ SO_to_Inv/InvoiceQuery.py | 587 ++++++++++++++++++ SO_to_Inv/PriceLevelQuery.py | 444 +++++++++++++ SO_to_Inv/SalesOrderQuery.xml | 336 ++++++++++ SO_to_Inv/__init__.py | 0 SO_to_Inv/invoiceadd.py | 417 +++++++++++++ SO_to_Inv/readSO.py | 544 ++++++++++++++++ SalesOrderQuery.xml | 336 ++++++++++ TransactionQuery.xml | 147 +++++ database.db | Bin 0 -> 8192 bytes django/.gitignore | 166 +++++ django/Customer/__init__.py | 0 django/Customer/admin.py | 4 + django/Customer/apps.py | 6 + django/Customer/forms.py | 7 + django/Customer/migrations/0001_initial.py | 69 ++ .../0002_alter_customer_timecreated.py | 18 + .../migrations/0003_alter_customer_parent.py | 19 + .../0004_customer_pricelevelreffullname.py | 20 + ...005_alter_customer_coordinates_and_more.py | 48 ++ .../0006_alter_customer_salutation.py | 18 + .../0007_alter_customer_customerfullname.py | 18 + django/Customer/migrations/__init__.py | 0 django/Customer/models.py | 97 +++ .../Customer/templates/Customer/addedit.html | 12 + .../templates/Customer/index copy.html | 62 ++ django/Customer/templates/Customer/index.html | 1 + django/Customer/tests.py | 3 + django/Customer/urls.py | 9 + django/Customer/views.py | 77 +++ django/Inventory/__init__.py | 0 django/Inventory/asgi.py | 16 + django/Inventory/settings.py | 143 +++++ django/Inventory/urls.py | 33 + django/Inventory/wsgi.py | 16 + django/Invoice/__init__.py | 0 django/Invoice/admin.py | 3 + django/Invoice/apps.py | 6 + django/Invoice/forms.py | 54 ++ django/Invoice/migrations/0001_initial.py | 83 +++ django/Invoice/migrations/__init__.py | 0 django/Invoice/models.py | 135 ++++ django/Invoice/static/bootstrap.bundle.min.js | 7 + django/Invoice/static/bootstrap.min.css | 7 + .../templates/Invoice/create-update.html | 525 ++++++++++++++++ django/Invoice/templates/Invoice/home.html | 8 + .../templates/Invoice/index_invoice.html | 1 + .../templates/Invoice/show-customers.html | 406 ++++++++++++ .../templates/Invoice/so_list_form.html | 47 ++ django/Invoice/templates/Invoice/temp.html | 105 ++++ django/Invoice/tests.py | 3 + django/Invoice/urls.py | 19 + django/Invoice/views.py | 300 +++++++++ django/Item/__init__.py | 0 django/Item/admin.py | 19 + django/Item/apps.py | 6 + django/Item/forms.py | 44 ++ django/Item/management/commands/__init__.py | 0 django/Item/management/commands/fillitems.py | 103 +++ django/Item/migrations/0001_initial.py | 60 ++ .../0002_alter_item_parentreffullname.py | 18 + .../migrations/0003_alter_uom_number_of.py | 18 + django/Item/migrations/0004_alter_uom_name.py | 18 + .../migrations/0005_alter_item_itemtype.py | 18 + ..._alter_item_unitofmeasuresetreffullname.py | 19 + .../0007_pricelevel_pricelevelitem.py | 35 ++ .../0008_alter_pricelevelitem_pl.py | 19 + .../Item/migrations/0009_item_alwaysnull.py | 18 + .../0010_alter_pricelevelitem_price.py | 18 + django/Item/migrations/__init__.py | 0 django/Item/models.py | 140 +++++ django/Item/templates/Item/addedit_item.html | 101 +++ .../templates/Item/addedit_pricelevel.html | 173 ++++++ django/Item/templates/Item/index.html | 1 + .../Item/templates/Item/index_pricelevel.html | 1 + django/Item/templates/Item/table_index.html | 221 +++++++ django/Item/tests.py | 3 + django/Item/urls.py | 14 + django/Item/views.py | 170 +++++ django/SalesOrder/__init__.py | 0 django/SalesOrder/admin.py | 6 + django/SalesOrder/apps.py | 6 + django/SalesOrder/forms.py | 43 ++ django/SalesOrder/migrations/0001_initial.py | 82 +++ .../0002_alter_salesorder_txndate.py | 18 + ...ffullname_salesorderitemline_salesorder.py | 18 + ...salesorder_salesrepreffullname_and_more.py | 23 + .../0005_alter_salesorder_refnumber.py | 18 + ...ddr1_alter_salesorder_ponumber_and_more.py | 38 ++ ...7_alter_salesorder_billcountry_and_more.py | 28 + ...salesorderitemline_lineismanuallyclosed.py | 18 + .../0009_remove_salesorder_subtotal.py | 17 + django/SalesOrder/migrations/__init__.py | 0 django/SalesOrder/models.py | 135 ++++ .../templates/SalesOrder/create-update.html | 518 ++++++++++++++++ .../SalesOrder/index_salesorder.html | 1 + .../SalesOrder/templates/SalesOrder/temp.html | 105 ++++ django/SalesOrder/tests.py | 3 + django/SalesOrder/urls.py | 13 + django/SalesOrder/views.py | 209 +++++++ django/__init__.py | 0 django/manage.py | 22 + django/requirements.txt | Bin 0 -> 180 bytes django/static/bootstrap.bundle.min.js | 7 + django/static/bootstrap.min.css | 7 + django/static/bootstrap.min.css.map | 1 + django/templates/base.html | 99 +++ fake_db.py | 35 ++ iteminventorydasa.py | 189 ++++++ itemreport.py | 222 +++++++ itemreportquery.py | 222 +++++++ main.py | 169 +++++ main2.py | 105 ++++ mousemove.py | 8 + pdfexcel4DNwithxlrd.py | 236 +++++++ pyQBstockserverV1.py | 180 ++++++ qbItemInventoryQuery.py | 66 ++ qbgeneralsummaryreport.py | 253 ++++++++ qbpurchaseorderquery.py | 387 ++++++++++++ qbquery.py | 63 ++ qbsalesorderquery.py | 253 ++++++++ qbtransactionquery.py | 286 +++++++++ qbunitofmeasure.py | 111 ++++ readme | 5 + requirements.txt | Bin 0 -> 1386 bytes templates/base.html | 175 ++++++ templates/hello.html | 5 + templates/po_index.html | 23 + templates/search_results.html | 33 + test request web.py | 13 + tools.py | 11 + 144 files changed, 12916 insertions(+) create mode 100644 .gitignore create mode 100644 DASAServer.bat create mode 100644 DASAServer.bat - Shortcut.lnk create mode 100644 FASTApiItemReceipt.bat create mode 100644 GeneralSummaryReport.xml create mode 100644 ItemInventory140723.xlsx create mode 100644 ItemInventoryQuery.py create mode 100644 ItemIventoryQuery.xml create mode 100644 ItemReceipt.ini create mode 100644 ItemReceiptXml.xml create mode 100644 PriceLevelQuery.py create mode 100644 PriceLevelQueryv2.py create mode 100644 SO_to_Inv/CustomerQuery.py create mode 100644 SO_to_Inv/InvoiceAdd.xml create mode 100644 SO_to_Inv/InvoiceQuery.py create mode 100644 SO_to_Inv/PriceLevelQuery.py create mode 100644 SO_to_Inv/SalesOrderQuery.xml create mode 100644 SO_to_Inv/__init__.py create mode 100644 SO_to_Inv/invoiceadd.py create mode 100644 SO_to_Inv/readSO.py create mode 100644 SalesOrderQuery.xml create mode 100644 TransactionQuery.xml create mode 100644 database.db create mode 100644 django/.gitignore create mode 100644 django/Customer/__init__.py create mode 100644 django/Customer/admin.py create mode 100644 django/Customer/apps.py create mode 100644 django/Customer/forms.py create mode 100644 django/Customer/migrations/0001_initial.py create mode 100644 django/Customer/migrations/0002_alter_customer_timecreated.py create mode 100644 django/Customer/migrations/0003_alter_customer_parent.py create mode 100644 django/Customer/migrations/0004_customer_pricelevelreffullname.py create mode 100644 django/Customer/migrations/0005_alter_customer_coordinates_and_more.py create mode 100644 django/Customer/migrations/0006_alter_customer_salutation.py create mode 100644 django/Customer/migrations/0007_alter_customer_customerfullname.py create mode 100644 django/Customer/migrations/__init__.py create mode 100644 django/Customer/models.py create mode 100644 django/Customer/templates/Customer/addedit.html create mode 100644 django/Customer/templates/Customer/index copy.html create mode 100644 django/Customer/templates/Customer/index.html create mode 100644 django/Customer/tests.py create mode 100644 django/Customer/urls.py create mode 100644 django/Customer/views.py create mode 100644 django/Inventory/__init__.py create mode 100644 django/Inventory/asgi.py create mode 100644 django/Inventory/settings.py create mode 100644 django/Inventory/urls.py create mode 100644 django/Inventory/wsgi.py create mode 100644 django/Invoice/__init__.py create mode 100644 django/Invoice/admin.py create mode 100644 django/Invoice/apps.py create mode 100644 django/Invoice/forms.py create mode 100644 django/Invoice/migrations/0001_initial.py create mode 100644 django/Invoice/migrations/__init__.py create mode 100644 django/Invoice/models.py create mode 100644 django/Invoice/static/bootstrap.bundle.min.js create mode 100644 django/Invoice/static/bootstrap.min.css create mode 100644 django/Invoice/templates/Invoice/create-update.html create mode 100644 django/Invoice/templates/Invoice/home.html create mode 100644 django/Invoice/templates/Invoice/index_invoice.html create mode 100644 django/Invoice/templates/Invoice/show-customers.html create mode 100644 django/Invoice/templates/Invoice/so_list_form.html create mode 100644 django/Invoice/templates/Invoice/temp.html create mode 100644 django/Invoice/tests.py create mode 100644 django/Invoice/urls.py create mode 100644 django/Invoice/views.py create mode 100644 django/Item/__init__.py create mode 100644 django/Item/admin.py create mode 100644 django/Item/apps.py create mode 100644 django/Item/forms.py create mode 100644 django/Item/management/commands/__init__.py create mode 100644 django/Item/management/commands/fillitems.py create mode 100644 django/Item/migrations/0001_initial.py create mode 100644 django/Item/migrations/0002_alter_item_parentreffullname.py create mode 100644 django/Item/migrations/0003_alter_uom_number_of.py create mode 100644 django/Item/migrations/0004_alter_uom_name.py create mode 100644 django/Item/migrations/0005_alter_item_itemtype.py create mode 100644 django/Item/migrations/0006_alter_item_unitofmeasuresetreffullname.py create mode 100644 django/Item/migrations/0007_pricelevel_pricelevelitem.py create mode 100644 django/Item/migrations/0008_alter_pricelevelitem_pl.py create mode 100644 django/Item/migrations/0009_item_alwaysnull.py create mode 100644 django/Item/migrations/0010_alter_pricelevelitem_price.py create mode 100644 django/Item/migrations/__init__.py create mode 100644 django/Item/models.py create mode 100644 django/Item/templates/Item/addedit_item.html create mode 100644 django/Item/templates/Item/addedit_pricelevel.html create mode 100644 django/Item/templates/Item/index.html create mode 100644 django/Item/templates/Item/index_pricelevel.html create mode 100644 django/Item/templates/Item/table_index.html create mode 100644 django/Item/tests.py create mode 100644 django/Item/urls.py create mode 100644 django/Item/views.py create mode 100644 django/SalesOrder/__init__.py create mode 100644 django/SalesOrder/admin.py create mode 100644 django/SalesOrder/apps.py create mode 100644 django/SalesOrder/forms.py create mode 100644 django/SalesOrder/migrations/0001_initial.py create mode 100644 django/SalesOrder/migrations/0002_alter_salesorder_txndate.py create mode 100644 django/SalesOrder/migrations/0003_rename_customerreffullname_salesorderitemline_salesorder.py create mode 100644 django/SalesOrder/migrations/0004_salesorder_salesrepreffullname_and_more.py create mode 100644 django/SalesOrder/migrations/0005_alter_salesorder_refnumber.py create mode 100644 django/SalesOrder/migrations/0006_alter_salesorder_billaddr1_alter_salesorder_ponumber_and_more.py create mode 100644 django/SalesOrder/migrations/0007_alter_salesorder_billcountry_and_more.py create mode 100644 django/SalesOrder/migrations/0008_alter_salesorderitemline_lineismanuallyclosed.py create mode 100644 django/SalesOrder/migrations/0009_remove_salesorder_subtotal.py create mode 100644 django/SalesOrder/migrations/__init__.py create mode 100644 django/SalesOrder/models.py create mode 100644 django/SalesOrder/templates/SalesOrder/create-update.html create mode 100644 django/SalesOrder/templates/SalesOrder/index_salesorder.html create mode 100644 django/SalesOrder/templates/SalesOrder/temp.html create mode 100644 django/SalesOrder/tests.py create mode 100644 django/SalesOrder/urls.py create mode 100644 django/SalesOrder/views.py create mode 100644 django/__init__.py create mode 100644 django/manage.py create mode 100644 django/requirements.txt create mode 100644 django/static/bootstrap.bundle.min.js create mode 100644 django/static/bootstrap.min.css create mode 100644 django/static/bootstrap.min.css.map create mode 100644 django/templates/base.html create mode 100644 fake_db.py create mode 100644 iteminventorydasa.py create mode 100644 itemreport.py create mode 100644 itemreportquery.py create mode 100644 main.py create mode 100644 main2.py create mode 100644 mousemove.py create mode 100644 pdfexcel4DNwithxlrd.py create mode 100644 pyQBstockserverV1.py create mode 100644 qbItemInventoryQuery.py create mode 100644 qbgeneralsummaryreport.py create mode 100644 qbpurchaseorderquery.py create mode 100644 qbquery.py create mode 100644 qbsalesorderquery.py create mode 100644 qbtransactionquery.py create mode 100644 qbunitofmeasure.py create mode 100644 readme create mode 100644 requirements.txt create mode 100644 templates/base.html create mode 100644 templates/hello.html create mode 100644 templates/po_index.html create mode 100644 templates/search_results.html create mode 100644 test request web.py create mode 100644 tools.py diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..11c466d --- /dev/null +++ b/.gitignore @@ -0,0 +1,171 @@ +# Byte-compiled / optimized / DLL files +__pycache__/ +*.py[cod] +*$py.class + +# C extensions +*.so + +# Distribution / packaging +.Python +build/ +develop-eggs/ +dist/ +downloads/ +eggs/ +.eggs/ +lib/ +lib64/ +parts/ +sdist/ +var/ +wheels/ +share/python-wheels/ +*.egg-info/ +.installed.cfg +*.egg +MANIFEST + +# PyInstaller +# Usually these files are written by a python script from a template +# before PyInstaller builds the exe, so as to inject date/other infos into it. +*.manifest +*.spec + +# Installer logs +pip-log.txt +pip-delete-this-directory.txt + +# Unit test / coverage reports +htmlcov/ +.tox/ +.nox/ +.coverage +.coverage.* +.cache +nosetests.xml +coverage.xml +*.cover +*.py,cover +.hypothesis/ +.pytest_cache/ +cover/ + +# Translations +*.mo +*.pot + +# Django stuff: +*.log +local_settings.py +db.sqlite3 +db.sqlite3-journal +*.pot +*.pyc +__pycache__/ +local_settings.py + +# Flask stuff: +instance/ +.webassets-cache + +# Scrapy stuff: +.scrapy + +# Sphinx documentation +docs/_build/ + +# PyBuilder +.pybuilder/ +target/ + +# Jupyter Notebook +.ipynb_checkpoints + +# IPython +profile_default/ +ipython_config.py + +# pyenv +# For a library or package, you might want to ignore these files since the code is +# intended to run in multiple environments; otherwise, check them in: +# .python-version + +# pipenv +# According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control. +# However, in case of collaboration, if having platform-specific dependencies or dependencies +# having no cross-platform support, pipenv may install dependencies that don't work, or not +# install all needed dependencies. +#Pipfile.lock + +# poetry +# Similar to Pipfile.lock, it is generally recommended to include poetry.lock in version control. +# This is especially recommended for binary packages to ensure reproducibility, and is more +# commonly ignored for libraries. +# https://python-poetry.org/docs/basic-usage/#commit-your-poetrylock-file-to-version-control +#poetry.lock + +# pdm +# Similar to Pipfile.lock, it is generally recommended to include pdm.lock in version control. +#pdm.lock +# pdm stores project-wide configurations in .pdm.toml, but it is recommended to not include it +# in version control. +# https://pdm.fming.dev/#use-with-ide +.pdm.toml + +# PEP 582; used by e.g. github.com/David-OConnor/pyflow and github.com/pdm-project/pdm +__pypackages__/ + +# Celery stuff +celerybeat-schedule +celerybeat.pid + +# SageMath parsed files +*.sage.py + +# Environments +.env +.venv +env/ +venv/ +ENV/ +env.bak/ +venv.bak/ + +# Spyder project settings +.spyderproject +.spyproject + +# Rope project settings +.ropeproject + +# mkdocs documentation +/site + +# mypy +.mypy_cache/ +.dmypy.json +dmypy.json + +# Pyre type checker +.pyre/ + +# pytype static type analyzer +.pytype/ + +# Cython debug symbols +cython_debug/ + +# PyCharm +# JetBrains specific template is maintained in a separate JetBrains.gitignore that can +# be found at https://github.com/github/gitignore/blob/main/Global/JetBrains.gitignore +# and can be added to the global gitignore or merged into this file. For a more nuclear +# option (not recommended) you can uncomment the following to ignore the entire idea folder. +#.idea/ +DN_Excel_files/ +ItemInventory/ +QBbackup/ +.xlsx +.pdf +QBbackup/ +test_folder_source_DeliveryNote/ \ No newline at end of file diff --git a/DASAServer.bat b/DASAServer.bat new file mode 100644 index 0000000..72aa959 --- /dev/null +++ b/DASAServer.bat @@ -0,0 +1,9 @@ +cd "C:\Sources\dasaproject win7\" +echo already cd +cmd /k "cd /d C:\Sources\dasaproject win7\env\Scripts\ & activate & cd /d C:\Sources\dasaproject win7\ & uvicorn main:app --host 0.0.0.0 --port 9999 +echo workon env +echo pause +echo get to env +echo cd "C:\Users\MSi\Documents\Python Project\DBW\Web scrapping" +echo uvicorn main:app --reload +echo start app \ No newline at end of file diff --git a/DASAServer.bat - Shortcut.lnk b/DASAServer.bat - Shortcut.lnk new file mode 100644 index 0000000000000000000000000000000000000000..fb17bbe8e9c60368f7ffb84adb45df94e37e6672 GIT binary patch literal 1137 zcmbVKO=uHQ5dOB78jI+LR;@qSr6^5X8WT~fL7{1y6l&APtVD}@$Y!(E1Z~15O>O}Z z5uqX?y;Rg9ts+)DsOUw_LA{Bg2Ql>`C zbT}M0wqlRRr7Q=n7(qBqCmnnzh>#OwhNh=*h{S8L_~LBvWF5b>Q%v5&QX5x3H7ywl zjKP2g9VxomjFB><7P`_eqSr0E1Hl}L3@&rF4e}dv9-U;)zkeYLmAF(Si8p~bF>6Re zLKZQMqKm$0B9*=15@?|>1CpsCdvi{EkNX(VUsh5=S91(j`r5LF_6Xtk)eARd6FO;S zNXdYmqEylYb`XZkC+En1CxO=qf|bCm*M@yzkxo#F%N10jYD!HSiMXz%rEF}pOW{Ju zx{=WhdqgF6k%SafOJF-Za8b;kC04Lnd0tYk>wu}(l#x>o$d0AmPZ#^Pi8D(z;qjZ_ zXSw0^oNhCL`&lgsjyp)GWrIIxARIRv5vAs2sZkPo%z|k+O}3BT&QKwFZ6cTh)6L#n z+bj<MjY()-Ah6J#xMn*%F=u`99{HhSQ-Kp;ep9G}&i`vl^;R=~WrfM0shZ*m z;}tn&q>M~wQY*PQaBrq=-n+$nao5~_->Y-CF1PQSoOrNcovyc__4BjjYVS<*3q}vu A(EtDd literal 0 HcmV?d00001 diff --git a/FASTApiItemReceipt.bat b/FASTApiItemReceipt.bat new file mode 100644 index 0000000..f44b828 --- /dev/null +++ b/FASTApiItemReceipt.bat @@ -0,0 +1,5 @@ +cd "C:\Sources\dasaproject win7\" +echo already cd +cmd /k "cd /d C:\Sources\dasaproject win7\env\Scripts\ & activate & cd /d C:\Sources\dasaproject win7\ & uvicorn main:app --host 0.0.0.0 --port 8888 +echo uvicorn main:app --reload +echo start app \ No newline at end of file diff --git a/GeneralSummaryReport.xml b/GeneralSummaryReport.xml new file mode 100644 index 0000000..e1cf457 --- /dev/null +++ b/GeneralSummaryReport.xml @@ -0,0 +1,146 @@ + + + + + + + ENUMTYPE + BOOLTYPE + + + DATETYPE + DATETYPE + + + + ENUMTYPE + + + + + ENUMTYPE + + IDTYPE + + STRTYPE + + IDTYPE + + STRTYPE + + + + + + ENUMTYPE + + IDTYPE + + STRTYPE + + IDTYPE + + STRTYPE + + + + + + ENUMTYPE + + IDTYPE + + STRTYPE + + IDTYPE + + STRTYPE + + + + + IDTYPE + + STRTYPE + + IDTYPE + + STRTYPE + + + + + ENUMTYPE + + + + DATETYPE + DATETYPE + + + + ENUMTYPE + + + ENUMTYPE + + ENUMTYPE + + ENUMTYPE + BOOLTYPE + + ENUMTYPE + + ENUMTYPE + + ENUMTYPE + + ENUMTYPE + + + + + STRTYPE + STRTYPE + + ENUMTYPE + INTTYPE + INTTYPE + INTTYPE + + + + + ENUMTYPE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/ItemInventory140723.xlsx b/ItemInventory140723.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..fc7abff1a6540bc7323c2b212337b68b6765aab7 GIT binary patch literal 460295 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�#3n^fY{vq%x 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 >o|=f9H%AAupnkx2_k(JRL>C^6OjKZ=QE#S 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 D9{xbR literal 0 HcmV?d00001 diff --git a/ItemInventoryQuery.py b/ItemInventoryQuery.py new file mode 100644 index 0000000..ad1785e --- /dev/null +++ b/ItemInventoryQuery.py @@ -0,0 +1,199 @@ +import xml.etree.ElementTree as ET +import win32com.client +import pandas as pd +from datetime import date, datetime +import timeit +import os + +class ItemInventoryQuery: + def __init__(self, *args, **kwargs) -> None: + # print(f'kwargs:{kwargs}') + # print(args) + self.filename=None + if len(args)>0: + self.filename = args[0] + # print(f'args:{args}') + # print(self.filename) + self.IncludeRetElement = kwargs['IncludeRetElement'] if 'IncludeRetElement' in kwargs else None + if not isinstance(self.IncludeRetElement, list): + self.IncludeRetElement = [self.IncludeRetElement] + self.OwnerID = kwargs['OwnerID'] if 'OwnerID' in kwargs else "0" + self.MaxReturned = kwargs['MaxReturned'] if 'MaxReturned' in kwargs else None + if isinstance(self.MaxReturned, int): + self.MaxReturned = str(self.MaxReturned) + self.NameRangeFilter = kwargs['NameRangeFilter'] if 'NameRangeFilter' in kwargs else [] + self.DN = kwargs['DN'] if 'DN' in kwargs else {} + self.TxnDateRangeFilter = kwargs['TxnDateRangeFilter'] if 'TxnDateRangeFilter' in kwargs else None + self.DateMacro = None + if 'DateMacro' in kwargs: + if kwargs['DateMacro'] in ['All', 'Today', 'ThisWeek', 'ThisWeekToDate', 'ThisMonth', 'ThisMonthToDate', 'ThisQuarter', 'ThisQuarterToDate', 'ThisYear', 'ThisYearToDate', 'Yesterday', 'LastWeek', 'LastWeekToDate', 'LastMonth', 'LastMonthToDate', 'LastQuarter', 'LastQuarterToDate', 'LastYear', 'LastYearToDate', 'NextWeek', 'NextFourWeeks', 'NextMonth', 'NextQuarter', 'NextYear']: + self.DateMacro = kwargs['DateMacro'] + self.FromTxnDate = self.validate_date(kwargs['FromTxnDate']) if 'FromTxnDate' in kwargs else None + self.ToTxnDate = self.validate_date(kwargs['ToTxnDate']) if 'ToTxnDate' in kwargs else None + self.ReportEntityFilter = kwargs['ReportEntityFilter'] if 'ReportEntityFilter' in kwargs else None + self.FullName = kwargs['FullName'] if 'FullName' in kwargs else None + # print(self.DateMacro, self.TxnDateRangeFilter, self.FromTxnDate, self.ToTxnDate) + + def create_sub_element(self, ET, parentNode, thisNode, text="\n", whiteSpace = 0, attrib =None): + if type(attrib) is not dict: + attrib = {} + ele = ET.SubElement(parentNode, thisNode) + for x in attrib: + ele.set(x, attrib[x]) + ele.text = text + tail = "\n" + for x in range(whiteSpace): + tail = tail + " " + ele.tail = tail + return ele + + def create_QBXML(self): + root = ET.Element("QBXML") + root.tail = "\n" + root.text = "\n " + QBXMLMsgsRq = ET.SubElement(root, "QBXMLMsgsRq") + # QBXMLMsgsRq.set("onError", "continueOnError") + QBXMLMsgsRq.set("onError", "stopOnError") + QBXMLMsgsRq.tail = "\n" + QBXMLMsgsRq.text = "\n " + ItemInventoryQueryRq = self.create_sub_element(ET, QBXMLMsgsRq, "ItemInventoryQueryRq","\n " ) + + if self.MaxReturned is not None: + MaxReturned = self.create_sub_element(ET, ItemInventoryQueryRq, "MaxReturned", self.MaxReturned, 4) + + if len(self.NameRangeFilter)==2: + print(self.NameRangeFilter) + NameRangeFilter = self.create_sub_element(ET, ItemInventoryQueryRq, "NameRangeFilter", "\n ") + FromName = self.create_sub_element(ET, NameRangeFilter, "FromName", self.NameRangeFilter[0]) + ToName = self.create_sub_element(ET, NameRangeFilter, "ToName", self.NameRangeFilter[1]) + + if self.IncludeRetElement: + for x in self.IncludeRetElement: + IncludeRetElement = self.create_sub_element(ET, ItemInventoryQueryRq, "IncludeRetElement", x, 4) + # print(self.OwnerID) + if self.OwnerID is not None: + OwnerID = self.create_sub_element(ET, ItemInventoryQueryRq, "OwnerID", self.OwnerID, 4) + mydata = ET.tostring(root, encoding = "unicode") + + qbxml_query = """\n""" + qbxml_query = qbxml_query + """""" + qbxml_query = qbxml_query + "\n" + mydata + print(f'create_QBXML->qbxml_query: {qbxml_query}') + return qbxml_query + + def connect_to_quickbooks(self, qbxml_query): + # Connect to Quickbooks + # sessionManager = win32com.client.Dispatch("QBXMLRP2.RequestProcessor") + # sessionManager.OpenConnection('', 'DASA') + # enumfodnc= win32com.client.Dispatch('QBXMLRP2.RequestProcessor') + # print(enumfodnc) + # print(enumfodnc.qbFileOpenDoNotCare) + sessionManager = win32com.client.Dispatch("QBXMLRP2.RequestProcessor") + sessionManager.OpenConnection('', 'DASA2') + # ticket = sessionManager.BeginSession("z:\\DBW Bogor.qbw", 2) + + ticket = sessionManager.BeginSession("", 2) + + # Send query and receive response + 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 + + def status_ok(self, QBXML): #for ItemInventoryQueryRs + tree = ET.fromstring(QBXML) + GSRQRs = tree.find(".//ItemInventoryQueryRs") + # print(f"GSRQRs:{GSRQRs}") + status_code = GSRQRs.attrib #.get('statusCode') + # print(GSRQRs.attrib) + # print(GSRQRs.attrib['statusCode']) + status=GSRQRs.attrib.get('statusMessage') + + print(f'ItemInventoryQuery->status={status}') + # print('OK' in status) + if 'OK' in status: + return True, status_code + else: + return False, status_code + + def get_data(self, response_string): + tree = ET.fromstring(response_string) + data = tree.findall(".//ItemInventoryRet") + NameFromTaco = [] + FullName = [] + # print(f'get_data->response_string:{response_string}') + # print(data) + for dt in data: + # print(dt.find('FullName').text, ) + for dtextret in dt.findall('DataExtRet'): + + if dtextret.findtext('DataExtName')=='NameFromTaco': + FullName.append(dt.find('FullName').text.strip()) + NameFromTaco.append(dtextret.findtext('DataExtValue').strip()) + # print(f"{dt.find('FullName').text}->{dtextret.find('DataExtName').text} : {dtextret.findtext('DataExtValue')}") + # print() + if len(FullName)>0 and len(NameFromTaco)>0 and len(FullName) == len(NameFromTaco): + # print(f'ItemInventoryQuery->exact len:{len(FullName)}') + return {'FullName': FullName, 'NameFromTaco': NameFromTaco} + else: + print(f'ItemInventoryQuery->Not Exact Len:Fullname={len(FullName)}; NameFromTaco={len(NameFromTaco)}') + return {} + def to_excel(self, filename:str=''): + start = timeit.default_timer() + # print(f'to_excel filename:{self.filename}') + if filename == '': + print("filename is none") + if self.filename != None: + print("self.filename not none") + filename = self.filename + else: + return False, 'Please fill excel filename.' + # print(filename, type(filename)) + if not filename.endswith('.xlsx'): + return False, 'filename has to be excel file(.xlsx)' + # print(self.create_QBXML()) + response_string = self.connect_to_quickbooks(self.create_QBXML()) + + ret, msg = self.status_ok(response_string) + if ret: + df = pd.DataFrame.from_dict(self.get_data(response_string)) + print(df) + if len(df)>0: + df.to_excel(filename, index=False) + modtime = datetime.fromtimestamp(os.path.getmtime(filename)) + print(f"modified Time:{modtime}") + else: + False, 'There is no data(df==0)' + else: + return False, msg + print("The difference of time is :", timeit.default_timer() - start) + return True, f"It takes {format(timeit.default_timer() - start, '.2f')} seconds to update {filename}" + +start = timeit.default_timer() +if __name__ == "__main__": + # ini= ItemInventoryQuery(IncludeRetElement='FullName', OwnerID = "0") + for x in range(0, 1): + # ini= ItemInventoryQuery(IncludeRetElement=['FullName', 'DataExtRet'] , OwnerID = str(x), MaxReturned=None) + # ini= ItemInventoryQuery( OwnerID = str(x), MaxReturned="10", NameRangeFilter=["TSHT:TS WOODGRAIN:TS-252", "TSHT:TS WOODGRAIN:TS-252"]) + # ini= ItemInventoryQuery( OwnerID = str(x), MaxReturned="10", NameRangeFilter=["TSHT:TS LUXURY:TS-L-252", "TSHT:TS LUXURY:TS-L-252"]) + ini= ItemInventoryQuery( OwnerID = str(x), MaxReturned="10") + # ini= ItemInventoryQuery( OwnerID = str(x)) + # ini.to_excel('ItemInventory\ItemInventory_FromQB.xlsx') + itu = ini.connect_to_quickbooks(ini.create_QBXML()) + # print(itu) + ret, msg = ini.status_ok(itu) + if ret: + print("YEAH") + df = pd.DataFrame.from_dict(ini.get_data(itu)) + print(df) + # df.to_excel('ItemInventory\ItemInventory_FromQB.xlsx', index=False) + modtime = datetime.fromtimestamp(os.path.getmtime('ItemInventory\ItemInventory_FromQB.xlsx')) + print(f"modified Time:{modtime}") + break + # print(ini.status_ok(itu)) + # print(ini.create_QBXML()) + print("The difference of time is :", + timeit.default_timer() - start) \ No newline at end of file diff --git a/ItemIventoryQuery.xml b/ItemIventoryQuery.xml new file mode 100644 index 0000000..f65c983 --- /dev/null +++ b/ItemIventoryQuery.xml @@ -0,0 +1,114 @@ + + + + + + + IDTYPE + + STRTYPE + + INTTYPE + + ENUMTYPE + DATETIMETYPE + DATETIMETYPE + + + + ENUMTYPE + STRTYPE + + + + STRTYPE + STRTYPE + + + + + IDTYPE + + STRTYPE + + IDTYPE + + STRTYPE + + + + STRTYPE + GUIDTYPE + + + + + IDTYPE + DATETIMETYPE + DATETIMETYPE + STRTYPE + STRTYPE + STRTYPE + STRTYPE + BOOLTYPE + + IDTYPE + STRTYPE + + + IDTYPE + STRTYPE + + INTTYPE + STRTYPE + + IDTYPE + STRTYPE + + BOOLTYPE + + IDTYPE + STRTYPE + + STRTYPE + PRICETYPE + + IDTYPE + STRTYPE + + STRTYPE + PRICETYPE + + IDTYPE + STRTYPE + + + IDTYPE + STRTYPE + + + IDTYPE + STRTYPE + + + IDTYPE + STRTYPE + + QUANTYPE + QUANTYPE + QUANTYPE + PRICETYPE + QUANTYPE + QUANTYPE + GUIDTYPE + + GUIDTYPE + STRTYPE + + ENUMTYPE + STRTYPE + + + + + \ No newline at end of file diff --git a/ItemReceipt.ini b/ItemReceipt.ini new file mode 100644 index 0000000..9c8bd74 --- /dev/null +++ b/ItemReceipt.ini @@ -0,0 +1,5 @@ +[Section 1] +key1 = myval1 +key2 = value2 +#item_inventory_path = ItemInventory\ItemInventory140723.xlsx + diff --git a/ItemReceiptXml.xml b/ItemReceiptXml.xml new file mode 100644 index 0000000..f369498 --- /dev/null +++ b/ItemReceiptXml.xml @@ -0,0 +1,272 @@ + + + + + + + + IDTYPE + STRTYPE + + DATETYPE + STRTYPE + STRTYPE + GUIDTYPE + IDTYPE + + + IDTYPE + STRTYPE + + STRTYPE + QUANTYPE + STRTYPE + PRICETYPE + AMTTYPE + + IDTYPE + IDTYPE + + + + STRTYPE + + + + + IDTYPE + DATETIMETYPE + DATETIMETYPE + STRTYPE + INTTYPE + + IDTYPE + STRTYPE + + + + IDTYPE + STRTYPE + + + + IDTYPE + STRTYPE + + + DATETYPE + AMTTYPE + + IDTYPE + STRTYPE + + FLOATTYPE + AMTTYPE + STRTYPE + STRTYPE + BOOLTYPE + + IDTYPE + STRTYPE + + GUIDTYPE + + IDTYPE + + ENUMTYPE + DATETYPE + STRTYPE + + ENUMTYPE + AMTTYPE + + + IDTYPE + + IDTYPE + STRTYPE + + AMTTYPE + STRTYPE + + IDTYPE + STRTYPE + + + IDTYPE + STRTYPE + + + IDTYPE + STRTYPE + + + ENUMTYPE + + IDTYPE + STRTYPE + + + GUIDTYPE + STRTYPE + + ENUMTYPE + STRTYPE + + + + + IDTYPE + + IDTYPE + STRTYPE + + + IDTYPE + STRTYPE + + + IDTYPE + STRTYPE + + + STRTYPE + + STRTYPE + + STRTYPE + STRTYPE + QUANTYPE + STRTYPE + + IDTYPE + STRTYPE + + PRICETYPE + AMTTYPE + + IDTYPE + STRTYPE + + + IDTYPE + STRTYPE + + + IDTYPE + STRTYPE + + + ENUMTYPE + + IDTYPE + STRTYPE + + + GUIDTYPE + STRTYPE + + ENUMTYPE + STRTYPE + + + + + IDTYPE + + IDTYPE + STRTYPE + + STRTYPE + QUANTYPE + STRTYPE + + IDTYPE + STRTYPE + + AMTTYPE + + IDTYPE + + IDTYPE + STRTYPE + + + IDTYPE + STRTYPE + + + IDTYPE + STRTYPE + + + STRTYPE + + STRTYPE + + STRTYPE + STRTYPE + QUANTYPE + STRTYPE + + IDTYPE + STRTYPE + + PRICETYPE + AMTTYPE + + IDTYPE + STRTYPE + + + IDTYPE + STRTYPE + + + IDTYPE + STRTYPE + + + ENUMTYPE + + IDTYPE + STRTYPE + + + GUIDTYPE + STRTYPE + + ENUMTYPE + STRTYPE + + + + GUIDTYPE + STRTYPE + STRTYPE + + + + + GUIDTYPE + STRTYPE + + ENUMTYPE + STRTYPE + + + + + IDTYPE + + GUIDTYPE + + IDTYPE + + INTTYPE + STRTYPE + GUIDTYPE + + + + \ No newline at end of file diff --git a/PriceLevelQuery.py b/PriceLevelQuery.py new file mode 100644 index 0000000..aaec7fd --- /dev/null +++ b/PriceLevelQuery.py @@ -0,0 +1,146 @@ +#!usr/bin/python +import win32com.client +import xml.etree.ElementTree as ET +import json +import xmltodict + +# Connect to Quickbooks +sessionManager = win32com.client.Dispatch("QBXMLRP2.RequestProcessor") +sessionManager.OpenConnection('', 'Test qbXML Request') +ticket = sessionManager.BeginSession("C:\Quickbooks Bogor\qb test\distrindo bakti wutama.qbw", 0) + +# Send query and receive response +qbxml_query = """ + + + + + + Contains + TS-I502 + + QuantityOnHand + + + +""" +qbxml_query = """ + + + + + A + B + + + + +""" +qbxml_query = """ +AB""" + +qbxml_query1 = """ + + + + + QuantityOnHand + QuantityOnOrder + QuantityOnSalesOrder + FullName + Name + + + +""" + +root = ET.Element("QBXML") +root.tail = "\n " +root.text = "\n " +QBXMLMsgsRq = ET.SubElement(root, "QBXMLMsgsRq") +QBXMLMsgsRq.set("onError", "stopOnError") +QBXMLMsgsRq.tail = "\n" +QBXMLMsgsRq.text = "\n " +PriceLevelQueryRq = ET.SubElement(QBXMLMsgsRq, "PriceLevelQueryRq") +#PriceLevelQueryRq.set("metaData", "MetaDataAndResponseData") +PriceLevelQueryRq.set("metaData", "NoMetaData") +PriceLevelQueryRq.tail = "\n " +PriceLevelQueryRq.text = "\n " +FullName = ET.SubElement(PriceLevelQueryRq, "FullName") +FullName.text = "A" +FullName.tail = "\n " +FullName = ET.SubElement(PriceLevelQueryRq, "FullName") +FullName.text = "C" +FullName.tail = "\n " + +#mydata = ET.tostring(root, encoding = "unicode", method = "xml") +mydata = ET.tostring(root, encoding = "unicode") +#mydata = ET.tostring(root).decode() +print (mydata,type(mydata)) +qbxml_query1 = """""" +qbxml_query1 = qbxml_query1 + """""" +qbxml_query1 = qbxml_query1 + "\n" + mydata +print("") +print(qbxml_query1, type(qbxml_query1)) +print("") +#print(qbxml_query, type(qbxml_query)) + + + +tree = ET.ElementTree(root) +print("test",tree) + +#response_string = sessionManager.ProcessRequest(ticket, qbxml_query1) + +# Disconnect from Quickbooks +sessionManager.EndSession(ticket) # Close the company file +sessionManager.CloseConnection() # Close the connection +#print (response_string) +# Parse the response into an Element Tree and peel away the layers of response +#QBXML = xml.etree.ElementTree.fromstring(response_string) +QBXML = ET.fromstring(response_string) +print("") +#print(QBXML) +#print(QBXML) +datadict=xmltodict.parse(response_string) +#print(datadict) +jsondata=json.dumps(datadict) +#print(jsondata) +ddict=json.loads(jsondata) +#print(ddict) +QBXMLMsgsRs = QBXML.find('QBXMLMsgsRs') +#InventoryAdjustmentQueryRs = QBXMLMsgsRs.getiterator("InventoryAdjustmentRet") +#InventoryAdjustmentQueryRs = QBXMLMsgsRs.iter("ItemInventoryRet") +PriceLevelQueryRs = QBXMLMsgsRs.iter("PriceLevelRet") +#print (PriceLevelQueryRs) +PriceLevelRet = ddict["QBXML"]["QBXMLMsgsRs"]["PriceLevelQueryRs"]["PriceLevelRet"] + +#print (priceLevelPerItemRet) + +for priceLevelPerItemRetList in PriceLevelRet: + #print(priceLevelPerItemRetList) +#priceLevelPerItemRet = priceLevelPerItemRet["PriceLevelPerItemRet"] + + for PriceLevelPerItemRet in priceLevelPerItemRetList["PriceLevelPerItemRet"]: + pass + print(priceLevelPerItemRetList["Name"],PriceLevelPerItemRet["ItemRef"]["FullName"], PriceLevelPerItemRet["CustomPrice"]) + + + +# for PriceLevelRet in PriceLevelQueryRs: + # print(PriceLevelRet) +# # try: + # PLT = PriceLevelRet.find('PriceLevelType').text + # IsActive = PriceLevelRet.find('IsActive').text + # #txnid = PriceLevelRet.find('ListID').text + # name = PriceLevelRet.find('Name').text + # PriceLevelPerItemRet = PriceLevelRet.iter("PriceLevelPerItemRet") + # for ItemRef in PriceLevelPerItemRet: + # print(ItemRef) + # FullName = ItemRef.find('FullName').text + # CustomPrice = PriceLevelRet.find('CustomPrice').text + # print(FullName, name, PLT, CustomPrice) +# # except AttributeError: + # # print("attrib err") + # # except: + # # print("err") diff --git a/PriceLevelQueryv2.py b/PriceLevelQueryv2.py new file mode 100644 index 0000000..0f9fcdd --- /dev/null +++ b/PriceLevelQueryv2.py @@ -0,0 +1,147 @@ +#!usr/bin/python +import win32com.client +import xml.etree.ElementTree as ET +import json +import xmltodict + +# Connect to Quickbooks +sessionManager = win32com.client.Dispatch("QBXMLRP2.RequestProcessor") +sessionManager.OpenConnection('', 'Test qbXML Request') +#ticket = sessionManager.BeginSession("C:\Quickbooks Bogor\qb test\distrindo bakti wutama.qbw", 0) +ticket = sessionManager.BeginSession("", 0) + +# Send query and receive response +qbxml_query = """ + + + + + + Contains + TS-I502 + + QuantityOnHand + + + +""" +qbxml_query = """ + + + + + A + B + + + + +""" +qbxml_query = """ +AB""" + +qbxml_query1 = """ + + + + + QuantityOnHand + QuantityOnOrder + QuantityOnSalesOrder + FullName + Name + + + +""" + +root = ET.Element("QBXML") +root.tail = "\n " +root.text = "\n " +QBXMLMsgsRq = ET.SubElement(root, "QBXMLMsgsRq") +QBXMLMsgsRq.set("onError", "stopOnError") +QBXMLMsgsRq.tail = "\n" +QBXMLMsgsRq.text = "\n " +PriceLevelQueryRq = ET.SubElement(QBXMLMsgsRq, "PriceLevelQueryRq") +#PriceLevelQueryRq.set("metaData", "MetaDataAndResponseData") +PriceLevelQueryRq.set("metaData", "NoMetaData") +PriceLevelQueryRq.tail = "\n " +PriceLevelQueryRq.text = "\n " +FullName = ET.SubElement(PriceLevelQueryRq, "FullName") +FullName.text = "A" +FullName.tail = "\n " +FullName = ET.SubElement(PriceLevelQueryRq, "FullName") +FullName.text = "C" +FullName.tail = "\n " + +#mydata = ET.tostring(root, encoding = "unicode", method = "xml") +mydata = ET.tostring(root, encoding = "unicode") +#mydata = ET.tostring(root).decode() +print (mydata,type(mydata)) +qbxml_query1 = """""" +qbxml_query1 = qbxml_query1 + """""" +qbxml_query1 = qbxml_query1 + "\n" + mydata +print("") +print(qbxml_query1, type(qbxml_query1)) +print("") +#print(qbxml_query, type(qbxml_query)) + + + +tree = ET.ElementTree(root) +print("test",tree) + +response_string = sessionManager.ProcessRequest(ticket, qbxml_query1) + +# Disconnect from Quickbooks +sessionManager.EndSession(ticket) # Close the company file +sessionManager.CloseConnection() # Close the connection +print (response_string) +# Parse the response into an Element Tree and peel away the layers of response +#QBXML = xml.etree.ElementTree.fromstring(response_string) +QBXML = ET.fromstring(response_string) +print("") +#print(QBXML) +#print(QBXML) +datadict=xmltodict.parse(response_string) +#print(datadict) +jsondata=json.dumps(datadict) +#print(jsondata) +ddict=json.loads(jsondata) +#print(ddict) +QBXMLMsgsRs = QBXML.find('QBXMLMsgsRs') +#InventoryAdjustmentQueryRs = QBXMLMsgsRs.getiterator("InventoryAdjustmentRet") +#InventoryAdjustmentQueryRs = QBXMLMsgsRs.iter("ItemInventoryRet") +PriceLevelQueryRs = QBXMLMsgsRs.iter("PriceLevelRet") +#print (PriceLevelQueryRs) +PriceLevelRet = ddict["QBXML"]["QBXMLMsgsRs"]["PriceLevelQueryRs"]["PriceLevelRet"] + +#print (priceLevelPerItemRet) + +for priceLevelPerItemRetList in PriceLevelRet: + #print(priceLevelPerItemRetList) +#priceLevelPerItemRet = priceLevelPerItemRet["PriceLevelPerItemRet"] + + for PriceLevelPerItemRet in priceLevelPerItemRetList["PriceLevelPerItemRet"]: + pass + print(priceLevelPerItemRetList["Name"],PriceLevelPerItemRet["ItemRef"]["FullName"], PriceLevelPerItemRet["CustomPrice"]) + + + +# for PriceLevelRet in PriceLevelQueryRs: + # print(PriceLevelRet) +# # try: + # PLT = PriceLevelRet.find('PriceLevelType').text + # IsActive = PriceLevelRet.find('IsActive').text + # #txnid = PriceLevelRet.find('ListID').text + # name = PriceLevelRet.find('Name').text + # PriceLevelPerItemRet = PriceLevelRet.iter("PriceLevelPerItemRet") + # for ItemRef in PriceLevelPerItemRet: + # print(ItemRef) + # FullName = ItemRef.find('FullName').text + # CustomPrice = PriceLevelRet.find('CustomPrice').text + # print(FullName, name, PLT, CustomPrice) +# # except AttributeError: + # # print("attrib err") + # # except: + # # print("err") diff --git a/SO_to_Inv/CustomerQuery.py b/SO_to_Inv/CustomerQuery.py new file mode 100644 index 0000000..d013d45 --- /dev/null +++ b/SO_to_Inv/CustomerQuery.py @@ -0,0 +1,144 @@ +import xml.etree.ElementTree as ET +import win32com.client +import xmltodict +import pprint +import datetime +import pandas as pd +from datetime import date +import timeit +import os + +class CustomerQuery: + def __init__(self, **kwargs) -> None: + # print(f'kwargs:{kwargs}') + # print(args) + self.CustomerPriceLevelNames = [] + self.SPPriceLevelNames = [] + self.CustomerFullNames = [] + self.item_inventory_path = "ItemInventory" + self._filename = "CustomerList.xlsx" + # 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.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 + + def get_customer_pricelevel_list(self, response_string): + QBXML = ET.fromstring(response_string) + CustomerRets = QBXML.findall('.//CustomerRet') + # print(f'CustomerRets:{CustomerRets}') + + for CustomerRet in CustomerRets: + CustomerFullName = None + PriceLevelName = None + SP_PriceLevelName = None + CustomerFullName = CustomerRet.find('FullName').text + PriceLevelName = CustomerRet.find('.//PriceLevelRef') + if PriceLevelName: + PriceLevelName = PriceLevelName.find("FullName").text + # print(f'PriceLevelName:{PriceLevelName}') + DataExtRets = CustomerRet.findall('.//DataExtRet') + SP_PriceLevelName = None + if len(DataExtRets)>0: + for DataExtRet in DataExtRets: + DataExtName = DataExtRet.find('DataExtName').text + DataExtValue = DataExtRet.find('DataExtValue').text + if DataExtName.lower() == 'special cust'.lower(): + SP_PriceLevelName = DataExtValue.upper() + break + self.CustomerPriceLevelNames.append(PriceLevelName) + self.SPPriceLevelNames.append(SP_PriceLevelName) + self.CustomerFullNames.append(CustomerFullName) + # print(self.CustomerFullNames, self.CustomerPriceLevelNames, self.SPPriceLevelNames) + Customer = {} + Customer['FullName']=self.CustomerFullNames + Customer['PriceLevelName']=self.CustomerPriceLevelNames + Customer['SPName']= self.SPPriceLevelNames + # print(Customer) + _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 + + def create_customerquery_QBXML(self ): + root = ET.Element("QBXML") + root.tail = "\n" + root.text = "\n " + QBXMLMsgsRq = ET.SubElement(root, "QBXMLMsgsRq") + # QBXMLMsgsRq.set("onError", "continueOnError") + QBXMLMsgsRq.set("onError", "stopOnError") + QBXMLMsgsRq.tail = "\n" + QBXMLMsgsRq.text = "\n " + CustomerQueryRq = self.create_sub_element(ET, QBXMLMsgsRq, "CustomerQueryRq","\n " ) + # FullName = self.create_sub_element(ET, CustomerQueryRq, "FullName", self.FullName, 6) + IncludeRetElement = ['FullName', 'PriceLevelRef', 'DataExtRet'] + for x in IncludeRetElement: + IncludeRetElement = self.create_sub_element(ET, CustomerQueryRq, "IncludeRetElement", x, 4) + OwnerID = self.create_sub_element(ET, CustomerQueryRq, "OwnerID", "0", 6) + mydata = ET.tostring(root, encoding = "unicode") + + qbxml_query = """\n""" + qbxml_query = qbxml_query + """""" + qbxml_query = qbxml_query + "\n" + mydata + print(f'create_customer_QBXML->qbxml_query: {qbxml_query}') + response_string=self.connect_to_quickbooks(qbxml_query) + + return response_string + + def create_sub_element(self, ET, parentNode, thisNode, text="\n", whiteSpace = 0, attrib =None): + if type(attrib) is not dict: + attrib = {} + ele = ET.SubElement(parentNode, thisNode) + for x in attrib: + ele.set(x, attrib[x]) + ele.text = text + tail = "\n" + for x in range(whiteSpace): + tail = tail + " " + ele.tail = tail + return ele + + def connect_to_quickbooks(self, qbxml_query): + # Connect to Quickbooks + sessionManager = win32com.client.Dispatch("QBXMLRP2.RequestProcessor") + sessionManager.OpenConnection('', 'DASA2') + # ticket = sessionManager.BeginSession("z:\\DBW Bogor.qbw", 2) + ticket = sessionManager.BeginSession("", 2) + + # Send query and receive response + 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 + + def status_ok(self, QBXML): #for CustomerRs + + tree = ET.fromstring(QBXML) + + GSRQRs = tree.find(".//CustomerRs") + # print(f"GSRQRs:{GSRQRs}") + status_code = GSRQRs.attrib #.get('statusCode') + # print(GSRQRs.attrib) + # print(GSRQRs.attrib['statusCode']) + status=GSRQRs.attrib.get('statusMessage') + + print(f'status={status}') + if 'OK' in status: + return True, status_code + else: + return False, status_code + +if __name__ == '__main__': + starttime = timeit.default_timer() + # ini=SalesOrderQuery(FullName= '999 HPL', IncludeRetElement = ['TxnID', 'TimeCreated', 'TimeModified','TxnNumber', 'CustomerRef', 'IsManuallyClosed', 'IsFullyInvoiced']) + + ini=CustomerQuery() + iya = ini.create_customerquery_QBXML() + # print(iya) + ini.get_customer_pricelevel_list(iya) + + print("The time difference is :", timeit.default_timer() - starttime) \ No newline at end of file diff --git a/SO_to_Inv/InvoiceAdd.xml b/SO_to_Inv/InvoiceAdd.xml new file mode 100644 index 0000000..5259754 --- /dev/null +++ b/SO_to_Inv/InvoiceAdd.xml @@ -0,0 +1,454 @@ + + + + + + + + IDTYPE + STRTYPE + + + IDTYPE + STRTYPE + + + IDTYPE + STRTYPE + + + IDTYPE + STRTYPE + + DATETYPE + STRTYPE + + STRTYPE + STRTYPE + STRTYPE + STRTYPE + STRTYPE + STRTYPE + STRTYPE + STRTYPE + STRTYPE + STRTYPE + + + STRTYPE + STRTYPE + STRTYPE + STRTYPE + STRTYPE + STRTYPE + STRTYPE + STRTYPE + STRTYPE + STRTYPE + + BOOLTYPE + BOOLTYPE + STRTYPE + + IDTYPE + STRTYPE + + DATETYPE + + IDTYPE + STRTYPE + + STRTYPE + DATETYPE + + IDTYPE + STRTYPE + + + IDTYPE + STRTYPE + + STRTYPE + + IDTYPE + STRTYPE + + BOOLTYPE + BOOLTYPE + BOOLTYPE + + IDTYPE + STRTYPE + + STRTYPE + FLOATTYPE + GUIDTYPE + IDTYPE + + IDTYPE + AMTTYPE + BOOLTYPE + + + + + IDTYPE + STRTYPE + + STRTYPE + QUANTYPE + STRTYPE + + PRICETYPE + + PERCENTTYPE + + + IDTYPE + STRTYPE + + + + IDTYPE + STRTYPE + + AMTTYPE + + ENUMTYPE + + IDTYPE + STRTYPE + + + IDTYPE + STRTYPE + + + STRTYPE + + STRTYPE + + DATETYPE + + IDTYPE + STRTYPE + + + IDTYPE + STRTYPE + + STRTYPE + STRTYPE + + IDTYPE + IDTYPE + + + GUIDTYPE + STRTYPE + STRTYPE + + + + + + IDTYPE + STRTYPE + + QUANTYPE + STRTYPE + + IDTYPE + STRTYPE + + + IDTYPE + STRTYPE + + + GUIDTYPE + STRTYPE + STRTYPE + + + + + STRTYPE + + + + + IDTYPE + DATETIMETYPE + DATETIMETYPE + STRTYPE + INTTYPE + + IDTYPE + STRTYPE + + + IDTYPE + STRTYPE + + + IDTYPE + STRTYPE + + + IDTYPE + STRTYPE + + DATETYPE + STRTYPE + + STRTYPE + STRTYPE + STRTYPE + STRTYPE + STRTYPE + STRTYPE + STRTYPE + STRTYPE + STRTYPE + STRTYPE + + + STRTYPE + STRTYPE + STRTYPE + STRTYPE + STRTYPE + + + STRTYPE + STRTYPE + STRTYPE + STRTYPE + STRTYPE + STRTYPE + STRTYPE + STRTYPE + STRTYPE + STRTYPE + + + STRTYPE + STRTYPE + STRTYPE + STRTYPE + STRTYPE + + BOOLTYPE + BOOLTYPE + STRTYPE + + IDTYPE + STRTYPE + + DATETYPE + + IDTYPE + STRTYPE + + STRTYPE + DATETYPE + + IDTYPE + STRTYPE + + AMTTYPE + + IDTYPE + STRTYPE + + PERCENTTYPE + AMTTYPE + AMTTYPE + AMTTYPE + + IDTYPE + STRTYPE + + FLOATTYPE + AMTTYPE + STRTYPE + BOOLTYPE + + IDTYPE + STRTYPE + + BOOLTYPE + BOOLTYPE + BOOLTYPE + + IDTYPE + STRTYPE + + AMTTYPE + DATETYPE + STRTYPE + GUIDTYPE + + IDTYPE + + ENUMTYPE + DATETYPE + STRTYPE + + ENUMTYPE + AMTTYPE + + + + IDTYPE + + IDTYPE + STRTYPE + + STRTYPE + QUANTYPE + STRTYPE + + IDTYPE + STRTYPE + + + PRICETYPE + + PERCENTTYPE + + + IDTYPE + STRTYPE + + AMTTYPE + + IDTYPE + STRTYPE + + + IDTYPE + STRTYPE + + + STRTYPE + + STRTYPE + + STRTYPE + DATETYPE + + IDTYPE + STRTYPE + + STRTYPE + STRTYPE + + GUIDTYPE + STRTYPE + + ENUMTYPE + STRTYPE + + + + + IDTYPE + + IDTYPE + STRTYPE + + STRTYPE + QUANTYPE + STRTYPE + + IDTYPE + STRTYPE + + BOOLTYPE + AMTTYPE + + IDTYPE + + IDTYPE + STRTYPE + + STRTYPE + QUANTYPE + STRTYPE + + IDTYPE + STRTYPE + + + PRICETYPE + + PERCENTTYPE + + + IDTYPE + STRTYPE + + AMTTYPE + + IDTYPE + STRTYPE + + + IDTYPE + STRTYPE + + + STRTYPE + + STRTYPE + + STRTYPE + DATETYPE + + IDTYPE + STRTYPE + + STRTYPE + STRTYPE + + GUIDTYPE + STRTYPE + + ENUMTYPE + STRTYPE + + + + GUIDTYPE + STRTYPE + + ENUMTYPE + STRTYPE + + + + + GUIDTYPE + STRTYPE + + ENUMTYPE + STRTYPE + + + + + IDTYPE + + GUIDTYPE + + IDTYPE + + INTTYPE + STRTYPE + GUIDTYPE + + + + diff --git a/SO_to_Inv/InvoiceQuery.py b/SO_to_Inv/InvoiceQuery.py new file mode 100644 index 0000000..39aa589 --- /dev/null +++ b/SO_to_Inv/InvoiceQuery.py @@ -0,0 +1,587 @@ +import xml.etree.ElementTree as ET +import win32com.client +import xmltodict +import pprint +import datetime +import pandas as pd +from datetime import date +import timeit +import os + +class InvoiceQuery: + def __init__(self, **kwargs) -> None: + # print(f'kwargs:{kwargs}') + # print(args) + # self.InvoiceList=[] + self.PriceLevelName = None + self.SPPriceLevelName = None + self.item_inventory_path = "ItemInventory" + self.price_level_filename = "PriceLevel.xlsx" + self._df_price_level = pd.read_excel(os.path.join(os.getcwd(), self.item_inventory_path, self.price_level_filename), usecols=['FullName', 'PriceLevelName', 'CustomPrice'],) + print(self._df_price_level) + print(type(self._df_price_level.loc[(self._df_price_level['FullName']=="ECO:0:ECO-002") & (self._df_price_level['PriceLevelName']=="T 202202")].values.tolist()[0][2])) + self.FullName = kwargs['FullName'] if 'FullName' in kwargs else None + + self.CustomerPriceLevelName_filename = "CustomerList.xlsx" + self._df_customer = pd.read_excel(os.path.join(os.getcwd(), self.item_inventory_path, self.CustomerPriceLevelName_filename), usecols=['FullName', 'PriceLevelName', 'SPName'],) + self._df_customer = self._df_customer.fillna('') + print(self._df_customer) + + self.Customer = self._df_customer.loc[(self._df_customer["FullName"]==self.FullName)].values.tolist()[0] + print(f'Customer:{self.Customer}') + self.DN = kwargs['DN'] if 'DN' in kwargs else {} + self.Reuse = kwargs['Reuse'] if 'Reuse' in kwargs else None + + self.InvoiceList= kwargs['InvoiceList'] if 'InvoiceList' in kwargs else [] + self.InvoiceList = None + self.InvoiceType = kwargs['InvoiceType'] if 'InvoiceType' in kwargs else 'SalesByCustomerSummary' + self.IncludeLineItems = kwargs['IncludeLineItems'] if 'IncludeLineItems' in kwargs else 'true' + self.IncludeRetElement = kwargs['IncludeRetElement'] if 'IncludeRetElement' in kwargs else [] + self.TxnDateRangeFilter = kwargs['TxnDateRangeFilter'] if 'TxnDateRangeFilter' in kwargs else None + self.DateMacro = None + self.MaxReturned = kwargs['MaxReturned'] if 'MaxReturned' in kwargs else '1' + + if 'DateMacro' in kwargs: + if kwargs['DateMacro'] in ['All', 'Today', 'ThisWeek', 'ThisWeekToDate', 'ThisMonth', 'ThisMonthToDate', 'ThisQuarter', 'ThisQuarterToDate', 'ThisYear', 'ThisYearToDate', 'Yesterday', 'LastWeek', 'LastWeekToDate', 'LastMonth', 'LastMonthToDate', 'LastQuarter', 'LastQuarterToDate', 'LastYear', 'LastYearToDate', 'NextWeek', 'NextFourWeeks', 'NextMonth', 'NextQuarter', 'NextYear']: + self.DateMacro = kwargs['DateMacro'] + today = datetime.date.today() + deltatoday = today - datetime.timedelta(days = 74) + print(today, deltatoday) + self.FromTxnDate = self.validate_date(kwargs['FromTxnDate']) if 'FromTxnDate' in kwargs else deltatoday + self.ToTxnDate = self.validate_date(kwargs['ToTxnDate']) if 'ToTxnDate' in kwargs else today + self.ReportEntityFilter = kwargs['ReportEntityFilter'] if 'ReportEntityFilter' in kwargs else None + + # print(self.DateMacro, self.TxnDateRangeFilter, self.FromTxnDate, self.ToTxnDate) + # print(self.Reuse) + # if not self.Reuse: + # self.dfDN, self.ext_doc_no_list = self.get_ext_doc_no_list(self.DN) + # self.RefNumber = kwargs['RefNumber'] if 'RefNumber' in kwargs else self.ext_doc_no_list + # self.get_sales_order_header() + + def create_sub_element(self, ET, parentNode, thisNode, text="\n", whiteSpace = 0, attrib =None): + if type(attrib) is not dict: + attrib = {} + ele = ET.SubElement(parentNode, thisNode) + for x in attrib: + ele.set(x, attrib[x]) + ele.text = text + tail = "\n" + for x in range(whiteSpace): + tail = tail + " " + ele.tail = tail + return ele + + def create_QBXML(self): + root = ET.Element("QBXML") + root.tail = "\n" + root.text = "\n " + QBXMLMsgsRq = ET.SubElement(root, "QBXMLMsgsRq") + # QBXMLMsgsRq.set("onError", "continueOnError") + QBXMLMsgsRq.set("onError", "stopOnError") + QBXMLMsgsRq.tail = "\n" + QBXMLMsgsRq.text = "\n " + InvoiceQueryRq = self.create_sub_element(ET, QBXMLMsgsRq, "InvoiceQueryRq","\n " ) + # InvoiceType = self.create_sub_element(ET, InvoiceQueryRq, 'InvoiceType', self.InvoiceType) + # if self.FullName: + # EntityFilter = self.create_sub_element(ET, InvoiceQueryRq, 'EntityFilter', "\n ") + # FullName = self.create_sub_element(ET, EntityFilter, "FullName", self.FullName, 6) + # if self.MaxReturned: + # MaxReturned = self.create_sub_element(ET, InvoiceQueryRq, 'MaxReturned', self.MaxReturned, 6) + if self.DateMacro: + TxnDateRangeFilter = self.create_sub_element(ET, InvoiceQueryRq, "TxnDateRangeFilter", "\n ",) + InvoiceType = self.create_sub_element(ET, TxnDateRangeFilter, "DateMacro", self.DateMacro) + # InvoiceType = self.create_sub_element(ET, InvoiceQueryRq, "DateMacro", self.DateMacro) + + elif type(self.FromTxnDate) is datetime.date or type(self.ToTxnDate) is datetime.date: + TxnDateRangeFilter = self.create_sub_element(ET, InvoiceQueryRq, "TxnDateRangeFilter", "\n ",) + if type(self.FromTxnDate) is datetime.date: + FromTxnDate = self.create_sub_element(ET, TxnDateRangeFilter, "FromTxnDate", self.FromTxnDate.strftime('%Y-%m-%d'),4) + if type(self.ToTxnDate) is datetime.date: + ToTxnDate = self.create_sub_element(ET, TxnDateRangeFilter, "ToTxnDate", self.ToTxnDate.strftime('%Y-%m-%d')) + if self.IncludeLineItems: + IncludeLineItems = self.create_sub_element(ET, InvoiceQueryRq, "IncludeLineItems", self.IncludeLineItems, 4) + if len(self.IncludeRetElement)>0: + for x in self.IncludeRetElement: + IncludeRetElement = self.create_sub_element(ET, InvoiceQueryRq, "IncludeRetElement", x, 4) + mydata = ET.tostring(root, encoding = "unicode") + + qbxml_query = """\n""" + qbxml_query = qbxml_query + """""" + qbxml_query = qbxml_query + "\n" + mydata + # print(f'create_QBXML->qbxml_query: {qbxml_query}') + return qbxml_query + + def get_customer_pricelevel(self, response_string): + QBXML = ET.fromstring(response_string) + PriceLevelName = QBXML.find('.//PriceLevelRef') + if PriceLevelName: + + PriceLevelName = PriceLevelName.find("FullName").text + print(f'PriceLevelName:{PriceLevelName}') + DataExtRets = QBXML.findall('.//DataExtRet') + SP_PriceLevelName = None + if len(DataExtRets)>0: + for DataExtRet in DataExtRets: + DataExtName = DataExtRet.find('DataExtName').text + DataExtValue = DataExtRet.find('DataExtValue').text + if DataExtName.lower() == 'special cust'.lower(): + SP_PriceLevelName = DataExtValue.upper() + break + self.PriceLevelName = PriceLevelName + self.SPPriceLevelName = SP_PriceLevelName + return PriceLevelName, SP_PriceLevelName + + def create_customerquery_QBXML(self ): + root = ET.Element("QBXML") + root.tail = "\n" + root.text = "\n " + QBXMLMsgsRq = ET.SubElement(root, "QBXMLMsgsRq") + # QBXMLMsgsRq.set("onError", "continueOnError") + QBXMLMsgsRq.set("onError", "stopOnError") + QBXMLMsgsRq.tail = "\n" + QBXMLMsgsRq.text = "\n " + CustomerQueryRq = self.create_sub_element(ET, QBXMLMsgsRq, "CustomerQueryRq","\n " ) + # InvoiceType = self.create_sub_element(ET, CustomerQueryRq, 'InvoiceType', self.InvoiceType) + FullName = self.create_sub_element(ET, CustomerQueryRq, "FullName", self.FullName, 6) + IncludeRetElement = ['FullName', 'PriceLevelRef', 'DataExtRet'] + for x in IncludeRetElement: + IncludeRetElement = self.create_sub_element(ET, CustomerQueryRq, "IncludeRetElement", x, 4) + OwnerID = self.create_sub_element(ET, CustomerQueryRq, "OwnerID", "0", 6) + mydata = ET.tostring(root, encoding = "unicode") + + qbxml_query = """\n""" + qbxml_query = qbxml_query + """""" + qbxml_query = qbxml_query + "\n" + mydata + print(f'create_customer_QBXML->qbxml_query: {qbxml_query}') + response_string=self.connect_to_quickbooks(qbxml_query) + + return self.get_customer_pricelevel(response_string) + return response_string + + def create_invoiceadd_QBXML(self): + print('create_ionvoiceadd_QBXML') + root = ET.Element("QBXML") + root.tail = "\n" + root.text = "\n " + QBXMLMsgsRq = ET.SubElement(root, "QBXMLMsgsRq") + QBXMLMsgsRq.set("onError", "stopOnError") + QBXMLMsgsRq.tail = "\n" + QBXMLMsgsRq.text = "\n " + InvoiceAddRq = self.create_sub_element(ET, QBXMLMsgsRq, "InvoiceAddRq", "\n ",2 ) + InvoiceAdd = self.create_sub_element(ET, InvoiceAddRq, "InvoiceAdd", "\n ",4 ) + CustomerRef = self.create_sub_element(ET, InvoiceAdd, "CustomerRef", "\n ",8 ) + FullName = self.create_sub_element(ET, CustomerRef, "FullName", self.InvoiceList[0]['CustomerFullName'], 8 ) + TemplateRef = self.create_sub_element(ET, InvoiceAdd, "TemplateRef", "\n ", 8 ) + TemplateFullName = self.create_sub_element(ET, TemplateRef, "FullName", "DBW Invoice (11%)", 8 ) + today = str(date.today()) + TxnDate = self.create_sub_element(ET, InvoiceAdd, "TxnDate", today,8) # self.DN['TxnDate'], 8 ) + + RefNumber = self.create_sub_element(ET, InvoiceAdd, "RefNumber", today,8 ) # self.DN['DNRefNum'], 8 ) + ShipDate = self.create_sub_element(ET, InvoiceAdd, "ShipDate", today,8) # self.DN['TxnDate'], 8 ) + # Memo = self.create_sub_element(ET, InvoiceAdd, "Memo", self.DN['Memo'], 10 ) + disc_amount = 0 + for soidx, salesorder in enumerate(self.InvoiceList): + SOTxnId = salesorder['TxnID'] + disc_amount+=int(salesorder['Disc_Amount']) + print(f'create_invoiceadd_QBXML->SOTxnId: {SOTxnId}') + for itemline in salesorder['InvoiceLineRet']: + # if 'DNQuantity' in itemline: + InvoiceLineAdd = self.create_sub_element(ET, InvoiceAdd, "InvoiceLineAdd", "\n ", 10 ) + # Quantity = self.create_sub_element(ET, InvoiceLineAdd, "Quantity", str(itemline['DNQuantity'] ), 12 ) + # Quantity = self.create_sub_element(ET, InvoiceLineAdd, "Quantity", str(itemline['BackOrdered'] ), 12 ) + # UnitOfMeasure = self.create_sub_element(ET, InvoiceLineAdd, "UnitOfMeasure", str(itemline['UOM']), 12 ) + LinkToTxn = self.create_sub_element(ET, InvoiceLineAdd, "LinkToTxn", "\n ", 10 ) + TxnID = self.create_sub_element(ET, LinkToTxn, "TxnID", SOTxnId,14 ) + TxnLineID = self.create_sub_element(ET, LinkToTxn, "TxnLineID", itemline['TxnLineID'], 12 ) + if soidx == len(self.InvoiceList)-1: #last list then set the'400_Sales_discount' + print(f'disc_amount:{format(disc_amount, ".2f")}') + if disc_amount != 0: + + # disc_amount=format(disc_amount, ".2f") + InvoiceLineAdd = self.create_sub_element(ET, InvoiceAdd, "InvoiceLineAdd", "\n ", 10 ) + ItemRef = self.create_sub_element(ET, InvoiceLineAdd, "ItemRef", "\n ", 12) + ItemFullName = self.create_sub_element(ET, ItemRef, "FullName", "400_Sales Discount", 12) + ItemRate = self.create_sub_element(ET, InvoiceLineAdd, "Rate", str(disc_amount), 10) + + mydata = ET.tostring(root, encoding = "unicode") + + qbxml_query = """\n""" + qbxml_query = qbxml_query + """""" + qbxml_query = qbxml_query + "\n" + mydata + # print(f'create_invoiceadd_QBXML->Create_Invoiceadd_QBXML: {qbxml_query}') + # print(f"replyfrom qbxml:{self.connect_to_quickbooks(qbxml_query)}") + + return qbxml_query + + + def connect_to_quickbooks(self, qbxml_query): + # Connect to Quickbooks + # sessionManager = win32com.client.Dispatch("QBXMLRP2.RequestProcessor") + # sessionManager.OpenConnection('', 'DASA') + # enumfodnc= win32com.client.Dispatch('QBXMLRP2.RequestProcessor') + # print(enumfodnc) + # print(enumfodnc.qbFileOpenDoNotCare) + sessionManager = win32com.client.Dispatch("QBXMLRP2.RequestProcessor") + sessionManager.OpenConnection('', 'DASA2') + # ticket = sessionManager.BeginSession("z:\\DBW Bogor.qbw", 2) + + ticket = sessionManager.BeginSession("", 2) + + # Send query and receive response + 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 + + def __str__(self, *args) -> str: + # return str(self._get_datarow(self.connect_to_quickbooks(self.create_QBXML()))) + # print("__str__") + return str(self.get_sales_order_header()) + # return "hello" + + def get_sales_order_header(self, *args): + return self._get_sales_order_header(self.connect_to_quickbooks(self.create_QBXML())) + + def status_ok(self, QBXML): #for InvoiceAddRS + + tree = ET.fromstring(QBXML) + + GSRQRs = tree.find(".//InvoiceQueryRs") + # print(f"GSRQRs:{GSRQRs}") + status_code = GSRQRs.attrib #.get('statusCode') + # print(GSRQRs.attrib) + # print(GSRQRs.attrib['statusCode']) + status=GSRQRs.attrib.get('statusMessage') + + print(f'status={status}') + if 'OK' in status: + return True, status_code + else: + return False, status_code + + + def _get_sales_order_header(self, response_string): + print('_get_sales_order_header') + # print(f'responsestring:{response_string}') + QBXML = ET.fromstring(response_string) + datadict = {} + Invoicedict = {} + _Invoicelist = [] + InvoiceRets = QBXML.findall('.//InvoiceRet') + # print(InvoiceRets) + for InvoiceRet in InvoiceRets: + RefNumber = InvoiceRet.find('RefNumber').text + # Memo = InvoiceRet.find('Memo').text + CustomerFullName = InvoiceRet.find('CustomerRef/FullName').text + TxnID = InvoiceRet.find('TxnID').text + TotalAmount = InvoiceRet.find('TotalAmount').text + IsFullyInvoiced = InvoiceRet.find('IsFullyInvoiced').text + IsManuallyClosed = InvoiceRet.find('IsManuallyClosed').text + # print(CustomerFullName, TxnID, TotalAmount) + Invoicedict = {'RefNumber':RefNumber, 'CustomerFullName':CustomerFullName, 'TxnID':TxnID, + 'TotalAmount':TotalAmount, 'IsFullyInvoiced':IsFullyInvoiced, 'IsManuallyClosed':IsManuallyClosed, 'InvoiceLineRet':[]} + InvoiceLineRet = InvoiceRet.findall('InvoiceLineRet') + # print(len(InvoiceLineRet)) + if len(InvoiceLineRet) > 0: + disc_amount=0 + for InvoiceLineRet in InvoiceLineRet: + TxnLineID = InvoiceLineRet.find('TxnLineID').text + ItemFullName = InvoiceLineRet.find('ItemRef/FullName').text + Quantity = InvoiceLineRet.find('Quantity').text + UnitOfMeasure = InvoiceLineRet.find('UnitOfMeasure').text + Rate = float(InvoiceLineRet.find('Rate').text) + + Amount = float(InvoiceLineRet.find('Amount').text) + # if self.SPPriceLevelName: + if self.Customer[2]: + # print(Rate, (Rate - self._df_price_level.loc[(self._df_price_level['FullName']==ItemFullName) & (self._df_price_level['PriceLevelName']==self.SPPriceLevelName)].values.tolist()[0][2])) + print(Quantity, Rate, (Rate - self._df_price_level.loc[(self._df_price_level['FullName']==ItemFullName) & (self._df_price_level['PriceLevelName']==self.Customer[2])].values.tolist()[0][2])) + disc_amount += float(Quantity) * (Rate-self._df_price_level.loc[(self._df_price_level['FullName']==ItemFullName) & (self._df_price_level['PriceLevelName']==self.Customer[2])].values.tolist()[0][2]) + # disc_amount+=float(Quantity)*2000 #testing only + Invoiced = InvoiceLineRet.find('Invoiced').text + LineIsManuallyClosed = InvoiceLineRet.find('IsManuallyClosed').text + # print(TxnLineID, ItemFullName) + BackOrdered = float(Quantity) - float(Invoiced) + if BackOrdered: + InvoiceLinedict = {'TxnLineID':TxnLineID, + 'ItemFullName':ItemFullName, + 'Quantity':Quantity, + 'UOM':UnitOfMeasure, + 'Rate':Rate, + 'Amount':Amount, + 'BackOrdered':BackOrdered, + 'Invoiced':Invoiced, + 'LineIsManuallyClosed':LineIsManuallyClosed, + } + Invoicedict['InvoiceLineRet'].append(InvoiceLinedict) + Invoicedict['Disc_Amount']=disc_amount + _Invoicelist.append(Invoicedict) + # print(_Invoicelist) + self.InvoiceList=_Invoicelist + # print(f'_get_sales_order_header->Salesorderlist: {self.InvoiceList}') + return self.InvoiceList + + def addDiscountToInvoiceList(self, _dict:dict): + print("addDiscountToInvoiceList") + + + def addDNQtyToInvoiceList(self, _dict:dict): + _bolfoundrefnum=False + _bol_dictisadded=False + Error_msg = None + for poidx, _po in enumerate(self.InvoiceList): + if _po['RefNumber']==_dict['RefNum']: + _bolfoundrefnum=True + if len(_po['InvoiceLineRet'])>0: + for polineidx, _poline in enumerate(_po['InvoiceLineRet']): + pass + if _poline['ItemFullName']==_dict['FullName']: + if _poline['UOM'].upper()==_dict['UOM'].upper(): + # first do UOM in _dict convert treatment + QuantityIn_dict = _dict['Quantity'] + if _dict['UOM'].upper().startswith('ROLL_'): + print(f"addDNQtyToInvoiceList->DNqty:{_dict['Quantity']}, Roll_:{_dict['UOM'].split('_')[1]}") + QuantityIn_dict = _dict['Quantity'] * int(_dict['UOM'].split("_")[1]) + pass + elif _dict['UOM'].upper() == 'BOX' and _dict['Item No'].upper() == "CUTTER": + print("addDNQtyToInvoiceList->cutter") + elif _dict['UOM'].upper() == 'BOX' and (_dict['Item No'].upper().startswith("EB-") or _dict['Item No'].upper().startswith("TA-")): + print("addDNQtyToInvoiceList->LEM") + if _dict['Item No'].split("-")[1].endswith("1006"): + QuantityIn_dict = QuantityIn_dict * 12 + elif _dict['Item No'].split("-")[1].endswith("1025"): + QuantityIn_dict = QuantityIn_dict * 6 + elif _dict['Item No'].split("-")[1].endswith("1100"): + pass + print("1100 lem") + elif _dict['UOM'].upper() == 'BOX' and (_dict['Item No'].upper().startswith("TL-") or _dict['Item No'].upper().startswith("TFL-")): + print("addDNQtyToInvoiceList->Lock") + QuantityIn_dict = QuantityIn_dict * 20 + elif _dict['UOM'].upper() == 'BOX' and _dict['Item No'].upper() == "EDG-TRIMMER": + QuantityIn_dict = QuantityIn_dict * 12 #coz box of 12 + + + if _poline['BackOrdered']>=QuantityIn_dict: + self.InvoiceList[poidx]['InvoiceLineRet'][polineidx]['DNQuantity']=float(QuantityIn_dict) + _bol_dictisadded = True + else: + print(f"{_poline['ItemFullName']} BackOrdered < Qty in DN {_poline['BackOrdered']}<{QuantityIn_dict}") + Error_msg = f"BackOrdered < Qty in DN {_poline['BackOrdered']}<{QuantityIn_dict}" + else: + # print(f"UOM different {_poline['UOM']} <> {_dict['UOM']}") + Error_msg = f"UOM different {_poline['UOM']} <> {_dict['UOM']}" + else: + # print("errorpoline <>DN") + Error_msg = f"poline[ItemFullName] <> DN[FullName]; {_poline['ItemFullName']} <> {_dict['FullName']}, maybe there are 2 same namefromtaco in QB" + else: + pass + # print(f"this refnum {_dict['RefNum']} have no QB PO Return Line") + Error_msg = f"this refnum {_dict['RefNum']} have no QB PO Return Line" + + # print (_bol_dictisadded, Error_msg) + return _bol_dictisadded, Error_msg + + + def prepareInvoice(self, df:pd.DataFrame = None): + # print(df) + _bolAllDNareOk = True + _notindflist=[] + _yescounter = 0 + _nocounter = 0 + if df is not None: + _dflist = df.to_dict('records') + # print(_dflist) + + # else: + # _dflist = self.dfDN.to_dict('records') + # print(self.dfDN) + # print(f'_dflist:{_dflist}') + for idx, xdf in enumerate(_dflist): + _boladdDN, _Errormsg = self.addDNQtyToInvoiceList(xdf) + # print(f'prepareInvoice->_Errormsg:{_Errormsg}') + if _boladdDN: + _dflist[idx]['ADDED']=True + elif _Errormsg: + _dflist[idx]['ERROR']=_Errormsg + for xdf in (_dflist): + if 'ADDED' not in xdf: + # print (f"prepareInvoice->not added: {xdf['Item No']}") + print (f"prepareInvoice->not added: {xdf}") + + _notindflist.append(xdf) + _nocounter+=1 + _bolAllDNareOk = False + else: + print (f"ADDED: {xdf['Item No']}") + + print(f'{len(_dflist) - _nocounter} of {len(_dflist)} are added') + return _bolAllDNareOk, _notindflist + + + def validate_date(self, date_text): + if date_text is None: + return None + try: + return datetime.datetime.strptime(date_text, '%Y-%m-%d').date() + except ValueError: + return None + # raise ValueError("Incorrect data format, should be YYYY-MM-DD") + + def get_ext_doc_no_list(self, dndict=None): + if dndict: + dnlist = dndict['lines'] + else: + dnlist = self.DN + df = pd.DataFrame(dnlist) + # print(df) + df['RefNum']= df['No.SO/Ext.Doc.No.'].apply(lambda x: "L"+ x.split("L-")[1]) + # print(df) + ext_doc_no=df['RefNum'].unique().tolist() + if len(ext_doc_no)>0: + return df, ext_doc_no + else: + return df, None + + + def get_last_refnumber(self, response_string=None): + if not response_string: + response_string = self.connect_to_quickbooks(self.create_QBXML()) + status, status_msg = self.status_ok(response_string) + if not status: + return None + QBXML = ET.fromstring(response_string) + _OpenInvoicelist = [] + InvoiceRets = QBXML.findall('.//RefNumber') + print(f'InvoiceRets count:{len(InvoiceRets)}') + refnumbers = [] + for InvoiceRet in InvoiceRets: + print(InvoiceRet, InvoiceRet.text) + refnumbers.append(InvoiceRet.text) + + # IsFullyInvoiced = InvoiceRet.find('IsFullyInvoiced').text + # IsManuallyClosed = InvoiceRet.find('IsManuallyClosed').text + # if IsFullyInvoiced=='false' and IsManuallyClosed=='false': + # txndate = InvoiceRet.find('TxnDate').text + # totalamount = InvoiceRet.find('TotalAmount').text + # refnumber = InvoiceRet.find('RefNumber').text + + # _OpenInvoicelist.append([InvoiceRet.find('TxnID').text, txndate, totalamount, refnumber, ]) + # # _OpenInvoicelist.append(InvoiceRet.find('TxnID').text) + # # RefNumber = InvoiceRet.find('RefNumber').text + # # Memo = InvoiceRet.find('Memo').text + # # CustomerFullName = InvoiceRet.find('CustomerRef/FullName').text + # # TxnID = InvoiceRet.find('TxnID').text + # # TotalAmount = InvoiceRet.find('TotalAmount').text + # # IsFullyReceived = InvoiceRet.find('IsFullyReceived').text + # # IsManuallyClosed = InvoiceRet.find('IsManuallyClosed').text + print(refnumbers) + refnumbers.sort() + return refnumbers[-1] + + def get_open_so(self, response_string=None): + if not response_string: + response_string = self.connect_to_quickbooks(self.create_QBXML()) + + QBXML = ET.fromstring(response_string) + _OpenInvoicelist = [] + InvoiceRets = QBXML.findall('.//InvoiceRet') + # print(f'InvoiceRets count:{len(InvoiceRets)}') + for InvoiceRet in InvoiceRets: + IsFullyInvoiced = InvoiceRet.find('IsFullyInvoiced').text + IsManuallyClosed = InvoiceRet.find('IsManuallyClosed').text + if IsFullyInvoiced=='false' and IsManuallyClosed=='false': + txndate = InvoiceRet.find('TxnDate').text + totalamount = InvoiceRet.find('TotalAmount').text + refnumber = InvoiceRet.find('RefNumber').text + + _OpenInvoicelist.append([InvoiceRet.find('TxnID').text, txndate, totalamount, refnumber, ]) + # _OpenInvoicelist.append(InvoiceRet.find('TxnID').text) + # RefNumber = InvoiceRet.find('RefNumber').text + # Memo = InvoiceRet.find('Memo').text + # CustomerFullName = InvoiceRet.find('CustomerRef/FullName').text + # TxnID = InvoiceRet.find('TxnID').text + # TotalAmount = InvoiceRet.find('TotalAmount').text + # IsFullyReceived = InvoiceRet.find('IsFullyReceived').text + # IsManuallyClosed = InvoiceRet.find('IsManuallyClosed').text + # print(_OpenInvoicelist) + return _OpenInvoicelist + + def create_open_sales_order_qbxml(self, txnid:list, IncludeLineItems=True): + root = ET.Element("QBXML") + root.tail = "\n" + root.text = "\n " + QBXMLMsgsRq = ET.SubElement(root, "QBXMLMsgsRq") + # QBXMLMsgsRq.set("onError", "continueOnError") + QBXMLMsgsRq.set("onError", "stopOnError") + QBXMLMsgsRq.tail = "\n" + QBXMLMsgsRq.text = "\n " + InvoiceQueryRq = self.create_sub_element(ET, QBXMLMsgsRq, "InvoiceQueryRq","\n " ) + if len(txnid)>0: + for x in txnid: + TxnID = self.create_sub_element(ET, InvoiceQueryRq, "TxnID", x, 6 ) + else: + return None + if IncludeLineItems: + IncludeLineItems = self.create_sub_element(ET, InvoiceQueryRq, "IncludeLineItems", 'true', 4) + # if len(self.IncludeRetElement)>0: + # for x in self.IncludeRetElement: + # IncludeRetElement = self.create_sub_element(ET, InvoiceQueryRq, "IncludeRetElement", x, 4) + mydata = ET.tostring(root, encoding = "unicode") + + qbxml_query = """\n""" + qbxml_query = qbxml_query + """""" + qbxml_query = qbxml_query + "\n" + mydata + print(f'create_open_sale_order_qbxml->qbxml_query: {qbxml_query}') + return qbxml_query + + + def get_open_sales_order(self, txnlist:list): + print(f'txnid: {txnlist}', type(txnlist)) + txnid = [] + for x in txnlist: + if isinstance(x, list): + txnid.append(x[0]) + else: + txnid.append(x) + break + # txnid = [x[0] if isinstance(x, list) else x for x in txnid ] + print(txnid) + if txnid: + # print(self.connect_to_quickbooks(self.create_open_sales_order_qbxml(txnid))) + return self._get_sales_order_header(self.connect_to_quickbooks(self.create_open_sales_order_qbxml(txnid))) + else: + print("There is No Open Invoice Order") + return None + return None + +print('### InvoiceQuery ###') +if __name__ == '__main__': + starttime = timeit.default_timer() + # ini=InvoiceQuery(FullName= '999 HPL', IncludeRetElement = ['TxnID', 'TimeCreated', 'TimeModified','TxnNumber', 'CustomerRef', 'IsManuallyClosed', 'IsFullyInvoiced']) + + # ini=InvoiceQuery(FullName= 'YSM Interior', IncludeRetElement = ['TxnID', 'TimeCreated', 'TimeModified','TxnNumber', 'CustomerRef', 'TxnDate', 'RefNumber', 'IsManuallyClosed', 'IsFullyInvoiced','TotalAmount']) + ini=InvoiceQuery(FullName= 'Abadi Serpong', IncludeRetElement = 'RefNumber', ]) + # iya = ini.create_customerquery_QBXML() #pakai excel saja lebih cepat + # print(iya) + print(f'createQBXML:{ini.create_QBXML()}') + response_string = ini.connect_to_quickbooks(ini.create_QBXML()) + print(f'response_string:{response_string}') + # response_string = None + last_refnumber = ini.get_last_refnumber(response_string) + print(f'open sales orders:{last_refnumber};type:{type(last_refnumber)}') + # print('23a'+1) + # if open_sales_orders: + + # itu = ini.get_open_sales_order(open_sales_orders) + # # print(itu) + # print(f'get_open_sales_order:{itu}') + # if itu: + + # print(ini.create_invoiceadd_QBXML()) + + # # ini.connect_to_quickbooks(ini.create_invoiceadd_QBXML()) + + print("The time difference is :", timeit.default_timer() - starttime) \ No newline at end of file diff --git a/SO_to_Inv/PriceLevelQuery.py b/SO_to_Inv/PriceLevelQuery.py new file mode 100644 index 0000000..0f2d770 --- /dev/null +++ b/SO_to_Inv/PriceLevelQuery.py @@ -0,0 +1,444 @@ +import xml.etree.ElementTree as ET +import win32com.client +import xmltodict +import pprint +import datetime +import pandas as pd +from datetime import date +import timeit + +class PriceLevelQuery: + def __init__(self, **kwargs) -> None: + # print(f'kwargs:{kwargs}') + # print(args) + # self.SalesOrderList=[] + self.IncludeLineItems = kwargs['IncludeLineItems'] if 'IncludeLineItems' in kwargs else 'true' + 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 and isinstance(kwargs['FullName'], list) else [] + self.NameFilter = kwargs['NameFilter'] if 'NameFilter' in kwargs else None + self.ItemRef = kwargs['ItemRef'] if 'ItemRef' in kwargs else None + + def create_sub_element(self, ET, parentNode, thisNode, text="\n", whiteSpace = 0, attrib =None): + if type(attrib) is not dict: + attrib = {} + ele = ET.SubElement(parentNode, thisNode) + for x in attrib: + ele.set(x, attrib[x]) + ele.text = text + tail = "\n" + for x in range(whiteSpace): + tail = tail + " " + ele.tail = tail + return ele + + def create_QBXML(self): + root = ET.Element("QBXML") + root.tail = "\n" + root.text = "\n " + QBXMLMsgsRq = ET.SubElement(root, "QBXMLMsgsRq") + # QBXMLMsgsRq.set("onError", "continueOnError") + QBXMLMsgsRq.set("onError", "stopOnError") + QBXMLMsgsRq.tail = "\n" + QBXMLMsgsRq.text = "\n " + PriceLevelQueryRq = self.create_sub_element(ET, QBXMLMsgsRq, "PriceLevelQueryRq","\n " ) + if len(self.FullName)>0: + for x in self.FullName: + FullName = self.create_sub_element(ET, PriceLevelQueryRq, "FullName", x, 6) + if self.NameFilter: + NameFilter = self.create_sub_element(ET, PriceLevelQueryRq, "NameFilter","\n ", 6) + MatchCriterion = self.create_sub_element(ET, NameFilter, "MatchCriterion", "StartsWith") + Name = self.create_sub_element(ET, NameFilter, "Name", self.NameFilter) + if self.ItemRef: + ItemRef = self.create_sub_element(ET, PriceLevelQueryRq, "ItemRef", "\n ") + ItemRefFullName = self.create_sub_element(ET, ItemRef, "FullName", self.ItemRef) + + if len(self.IncludeRetElement)>0: + for x in self.IncludeRetElement: + IncludeRetElement = self.create_sub_element(ET, PriceLevelQueryRq, "IncludeRetElement", x, 4) + mydata = ET.tostring(root, encoding = "unicode") + + qbxml_query = """\n""" + qbxml_query = qbxml_query + """""" + qbxml_query = qbxml_query + "\n" + mydata + # print(f'create_QBXML->qbxml_query: {qbxml_query}') + return qbxml_query + + def create_invoiceadd_QBXML(self): + root = ET.Element("QBXML") + root.tail = "\n" + root.text = "\n " + QBXMLMsgsRq = ET.SubElement(root, "QBXMLMsgsRq") + QBXMLMsgsRq.set("onError", "stopOnError") + QBXMLMsgsRq.tail = "\n" + QBXMLMsgsRq.text = "\n " + InvoiceAddRq = self.create_sub_element(ET, QBXMLMsgsRq, "InvoiceAddRq", "\n ",2 ) + InvoiceAdd = self.create_sub_element(ET, InvoiceAddRq, "InvoiceAdd", "\n ",4 ) + CustomerRef = self.create_sub_element(ET, InvoiceAdd, "CustomerRef", "\n ",8 ) + FullName = self.create_sub_element(ET, CustomerRef, "FullName", self.SalesOrderList[1]['CustomerFullName'], 8 ) + TemplateRef = self.create_sub_element(ET, InvoiceAdd, "TemplateRef", "\n ", 8 ) + tempFullName = self.create_sub_element(ET, TemplateRef, "FullName", "DBW Invoice (11%)", 8 ) + today = str(date.today()) + TxnDate = self.create_sub_element(ET, InvoiceAdd, "TxnDate", today,8) # self.DN['TxnDate'], 8 ) + + RefNumber = self.create_sub_element(ET, InvoiceAdd, "RefNumber", today,8 ) # self.DN['DNRefNum'], 8 ) + ShipDate = self.create_sub_element(ET, InvoiceAdd, "ShipDate", today,8) # self.DN['TxnDate'], 8 ) + # Memo = self.create_sub_element(ET, InvoiceAdd, "Memo", self.DN['Memo'], 10 ) + disc_amount = 0 + for soidx, salesorder in enumerate(self.SalesOrderList): + SOTxnId = salesorder['TxnID'] + disc_amount+=int(salesorder['Disc_Amount']) + print(f'create_invoiceadd_QBXML->SOTxnId: {SOTxnId}') + for itemline in salesorder['SalesOrderLineRet']: + # if 'DNQuantity' in itemline: + InvoiceLineAdd = self.create_sub_element(ET, InvoiceAdd, "InvoiceLineAdd", "\n ", 10 ) + # Quantity = self.create_sub_element(ET, InvoiceLineAdd, "Quantity", str(itemline['DNQuantity'] ), 12 ) + # Quantity = self.create_sub_element(ET, InvoiceLineAdd, "Quantity", str(itemline['BackOrdered'] ), 12 ) + # UnitOfMeasure = self.create_sub_element(ET, InvoiceLineAdd, "UnitOfMeasure", str(itemline['UOM']), 12 ) + LinkToTxn = self.create_sub_element(ET, InvoiceLineAdd, "LinkToTxn", "\n ", 10 ) + TxnID = self.create_sub_element(ET, LinkToTxn, "TxnID", SOTxnId,14 ) + TxnLineID = self.create_sub_element(ET, LinkToTxn, "TxnLineID", itemline['TxnLineID'], 12 ) + if soidx == len(self.SalesOrderList)-1: #last list then set the'400_Sales_discount' + print(f'disc_amount:{format(disc_amount, ".2f")}') + # disc_amount=format(disc_amount, ".2f") + InvoiceLineAdd = self.create_sub_element(ET, InvoiceAdd, "InvoiceLineAdd", "\n ", 10 ) + ItemRef = self.create_sub_element(ET, InvoiceLineAdd, "ItemRef", "\n ", 12) + ItemFullName = self.create_sub_element(ET, ItemRef, "FullName", "400_Sales Discount", 12) + ItemRate = self.create_sub_element(ET, InvoiceLineAdd, "Rate", str(disc_amount), 10) + + mydata = ET.tostring(root, encoding = "unicode") + + qbxml_query = """\n""" + qbxml_query = qbxml_query + """""" + qbxml_query = qbxml_query + "\n" + mydata + print(f'create_invoiceadd_QBXML->Create_Invoiceadd_QBXML: {qbxml_query}') + # print(f"replyfrom qbxml:{self.connect_to_quickbooks(qbxml_query)}") + + return qbxml_query + + + def connect_to_quickbooks(self, qbxml_query): + # Connect to Quickbooks + # sessionManager = win32com.client.Dispatch("QBXMLRP2.RequestProcessor") + # sessionManager.OpenConnection('', 'DASA') + # enumfodnc= win32com.client.Dispatch('QBXMLRP2.RequestProcessor') + # print(enumfodnc) + # print(enumfodnc.qbFileOpenDoNotCare) + sessionManager = win32com.client.Dispatch("QBXMLRP2.RequestProcessor") + sessionManager.OpenConnection('', 'DASA2') + # ticket = sessionManager.BeginSession("z:\\DBW Bogor.qbw", 2) + + ticket = sessionManager.BeginSession("", 2) + + # Send query and receive response + 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 + + def __str__(self, *args) -> str: + # return str(self._get_datarow(self.connect_to_quickbooks(self.create_QBXML()))) + # print("__str__") + return str(self.get_sales_order_header()) + # return "hello" + + def get_sales_order_header(self, *args): + return self. _get_sales_order_header(self.connect_to_quickbooks(self.create_QBXML())) + + def status_ok(self, QBXML): #for InvoiceAddRS + + tree = ET.fromstring(QBXML) + + GSRQRs = tree.find(".//PriceLevelQueryRs") + # print(f"GSRQRs:{GSRQRs}") + status_code = GSRQRs.attrib #.get('statusCode') + # print(GSRQRs.attrib) + # print(GSRQRs.attrib['statusCode']) + status=GSRQRs.attrib.get('statusMessage') + + print(f'status={status}') + if 'OK' in status: + return True, status_code + else: + return False, status_code + + + def _get_sales_order_header(self, response_string): + print('_get_sales_order_header') + # print(f'responsestring:{response_string}') + QBXML = ET.fromstring(response_string) + datadict = {} + SalesOrderdict = {} + _SalesOrderlist = [] + SalesOrderRets = QBXML.findall('.//SalesOrderRet') + # print(SalesOrderRets) + for SalesOrderRet in SalesOrderRets: + RefNumber = SalesOrderRet.find('RefNumber').text + # Memo = SalesOrderRet.find('Memo').text + CustomerFullName = SalesOrderRet.find('CustomerRef/FullName').text + TxnID = SalesOrderRet.find('TxnID').text + TotalAmount = SalesOrderRet.find('TotalAmount').text + IsFullyInvoiced = SalesOrderRet.find('IsFullyInvoiced').text + IsManuallyClosed = SalesOrderRet.find('IsManuallyClosed').text + # print(CustomerFullName, TxnID, TotalAmount) + SalesOrderdict = {'RefNumber':RefNumber, 'CustomerFullName':CustomerFullName, 'TxnID':TxnID, + 'TotalAmount':TotalAmount, 'IsFullyInvoiced':IsFullyInvoiced, 'IsManuallyClosed':IsManuallyClosed, 'SalesOrderLineRet':[]} + SalesOrderLineRet = SalesOrderRet.findall('SalesOrderLineRet') + # print(len(SalesOrderLineRet)) + if len(SalesOrderLineRet) > 0: + disc_amount=0 + for SalesOrderLineRet in SalesOrderLineRet: + TxnLineID = SalesOrderLineRet.find('TxnLineID').text + ItemFullName = SalesOrderLineRet.find('ItemRef/FullName').text + Quantity = SalesOrderLineRet.find('Quantity').text + UnitOfMeasure = SalesOrderLineRet.find('UnitOfMeasure').text + Rate = float(SalesOrderLineRet.find('Rate').text) + + Amount = float(SalesOrderLineRet.find('Amount').text) + disc_amount+=float(Quantity)*2000 #testing only + Invoiced = SalesOrderLineRet.find('Invoiced').text + LineIsManuallyClosed = SalesOrderLineRet.find('IsManuallyClosed').text + # print(TxnLineID, ItemFullName) + BackOrdered = float(Quantity) - float(Invoiced) + if BackOrdered: + SalesOrderLinedict = {'TxnLineID':TxnLineID, + 'ItemFullName':ItemFullName, + 'Quantity':Quantity, + 'UOM':UnitOfMeasure, + 'Rate':Rate, + 'Amount':Amount, + 'BackOrdered':BackOrdered, + 'Invoiced':Invoiced, + 'LineIsManuallyClosed':LineIsManuallyClosed, + } + SalesOrderdict['SalesOrderLineRet'].append(SalesOrderLinedict) + SalesOrderdict['Disc_Amount']=disc_amount + _SalesOrderlist.append(SalesOrderdict) + # print(_SalesOrderlist) + self.SalesOrderList=_SalesOrderlist + # print(f'_get_sales_order_header->Salesorderlist: {self.SalesOrderList}') + return self.SalesOrderList + + def addDiscountToInvoiceList(self, _dict:dict): + print("addDiscountToInvoiceList") + + + def addDNQtyToSalesOrderList(self, _dict:dict): + _bolfoundrefnum=False + _bol_dictisadded=False + Error_msg = None + for poidx, _po in enumerate(self.SalesOrderList): + if _po['RefNumber']==_dict['RefNum']: + _bolfoundrefnum=True + if len(_po['SalesOrderLineRet'])>0: + for polineidx, _poline in enumerate(_po['SalesOrderLineRet']): + pass + if _poline['ItemFullName']==_dict['FullName']: + if _poline['UOM'].upper()==_dict['UOM'].upper(): + # first do UOM in _dict convert treatment + QuantityIn_dict = _dict['Quantity'] + if _dict['UOM'].upper().startswith('ROLL_'): + print(f"addDNQtyToSalesOrderList->DNqty:{_dict['Quantity']}, Roll_:{_dict['UOM'].split('_')[1]}") + QuantityIn_dict = _dict['Quantity'] * int(_dict['UOM'].split("_")[1]) + pass + elif _dict['UOM'].upper() == 'BOX' and _dict['Item No'].upper() == "CUTTER": + print("addDNQtyToSalesOrderList->cutter") + elif _dict['UOM'].upper() == 'BOX' and (_dict['Item No'].upper().startswith("EB-") or _dict['Item No'].upper().startswith("TA-")): + print("addDNQtyToSalesOrderList->LEM") + if _dict['Item No'].split("-")[1].endswith("1006"): + QuantityIn_dict = QuantityIn_dict * 12 + elif _dict['Item No'].split("-")[1].endswith("1025"): + QuantityIn_dict = QuantityIn_dict * 6 + elif _dict['Item No'].split("-")[1].endswith("1100"): + pass + print("1100 lem") + elif _dict['UOM'].upper() == 'BOX' and (_dict['Item No'].upper().startswith("TL-") or _dict['Item No'].upper().startswith("TFL-")): + print("addDNQtyToSalesOrderList->Lock") + QuantityIn_dict = QuantityIn_dict * 20 + elif _dict['UOM'].upper() == 'BOX' and _dict['Item No'].upper() == "EDG-TRIMMER": + QuantityIn_dict = QuantityIn_dict * 12 #coz box of 12 + + + if _poline['BackOrdered']>=QuantityIn_dict: + self.SalesOrderList[poidx]['SalesOrderLineRet'][polineidx]['DNQuantity']=float(QuantityIn_dict) + _bol_dictisadded = True + else: + print(f"{_poline['ItemFullName']} BackOrdered < Qty in DN {_poline['BackOrdered']}<{QuantityIn_dict}") + Error_msg = f"BackOrdered < Qty in DN {_poline['BackOrdered']}<{QuantityIn_dict}" + else: + # print(f"UOM different {_poline['UOM']} <> {_dict['UOM']}") + Error_msg = f"UOM different {_poline['UOM']} <> {_dict['UOM']}" + else: + # print("errorpoline <>DN") + Error_msg = f"poline[ItemFullName] <> DN[FullName]; {_poline['ItemFullName']} <> {_dict['FullName']}, maybe there are 2 same namefromtaco in QB" + else: + pass + # print(f"this refnum {_dict['RefNum']} have no QB PO Return Line") + Error_msg = f"this refnum {_dict['RefNum']} have no QB PO Return Line" + + # print (_bol_dictisadded, Error_msg) + return _bol_dictisadded, Error_msg + + + def prepareInvoice(self, df:pd.DataFrame = None): + # print(df) + _bolAllDNareOk = True + _notindflist=[] + _yescounter = 0 + _nocounter = 0 + if df is not None: + _dflist = df.to_dict('records') + # print(_dflist) + + else: + _dflist = self.dfDN.to_dict('records') + # print(self.dfDN) + # print(f'_dflist:{_dflist}') + for idx, xdf in enumerate(_dflist): + _boladdDN, _Errormsg = self.addDNQtyToSalesOrderList(xdf) + # print(f'prepareInvoice->_Errormsg:{_Errormsg}') + if _boladdDN: + _dflist[idx]['ADDED']=True + elif _Errormsg: + _dflist[idx]['ERROR']=_Errormsg + for xdf in (_dflist): + if 'ADDED' not in xdf: + # print (f"prepareInvoice->not added: {xdf['Item No']}") + print (f"prepareInvoice->not added: {xdf}") + + _notindflist.append(xdf) + _nocounter+=1 + _bolAllDNareOk = False + else: + print (f"ADDED: {xdf['Item No']}") + + print(f'{len(_dflist) - _nocounter} of {len(_dflist)} are added') + return _bolAllDNareOk, _notindflist + + + def validate_date(self, date_text): + if date_text is None: + return None + try: + return datetime.datetime.strptime(date_text, '%Y-%m-%d').date() + except ValueError: + return None + # raise ValueError("Incorrect data format, should be YYYY-MM-DD") + + def get_ext_doc_no_list(self, dndict=None): + if dndict: + dnlist = dndict['lines'] + else: + dnlist = self.DN + df = pd.DataFrame(dnlist) + # print(df) + df['RefNum']= df['No.SO/Ext.Doc.No.'].apply(lambda x: "L"+ x.split("L-")[1]) + # print(df) + ext_doc_no=df['RefNum'].unique().tolist() + if len(ext_doc_no)>0: + return df, ext_doc_no + else: + return df, None + + def get_pricelevel(self, response_string=None): + if not response_string: + response_string = self.connect_to_quickbooks(self.create_QBXML()) + statusok, status = self.status_ok(response_string) + if statusok: + QBXML = ET.fromstring(response_string) + PriceLevellist = {} + fullnamelist = [] + custompricelist =[] + PriceLevelRets = QBXML.findall('.//PriceLevelRet') + PriceLevelNamelist = [] + # PriceLevelName = QBXML.find('.//Name').text + + # print(f'PriceLevelPerItemRets count:{len(PriceLevelPerItemRets)}') + for PriceLevelRet in PriceLevelRets: + PriceLevelPerItemRets = PriceLevelRet.findall('.//PriceLevelPerItemRet') + PriceLevelName = PriceLevelRet.find('.//Name').text + print(f'pricelevelname:{PriceLevelName}') + for PriceLevelPerItemRet in PriceLevelPerItemRets: + FullName = PriceLevelPerItemRet.find('.//FullName').text + fullnamelist.append(FullName) + CustomPrice = PriceLevelPerItemRet.find('CustomPrice').text + custompricelist.append(CustomPrice) + PriceLevelNamelist.append(PriceLevelName) + zip(fullnamelist, custompricelist) + PriceLevellist['PriceLevelName'] = PriceLevelNamelist + PriceLevellist['FullName']= fullnamelist + PriceLevellist['CustomPrice']= custompricelist + PriceLeveldf = pd.DataFrame.from_dict(PriceLevellist) + PriceLeveldf.sort_values(by=['PriceLevelName', 'FullName'], inplace=True) + PriceLeveldf=PriceLeveldf.reset_index(drop=True) + print(PriceLeveldf) + PriceLeveldf.to_excel('ItemInventory\PriceLevel.xlsx', sheet_name=PriceLevelName, index=False ) + # print(PriceLevellist) + return PriceLevellist + else: + return None + + def create_open_sales_order_qbxml(self, txnid:list, IncludeLineItems=True): + root = ET.Element("QBXML") + root.tail = "\n" + root.text = "\n " + QBXMLMsgsRq = ET.SubElement(root, "QBXMLMsgsRq") + # QBXMLMsgsRq.set("onError", "continueOnError") + QBXMLMsgsRq.set("onError", "stopOnError") + QBXMLMsgsRq.tail = "\n" + QBXMLMsgsRq.text = "\n " + SalesOrderQueryRq = self.create_sub_element(ET, QBXMLMsgsRq, "SalesOrderQueryRq","\n " ) + if len(txnid)>0: + for x in txnid: + TxnID = self.create_sub_element(ET, SalesOrderQueryRq, "TxnID", x, 6 ) + else: + return None + if IncludeLineItems: + IncludeLineItems = self.create_sub_element(ET, SalesOrderQueryRq, "IncludeLineItems", 'true', 4) + # if len(self.IncludeRetElement)>0: + # for x in self.IncludeRetElement: + # IncludeRetElement = self.create_sub_element(ET, SalesOrderQueryRq, "IncludeRetElement", x, 4) + mydata = ET.tostring(root, encoding = "unicode") + + qbxml_query = """\n""" + qbxml_query = qbxml_query + """""" + qbxml_query = qbxml_query + "\n" + mydata + print(f'create_QBXML->qbxml_query: {qbxml_query}') + return qbxml_query + + + def get_open_sales_order(self, txnid:list): + print(f'txnid: {txnid}', type(txnid)) + txnid = [x[0] if isinstance(x, list) else x for x in txnid ] + if txnid: + # print(self.connect_to_quickbooks(self.create_open_sales_order_qbxml(txnid))) + return self._get_sales_order_header(self.connect_to_quickbooks(self.create_open_sales_order_qbxml(txnid))) + else: + print("There is No Open Sales Order") + return None + return None + +print('### PriceLevelQuery ###') +if __name__ == '__main__': + starttime = timeit.default_timer() + # ini=PriceLevelQuery(FullName= '999 HPL', IncludeRetElement = ['TxnID', 'TimeCreated', 'TimeModified','TxnNumber', 'CustomerRef', 'IsManuallyClosed', 'IsFullyInvoiced']) + # ini=PriceLevelQuery(FullName= 'abadi serpong', IncludeRetElement = ['TxnID', 'TimeCreated', 'TimeModified','TxnNumber', 'CustomerRef', 'TxnDate', 'RefNumber', 'IsManuallyClosed', 'IsFullyInvoiced','TotalAmount']) + ini = PriceLevelQuery(FullName = ['t 202202', 'M 202202'], ) + # ini = PriceLevelQuery( ItemRef="ECO:0:ECO-002") + itu = ini.create_QBXML() + print(f'createQBXML->main:{itu}') + response_string = ini.connect_to_quickbooks(itu) + print(f'response_string:{response_string}') + response_string = None + pricelevel = ini.get_pricelevel() + # print(f'pricelevel:{pricelevel}') + + # print(ini.get_open_sales_order(open_sales_orders)) + + # print(ini.create_invoiceadd_QBXML()) + # ini.connect_to_quickbooks(ini.create_invoiceadd_QBXML()) + + print("The time difference is :", timeit.default_timer() - starttime) \ No newline at end of file diff --git a/SO_to_Inv/SalesOrderQuery.xml b/SO_to_Inv/SalesOrderQuery.xml new file mode 100644 index 0000000..df87a04 --- /dev/null +++ b/SO_to_Inv/SalesOrderQuery.xml @@ -0,0 +1,336 @@ + + + + + + + IDTYPE + + STRTYPE + + STRTYPE + + INTTYPE + + + DATETIMETYPE + DATETIMETYPE + + + + + DATETYPE + DATETYPE + + + ENUMTYPE + + + + + + IDTYPE + + STRTYPE + + IDTYPE + + STRTYPE + + + + + + ENUMTYPE + STRTYPE + + + + STRTYPE + STRTYPE + + + + + IDTYPE + + STRTYPE + + + + BOOLTYPE + BOOLTYPE + STRTYPE + GUIDTYPE + + + + + IDTYPE + DATETIMETYPE + DATETIMETYPE + STRTYPE + INTTYPE + + IDTYPE + STRTYPE + + + IDTYPE + STRTYPE + + + IDTYPE + STRTYPE + + DATETYPE + STRTYPE + + STRTYPE + STRTYPE + STRTYPE + STRTYPE + STRTYPE + STRTYPE + STRTYPE + STRTYPE + STRTYPE + STRTYPE + + + STRTYPE + STRTYPE + STRTYPE + STRTYPE + STRTYPE + + + STRTYPE + STRTYPE + STRTYPE + STRTYPE + STRTYPE + STRTYPE + STRTYPE + STRTYPE + STRTYPE + STRTYPE + + + STRTYPE + STRTYPE + STRTYPE + STRTYPE + STRTYPE + + STRTYPE + + IDTYPE + STRTYPE + + DATETYPE + + IDTYPE + STRTYPE + + STRTYPE + DATETYPE + + IDTYPE + STRTYPE + + AMTTYPE + + IDTYPE + STRTYPE + + PERCENTTYPE + AMTTYPE + AMTTYPE + + IDTYPE + STRTYPE + + FLOATTYPE + AMTTYPE + BOOLTYPE + BOOLTYPE + STRTYPE + + IDTYPE + STRTYPE + + BOOLTYPE + BOOLTYPE + BOOLTYPE + + IDTYPE + STRTYPE + + STRTYPE + GUIDTYPE + + IDTYPE + + ENUMTYPE + DATETYPE + STRTYPE + + ENUMTYPE + AMTTYPE + + + + IDTYPE + + IDTYPE + STRTYPE + + STRTYPE + QUANTYPE + STRTYPE + + IDTYPE + STRTYPE + + + PRICETYPE + + PERCENTTYPE + + + IDTYPE + STRTYPE + + AMTTYPE + + IDTYPE + STRTYPE + + + IDTYPE + STRTYPE + + + STRTYPE + + STRTYPE + + STRTYPE + + IDTYPE + STRTYPE + + QUANTYPE + BOOLTYPE + STRTYPE + STRTYPE + + GUIDTYPE + STRTYPE + + ENUMTYPE + STRTYPE + + + + + IDTYPE + + IDTYPE + STRTYPE + + STRTYPE + QUANTYPE + STRTYPE + + IDTYPE + STRTYPE + + BOOLTYPE + AMTTYPE + + IDTYPE + + IDTYPE + STRTYPE + + STRTYPE + QUANTYPE + STRTYPE + + IDTYPE + STRTYPE + + + PRICETYPE + + PERCENTTYPE + + + IDTYPE + STRTYPE + + AMTTYPE + + IDTYPE + STRTYPE + + + IDTYPE + STRTYPE + + + STRTYPE + + STRTYPE + + STRTYPE + + IDTYPE + STRTYPE + + QUANTYPE + BOOLTYPE + STRTYPE + STRTYPE + + GUIDTYPE + STRTYPE + + ENUMTYPE + STRTYPE + + + + GUIDTYPE + STRTYPE + + ENUMTYPE + STRTYPE + + + + + GUIDTYPE + STRTYPE + + ENUMTYPE + STRTYPE + + ENUMTYPE + + + IDTYPE + STRTYPE + STRTYPE + AMTTYPE + + + ENUMTYPE + STRTYPE + STRTYPE + + + + diff --git a/SO_to_Inv/__init__.py b/SO_to_Inv/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/SO_to_Inv/invoiceadd.py b/SO_to_Inv/invoiceadd.py new file mode 100644 index 0000000..9b5650b --- /dev/null +++ b/SO_to_Inv/invoiceadd.py @@ -0,0 +1,417 @@ +import xml.etree.ElementTree as ET +import win32com.client +import xmltodict +import pprint +import datetime +import pandas as pd +from datetime import date +import timeit + +class SalesOrderQuery: + def __init__(self, **kwargs) -> None: + # print(f'kwargs:{kwargs}') + # print(args) + # self.SalesOrderList=[] + self.DN = kwargs['DN'] if 'DN' in kwargs else {} + self.Reuse = kwargs['Reuse'] if 'Reuse' in kwargs else None + + self.SalesOrderList= kwargs['SalesOrderList'] if 'SalesOrderList' in kwargs else [] + + self.SalesOrderType = kwargs['SalesOrderType'] if 'SalesOrderType' in kwargs else 'SalesByCustomerSummary' + self.IncludeLineItems = kwargs['IncludeLineItems'] if 'IncludeLineItems' in kwargs else 'true' + self.IncludeRetElement = kwargs['IncludeRetElement'] if 'IncludeRetElement' in kwargs else [] + self.TxnDateRangeFilter = kwargs['TxnDateRangeFilter'] if 'TxnDateRangeFilter' in kwargs else None + self.DateMacro = None + if 'DateMacro' in kwargs: + if kwargs['DateMacro'] in ['All', 'Today', 'ThisWeek', 'ThisWeekToDate', 'ThisMonth', 'ThisMonthToDate', 'ThisQuarter', 'ThisQuarterToDate', 'ThisYear', 'ThisYearToDate', 'Yesterday', 'LastWeek', 'LastWeekToDate', 'LastMonth', 'LastMonthToDate', 'LastQuarter', 'LastQuarterToDate', 'LastYear', 'LastYearToDate', 'NextWeek', 'NextFourWeeks', 'NextMonth', 'NextQuarter', 'NextYear']: + self.DateMacro = kwargs['DateMacro'] + self.FromTxnDate = self.validate_date(kwargs['FromTxnDate']) if 'FromTxnDate' in kwargs else None + self.ToTxnDate = self.validate_date(kwargs['ToTxnDate']) if 'ToTxnDate' in kwargs else None + self.ReportEntityFilter = kwargs['ReportEntityFilter'] if 'ReportEntityFilter' in kwargs else None + self.FullName = kwargs['FullName'] if 'FullName' in kwargs else None + # print(self.DateMacro, self.TxnDateRangeFilter, self.FromTxnDate, self.ToTxnDate) + # print(self.Reuse) + # if not self.Reuse: + # self.dfDN, self.ext_doc_no_list = self.get_ext_doc_no_list(self.DN) + # self.RefNumber = kwargs['RefNumber'] if 'RefNumber' in kwargs else self.ext_doc_no_list + # self.get_sales_order_header() + + def create_sub_element(self, ET, parentNode, thisNode, text="\n", whiteSpace = 0, attrib =None): + if type(attrib) is not dict: + attrib = {} + ele = ET.SubElement(parentNode, thisNode) + for x in attrib: + ele.set(x, attrib[x]) + ele.text = text + tail = "\n" + for x in range(whiteSpace): + tail = tail + " " + ele.tail = tail + return ele + + def create_QBXML(self): + root = ET.Element("QBXML") + root.tail = "\n" + root.text = "\n " + QBXMLMsgsRq = ET.SubElement(root, "QBXMLMsgsRq") + # QBXMLMsgsRq.set("onError", "continueOnError") + QBXMLMsgsRq.set("onError", "stopOnError") + QBXMLMsgsRq.tail = "\n" + QBXMLMsgsRq.text = "\n " + SalesOrderQueryRq = self.create_sub_element(ET, QBXMLMsgsRq, "SalesOrderQueryRq","\n " ) + # SalesOrderType = self.create_sub_element(ET, SalesOrderQueryRq, 'SalesOrderType', self.SalesOrderType) + if self.FullName: + EntityFilter = self.create_sub_element(ET, SalesOrderQueryRq, 'EntityFilter', "\n ") + FullName = self.create_sub_element(ET, EntityFilter, "FullName", self.FullName, 6) + # print(f'refnumber:{self.RefNumber}') + # if self.RefNumber: + # for rn in self.RefNumber: + # RefNumber = self.create_sub_element(ET, SalesOrderQueryRq, "RefNumber", f'{rn}', 4) + if self.DateMacro: + TxnDateRangeFilter = self.create_sub_element(ET, SalesOrderQueryRq, "TxnDateRangeFilter", "\n ",) + SalesOrderType = self.create_sub_element(ET, TxnDateRangeFilter, "DateMacro", self.DateMacro) + # SalesOrderType = self.create_sub_element(ET, SalesOrderQueryRq, "DateMacro", self.DateMacro) + + elif type(self.FromTxnDate) is datetime.date or type(self.ToTxnDate) is datetime.date: + TxnDateRangeFilter = self.create_sub_element(ET, SalesOrderQueryRq, "TxnDateRangeFilter", "\n ",) + if type(self.FromTxnDate) is datetime.date: + FromTxnDate = self.create_sub_element(ET, TxnDateRangeFilter, "FromTxnDate", self.FromTxnDate.strftime('%Y-%m-%d'),4) + if type(self.ToTxnDate) is datetime.date: + ToTxnDate = self.create_sub_element(ET, TxnDateRangeFilter, "ToTxnDate", self.ToTxnDate.strftime('%Y-%m-%d')) + if self.IncludeLineItems: + IncludeLineItems = self.create_sub_element(ET, SalesOrderQueryRq, "IncludeLineItems", self.IncludeLineItems, 4) + if len(self.IncludeRetElement)>0: + for x in self.IncludeRetElement: + IncludeRetElement = self.create_sub_element(ET, SalesOrderQueryRq, "IncludeRetElement", x, 4) + mydata = ET.tostring(root, encoding = "unicode") + + qbxml_query = """\n""" + qbxml_query = qbxml_query + """""" + qbxml_query = qbxml_query + "\n" + mydata + print(f'create_QBXML->qbxml_query: {qbxml_query}') + return qbxml_query + + def create_invoiceadd_QBXML(self): + root = ET.Element("QBXML") + root.tail = "\n" + root.text = "\n " + QBXMLMsgsRq = ET.SubElement(root, "QBXMLMsgsRq") + QBXMLMsgsRq.set("onError", "stopOnError") + QBXMLMsgsRq.tail = "\n" + QBXMLMsgsRq.text = "\n " + InvoiceAddRq = self.create_sub_element(ET, QBXMLMsgsRq, "InvoiceAddRq", "\n ",2 ) + InvoiceAdd = self.create_sub_element(ET, InvoiceAddRq, "InvoiceAdd", "\n ",4 ) + CustomerRef = self.create_sub_element(ET, InvoiceAdd, "CustomerRef", "\n ",8 ) + FullName = self.create_sub_element(ET, CustomerRef, "FullName", "TACO", 8 ) + today = str(date.today()) + TxnDate = self.create_sub_element(ET, InvoiceAdd, "TxnDate", self.DN['TxnDate'], 8 ) + RefNumber = self.create_sub_element(ET, InvoiceAdd, "RefNumber", self.DN['DNRefNum'], 8 ) + Memo = self.create_sub_element(ET, InvoiceAdd, "Memo", self.DN['Memo'], 10 ) + for salesorder in self.SalesOrderList: + POTxnId = salesorder['TxnID'] + print(f'create_invoiceadd_QBXML->POTxnID: {POTxnId}') + for itemline in salesorder['SalesOrderLineRet']: + if 'DNQuantity' in itemline: + ItemLineAdd = self.create_sub_element(ET, InvoiceAdd, "ItemLineAdd", "\n ", 10 ) + Quantity = self.create_sub_element(ET, ItemLineAdd, "Quantity", str(itemline['DNQuantity'] ), 12 ) + UnitOfMeasure = self.create_sub_element(ET, ItemLineAdd, "UnitOfMeasure", str(itemline['UOM']), 12 ) + LinkToTxn = self.create_sub_element(ET, ItemLineAdd, "LinkToTxn", "\n ",10 ) + TxnID = self.create_sub_element(ET, LinkToTxn, "TxnID", POTxnId,14 ) + TxnLineID = self.create_sub_element(ET, LinkToTxn, "TxnLineID", itemline['TxnLineID'],12 ) + mydata = ET.tostring(root, encoding = "unicode") + + qbxml_query = """\n""" + qbxml_query = qbxml_query + """""" + qbxml_query = qbxml_query + "\n" + mydata + # print(f'create_invoiceadd_QBXML->Create_Invoiceadd_QBXML: {qbxml_query}') + # print(f"replyfrom qbxml:{self.connect_to_quickbooks(qbxml_query)}") + + return qbxml_query + + + def connect_to_quickbooks(self, qbxml_query): + # Connect to Quickbooks + # sessionManager = win32com.client.Dispatch("QBXMLRP2.RequestProcessor") + # sessionManager.OpenConnection('', 'DASA') + # enumfodnc= win32com.client.Dispatch('QBXMLRP2.RequestProcessor') + # print(enumfodnc) + # print(enumfodnc.qbFileOpenDoNotCare) + sessionManager = win32com.client.Dispatch("QBXMLRP2.RequestProcessor") + sessionManager.OpenConnection('', 'DASA2') + # ticket = sessionManager.BeginSession("z:\\DBW Bogor.qbw", 2) + + ticket = sessionManager.BeginSession("", 2) + + # Send query and receive response + response_string = sessionManager.ProcessRequest(ticket, qbxml_query) + + # Disconnect from Quickbooks + sessionManager.EndSession(ticket) # Close the company file + sessionManager.CloseConnection() # Close the connection + print (response_string) + return response_string + + def __str__(self, *args) -> str: + # return str(self._get_datarow(self.connect_to_quickbooks(self.create_QBXML()))) + # print("__str__") + return str(self.get_sales_order_header()) + # return "hello" + + def get_sales_order_header(self, *args): + return self. _get_sales_order_header(self.connect_to_quickbooks(self.create_QBXML())) + + def status_ok(self, QBXML): #for InvoiceAddRS + + tree = ET.fromstring(QBXML) + + GSRQRs = tree.find(".//InvoiceAddRs") + # print(f"GSRQRs:{GSRQRs}") + status_code = GSRQRs.attrib #.get('statusCode') + # print(GSRQRs.attrib) + # print(GSRQRs.attrib['statusCode']) + status=GSRQRs.attrib.get('statusMessage') + + print(f'status={status}') + if 'OK' in status: + return True, status_code + else: + return False, status_code + + + def _get_sales_order_header(self, response_string): + print('_get_sales_order_header') + # print(f'responsestring:{response_string}') + QBXML = ET.fromstring(response_string) + datadict = {} + SalesOrderdict = {} + _SalesOrderlist = [] + SalesOrderRets = QBXML.findall('.//SalesOrderRet') + print(SalesOrderRets) + for SalesOrderRet in SalesOrderRets: + RefNumber = SalesOrderRet.find('RefNumber').text + # Memo = SalesOrderRet.find('Memo').text + CustomerFullName = SalesOrderRet.find('CustomerRef/FullName').text + TxnID = SalesOrderRet.find('TxnID').text + TotalAmount = SalesOrderRet.find('TotalAmount').text + IsFullyInvoiced = SalesOrderRet.find('IsFullyInvoiced').text + IsManuallyClosed = SalesOrderRet.find('IsManuallyClosed').text + # print(CustomerFullName, TxnID, TotalAmount) + SalesOrderdict = {'RefNumber':RefNumber, 'CustomerFullName':CustomerFullName, 'TxnID':TxnID, + 'TotalAmount':TotalAmount, 'IsFullyInvoiced':IsFullyInvoiced, 'IsManuallyClosed':IsManuallyClosed, 'SalesOrderLineRet':[]} + SalesOrderLineRet = SalesOrderRet.findall('SalesOrderLineRet') + # print(len(SalesOrderLineRet)) + if len(SalesOrderLineRet) > 0: + for SalesOrderLineRet in SalesOrderLineRet: + pass + TxnLineID = SalesOrderLineRet.find('TxnLineID').text + ItemFullName = SalesOrderLineRet.find('ItemRef/FullName').text + Quantity = SalesOrderLineRet.find('Quantity').text + UnitOfMeasure = SalesOrderLineRet.find('UnitOfMeasure').text + Rate = float(SalesOrderLineRet.find('Rate').text) + Amount = float(SalesOrderLineRet.find('Amount').text) + Invoiced = SalesOrderLineRet.find('Invoiced').text + # IsBilled = SalesOrderLineRet.find('IsBilled').text + LineIsManuallyClosed = SalesOrderLineRet.find('IsManuallyClosed').text + # print(TxnLineID, ItemFullName) + BackOrdered = float(Quantity) - float(Invoiced) + if BackOrdered: + SalesOrderLinedict = {'TxnLineID':TxnLineID, + 'ItemFullName':ItemFullName, + 'Quantity':Quantity, + 'UOM':UnitOfMeasure, + 'Rate':Rate, + 'Amount':Amount, + 'BackOrdered':BackOrdered, + 'Invoiced':Invoiced, + # 'IsBilled':IsBilled, + 'LineIsManuallyClosed':LineIsManuallyClosed, + } + SalesOrderdict['SalesOrderLineRet'].append(SalesOrderLinedict) + _SalesOrderlist.append(SalesOrderdict) + # print(_SalesOrderlist) + self.SalesOrderList=_SalesOrderlist + print(f'_get_sales_order_header->Salesorderlist: {self.SalesOrderList}') + # return SalesOrderlist + + def addDNQtyToSalesOrderList(self, _dict:dict): + _bolfoundrefnum=False + _bol_dictisadded=False + Error_msg = None + for poidx, _po in enumerate(self.SalesOrderList): + if _po['RefNumber']==_dict['RefNum']: + _bolfoundrefnum=True + if len(_po['SalesOrderLineRet'])>0: + for polineidx, _poline in enumerate(_po['SalesOrderLineRet']): + pass + if _poline['ItemFullName']==_dict['FullName']: + if _poline['UOM'].upper()==_dict['UOM'].upper(): + # first do UOM in _dict convert treatment + QuantityIn_dict = _dict['Quantity'] + if _dict['UOM'].upper().startswith('ROLL_'): + print(f"addDNQtyToSalesOrderList->DNqty:{_dict['Quantity']}, Roll_:{_dict['UOM'].split('_')[1]}") + QuantityIn_dict = _dict['Quantity'] * int(_dict['UOM'].split("_")[1]) + pass + elif _dict['UOM'].upper() == 'BOX' and _dict['Item No'].upper() == "CUTTER": + print("addDNQtyToSalesOrderList->cutter") + elif _dict['UOM'].upper() == 'BOX' and (_dict['Item No'].upper().startswith("EB-") or _dict['Item No'].upper().startswith("TA-")): + print("addDNQtyToSalesOrderList->LEM") + if _dict['Item No'].split("-")[1].endswith("1006"): + QuantityIn_dict = QuantityIn_dict * 12 + elif _dict['Item No'].split("-")[1].endswith("1025"): + QuantityIn_dict = QuantityIn_dict * 6 + elif _dict['Item No'].split("-")[1].endswith("1100"): + pass + print("1100 lem") + elif _dict['UOM'].upper() == 'BOX' and (_dict['Item No'].upper().startswith("TL-") or _dict['Item No'].upper().startswith("TFL-")): + print("addDNQtyToSalesOrderList->Lock") + QuantityIn_dict = QuantityIn_dict * 20 + elif _dict['UOM'].upper() == 'BOX' and _dict['Item No'].upper() == "EDG-TRIMMER": + QuantityIn_dict = QuantityIn_dict * 12 #coz box of 12 + + + if _poline['BackOrdered']>=QuantityIn_dict: + self.SalesOrderList[poidx]['SalesOrderLineRet'][polineidx]['DNQuantity']=float(QuantityIn_dict) + _bol_dictisadded = True + else: + print(f"{_poline['ItemFullName']} BackOrdered < Qty in DN {_poline['BackOrdered']}<{QuantityIn_dict}") + Error_msg = f"BackOrdered < Qty in DN {_poline['BackOrdered']}<{QuantityIn_dict}" + else: + # print(f"UOM different {_poline['UOM']} <> {_dict['UOM']}") + Error_msg = f"UOM different {_poline['UOM']} <> {_dict['UOM']}" + else: + # print("errorpoline <>DN") + Error_msg = f"poline[ItemFullName] <> DN[FullName]; {_poline['ItemFullName']} <> {_dict['FullName']}, maybe there are 2 same namefromtaco in QB" + else: + pass + # print(f"this refnum {_dict['RefNum']} have no QB PO Return Line") + Error_msg = f"this refnum {_dict['RefNum']} have no QB PO Return Line" + + # print (_bol_dictisadded, Error_msg) + return _bol_dictisadded, Error_msg + + + def prepareInvoice(self, df:pd.DataFrame = None): + # print(df) + _bolAllDNareOk = True + _notindflist=[] + _yescounter = 0 + _nocounter = 0 + if df is not None: + _dflist = df.to_dict('records') + # print(_dflist) + + else: + _dflist = self.dfDN.to_dict('records') + # print(self.dfDN) + # print(f'_dflist:{_dflist}') + for idx, xdf in enumerate(_dflist): + _boladdDN, _Errormsg = self.addDNQtyToSalesOrderList(xdf) + # print(f'prepareInvoice->_Errormsg:{_Errormsg}') + if _boladdDN: + _dflist[idx]['ADDED']=True + elif _Errormsg: + _dflist[idx]['ERROR']=_Errormsg + for xdf in (_dflist): + if 'ADDED' not in xdf: + # print (f"prepareInvoice->not added: {xdf['Item No']}") + print (f"prepareInvoice->not added: {xdf}") + + _notindflist.append(xdf) + _nocounter+=1 + _bolAllDNareOk = False + else: + print (f"ADDED: {xdf['Item No']}") + + print(f'{len(_dflist) - _nocounter} of {len(_dflist)} are added') + return _bolAllDNareOk, _notindflist + + + def validate_date(self, date_text): + if date_text is None: + return None + try: + return datetime.datetime.strptime(date_text, '%Y-%m-%d').date() + except ValueError: + return None + # raise ValueError("Incorrect data format, should be YYYY-MM-DD") + + def get_ext_doc_no_list(self, dndict=None): + if dndict: + dnlist = dndict['lines'] + else: + dnlist = self.DN + df = pd.DataFrame(dnlist) + # print(df) + df['RefNum']= df['No.SO/Ext.Doc.No.'].apply(lambda x: "L"+ x.split("L-")[1]) + # print(df) + ext_doc_no=df['RefNum'].unique().tolist() + if len(ext_doc_no)>0: + return df, ext_doc_no + else: + return df, None + + def get_open_so(self, response_string): + QBXML = ET.fromstring(response_string) + _OpenSalesOrderlist = [] + SalesOrderRets = QBXML.findall('.//SalesOrderRet') + # print(f'SalesOrderRets count:{len(SalesOrderRets)}') + for SalesOrderRet in SalesOrderRets: + IsFullyInvoiced = SalesOrderRet.find('IsFullyInvoiced').text + IsManuallyClosed = SalesOrderRet.find('IsManuallyClosed').text + if IsFullyInvoiced=='false' and IsManuallyClosed=='false': + _OpenSalesOrderlist.append(SalesOrderRet.find('TxnID').text) + # RefNumber = SalesOrderRet.find('RefNumber').text + # Memo = SalesOrderRet.find('Memo').text + # CustomerFullName = SalesOrderRet.find('CustomerRef/FullName').text + # TxnID = SalesOrderRet.find('TxnID').text + # TotalAmount = SalesOrderRet.find('TotalAmount').text + # IsFullyReceived = SalesOrderRet.find('IsFullyReceived').text + # IsManuallyClosed = SalesOrderRet.find('IsManuallyClosed').text + # print(_OpenSalesOrderlist) + return _OpenSalesOrderlist + + def create_open_sales_order_qbxml(self, txnid:list, IncludeLineItems=True): + root = ET.Element("QBXML") + root.tail = "\n" + root.text = "\n " + QBXMLMsgsRq = ET.SubElement(root, "QBXMLMsgsRq") + # QBXMLMsgsRq.set("onError", "continueOnError") + QBXMLMsgsRq.set("onError", "stopOnError") + QBXMLMsgsRq.tail = "\n" + QBXMLMsgsRq.text = "\n " + SalesOrderQueryRq = self.create_sub_element(ET, QBXMLMsgsRq, "SalesOrderQueryRq","\n " ) + if len(txnid)>0: + for x in txnid: + TxnID = self.create_sub_element(ET, SalesOrderQueryRq, "TxnID", x, 6 ) + else: + return None + if IncludeLineItems: + IncludeLineItems = self.create_sub_element(ET, SalesOrderQueryRq, "IncludeLineItems", 'true', 4) + # if len(self.IncludeRetElement)>0: + # for x in self.IncludeRetElement: + # IncludeRetElement = self.create_sub_element(ET, SalesOrderQueryRq, "IncludeRetElement", x, 4) + mydata = ET.tostring(root, encoding = "unicode") + + qbxml_query = """\n""" + qbxml_query = qbxml_query + """""" + qbxml_query = qbxml_query + "\n" + mydata + print(f'create_QBXML->qbxml_query: {qbxml_query}') + return qbxml_query + + + def get_open_sales_order(self, txnid:list): + print(txnid, type(txnid)) + print(self.connect_to_quickbooks(self.create_open_sales_order_qbxml(txnid))) + self._get_sales_order_header(self.connect_to_quickbooks(self.create_open_sales_order_qbxml(txnid))) + +print('### SalesOrder ###') +if __name__ == '__main__': + starttime = timeit.default_timer() + ini=SalesOrderQuery(FullName= '999 HPL', IncludeRetElement = ['TxnID', 'TimeCreated', 'TimeModified','TxnNumber', 'CustomerRef', 'IsManuallyClosed', 'IsFullyInvoiced']) + print(ini.create_QBXML()) + response_string = ini.connect_to_quickbooks(ini.create_QBXML()) + open_sales_orders = ini.get_open_so(response_string) + print(open_sales_orders) + print(ini.get_open_sales_order(open_sales_orders)) + + print("The time difference is :", timeit.default_timer() - starttime) \ No newline at end of file diff --git a/SO_to_Inv/readSO.py b/SO_to_Inv/readSO.py new file mode 100644 index 0000000..a1e1c65 --- /dev/null +++ b/SO_to_Inv/readSO.py @@ -0,0 +1,544 @@ +import xml.etree.ElementTree as ET +import win32com.client +import xmltodict +import pprint +import datetime +import pandas as pd +from datetime import date +import timeit +import os + +class SalesOrderQuery: + def __init__(self, **kwargs) -> None: + # print(f'kwargs:{kwargs}') + # print(args) + # self.SalesOrderList=[] + self.PriceLevelName = None + self.SPPriceLevelName = None + self.cwd = kwargs['cwd'] if 'cwd' in kwargs else os.getcwd() + self.item_inventory_path = "ItemInventory" + self.price_level_filename = "PriceLevel.xlsx" + self._df_price_level = pd.read_excel(os.path.join(self.cwd, self.item_inventory_path, self.price_level_filename), usecols=['FullName', 'PriceLevelName', 'CustomPrice'],) + print(self._df_price_level) + print(type(self._df_price_level.loc[(self._df_price_level['FullName']=="ECO:0:ECO-002") & (self._df_price_level['PriceLevelName']=="T 202202")].values.tolist()[0][2])) + self.FullName = kwargs['FullName'] if 'FullName' in kwargs else None + + self.CustomerPriceLevelName_filename = "CustomerList.xlsx" + self._df_customer = pd.read_excel(os.path.join(self.cwd, self.item_inventory_path, self.CustomerPriceLevelName_filename), usecols=['FullName', 'PriceLevelName', 'SPName'],) + self._df_customer = self._df_customer.fillna('') + print(self._df_customer) + + self.Customer = self._df_customer.loc[(self._df_customer["FullName"]==self.FullName)].values.tolist()[0] + print(f'Customer:{self.Customer}') + self.DN = kwargs['DN'] if 'DN' in kwargs else {} + self.Reuse = kwargs['Reuse'] if 'Reuse' in kwargs else None + + self.SalesOrderList= kwargs['SalesOrderList'] if 'SalesOrderList' in kwargs else [] + self.InvoiceList = None + self.SalesOrderType = kwargs['SalesOrderType'] if 'SalesOrderType' in kwargs else 'SalesByCustomerSummary' + self.IncludeLineItems = kwargs['IncludeLineItems'] if 'IncludeLineItems' in kwargs else 'true' + self.IncludeRetElement = kwargs['IncludeRetElement'] if 'IncludeRetElement' in kwargs else [] + self.TxnDateRangeFilter = kwargs['TxnDateRangeFilter'] if 'TxnDateRangeFilter' in kwargs else None + self.DateMacro = None + if 'DateMacro' in kwargs: + if kwargs['DateMacro'] in ['All', 'Today', 'ThisWeek', 'ThisWeekToDate', 'ThisMonth', 'ThisMonthToDate', 'ThisQuarter', 'ThisQuarterToDate', 'ThisYear', 'ThisYearToDate', 'Yesterday', 'LastWeek', 'LastWeekToDate', 'LastMonth', 'LastMonthToDate', 'LastQuarter', 'LastQuarterToDate', 'LastYear', 'LastYearToDate', 'NextWeek', 'NextFourWeeks', 'NextMonth', 'NextQuarter', 'NextYear']: + self.DateMacro = kwargs['DateMacro'] + self.FromTxnDate = self.validate_date(kwargs['FromTxnDate']) if 'FromTxnDate' in kwargs else None + self.ToTxnDate = self.validate_date(kwargs['ToTxnDate']) if 'ToTxnDate' in kwargs else None + self.ReportEntityFilter = kwargs['ReportEntityFilter'] if 'ReportEntityFilter' in kwargs else None + + # print(self.DateMacro, self.TxnDateRangeFilter, self.FromTxnDate, self.ToTxnDate) + # print(self.Reuse) + # if not self.Reuse: + # self.dfDN, self.ext_doc_no_list = self.get_ext_doc_no_list(self.DN) + # self.RefNumber = kwargs['RefNumber'] if 'RefNumber' in kwargs else self.ext_doc_no_list + # self.get_sales_order_header() + + def create_sub_element(self, ET, parentNode, thisNode, text="\n", whiteSpace = 0, attrib =None): + if type(attrib) is not dict: + attrib = {} + ele = ET.SubElement(parentNode, thisNode) + for x in attrib: + ele.set(x, attrib[x]) + ele.text = text + tail = "\n" + for x in range(whiteSpace): + tail = tail + " " + ele.tail = tail + return ele + + def create_QBXML(self): + root = ET.Element("QBXML") + root.tail = "\n" + root.text = "\n " + QBXMLMsgsRq = ET.SubElement(root, "QBXMLMsgsRq") + # QBXMLMsgsRq.set("onError", "continueOnError") + QBXMLMsgsRq.set("onError", "stopOnError") + QBXMLMsgsRq.tail = "\n" + QBXMLMsgsRq.text = "\n " + SalesOrderQueryRq = self.create_sub_element(ET, QBXMLMsgsRq, "SalesOrderQueryRq","\n " ) + # SalesOrderType = self.create_sub_element(ET, SalesOrderQueryRq, 'SalesOrderType', self.SalesOrderType) + if self.FullName: + EntityFilter = self.create_sub_element(ET, SalesOrderQueryRq, 'EntityFilter', "\n ") + FullName = self.create_sub_element(ET, EntityFilter, "FullName", self.FullName, 6) + if self.DateMacro: + TxnDateRangeFilter = self.create_sub_element(ET, SalesOrderQueryRq, "TxnDateRangeFilter", "\n ",) + SalesOrderType = self.create_sub_element(ET, TxnDateRangeFilter, "DateMacro", self.DateMacro) + # SalesOrderType = self.create_sub_element(ET, SalesOrderQueryRq, "DateMacro", self.DateMacro) + + elif type(self.FromTxnDate) is datetime.date or type(self.ToTxnDate) is datetime.date: + TxnDateRangeFilter = self.create_sub_element(ET, SalesOrderQueryRq, "TxnDateRangeFilter", "\n ",) + if type(self.FromTxnDate) is datetime.date: + FromTxnDate = self.create_sub_element(ET, TxnDateRangeFilter, "FromTxnDate", self.FromTxnDate.strftime('%Y-%m-%d'),4) + if type(self.ToTxnDate) is datetime.date: + ToTxnDate = self.create_sub_element(ET, TxnDateRangeFilter, "ToTxnDate", self.ToTxnDate.strftime('%Y-%m-%d')) + if self.IncludeLineItems: + IncludeLineItems = self.create_sub_element(ET, SalesOrderQueryRq, "IncludeLineItems", self.IncludeLineItems, 4) + if len(self.IncludeRetElement)>0: + for x in self.IncludeRetElement: + IncludeRetElement = self.create_sub_element(ET, SalesOrderQueryRq, "IncludeRetElement", x, 4) + mydata = ET.tostring(root, encoding = "unicode") + + qbxml_query = """\n""" + qbxml_query = qbxml_query + """""" + qbxml_query = qbxml_query + "\n" + mydata + # print(f'create_QBXML->qbxml_query: {qbxml_query}') + return qbxml_query + + def get_customer_pricelevel(self, response_string): + QBXML = ET.fromstring(response_string) + PriceLevelName = QBXML.find('.//PriceLevelRef') + if PriceLevelName: + + PriceLevelName = PriceLevelName.find("FullName").text + print(f'PriceLevelName:{PriceLevelName}') + DataExtRets = QBXML.findall('.//DataExtRet') + SP_PriceLevelName = None + if len(DataExtRets)>0: + for DataExtRet in DataExtRets: + DataExtName = DataExtRet.find('DataExtName').text + DataExtValue = DataExtRet.find('DataExtValue').text + if DataExtName.lower() == 'special cust'.lower(): + SP_PriceLevelName = DataExtValue.upper() + break + self.PriceLevelName = PriceLevelName + self.SPPriceLevelName = SP_PriceLevelName + return PriceLevelName, SP_PriceLevelName + + def create_customerquery_QBXML(self ): + root = ET.Element("QBXML") + root.tail = "\n" + root.text = "\n " + QBXMLMsgsRq = ET.SubElement(root, "QBXMLMsgsRq") + # QBXMLMsgsRq.set("onError", "continueOnError") + QBXMLMsgsRq.set("onError", "stopOnError") + QBXMLMsgsRq.tail = "\n" + QBXMLMsgsRq.text = "\n " + CustomerQueryRq = self.create_sub_element(ET, QBXMLMsgsRq, "CustomerQueryRq","\n " ) + # SalesOrderType = self.create_sub_element(ET, CustomerQueryRq, 'SalesOrderType', self.SalesOrderType) + FullName = self.create_sub_element(ET, CustomerQueryRq, "FullName", self.FullName, 6) + IncludeRetElement = ['FullName', 'PriceLevelRef', 'DataExtRet'] + for x in IncludeRetElement: + IncludeRetElement = self.create_sub_element(ET, CustomerQueryRq, "IncludeRetElement", x, 4) + OwnerID = self.create_sub_element(ET, CustomerQueryRq, "OwnerID", "0", 6) + mydata = ET.tostring(root, encoding = "unicode") + + qbxml_query = """\n""" + qbxml_query = qbxml_query + """""" + qbxml_query = qbxml_query + "\n" + mydata + print(f'create_customer_QBXML->qbxml_query: {qbxml_query}') + response_string=self.connect_to_quickbooks(qbxml_query) + + return self.get_customer_pricelevel(response_string) + return response_string + + def create_invoiceadd_QBXML(self): + print('create_ionvoiceadd_QBXML') + root = ET.Element("QBXML") + root.tail = "\n" + root.text = "\n " + QBXMLMsgsRq = ET.SubElement(root, "QBXMLMsgsRq") + QBXMLMsgsRq.set("onError", "stopOnError") + QBXMLMsgsRq.tail = "\n" + QBXMLMsgsRq.text = "\n " + InvoiceAddRq = self.create_sub_element(ET, QBXMLMsgsRq, "InvoiceAddRq", "\n ",2 ) + InvoiceAdd = self.create_sub_element(ET, InvoiceAddRq, "InvoiceAdd", "\n ",4 ) + CustomerRef = self.create_sub_element(ET, InvoiceAdd, "CustomerRef", "\n ",8 ) + FullName = self.create_sub_element(ET, CustomerRef, "FullName", self.SalesOrderList[0]['CustomerFullName'], 8 ) + TemplateRef = self.create_sub_element(ET, InvoiceAdd, "TemplateRef", "\n ", 8 ) + TemplateFullName = self.create_sub_element(ET, TemplateRef, "FullName", "DBW Invoice (11%)", 8 ) + today = str(date.today()) + TxnDate = self.create_sub_element(ET, InvoiceAdd, "TxnDate", today,8) # self.DN['TxnDate'], 8 ) + + RefNumber = self.create_sub_element(ET, InvoiceAdd, "RefNumber", today,8 ) # self.DN['DNRefNum'], 8 ) + ShipDate = self.create_sub_element(ET, InvoiceAdd, "ShipDate", today,8) # self.DN['TxnDate'], 8 ) + # Memo = self.create_sub_element(ET, InvoiceAdd, "Memo", self.DN['Memo'], 10 ) + disc_amount = 0 + for soidx, salesorder in enumerate(self.SalesOrderList): + SOTxnId = salesorder['TxnID'] + disc_amount+=int(salesorder['Disc_Amount']) + print(f'create_invoiceadd_QBXML->SOTxnId: {SOTxnId}') + for itemline in salesorder['SalesOrderLineRet']: + # if 'DNQuantity' in itemline: + InvoiceLineAdd = self.create_sub_element(ET, InvoiceAdd, "InvoiceLineAdd", "\n ", 10 ) + # Quantity = self.create_sub_element(ET, InvoiceLineAdd, "Quantity", str(itemline['DNQuantity'] ), 12 ) + # Quantity = self.create_sub_element(ET, InvoiceLineAdd, "Quantity", str(itemline['BackOrdered'] ), 12 ) + # UnitOfMeasure = self.create_sub_element(ET, InvoiceLineAdd, "UnitOfMeasure", str(itemline['UOM']), 12 ) + LinkToTxn = self.create_sub_element(ET, InvoiceLineAdd, "LinkToTxn", "\n ", 10 ) + TxnID = self.create_sub_element(ET, LinkToTxn, "TxnID", SOTxnId,14 ) + TxnLineID = self.create_sub_element(ET, LinkToTxn, "TxnLineID", itemline['TxnLineID'], 12 ) + if soidx == len(self.SalesOrderList)-1: #last list then set the'400_Sales_discount' + print(f'disc_amount:{format(disc_amount, ".2f")}') + if disc_amount != 0: + + # disc_amount=format(disc_amount, ".2f") + InvoiceLineAdd = self.create_sub_element(ET, InvoiceAdd, "InvoiceLineAdd", "\n ", 10 ) + ItemRef = self.create_sub_element(ET, InvoiceLineAdd, "ItemRef", "\n ", 12) + ItemFullName = self.create_sub_element(ET, ItemRef, "FullName", "400_Sales Discount", 12) + ItemRate = self.create_sub_element(ET, InvoiceLineAdd, "Rate", str(disc_amount), 10) + + mydata = ET.tostring(root, encoding = "unicode") + + qbxml_query = """\n""" + qbxml_query = qbxml_query + """""" + qbxml_query = qbxml_query + "\n" + mydata + # print(f'create_invoiceadd_QBXML->Create_Invoiceadd_QBXML: {qbxml_query}') + # print(f"replyfrom qbxml:{self.connect_to_quickbooks(qbxml_query)}") + + return qbxml_query + + + def connect_to_quickbooks(self, qbxml_query): + # Connect to Quickbooks + # sessionManager = win32com.client.Dispatch("QBXMLRP2.RequestProcessor") + # sessionManager.OpenConnection('', 'DASA') + # enumfodnc= win32com.client.Dispatch('QBXMLRP2.RequestProcessor') + # print(enumfodnc) + # print(enumfodnc.qbFileOpenDoNotCare) + sessionManager = win32com.client.Dispatch("QBXMLRP2.RequestProcessor") + sessionManager.OpenConnection('', 'DASA2') + # ticket = sessionManager.BeginSession("z:\\DBW Bogor.qbw", 2) + + ticket = sessionManager.BeginSession("", 2) + + # Send query and receive response + 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 + + def __str__(self, *args) -> str: + # return str(self._get_datarow(self.connect_to_quickbooks(self.create_QBXML()))) + # print("__str__") + return str(self.get_sales_order_header()) + # return "hello" + + def get_sales_order_header(self, *args): + return self._get_sales_order_header(self.connect_to_quickbooks(self.create_QBXML())) + + def status_ok(self, QBXML): #for InvoiceAddRS + + tree = ET.fromstring(QBXML) + + GSRQRs = tree.find(".//InvoiceAddRs") + # print(f"GSRQRs:{GSRQRs}") + status_code = GSRQRs.attrib #.get('statusCode') + # print(GSRQRs.attrib) + # print(GSRQRs.attrib['statusCode']) + status=GSRQRs.attrib.get('statusMessage') + + print(f'status={status}') + if 'OK' in status: + return True, status_code + else: + return False, status_code + + + def _get_sales_order_header(self, response_string): + print('_get_sales_order_header') + # print(f'responsestring:{response_string}') + QBXML = ET.fromstring(response_string) + datadict = {} + SalesOrderdict = {} + _SalesOrderlist = [] + SalesOrderRets = QBXML.findall('.//SalesOrderRet') + # print(SalesOrderRets) + for SalesOrderRet in SalesOrderRets: + RefNumber = SalesOrderRet.find('RefNumber').text + # Memo = SalesOrderRet.find('Memo').text + CustomerFullName = SalesOrderRet.find('CustomerRef/FullName').text + TxnID = SalesOrderRet.find('TxnID').text + TotalAmount = SalesOrderRet.find('TotalAmount').text + IsFullyInvoiced = SalesOrderRet.find('IsFullyInvoiced').text + IsManuallyClosed = SalesOrderRet.find('IsManuallyClosed').text + # print(CustomerFullName, TxnID, TotalAmount) + SalesOrderdict = {'RefNumber':RefNumber, 'CustomerFullName':CustomerFullName, 'TxnID':TxnID, + 'TotalAmount':TotalAmount, 'IsFullyInvoiced':IsFullyInvoiced, 'IsManuallyClosed':IsManuallyClosed, 'SalesOrderLineRet':[]} + SalesOrderLineRet = SalesOrderRet.findall('SalesOrderLineRet') + # print(len(SalesOrderLineRet)) + if len(SalesOrderLineRet) > 0: + disc_amount=0 + for SalesOrderLineRet in SalesOrderLineRet: + TxnLineID = SalesOrderLineRet.find('TxnLineID').text + ItemFullName = SalesOrderLineRet.find('ItemRef/FullName').text + Quantity = SalesOrderLineRet.find('Quantity').text + UnitOfMeasure = SalesOrderLineRet.find('UnitOfMeasure').text + Rate = float(SalesOrderLineRet.find('Rate').text) + + Amount = float(SalesOrderLineRet.find('Amount').text) + # if self.SPPriceLevelName: + if self.Customer[2]: + # print(Rate, (Rate - self._df_price_level.loc[(self._df_price_level['FullName']==ItemFullName) & (self._df_price_level['PriceLevelName']==self.SPPriceLevelName)].values.tolist()[0][2])) + print(Quantity, Rate, (Rate - self._df_price_level.loc[(self._df_price_level['FullName']==ItemFullName) & (self._df_price_level['PriceLevelName']==self.Customer[2])].values.tolist()[0][2])) + disc_amount += float(Quantity) * (Rate-self._df_price_level.loc[(self._df_price_level['FullName']==ItemFullName) & (self._df_price_level['PriceLevelName']==self.Customer[2])].values.tolist()[0][2]) + # disc_amount+=float(Quantity)*2000 #testing only + Invoiced = SalesOrderLineRet.find('Invoiced').text + LineIsManuallyClosed = SalesOrderLineRet.find('IsManuallyClosed').text + # print(TxnLineID, ItemFullName) + BackOrdered = float(Quantity) - float(Invoiced) + if BackOrdered: + SalesOrderLinedict = {'TxnLineID':TxnLineID, + 'ItemFullName':ItemFullName, + 'Quantity':Quantity, + 'UOM':UnitOfMeasure, + 'Rate':Rate, + 'Amount':Amount, + 'BackOrdered':BackOrdered, + 'Invoiced':Invoiced, + 'LineIsManuallyClosed':LineIsManuallyClosed, + } + SalesOrderdict['SalesOrderLineRet'].append(SalesOrderLinedict) + SalesOrderdict['Disc_Amount']=disc_amount + _SalesOrderlist.append(SalesOrderdict) + # print(_SalesOrderlist) + self.SalesOrderList=_SalesOrderlist + # print(f'_get_sales_order_header->Salesorderlist: {self.SalesOrderList}') + return self.SalesOrderList + + def addDiscountToInvoiceList(self, _dict:dict): + print("addDiscountToInvoiceList") + + + def addDNQtyToSalesOrderList(self, _dict:dict): + _bolfoundrefnum=False + _bol_dictisadded=False + Error_msg = None + for poidx, _po in enumerate(self.SalesOrderList): + if _po['RefNumber']==_dict['RefNum']: + _bolfoundrefnum=True + if len(_po['SalesOrderLineRet'])>0: + for polineidx, _poline in enumerate(_po['SalesOrderLineRet']): + pass + if _poline['ItemFullName']==_dict['FullName']: + if _poline['UOM'].upper()==_dict['UOM'].upper(): + # first do UOM in _dict convert treatment + QuantityIn_dict = _dict['Quantity'] + if _dict['UOM'].upper().startswith('ROLL_'): + print(f"addDNQtyToSalesOrderList->DNqty:{_dict['Quantity']}, Roll_:{_dict['UOM'].split('_')[1]}") + QuantityIn_dict = _dict['Quantity'] * int(_dict['UOM'].split("_")[1]) + pass + elif _dict['UOM'].upper() == 'BOX' and _dict['Item No'].upper() == "CUTTER": + print("addDNQtyToSalesOrderList->cutter") + elif _dict['UOM'].upper() == 'BOX' and (_dict['Item No'].upper().startswith("EB-") or _dict['Item No'].upper().startswith("TA-")): + print("addDNQtyToSalesOrderList->LEM") + if _dict['Item No'].split("-")[1].endswith("1006"): + QuantityIn_dict = QuantityIn_dict * 12 + elif _dict['Item No'].split("-")[1].endswith("1025"): + QuantityIn_dict = QuantityIn_dict * 6 + elif _dict['Item No'].split("-")[1].endswith("1100"): + pass + print("1100 lem") + elif _dict['UOM'].upper() == 'BOX' and (_dict['Item No'].upper().startswith("TL-") or _dict['Item No'].upper().startswith("TFL-")): + print("addDNQtyToSalesOrderList->Lock") + QuantityIn_dict = QuantityIn_dict * 20 + elif _dict['UOM'].upper() == 'BOX' and _dict['Item No'].upper() == "EDG-TRIMMER": + QuantityIn_dict = QuantityIn_dict * 12 #coz box of 12 + + + if _poline['BackOrdered']>=QuantityIn_dict: + self.SalesOrderList[poidx]['SalesOrderLineRet'][polineidx]['DNQuantity']=float(QuantityIn_dict) + _bol_dictisadded = True + else: + print(f"{_poline['ItemFullName']} BackOrdered < Qty in DN {_poline['BackOrdered']}<{QuantityIn_dict}") + Error_msg = f"BackOrdered < Qty in DN {_poline['BackOrdered']}<{QuantityIn_dict}" + else: + # print(f"UOM different {_poline['UOM']} <> {_dict['UOM']}") + Error_msg = f"UOM different {_poline['UOM']} <> {_dict['UOM']}" + else: + # print("errorpoline <>DN") + Error_msg = f"poline[ItemFullName] <> DN[FullName]; {_poline['ItemFullName']} <> {_dict['FullName']}, maybe there are 2 same namefromtaco in QB" + else: + pass + # print(f"this refnum {_dict['RefNum']} have no QB PO Return Line") + Error_msg = f"this refnum {_dict['RefNum']} have no QB PO Return Line" + + # print (_bol_dictisadded, Error_msg) + return _bol_dictisadded, Error_msg + + + def prepareInvoice(self, df:pd.DataFrame = None): + # print(df) + _bolAllDNareOk = True + _notindflist=[] + _yescounter = 0 + _nocounter = 0 + if df is not None: + _dflist = df.to_dict('records') + # print(_dflist) + + # else: + # _dflist = self.dfDN.to_dict('records') + # print(self.dfDN) + # print(f'_dflist:{_dflist}') + for idx, xdf in enumerate(_dflist): + _boladdDN, _Errormsg = self.addDNQtyToSalesOrderList(xdf) + # print(f'prepareInvoice->_Errormsg:{_Errormsg}') + if _boladdDN: + _dflist[idx]['ADDED']=True + elif _Errormsg: + _dflist[idx]['ERROR']=_Errormsg + for xdf in (_dflist): + if 'ADDED' not in xdf: + # print (f"prepareInvoice->not added: {xdf['Item No']}") + print (f"prepareInvoice->not added: {xdf}") + + _notindflist.append(xdf) + _nocounter+=1 + _bolAllDNareOk = False + else: + print (f"ADDED: {xdf['Item No']}") + + print(f'{len(_dflist) - _nocounter} of {len(_dflist)} are added') + return _bolAllDNareOk, _notindflist + + + def validate_date(self, date_text): + if date_text is None: + return None + try: + return datetime.datetime.strptime(date_text, '%Y-%m-%d').date() + except ValueError: + return None + # raise ValueError("Incorrect data format, should be YYYY-MM-DD") + + def get_ext_doc_no_list(self, dndict=None): + if dndict: + dnlist = dndict['lines'] + else: + dnlist = self.DN + df = pd.DataFrame(dnlist) + # print(df) + df['RefNum']= df['No.SO/Ext.Doc.No.'].apply(lambda x: "L"+ x.split("L-")[1]) + # print(df) + ext_doc_no=df['RefNum'].unique().tolist() + if len(ext_doc_no)>0: + return df, ext_doc_no + else: + return df, None + + def get_open_so(self, response_string=None): + if not response_string: + response_string = self.connect_to_quickbooks(self.create_QBXML()) + + QBXML = ET.fromstring(response_string) + _OpenSalesOrderlist = [] + SalesOrderRets = QBXML.findall('.//SalesOrderRet') + # print(f'SalesOrderRets count:{len(SalesOrderRets)}') + for SalesOrderRet in SalesOrderRets: + IsFullyInvoiced = SalesOrderRet.find('IsFullyInvoiced').text + IsManuallyClosed = SalesOrderRet.find('IsManuallyClosed').text + if IsFullyInvoiced=='false' and IsManuallyClosed=='false': + txndate = SalesOrderRet.find('TxnDate').text + totalamount = SalesOrderRet.find('TotalAmount').text + refnumber = SalesOrderRet.find('RefNumber').text + + _OpenSalesOrderlist.append([SalesOrderRet.find('TxnID').text, txndate, totalamount, refnumber, ]) + # _OpenSalesOrderlist.append(SalesOrderRet.find('TxnID').text) + # RefNumber = SalesOrderRet.find('RefNumber').text + # Memo = SalesOrderRet.find('Memo').text + # CustomerFullName = SalesOrderRet.find('CustomerRef/FullName').text + # TxnID = SalesOrderRet.find('TxnID').text + # TotalAmount = SalesOrderRet.find('TotalAmount').text + # IsFullyReceived = SalesOrderRet.find('IsFullyReceived').text + # IsManuallyClosed = SalesOrderRet.find('IsManuallyClosed').text + # print(_OpenSalesOrderlist) + return _OpenSalesOrderlist + + def create_open_sales_order_qbxml(self, txnid:list, IncludeLineItems=True): + root = ET.Element("QBXML") + root.tail = "\n" + root.text = "\n " + QBXMLMsgsRq = ET.SubElement(root, "QBXMLMsgsRq") + # QBXMLMsgsRq.set("onError", "continueOnError") + QBXMLMsgsRq.set("onError", "stopOnError") + QBXMLMsgsRq.tail = "\n" + QBXMLMsgsRq.text = "\n " + SalesOrderQueryRq = self.create_sub_element(ET, QBXMLMsgsRq, "SalesOrderQueryRq","\n " ) + if len(txnid)>0: + for x in txnid: + TxnID = self.create_sub_element(ET, SalesOrderQueryRq, "TxnID", x, 6 ) + else: + return None + if IncludeLineItems: + IncludeLineItems = self.create_sub_element(ET, SalesOrderQueryRq, "IncludeLineItems", 'true', 4) + # if len(self.IncludeRetElement)>0: + # for x in self.IncludeRetElement: + # IncludeRetElement = self.create_sub_element(ET, SalesOrderQueryRq, "IncludeRetElement", x, 4) + mydata = ET.tostring(root, encoding = "unicode") + + qbxml_query = """\n""" + qbxml_query = qbxml_query + """""" + qbxml_query = qbxml_query + "\n" + mydata + print(f'create_open_sale_order_qbxml->qbxml_query: {qbxml_query}') + return qbxml_query + + + def get_open_sales_order(self, txnlist:list): + print(f'txnid: {txnlist}', type(txnlist)) + txnid = [] + for x in txnlist: + if isinstance(x, list): + txnid.append(x[0]) + else: + txnid.append(x) + break + # txnid = [x[0] if isinstance(x, list) else x for x in txnid ] + print(txnid) + if txnid: + # print(self.connect_to_quickbooks(self.create_open_sales_order_qbxml(txnid))) + return self._get_sales_order_header(self.connect_to_quickbooks(self.create_open_sales_order_qbxml(txnid))) + else: + print("There is No Open Sales Order") + return None + return None + +print('### SalesOrder ###') +if __name__ == '__main__': + starttime = timeit.default_timer() + # ini=SalesOrderQuery(FullName= '999 HPL', IncludeRetElement = ['TxnID', 'TimeCreated', 'TimeModified','TxnNumber', 'CustomerRef', 'IsManuallyClosed', 'IsFullyInvoiced']) + + # ini=SalesOrderQuery(FullName= 'YSM Interior', IncludeRetElement = ['TxnID', 'TimeCreated', 'TimeModified','TxnNumber', 'CustomerRef', 'TxnDate', 'RefNumber', 'IsManuallyClosed', 'IsFullyInvoiced','TotalAmount']) + ini=SalesOrderQuery(FullName= 'Abadi Serpong', IncludeRetElement = ['TxnID', 'TimeCreated', 'TimeModified','TxnNumber', 'CustomerRef', 'TxnDate', 'RefNumber', 'IsManuallyClosed', 'IsFullyInvoiced','TotalAmount']) + # iya = ini.create_customerquery_QBXML() #pakai excel saja lebih cepat + # print(iya) + print(f'createQBXML:{ini.create_QBXML()}') + response_string = ini.connect_to_quickbooks(ini.create_QBXML()) + # print(f'response_string:{response_string}') + response_string = None + open_sales_orders = ini.get_open_so() + print(f'open sales orders:{open_sales_orders}') + if open_sales_orders: + + itu = ini.get_open_sales_order(open_sales_orders) + # print(itu) + print(f'get_open_sales_order:{itu}') + if itu: + + print(ini.create_invoiceadd_QBXML()) + + # ini.connect_to_quickbooks(ini.create_invoiceadd_QBXML()) + + print("The time difference is :", timeit.default_timer() - starttime) \ No newline at end of file diff --git a/SalesOrderQuery.xml b/SalesOrderQuery.xml new file mode 100644 index 0000000..5fa4b92 --- /dev/null +++ b/SalesOrderQuery.xml @@ -0,0 +1,336 @@ + + + + + + + IDTYPE + + STRTYPE + + STRTYPE + + INTTYPE + + + DATETIMETYPE + DATETIMETYPE + + + + + DATETYPE + DATETYPE + + + ENUMTYPE + + + + + + IDTYPE + + STRTYPE + + IDTYPE + + STRTYPE + + + + + + ENUMTYPE + STRTYPE + + + + STRTYPE + STRTYPE + + + + + IDTYPE + + STRTYPE + + + + BOOLTYPE + BOOLTYPE + STRTYPE + GUIDTYPE + + + + + IDTYPE + DATETIMETYPE + DATETIMETYPE + STRTYPE + INTTYPE + + IDTYPE + STRTYPE + + + IDTYPE + STRTYPE + + + IDTYPE + STRTYPE + + DATETYPE + STRTYPE + + STRTYPE + STRTYPE + STRTYPE + STRTYPE + STRTYPE + STRTYPE + STRTYPE + STRTYPE + STRTYPE + STRTYPE + + + STRTYPE + STRTYPE + STRTYPE + STRTYPE + STRTYPE + + + STRTYPE + STRTYPE + STRTYPE + STRTYPE + STRTYPE + STRTYPE + STRTYPE + STRTYPE + STRTYPE + STRTYPE + + + STRTYPE + STRTYPE + STRTYPE + STRTYPE + STRTYPE + + STRTYPE + + IDTYPE + STRTYPE + + DATETYPE + + IDTYPE + STRTYPE + + STRTYPE + DATETYPE + + IDTYPE + STRTYPE + + AMTTYPE + + IDTYPE + STRTYPE + + PERCENTTYPE + AMTTYPE + AMTTYPE + + IDTYPE + STRTYPE + + FLOATTYPE + AMTTYPE + BOOLTYPE + BOOLTYPE + STRTYPE + + IDTYPE + STRTYPE + + BOOLTYPE + BOOLTYPE + BOOLTYPE + + IDTYPE + STRTYPE + + STRTYPE + GUIDTYPE + + IDTYPE + + ENUMTYPE + DATETYPE + STRTYPE + + ENUMTYPE + AMTTYPE + + + + IDTYPE + + IDTYPE + STRTYPE + + STRTYPE + QUANTYPE + STRTYPE + + IDTYPE + STRTYPE + + + PRICETYPE + + PERCENTTYPE + + + IDTYPE + STRTYPE + + AMTTYPE + + IDTYPE + STRTYPE + + + IDTYPE + STRTYPE + + + STRTYPE + + STRTYPE + + STRTYPE + + IDTYPE + STRTYPE + + QUANTYPE + BOOLTYPE + STRTYPE + STRTYPE + + GUIDTYPE + STRTYPE + + ENUMTYPE + STRTYPE + + + + + IDTYPE + + IDTYPE + STRTYPE + + STRTYPE + QUANTYPE + STRTYPE + + IDTYPE + STRTYPE + + BOOLTYPE + AMTTYPE + + IDTYPE + + IDTYPE + STRTYPE + + STRTYPE + QUANTYPE + STRTYPE + + IDTYPE + STRTYPE + + + PRICETYPE + + PERCENTTYPE + + + IDTYPE + STRTYPE + + AMTTYPE + + IDTYPE + STRTYPE + + + IDTYPE + STRTYPE + + + STRTYPE + + STRTYPE + + STRTYPE + + IDTYPE + STRTYPE + + QUANTYPE + BOOLTYPE + STRTYPE + STRTYPE + + GUIDTYPE + STRTYPE + + ENUMTYPE + STRTYPE + + + + GUIDTYPE + STRTYPE + + ENUMTYPE + STRTYPE + + + + + GUIDTYPE + STRTYPE + + ENUMTYPE + STRTYPE + + ENUMTYPE + + + IDTYPE + STRTYPE + STRTYPE + AMTTYPE + + + ENUMTYPE + STRTYPE + STRTYPE + + + + \ No newline at end of file diff --git a/TransactionQuery.xml b/TransactionQuery.xml new file mode 100644 index 0000000..e0f3479 --- /dev/null +++ b/TransactionQuery.xml @@ -0,0 +1,147 @@ + + + + + + + IDTYPE + + INTTYPE + + STRTYPE + + STRTYPE + + + + ENUMTYPE + STRTYPE + + + + STRTYPE + STRTYPE + + + + + DATETIMETYPE + DATETIMETYPE + + + ENUMTYPE + + + + + DATETYPE + DATETYPE + + + ENUMTYPE + + + + + + ENUMTYPE + + IDTYPE + + STRTYPE + + IDTYPE + + STRTYPE + + + + + + ENUMTYPE + + IDTYPE + + STRTYPE + + IDTYPE + + STRTYPE + + + + + + ENUMTYPE + + IDTYPE + + STRTYPE + + IDTYPE + + STRTYPE + + + + + IDTYPE + + STRTYPE + + IDTYPE + + STRTYPE + + + + + ENUMTYPE + + + ENUMTYPE + + ENUMTYPE + + ENUMTYPE + + + IDTYPE + + STRTYPE + + + + STRTYPE + + + + + + ENUMTYPE + IDTYPE + IDTYPE + DATETIMETYPE + DATETIMETYPE + + IDTYPE + STRTYPE + + + IDTYPE + STRTYPE + + DATETYPE + STRTYPE + AMTTYPE + + IDTYPE + STRTYPE + + FLOATTYPE + AMTTYPE + STRTYPE + + + + \ No newline at end of file diff --git a/database.db b/database.db new file mode 100644 index 0000000000000000000000000000000000000000..0bcb3c657de34f8f84b9904d0cb5c6814e0ba19f GIT binary patch literal 8192 zcmeHLTWlj|6`mO<&V92>X}1@)`Nxj!WK(Z^$(5FN9mmaX67Qz5yW6FO^tb1?J@t6T z{2nKDp@@r$T0p1>cxlxqR4S@+RcR>_4@e-jg^HJg0HGoTLLiX1RJ=eX_|A;utSTfP zctWz3O}xp;|DW@H-}%m&6zoY{JO0#WMZZ3;g6uRa2O1o{Z{5$Ge(N1%^DAAvpseFXXl^bzPI@PCKEM>Fcs zNnKYzmUnr{5*?>4_ulqS%kJhf#T+YU*0yu(D1yz5vhK??*!c^^+(vGf?d+bn)v6$>l4pSJUX#AaqGnO<9`|d(fF6f zA0EFner7y4_Qu#tW1k;ujOE5cqi>D=Wc0bwPmGpFS4U5b{9)t=BTtREBX^C=48Jw} z)8VfTe|oq+yf%E((3?X)9{S4AV?&jpTZgU>{yF$c@Y&$UgZBq-58gQV*TI(upB{X8 z@b1CI!Lfng419aw@qq^h&JNrhcr);F;ERC|2MU4tz@YYq_LBBF&C)itY4u;~>*}-W zqiRWALLvX_D{KUnYqgkOx19s+-YqVL&9aUq8r)7LQi*tCC7xJ4T@ETYY4f^UlTN!@ z)1Ju7))`iCdAY-iZD|YX#U@kn#Nu=*sGP)sHNp2g$|LK1AEa%IlEv+^f8tU+vCKGK ztLsv5BXCDfnq^ifJFeTiGdXjAP?^FxO~*1_v&^l)7j`?`X5N7>k~i zr0j&yj%RDqY`Lb*S+V9cnto^+cgB+o;r9oX8?-PbXSp@)Bb#lUm=^}3aUOzF@zlcf z`zR=)w@kZg3FU`dV&6nmTT0&XZ$$+w>^|J8>Uzy_g>@;@=l~Dt*j29rAdyT(?hPuZ z)Cg)U3){6irCrCc1>zc}TSHhfp1?ti)9>wG*Oa(0a8JhSv|1b_)C3iYD54;Ig^G-z zNT(%~Z)7;`Vry;J@~|i1fLfu2T}yZTV-d#*@o4m+8j1 zUaoPwDwMxxS~avY%R7!ludEjkN%_Z{ zQL}mlAlhYEOIt#@nqIs%gPA{Pm>VfC7 zHPj<)cpvXr4s{h+NW@div)ce!og*zdRoi?>T-gN++_KmvFV}nRuo_RLqFZQI;3xKl z4MEkr>=s=5Mi)Xry)?7wtDpjag;f8sWl|khhn+(h^x$1ivP#~3o*0?ZOM<%(lG1mD zXbGQ;#dvZldX8v~>#cUVroOtyWr<6#`=sr58x`QCR-zkpBa{Nhg{xk7D3fh|(Cboa zE&a}*at+boJQ#SYfU|1A!#;Ewv_oXfRv_Lc&>d8R#77QwNf-0w}kP8=CARx_fSnhP1~apEze z^8?-~7aha6%8Nfk!8S7U z+JI04Te?nB5&Zy`dcVKD^@bM7n*5%1F$1RRD;`nUBP@;?C=W#hSuRJWi1=B(MUzMS zWnN&;vwYcb4tm}L&rF7IrWmE;(&yP z4nky$HPl?so z^+6>9KWj>-LfZw+m_TLQ#J1PnGP)d0pQQYBog<*rGFyRXH?f8E;6-*&(Q@cI!Y!s7 zaK}iIM($Oz^-KuncP;fXwrJ@*Aj+=xVzy(uHEcddRADGVwC^NJ!+O<$%lv)|YmwOt zK~j`g=o(@GUP~sUeRtET0e;E%JvZ=TQcJOS__kp-aN)iP{1&|{N{sgV?vmm$kVuA3 z_=j1LhNXSeAA*)(+a}t&{0#mA*y(mP#*IK_^#*L z$O>vrMaF$m14X;41<<}=W=)jqY^S!4lW-NaQFx4Qi|Hla5^AW|ZCMO?|GH&JYHh z>Jhz$XDw_~>I)l!wz^&i;WjJ{>8SyNVal^t?RcKcGF!uBJtP@k9zZ&<8yiB9d;X&e z%h8ncW5CLCNb{L%@~Y6LvS= + {% csrf_token %} + {{form|crispy}} + {% comment %} {{form.CustomerName|as_crispy_field}} {% endcomment %} + + +{% endblock body %} \ No newline at end of file diff --git a/django/Customer/templates/Customer/index copy.html b/django/Customer/templates/Customer/index copy.html new file mode 100644 index 0000000..4c1233b --- /dev/null +++ b/django/Customer/templates/Customer/index copy.html @@ -0,0 +1,62 @@ +{% extends 'base.html' %} + +{% block title %}test obj{% endblock title %} + +{% block search_nav %}