odoo14教程(制造订单与销售订单关联)

前言(MTO与MTS)

MTO:基于销售订单的生产,即销售订单需要多少就生产多少。在odoo13中,销售下单确认后就直接根据销售订单明细行生成制造订单。如果在增加销售订单,相同的产品也会重新创建一个制造订单。
MTS:基于库存的生产,即库存缺多少就生产多少。在odoo13中,只要制造订单没有开始安排生产,相同的产品会在原有制造订单上更新生产数量。
现实需求:
一般的中小企业无法做到真正的零库存,即只能以MTS方式生产,但同时又希望制造订单可以跟踪到销售订单。
在odoo14中,即使MTS,在一切配置正确的情况下,也是一个销售订单创建一个制造订单,和MTO几乎是一样的,而且还可以减去多余库存,因此在odoo14中,MTO是默认被归档的。异常场景(系统已经有了某产品的很多销售订单,但是没有配置正确的路线,导致系统无法创建制造订单,一旦配置正确,系统将会根据库存需求创建一个制造订单)。

制造订单与销售订单的关联

odoo14中,MTS几乎是达到了MTO的效果,唯一的缺点就是制造订单与销售订单断开了联系,源文档都是通过订货规则。
在这里插入图片描述

数据流

在这里插入图片描述
数据流转过程中,销售明细确认后对应生成了出库明细,如果库存缺货,stock.move将会根据订货规则创建制造订单,但是stock.move向订货规则流向时,只将产品、数量、位置等信息传递下去,没有将销售明细(sale_line_id)传递到生成,导致制造订单与销售订单关系断裂。

解决方案

在准备制造订单数据结构时,将sale_line_id、sale_id、partner_id等于销售订单相关的信息都可以传递到制造订单。
在这里插入图片描述

效果

在这里插入图片描述

在这里插入代码片
odoo.define('account.section_and_note_backend', function (require) {
// The goal of this file is to contain JS hacks related to allowing
// section and note on sale order and invoice.

// [UPDATED] now also allows configuring products on sale order.
// We create a custom widget because this is the cleanest way to do it:
// to be sure this custom code will only impact selected fields having the widget
// and not applied to any other existing ListRenderer.

"use strict";
var FieldChar = require('web.basic_fields').FieldChar;
var FieldOne2Many = require('web.relational_fields').FieldOne2Many;
var fieldRegistry = require('web.field_registry');
var ListFieldText = require('web.basic_fields').ListFieldText;
var ListRenderer = require('web.ListRenderer');

var SectionAndNoteListRenderer = ListRenderer.extend({
    /**
     * We want section and note to take the whole line (except handle and trash)
     * to look better and to hide the unnecessary fields.
     *
     * @override
     */
    _renderBodyCell: function (record, node, index, options) {
        var $cell = this._super.apply(this, arguments);

        var isSection = record.data.display_type === 'line_section';
        var isNote = record.data.display_type === 'line_note';

        if (isSection || isNote) {
            if (node.attrs.widget === "handle") {
                return $cell;
            } else if (node.attrs.name === "name") {
                var nbrColumns = this._getNumberOfCols();
                if (this.handleField) {
                    nbrColumns--;
                }
                if (this.addTrashIcon) {
                    nbrColumns--;
                }
                $cell.attr('colspan', nbrColumns);
            } else {
                $cell.removeClass('o_invisible_modifier');
                return $cell.addClass('o_hidden');
            }
        }

        return $cell;
    },
    /**
     * We add the o_is_{display_type} class to allow custom behaviour both in JS and CSS.
     *
     * @override
     */
    _renderRow: function (record, index) {
        var $row = this._super.apply(this, arguments);

        if (record.data.display_type) {
            $row.addClass('o_is_' + record.data.display_type);
        }

        return $row;
    },
    /**
     * We want to add .o_section_and_note_list_view on the table to have stronger CSS.
     *
     * @override
     * @private
     */
    _renderView: function () {
        var self = this;
        return this._super.apply(this, arguments).then(function () {
            self.$('.o_list_table').addClass('o_section_and_note_list_view');
        });
    }
});

var SectionAndNoteFieldOne2Many = FieldOne2Many.extend({
    /**
     * We want to use our custom renderer for the list.
     *
     * @override
     */
    _getRenderer: function () {
        if (this.view.arch.tag === 'tree') {
            return SectionAndNoteListRenderer;
        }
        return this._super.apply(this, arguments);
    },
});
fieldRegistry.add('section_and_note_one2many', SectionAndNoteFieldOne2Many);

return SectionAndNoteListRenderer;
});
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Odoo是一款开源的企业资源管理系统(ERP),它提供了一个模块化的平台,可以帮助企业管理各个方面的业务流程,包括制造业。 在Odoo中,根据产品路线自动生成制造订单的过程可以通过以下步骤解析: 首先,需要创建产品和产品路线。产品是指企业所生产和销售的具体产品,可以定义其特性、成本和价格等信息。而产品路线则是定义产品从原材料到成品的制造过程。在这个过程中,可以指定所需的原材料、工序和工时等信息。 然后,需要创建销售订单销售订单是顾客购买产品的记录,其中包含了产品数量、要求交付日期等信息。当销售订单被创建后,系统会根据销售订单的需求和产品路线的定义,自动生成相应的制造订单制造订单是指在具体的生产单位或车间中进行产品制造的指令。它包含了要生产的产品、数量、生产日期等信息。通过制造订单,可以将产品路线中定义的工序和所需的原材料转化为实际的制造操作,并且可以跟踪生产进度和成本等信息。 制造订单代码的自动生成是基于Odoo的强大的业务逻辑和模块化的特性。它可以根据产品路线中的定义,在销售订单被创建时触发自动生成制造订单的动作。通过配置和定制,可以根据企业的实际需求设置自动化规则,使得制造订单的生成更加智能和高效。 总而言之,Odoo可以根据产品路线自动生成制造订单代码,从而帮助企业优化制造流程,提高生产效率和管理效果。这种自动生成的功能不仅可以减少人工操作和避免错误,还可以提高响应速度和灵活性,帮助企业更好地满足客户需求和控制成本。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值