[ADD]:Added Upstream Patch for stock_landed_costs
This commit is contained in:
parent
0da768c114
commit
61ecd3fa7b
@ -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
|
||||
|
Loading…
Reference in New Issue
Block a user