From 61ecd3fa7b98ee5a21eacddbf148a7644997f355 Mon Sep 17 00:00:00 2001 From: Fatemi Lokhandwala Date: Tue, 10 Jul 2018 10:48:40 +0530 Subject: [PATCH] [ADD]:Added Upstream Patch for stock_landed_costs --- .../models/stock_landed_cost.py | 42 ++++++++++--------- 1 file changed, 22 insertions(+), 20 deletions(-) diff --git a/addons/stock_landed_costs/models/stock_landed_cost.py b/addons/stock_landed_costs/models/stock_landed_cost.py index 466a3f1d..9cc05fb9 100644 --- a/addons/stock_landed_costs/models/stock_landed_cost.py +++ b/addons/stock_landed_costs/models/stock_landed_cost.py @@ -91,11 +91,13 @@ class LandedCost(models.Model): raise UserError(_('Cost and adjustments lines do not match. You should maybe recompute the landed costs.')) for cost in self: - move = self.env['account.move'].create({ + move = self.env['account.move'] + move_vals = { 'journal_id': cost.account_journal_id.id, 'date': cost.date, - 'ref': cost.name - }) + 'ref': cost.name, + 'line_ids': [], + } for line in cost.valuation_adjustment_lines.filtered(lambda line: line.move_id): # Prorate the value at what's still in stock cost_to_add = (line.move_id.remaining_qty / line.move_id.product_qty) * line.additional_landed_cost @@ -103,6 +105,7 @@ class LandedCost(models.Model): new_landed_cost_value = line.move_id.landed_cost_value + line.additional_landed_cost line.move_id.write({ 'landed_cost_value': new_landed_cost_value, + 'value': line.move_id.value + cost_to_add, 'remaining_value': line.move_id.remaining_value + cost_to_add, 'price_unit': (line.move_id.value + new_landed_cost_value) / line.move_id.product_qty, }) @@ -113,9 +116,9 @@ class LandedCost(models.Model): qty_out = line.move_id.product_qty - line.move_id.remaining_qty elif line.move_id._is_out(): qty_out = line.move_id.product_qty - line._create_accounting_entries(move, qty_out) - - move.assert_balanced() + move_vals['line_ids'] += line._create_accounting_entries(move, qty_out) + + move = move.create(move_vals) cost.write({'state': 'done', 'account_move_id': move.id}) move.post() return True @@ -315,13 +318,12 @@ class AdjustmentLines(models.Model): Generate the account.move.line values to track the landed cost. Afterwards, for the goods that are already out of stock, we should create the out moves """ - AccountMoveLine = self.env['account.move.line'].with_context(check_move_validity=False, recompute=False) + AccountMoveLine = [] base_line = { 'name': self.name, - 'move_id': move.id, 'product_id': self.product_id.id, - 'quantity': self.quantity, + 'quantity': 0, } debit_line = dict(base_line, account_id=debit_account_id) credit_line = dict(base_line, account_id=credit_account_id) @@ -333,18 +335,18 @@ class AdjustmentLines(models.Model): # negative cost, reverse the entry debit_line['credit'] = -diff credit_line['debit'] = -diff - AccountMoveLine.create(debit_line) - AccountMoveLine.create(credit_line) + AccountMoveLine.append([0, 0, debit_line]) + AccountMoveLine.append([0, 0, credit_line]) # Create account move lines for quants already out of stock if qty_out > 0: debit_line = dict(base_line, name=(self.name + ": " + str(qty_out) + _(' already out')), - quantity=qty_out, + quantity=0, account_id=already_out_account_id) credit_line = dict(base_line, name=(self.name + ": " + str(qty_out) + _(' already out')), - quantity=qty_out, + quantity=0, account_id=debit_account_id) diff = diff * qty_out / self.quantity if diff > 0: @@ -354,18 +356,18 @@ class AdjustmentLines(models.Model): # negative cost, reverse the entry debit_line['credit'] = -diff credit_line['debit'] = -diff - AccountMoveLine.create(debit_line) - AccountMoveLine.create(credit_line) + AccountMoveLine.append([0, 0, debit_line]) + AccountMoveLine.append([0, 0, credit_line]) # TDE FIXME: oh dear if self.env.user.company_id.anglo_saxon_accounting: debit_line = dict(base_line, name=(self.name + ": " + str(qty_out) + _(' already out')), - quantity=qty_out, + quantity=0, account_id=credit_account_id) credit_line = dict(base_line, name=(self.name + ": " + str(qty_out) + _(' already out')), - quantity=qty_out, + quantity=0, account_id=already_out_account_id) if diff > 0: @@ -375,7 +377,7 @@ class AdjustmentLines(models.Model): # negative cost, reverse the entry debit_line['credit'] = -diff credit_line['debit'] = -diff - AccountMoveLine.create(debit_line) - AccountMoveLine.create(credit_line) + AccountMoveLine.append([0, 0, debit_line]) + AccountMoveLine.append([0, 0, credit_line]) - return True + return AccountMoveLine