mirror of
https://github.com/bcomsugi/dasaproject.git
synced 2026-01-09 15:32:38 +07:00
trial running
This commit is contained in:
parent
b2bd10e596
commit
76b25db76a
4
DjangoSOtoInv.bat
Normal file
4
DjangoSOtoInv.bat
Normal 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
|
||||
@ -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
|
||||
|
||||
@ -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:
|
||||
|
||||
@ -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 = [
|
||||
|
||||
@ -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)
|
||||
|
||||
@ -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()
|
||||
|
||||
|
||||
|
||||
|
||||
@ -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 %}
|
||||
|
||||
Loading…
Reference in New Issue
Block a user