[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:
Stéphan Sainléger
2022-05-24 16:13:46 +02:00
parent 7c415a3362
commit 4b5188bd06
6 changed files with 70 additions and 8 deletions

View File

@@ -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")