名柏表 2024-06-29 20:55 采纳率: 0%
浏览 6
问题最晚将于07月07日00:00点结题

工价表引用工艺路线,应如何制作py和xml文件

需增加新表: 工价表

表头            单据编号        
                            单据日期                        
            工艺路线:    (引用工艺路线MrpProcessRouting)                                    
            产品    (引用工艺路线MrpProcessRouting)                                    
            产品变体    (引用工艺路线MrpProcessRouting)                            
                   加工来源:
                        
表体    行号        工艺明细         需外协              计件单位     工价    起订量要求    旧工价参考    备注
    1        工艺1    (需外协----引用工艺路线MrpProcessRouting)widget="boolean_toggle"                                    
    2        (工艺明细---引用工艺路线MrpProcessRouting)widget="boolean_toggle"                                        
    3        工艺3                                        
    4        工艺4                                        
    5        工艺5                            
    6        工艺6    

    class MrpProcessRouting(models.Model):
    _name = 'mrp.process.routing'
    _inherit = ['mail.thread']
    _description = "工艺路线"
    _order = 'active desc, sequence, name'

    active = fields.Boolean(string="Active", default=True, tracking=True)
    sequence = fields.Integer(string="路线序号", default=1)
    name = fields.Char(string="路线名称", required=True, tracking=True)
    reference = fields.Char(string='单据编号', required=True, copy=False, readonly=True,
                            default=lambda self: _('New'))
    routing_state = fields.Selection(
        selection=[('draft', "草稿"), ('await', "待审核"), ('under_review', "审核中"), ('reviewed', "已审核")],
        string="工艺路线状态", default='draft', tracking=True)
    routing_type = fields.Selection(selection=[('process', "按工艺"), ('group', "按工艺分组")],
                                    default='process',
                                    string="工艺路线类型",
                                    tracking=True)
    process_item = fields.Many2many('mrp.process.item', string="工艺明细")
    group_classify_item = fields.Many2many('mrp.process.item.classify', string="工艺明细分类")

    product_id = fields.Many2one('product.product', '产品变体', required=True)
    product_tmpl_id = fields.Many2one('product.template', '产品', related='product_id.product_tmpl_id',
                                      store=True, index=True)

    review_state = fields.Selection(
        selection=[('draft', "草稿"), ('await', "待审核"), ('under_review', "审核中"), ('reviewed', "已审核")],
        string="审核状态", default='draft', tracking=True)
    review_user = fields.Many2one('res.partner', string="审核人", tracking=True)
    review_date = fields.Datetime(string="审核时间", tracking=True)
    remark = fields.Html(string="备注")
    inner_remark = fields.Html(string="内部备注")

    process_fee_id = fields.Many2one('mrp.process.price', string='加工费', ondelete='cascade')

    @api.model
    def create(self, vals):
        if vals.get('reference', _('New')) == _('New'):
            vals['reference'] = self.env['ir.sequence'].next_by_code('mrp.process.routing') or _('New')
        res = super(MrpProcessRouting, self).create(vals)
        return res

class MrpProcessItemClassify(models.Model):
    _name = 'mrp.process.item.classify'
    _inherit = ['mail.thread']
    _description = "工艺明细分类"
    _order = 'active desc, sequence, name'

    active = fields.Boolean(string="Active", default=True, tracking=True)
    name = fields.Char(string="分类名称", required=True, tracking=True)
    reference = fields.Char(string='单据编号', required=True, copy=False, readonly=True,
                       default=lambda self: _('New'))
    sequence = fields.Integer(string="分类序号", default=1, tracking=True)
    process_item = fields.Many2many('mrp.process.item', string="工艺明细")
    outsourcing_required = fields.Boolean(string="需外协", default=False, tracking=True)
    remark = fields.Text(string="备注")

    @api.model
    def create(self, vals):
        if vals.get('reference', _('New')) == _('New'):
            vals['reference'] = self.env['ir.sequence'].next_by_code('mrp.process.item.classify') or _('New')
        res = super(MrpProcessItemClassify, self).create(vals)
        return res


