[ADD]:Added Upstream Patch for stock_landed_costs

This commit is contained in:
Fatemi Lokhandwala 2018-07-10 10:48:40 +05:30
parent 0da768c114
commit 61ecd3fa7b

View File

@ -91,11 +91,13 @@ class LandedCost(models.Model):
raise UserError(_('Cost and adjustments lines do not match. You should maybe recompute the landed costs.')) raise UserError(_('Cost and adjustments lines do not match. You should maybe recompute the landed costs.'))
for cost in self: for cost in self:
move = self.env['account.move'].create({ move = self.env['account.move']
move_vals = {
'journal_id': cost.account_journal_id.id, 'journal_id': cost.account_journal_id.id,
'date': cost.date, 'date': cost.date,
'ref': cost.name 'ref': cost.name,
}) 'line_ids': [],
}
for line in cost.valuation_adjustment_lines.filtered(lambda line: line.move_id): for line in cost.valuation_adjustment_lines.filtered(lambda line: line.move_id):
# Prorate the value at what's still in stock # 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 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 new_landed_cost_value = line.move_id.landed_cost_value + line.additional_landed_cost
line.move_id.write({ line.move_id.write({
'landed_cost_value': new_landed_cost_value, '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, '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, '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 qty_out = line.move_id.product_qty - line.move_id.remaining_qty
elif line.move_id._is_out(): elif line.move_id._is_out():
qty_out = line.move_id.product_qty qty_out = line.move_id.product_qty
line._create_accounting_entries(move, qty_out) move_vals['line_ids'] += line._create_accounting_entries(move, qty_out)
move.assert_balanced() move = move.create(move_vals)
cost.write({'state': 'done', 'account_move_id': move.id}) cost.write({'state': 'done', 'account_move_id': move.id})
move.post() move.post()
return True return True
@ -315,13 +318,12 @@ class AdjustmentLines(models.Model):
Generate the account.move.line values to track the landed cost. 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 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 = { base_line = {
'name': self.name, 'name': self.name,
'move_id': move.id,
'product_id': self.product_id.id, 'product_id': self.product_id.id,
'quantity': self.quantity, 'quantity': 0,
} }
debit_line = dict(base_line, account_id=debit_account_id) debit_line = dict(base_line, account_id=debit_account_id)
credit_line = dict(base_line, account_id=credit_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 # negative cost, reverse the entry
debit_line['credit'] = -diff debit_line['credit'] = -diff
credit_line['debit'] = -diff credit_line['debit'] = -diff
AccountMoveLine.create(debit_line) AccountMoveLine.append([0, 0, debit_line])
AccountMoveLine.create(credit_line) AccountMoveLine.append([0, 0, credit_line])
# Create account move lines for quants already out of stock # Create account move lines for quants already out of stock
if qty_out > 0: if qty_out > 0:
debit_line = dict(base_line, debit_line = dict(base_line,
name=(self.name + ": " + str(qty_out) + _(' already out')), name=(self.name + ": " + str(qty_out) + _(' already out')),
quantity=qty_out, quantity=0,
account_id=already_out_account_id) account_id=already_out_account_id)
credit_line = dict(base_line, credit_line = dict(base_line,
name=(self.name + ": " + str(qty_out) + _(' already out')), name=(self.name + ": " + str(qty_out) + _(' already out')),
quantity=qty_out, quantity=0,
account_id=debit_account_id) account_id=debit_account_id)
diff = diff * qty_out / self.quantity diff = diff * qty_out / self.quantity
if diff > 0: if diff > 0:
@ -354,18 +356,18 @@ class AdjustmentLines(models.Model):
# negative cost, reverse the entry # negative cost, reverse the entry
debit_line['credit'] = -diff debit_line['credit'] = -diff
credit_line['debit'] = -diff credit_line['debit'] = -diff
AccountMoveLine.create(debit_line) AccountMoveLine.append([0, 0, debit_line])
AccountMoveLine.create(credit_line) AccountMoveLine.append([0, 0, credit_line])
# TDE FIXME: oh dear # TDE FIXME: oh dear
if self.env.user.company_id.anglo_saxon_accounting: if self.env.user.company_id.anglo_saxon_accounting:
debit_line = dict(base_line, debit_line = dict(base_line,
name=(self.name + ": " + str(qty_out) + _(' already out')), name=(self.name + ": " + str(qty_out) + _(' already out')),
quantity=qty_out, quantity=0,
account_id=credit_account_id) account_id=credit_account_id)
credit_line = dict(base_line, credit_line = dict(base_line,
name=(self.name + ": " + str(qty_out) + _(' already out')), name=(self.name + ": " + str(qty_out) + _(' already out')),
quantity=qty_out, quantity=0,
account_id=already_out_account_id) account_id=already_out_account_id)
if diff > 0: if diff > 0:
@ -375,7 +377,7 @@ class AdjustmentLines(models.Model):
# negative cost, reverse the entry # negative cost, reverse the entry
debit_line['credit'] = -diff debit_line['credit'] = -diff
credit_line['debit'] = -diff credit_line['debit'] = -diff
AccountMoveLine.create(debit_line) AccountMoveLine.append([0, 0, debit_line])
AccountMoveLine.create(credit_line) AccountMoveLine.append([0, 0, credit_line])
return True return AccountMoveLine