c2c-oerpscenario team mailing list archive
-
c2c-oerpscenario team
-
Mailing list archive
-
Message #28968
[Bug 737786] Re: [6.0.1] Invoicing an outgoing picking list from a sale order including service products
Hello guys,
I confirm this issue. It was a blocker here in one project.
I fixed it a few weeks ago, with the attached patched.
Basically, the _get_account_analytic_invoice methods will be called bot
for sale and purchase potentially on which the picking is potentially
based. They are called in an order that depends on the your module
installation order. There is a particular order that screw it all. This
also explains why OpenERP SA guys didn't spot the issue yet.
How I fixed it:
Better refactorings might exist but here is what I did:
purchase/stock.py#_get_account_analytic_invoice only makes sense if there is actually a purchase order line related to the move (not the case if you invoice a delivery).
So I added that test inside purchase/stock.py.
On the other side, in sale/stock.py, there will be no stock stock.move here. So instead of passing a sale.order.line to the call chain, that would blow out later in purchase/stock.py, I simply pass nothing.
See attached patch please.
NB: as I explained it to OpenERP SA, I do not agree on the new 'private module exception" license under the current terms that don't protect against a SaaS loophole. Thanks.
** Patch added: "analytic.patch"
https://bugs.launchpad.net/openobject-addons/+bug/737786/+attachment/2221340/+files/analytic.patch
--
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):
Invalid
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