class MrpProcessItem(models.Model):
    _name = 'mrp.process.item'
    _description = "工艺明细"
    _inherit = ['mail.thread']
    _order = 'active desc, sequence, name'

    active = fields.Boolean(string="Active", default=True, tracking=True)

    name = fields.Char(string="工艺明细名称", required=True, tracking=True)
    reference = fields.Char(string='单据编号', required=True, copy=False, readonly=True,
                       default=lambda self: _('New'))
    sequence = fields.Integer(string="工艺明细序号", default=1, tracking=True)
    outsourcing_required = fields.Boolean(string="需外协", default=False, tracking=True)
    remark = fields.Text(string="备注")



    @api.model
    def create(self, vals):
        if vals.get('reference', _('New')) == _('New'):
            vals['reference'] = self.env['ir.sequence'].next_by_code('mrp.process.item') or _('New')
        res = super(MrpProcessItem, self).create(vals)
        return res
  <!-- 工艺明细 Form View -->
        <record id="view_mrp_process_item_form" model="ir.ui.view">
            <field name="name">工艺明细form</field>
            <field name="model">mrp.process.item</field>
            <field name="arch" type="xml">
                <form string="工艺明细">
                    <sheet>
                        <group>
                            <field name="sequence" invisible="1"/>
                            <field name="name"/>
                            <field name="reference"/>
                            <field name="outsourcing_required" widget="boolean_toggle"/>
                        </group>
                        <group>
                            <field name="remark"/>
                        </group>
                        <group string="维护信息">
                            <field name="create_uid" />
                            <field name="create_date" />
                            <field name="write_uid" />
                            <field name="write_date"/>
                        </group>
                    </sheet>
                    <div class="oe_chatter">
                        <field name="message_follower_ids" groups="base.group_user"/>
                        <field name="message_ids"/>
                    </div>
                </form>
            </field>
        </record>
   <record id="view_mrp_process_item_classify_form" model="ir.ui.view">
            <field name="name">工艺明细分类form</field>
            <field name="model">mrp.process.item.classify</field>
            <field name="arch" type="xml">
                <form string="工艺明细分类">
                    <sheet>
                        <group>
                            <field name="sequence" invisible="1"/>
                            <field name="name"/>
                            <field name="reference"/>
                            <field name="process_item"/>
                            <field name="outsourcing_required" widget="boolean_toggle"/>
                        </group>
                        <group>
                            <field name="remark"/>
                        </group>
                        <group string="维护信息">
                            <field name="create_uid" />
                            <field name="create_date"/>
                            <field name="write_uid" />
                            <field name="write_date"/>
                        </group>
                    </sheet>
                    <div class="oe_chatter">
                        <field name="message_follower_ids" groups="base.group_user"/>
                        <field name="message_ids"/>
                    </div>
                </form>
            </field>
        </record>

   <!-- 工艺路线 Form View -->
        <record id="view_mrp_process_routing_form" model="ir.ui.view">
            <field name="name">工艺路线form</field>
            <field name="model">mrp.process.routing</field>
            <field name="arch" type="xml">
                <form string="工艺明细">
                    <sheet>
                        <field name="active" invisible="1"/>
                        <group>
                            <field name="sequence"/>
                            <field name="reference"/>
                            <field name="name"/>
                            <field name="routing_state"/>
                            <field name="product_id" optional="show"/>
                            <field name="product_tmpl_id" optional="show"/>
                            <field name="routing_type" widget="selection_badge" options="{'horizontal': true, 'no_create': True, 'no_open': True}"/>
                        </group>
                        <group>
                            <field name="process_item" string="工艺" invisible="routing_type == 'group'">
                            </field>
                            <field name="group_classify_item"  string="工艺分组" invisible="routing_type == 'process'">
                            </field>
                        </group>
                        <group>
                            <field name="review_state"/>
                            <field name="review_user"/>
                            <field name="review_date"/>
                        </group>
                        <notebook>
                            <page string="备注">
                                <field name="remark"/>
                            </page>
                            <page string="内部备注">
                                <field name="inner_remark"/>
                            </page>
                            <page string="维护信息">
                                <group>
                                    <field name="create_uid" />
                                    <field name="create_date" />
                                    <field name="write_uid" />
                                    <field name="write_date"/>
                                </group>
                            </page>
                        </notebook>

                    </sheet>
                    <div class="oe_chatter">
                        <field name="message_follower_ids" groups="base.group_user"/>
                        <field name="message_ids"/>
                    </div>
                </form>
            </field>
        </record>

  • 写回答

