first push message

This commit is contained in:
2026-07-01 14:41:49 +07:00
parent 6667dec2bf
commit 58b5f46cc4
2951 changed files with 316619 additions and 0 deletions
@@ -0,0 +1,48 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<data>
<!-- Approve wizard — Khmer labels -->
<record id="xf_doc_approval_custom_approve_wizard" model="ir.ui.view">
<field name="name">xf_doc_approval_custom_approve_wizard</field>
<field name="model">xf.doc.approval.document.approver</field>
<field name="inherit_id" ref="xf_doc_approval.action_approve_wizard"/>
<field name="arch" type="xml">
<xpath expr="//form" position="attributes">
<attribute name="string">អនុម័តឯកសារ</attribute>
</xpath>
<xpath expr="//field[@name='notes']" position="attributes">
<attribute name="string">មតិយោបល់</attribute>
<attribute name="placeholder">បញ្ចូលមតិយោបល់...</attribute>
</xpath>
<xpath expr="//button[@name='action_approve']" position="attributes">
<attribute name="string">អនុម័ត</attribute>
</xpath>
<xpath expr="//button[@special='cancel'][1]" position="attributes">
<attribute name="string">បោះបង់</attribute>
</xpath>
</field>
</record>
<!-- Reject wizard — Khmer labels -->
<record id="xf_doc_approval_custom_reject_wizard" model="ir.ui.view">
<field name="name">xf_doc_approval_custom_reject_wizard</field>
<field name="model">xf.doc.approval.document.approver</field>
<field name="inherit_id" ref="xf_doc_approval.action_reject_wizard"/>
<field name="arch" type="xml">
<xpath expr="//form" position="attributes">
<attribute name="string">បដិសេធឯកសារ</attribute>
</xpath>
<xpath expr="//field[@name='notes']" position="attributes">
<attribute name="string">មតិយោបល់</attribute>
<attribute name="placeholder">បញ្ចូលហេតុផលបដិសេធ...</attribute>
</xpath>
<xpath expr="//button[@name='action_reject']" position="attributes">
<attribute name="string">បដិសេធ</attribute>
</xpath>
<xpath expr="//button[@special='cancel'][1]" position="attributes">
<attribute name="string">បោះបង់</attribute>
</xpath>
</field>
</record>
</data>
</odoo>
+18
View File
@@ -0,0 +1,18 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<data>
<record id="xf_doc_approval_custom_navbar_css" model="ir.asset">
<field name="name">xf_doc_approval_custom - Navbar CSS</field>
<field name="bundle">web.assets_backend</field>
<field name="path">xf_doc_approval_custom/static/src/css/navbar.css</field>
</record>
<template id="xf_doc_approval_custom_fonts" inherit_id="web.layout" name="Battambang Font">
<xpath expr="//head" position="inside">
<link rel="preconnect" href="https://fonts.googleapis.com"/>
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin=""/>
<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Battambang:wght@400;700&amp;display=swap"/>
</xpath>
</template>
</data>
</odoo>
@@ -0,0 +1,205 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<data>
<record id="xf_doc_approval_custom_document_package_form" model="ir.ui.view">
<field name="name">xf_doc_approval_custom_document_package_form</field>
<field name="model">xf.doc.approval.document.package</field>
<field name="inherit_id" ref="xf_doc_approval.xf_doc_approval_document_package_form"/>
<field name="arch" type="xml">
<!-- ===== HEADER ===== -->
<!-- Rename buttons -->
<xpath expr="//button[@name='action_send_for_approval']" position="attributes">
<attribute name="string">បញ្ជូន</attribute>
<attribute name="confirm">តើអ្នកពិតជាចង់បញ្ជូនឯកសារសម្រាប់ការអនុម័តមែនទេ?</attribute>
</xpath>
<xpath expr="//button[@name='action_reject_wizard']" position="attributes">
<attribute name="string">បដិសេធ</attribute>
</xpath>
<xpath expr="//button[@name='action_approve_wizard']" position="attributes">
<attribute name="string">អនុម័ត</attribute>
</xpath>
<xpath expr="//button[@name='action_draft']" position="attributes">
<attribute name="string">កែប្រែ</attribute>
</xpath>
<xpath expr="//button[@name='action_cancel']" position="attributes">
<attribute name="string">លុបចោល</attribute>
</xpath>
<!-- ===== SHEET ===== -->
<!-- Hide oe_title -->
<xpath expr="//div[@class='oe_title']" position="attributes">
<attribute name="invisible">1</attribute>
</xpath>
<!-- Rename section header -->
<xpath expr="//group[@name='approvers']" position="attributes">
<attribute name="string">ក. ឋានានុក្រមលំហូរឯកសារ</attribute>
<attribute name="class">o_xf_section_b</attribute>
</xpath>
<!-- Approver table customization -->
<xpath expr="//field[@name='approver_ids']//list" position="attributes">
<attribute name="no_open">1</attribute>
<attribute name="create_text">បន្ថែម</attribute>
</xpath>
<xpath expr="//field[@name='approver_ids']//list//field[@name='method']" position="attributes">
<attribute name="column_invisible">True</attribute>
</xpath>
<xpath expr="//field[@name='approver_ids']//list//field[@name='step']" position="attributes">
<attribute name="string">ដំណាក់កាល</attribute>
</xpath>
<xpath expr="//field[@name='approver_ids']//list//field[@name='step']" position="after">
<field name="sent_date_kh" string="កាលបរិច្ឆេទ" optional="show"/>
</xpath>
<xpath expr="//field[@name='approver_ids']//list//field[@name='user_id']" position="attributes">
<attribute name="string">អ្នកពិនិត្យ និងអនុម័ត</attribute>
</xpath>
<xpath expr="//field[@name='approver_ids']//list//field[@name='role']" position="attributes">
<attribute name="string">តួនាទី</attribute>
</xpath>
<xpath expr="//field[@name='approver_ids']//list//field[@name='state']" position="attributes">
<attribute name="string">ស្ថានភាព</attribute>
</xpath>
<xpath expr="//field[@name='approver_ids']//list//field[@name='notes']" position="replace">
<field name="notes_display" string="មតិយោបល់" readonly="1"/>
<field name="round" string="ជំនាន់" optional="show"/>
</xpath>
<!-- Hide old groups -->
<xpath expr="//group[group[@name='visibility']]" position="attributes">
<attribute name="invisible">1</attribute>
</xpath>
<xpath expr="//group[@name='documents']" position="attributes">
<attribute name="invisible">1</attribute>
</xpath>
<xpath expr="//group[field[@name='initiator_user_id']]" position="attributes">
<attribute name="invisible">1</attribute>
</xpath>
<xpath expr="//group[@name='description']" position="attributes">
<attribute name="invisible">1</attribute>
</xpath>
<!-- Section ខ: Content -->
<xpath expr="//group[@name='approvers']" position="after">
<group string="ខ. ខ្លឹមសារ" name="section_b" class="o_xf_section_b">
<div class="o_xf_table" colspan="2">
<!-- Document Type -->
<div class="o_xf_row">
<div class="o_xf_cell_label">
<span>ប្រភេទឯកសារ</span>
</div>
<div class="o_xf_cell_value">
<field name="document_type" nolabel="1" readonly="state != 'draft'"/>
</div>
</div>
<!-- Decision Requester -->
<div class="o_xf_row">
<div class="o_xf_cell_label">
<span>ស្នើសុំការសម្រេចពី</span>
</div>
<div class="o_xf_cell_value">
<field name="decision_requester_id" nolabel="1" readonly="state != 'draft'"/>
</div>
</div>
<!-- Reference -->
<div class="o_xf_row o_xf_row_tall">
<div class="o_xf_cell_label">
<span>យោង</span>
</div>
<div class="o_xf_cell_value o_xf_cell_split">
<div class="o_xf_split_left o_xf_upload_zone">
<span class="o_xf_split_hint" invisible="state != 'draft'">Upload ឯកសារ · អាចបន្ថែមច្រើន</span>
<field name="reference_file_ids" widget="many2many_binary" nolabel="1" invisible="state != 'draft'"/>
<field name="reference_files_html" widget="html" nolabel="1" readonly="1" invisible="state == 'draft'"/>
</div>
<div class="o_xf_split_divider"/>
<div class="o_xf_split_right">
<span class="o_xf_split_hint">មតិណែនាំ</span>
<field name="reference_note" nolabel="1" readonly="state != 'draft'" placeholder="បញ្ចូលមតិណែនាំ..."/>
</div>
</div>
</div>
<!-- Subject -->
<div class="o_xf_row">
<div class="o_xf_cell_label">
<span>កម្មវត្ថុ</span>
</div>
<div class="o_xf_cell_value">
<field name="name" nolabel="1" readonly="state != 'draft'" placeholder="បញ្ចូលកម្មវត្ថុ..."/>
</div>
</div>
<!-- Documents -->
<div class="o_xf_row o_xf_row_tall">
<div class="o_xf_cell_label">
<span>ឯកសារ</span>
</div>
<div class="o_xf_cell_value o_xf_cell_tall o_xf_upload_zone">
<span class="o_xf_split_hint" invisible="state != 'draft'">Upload ឯកសារ · អាចបន្ថែមច្រើន</span>
<field name="upload_file_ids" widget="many2many_binary" nolabel="1" invisible="state != 'draft'"/>
<field name="document_files_html" widget="html" nolabel="1" readonly="1" invisible="state == 'draft'"/>
</div>
</div>
<!-- Document Number -->
<div class="o_xf_row">
<div class="o_xf_cell_label">
<span>ឈ្មោះឯកសារ</span>
</div>
<div class="o_xf_cell_value">
<field name="doc_number" nolabel="1" readonly="state != 'draft'" placeholder="ចាប់ឈ្មោះស្វ័យប្រវត្តិ..."/>
</div>
</div>
<!-- Description -->
<div class="o_xf_row o_xf_row_tall">
<div class="o_xf_cell_label">
<span>បរិយាយ</span>
</div>
<div class="o_xf_cell_value o_xf_cell_tall">
<field name="description" nolabel="1" readonly="state != 'draft'" placeholder="សរសេរបរិយាយ..."/>
</div>
</div>
<!-- Initiator -->
<div class="o_xf_row">
<div class="o_xf_cell_label">
<span>អ្នកស្នើសុំ</span>
</div>
<div class="o_xf_cell_value">
<field name="initiator_user_id" nolabel="1" readonly="state != 'draft'"/>
</div>
</div>
</div>
</group>
<!-- QR Security Section -->
<group string="គ. ការកំណត់សុវត្ថិភាព QR" name="section_qr_security" class="o_xf_section_b" invisible="state == 'draft'">
<field name="authorized_user_ids" widget="many2many_tags" placeholder="ជ្រើសរើសអ្នកប្រើប្រាស់..."/>
<field name="qr_token_expiry" placeholder="ជ្រើសរើសថ្ងៃផុតកំណត់..."/>
<field name="qr_access_token" password="True" groups="base.group_system"/>
</group>
<!-- QR Code Display -->
<div class="o_xf_qr_group" colspan="2" invisible="state != 'approved' or not qr_code">
<span class="o_xf_qr_label">
<i class="fa fa-qrcode"/> លេខ QR ឯកសារ
</span>
<field name="qr_code" widget="image" nolabel="1" options="{'size': [260, 260]}"/>
</div>
</xpath>
</field>
</record>
</data>
</odoo>
@@ -0,0 +1,13 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<data>
<record id="menu_xf_doc_approval_root_kh" model="ir.ui.menu">
<field name="id" ref="xf_doc_approval.menu_xf_doc_approval_root"/>
<field name="name">សំណើអនុម័ត</field>
</record>
<record id="menu_xf_doc_approval_documents_kh" model="ir.ui.menu">
<field name="id" ref="xf_doc_approval.menu_xf_doc_approval_document_package"/>
<field name="name">ឯកសារ</field>
</record>
</data>
</odoo>