[REF] stock_account: introduced _get_invoice_vals() to ease inheritance of this feature

bzr revid: qdp-launchpad@openerp.com-20140508102505-f4bwpgixezwhkq6h
This commit is contained in:
Quentin (OpenERP) 2014-05-08 12:25:05 +02:00
parent a029fb22d0
commit f2ff555432
1 changed files with 28 additions and 23 deletions

View File

@ -192,7 +192,7 @@ class stock_picking(osv.osv):
invoice_obj = self.pool.get('account.invoice')
return invoice_obj.create(cr, uid, vals, context=context)
def action_invoice_create(self, cr, uid, ids, journal_id=False, group=False, type='out_invoice', context=None):
def action_invoice_create(self, cr, uid, ids, journal_id, group=False, type='out_invoice', context=None):
""" Creates invoice based on the invoice state selected for picking.
@param journal_id: Id of journal
@param group: Whether to create a group invoice or not
@ -213,7 +213,31 @@ class stock_picking(osv.osv):
invoices = self._invoice_create_line(cr, uid, moves, journal_id, type, context=context)
return invoices
def _invoice_create_line(self, cr, uid, moves, journal_id=False, inv_type='out_invoice', context=None):
def _get_invoice_vals(self, cr, uid, key, inv_type, journal_id, origin, context=None):
if context is None:
context = {}
partner, currency_id, company_id, user_id = key
if inv_type in ('out_invoice', 'out_refund'):
account_id = partner.property_account_receivable.id
payment_term = partner.property_payment_term.id or False
else:
account_id = partner.property_account_payable.id
payment_term = partner.property_supplier_payment_term.id or False
return {
'origin': origin,
'date_invoice': context.get('date_inv', False),
'user_id': user_id,
'partner_id': partner.id,
'account_id': account_id,
'payment_term': payment_term,
'type': inv_type,
'fiscal_position': partner.property_account_position.id,
'company_id': company_id,
'currency_id': currency_id,
'journal_id': journal_id,
}
def _invoice_create_line(self, cr, uid, moves, journal_id, inv_type='out_invoice', context=None):
invoice_obj = self.pool.get('account.invoice')
move_obj = self.pool.get('stock.move')
invoices = {}
@ -222,30 +246,11 @@ class stock_picking(osv.osv):
origin = move.picking_id.name
partner, user_id, currency_id = move_obj._get_master_data(cr, uid, move, company, context=context)
key = (partner.id, currency_id, company.id, user_id)
key = (partner, currency_id, company.id, user_id)
if key not in invoices:
# Get account and payment terms
if inv_type in ('out_invoice', 'out_refund'):
account_id = partner.property_account_receivable.id
payment_term = partner.property_payment_term.id or False
else:
account_id = partner.property_account_payable.id
payment_term = partner.property_supplier_payment_term.id or False
invoice_vals = {
'origin': origin,
'date_invoice': context.get('date_inv', False),
'user_id': user_id,
'partner_id': partner.id,
'account_id': account_id,
'payment_term': payment_term,
'type': inv_type,
'fiscal_position': partner.property_account_position.id,
'company_id': company.id,
'currency_id': currency_id,
'journal_id': journal_id,
}
invoice_vals = self._get_invoice_vals(cr, uid, key, inv_type, journal_id, origin, context=context)
invoice_id = self._create_invoice_from_picking(cr, uid, move.picking_id, invoice_vals, context=context)
invoices[key] = invoice_id