Skip to Content
Menu
This question has been flagged

Hello guys,

In the create method of the sale.order class, in the python code, how would you detect if the sale order is created from the backend or the frontend?

Would you use the url?

In my company, sale orders created from the frontend must take a sequence and sale orders created from the backend must take an other sequence. 

Avatar
Discard
Author Best Answer

Here is my override of the create method :


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

Avatar
Discard
Related Posts Replies Views Activity
0
Apr 16
2887
2
Jun 21
1979
0
Mar 15
2404
2
Mar 15
4454
0
Sep 24
127