Add _get_partner_to_invoice() to purchase module.
[odoo/odoo.git] / addons / purchase / stock.py
index c212a17..ca84d88 100644 (file)
@@ -58,18 +58,23 @@ class stock_picking(osv.osv):
         'purchase_id': False,
     }
 
-    def _get_address_invoice(self, cr, uid, picking):
-        """ Gets invoice address of a partner
-        @return {'contact': address, 'invoice': address} for invoice
+    def _get_partner_to_invoice(self, cr, uid, picking, context=None):
+        if picking.purchase_id:
+            return picking.purchase_id.partner_id
+        return super(stock_picking, self)._get_partner_to_invoice(cr, uid, picking, context=context)
+
+    def _prepare_invoice(self, cr, uid, picking, partner, inv_type, journal_id, context=None):
+        """Inherit the original function of the 'stock' module in order to override some
+        values if the picking has been generated by a purchase order
         """
-        res = super(stock_picking, self)._get_address_invoice(cr, uid, picking)
+        invoice_vals = super(stock_picking, self)._prepare_invoice(cr, uid, picking, partner, inv_type, journal_id, context=context)
         if picking.purchase_id:
-            partner_obj = self.pool.get('res.partner')
-            partner = picking.purchase_id.partner_id or picking.address_id.partner_id
-            data = partner_obj.address_get(cr, uid, [partner.id],
-                ['contact', 'invoice'])
-            res.update(data)
-        return res
+            invoice_vals['address_contact_id'], invoice_vals['address_invoice_id'] = \
+                    self.pool.get('res.partner').address_get(cr, uid, [partner.id],
+                            ['contact', 'invoice']).values()
+            if picking.purchase_id.fiscal_position:
+                invoice_vals['fiscal_position'] = picking.purchase_id.fiscal_position.id
+        return invoice_vals
 
     def get_currency_id(self, cursor, user, picking):
         if picking.purchase_id: