'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: