[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.'))
|
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
|
||||||
|
Loading…
Reference in New Issue
Block a user