trial running

This commit is contained in:
bcomsugi 2024-01-06 03:01:02 +07:00
parent b2bd10e596
commit 76b25db76a
7 changed files with 70 additions and 26 deletions

4
DjangoSOtoInv.bat Normal file
View File

@ -0,0 +1,4 @@
cd "C:\Sources\dasaproject\"
echo already cd
cmd /k "cd /d C:\Sources\dasaproject\env\Scripts\ & activate & cd /d C:\Sources\dasaproject\ & python django\manage.py runserver 9000
echo start app

View File

@ -7,6 +7,7 @@ import pandas as pd
from datetime import date
import timeit
import pythoncom
import os
class PriceLevelQuery:
@ -387,6 +388,7 @@ class PriceLevelQuery:
PriceLeveldf.sort_values(by=['PriceLevelName', 'FullName'], inplace=True)
PriceLeveldf=PriceLeveldf.reset_index(drop=True)
print(PriceLeveldf)
print(os.getcwd())
PriceLeveldf.to_excel('ItemInventory\PriceLevel.xlsx', sheet_name=PriceLevelName, index=False )
# print(PriceLevellist)
return PriceLevellist, status

View File

@ -26,8 +26,8 @@ class SalesOrderQuery:
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]))
print(self._df_price_level.loc[(self._df_price_level['FullName']=="TEDG:S122:EDG-009-1/22") & (self._df_price_level['PriceLevelName']=="T 202202")].values.tolist()[0][2])
# 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]))
# print(self._df_price_level.loc[(self._df_price_level['FullName']=="TEDG:S122:EDG-009-1/22") & (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"
@ -325,16 +325,34 @@ class SalesOrderQuery:
else:
return False, status_code
def get_saved_refnumber(self, QBXML): #for InvoiceAddRS
tree = ET.fromstring(QBXML)
objects = {}
GSRQRs = tree.find(".//InvoiceAddRs")
refnumber = tree.find(".//RefNumber").text
print(f"saved refnumber:{refnumber}")
objects['RefNumber'] = refnumber
objects['Customer_FullName']= tree.find(".//CustomerRef/FullName").text
objects['TxnDate'] = tree.find(".//TxnDate").text
objects['BalanceRemaining'] = tree.find(".//BalanceRemaining").text
return objects
def get_discperpcs(self, ItemFullName, Rate):
discPerPcs = 0
if self.Customer:
if self.Customer[2]:
pricelist = self._df_price_level.loc[(self._df_price_level['FullName']==ItemFullName) & (self._df_price_level['PriceLevelName']==self.Customer[2])].values.tolist()[0][2]
discPerPcs = Rate-pricelist
# ic(Rate, disc, (Rate - self._df_price_level.loc[(self._df_price_level['FullName']==ItemFullName) & (self._df_price_level['PriceLevelName']==self.SPPriceLevelName)].values.tolist()[0][2]))
if discPerPcs < 0 :
discPerPcs = 0
print(f"WARNING: Rate is Lower than Pricelist Cust:{self.Customer} ItemName:{ItemFullName} Rate:{Rate} < {pricelist}")
try:
pricelist = self._df_price_level.loc[(self._df_price_level['FullName']==ItemFullName) & (self._df_price_level['PriceLevelName']==self.Customer[2])].values.tolist()[0][2]
discPerPcs = Rate-pricelist
# ic(Rate, disc, (Rate - self._df_price_level.loc[(self._df_price_level['FullName']==ItemFullName) & (self._df_price_level['PriceLevelName']==self.SPPriceLevelName)].values.tolist()[0][2]))
if discPerPcs < 0 :
discPerPcs = 0
print(f"WARNING: Rate is Lower than Pricelist Cust:{self.Customer} ItemName:{ItemFullName} Rate:{Rate} < {pricelist}")
except:
print('Pricelevelname not found')
return None
return discPerPcs
@ -412,6 +430,8 @@ class SalesOrderQuery:
if BackOrdered > 0 and LineIsManuallyClosed.lower() == 'false' :
# ic(self.Customer)
discPerPcs = self.get_discperpcs(ItemFullName, Rate)
if discPerPcs == None:
return False
discPerItem = BackOrdered * discPerPcs
disc_amount += discPerItem
# if self.Customer:

View File

