Odoo中文网|Odoo实施培训

标题: 如何在sale.order类中监测销售订单是从前端或是后端创建的? [打印本页]

作者: 尼基塔    时间: 2015-11-1 14:15
标题: 如何在sale.order类中监测销售订单是从前端或是后端创建的?
如题,如何在sale.order类的create()方法中监测销售订单是从前端(网页)或是后端(直接操作数据库)创建的?

要通过url判断吗?
在我们公司,前端创建的销售订单和后端创建的销售订单分别使用不同的序列号。

作者: 洪七    时间: 2015-11-1 14:36
可以考虑这么写,
def create(self, cr, uid, vals, context=None):
    if context is None:
        context = {}
    urlll = str(request.httprequest.url)

    if 'sale.order' not in urlll:
        if vals.get('name', '/') == '/':
            vals['name'] = self.pool.get('ir.sequence').get(cr, uid, 'sale.order.web', context=context) or '/'
        if vals.get('partner_id') and any(f not in vals for f in ['partner_invoice_id', 'partner_shipping_id', 'pricelist_id', 'fiscal_position']):
            defaults = self.onchange_partner_id(cr, uid, [], vals['partner_id'], context=context)['value']
            if not vals.get('fiscal_position') and vals.get('partner_shipping_id'):
                delivery_onchange = self.onchange_delivery_id(cr, uid, [], vals.get('company_id'), None, vals['partner_id'], vals.get('partner_shipping_id'), context=context)
                defaults.update(delivery_onchange['value'])
           vals = dict(defaults, **vals)

    ctx = dict(context or {}, mail_create_nolog=True)
    new_id = super(sale_order, self).create(cr, uid, vals, context=ctx)
    self.message_post(cr, uid, [new_id], body=_("Quotation created"), context=ctx)
    return new_id




欢迎光临 Odoo中文网|Odoo实施培训 (http://www.chinaodoo.net/) Powered by Discuz! X3.2