- SaleOrder._fc_rate_usage: aggregates usage, computes overage via charge._compute_billable, upserts sale.order.line for the overage product - FusionBillingUsage._cron_rate_open_periods: hourly cron iterates active charges × in-progress subscriptions, calls _fc_rate_usage - data/ir_cron.xml: two crons — rate usage (hourly), dispatch webhooks (2 min) - __manifest__.py: registers data/ir_cron.xml in data list - test_usage.py: test_rate_open_period_creates_overage_line (TDD, FCB_EXIT=0) Reference: _create_recurring_invoice / _get_invoiceable_lines confirmed in Enterprise sale_subscription/models/sale_order.py — overage line goes onto sale.order so native invoicing picks it up via _get_invoiceable_lines.
23 lines
989 B
XML
23 lines
989 B
XML
<?xml version="1.0" encoding="utf-8"?>
|
|
<odoo noupdate="1">
|
|
<record id="cron_fc_rate_usage" model="ir.cron">
|
|
<field name="name">Fusion Billing: Rate usage before invoicing</field>
|
|
<field name="model_id" ref="model_fusion_billing_usage"/>
|
|
<field name="state">code</field>
|
|
<field name="code">model._cron_rate_open_periods()</field>
|
|
<field name="interval_number">1</field>
|
|
<field name="interval_type">hours</field>
|
|
<field name="active">True</field>
|
|
</record>
|
|
|
|
<record id="cron_fc_dispatch_webhooks" model="ir.cron">
|
|
<field name="name">Fusion Billing: Dispatch outbound webhooks</field>
|
|
<field name="model_id" ref="model_fusion_billing_webhook"/>
|
|
<field name="state">code</field>
|
|
<field name="code">model._cron_dispatch()</field>
|
|
<field name="interval_number">2</field>
|
|
<field name="interval_type">minutes</field>
|
|
<field name="active">True</field>
|
|
</record>
|
|
</odoo>
|