← Back to team overview

c2c-oerpscenario team mailing list archive

[Bug 741947] Re: [6.0] Error related with analytic accounts creating a sales invoice from picking that come from sales order with services

 

*** This bug is a duplicate of bug 737786 ***
    https://bugs.launchpad.net/bugs/737786

** This bug has been marked a duplicate of bug 737786
   [6.0.1] Invoicing an outgoing picking list from a sale order including service products
 * You can subscribe to bug 737786 by following this link: https://bugs.launchpad.net/openobject-addons/+bug/737786/+subscribe

-- 
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/741947

Title:
  [6.0] Error related with analytic accounts creating a sales invoice
  from picking that come from sales order with services

Status in OpenERP Modules (addons):
  Incomplete

Bug description:
  Environment: at stable 6.0 version, with installed modules "base",
  "stock", "sale", "purchase" and "analytic". Important: the modules
  "account_analytic_default" and "account_analytic_plans" must be not
  installed.

  If you try to create a sales invoice from picking that comes to a
  sales order that contains services and stockable products, the next
  error occurs: Field 'purchase_line_id' does not exist in object
  'browse_record(sale.order.line, 5)'

  The origin of this error really is the "sale" module, when try to add
  the services lines into invoice, at method "action_invoice_create"
  from file "stock.py", in particular at method
  "_get_account_analytic_invoice". The problem is the fourth parameter
  "sale_line" passed to this funtion: account_analytic_id =
  self._get_account_analytic_invoice(cursor, user, picking, sale_line)
  .... because this parameter must be a "stock_move" object, and really
  is passed a "sale_order_line" object.

  But the solution involves: 
    (1) the module "purchase", because also inherits the method "_get_account_analytic_invoice" from "stock_picking" class. And when execute this method, a "stock_move" object is expected, but a "sale_order_line object" is passed, and the error occurs.
    (2) the module "account_analytic_default", if has installed after. The reason are the same: inherits the method "_get_account_analytic_invoice" from "stock_picking" class.

  These are the corrections that I've applied to fix the bug:

    (1) At file "stock.py" from addon "sale", at function "def action_invoice_create":
    -  account_analytic_id = self._get_account_analytic_invoice(cursor, user, picking, sale_line)
    +  account_analytic_id = self._get_account_analytic_invoice(cursor, user, picking, None)

    2) At file "stock.py" from addon "purchase", at function "def _get_account_analytic_invoice":
    -  if move_line.purchase_line_id:
    +  if move_line and move_line.purchase_line_id:

    3) At file "account_analytic_default.py" from addon "account_analytic_default", at function "def _get_account_analytic_invoice":
    -  rec = self.pool.get('account.analytic.default').account_get(cursor, user, move_line.product_id.id, partner_id and partner_id.id, user, time.strftime('%Y-%m-%d'), context={})
    +  product_id = False or move_line and move_line.product_id.id
    +  rec = self.pool.get('account.analytic.default').account_get(cursor, user, product_id, partner_id and partner_id.id, user, time.strftime('%Y-%m-%d'), context={})

  
  I hope it's useful for you.


References