# -*- coding: utf-8 -*- # Copyright 2026 Nexa Systems Inc. # License OPL-1 from odoo import api, fields, models class SaleOrder(models.Model): _inherit = "sale.order" def _fc_rate_usage(self, charge, period_start, period_end): """Aggregate this subscription's usage for `charge`'s metric in the period, compute the overage amount, and upsert a matching overage order line. Returns the amount.""" self.ensure_one() Usage = self.env['fusion.billing.usage'] total = Usage._aggregate(self, charge.metric_id, period_start, period_end) _overage, amount = charge._compute_billable(total) if charge.product_id: line = self.order_line.filtered(lambda l: l.product_id == charge.product_id) vals = {'product_uom_qty': 1, 'price_unit': amount} if line: line.write(vals) else: self.env['sale.order.line'].create( {'order_id': self.id, 'product_id': charge.product_id.id, **vals}) return amount