提交 808d2a7f authored 作者: 李思鑫's avatar 李思鑫

包材管理 add

上级 5efa619c
......@@ -107,6 +107,10 @@ urlpatterns = [
url(r'^obj/list/(?P<obj>\w+)/$', list_views.list_obj),
url(r'^obj/edit/(?P<obj_name>\w+)/$', list_views.edit_obj),
url(r'^obj/edit/(?P<obj_name>\w+)/(?P<id>\d+)/$', list_views.edit_obj),
#lisin 2024-08-19 包装物料供应商 管理
url(r'^packaging/supplier/manage/(?P<id>\d+)/$', list_views.packaging_supplier_manage),
#2020-05-20
url(r'^obj/agent/label/$', list_views.agent_lbl_info),
url(r'^obj/agent/label/(?P<user_id>\d+)/$', list_views.agent_lbl_info),
......
......@@ -948,12 +948,12 @@ def edit_obj(request,obj_name,id=None):
units_pkg.append(uu.unit)
if request.method == 'GET':
if not id:
obj.company_id=cid
obj.company_id=cid
form = BOMForm(instance=obj)
formset_m=BOMmaterialsFormset(instance=obj)
formset_s=BOMsemifinishedgoodsFormset(instance=obj)
formset_p=BOMpackagingFormset(instance=obj)
elif request.method == "POST":
elif request.method == "POST":
form = BOMForm(request.POST, instance=obj)
formset_m=BOMmaterialsFormset(request.POST,instance=obj)
formset_s=BOMsemifinishedgoodsFormset(request.POST,instance=obj)
......@@ -3981,7 +3981,7 @@ def list_obj(request, obj):
a=r[1]
data['data'].append([ a,r[2],r[4],r[3] ])
elif obj=='packaging':
data['clmns']=["包装物料名称","编码","计量类别","备注说明"]
data['clmns']=["包装物料名称","编码","计量类别","规格","基础单位","备注说明",'添加供应商']
s="select id,name,coalesce(code,''),coalesce(remark,''),"+\
"coalesce((select name from mes_measure where id=measure_id),'') "+\
"from mes_packaging where company_id="+str(u.ancestor_id)+" and is_delete=false"
......@@ -3990,9 +3990,11 @@ def list_obj(request, obj):
for r in cur.fetchall():
if show_add:
a='<a href="/obj/edit/packaging/'+str(r[0])+'/">'+r[1]+'</a>'
end = '<a href="/packaging/supplier/manage/'+str(r[0])+'/">'+str('添加供应商')+'</a>'
else:
a=r[1]
data['data'].append([ a,r[2],r[4],r[3] ])
end=str('无权限')
data['data'].append([ a,r[2],r[4],'/','/',r[3],end ])
elif obj=='bom':
data['clmns']=["物料单编码","产成品名称","原材料配比","半成品配比","包装物料耗用"]
s="select id,name,coalesce(code,''), "+\
......@@ -4690,7 +4692,50 @@ def list_obj(request, obj):
data['show_add']=show_add
data['can_edit']=can_edit
return render(request, 'obj/list_obj.html',data)
# lisin 2024-08-19 包装物料供应商管理
def packaging_supplier_manage(request,id=None):
is_saved=False
u=request.user
c=u.company
if id:
obj = Packaging.objects.get(id=int(id))
else:
obj = Packaging(company_id=c.id)
obj.company=request.user.company
obj.company_id=request.user.company.id
units_pkg=[]
#3;"PKG";"包装材料"
# for uu in CompanyUnit.objects.filter(company_id=cid,invtype=3):
# units_pkg.append(uu.unit)
if request.method == 'GET':
form = PackagingForm(instance=obj)
formset_v=PackagingVendorFormset(instance=obj)
print('id---11',id,obj.company_id,obj.company )
elif request.method == "POST":
form = PackagingForm(request.POST, instance=obj)
print('id---',request.POST,obj )
formset_v = PackagingVendorFormset(request.POST, instance=obj)
# if form.is_valid():
# form.save()
# print('formset_v',formset_v.is_valid(),formset_v)
is_saved = True
if formset_v.is_valid():
formset_v.save()
else:
for form in formset_v.forms:
if not form.is_valid():
print('form---',form.errors)
return render(request,'obj/packaging_supplier_manage.html',
{'form':form,'is_saved':is_saved,
'company':c.id,
'formset_v':formset_v
}
)
def get_product_props(company_id, product_id):
props = []
......
......@@ -181,4 +181,37 @@ class CustomerForm(ModelForm):
widgets={
'company':forms.HiddenInput(),
}
# lisin
class PackagingForm(ModelForm):
class Meta:
model=Packaging
fields='__all__'
widgets={
'code': forms.TextInput(attrs={'readonly': 'readonly'}),
}
class CompanyForm(ModelForm):
class Meta:
model=Company
fields='__all__'
widgets={
'company': forms.HiddenInput(),
}
# lisin
class PackagingVendorForm(ModelForm):
class Meta:
model=PackagingVendor
fields='__all__'
widgets = {
'company': forms.HiddenInput(),
'packaging': forms.HiddenInput(),
'vendor': forms.HiddenInput(),
}
def __init__(self, *args, **kwargs):
super(PackagingVendorForm, self).__init__(*args, **kwargs)
self.fields['vendor'].widget.attrs['class'] = "vid"
PackagingVendorFormset=forms.inlineformset_factory(Packaging, PackagingVendor,
form=PackagingVendorForm, extra=0, can_delete=True)
\ No newline at end of file
......@@ -15,8 +15,9 @@ class Vendor(models.Model):
name=models.CharField(_('供应商名称'),max_length=100)
address=models.CharField(_('详细地址'),max_length=100,blank=True,null=True)
cellphone=models.CharField(_('联系电话'),max_length=20,blank=True,null=True)
# contacts=models.CharField(_('联系人'),max_length=50,blank=True,null=True)
remark=models.CharField(_('备注说明'),max_length=100,blank=True,null=True)
external_code=models.CharField(_('外部编码'),max_length=50,blank=True,null=True)
external_code=models.CharField(_('外部编码'),max_length=50,blank=True,null=True,unique=True)
contents = models.TextField(_('介绍'), blank=True, null=True)
is_delete=models.BooleanField(_('是否已删除'),default=False)
......@@ -130,6 +131,8 @@ class Materials(models.Model):
code=models.CharField(_('材料编码'),unique=True,max_length=20,blank=True,null=True)
units=models.JSONField(_('计量单位'),default=list,blank=True,null=True)
safety_qty=models.IntegerField(_('基准单位安全库存量'),blank=True,null=True)
# specification=models.CharField(_('规格'),max_length=50,blank=True,null=True)
# base_unit=models.CharField(_('基础单位'),max_length=50,blank=True,null=True)
remark=models.CharField(_('备注说明'),max_length=50,blank=True,null=True)
dt = models.DateField(_('日期'), default=now, db_index=True,blank=True,null=True)
tm = models.DateTimeField(_('时间'), default=now,blank=True,null=True)
......@@ -187,6 +190,24 @@ class Packaging(models.Model):
def __str__(self):
return self.name
#包材供应商 lisin 2024-08-20
class PackagingVendor(models.Model):
company=models.ForeignKey('company.Company',verbose_name=_('所属企业'),on_delete=models.CASCADE)
packaging=models.ForeignKey(Packaging,verbose_name=_('包装材料'),on_delete=models.CASCADE)
vendor=models.ForeignKey(Vendor,verbose_name=_('供应商'),on_delete=models.CASCADE)
unit_price=models.DecimalField(_('单价'), max_digits=8, decimal_places=2)
dt = models.DateField(_('日期'), default=now, db_index=True,blank=True,null=True)
tm = models.DateTimeField(_('时间'), default=now,blank=True,null=True)
remark=models.CharField(_('备注说明'),max_length=50,blank=True,null=True)
class Meta:
verbose_name = _('包装供应商')
verbose_name_plural = _('包装供应商')
unique_together = ("company", "packaging", "vendor")
def __str__(self):
return self.name
#物料单
......
......@@ -312,9 +312,9 @@ def list_obj(request,what):
return render(request,'mes/list_order.html',data)
elif what=='vendor':
data['subtt']=[_('供应商与客户'),_('供应商')]
data['clmns']=[_('供应商名称'),_('详细地址'),_('联系电话'),_('备注说明'),_('操作')]
data['clmns']=[_('供应商名称'),_('供应商外部编码'),_('详细地址'),_('联系人'),_('联系电话'),_('备注说明'),_('操作')]
d=[]
s="SELECT id,name,coalesce(address,''),coalesce(cellphone,''),coalesce(remark,'') "+\
s="SELECT id,name,coalesce(external_code,'/'),coalesce(address,''),coalesce(contents,'/'),coalesce(cellphone,''),coalesce(remark,'') "+\
"FROM mes_vendor where company_id="+str(c.id)+" and is_delete is false"
cur.execute(s)
for r in cur.fetchall():
......@@ -322,7 +322,7 @@ def list_obj(request,what):
if data['show_add']:
a='<a class="edt" href="/mes/edit/vendor/'+str(r[0])+'/">'+r[1]+'</a>'
btn = '<a class="btn btn-sm btn-default" href="/mes/edit/vendorPhotos/'+str(r[0])+'">资质图片管理</a>'
d.append([ a,r[2],r[3],r[4],btn ])
d.append([ a,r[2],r[3],r[4],r[5],r[6],btn ])
data['data']=d
elif what=='customer':
data['subtt']=[_('供应商与客户'),_('代工客户')]
......
......@@ -52,11 +52,19 @@
<div class="form-group ">
<label class="col-sm-2 control-label ">{% trans '供应商名称:' %} </label>
<div class="col-sm-10">{{ form.name }}</div>
</div>
</div>
<div class="form-group ">
<label class="col-sm-2 control-label ">{% trans '供应商外部编码:' %} </label>
<div class="col-sm-10">{{ form.external_code }}</div>
</div>
<div class="form-group ">
<label class="col-sm-2 control-label ">{% trans '详细地址:' %} </label>
<div class="col-sm-10">{{ form.address }}</div>
</div>
</div>
<div class="form-group ">
<label class="col-sm-2 control-label ">{% trans '联系人:' %} </label>
<div class="col-sm-10">{{ form.contacts }}</div>
</div>
<div class="form-group ">
<label class="col-sm-2 control-label ">{% trans '联系电话:' %} </label>
<div class="col-sm-10">{{ form.cellphone }}</div>
......
......@@ -42,7 +42,15 @@
<div class="form-group ">
<label class="col-sm-2 control-label ">{% trans '计量类别:' %} </label>
<div class="col-sm-10">{{ form.measure }}</div>
</div>
</div>
<div class="form-group ">
<label class="col-sm-2 control-label ">{% trans '规格(例如:1*4*6):' %} </label>
<div class="col-sm-10">{{ form.specification }}</div>
</div>
<div class="form-group ">
<label class="col-sm-2 control-label ">{% trans '基础单位:' %} </label>
<div class="col-sm-10">{{ form.base_unit }}</div>
</div>
<div class="form-group ">
<label class="col-sm-2 control-label ">{% trans '备注说明:' %} </label>
<div class="col-sm-10">{{ form.remark }}</div>
......
差异被折叠。
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论