17条回答 默认 最新

  • 专家-赤兔[在线] 全栈领域优质创作者 2024-06-29 20:55
    关注

    引自免费微信小程序:皆我百晓生

    针对你的需求,我们可以按照以下步骤制作Python和XML文件:

    一、Python部分

    首先,基于你提供的模型定义,我们可以创建对应的Python文件。这里以MrpProcessRouting模型为例,其对应的Python文件内容大致如下:

    from odoo import models, fields, api
    
    class MrpProcessRouting(models.Model):
        _name = 'mrp.process.routing'
        _inherit = ['mail.thread']
        _description = "工艺路线"
        _order = 'active desc, sequence, name'
    
        # ... 其他字段定义保持不变 ...
    
        @api.model
        def create(self, vals):
            # 在创建记录时自动设置单据编号
            if vals.get('reference', _('New')) == _('New'):
                vals['reference'] = self.env['ir.sequence'].next_by_code('mrp.process.routing') or _('New')
            res = super(MrpProcessRouting, self).create(vals)
            return res
    

    对于MrpProcessItemClassifyMrpProcessItem模型,你也可以采用类似的方式进行定义。这些模型中的create方法用于在创建新记录时自动设置单据编号。

    二、XML部分(Form View)

    接下来是XML文件部分,基于你提供的XML代码,我们可以创建对应的Form View。这里以MrpProcessRouting的Form View为例:

    <record id="view_mrp_process_routing_form" model="mrp.process.routing">
        <field name="name">工艺路线form</field>
        <field name="arch" type="xml">
            <form string="工艺路线">
                <sheet>
                    <field name="active" invisible="1"/>
                    <group>
                        <!-- 其他字段布局保持不变 -->
                    </group>
                    <group>
                        <!-- 工艺明细与工艺明细分类的显示逻辑 -->
                        <field name="process_item" t-if="routing_type == 'process'" string="工艺明细"/>
                        <field name="group_classify_item" t-if="routing_type == 'group'" string="工艺明细分类"/>
                    </group>
                    <!-- 其他布局保持不变 -->
                </sheet>
            </form>
        </field>
    </record>
    

    注意在上面的XML代码中,我们使用了t-if指令来实现根据routing_type字段的值来显示不同的字段。这是一个Odoo的模板指令,用于条件性地显示或隐藏字段。类似的逻辑也可以应用到其他Form View中。此外,还需要根据实际需求调整其他部分的布局和逻辑。对于MrpProcessItemClassifyMrpProcessItem的Form View,你可以参考上述方式进行创建。另外确保所有相关的字段都已经被正确定义和引用。这样你就可以根据你的需求来制作Python和XML文件了。如果你有其他问题或需要进一步的帮助,请随时向我提问。

    评论 编辑记录

报告相同问题?

问题事件

  • 创建了问题 6月29日

悬赏问题

  • ¥20 找辅导 初学者 想实现一个项目 没有方向
  • ¥15 关于渗漏场的电场分布模拟
  • ¥24 matlab怎么修改仿真初始时间
  • ¥15 两分段线性回归模型分析阈值效应
  • ¥15 前端和后端代码都没报错,但是点登录没反应的?
  • ¥100 需要远程解决QSQLITE问题!
  • ¥15 利用光场表达式画出初始光场强度分布图像等几个问题在这两个图片里
  • ¥15 gozero求手把手教学,400一天
  • ¥15 泥浆冲清水的泥浆分布
  • ¥15 LASSO回归分析筛选关键基因,适合多大样本量?