@ -1,9 +1,9 @@
from django.urls import path
from . import views
from icecream import install
install()
from icecream import ic
ic.configureOutput(includeContext=True, )
# from icecream import install
# install()
# from icecream import ic
# ic.configureOutput(includeContext=True, )
app_name = "Invoice"
urlpatterns = [

View File

@ -14,12 +14,12 @@ from django.contrib import messages
import os
import pandas as pd
from django.conf import settings
from icecream import ic
# from icecream import ic
import timeit
from decimal import Decimal
from datetime import datetime
ic.configureOutput(includeContext= True)
# ic.configureOutput(includeContext= True)
def get_SalesOrderQuery(customer_name, txnid=None):
try:
@ -183,6 +183,8 @@ def choose_inv(request):
print("The time difference finish choose inv is :", timeit.default_timer() - starttime)
return render(request, "Invoice/so_details_form.html", context)
else:
messages.warning(request, "Customer PriceLevel or PriceLevelList not found. please prepare data first and check Customer 'Special Customer Custom Field'")
elif 'customer_fullname' in request.POST:
customer_name = request.POST.get('customer_fullname')
ini = get_SalesOrderQuery(customer_name)
@ -240,7 +242,8 @@ def save_inv(request):
return HttpResponse("RefNumber Invalid. ")
elif ref_number.strip()=="":
ref_number = None
if check_duplicate_refnumber(ref_number):
if ref_number and check_duplicate_refnumber(ref_number):
messages.warning(request, 'RefNumber already Exist. please choose other RefNumber')
return HttpResponseRedirect(request.META.get('HTTP_REFERER', '/'))
return HttpResponse('RefNumber already Exist. please choose other RefNumber')
if len(txn_date)<6:
@ -402,11 +405,16 @@ def save_inv(request):
result = ini.connect_to_quickbooks(invoiceaddQBXML)
print("RESULT:")
print(result)
if result and ini.status_ok(result):
pass
# context['messages']=[{"alert":"info", "message": "invoice Is Good"}]
messages.success(request, f"Invoice No: Has Been SAVED with link SO No. : {unique(df['RefNumber'].to_list())}")
# messages.info(request, 'Invoice Has Been SAVED2')
rst, status_msg = ini.status_ok(result)
if rst:
saved_inv = ini.get_saved_refnumber(result)
print(saved_inv)
# context['messages']=[{"alert":"info", "message": "invoice Is Good"}]
messages.success(request, f"Customer:{saved_inv['Customer_FullName']}\nInvoice No: {saved_inv['RefNumber']} Date: {saved_inv['TxnDate']}\nAmount Invoiced: {saved_inv['BalanceRemaining']}\n Has Been SAVED with link SO No. : {unique(df['RefNumber'].to_list())}")
# messages.info(request, 'Invoice Has Been SAVED2')
else:
messages.warning(request, f"")
print("The time difference finish Save Inv is :", timeit.default_timer() - starttime)
return redirect('Invoice:show_customer')
@ -502,6 +510,7 @@ def prepare_data(request):
messages.warning(request, f"Saving Not Success. status: {msg}")
print(f"Saving Not Success. status: {msg}")
if ret:
messages.info(request, "<p> You are <em>pretty</em><br> smart</p>")
messages.info(request, f"{subject} has been updated Successfully in {round(timeit.default_timer() - starttime, 4)} seconds. {FullName}")
else:
@ -511,7 +520,7 @@ def prepare_data(request):
ini = PriceLevelQuery(IncludeRetElement = ['Name'])
price_level_list = ini.name_list()
print(price_level_list)
# print(price_level_list)
context['objects']=price_level_list
print("The time difference is :", timeit.default_timer() - starttime)

View File

@ -2,8 +2,8 @@
"""Django's command-line utility for administrative tasks."""
import os
import sys
from icecream import install
install()
# from icecream import install
# install()

View File

@ -74,9 +74,18 @@
<li><a class="dropdown-item" href="{% url 'Invoice:prepare_data' %}">Prepare Data</a></li>
</ul>
</li>
<li class="nav-item">
<a class="nav-link disabled">Link</a>
<li class="nav-item dropdown">
<a class="nav-link dropdown-toggle" href="#" role="button" data-bs-toggle="dropdown" aria-expanded="false">
SO to Inv
</a>
<ul class="dropdown-menu">
<li><a class="dropdown-item" href="{% url 'Invoice:show_customer' %}">SO to Inv</a></li>
<li><a class="dropdown-item" href="{% url 'Invoice:prepare_data' %}">Prepare Data</a></li>
</ul>
</li>
<!-- <li class="nav-item">
<a class="nav-link disabled">Link</a>
</li> -->
</ul>
<div>{% block search_nav %}<form class="d-flex" role="search">
<input class="form-control me-2" type="search" placeholder="Search" aria-label="Search">
@ -90,7 +99,7 @@
{% if messages %}
{% for message in messages %}
<div class="alert alert-{{ message.tags }} alert-dismissible fade show" role="alert">
<strong>{{message | safe}}</strong>
<strong>{{message | safe |}}</strong>
<button type="button" class="btn-close" data-bs-dismiss="alert" aria-label="Close"></button>
</div>
{% endfor %}