[FIX] account_anglo_saxon: backport of revision 8787 of trunk
bzr revid: qdp-launchpad@openerp.com-20130710215655-5ym1u4ecsmqdw30n
This commit is contained in:
parent
962dedda51
commit
84a134c46d
|
@ -26,17 +26,15 @@ class purchase_order(osv.osv):
|
|||
_inherit = "purchase.order"
|
||||
_description = "Purchase Order"
|
||||
|
||||
def _prepare_inv_line(self, cr, uid, account_id, order_line, context=None):
|
||||
line = super(purchase_order, self)._prepare_inv_line(cr, uid, account_id, order_line, context=context)
|
||||
def _choose_account_from_po_line(self, cr, uid, order_line, context=None):
|
||||
account_id = super(purchase_order, self)._choose_account_from_po_line(cr, uid, order_line, context=context)
|
||||
if order_line.product_id and not order_line.product_id.type == 'service':
|
||||
acc_id = order_line.product_id.property_stock_account_input and order_line.product_id.property_stock_account_input.id
|
||||
if not acc_id:
|
||||
acc_id = order_line.product_id.categ_id.property_stock_account_input_categ and order_line.product_id.categ_id.property_stock_account_input_categ.id
|
||||
if acc_id:
|
||||
fpos = order_line.order_id.fiscal_position or False
|
||||
new_account_id = self.pool.get('account.fiscal.position').map_account(cr, uid, fpos, acc_id)
|
||||
line.update({'account_id': new_account_id})
|
||||
return line
|
||||
purchase_order()
|
||||
account_id = self.pool.get('account.fiscal.position').map_account(cr, uid, fpos, acc_id)
|
||||
return account_id
|
||||
|
||||
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
|
||||
|
|
|
@ -465,6 +465,20 @@ class purchase_order(osv.osv):
|
|||
self.write(cr, uid, [id], {'state' : 'confirmed', 'validator' : uid})
|
||||
return True
|
||||
|
||||
def _choose_account_from_po_line(self, cr, uid, po_line, context=None):
|
||||
fiscal_obj = self.pool.get('account.fiscal.position')
|
||||
property_obj = self.pool.get('ir.property')
|
||||
if po_line.product_id:
|
||||
acc_id = po_line.product_id.property_account_expense.id
|
||||
if not acc_id:
|
||||
acc_id = po_line.product_id.categ_id.property_account_expense_categ.id
|
||||
if not acc_id:
|
||||
raise osv.except_osv(_('Error!'), _('Define expense account for this company: "%s" (id:%d).') % (po_line.product_id.name, po_line.product_id.id,))
|
||||
else:
|
||||
acc_id = property_obj.get(cr, uid, 'property_account_expense_categ', 'product.category').id
|
||||
fpos = po_line.order_id.fiscal_position or False
|
||||
return fiscal_obj.map_account(cr, uid, fpos, acc_id)
|
||||
|
||||
def _prepare_inv_line(self, cr, uid, account_id, order_line, context=None):
|
||||
"""Collects require data from purchase order line that is used to create invoice line
|
||||
for that purchase order line
|
||||
|
@ -506,8 +520,6 @@ class purchase_order(osv.osv):
|
|||
journal_obj = self.pool.get('account.journal')
|
||||
inv_obj = self.pool.get('account.invoice')
|
||||
inv_line_obj = self.pool.get('account.invoice.line')
|
||||
fiscal_obj = self.pool.get('account.fiscal.position')
|
||||
property_obj = self.pool.get('ir.property')
|
||||
|
||||
for order in self.browse(cr, uid, ids, context=context):
|
||||
pay_acc_id = order.partner_id.property_account_payable.id
|
||||
|
@ -519,17 +531,7 @@ class purchase_order(osv.osv):
|
|||
# generate invoice line correspond to PO line and link that to created invoice (inv_id) and PO line
|
||||
inv_lines = []
|
||||
for po_line in order.order_line:
|
||||
if po_line.product_id:
|
||||
acc_id = po_line.product_id.property_account_expense.id
|
||||
if not acc_id:
|
||||
acc_id = po_line.product_id.categ_id.property_account_expense_categ.id
|
||||
if not acc_id:
|
||||
raise osv.except_osv(_('Error!'), _('Define expense account for this company: "%s" (id:%d).') % (po_line.product_id.name, po_line.product_id.id,))
|
||||
else:
|
||||
acc_id = property_obj.get(cr, uid, 'property_account_expense_categ', 'product.category').id
|
||||
fpos = order.fiscal_position or False
|
||||
acc_id = fiscal_obj.map_account(cr, uid, fpos, acc_id)
|
||||
|
||||
acc_id = self._choose_account_from_po_line(cr, uid, po_line, context=context)
|
||||
inv_line_data = self._prepare_inv_line(cr, uid, acc_id, po_line, context=context)
|
||||
inv_line_id = inv_line_obj.create(cr, uid, inv_line_data, context=context)
|
||||
inv_lines.append(inv_line_id)
|
||||
|
|
|
@ -48,12 +48,11 @@ class purchase_line_invoice(osv.osv_memory):
|
|||
if record_ids:
|
||||
res = False
|
||||
invoices = {}
|
||||
invoice_obj=self.pool.get('account.invoice')
|
||||
purchase_line_obj=self.pool.get('purchase.order.line')
|
||||
property_obj=self.pool.get('ir.property')
|
||||
account_fiscal_obj=self.pool.get('account.fiscal.position')
|
||||
invoice_line_obj=self.pool.get('account.invoice.line')
|
||||
account_jrnl_obj=self.pool.get('account.journal')
|
||||
invoice_obj = self.pool.get('account.invoice')
|
||||
purchase_obj = self.pool.get('purchase.order')
|
||||
purchase_line_obj = self.pool.get('purchase.order.line')
|
||||
invoice_line_obj = self.pool.get('account.invoice.line')
|
||||
account_jrnl_obj = self.pool.get('account.journal')
|
||||
|
||||
def multiple_order_invoice_notes(orders):
|
||||
notes = ""
|
||||
|
@ -93,35 +92,14 @@ class purchase_line_invoice(osv.osv_memory):
|
|||
order.write({'invoice_ids': [(4, inv_id)]})
|
||||
return inv_id
|
||||
|
||||
for line in purchase_line_obj.browse(cr,uid,record_ids):
|
||||
if (not line.invoiced) and (line.state not in ('draft','cancel')):
|
||||
for line in purchase_line_obj.browse(cr, uid, record_ids, context=context):
|
||||
if (not line.invoiced) and (line.state not in ('draft', 'cancel')):
|
||||
if not line.partner_id.id in invoices:
|
||||
invoices[line.partner_id.id] = []
|
||||
if line.product_id:
|
||||
a = line.product_id.property_account_expense.id
|
||||
if not a:
|
||||
a = line.product_id.categ_id.property_account_expense_categ.id
|
||||
if not a:
|
||||
raise osv.except_osv(_('Error!'),
|
||||
_('Define expense account for this product: "%s" (id:%d).') % \
|
||||
(line.product_id.name, line.product_id.id,))
|
||||
else:
|
||||
a = property_obj.get(cr, uid,
|
||||
'property_account_expense_categ', 'product.category',
|
||||
context=context).id
|
||||
fpos = line.order_id.fiscal_position or False
|
||||
a = account_fiscal_obj.map_account(cr, uid, fpos, a)
|
||||
inv_id = invoice_line_obj.create(cr, uid, {
|
||||
'name': line.name,
|
||||
'origin': line.order_id.name,
|
||||
'account_id': a,
|
||||
'price_unit': line.price_unit,
|
||||
'quantity': line.product_qty,
|
||||
'uos_id': line.product_uom.id,
|
||||
'product_id': line.product_id.id or False,
|
||||
'invoice_line_tax_id': [(6, 0, [x.id for x in line.taxes_id])],
|
||||
'account_analytic_id': line.account_analytic_id and line.account_analytic_id.id or False,
|
||||
})
|
||||
acc_id = purchase_obj._choose_account_from_po_line(cr, uid, line, context=context)
|
||||
inv_line_data = purchase_obj._prepare_inv_line(cr, uid, acc_id, line, context=context)
|
||||
inv_line_data.update({'origin': line.order_id.name})
|
||||
inv_id = invoice_line_obj.create(cr, uid, inv_line_data, context=context)
|
||||
purchase_line_obj.write(cr, uid, [line.id], {'invoiced': True, 'invoice_lines': [(4, inv_id)]})
|
||||
invoices[line.partner_id.id].append((line,inv_id))
|
||||
|
||||
|
|
Loading…
Reference in New Issue