Merge branch 'develop' of https://e.coding.net/jikimo-hn/jikimo_sfs/jikimo_sf into feature/commercially_launched

This commit is contained in:
mgw
2025-03-19 10:06:52 +08:00
4 changed files with 43 additions and 6 deletions

View File

@@ -15,8 +15,30 @@
<field name="measure_value5" attrs="{ 'column_invisible': [('parent.column_nums', '&lt;', 5)] }"/> <field name="measure_value5" attrs="{ 'column_invisible': [('parent.column_nums', '&lt;', 5)] }"/>
<field name="measure_result"/> <field name="measure_result"/>
<field name="remark"/> <field name="remark"/>
<button name="del_measure_value" type="object" string="删除" class="btn-danger"/> <button name="del_measure_value" type="object" string="删除" class="btn-danger" attrs="{'invisible': [('parent.publish_status', '=', 'published')]}"/>
</tree> </tree>
</field> </field>
</record> </record>
<record id="quality_check_measure_line_form" model="ir.ui.view">
<field name="name">quality.check.measure.line.form</field>
<field name="model">quality.check.measure.line</field>
<field name="arch" type="xml">
<form>
<sheet>
<group>
<group>
<field name="measure_item"/>
<field name="remark"/>
</group>
<group>
<field name="measure_result"/>
</group>
</group>
</sheet>
</form>
</field>
</record>
</odoo> </odoo>

View File

@@ -268,10 +268,10 @@
<field name="categ_type" invisible="1"/> <field name="categ_type" invisible="1"/>
<field name="product_id" attrs="{'invisible' : [('measure_on', '=', 'operation')]}"/> <field name="product_id" attrs="{'invisible' : [('measure_on', '=', 'operation')]}"/>
<field name="part_name" attrs="{'invisible': [('categ_type', '!=', '成品')]}"/> <field name="part_name" attrs="{'invisible': [('categ_type', '!=', '成品')]}"/>
<field name="part_number" attrs="{'invisible': [('categ_type', '!=', '成品')]}"/> <field name="part_number" attrs="{'invisible': [('categ_type', '!=', '成品')], 'readonly': [('publish_status', '=', 'published')]}"/>
<field name="material_name" attrs="{'invisible': [('categ_type', '!=', '成品')]}"/> <field name="material_name" attrs="{'invisible': [('categ_type', '!=', '成品')]}"/>
<field name="total_qty" attrs="{'invisible': ['|', ('measure_on', '!=', 'product'), ('is_out_check', '=', False)]}"/> <field name="total_qty" attrs="{'invisible': ['|', ('measure_on', '!=', 'product'), ('is_out_check', '=', False)]}"/>
<field name="check_qty" attrs="{'invisible': [('measure_on', '!=', 'product')]}"/> <field name="check_qty" attrs="{'invisible': [('measure_on', '!=', 'product')], 'readonly': [('publish_status', '=', 'published')]}"/>
<!-- <field name="categ_type"/> --> <!-- <field name="categ_type"/> -->
<field name="report_number_id"/> <field name="report_number_id"/>
<field name="column_nums" invisible="1"/> <field name="column_nums" invisible="1"/>
@@ -320,7 +320,7 @@
<field name="team_id"/> <field name="team_id"/>
<field name="company_id" groups="base.group_multi_company"/> <field name="company_id" groups="base.group_multi_company"/>
<field name="user_id" string="Control Person" invisible="1"/> <field name="user_id" string="Control Person" invisible="1"/>
<field name="measure_operator" string="操机员"/> <field name="measure_operator" string="操机员" attrs="{'readonly': [('publish_status', '=', 'published')]}"/>
</group> </group>
</group> </group>
@@ -338,11 +338,11 @@
type="action" type="action"
class="btn-primary" class="btn-primary"
attrs="{'force_show':1}" attrs="{'force_show':1}"
context="{'default_model_name': 'quality.check.measure.line'}"/> context="{'default_model_name': 'quality.check.measure.line', 'default_check_id': id}"/>
</div> </div>
<br/> <br/>
<div class="o_row"> <div class="o_row">
<field name="measure_line_ids" widget="tree"/> <field name="measure_line_ids" widget="tree" attrs="{'readonly': [('publish_status', '=', 'published')]}"/>
</div> </div>
</page> </page>
<page string="出厂检验报告" name="out_check" attrs="{'invisible': [('is_out_check', '=', False)]}"> <page string="出厂检验报告" name="out_check" attrs="{'invisible': [('is_out_check', '=', False)]}">

View File

@@ -24,6 +24,7 @@ class ImportComplexModelWizard(models.TransientModel):
file_data = fields.Binary("数据文件") file_data = fields.Binary("数据文件")
model_name = fields.Char(string='Model Name') model_name = fields.Char(string='Model Name')
field_basis = fields.Char(string='Field Basis') field_basis = fields.Char(string='Field Basis')
check_id = fields.Many2one(string='质检单', comodel_name='quality.check')
def get_model_column_name_labels(self, model): def get_model_column_name_labels(self, model):
fields_info = model.fields_get() fields_info = model.fields_get()
@@ -96,6 +97,9 @@ class ImportComplexModelWizard(models.TransientModel):
"""导入Excel数据""" """导入Excel数据"""
if not self.file_data: if not self.file_data:
raise UserError(_('请先上传Excel文件')) raise UserError(_('请先上传Excel文件'))
if self.check_id.measure_line_ids:
self.sudo().check_id.measure_line_ids.unlink()
# 解码文件数据 # 解码文件数据
file_content = base64.b64decode(self.file_data) file_content = base64.b64decode(self.file_data)
@@ -156,6 +160,7 @@ class ImportComplexModelWizard(models.TransientModel):
valid_data_imported = False valid_data_imported = False
# 从第二行开始读取数据(跳过表头) # 从第二行开始读取数据(跳过表头)
max_columns = 1
for row_index in range(1, sheet.nrows): for row_index in range(1, sheet.nrows):
row = sheet.row_values(row_index) row = sheet.row_values(row_index)
@@ -182,8 +187,15 @@ class ImportComplexModelWizard(models.TransientModel):
'remark': row[10] if len(row) > 10 and row[10] else '', # 备注列 'remark': row[10] if len(row) > 10 and row[10] else '', # 备注列
} }
for i in range(1, 6):
if measure_line_vals.get(f'measure_value{i}'):
if i > max_columns:
max_columns = i
self.env['quality.check.measure.line'].create(measure_line_vals) self.env['quality.check.measure.line'].create(measure_line_vals)
valid_data_imported = True valid_data_imported = True
quality_check.column_nums = max_columns
# 检查是否有有效数据被导入 # 检查是否有有效数据被导入
if not valid_data_imported: if not valid_data_imported:

View File

@@ -116,6 +116,9 @@ class QualityCheckWizard(models.TransientModel):
# 对于成品出库的出厂检验报告,增加发布按钮 # 对于成品出库的出厂检验报告,增加发布按钮
def publish(self): def publish(self):
self.current_check_id._check_part_number()
self.current_check_id._check_measure_line()
self.current_check_id._check_check_qty_and_total_qty()
self.current_check_id._do_publish_implementation() self.current_check_id._do_publish_implementation()