Phase 7 — 14 product categories under Services/Resale parents, each wired to the appropriate default income (and expense for Resale) accounts. Phase 8 — RP-Associated partner tag + Westin Healthcare Inc + Divine Mobility Inc partner records, both as Customer+Vendor, both tagged RP-Associated, both with CA-Ontario fiscal position pre-applied. Phase 9 — 8 bank reconciliation rules for common vendors (AWS, Hetzner, DigitalOcean, Cloudflare, GitHub, Microsoft, Stripe fee, Google Ads) that auto-suggest the correct category account when reconciling bank statement lines. Uses Odoo 19's 'trigger' field (replaces old 'rule_type'). Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
111 lines
4.8 KiB
XML
111 lines
4.8 KiB
XML
<?xml version="1.0" encoding="utf-8"?>
|
|
<odoo>
|
|
<data noupdate="0">
|
|
|
|
<record id="rule_aws" model="account.reconcile.model">
|
|
<field name="name">AWS / Amazon Web Services → Cloud Infrastructure</field>
|
|
<field name="trigger">manual</field>
|
|
<field name="match_label">contains</field>
|
|
<field name="match_label_param">AMAZON WEB SERVICES</field>
|
|
<field name="line_ids" eval="[(0, 0, {
|
|
'account_id': ref('acct_511105'),
|
|
'amount_type': 'percentage',
|
|
'amount_string': '100',
|
|
'label': 'AWS — Cloud Infrastructure',
|
|
})]"/>
|
|
</record>
|
|
|
|
<record id="rule_hetzner" model="account.reconcile.model">
|
|
<field name="name">Hetzner → Cloud Infrastructure</field>
|
|
<field name="trigger">manual</field>
|
|
<field name="match_label">contains</field>
|
|
<field name="match_label_param">HETZNER</field>
|
|
<field name="line_ids" eval="[(0, 0, {
|
|
'account_id': ref('acct_511105'),
|
|
'amount_type': 'percentage',
|
|
'amount_string': '100',
|
|
'label': 'Hetzner — Cloud Infrastructure',
|
|
})]"/>
|
|
</record>
|
|
|
|
<record id="rule_digitalocean" model="account.reconcile.model">
|
|
<field name="name">DigitalOcean → Cloud Infrastructure</field>
|
|
<field name="trigger">manual</field>
|
|
<field name="match_label">contains</field>
|
|
<field name="match_label_param">DIGITALOCEAN</field>
|
|
<field name="line_ids" eval="[(0, 0, {
|
|
'account_id': ref('acct_511105'),
|
|
'amount_type': 'percentage',
|
|
'amount_string': '100',
|
|
'label': 'DigitalOcean — Cloud Infrastructure',
|
|
})]"/>
|
|
</record>
|
|
|
|
<record id="rule_cloudflare" model="account.reconcile.model">
|
|
<field name="name">Cloudflare → CDN & Edge</field>
|
|
<field name="trigger">manual</field>
|
|
<field name="match_label">contains</field>
|
|
<field name="match_label_param">CLOUDFLARE</field>
|
|
<field name="line_ids" eval="[(0, 0, {
|
|
'account_id': ref('acct_511110'),
|
|
'amount_type': 'percentage',
|
|
'amount_string': '100',
|
|
'label': 'Cloudflare — CDN & Edge',
|
|
})]"/>
|
|
</record>
|
|
|
|
<record id="rule_github" model="account.reconcile.model">
|
|
<field name="name">GitHub → Software (Dev Tools)</field>
|
|
<field name="trigger">manual</field>
|
|
<field name="match_label">contains</field>
|
|
<field name="match_label_param">GITHUB</field>
|
|
<field name="line_ids" eval="[(0, 0, {
|
|
'account_id': ref('acct_631200'),
|
|
'amount_type': 'percentage',
|
|
'amount_string': '100',
|
|
'label': 'GitHub — Software (Dev Tools)',
|
|
})]"/>
|
|
</record>
|
|
|
|
<record id="rule_microsoft" model="account.reconcile.model">
|
|
<field name="name">Microsoft / M365 → Software (Productivity)</field>
|
|
<field name="trigger">manual</field>
|
|
<field name="match_label">contains</field>
|
|
<field name="match_label_param">MICROSOFT</field>
|
|
<field name="line_ids" eval="[(0, 0, {
|
|
'account_id': ref('acct_631100'),
|
|
'amount_type': 'percentage',
|
|
'amount_string': '100',
|
|
'label': 'Microsoft — Software (Productivity)',
|
|
})]"/>
|
|
</record>
|
|
|
|
<record id="rule_stripe_fee" model="account.reconcile.model">
|
|
<field name="name">Stripe fee → Merchant Processing</field>
|
|
<field name="trigger">manual</field>
|
|
<field name="match_label">contains</field>
|
|
<field name="match_label_param">STRIPE FEE</field>
|
|
<field name="line_ids" eval="[(0, 0, {
|
|
'account_id': ref('acct_691200'),
|
|
'amount_type': 'percentage',
|
|
'amount_string': '100',
|
|
'label': 'Stripe — Merchant Processing',
|
|
})]"/>
|
|
</record>
|
|
|
|
<record id="rule_google_ads" model="account.reconcile.model">
|
|
<field name="name">Google Ads → Advertising (Digital)</field>
|
|
<field name="trigger">manual</field>
|
|
<field name="match_label">contains</field>
|
|
<field name="match_label_param">GOOGLE ADS</field>
|
|
<field name="line_ids" eval="[(0, 0, {
|
|
'account_id': ref('acct_641100'),
|
|
'amount_type': 'percentage',
|
|
'amount_string': '100',
|
|
'label': 'Google Ads — Advertising (Digital)',
|
|
})]"/>
|
|
</record>
|
|
|
|
</data>
|
|
</odoo>
|