Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
Y
ypt_mgw_local
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
图表
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
苏星豪
ypt_mgw_local
Commits
e309cb96
提交
e309cb96
authored
8月 26, 2024
作者:
李思鑫
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
add 包材管理
上级
d16ab6df
全部展开
显示空白字符变更
内嵌
并排
正在显示
13 个修改的文件
包含
648 行增加
和
120 行删除
+648
-120
urls.py
datacenter/urls.py
+12
-4
views.py
listobj/views.py
+22
-16
forms.py
mes/forms.py
+60
-1
models.py
mes/models.py
+79
-19
views.py
mes/views.py
+0
-0
left.html
templates/left.html
+4
-0
edit_bom.html
templates/mes/edit_bom.html
+8
-0
packaging_instore_edit.html
templates/mes/packaging_instore_edit.html
+158
-0
packaging_purchase_edit.html
templates/mes/packaging_purchase_edit.html
+102
-0
packaging_receive.html
templates/mes/packaging_receive.html
+135
-0
edit_companyunit.html
templates/obj/edit_companyunit.html
+58
-0
edit_packaging.html
templates/obj/edit_packaging.html
+1
-1
packaging_supplier_manage.html
templates/obj/packaging_supplier_manage.html
+9
-79
没有找到文件。
datacenter/urls.py
浏览文件 @
e309cb96
...
...
@@ -108,9 +108,6 @@ urlpatterns = [
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
),
...
...
@@ -1223,7 +1220,18 @@ urlpatterns = [
url
(
r'^migrate/check_companies/$'
,
migrate
.
check_companies
),
url
(
r'^migrate/check_products/$'
,
migrate
.
check_products
),
#lisin 2024-08-23 包材管理相关
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/packaging/purchase/list/$'
,
mes_views
.
packaging_purchase_list
),
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/edit/$'
,
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/receive/list/$'
,
mes_views
.
packaging_receive_list
),
# url(r'^mes/packaging/receive/$', mes_views.packaging_receive),
url
(
r'^mes/packaging/receive/(?P<id>\d+)/$'
,
mes_views
.
packaging_receive
),
url
(
r'^mes/storehouse/$'
,
mes_views
.
edit_Storehouse
),
...
...
listobj/views.py
浏览文件 @
e309cb96
...
...
@@ -181,7 +181,10 @@ def edit_obj(request,obj_name,id=None):
# 2022-09-19
'deliverynote'
:[
'发货单明细'
,
'inventory'
,
'DeliveryNote'
],
'inspection_report'
:
[
'质检报告'
,
'company'
,
'InspectionReport'
]
'inspection_report'
:
[
'质检报告'
,
'company'
,
'InspectionReport'
],
#lisin 2024-08-23
'companyunit'
:[
'计量单位'
,
'mes'
,
'CompanyUnit'
],
}
if
obj_name
not
in
d
:
...
...
@@ -923,9 +926,9 @@ def edit_obj(request,obj_name,id=None):
obj
.
company_id
=
cid
#for u in CompanyUnit.objects.filter(company_id=cid,category=2):
# units.append([{'id':u.unit.id,'name':u.unit.name}])
form
=
Materials
Form
(
instance
=
obj
)
form
=
Packaging
Form
(
instance
=
obj
)
elif
request
.
method
==
"POST"
:
form
=
Materials
Form
(
request
.
POST
,
instance
=
obj
)
form
=
Packaging
Form
(
request
.
POST
,
instance
=
obj
)
if
form
.
is_valid
():
form
.
save
()
is_saved
=
True
...
...
@@ -1121,6 +1124,16 @@ def edit_obj(request,obj_name,id=None):
#m.company_id = request.user.company_id
m
.
save
()
is_saved
=
True
#lisin 2024-09-22 计量单位
elif
obj_name
==
'companyunit'
:
if
request
.
method
==
'GET'
:
form
=
CompanyunitForm
(
instance
=
obj
)
elif
request
.
method
==
"POST"
:
form
=
CompanyunitForm
(
request
.
POST
,
instance
=
obj
)
if
form
.
is_valid
():
form
.
save
()
is_saved
=
True
return
render
(
request
,
'obj/edit_companyunit.html'
,{
'form'
:
form
,
'is_saved'
:
is_saved
,
'units'
:[]})
return
render
(
request
,
'obj/'
+
obj_name
+
'.html'
,
{
'form'
:
form
,
'is_saved'
:
is_saved
,
'is_show'
:
is_show
})
...
...
@@ -3937,7 +3950,7 @@ def list_obj(request, obj):
#2021-05-29
elif
obj
==
'companyunit'
:
data
[
'clmns'
]
=
[
_
(
"计量
单位"
),
_
(
'代码'
),(
'基准转换率'
),
_
(
"默认单位"
),
_
(
"计量类别"
),
_
(
"计量标的物
"
),
_
(
"备注说明"
)
]
data
[
'clmns'
]
=
[
_
(
"计量
标的物"
),
_
(
"计量类别"
),
_
(
"计量单位"
),
_
(
'代码'
),(
'基准转换率'
),
_
(
"默认单位
"
),
_
(
"备注说明"
)
]
s
=
"select a.id,coalesce(a.remark,''),case when a.is_default then '是' else '否' end,"
+
\
"(select name from mes_measure where id=a.measure_id),"
+
\
...
...
@@ -3952,7 +3965,7 @@ def list_obj(request, obj):
cur
.
execute
(
s
)
for
r
in
cur
.
fetchall
():
a
=
''
data
[
'data'
]
.
append
([
r
[
5
],
r
[
6
],
r
[
7
],
r
[
2
],
r
[
3
],
r
[
4
],
r
[
1
]
])
data
[
'data'
]
.
append
([
r
[
4
],
r
[
3
],
r
[
5
],
r
[
6
],
r
[
7
],
r
[
2
],
r
[
1
]
])
elif
obj
==
'materials'
:
data
[
'clmns'
]
=
[
"原材料名称"
,
"编码"
,
"计量类别"
,
"备注说明"
]
...
...
@@ -3983,7 +3996,9 @@ def list_obj(request, obj):
elif
obj
==
'packaging'
:
data
[
'clmns'
]
=
[
"包装物料名称"
,
"编码"
,
"计量类别"
,
"规格"
,
"基础单位"
,
"备注说明"
,
'添加供应商'
]
s
=
"select id,name,coalesce(code,''),coalesce(remark,''),"
+
\
"coalesce((select name from mes_measure where id=measure_id),'') "
+
\
"coalesce((select name from mes_measure where id=measure_id),''),"
+
\
"coalesce(specification,''), "
+
\
"case when unit_id IS NOT NULL THEN (select name from mes_unit where id=unit_id) else '' end "
+
\
"from mes_packaging where company_id="
+
str
(
u
.
ancestor_id
)
+
" and is_delete=false"
cur
.
execute
(
s
)
show_add
=
u
.
has_perm
(
'company.sys_admin'
)
...
...
@@ -3994,7 +4009,7 @@ def list_obj(request, obj):
else
:
a
=
r
[
1
]
end
=
str
(
'无权限'
)
data
[
'data'
]
.
append
([
a
,
r
[
2
],
r
[
4
],
'/'
,
'/'
,
r
[
3
],
end
])
data
[
'data'
]
.
append
([
a
,
r
[
2
],
r
[
4
],
r
[
5
],
r
[
6
]
,
r
[
3
],
end
])
elif
obj
==
'bom'
:
data
[
'clmns'
]
=
[
"物料单编码"
,
"产成品名称"
,
"原材料配比"
,
"半成品配比"
,
"包装物料耗用"
]
s
=
"select id,name,coalesce(code,''), "
+
\
...
...
@@ -4705,11 +4720,6 @@ def packaging_supplier_manage(request,id=None):
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
)
...
...
@@ -4725,10 +4735,6 @@ def packaging_supplier_manage(request,id=None):
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
,
...
...
mes/forms.py
浏览文件 @
e309cb96
...
...
@@ -4,6 +4,7 @@ from django.forms import ModelForm
from
.models
import
*
from
django.utils.translation
import
gettext_lazy
as
_
from
datetime
import
datetime
...
...
@@ -182,6 +183,14 @@ class CustomerForm(ModelForm):
'company'
:
forms
.
HiddenInput
(),
}
#lisin 2024-08-22
class
CompanyunitForm
(
ModelForm
):
class
Meta
:
model
=
CompanyUnit
fields
=
'__all__'
widgets
=
{
'company'
:
forms
.
HiddenInput
(),
}
# lisin
class
PackagingForm
(
ModelForm
):
...
...
@@ -189,7 +198,8 @@ class PackagingForm(ModelForm):
model
=
Packaging
fields
=
'__all__'
widgets
=
{
'code'
:
forms
.
TextInput
(
attrs
=
{
'readonly'
:
'readonly'
}),
'company'
:
forms
.
HiddenInput
(),
# 'code': forms.TextInput(attrs={'readonly': 'readonly'}),
}
class
CompanyForm
(
ModelForm
):
class
Meta
:
...
...
@@ -215,3 +225,51 @@ class PackagingVendorForm(ModelForm):
PackagingVendorFormset
=
forms
.
inlineformset_factory
(
Packaging
,
PackagingVendor
,
form
=
PackagingVendorForm
,
extra
=
0
,
can_delete
=
True
)
class
PackagingPurchaseRecordForm
(
ModelForm
):
class
Meta
:
model
=
PackagingPurchasRecord
fields
=
'__all__'
widgets
=
{
'company'
:
forms
.
HiddenInput
(),
}
def
__init__
(
self
,
*
args
,
**
kwargs
):
self
.
_user
=
kwargs
.
pop
(
'user'
)
super
(
PackagingPurchaseRecordForm
,
self
)
.
__init__
(
*
args
,
**
kwargs
)
self
.
fields
[
'vendor'
]
.
queryset
=
Vendor
.
objects
.
filter
(
company_id
=
self
.
_user
.
company
.
id
)
self
.
fields
[
'packaging'
]
.
queryset
=
Packaging
.
objects
.
filter
(
company_id
=
self
.
_user
.
company
.
id
)
class
PackagingInstoreForm
(
ModelForm
):
class
Meta
:
model
=
PackagingInstore
fields
=
'__all__'
widgets
=
{
'code'
:
forms
.
TextInput
(
attrs
=
{
'readonly'
:
'readonly'
}),
'company'
:
forms
.
HiddenInput
(),
# 'Packaging':forms.HiddenInput()
}
def
__init__
(
self
,
*
args
,
**
kwargs
):
self
.
_user
=
kwargs
.
pop
(
'user'
)
super
(
PackagingInstoreForm
,
self
)
.
__init__
(
*
args
,
**
kwargs
)
# 获取当前时间并格式化
now
=
datetime
.
now
()
formatted_time
=
now
.
strftime
(
"
%
Y
%
m
%
d
%
H
%
M
%
S"
)
self
.
fields
[
'code'
]
.
initial
=
f
'RK{formatted_time}'
print
(
f
"Setting code initial value to: RK{formatted_time}"
)
self
.
fields
[
'packaging_purchas'
]
.
queryset
=
PackagingPurchasRecord
.
objects
.
filter
(
company_id
=
self
.
_user
.
company
.
id
)
self
.
fields
[
'packaging_purchas'
]
.
label_from_instance
=
lambda
obj
:
obj
.
code
class
PackagingReceiveForm
(
ModelForm
):
class
Meta
:
model
=
PackagingReceive
fields
=
'__all__'
widgets
=
{
'company'
:
forms
.
HiddenInput
(),
}
def
__init__
(
self
,
*
args
,
**
kwargs
):
self
.
_user
=
kwargs
.
pop
(
'user'
)
super
(
PackagingReceiveForm
,
self
)
.
__init__
(
*
args
,
**
kwargs
)
self
.
fields
[
'packaging'
]
.
queryset
=
Packaging
.
objects
.
filter
(
company_id
=
self
.
_user
.
company
.
id
)
\ No newline at end of file
mes/models.py
浏览文件 @
e309cb96
...
...
@@ -109,8 +109,8 @@ class CompanyUnit(models.Model):
#category=models.SmallIntegerField( _('计量标的物'), choices=((1,_('原材料')), (2,_('半成品')), (3,_('包装材料'))) )
is_default
=
models
.
BooleanField
(
_
(
'是否为默认计量单位'
),
default
=
False
)
remark
=
models
.
CharField
(
_
(
'备注说明'
),
max_length
=
50
,
blank
=
True
,
null
=
True
)
dt
=
models
.
DateField
(
_
(
'日期'
),
default
=
now
,
db_index
=
True
)
tm
=
models
.
DateTimeField
(
_
(
'时间'
),
default
=
now
)
dt
=
models
.
DateField
(
_
(
'日期'
),
default
=
now
,
db_index
=
True
,
blank
=
True
,
null
=
True
)
tm
=
models
.
DateTimeField
(
_
(
'时间'
),
default
=
now
,
blank
=
True
,
null
=
True
)
is_delete
=
models
.
BooleanField
(
_
(
'是否已删除'
),
default
=
False
)
class
Meta
:
...
...
@@ -121,6 +121,10 @@ class CompanyUnit(models.Model):
def
__str__
(
self
):
return
self
.
name
@property
def
name
(
self
):
return
str
(
self
.
unit
)
#原材料
...
...
@@ -178,6 +182,7 @@ class Packaging(models.Model):
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
)
unit
=
models
.
ForeignKey
(
Unit
,
verbose_name
=
_
(
'基础单位'
),
on_delete
=
models
.
CASCADE
)
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
)
...
...
@@ -208,6 +213,75 @@ class PackagingVendor(models.Model):
def
__str__
(
self
):
return
self
.
name
#包材采购记录 lisin 2024-08-23
class
PackagingPurchasRecord
(
models
.
Model
):
code
=
models
.
CharField
(
_
(
'采购单编码'
),
max_length
=
20
,
blank
=
True
,
null
=
True
)
remark
=
models
.
CharField
(
_
(
'备注说明'
),
max_length
=
50
,
blank
=
True
,
null
=
True
)
company
=
models
.
ForeignKey
(
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
)
qty
=
models
.
IntegerField
(
_
(
'数量'
))
unit_price
=
models
.
DecimalField
(
_
(
'单价'
),
max_digits
=
8
,
decimal_places
=
2
)
total_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
)
class
Meta
:
verbose_name
=
_
(
'包材采购记录'
)
verbose_name_plural
=
_
(
'包材采购记录'
)
unique_together
=
(
"company"
,
"packaging"
,
"vendor"
)
def
__str__
(
self
):
return
self
.
name
#包材入库记录 lisin 2024-08-24
class
PackagingInstore
(
models
.
Model
):
code
=
models
.
CharField
(
_
(
'入库编码'
),
max_length
=
20
,
blank
=
True
,
null
=
True
)
remark
=
models
.
CharField
(
_
(
'备注说明'
),
max_length
=
50
,
blank
=
True
,
null
=
True
)
company
=
models
.
ForeignKey
(
Company
,
verbose_name
=
_
(
'所属企业'
),
on_delete
=
models
.
CASCADE
)
packaging
=
models
.
ForeignKey
(
Packaging
,
verbose_name
=
_
(
'包材'
),
on_delete
=
models
.
CASCADE
)
packaging_purchas
=
models
.
ForeignKey
(
PackagingPurchasRecord
,
verbose_name
=
_
(
'包材采购记录'
),
on_delete
=
models
.
CASCADE
)
instore_num
=
models
.
IntegerField
(
_
(
'入库数量'
))
dt
=
models
.
DateField
(
_
(
'入库日期'
),
default
=
now
,
db_index
=
True
,
blank
=
True
,
null
=
True
)
tm
=
models
.
DateTimeField
(
_
(
'入库时间'
),
default
=
now
,
blank
=
True
,
null
=
True
)
class
Meta
:
verbose_name
=
_
(
'包材入库记录'
)
verbose_name_plural
=
_
(
'包材入库记录'
)
unique_together
=
(
"code"
,
"company"
)
def
__str__
(
self
):
return
self
.
code
#包材领用记录 lisin 2024-08-24
class
PackagingReceive
(
models
.
Model
):
code
=
models
.
CharField
(
_
(
'领用编码'
),
max_length
=
20
,
blank
=
True
,
null
=
True
)
remark
=
models
.
CharField
(
_
(
'备注说明'
),
max_length
=
50
,
blank
=
True
,
null
=
True
)
company
=
models
.
ForeignKey
(
Company
,
verbose_name
=
_
(
'所属企业'
),
on_delete
=
models
.
CASCADE
)
packaging
=
models
.
ForeignKey
(
Packaging
,
verbose_name
=
_
(
'包材'
),
on_delete
=
models
.
CASCADE
)
receive_num
=
models
.
IntegerField
(
_
(
'领用数量'
))
dt
=
models
.
DateField
(
_
(
'领用日期'
),
default
=
now
,
db_index
=
True
,
blank
=
True
,
null
=
True
)
tm
=
models
.
DateTimeField
(
_
(
'领用时间'
),
default
=
now
,
blank
=
True
,
null
=
True
)
class
Meta
:
verbose_name
=
_
(
'包材领用记录'
)
verbose_name_plural
=
_
(
'包材领用记录'
)
unique_together
=
(
"code"
,
"company"
)
#包材库存
class
PackagingInventory
(
models
.
Model
):
code
=
models
.
CharField
(
_
(
'库存编码'
),
max_length
=
20
,
blank
=
True
,
null
=
True
)
company
=
models
.
ForeignKey
(
Company
,
verbose_name
=
_
(
'所属企业'
),
on_delete
=
models
.
CASCADE
)
packaging
=
models
.
ForeignKey
(
Packaging
,
verbose_name
=
_
(
'包材'
),
on_delete
=
models
.
CASCADE
)
num
=
models
.
IntegerField
(
_
(
'库存数量'
))
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
=
(
"code"
,
"company"
)
#物料单
...
...
@@ -278,6 +352,8 @@ class BOMpackaging(models.Model):
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
)
forecast
=
models
.
DecimalField
(
_
(
'预估单价'
),
max_digits
=
8
,
decimal_places
=
2
,
blank
=
True
,
null
=
True
)
specification
=
models
.
CharField
(
_
(
'规格'
),
max_length
=
50
,
blank
=
True
,
null
=
True
)
class
Meta
:
verbose_name
=
_
(
'包材用料单'
)
...
...
@@ -623,19 +699,3 @@ class LabelBindXG(models.Model):
class
Meta
:
verbose_name
=
_
(
'箱盖'
)
verbose_name_plural
=
_
(
'箱盖'
)
\ No newline at end of file
#包材供应商 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
=
_
(
'包装材料'
),
related_name
=
'packingVendor_pkg'
,
on_delete
=
models
.
CASCADE
)
vendor
=
models
.
ForeignKey
(
Vendor
,
verbose_name
=
_
(
'供应商'
),
related_name
=
'packingVendor_vendor'
,
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
=
_
(
'包装供应商'
)
def
__str__
(
self
):
return
self
.
name
\ No newline at end of file
mes/views.py
浏览文件 @
e309cb96
差异被折叠。
点击展开。
templates/left.html
浏览文件 @
e309cb96
...
...
@@ -437,6 +437,10 @@
</li>
<li><a><i
class=
"fa fa-bar-chart-o"
></i>
{% trans '库存管理' %}
<span
class=
"fa fa-chevron-down"
></span></a>
<ul
class=
"nav child_menu"
>
<li><a
class=
"l-a"
href=
"mes/packaging/purchase/list/"
>
{% trans '包装材料采购' %}
</a></li>
<li><a
class=
"l-a"
href=
"mes/packaging/instore/list/"
>
{% trans '包装材料入库(根据采购订单)' %}
</a></li>
<li><a
class=
"l-a"
href=
"mes/packaging/receive/list/"
>
{% trans '包装材料领用' %}
</a></li>
<li><a
class=
"l-a"
href=
"mes/packaging/inventory/list/"
>
{% trans '包装材料库存报表' %}
</a></li>
<li><a
class=
"l-a"
href=
"/mes/list/batch/25/"
>
{% trans '原材料入库' %}
</a></li>
<li><a
class=
"l-a"
href=
"/mes/list/batch/26/"
>
{% trans '原材料出库' %}
</a></li>
<li><a
class=
"l-a"
href=
"/mes/list/batch/33/"
>
{% trans '半成品入库' %}
</a></li>
...
...
templates/mes/edit_bom.html
浏览文件 @
e309cb96
...
...
@@ -234,7 +234,11 @@
'
<td><span
class=
"mat_name"
>
'+label+'
</span></td>
'+
'
<td><input
type=
"number"
step=
"0.01"
value=
"'+$('#pkg_qty').val()+'"
class=
"form-control"
'+
'
id=
"id_bompackaging_bom-'+count+'-qty"
name=
"bompackaging_bom-'+count+'-qty"
/></td>
'+
'
<td><input
type=
"sting"
value=
"'+$('#pkg_qty').val()+'"
class=
"form-control"
'+
'
id=
"id_bompackaging_bom-'+count+'-specification"
name=
"bompackaging_bom-'+count+'-specification"
/></td>
'+
'
<td>
'+$('#pkg_unit').find("option:selected").text()+'
</td>
'+
'
<td><input
type=
"number"
value=
"'+$('#pkg_qty').val()+'"
class=
"form-control"
'+
'
id=
"id_bompackaging_bom-'+count+'-forecast"
name=
"bompackaging_bom-'+count+'-forecast"
/></td>
'+
'
</tr>
';
$('#tb_pkg tbody').append(html);
$(prefix+'TOTAL_FORMS').attr('value', (count+1));
...
...
@@ -397,7 +401,9 @@
<th>
{% trans '删除' %}
</th>
<th>
{% trans '包装材料名称 ' %}
</th>
<th>
{% trans '数量 ' %}
</th>
<th>
{% trans '规格' %}
</th>
<th>
{% trans '单位' %}
</th>
<th>
{% trans '预计单价' %}
</th>
</tr></thead>
<tbody>
{% for f in formset_p %}
...
...
@@ -406,7 +412,9 @@
<td>
{{f.DELETE}}
</td>
<td>
{{ f.instance.packaging.name }}
</td>
<td>
{{ f.qty }}
</td>
<td>
{{ f.instance.specification.name }}
</td>
<td>
{{ f.instance.unit.name }}
</td>
<td>
{{ f.instance.forecast.name }}
</td>
</tr>
{% endfor %}
</tbody>
...
...
templates/mes/packaging_instore_edit.html
0 → 100644
浏览文件 @
e309cb96
{% extends 'obj_form.html' %}
{% load i18n %}
{% load tj_filters %}
{% block css %}
{{ block.super }}
{% endblock %}
{% block js %}
{{ block.super }}
$('.btn-save').click(function(){
$.SubmitForm('#obj_form form','{{request.path}}');
});
{% endblock %}
{% block subtitle-1 %}
{% trans '库存管理' %}
{% endblock %}
{% block subtitle-2 %}
{% trans '包装材料入库' %}
{% endblock %}
{% block form_content %}
{{ block.super }}
<script
type=
"text/javascript"
>
$
(
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
=
'RK'
+
year
+
month
+
day
+
hours
+
minutes
+
seconds
;
$
(
'#id_code'
).
val
(
defaultCodeValue
);
//入库数量校验
$
(
'#id_instore_num'
).
on
(
'input'
,
function
(){
var
purchase_num
=
$
(
'#qty'
).
val
()
*
1
;
var
instore_num
=
$
(
this
).
val
()
*
1
;
if
(
purchase_num
&&
instore_num
){
if
(
instore_num
>
purchase_num
){
toastr
.
error
(
'入库数量不能大于采购数量'
);
$
(
'#id_instore_num'
).
val
(
''
);
}
}
})
// 监听code字段的变化
$
(
'#id_packaging_purchas'
).
on
(
'change'
,
function
()
{
var
id
=
$
(
this
).
val
();
console
.
log
(
'codeValue--'
,
id
)
// 发送AJAX请求获取相关数据
$
.
ajax
({
url
:
'/mes/query/packaging/purchase/'
,
method
:
'GET'
,
data
:
{
id
:
id
},
success
:
function
(
response
)
{
// 在页面上显示相关数据
console
.
log
(
'packagingPurchasRecord'
,
response
)
const
{
dt
,
qty
,
packaging_id
,
packaging_code
,
packaging_name
,
packaging_specification
,
vendor_name
}
=
response
$
(
'#dt'
).
val
(
dt
);
$
(
'#id_packaging'
).
val
(
packaging_id
);
$
(
'#packaging_code'
).
val
(
packaging_code
);
$
(
'#packaging_name'
).
val
(
packaging_name
);
$
(
'#packaging_specification'
).
val
(
packaging_specification
);
$
(
'#vendor_name'
).
val
(
vendor_name
);
$
(
'#qty'
).
val
(
qty
);
},
error
:
function
(
xhr
,
status
,
error
)
{
console
.
error
(
'AJAX请求失败:'
,
error
);
}
});
});
});
</script>
<input
type=
'hidden'
type=
"number"
value=
""
name=
"packaging"
id=
"id_packaging"
/>
<div
class=
"form-group "
>
<label
class=
"col-sm-2 control-label "
>
{% trans '入库编码:' %}
</label>
<div
class=
"col-sm-10"
>
{{ form.code }}
</div>
</div>
<div
class=
"form-group "
>
<label
class=
"col-sm-2 control-label "
>
{% trans '入库时间:' %}
</label>
<div
class=
"col-sm-10"
>
{{ form.dt }}
</div>
</div>
<div
class=
"form-group "
>
<label
class=
"col-sm-2 control-label "
>
{% trans '采购编号:' %}
</label>
<div
class=
"col-sm-10"
>
{{ form.packaging_purchas }}
</div>
</div>
<div
class=
"form-group "
>
<label
class=
"col-sm-2 control-label "
>
{% trans '采购时间:' %}
</label>
<div
class=
"col-sm-10"
>
<input
type=
"text"
disabled
name=
'dt'
id=
'dt'
/>
</div>
</div>
<div
class=
"form-group "
>
<label
class=
"col-sm-2 control-label "
>
{% trans '包材编码:' %}
</label>
<div
class=
"col-sm-10"
>
<input
type=
"text"
disabled
name=
'packaging_code'
id=
'packaging_code'
/>
</div>
</div>
<div
class=
"form-group "
>
<label
class=
"col-sm-2 control-label "
>
{% trans '包材名称:' %}
</label>
<div
class=
"col-sm-10"
>
<input
type=
"text"
disabled
name=
'packaging_name'
id=
'packaging_name'
/>
</div>
</div>
<div
class=
"form-group "
>
<label
class=
"col-sm-2 control-label "
>
{% trans '规格:' %}
</label>
<div
class=
"col-sm-10"
>
<input
type=
"text"
disabled
name=
'packaging_specification'
id=
'packaging_specification'
/>
</div>
</div>
<div
class=
"form-group "
>
<label
class=
"col-sm-2 control-label "
>
{% trans '供应商:' %}
</label>
<div
class=
"col-sm-10"
>
<input
type=
"text"
disabled
name=
'vendor_name'
id=
'vendor_name'
/>
</div>
</div>
<div
class=
"form-group "
>
<label
class=
"col-sm-2 control-label "
>
{% trans '采购数量:' %}
</label>
<div
class=
"col-sm-10"
>
<input
type=
"text"
disabled
name=
'qty'
id=
'qty'
/>
</div>
</div>
<div
class=
"form-group "
>
<label
class=
"col-sm-2 control-label "
>
{% trans '入库数量:' %}
</label>
<div
class=
"col-sm-10"
>
{{ form.instore_num }}
</div>
</div>
<div
class=
"form-group "
>
<label
class=
"col-sm-2 control-label "
>
{% trans '备注说明:' %}
</label>
<div
class=
"col-sm-10"
>
{{ form.remark }}
</div>
</div>
<div>
<a
class=
"btn btn-primary btn-save"
type=
"submit"
style=
"float:right;"
>
{% trans '保存' %}
</a>
</div>
{% endblock %}
templates/mes/packaging_purchase_edit.html
0 → 100644
浏览文件 @
e309cb96
{% extends 'obj_form.html' %}
{% load i18n %}
{% load tj_filters %}
{% block css %}
{{ block.super }}
{% endblock %}
{% block js %}
{{ block.super }}
$('.btn-save').click(function(){
$.SubmitForm('#obj_form form','{{request.path}}');
});
{% endblock %}
{% block subtitle-1 %}
{% trans '库存管理' %}
{% endblock %}
{% block subtitle-2 %}
{% trans '包装材料采购' %}
{% endblock %}
{% block form_content %}
{{ block.super }}
<script
type=
"text/javascript"
>
$
(
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
()
{
var
qty
=
parseFloat
(
$
(
'#id_qty'
).
val
())
||
0
;
var
unitPrice
=
parseFloat
(
$
(
'#id_unit_price'
).
val
())
||
0
;
var
totalPrice
=
qty
*
unitPrice
;
console
.
log
(
'totalPrice---'
,
totalPrice
)
$
(
'#id_total_price'
).
val
(
totalPrice
.
toFixed
(
2
));
}
$
(
'#id_qty, #id_unit_price'
).
on
(
'input'
,
function
()
{
calculateTotalPrice
();
});
// 初始计算
calculateTotalPrice
();
});
</script>
<div
class=
"form-group "
>
<label
class=
"col-sm-2 control-label "
>
{% trans '采购编码:' %}
</label>
<div
class=
"col-sm-10"
>
{{ form.code }}
</div>
</div>
<div
class=
"form-group "
>
<label
class=
"col-sm-2 control-label "
>
{% trans '采购时间:' %}
</label>
<div
class=
"col-sm-10"
>
{{ form.dt }}
</div>
</div>
<div
class=
"form-group "
>
<label
class=
"col-sm-2 control-label "
>
{% trans '包材:' %}
</label>
<div
class=
"col-sm-10"
>
{{ form.packaging }}
</div>
</div>
<div
class=
"form-group "
>
<label
class=
"col-sm-2 control-label "
>
{% trans '供应商:' %}
</label>
<div
class=
"col-sm-10"
>
{{ form.vendor }}
</div>
</div>
<div
class=
"form-group "
>
<label
class=
"col-sm-2 control-label "
>
{% trans '采购数量:' %}
</label>
<div
class=
"col-sm-10"
>
{{ form.qty }}
</div>
</div>
<div
class=
"form-group "
>
<label
class=
"col-sm-2 control-label "
>
{% trans '采购单价:' %}
</label>
<div
class=
"col-sm-10"
>
{{ form.unit_price }}
</div>
</div>
<div
class=
"form-group "
>
<label
class=
"col-sm-2 control-label "
>
{% trans '采购总价:' %}
</label>
<div
class=
"col-sm-10"
>
{{ form.total_price }}
</div>
</div>
<div
class=
"form-group "
>
<label
class=
"col-sm-2 control-label "
>
{% trans '备注说明:' %}
</label>
<div
class=
"col-sm-10"
>
{{ form.remark }}
</div>
</div>
<div>
<a
class=
"btn btn-primary btn-save"
type=
"submit"
style=
"float:right;"
>
{% trans '保存' %}
</a>
</div>
{% endblock %}
templates/mes/packaging_receive.html
0 → 100644
浏览文件 @
e309cb96
{% extends 'obj_form.html' %}
{% load i18n %}
{% load tj_filters %}
{% block css %}
{{ block.super }}
{% endblock %}
{% block js %}
{{ block.super }}
$('.btn-save').click(function(){
$.SubmitForm('#obj_form form','{{request.path}}');
});
{% endblock %}
{% block subtitle-1 %}
{% trans '库存管理' %}
{% endblock %}
{% block subtitle-2 %}
{% trans '包装材料领用' %}
{% endblock %}
{% block form_content %}
{{ block.super }}
<script
type=
"text/javascript"
>
$
(
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
=
'LY'
+
year
+
month
+
day
+
hours
+
minutes
+
seconds
;
$
(
'#id_code'
).
val
(
defaultCodeValue
);
//库存数量校验
$
(
'#id_receive_num'
).
on
(
'input'
,
function
(){
var
inventory_num
=
$
(
'#inventory_num'
).
val
()
*
1
;
var
receive_num
=
$
(
this
).
val
()
*
1
;
if
(
receive_num
>
inventory_num
){
toastr
.
error
(
'领取数量不能大于库存数量!'
);
var
receive_num
=
$
(
this
).
val
(
''
);
}
})
//根据包材id 查询库存、包材信息
$
(
'#id_packaging'
).
on
(
'change'
,
function
()
{
var
id
=
$
(
this
).
val
();
console
.
log
(
'codeValue--'
,
id
)
// 发送AJAX请求获取相关数据
$
.
ajax
({
url
:
'/mes/packaging/inventory/query/'
,
method
:
'GET'
,
data
:
{
id
:
id
},
success
:
function
(
response
)
{
// 在页面上显示相关数据
console
.
log
(
'packagingPurchasRecord'
,
response
)
const
{
dt
,
inventory_num
,
packaging_code
,
packaging_name
,
packaging_specification
,
vendor_name
}
=
response
$
(
'#dt'
).
val
(
dt
);
$
(
'#packaging_code'
).
val
(
packaging_code
);
$
(
'#packaging_name'
).
val
(
packaging_name
);
$
(
'#packaging_specification'
).
val
(
packaging_specification
);
$
(
'#inventory_num'
).
val
(
inventory_num
);
},
error
:
function
(
xhr
,
status
,
error
)
{
console
.
error
(
'AJAX请求失败:'
,
error
);
}
});
});
});
</script>
<div
class=
"form-group "
>
<label
class=
"col-sm-2 control-label "
>
{% trans '领用编码:' %}
</label>
<div
class=
"col-sm-10"
>
{{ form.code }}
</div>
</div>
<div
class=
"form-group "
>
<label
class=
"col-sm-2 control-label "
>
{% trans '领用时间:' %}
</label>
<div
class=
"col-sm-10"
>
{{ form.dt }}
</div>
</div>
<div
class=
"form-group "
>
<label
class=
"col-sm-2 control-label "
>
{% trans '包材名称:' %}
</label>
<div
class=
"col-sm-10"
>
{{ form.packaging }}
</div>
</div>
<div
class=
"form-group "
>
<label
class=
"col-sm-2 control-label "
>
{% trans '包材编码:' %}
</label>
<div
class=
"col-sm-10"
>
<input
type=
"text"
disabled
name=
'packaging_code'
id=
'packaging_code'
/>
</div>
</div>
<div
class=
"form-group "
>
<label
class=
"col-sm-2 control-label "
>
{% trans '规格:' %}
</label>
<div
class=
"col-sm-10"
>
<input
type=
"text"
disabled
name=
'packaging_specification'
id=
'packaging_specification'
/>
</div>
</div>
<div
class=
"form-group "
>
<label
class=
"col-sm-2 control-label "
>
{% trans '现有库存数量:' %}
</label>
<div
class=
"col-sm-10"
>
<input
type=
"text"
disabled
name=
'inventory_num'
id=
'inventory_num'
/>
</div>
</div>
<div
class=
"form-group "
>
<label
class=
"col-sm-2 control-label "
>
{% trans '领用数量:' %}
</label>
<div
class=
"col-sm-10"
>
{{ form.receive_num }}
</div>
</div>
<div
class=
"form-group "
>
<label
class=
"col-sm-2 control-label "
>
{% trans '备注说明:' %}
</label>
<div
class=
"col-sm-10"
>
{{ form.remark }}
</div>
</div>
<div>
<a
class=
"btn btn-primary btn-save"
type=
"submit"
style=
"float:right;"
>
{% trans '保存' %}
</a>
</div>
{% endblock %}
templates/obj/edit_companyunit.html
0 → 100644
浏览文件 @
e309cb96
{% extends 'obj_form.html' %}
{% load i18n %}
{% load tj_filters %}
{% block css %}
{{ block.super }}
{% endblock %}
{% block js %}
{{ block.super }}
$('.btn-save').click(function(){
$.SubmitForm('#obj_form form','{{request.path}}');
});
{% endblock %}
{% block subtitle-1 %}
{% trans '物料信息' %}
{% endblock %}
{% block subtitle-2 %}
{% trans '计量单位' %}
{% endblock %}
{% block form_content %}
{{ block.super }}
<div
class=
"form-group "
>
<label
class=
"col-sm-2 control-label "
>
{% trans '物料类型:' %}
</label>
<div
class=
"col-sm-10"
>
{{ form.invtype }}
</div>
</div>
<div
class=
"form-group "
>
<label
class=
"col-sm-2 control-label "
>
{% trans '计量类别:' %}
</label>
<div
class=
"col-sm-10"
>
{{ form.measure }}
</div>
</div>
<div
class=
"form-group "
>
<label
class=
"col-sm-2 control-label "
>
{% trans '计量单位:' %}
</label>
<div
class=
"col-sm-10"
>
{{ form.unit }}
</div>
</div>
<div
class=
"form-group "
>
<label
class=
"col-sm-2 control-label "
>
{% trans '是否默认计量单位:' %}
</label>
<div
class=
"col-sm-1"
>
{{ form.is_default }}
</div>
</div>
<div
class=
"form-group "
>
<label
class=
"col-sm-2 control-label "
>
{% trans '备注说明:' %}
</label>
<div
class=
"col-sm-10"
>
{{ form.remark }}
</div>
</div>
<div>
<a
class=
"btn btn-primary btn-save"
type=
"submit"
style=
"float:right;"
>
{% trans '保存' %}
</a>
</div>
{% endblock %}
templates/obj/edit_packaging.html
浏览文件 @
e309cb96
...
...
@@ -49,7 +49,7 @@
</div>
<div
class=
"form-group "
>
<label
class=
"col-sm-2 control-label "
>
{% trans '基础单位:' %}
</label>
<div
class=
"col-sm-10"
>
{{ form.
base_
unit }}
</div>
<div
class=
"col-sm-10"
>
{{ form.unit }}
</div>
</div>
<div
class=
"form-group "
>
<label
class=
"col-sm-2 control-label "
>
{% trans '备注说明:' %}
</label>
...
...
templates/obj/packaging_supplier_manage.html
浏览文件 @
e309cb96
...
...
@@ -48,6 +48,7 @@
var b=false;
var id=$('#vendor_id').val();
var name=$('#vendor_label').val();
var company=$('#id_company').val()
<!-- var unit=$('#product_unit').val(); -->
var unit_price=$('#vendor_base_unit').val();
...
...
@@ -77,8 +78,8 @@
$('#packaging-vendor tbody').append(compiledTmpl);
$(prefix+count+'-vendor').val(id);
$(prefix+count+'-unit_price').val(unit_price);
$(prefix+count+'-company').val(company);
$(prefix+'TOTAL_FORMS').attr('value', (count+1));
console.log('www---',id,prefix+count);
}
}
});
...
...
@@ -127,23 +128,12 @@
{% trans "包装物料" %}
{% endblock %}
<span
style=
"margin-left:10px; color:green; "
>
{% block subtitle-3 %}
{% if form.instance.id %}
{% trans "修改" %}
{% else %}
{% trans "新建" %}
{% endif %}
{% endblock %}
</span>
{% block form_content %}
{{ block.super }}
<input
type=
"hidden"
name=
"company"
value=
"{{company}}"
id=
"id_company"
class=
"form-control"
>
<div
class=
"form-group "
>
<label
class=
"col-sm-1 control-label "
>
{% trans '物料编号' %}
</label>
<div
class=
"col-sm-5"
>
{{ form.code }}
</div>
...
...
@@ -156,9 +146,11 @@
<div
class=
"form-group "
>
<label
class=
"col-sm-1 control-label "
>
{% trans '计量类别' %}
</label>
<div
class=
"col-sm-2"
>
{{ form.measure }}
</div>
</div>
<label
class=
"col-sm-1 control-label "
>
{% trans '所属企业' %}
</label>
<div
class=
"col-sm-2"
>
{{ company }}
</div>
<div
class=
"form-group "
>
<label
class=
"col-sm-1 control-label "
>
{% trans '基础单位' %}
</label>
<div
class=
"col-sm-2"
>
{{ form.unit }}
</div>
</div>
...
...
@@ -211,7 +203,8 @@
{% block fmset %}
<table
style=
"display:none;"
>
<tr
id=
"id_packagingvendor_set-__prefix__"
>
<td>
{{formset_v.empty_form.DELETE}}{{formset_v.empty_form.id}}{{formset_v.empty_form.status}}
</td>
<input
type=
"hidden"
value=
"{{company}}"
name=
"company"
/>
<td>
{{formset_v.empty_form.DELETE}}{{formset_v.empty_form.id}}{{formset_v.empty_form.status}}{{formset_v.empty_form.company}}
</td>
<td>
{{formset_v.empty_form.vendor}}
<span
class=
'vendor'
></span></td>
<td>
{{formset_v.empty_form.unit_price}}
</td>
<!-- <td>{{formset_v.empty_form.package_id}}</td> -->
...
...
@@ -220,17 +213,6 @@
</table>
{{ formset_v.management_form }}
<!-- <table style="display:none;">
<tr id="id_schemematerials_set-__prefix__" >
<td>{{mset.empty_form.DELETE }}{{mset.empty_form.id}}{{mset.empty_form.status}}</td>
<td>{{mset.empty_form.material}}<span class='material'></span></td>
<td>{{mset.empty_form.unit_price}}</td>
<td>{{mset.empty_form.remark}}</td>
</tr>
</table>
{{ mset.management_form }} -->
<div
class=
"x_panel"
id=
'packaging-vendor'
>
<div
class=
"x_title"
>
<h2
style=
'font-size:15px;'
><i
class=
"fa fa-gift"
></i>
供应商
</h2>
...
...
@@ -275,7 +257,7 @@
<tbody>
{% for f in formset_v %}
<tr>
<td>
{{f.DELETE}}{{f.id}}{{f.status}}
</td>
<td>
{{f.DELETE}}{{f.id}}{{f.status}}
{{f.company}}
</td>
<td>
{{f.vendor}}
<span
class=
'vendor'
>
{{f.instance.vendor.name}}
</span></td>
<td>
{{f.unit_price}}
</td>
<!-- <td>{{f.package_id}}</td> -->
...
...
@@ -288,58 +270,6 @@
</div>
</div>
<!-- <div class="x_panel" id='scheme-material'>
<div class="x_title">
<h2 style='font-size:15px;'><i class="fa fa-gift"></i> 促销物料 </h2>
<ul class="nav navbar-right panel_toolbox">
<li><a class="collapse-link"><i class="fa fa-chevron-up"></i></a>
</li>
<li class="dropdown">
<a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-expanded="false"><i class="fa fa-wrench"></i></a>
<ul class="dropdown-menu" role="menu">
<li><a href="#">Settings 1</a>
</li>
<li><a href="#">Settings 2</a>
</li>
</ul>
</li>
<li><a class="close-link"><i class="fa fa-close"></i></a>
</li>
</ul>
<div class="clearfix"></div>
</div>
<div class="x_content">
<div class="form-group ">
<div class='col-sm-6'><input id='material_label' placeholder='物料名称'><input type='hidden' id='material_id'></div>
<div class='col-sm-2'><input id='material_unit_price' placeholder='数量'></div>
<span class="input-group-btn"><button type="button" class="btn btn-success add-material">
<span class='glyphicon glyphicon-arrow-down'></span></button></span>
</div>
<div class='table-responsive' style='padding:10px;'>
<table class="table table-condensed table-bordered table-hover">
<thead>
<th style='width:5%;'>删除</th>
<th style='width:45%;'>物料名称</th>
<th style='width:10%;'>数量</th>
<th style='width:45%;'>备注</th>
</thead>
<tbody>
{% for f in mset %}
<tr>
<td>{{f.DELETE}}{{f.id}}{{f.status}}</td>
<td>{{f.material}}<span class='material'>{{f.instance.material.name}}</span></td>
<td>{{f.unit_price}}</td>
<td>{{f.remark}}</td>
</tr>
{% endfor %}
</tbody>
</table></div>
</div>
</div> -->
<div>
<a
class=
"btn btn-primary btn-save"
type=
"submit"
style=
"float:right;"
>
{% trans '保存' %}
</a></div>
{% endblock %}
...
...
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论