partial picking wizard generate wrong invoice

Bug #1060259 reported by Gustavo Cordero
This bug affects 1 person
Affects Status Importance Assigned to Milestone
Fix Released
OpenERP R&D Addons Team 2

Bug Description

When you use Receive Products wizard (stock.partial.picking) from a "To Be Invoiced" picking (defined from the purchase order property Based on incoming shipments), the result invoice reflects the products and quantities of the backorder (the picking don't received yet) instead to reflects the real products and quantities received and registered in the Receive Products wizard.

I added this code to fix this :

=== modificado archivo stock_invoice_directly/wizard/
--- stock_invoice_directly/wizard/ 2011-10-16 01:28:00 +0000
+++ stock_invoice_directly/wizard/ 2012-10-02 14:22:35 +0000
@@ -32,7 +32,7 @@
         result = super(invoice_directly, self).do_partial(cr, uid, ids, context)
         partial = self.browse(cr, uid, ids[0], context)
- active_ids=[])
+ active_ids=[])
         if partial.picking_id.invoice_state == '2binvoiced':
             return {
                 'name': 'Create Invoice',

Openerp Addons trunk7.0 r.7555

Related branches

Revision history for this message
Amit Bhavsar (Open ERP) (amb-openerp) wrote :
Changed in openobject-addons:
status: New → Confirmed
importance: Undecided → Medium
assignee: nobody → OpenERP R&D Addons Team 2 (openerp-dev-addons2)
Revision history for this message
Jalpesh Patel(OpenERP) (pja-openerp) wrote :


           It has been Fixed in
           Revno: 7895
           Revision ID: <email address hidden>


Changed in openobject-addons:
status: Confirmed → Fix Committed
Revision history for this message
Josse Colpaert (OpenERP) (jco-openerp) wrote :

I have tested this again in trunk without the branch and this works as it should.

Changed in openobject-addons:
status: Fix Committed → Fix Released
Revision history for this message
Yann Papouin (yann-papouin) wrote :

To works correctly, the backorder_id field must be set to False when creating the new return picking

in ""
new_picking = pick_obj.copy(cr, uid,, {'name':'%s-%s-return' % (new_pick_name,,

otherwise it will use the backorder_id of the original picking object -> invalid

Fix for 6.1, 7.1, trunk is necessary

Revision history for this message
Yann Papouin (yann-papouin) wrote :

Please reopen

Revision history for this message
Alexis de Lattre (alexis-via) wrote :

The bug is still present in OpenERP 7.0.

The code of the merge proposal works well on an up-to-date OpenERP 7.0. What is preventing the merge proposal from being accepted and merged in the stable branch ?

Revision history for this message
Alexis de Lattre (alexis-via) wrote :

In fact, my previous comment was wrong, the merge proposal doesn't work : here is the bug scenario with the code of the merge proposal :
You have a picking with 3 products :
1) you do a partial delivery of 1 product -> the generated invoice is OK and has 1 product.
2) you deliver the last 2 products -> you get an error message "This picking list does not require invoicing."

When you look at the code and the exact behavior of the 2 pickings, you understand that, at step 2, the "active_id" variable in the do_partial() function of stock_invoice_directly/wizard/ contains the ID the "done" picking with 1 products, and not the ID of the picking with 2 products.

Revision history for this message
Rifakat Husen (OpenERP) (rha-openerp) wrote :

Hi Alexis,

Could you please check the attached branch for 7.0 and provide your feedback?


Revision history for this message
Martin Trigaux (OpenERP) (mat-openerp) wrote :


As mentioned by Alexis, the initial patch did not work.
Instead I have made similar patch but also testing the state of the picking as well. This was merged in 7.0

revno: 9540 [merge]
revision-id: <email address hidden>

To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Other bug subscribers