5 fixes discovered during the live deploy to entech LXC 111: 1. pre-migrate.py to rename old configurator's 'Shop Manager' group BEFORE new core 'Shop Manager v2' XML loads (cross-module name collision on res_groups_name_uniq). 2. res_company_views.xml: dropped ref() inside <field domain=> attribute (Odoo 19 view validator interprets it as a field name). 3. sale_order_views.xml: replaced 3 separate xpaths for amount_total / amount_untaxed / amount_tax with a single xpath on tax_totals widget (Odoo 19 sale.view_order_form uses one widget instead of separate fields). 4. fp_cert_security.xml: certificate_type field, not cert_type. FAIR is a separate model so the rule only restricts cert_type='nadcap_cert' now. 5. fp_certificate_views.xml + fp_capa_views.xml + fp_customer_spec_views.xml: stripped user_has_groups() from invisible= / readonly= attrs (Odoo 19 view validator interprets as field name). Model-layer ACLs and ir.rules already enforce the same restrictions. Also fixed res.groups.users -> user_ids in fp_migration.py (Odoo 19 rename, caught when manually invoking _fp_notify_owners post-deploy). CLAUDE.md updated with 4 new rules (13e cross-module name collisions, 13f ref() in domain, 13g tax_totals widget, 13h user_has_groups in attrs). Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
31 lines
1.6 KiB
XML
31 lines
1.6 KiB
XML
<?xml version="1.0" encoding="utf-8"?>
|
|
<odoo>
|
|
<data noupdate="0">
|
|
<!-- fp.certificate.certificate_type Selection values (per fp_certificate.py:27):
|
|
'coc', 'thickness_report', 'mill_test', 'nadcap_cert', 'customer_specific'.
|
|
FAIR is a separate model (fusion.plating.fair); no 'fair' value here.
|
|
Nadcap is the only QM-restricted type at the model level. -->
|
|
<record id="rule_fp_certificate_nadcap_qm_only" model="ir.rule">
|
|
<field name="name">FP Certificate: Nadcap edit restricted to Quality Manager</field>
|
|
<field name="model_id" ref="model_fp_certificate"/>
|
|
<field name="domain_force">[('certificate_type', '!=', 'nadcap_cert')]</field>
|
|
<field name="groups" eval="[(4, ref('fusion_plating.group_fp_manager'))]"/>
|
|
<field name="perm_read" eval="False"/>
|
|
<field name="perm_write" eval="True"/>
|
|
<field name="perm_create" eval="True"/>
|
|
<field name="perm_unlink" eval="True"/>
|
|
</record>
|
|
|
|
<record id="rule_fp_certificate_all_qm" model="ir.rule">
|
|
<field name="name">FP Certificate: QM has full access to all certs</field>
|
|
<field name="model_id" ref="model_fp_certificate"/>
|
|
<field name="domain_force">[(1, '=', 1)]</field>
|
|
<field name="groups" eval="[(4, ref('fusion_plating.group_fp_quality_manager'))]"/>
|
|
<field name="perm_read" eval="False"/>
|
|
<field name="perm_write" eval="True"/>
|
|
<field name="perm_create" eval="True"/>
|
|
<field name="perm_unlink" eval="True"/>
|
|
</record>
|
|
</data>
|
|
</odoo>
|