feat(nexa_coa_setup): seed 14 standard service products

Standard catalog covering Nexa's main service lines, each linked to the
appropriate product category so income posts to the right GL account
automatically:

  Recurring (per month/year)
    SAAS-BASIC    SaaS Subscription — Basic               $0    -> 4010
    HOST-S        Hosting — Small                         $49   -> 4020
    HOST-M        Hosting — Medium                        $149  -> 4020
    HOST-L        Hosting — Large                         $299  -> 4020
    SUPPORT-RET   Support Contract — 4 hrs retainer       $640  -> 4030
    SETUP-FEE     Setup / Onboarding Fee                  $500  -> 4050

  Project (hourly)
    DEV-SOFTWARE  Custom Software Development             $160  -> 4110
    DEV-WEBAPP    Custom Web App Development              $160  -> 4120
    DEV-WEBSITE   Custom Website Development              $160  -> 4130
    ERP-IMPL      ERP Implementation & Customization      $175  -> 4140

  Services (hourly)
    CONSULT       Consulting & Advisory                   $200  -> 4210
    TRAINING      Training & Workshop                     $120  -> 4220
    TECH-SUPPORT  Technical Support — Per-incident        $160  -> 4230

  Reseller (template)
    RESALE-SW     Third-party Software License (template) $0    -> 4310

File uses noupdate=1 so user price/description edits persist across
future -u runs.

Verified: creating an invoice for Westin with 10 hrs of DEV-SOFTWARE
auto-routes to 4110 Custom Software Development Revenue with 13% HST
applied via fiscal position.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
gsinghpal
2026-05-12 20:41:13 -04:00
parent 82a13b2ce5
commit a0f783ab14
2 changed files with 159 additions and 0 deletions

View File

@@ -30,6 +30,7 @@
"data/08_res_partner_category.xml",
"data/09_res_partner.xml",
"data/10_account_reconcile_model.xml",
"data/11_products.xml",
],
"pre_init_hook": "pre_init_hook",
"post_init_hook": "post_init_hook",

View File

