← Back to team overview

c2c-oerpscenario team mailing list archive

[Bug 737786] Re: [6.0.1] Invoicing an outgoing picking list from a sale order including service products

 

Hello everyone, thanks for the feedback and investigation on this issue.
It is indeed difficult to reproduce, but on 6.0 I did it by adding a dependency from purchase to sale. You can see easily in the database loading messages if the sales module is loaded before or after purchase. If it's loaded before you should be able to reproduce the bug.
The suggestion from Jordi seems a good approach to fix it, as it is consistent with the way we do the same test in the sale module. Also, be careful as passing False instead of sale_line as suggested by Raphael's patch is likely to break account_analytic_default (which also overrides this method and needs a move_line), so that would require more testing/patching - probably not worth it.

The one-line patch suggested by Jordi seems suitable for patching 6.0 as
well as trunk, if the OPW team considers this issue critical enough for
landing it in the stable branch.

Thanks!

** Changed in: openobject-addons
   Importance: Undecided => Medium

** Changed in: openobject-addons
       Status: Incomplete => Confirmed

** Changed in: openobject-addons
     Assignee: (unassigned) => OpenERP R&D Addons Team 2 (openerp-dev-addons2)

-- 
You received this bug notification because you are a member of C2C
OERPScenario, which is subscribed to the OpenERP Project Group.
https://bugs.launchpad.net/bugs/737786

Title:
  [6.0.1] Invoicing an outgoing picking list from a sale order including
  service products

Status in OpenERP Modules (addons):
  Confirmed

Bug description:
  If you invoice an outgoing picking list whose sale order includes
  service products, and the purchase module is installed, you can get
  the following error because action_invoice_create() tries to get an
  analytical account but the inherit _get_account_analytic_invoice()
  method defined in purchase module is called.

  It could be fixes if line 104 of file purchase/stock.py:
          if move_line.purchase_line_id:

  is changed to:
          if picking.purchase_id and move_line.purchase_line_id:

    File "server/bin/addons/stock/wizard/stock_invoice_onshipping.py", line 93, in open_invoice
      res = self.create_invoice(cr, uid, ids, context=context)
    File "server/bin/addons/purchase/purchase.py", line 835, in create_invoice
      res = super(stock_invoice_onshipping,self).create_invoice(cr, uid, ids, context=context)
    File "server/bin/addons/stock/wizard/stock_invoice_onshipping.py", line 131, in create_invoice   
      context=context)
    File "server/bin/addons/delivery/stock.py", line 81, in action_invoice_create
      context=context)
    File "server/bin/addons/sale/stock.py", line 167, in action_invoice_create
      user, picking, sale_line)
    File "server/bin/addons/purchase/stock.py", line 104, in _get_account_analytic_invoice
      if move_line.purchase_line_id:
    File "server/bin/osv/orm.py", line 287, in __getattr__
      raise AttributeError(e)
  AttributeError: "Field 'purchase_line_id' does not exist in object 'browse_record(sale.order.line, 393)'"

To manage notifications about this bug go to:
https://bugs.launchpad.net/openobject-addons/+bug/737786/+subscriptions


References