40 lines
1.7 KiB
XML
40 lines
1.7 KiB
XML
<?xml version="1.0" encoding="utf-8"?>
|
|
<odoo noupdate="1">
|
|
<!-- Session name sequence -->
|
|
<record id="seq_fusion_accounting_session" model="ir.sequence">
|
|
<field name="name">Fusion AI Session</field>
|
|
<field name="code">fusion.accounting.session</field>
|
|
<field name="prefix">FAS/%(year)s/</field>
|
|
<field name="padding">5</field>
|
|
</record>
|
|
|
|
<!-- Daily audit scan: expire stale pending approvals -->
|
|
<record id="cron_fusion_audit_scan" model="ir.cron">
|
|
<field name="name">Fusion AI: Periodic Audit Scan</field>
|
|
<field name="model_id" ref="model_fusion_accounting_match_history"/>
|
|
<field name="state">code</field>
|
|
<field name="code">
|
|
cutoff = datetime.datetime.now() - datetime.timedelta(days=30)
|
|
stale = model.search([('decision', '=', 'pending'), ('proposed_at', '<', cutoff.strftime('%Y-%m-%d %H:%M:%S'))])
|
|
stale.write({'decision': 'rejected', 'rejection_reason': 'Auto-expired after 30 days'})
|
|
</field>
|
|
<field name="interval_number">1</field>
|
|
<field name="interval_type">days</field>
|
|
<field name="active">True</field>
|
|
</record>
|
|
|
|
<!-- Weekly tier promotion check -->
|
|
<record id="cron_fusion_tier_promotion" model="ir.cron">
|
|
<field name="name">Fusion AI: Tier Promotion Check</field>
|
|
<field name="model_id" ref="model_fusion_accounting_rule"/>
|
|
<field name="state">code</field>
|
|
<field name="code">
|
|
for rule in model.search([('active', '=', True), ('approval_tier', '=', 'needs_approval')]):
|
|
rule._check_promotion()
|
|
</field>
|
|
<field name="interval_number">7</field>
|
|
<field name="interval_type">days</field>
|
|
<field name="active">True</field>
|
|
</record>
|
|
</odoo>
|