@@ -0,0 +1,158 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<data noupdate="1">
<!-- noupdate=1: products are seeded on first install but NEVER overwritten
on later -u, so user price/description edits stick. -->
<!-- ============================================================ -->
<!-- Recurring Revenue (4010-4050) -->
<!-- ============================================================ -->
<record id="prod_saas_basic" model="product.template">
<field name="name">SaaS Subscription — Basic</field>
<field name="default_code">SAAS-BASIC</field>
<field name="type">service</field>
<field name="list_price">0.00</field>
<field name="categ_id" ref="pc_saas"/>
<field name="description_sale">Basic SaaS subscription tier. Set monthly price per customer.</field>
</record>
<record id="prod_hosting_small" model="product.template">
<field name="name">Hosting — Small (1 vCPU / 2GB RAM / 50GB SSD)</field>
<field name="default_code">HOST-S</field>
<field name="type">service</field>
<field name="list_price">49.00</field>
<field name="categ_id" ref="pc_hosting"/>
<field name="description_sale">Small managed hosting tier. Suitable for small websites, dev/staging environments.</field>
</record>
<record id="prod_hosting_medium" model="product.template">
<field name="name">Hosting — Medium (2 vCPU / 8GB RAM / 200GB SSD)</field>
<field name="default_code">HOST-M</field>
<field name="type">service</field>
<field name="list_price">149.00</field>
<field name="categ_id" ref="pc_hosting"/>
<field name="description_sale">Medium managed hosting tier. Production websites, small apps.</field>
</record>
<record id="prod_hosting_large" model="product.template">
<field name="name">Hosting — Large (4 vCPU / 16GB RAM / 500GB SSD)</field>
<field name="default_code">HOST-L</field>
<field name="type">service</field>
<field name="list_price">299.00</field>
<field name="categ_id" ref="pc_hosting"/>
<field name="description_sale">Large managed hosting tier. Production SaaS, heavier workloads.</field>
</record>
<record id="prod_support_retainer" model="product.template">
<field name="name">Support Contract — Monthly Retainer (4 hrs)</field>
<field name="default_code">SUPPORT-RET</field>
<field name="type">service</field>
<field name="list_price">640.00</field>
<field name="categ_id" ref="pc_support"/>
<field name="description_sale">4 hours/month support retainer. Unused hours expire monthly. Overage billed at standard rate.</field>
</record>
<record id="prod_setup_fee" model="product.template">
<field name="name">Setup / Onboarding Fee</field>
<field name="default_code">SETUP-FEE</field>
<field name="type">service</field>
<field name="list_price">500.00</field>
<field name="categ_id" ref="pc_setup_fee"/>
<field name="description_sale">One-time setup &amp; onboarding fee for new SaaS / hosting / support customers.</field>
</record>
<!-- ============================================================ -->
<!-- Project Revenue (4110-4160) — hourly -->
<!-- ============================================================ -->
<record id="prod_dev_software" model="product.template">
<field name="name">Custom Software Development — Hourly</field>
<field name="default_code">DEV-SOFTWARE</field>
<field name="type">service</field>
<field name="list_price">160.00</field>
<field name="uom_id" ref="uom.product_uom_hour"/>
<field name="categ_id" ref="pc_custom_software"/>
<field name="description_sale">Custom software development billed hourly. Quote on scope; final billing on actual hours.</field>
</record>
<record id="prod_dev_webapp" model="product.template">
<field name="name">Custom Web Application Development — Hourly</field>
<field name="default_code">DEV-WEBAPP</field>
<field name="type">service</field>
<field name="list_price">160.00</field>
<field name="uom_id" ref="uom.product_uom_hour"/>
<field name="categ_id" ref="pc_webapp"/>
<field name="description_sale">Custom web application development (frontend + backend) billed hourly.</field>
</record>
<record id="prod_dev_website" model="product.template">
<field name="name">Custom Website Development — Hourly</field>
<field name="default_code">DEV-WEBSITE</field>
<field name="type">service</field>
<field name="list_price">160.00</field>
<field name="uom_id" ref="uom.product_uom_hour"/>
<field name="categ_id" ref="pc_website"/>
<field name="description_sale">Custom website development (corporate sites, marketing sites) billed hourly.</field>
</record>
<record id="prod_erp_impl" model="product.template">
<field name="name">ERP Implementation &amp; Customization — Hourly</field>
<field name="default_code">ERP-IMPL</field>
<field name="type">service</field>
<field name="list_price">175.00</field>
<field name="uom_id" ref="uom.product_uom_hour"/>
<field name="categ_id" ref="pc_erp"/>
<field name="description_sale">Odoo / ERP implementation, customization, module development billed hourly.</field>
</record>
<!-- ============================================================ -->
<!-- Services Revenue (4210-4230) — hourly -->
<!-- ============================================================ -->
<record id="prod_consulting" model="product.template">
<field name="name">Consulting &amp; Advisory — Hourly</field>
<field name="default_code">CONSULT</field>
<field name="type">service</field>
<field name="list_price">200.00</field>
<field name="uom_id" ref="uom.product_uom_hour"/>
<field name="categ_id" ref="pc_consulting"/>
<field name="description_sale">Architecture, strategy, technology advisory billed hourly.</field>
</record>
<record id="prod_training" model="product.template">
<field name="name">Training &amp; Workshop — Hourly</field>
<field name="default_code">TRAINING</field>
<field name="type">service</field>
<field name="list_price">120.00</field>
<field name="uom_id" ref="uom.product_uom_hour"/>
<field name="categ_id" ref="pc_training"/>
<field name="description_sale">Custom training, workshops, knowledge transfer sessions billed hourly.</field>
</record>
<record id="prod_tech_support" model="product.template">
<field name="name">Technical Support — Per-incident / Hourly</field>
<field name="default_code">TECH-SUPPORT</field>
<field name="type">service</field>
<field name="list_price">160.00</field>
<field name="uom_id" ref="uom.product_uom_hour"/>
<field name="categ_id" ref="pc_tech_support"/>
<field name="description_sale">Ad-hoc technical support, troubleshooting, infrastructure setup billed hourly.</field>
</record>
<!-- ============================================================ -->
<!-- Reseller-side placeholders (4310 / 4320) -->
<!-- ============================================================ -->
<record id="prod_resale_software_template" model="product.template">
<field name="name">Third-party Software License (template)</field>
<field name="default_code">RESALE-SW</field>
<field name="type">service</field>
<field name="list_price">0.00</field>
<field name="categ_id" ref="pc_resale_software"/>
<field name="description_sale">Template for reselling third-party software licenses (M365, Adobe, etc.). Duplicate &amp; set price per item.</field>
</record>
</data>
</odoo>