Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
Y
ypt_mgw_local
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
图表
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
苏星豪
ypt_mgw_local
Commits
808d2a7f
提交
808d2a7f
authored
8月 22, 2024
作者:
李思鑫
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
包材管理 add
上级
5efa619c
全部展开
隐藏空白字符变更
内嵌
并排
正在显示
8 个修改的文件
包含
133 行增加
和
13 行删除
+133
-13
urls.py
datacenter/urls.py
+4
-0
views.py
listobj/views.py
+50
-5
forms.py
mes/forms.py
+35
-1
models.py
mes/models.py
+22
-1
views.py
mes/views.py
+3
-3
edit_vendor.html
templates/mes/edit_vendor.html
+10
-2
edit_packaging.html
templates/obj/edit_packaging.html
+9
-1
packaging_supplier_manage.html
templates/obj/packaging_supplier_manage.html
+0
-0
没有找到文件。
datacenter/urls.py
浏览文件 @
808d2a7f
...
...
@@ -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
),
...
...
listobj/views.py
浏览文件 @
808d2a7f
...
...
@@ -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
=
[]
...
...
mes/forms.py
浏览文件 @
808d2a7f
...
...
@@ -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
mes/models.py
浏览文件 @
808d2a7f
...
...
@@ -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
#物料单
...
...
mes/views.py
浏览文件 @
808d2a7f
...
...
@@ -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'
]
=
[
_
(
'供应商与客户'
),
_
(
'代工客户'
)]
...
...
templates/mes/edit_vendor.html
浏览文件 @
808d2a7f
...
...
@@ -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>
...
...
templates/obj/edit_packaging.html
浏览文件 @
808d2a7f
...
...
@@ -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>
...
...
templates/obj/packaging_supplier_manage.html
0 → 100644
浏览文件 @
808d2a7f
差异被折叠。
点击展开。
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论