[UPD] Synchronize budget with new quotation lines
By pressing button "Sync missing budget lines", a new budget section line is created for all the order lines without associated budget line.
This commit is contained in:
@@ -263,6 +263,7 @@ class AccountAnalyticAccount(models.Model):
|
||||
"name": section.product_id.name,
|
||||
"product_uom_qty": 1.0,
|
||||
"price_unit": section.plan_amount_with_coeff,
|
||||
"budget_forecast_id": section.id,
|
||||
}
|
||||
self.env["sale.order.line"].create(values)
|
||||
quotation.analytic_account_id = self.id
|
||||
|
@@ -16,6 +16,31 @@ class SaleOrder(models.Model):
|
||||
raise Warning(_("Please set the analytic account"))
|
||||
return self.analytic_account_id.action_budget_forecast()
|
||||
|
||||
def sync_missing_budget_lines(self):
|
||||
for record in self:
|
||||
for line in self.order_line:
|
||||
if not line.budget_forecast_id:
|
||||
values = {
|
||||
"analytic_id": record.analytic_account_id.id,
|
||||
"product_id": line.product_id.id,
|
||||
"description": line.name,
|
||||
"is_summary": True,
|
||||
"display_type": "line_section",
|
||||
"sequence": 999,
|
||||
}
|
||||
budget_line = self.env["budget.forecast"].create(values)
|
||||
misc_budget_line = self.env["budget.forecast"].search(
|
||||
[
|
||||
("summary_id", "=", budget_line.id),
|
||||
("budget_category", "=", "miscellaneous"),
|
||||
]
|
||||
)
|
||||
misc_budget_line.plan_qty = 1
|
||||
misc_budget_line.plan_price = line.price_unit / (
|
||||
1 + record.analytic_account_id.global_coeff
|
||||
)
|
||||
line.budget_forecast_id = budget_line.id
|
||||
|
||||
@api.returns("self", lambda value: value.id)
|
||||
def copy(self, default=None):
|
||||
record = super(SaleOrder, self).copy(default=default)
|
||||
@@ -28,3 +53,9 @@ class SaleOrder(models.Model):
|
||||
default=dict(name=name)
|
||||
)
|
||||
return record
|
||||
|
||||
|
||||
class SaleOrderLine(models.Model):
|
||||
_inherit = "sale.order.line"
|
||||
|
||||
budget_forecast_id = fields.Many2one("budget.forecast")
|
||||
|
Reference in New Issue
Block a user