From 84a75ef8510d3b9137b2a950bfb550a977aee7f0 Mon Sep 17 00:00:00 2001 From: jao-odoo Date: Mon, 5 Mar 2018 19:00:11 +0530 Subject: [PATCH] Saas 11.2 account fix analytic accounting jao (#23110) [IMP] purchase_requisition : add analytic_tag_ids field in purchase requistion [IMP] sale: set analytic tags on invoice based on the analytic tags defined on SO [IMP] account_analytic_default: add default analytic tags to invoice lines created from SO for down payment (#23110) --- addons/account_analytic_default/models/sale_order_line.py | 1 + addons/purchase_requisition/models/purchase_requisition.py | 2 ++ .../views/purchase_requisition_views.xml | 1 + addons/sale/wizard/sale_make_invoice_advance.py | 5 +++++ 4 files changed, 9 insertions(+) diff --git a/addons/account_analytic_default/models/sale_order_line.py b/addons/account_analytic_default/models/sale_order_line.py index 9997f9ba1cd..51f8d308188 100644 --- a/addons/account_analytic_default/models/sale_order_line.py +++ b/addons/account_analytic_default/models/sale_order_line.py @@ -13,4 +13,5 @@ class SaleOrderLine(models.Model): default_analytic_account = self.env['account.analytic.default'].account_get(self.product_id.id, self.order_id.partner_id.id, self.order_id.user_id.id, fields.Date.today()) if default_analytic_account: res.update({'account_analytic_id': default_analytic_account.analytic_id.id}) + res.update({'analytic_tag_ids' : [(6, 0, default_analytic_account.analytic_tag_ids.ids)]}) return res diff --git a/addons/purchase_requisition/models/purchase_requisition.py b/addons/purchase_requisition/models/purchase_requisition.py index 53fddc3d3c9..0c6adffc695 100644 --- a/addons/purchase_requisition/models/purchase_requisition.py +++ b/addons/purchase_requisition/models/purchase_requisition.py @@ -200,6 +200,7 @@ class PurchaseRequisitionLine(models.Model): requisition_id = fields.Many2one('purchase.requisition', required=True, string='Purchase Agreement', ondelete='cascade') company_id = fields.Many2one('res.company', related='requisition_id.company_id', string='Company', store=True, readonly=True, default= lambda self: self.env['res.company']._company_default_get('purchase.requisition.line')) account_analytic_id = fields.Many2one('account.analytic.account', string='Analytic Account') + analytic_tag_ids = fields.Many2many('account.analytic.tag', string='Analytic Tags') schedule_date = fields.Date(string='Scheduled Date') move_dest_id = fields.Many2one('stock.move', 'Downstream Move') supplier_info_ids = fields.One2many('product.supplierinfo', 'purchase_requisition_line_id') @@ -280,6 +281,7 @@ class PurchaseRequisitionLine(models.Model): 'taxes_id': [(6, 0, taxes_ids)], 'date_planned': requisition.schedule_date or fields.Date.today(), 'account_analytic_id': self.account_analytic_id.id, + 'analytic_tag_ids': self.analytic_tag_ids.ids, 'move_dest_ids': self.move_dest_id and [(4, self.move_dest_id.id)] or [] } diff --git a/addons/purchase_requisition/views/purchase_requisition_views.xml b/addons/purchase_requisition/views/purchase_requisition_views.xml index 87ce149f290..749f434a0db 100644 --- a/addons/purchase_requisition/views/purchase_requisition_views.xml +++ b/addons/purchase_requisition/views/purchase_requisition_views.xml @@ -193,6 +193,7 @@ +
diff --git a/addons/sale/wizard/sale_make_invoice_advance.py b/addons/sale/wizard/sale_make_invoice_advance.py index 973ea404549..631c3eeeb3a 100644 --- a/addons/sale/wizard/sale_make_invoice_advance.py +++ b/addons/sale/wizard/sale_make_invoice_advance.py @@ -111,6 +111,7 @@ class SaleAdvancePaymentInv(models.TransientModel): 'product_id': self.product_id.id, 'sale_line_ids': [(6, 0, [so_line.id])], 'invoice_line_tax_ids': [(6, 0, tax_ids)], + 'analytic_tag_ids': [(6, 0, so_line.analytic_tag_ids.ids)], 'account_analytic_id': order.analytic_account_id.id or False, })], 'currency_id': order.pricelist_id.currency_id.id, @@ -157,6 +158,9 @@ class SaleAdvancePaymentInv(models.TransientModel): else: tax_ids = taxes.ids context = {'lang': order.partner_id.lang} + analytic_tag_ids = [] + for line in order.order_line: + analytic_tag_ids = [(4, analytic_tag.id, None) for analytic_tag in line.analytic_tag_ids] so_line = sale_line_obj.create({ 'name': _('Advance: %s') % (time.strftime('%m %Y'),), 'price_unit': amount, @@ -165,6 +169,7 @@ class SaleAdvancePaymentInv(models.TransientModel): 'discount': 0.0, 'product_uom': self.product_id.uom_id.id, 'product_id': self.product_id.id, + 'analytic_tag_ids': analytic_tag_ids, 'tax_id': [(6, 0, tax_ids)], 'is_downpayment': True, })