提交 9dc2e6f2 authored 作者: 李思鑫's avatar 李思鑫

add:包材管理可编辑

上级 85084238
...@@ -1223,14 +1223,15 @@ urlpatterns = [ ...@@ -1223,14 +1223,15 @@ urlpatterns = [
#lisin 2024-08-23 包材管理相关 #lisin 2024-08-23 包材管理相关
url(r'^packaging/supplier/manage/(?P<id>\d+)/$', list_views.packaging_supplier_manage), url(r'^packaging/supplier/manage/(?P<id>\d+)/$', list_views.packaging_supplier_manage),
url(r'^mes/query/packaging/purchase/$', mes_views.packaging_purchase_query), url(r'^mes/query/packaging/purchase/$', mes_views.packaging_purchase_query),
url(r'^mes/packaging/purchase/list/$', mes_views.packaging_purchase_list), url(r'^mes/packaging/purchase/list/$', mes_views.packaging_purchase_list),
url(r'^mes/packaging/purchase/edit/$', mes_views.packaging_purchase_edit),
url(r'^mes/packaging/purchase/edit/(?P<id>\d+)/$', mes_views.packaging_purchase_edit), url(r'^mes/packaging/purchase/edit/(?P<id>\d+)/$', mes_views.packaging_purchase_edit),
url(r'^mes/packaging/instore/list/$', mes_views.packaging_instore_list), url(r'^mes/packaging/instore/list/$', mes_views.packaging_instore_list),
url(r'^mes/packaging/instore/edit/$', mes_views.packaging_instore_edit), url(r'^mes/packaging/instore/edit/$', mes_views.packaging_instore_edit),
url(r'^mes/packaging/instore/edit/(?P<id>\d+)/$', mes_views.packaging_instore_edit), url(r'^mes/packaging/instore/edit/(?P<id>\d+)/$', mes_views.packaging_instore_edit),
url(r'^mes/packaging/inventory/(?P<what>\w+)/$', mes_views.packaging_inventory), url(r'^mes/packaging/inventory/(?P<what>\w+)/$', mes_views.packaging_inventory),
url(r'^mes/packaging/receive/list/$', mes_views.packaging_receive_list), url(r'^mes/packaging/receive/list/$', mes_views.packaging_receive_list),
# url(r'^mes/packaging/receive/$', mes_views.packaging_receive), url(r'^mes/packaging/receive/$', mes_views.packaging_receive),
url(r'^mes/packaging/receive/(?P<id>\d+)/$', mes_views.packaging_receive), url(r'^mes/packaging/receive/(?P<id>\d+)/$', mes_views.packaging_receive),
......
...@@ -231,6 +231,7 @@ class PackagingPurchaseRecordForm(ModelForm): ...@@ -231,6 +231,7 @@ class PackagingPurchaseRecordForm(ModelForm):
model = PackagingPurchasRecord model = PackagingPurchasRecord
fields='__all__' fields='__all__'
widgets={ widgets={
'code': forms.TextInput(attrs={'readonly': 'readonly'}),
'company':forms.HiddenInput(), 'company':forms.HiddenInput(),
} }
...@@ -247,7 +248,7 @@ class PackagingInstoreForm(ModelForm): ...@@ -247,7 +248,7 @@ class PackagingInstoreForm(ModelForm):
widgets={ widgets={
'code': forms.TextInput(attrs={'readonly': 'readonly'}), 'code': forms.TextInput(attrs={'readonly': 'readonly'}),
'company':forms.HiddenInput(), 'company':forms.HiddenInput(),
# 'Packaging':forms.HiddenInput() 'Packaging':forms.HiddenInput()
} }
def __init__(self, *args, **kwargs): def __init__(self, *args, **kwargs):
...@@ -266,6 +267,7 @@ class PackagingReceiveForm(ModelForm): ...@@ -266,6 +267,7 @@ class PackagingReceiveForm(ModelForm):
model = PackagingReceive model = PackagingReceive
fields='__all__' fields='__all__'
widgets={ widgets={
'code': forms.TextInput(attrs={'readonly': 'readonly'}),
'company':forms.HiddenInput(), 'company':forms.HiddenInput(),
} }
......
...@@ -229,7 +229,7 @@ class PackagingPurchasRecord(models.Model): ...@@ -229,7 +229,7 @@ class PackagingPurchasRecord(models.Model):
class Meta: class Meta:
verbose_name = _('包材采购记录') verbose_name = _('包材采购记录')
verbose_name_plural = _('包材采购记录') verbose_name_plural = _('包材采购记录')
unique_together = ("company", "packaging", "vendor") unique_together = ("company", "packaging", "code")
def __str__(self): def __str__(self):
return self.name return self.name
......
...@@ -102,7 +102,9 @@ def edit_Storehouse(request,id=None): ...@@ -102,7 +102,9 @@ def edit_Storehouse(request,id=None):
#采购记录查询 #采购记录查询
@login_required @login_required
def packaging_purchase_query(request): def packaging_purchase_query(request):
packaging_purchase_id = request.GET.get('id') packaging_purchase_id = request.GET.get('purchase_id')
instore_id = int(request.GET.get('instore_id')) if request.GET.get('instore_id') != 'None' else request.GET.get('instore_id')
try: try:
packaging_purchase = PackagingPurchasRecord.objects.get(id=packaging_purchase_id) packaging_purchase = PackagingPurchasRecord.objects.get(id=packaging_purchase_id)
packaging = Packaging.objects.get(id=packaging_purchase.packaging.id) packaging = Packaging.objects.get(id=packaging_purchase.packaging.id)
...@@ -114,12 +116,27 @@ def packaging_purchase_query(request): ...@@ -114,12 +116,27 @@ def packaging_purchase_query(request):
yet_instore_num = 0 yet_instore_num = 0
if len(packaging_instore): if len(packaging_instore):
for i in packaging_instore: for i in packaging_instore:
yet_instore_num += i.instore_num if int(i.id) != instore_id:#排除当前入库记录数量
yet_instore_num += i.instore_num
#查询库存
instore_num=0
receive_num=0
packaging_instore = PackagingInstore.objects.filter( company=request.user.company, packaging=packaging)
packaging_receive = PackagingReceive.objects.filter( company=request.user.company, packaging=packaging)
if len(packaging_instore):
for item in packaging_instore:
instore_num += int(item.instore_num)
if len(packaging_receive):
for i in packaging_receive:
receive_num += int(i.receive_num)
packaging_inventory = instore_num - receive_num
data = { data = {
'dt': packaging_purchase.dt, 'dt': packaging_purchase.dt,
'qty': packaging_purchase.qty, #采购数量 'qty': packaging_purchase.qty, #采购数量
'yet_instore_num': yet_instore_num, #已入库数量 'yet_instore_num': yet_instore_num, #采购单已入库数量
'packaging_inventory': packaging_inventory,
'packaging_id': packaging.id, 'packaging_id': packaging.id,
'packaging_code': packaging.code, 'packaging_code': packaging.code,
'packaging_name': packaging.name, 'packaging_name': packaging.name,
...@@ -134,9 +151,9 @@ def packaging_purchase_query(request): ...@@ -134,9 +151,9 @@ def packaging_purchase_query(request):
def packaging_purchase_list(request): def packaging_purchase_list(request):
company_id=request.user.company_id company_id=request.user.company_id
data={'data':[],'clmns':[],'e':[],'subtt':['库存管理', '包装材料采购'],'order': [], data={'data':[],'clmns':[],'e':[],'subtt':['库存管理', '包装材料采购'],'order': [],
'murl':'/mes/packaging/purchase/edit/22','dt':False,'add':True,'allown_delete':True,'show_add':True} 'murl':'/mes/packaging/purchase/edit/','dt':False,'add':True,'allown_delete':True,'show_add':True}
data['clmns']=[_("采购编码"),_("采购时间"),_("包材编码"),_('包材名称'),('规格型号'),_("单位"),_("采购供应商"),_("采购单价"),_("采购数量"),_("采购总价") ] data['clmns']=[_("采购编码"),_("采购时间"),_("包材编码"),_('包材名称'),('规格型号'),_("单位"),_("采购供应商"),_("采购单价"),_("采购数量"),_("采购总价") ]
s="select coalesce(a.code,''), to_char(a.dt,'yyyy-mm-dd'), p.code, p.name, coalesce(p.specification,''),"+\ s="select a.id, coalesce(a.code,''), to_char(a.dt,'yyyy-mm-dd'), p.code, p.name, coalesce(p.specification,''),"+\
"case when p.unit_id IS NOT NULL THEN (select name from mes_unit where id=p.unit_id) else '/' end,"+\ "case when p.unit_id IS NOT NULL THEN (select name from mes_unit where id=p.unit_id) else '/' end,"+\
"v.name, a.unit_price, a.qty, a.total_price "+\ "v.name, a.unit_price, a.qty, a.total_price "+\
"from mes_packagingpurchasrecord a "+\ "from mes_packagingpurchasrecord a "+\
...@@ -146,27 +163,29 @@ def packaging_purchase_list(request): ...@@ -146,27 +163,29 @@ def packaging_purchase_list(request):
cur=connection.cursor() cur=connection.cursor()
cur.execute(s) cur.execute(s)
for r in cur.fetchall(): for r in cur.fetchall():
data['data'].append([ r[0],r[1],r[2],r[3],r[4],r[5],r[6],int(r[7]),int(r[8]),int(r[9]) ]) code_link = f"<a href='/mes/packaging/purchase/edit/{r[0]}'>{r[1]}<a/>"
data['data'].append([ code_link,r[2],r[3],r[4],r[5],r[6],r[7],float(r[8]),int(r[9]),float(r[10]) ])
return render(request,'obj/list_obj.html',data) return render(request,'obj/list_obj.html',data)
#包材采购记录添加/编辑 #包材采购记录添加/编辑
@login_required @login_required
def packaging_purchase_edit(request,id:None): def packaging_purchase_edit(request,id=None):
# if id: if id is not None:
# obj = m.objects.get(id=int(id)) obj = PackagingPurchasRecord.objects.get(id=int(id))
# else: else:
# obj = CompanyunitForm() obj = PackagingPurchasRecord()
is_saved=False is_saved=False
company_id=request.user.company.id company_id=request.user.company.id
obj = PackagingPurchasRecord()
obj.company = request.user.company obj.company = request.user.company
obj.company_id = company_id obj.company_id = company_id
md_packaging = Packaging.objects.filter(company=request.user.company).all() md_packaging = Packaging.objects.filter(company=request.user.company).all()
md_vendor = Vendor.objects.filter(company=request.user.company).all() md_vendor = Vendor.objects.filter(company=request.user.company).all()
print('company_id',request.user.company_id)
if request.method == 'GET': if request.method == 'GET':
form = PackagingPurchaseRecordForm(instance = obj,user=request.user) if id is None: #新增 创建编码
obj.code = create_code('CG')
form = PackagingPurchaseRecordForm(instance = obj,user=request.user)
elif request.method == "POST": elif request.method == "POST":
form = PackagingPurchaseRecordForm(request.POST,instance = obj,user=request.user) form = PackagingPurchaseRecordForm(request.POST,instance = obj,user=request.user)
if form.is_valid(): if form.is_valid():
...@@ -181,9 +200,9 @@ def packaging_purchase_edit(request,id:None): ...@@ -181,9 +200,9 @@ def packaging_purchase_edit(request,id:None):
def packaging_instore_list(request): def packaging_instore_list(request):
company_id=request.user.company_id company_id=request.user.company_id
data={'data':[],'clmns':[],'e':[],'subtt':['库存管理', '包装材料入库'],'order': [], data={'data':[],'clmns':[],'e':[],'subtt':['库存管理', '包装材料入库'],'order': [],
'murl':'/mes/packaging/instore/edit/0','dt':False,'add':True,'allown_delete':True,'show_add':True} 'murl':'/mes/packaging/instore/edit/','dt':False,'add':True,'allown_delete':True,'show_add':True}
data['clmns']=[_("入库编码"),_("入库时间"),_("采购编码"),_("采购时间"),_("包材编码"),_("包材名称"),_("规格型号"),_("单位"),_("采购供应商"),_("采购数量"),_("入库数量") ] data['clmns']=[_("入库编码"),_("入库时间"),_("采购编码"),_("采购时间"),_("包材编码"),_("包材名称"),_("规格型号"),_("单位"),_("采购供应商"),_("采购数量"),_("入库数量") ]
s="select coalesce(a.code,''), to_char(a.dt,'yyyy-mm-dd'), ppr.code, to_char(ppr.dt,'yyyy-mm-dd'), p.code," +\ s="select a.id, coalesce(a.code,''), to_char(a.dt,'yyyy-mm-dd'), ppr.code, to_char(ppr.dt,'yyyy-mm-dd'), p.code," +\
"p.name, coalesce(p.specification,'/'),"+\ "p.name, coalesce(p.specification,'/'),"+\
"case when p.unit_id IS NOT NULL THEN (select name from mes_unit where id=p.unit_id) else '/' end,"+\ "case when p.unit_id IS NOT NULL THEN (select name from mes_unit where id=p.unit_id) else '/' end,"+\
"v.name, ppr.qty, a.instore_num "+\ "v.name, ppr.qty, a.instore_num "+\
...@@ -194,49 +213,36 @@ def packaging_instore_list(request): ...@@ -194,49 +213,36 @@ def packaging_instore_list(request):
"where a.company_id="+ str(company_id) "where a.company_id="+ str(company_id)
cur=connection.cursor() cur=connection.cursor()
cur.execute(s) cur.execute(s)
for r in cur.fetchall(): for r in cur.fetchall():
data['data'].append([ r[0],r[1],r[2],r[3],r[4],r[5],r[6],r[7],r[8],r[9],r[10] ]) code_link = f"<a href='/mes/packaging/instore/edit/{r[0]}'>{r[1]}<a/>"
data['data'].append([ code_link,r[2],r[3],r[4],r[5],r[6],r[7],r[8],r[9],r[10],r[11] ])
return render(request,'obj/list_obj.html',data) return render(request,'obj/list_obj.html',data)
#包材入库记录添加/编辑 #包材入库记录添加/编辑
@login_required @login_required
def packaging_instore_edit(request,id:None): def packaging_instore_edit(request,id=None):
# if id: if id:
# obj = m.objects.get(id=int(id)) obj = PackagingInstore.objects.get(id=int(id))
# else: else:
# obj = CompanyunitForm() obj = PackagingInstore()
is_saved=False is_saved=False
company_id=request.user.company.id company_id=request.user.company.id
obj = PackagingInstore()
obj.company = request.user.company obj.company = request.user.company
obj.company_id = company_id obj.company_id = company_id
if request.method == 'GET': if request.method == 'GET':
if id is None:#新增 创建code
obj.code = create_code('RK')
form = PackagingInstoreForm(instance = obj,user=request.user) form = PackagingInstoreForm(instance = obj,user=request.user)
elif request.method == "POST": elif request.method == "POST":
packaging_id=request.POST.get('packaging') packaging_id=request.POST.get('packaging')
packaging = Packaging.objects.get(id=packaging_id) packaging = Packaging.objects.get(id=packaging_id)
form = PackagingInstoreForm(request.POST,instance = obj,user=request.user) form = PackagingInstoreForm(request.POST,instance = obj,user=request.user)
PI = PackagingInventory.objects.filter( company=request.user.company, packaging=packaging).first()
if form.is_valid(): if form.is_valid():
#采购记录添加 #采购记录添加
form.save() form.save()
#是否存在该公司包材库存记录
if PI:
# 如果存在,增加 num 的值
PI.num += int(request.POST.get('instore_num'))
PI.save()
else:
print('新增库存记录')
# 如果不存在,新增一条记录
packaging_inventory = PackagingInventory(
company=request.user.company,
packaging=packaging,
num=int(request.POST.get('instore_num'))
)
packaging_inventory.save()
is_saved = True is_saved = True
return render(request,'mes/packaging_instore_edit.html',{'form':form,'is_saved':is_saved,}) return render(request,'mes/packaging_instore_edit.html',{'form':form,'is_saved':is_saved, 'instore_id':id})
#包材库存 #包材库存
def packaging_inventory(request,what=None): def packaging_inventory(request,what=None):
...@@ -246,9 +252,21 @@ def packaging_inventory(request,what=None): ...@@ -246,9 +252,21 @@ def packaging_inventory(request,what=None):
try: try:
packaging = Packaging.objects.get(id=packaging_id) packaging = Packaging.objects.get(id=packaging_id)
#查询库存 #查询库存
packaging_inventory = PackagingInventory.objects.filter( company=request.user.company, packaging=packaging).first() instore_num=0
receive_num=0
packaging_instore = PackagingInstore.objects.filter( company=request.user.company, packaging=packaging)
packaging_receive = PackagingReceive.objects.filter( company=request.user.company, packaging=packaging)
if len(packaging_instore):
for item in packaging_instore:
instore_num += int(item.instore_num)
if len(packaging_receive):
for i in packaging_receive:
receive_num += int(i.receive_num)
print('packaging_inventory',instore_num,receive_num)
packaging_inventory = instore_num - receive_num
data = { data = {
'inventory_num': packaging_inventory.num if packaging_inventory else 0, 'inventory_num': packaging_inventory,
'packaging_code': packaging.code, 'packaging_code': packaging.code,
'packaging_name': packaging.name, 'packaging_name': packaging.name,
'packaging_specification': packaging.specification, 'packaging_specification': packaging.specification,
...@@ -262,20 +280,21 @@ def packaging_inventory(request,what=None): ...@@ -262,20 +280,21 @@ def packaging_inventory(request,what=None):
data={'data':[],'clmns':[],'e':[],'subtt':['库存管理', '包材库存报表'],'order': [], data={'data':[],'clmns':[],'e':[],'subtt':['库存管理', '包材库存报表'],'order': [],
'murl':'','dt':False,'add':False,'allown_delete':False,'show_add':False} 'murl':'','dt':False,'add':False,'allown_delete':False,'show_add':False}
data['clmns']=[_("包材编码"),_("包材名称"),_("规格型号"),_("单位"),_("采购数量"),_("入库数量"),_("领用数量"),_("库存数量")] data['clmns']=[_("包材编码"),_("包材名称"),_("规格型号"),_("单位"),_("采购数量"),_("入库数量"),_("领用数量"),_("库存数量")]
s="select a.id, coalesce(p.code,''), coalesce(p.name,''), coalesce(p.specification,'/'),"+\ s="select p.id, p.code, p.name, coalesce(p.specification,'/'),"+\
"case when p.unit_id IS NOT NULL THEN (select name from mes_unit where id=p.unit_id) else '/' end,"+\ "case when p.unit_id IS NOT NULL THEN (select name from mes_unit where id=p.unit_id) else '/' end,"+\
"SUM(distinct purchase.qty), SUM(distinct instore.instore_num), SUM(distinct receive.receive_num), a.num "+\ "(select SUM(purchase.qty) from mes_packagingpurchasrecord purchase where purchase.packaging_id=p.id),"+\
"from mes_packaginginventory a "+\ "(select SUM(instore.instore_num) from mes_packaginginstore instore where instore.packaging_id=p.id),"+\
"inner join mes_packaging p on a.packaging_id=p.id "+\ "(select SUM(receive.receive_num) from mes_packagingreceive receive where receive.packaging_id=p.id),"+\
"inner join mes_packagingpurchasrecord purchase on purchase.packaging_id=p.id "+\ "(select SUM(instore.instore_num) from mes_packaginginstore instore where instore.packaging_id=p.id) - (select SUM(receive.receive_num) from mes_packagingreceive receive where receive.packaging_id=p.id) as inventory_num "+\
"inner join mes_packaginginstore instore on instore.packaging_id=p.id "+\ "from mes_packaging p "+\
"inner join mes_packagingreceive receive on receive.packaging_id=p.id "+\ "where p.company_id="+ str(company_id)
"where a.company_id="+ str(company_id) +' '\
"group by a.id, p.code, p.name, p.specification, p.unit_id, a.num"
cur=connection.cursor() cur=connection.cursor()
cur.execute(s) cur.execute(s)
for r in cur.fetchall(): for r in cur.fetchall():
data['data'].append([ r[1],r[2],r[3],r[4],r[5],r[6],r[7],r[8] ]) # 将 None 转换为 /
r = ["/" if x is None else x for x in r]
inventory_num = max(0, r[8])
data['data'].append([ r[1],r[2],r[3],r[4],r[5],r[6],r[7],inventory_num ])
return render(request,'obj/list_obj.html',data) return render(request,'obj/list_obj.html',data)
# 包材领用记录list # 包材领用记录list
...@@ -283,7 +302,7 @@ def packaging_inventory(request,what=None): ...@@ -283,7 +302,7 @@ def packaging_inventory(request,what=None):
def packaging_receive_list(request): def packaging_receive_list(request):
company_id=request.user.company_id company_id=request.user.company_id
data={'data':[],'clmns':[],'e':[],'subtt':['库存管理', '包装材料领用'],'order': [], data={'data':[],'clmns':[],'e':[],'subtt':['库存管理', '包装材料领用'],'order': [],
'murl':'/mes/packaging/receive/0','dt':False,'add':True,'allown_delete':True,'show_add':True} 'murl':'/mes/packaging/receive/','dt':False,'add':True,'allown_delete':True,'show_add':True}
data['clmns']=[_("领用编码"),_("领用时间"),_("包材编码"),_('包材名称'),('规格型号'),_("单位"),("领取数量") ] data['clmns']=[_("领用编码"),_("领用时间"),_("包材编码"),_('包材名称'),('规格型号'),_("单位"),("领取数量") ]
s="select a.id, coalesce(a.code,''), to_char(a.dt,'yyyy-mm-dd'), p.code, p.name, coalesce(p.specification,'/'),"+\ s="select a.id, coalesce(a.code,''), to_char(a.dt,'yyyy-mm-dd'), p.code, p.name, coalesce(p.specification,'/'),"+\
"case when p.unit_id IS NOT NULL THEN (select name from mes_unit where id=p.unit_id) else '/' end,"+\ "case when p.unit_id IS NOT NULL THEN (select name from mes_unit where id=p.unit_id) else '/' end,"+\
...@@ -293,15 +312,16 @@ def packaging_receive_list(request): ...@@ -293,15 +312,16 @@ def packaging_receive_list(request):
"where a.company_id="+ str(company_id) "where a.company_id="+ str(company_id)
cur=connection.cursor() cur=connection.cursor()
cur.execute(s) cur.execute(s)
for r in cur.fetchall(): for r in cur.fetchall():
data['data'].append([ r[1],r[2],r[3],r[4],r[5],r[6],r[7] ]) code_link = f"<a href='/mes/packaging/receive/{r[0]}'>{r[1]}<a/>"
data['data'].append([ code_link,r[2],r[3],r[4],r[5],r[6],r[7] ])
return render(request,'obj/list_obj.html',data) return render(request,'obj/list_obj.html',data)
#包材领用记录 添加/编辑 #包材领用记录 添加/编辑
@login_required @login_required
def packaging_receive(request,id:None): def packaging_receive(request,id=None):
if int(id): if id:
obj = PackagingReceive.objects.get(id=int(id)) obj = PackagingReceive.objects.get(id=int(id))
else: else:
obj = PackagingReceive() obj = PackagingReceive()
...@@ -310,19 +330,17 @@ def packaging_receive(request,id:None): ...@@ -310,19 +330,17 @@ def packaging_receive(request,id:None):
obj.company = request.user.company obj.company = request.user.company
obj.company_id = company_id obj.company_id = company_id
if request.method == 'GET': if request.method == 'GET':
if id is None:#新增 创建code
obj.code = create_code('LY')
form = PackagingReceiveForm(instance = obj,user=request.user) form = PackagingReceiveForm(instance = obj,user=request.user)
elif request.method == "POST": elif request.method == "POST":
form = PackagingReceiveForm(request.POST,instance = obj,user=request.user) form = PackagingReceiveForm(request.POST,instance = obj,user=request.user)
packaging_id = request.POST.get('packaging') packaging_id = request.POST.get('packaging')
receive_num = request.POST.get('receive_num') receive_num = request.POST.get('receive_num')
packaging = Packaging.objects.get(id=packaging_id) packaging = Packaging.objects.get(id=packaging_id)
PI = PackagingInventory.objects.filter( company=request.user.company, packaging=packaging).first() if form.is_valid():
if form.is_valid() and PI and PI.num>=int(receive_num):
form.save() form.save()
is_saved = True is_saved = True
# 领用减少库存
PI.num -= int(receive_num)
PI.save()
return render(request,'mes/packaging_receive.html',{'form':form,'is_saved':is_saved,}) return render(request,'mes/packaging_receive.html',{'form':form,'is_saved':is_saved,})
......
...@@ -11,9 +11,6 @@ ...@@ -11,9 +11,6 @@
{% block js %} {% block js %}
{{ block.super }} {{ block.super }}
$('.btn-save').click(function(){
$.SubmitForm('#obj_form form','{{request.path}}');
});
{% endblock %} {% endblock %}
...@@ -31,51 +28,55 @@ ...@@ -31,51 +28,55 @@
{% block form_content %} {% block form_content %}
{{ block.super }} {{ block.super }}
<script type="text/javascript"> <script type="text/javascript">
$(document).ready(function() { $(document).ready(function() {
//生成设置 日期编码 //编辑 回显查询采购记录
var now = new Date(); var purchase_id = $('#id_packaging_purchas').val()*1
var year = String(now.getFullYear()); var instore_id = $('#id_instore').val()
var month = String(now.getMonth() + 1).padStart(2, '0'); // 月份从0开始,需要加1并补零 var before_instore_num = $('#id_instore_num').val()?$('#id_instore_num').val()*1:0 //编辑前入库数量
var day = String(now.getDate()).padStart(2, '0'); console.log('instore_id',instore_id)
var hours = String(now.getHours()).padStart(2, '0'); if(purchase_id){
var minutes = String(now.getMinutes()).padStart(2, '0'); queryPackagingPurchaseById({purchase_id,instore_id})
var seconds = String(now.getSeconds()).padStart(2, '0'); }
var defaultCodeValue = 'RK' + year + month + day + hours + minutes + seconds;
$('#id_code').val(defaultCodeValue);
//入库数量校验 function validateForm() {
$('#id_instore_num').on('input', function(){ var purchase_num = $('#qty').val()*1;
var purchase_num= $('#qty').val()*1; var instore_num = $('#id_instore_num').val()*1;
var instore_num = $(this).val()*1; var inventory_num = $('#packaging_inventory').val()*1;
var yet_instore_num = $('#yet_instore_num').val()*1; var yet_instore_num = $('#yet_instore_num').val()*1;
var can_instore_num = purchase_num - yet_instore_num;//可入库数量 var max_num = purchase_num - yet_instore_num; //可入库数量 最大
console.log(can_instore_num, yet_instore_num) var max_min = (before_instore_num - inventory_num)>0 ? (before_instore_num - inventory_num) : 0 ; //可入库数量 最小
if(purchase_num && instore_num){ if(purchase_num && instore_num){
if(instore_num > can_instore_num){ if(instore_num > max_num){
toastr.error('入库数量不能大于' + can_instore_num); toastr.error('入库数量不能大于' + max_num);
$('#id_instore_num').val(''); $('#id_instore_num').val("")
} return false;
}
}
if(purchase_id && instore_num < max_min){//编辑修改
toastr.error('入库数量不能小于'+ max_min);
$('#id_instore_num').val("")
return false;
} }
return true;
}) }
// 监听code字段的变化 // 监听code字段的变化
$('#id_packaging_purchas').on('change', function() { $('#id_packaging_purchas').on('change', function() {
var id = $(this).val(); var purchase_id = $(this).val()*1;
console.log('codeValue--',id) queryPackagingPurchaseById({purchase_id,instore_id})
// 发送AJAX请求获取相关数据 });
$.ajax({
function queryPackagingPurchaseById(data={}){
$.ajax({
url: '/mes/query/packaging/purchase/', url: '/mes/query/packaging/purchase/',
method: 'GET', method: 'GET',
data: { id: id }, data: data,
success: function(response) { success: function(response) {
// 在页面上显示相关数据 // 在页面上显示相关数据
console.log('packagingPurchasRecord',response)
const { const {
dt, dt,
qty, yet_instore_num, qty, yet_instore_num, packaging_inventory,
packaging_id,packaging_code, packaging_name, packaging_specification, packaging_id,packaging_code, packaging_name, packaging_specification,
vendor_name vendor_name
}=response }=response
...@@ -87,16 +88,25 @@ ...@@ -87,16 +88,25 @@
$('#vendor_name').val(vendor_name); $('#vendor_name').val(vendor_name);
$('#qty').val(qty); $('#qty').val(qty);
$('#yet_instore_num').val(yet_instore_num); $('#yet_instore_num').val(yet_instore_num);
$('#packaging_inventory').val(packaging_inventory);
}, },
error: function(xhr, status, error) { error: function(xhr, status, error) {
console.error('AJAX请求失败:', error); console.error('AJAX请求失败:', error);
} }
}); });
}); }
// 表单提交时的数据校验
$('.btn-save').on('click', function(event) {
if (!validateForm()) {
event.preventDefault(); // 阻止表单提交
}else{
$.SubmitForm('#obj_form form','{{request.path}}');
}
});
}); });
</script> </script>
<input type='hidden' type="number" value="{{instore_id}}" name="id_instore" id="id_instore" />
<input type='hidden' type="number" value="" name="packaging" id="id_packaging" /> <input type='hidden' type="number" value="" name="packaging" id="id_packaging" />
<div class="form-group "> <div class="form-group ">
<label class="col-sm-2 control-label ">{% trans '入库编码:' %} </label> <label class="col-sm-2 control-label ">{% trans '入库编码:' %} </label>
...@@ -147,10 +157,14 @@ ...@@ -147,10 +157,14 @@
</div> </div>
</div> </div>
<div class="form-group "> <div class="form-group ">
<label class="col-sm-2 control-label ">{% trans '已入库数量:' %} </label> <label class="col-sm-1 control-label ">{% trans '采购单已入数量:' %} </label>
<div class="col-sm-10"> <div class="col-sm-5">
<input type="text" disabled name='yet_instore_num' id='yet_instore_num' /> <input type="text" disabled name='yet_instore_num' id='yet_instore_num' />
</div> </div>
<label class="col-sm-1 control-label ">{% trans '库数量:' %} </label>
<div class="col-sm-5">
<input type="text" disabled name='packaging_inventory' id='packaging_inventory' />
</div>
</div> </div>
<div class="form-group "> <div class="form-group ">
...@@ -162,7 +176,7 @@ ...@@ -162,7 +176,7 @@
<div class="col-sm-10">{{ form.remark }}</div> <div class="col-sm-10">{{ form.remark }}</div>
</div> </div>
<div> <div>
<a class="btn btn-primary btn-save" type="submit" style="float:right;">{% trans '保存' %}</a> <a class="btn btn-primary btn-save" type="button" style="float:right;">{% trans '保存' %}</a>
</div> </div>
{% endblock %} {% endblock %}
...@@ -33,18 +33,6 @@ ...@@ -33,18 +33,6 @@
{{ block.super }} {{ block.super }}
<script type="text/javascript"> <script type="text/javascript">
$(document).ready(function() { $(document).ready(function() {
//生成设置 日期编码
var now = new Date();
var year = String(now.getFullYear());
var month = String(now.getMonth() + 1).padStart(2, '0'); // 月份从0开始,需要加1并补零
var day = String(now.getDate()).padStart(2, '0');
var hours = String(now.getHours()).padStart(2, '0');
var minutes = String(now.getMinutes()).padStart(2, '0');
var seconds = String(now.getSeconds()).padStart(2, '0');
var defaultCodeValue = 'CG' + year + month + day + hours + minutes + seconds;
$('#id_code').val(defaultCodeValue);
function calculateTotalPrice() { function calculateTotalPrice() {
var qty = parseFloat($('#id_qty').val()) || 0; var qty = parseFloat($('#id_qty').val()) || 0;
var unitPrice = parseFloat($('#id_unit_price').val()) || 0; var unitPrice = parseFloat($('#id_unit_price').val()) || 0;
......
...@@ -33,18 +33,13 @@ ...@@ -33,18 +33,13 @@
{{ block.super }} {{ block.super }}
<script type="text/javascript"> <script type="text/javascript">
$(document).ready(function() { $(document).ready(function() {
//生成设置 日期编码
var now = new Date(); //初始化
var year = String(now.getFullYear()); var id = $('#id_packaging').val();
var month = String(now.getMonth() + 1).padStart(2, '0'); // 月份从0开始,需要加1并补零 var edit_receive_num = $('#id_receive_num').val()*1;
var day = String(now.getDate()).padStart(2, '0'); if(id) {
var hours = String(now.getHours()).padStart(2, '0'); packagingInventoreByid(id)
var minutes = String(now.getMinutes()).padStart(2, '0'); }
var seconds = String(now.getSeconds()).padStart(2, '0');
var defaultCodeValue = 'LY' + year + month + day + hours + minutes + seconds;
$('#id_code').val(defaultCodeValue);
//库存数量校验 //库存数量校验
$('#id_receive_num').on('input', function(){ $('#id_receive_num').on('input', function(){
var inventory_num = $('#inventory_num').val()*1; var inventory_num = $('#inventory_num').val()*1;
...@@ -59,32 +54,38 @@ ...@@ -59,32 +54,38 @@
//根据包材id 查询库存、包材信息 //根据包材id 查询库存、包材信息
$('#id_packaging').on('change', function() { $('#id_packaging').on('change', function() {
var id = $(this).val(); var id = $(this).val();
console.log('codeValue--',id) packagingInventoreByid(id)
// 发送AJAX请求获取相关数据 });
//查询库存、包材信息
function packagingInventoreByid(id){
$.ajax({ $.ajax({
url: '/mes/packaging/inventory/query/', url: '/mes/packaging/inventory/query/',
method: 'GET', method: 'GET',
data: { id: id }, data: { id: id },
success: function(response) { success: function(response) {
// 在页面上显示相关数据 // 在页面上显示相关数据
console.log('packagingPurchasRecord',response) console.log('packagingPurchasRecord',response)
const { let {
dt, dt,
inventory_num, inventory_num,
packaging_code, packaging_name, packaging_specification, packaging_code, packaging_name, packaging_specification,
vendor_name vendor_name
}=response }=response
$('#dt').val(dt); //之前领取的数量要加回库存 才是真实的可编辑领取数量
$('#packaging_code').val(packaging_code); if(edit_receive_num) inventory_num += edit_receive_num
$('#packaging_name').val(packaging_name);
$('#packaging_specification').val(packaging_specification); $('#dt').val(dt);
$('#inventory_num').val(inventory_num); $('#packaging_code').val(packaging_code);
}, $('#packaging_name').val(packaging_name);
error: function(xhr, status, error) { $('#packaging_specification').val(packaging_specification);
console.error('AJAX请求失败:', error); $('#inventory_num').val(inventory_num);
} },
error: function(xhr, status, error) {
console.error('AJAX请求失败:', error);
}
}); });
}); }
}); });
</script> </script>
......
...@@ -1709,4 +1709,14 @@ def block_consumer(consumer_id, ancestor_id, reason, jmcpid = ''): ...@@ -1709,4 +1709,14 @@ def block_consumer(consumer_id, ancestor_id, reason, jmcpid = ''):
r = cur.fetchone() r = cur.fetchone()
if not r: if not r:
cur.execute(f"insert into z_consumer_blacklist (consumer_id, ancestor_id, reason) values ({str(consumer_id)},{str(ancestor_id)},'{reason}')") cur.execute(f"insert into z_consumer_blacklist (consumer_id, ancestor_id, reason) values ({str(consumer_id)},{str(ancestor_id)},'{reason}')")
cur.execute(f"insert into z_consumer_blacklist_record (consumer_id, ancestor_id, reason, jmcpid) values ({str(consumer_id)},{str(ancestor_id)},'{reason}','{jmcpid}')") cur.execute(f"insert into z_consumer_blacklist_record (consumer_id, ancestor_id, reason, jmcpid) values ({str(consumer_id)},{str(ancestor_id)},'{reason}','{jmcpid}')")
\ No newline at end of file
# 创建编码
def create_code(prefix):
now = datetime.datetime.now()
formatted_time = now.strftime("%Y%m%d%H%M%S")
if prefix:
return f"{prefix}{formatted_time}"
return formatted_time
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论