122 lines
7.0 KiB
XML

<?xml version="1.0" encoding="utf-8"?>
<odoo>
<record id="view_education_fee_assignment_tree" model="ir.ui.view">
<field name="name">education.fee.assignment.tree</field>
<field name="model">education.fee.assignment</field>
<field name="arch" type="xml">
<list string="Fee Invoices &amp; Assignments">
<field name="name"/>
<field name="student_id"/>
<field name="academic_year_id"/>
<field name="semester_id"/>
<field name="fee_structure_id"/>
<field name="assignment_date"/>
<field name="due_date"/>
<field name="amount" sum="Total Invoiced"/>
<field name="amount_paid" sum="Total Paid"/>
<field name="amount_due" sum="Total Due"/>
<field name="payment_status" widget="badge" decoration-success="payment_status == 'paid'" decoration-warning="payment_status == 'partial'" decoration-danger="payment_status == 'overdue'" decoration-info="payment_status == 'unpaid'"/>
<field name="state" widget="badge" decoration-info="state == 'draft'" decoration-success="state == 'confirmed'"/>
<field name="company_id" groups="base.group_multi_company"/>
</list>
</field>
</record>
<record id="view_education_fee_assignment_form" model="ir.ui.view">
<field name="name">education.fee.assignment.form</field>
<field name="model">education.fee.assignment</field>
<field name="arch" type="xml">
<form string="Fee Invoice / Assignment">
<header>
<button name="action_confirm" string="Confirm &amp; Post to Ledger" type="object" class="oe_highlight" invisible="state == 'confirmed'"/>
<button name="action_cancel" string="Cancel &amp; Reverse Ledger" type="object" invisible="state == 'draft'"/>
<field name="state" widget="statusbar" statusbar_visible="draft,confirmed"/>
</header>
<sheet>
<div class="oe_title">
<label for="name" string="Invoice / Ref Number"/>
<h1><field name="name" readonly="1"/></h1>
</div>
<group>
<group string="Student &amp; Academic Scope">
<field name="student_id" readonly="state == 'confirmed'"/>
<field name="academic_year_id" readonly="state == 'confirmed'"/>
<field name="academic_term_id" readonly="state == 'confirmed'"/>
<field name="semester_id" readonly="state == 'confirmed'"/>
</group>
<group string="Schedule &amp; Financials">
<field name="fee_structure_id" readonly="state == 'confirmed'"/>
<field name="assignment_date" readonly="state == 'confirmed'"/>
<field name="due_date" readonly="state == 'confirmed'"/>
<field name="currency_id" invisible="1"/>
<field name="amount"/>
<field name="amount_paid"/>
<field name="amount_due"/>
<field name="payment_status" widget="badge" decoration-success="payment_status == 'paid'" decoration-warning="payment_status == 'partial'" decoration-danger="payment_status == 'overdue'" decoration-info="payment_status == 'unpaid'"/>
<field name="company_id" groups="base.group_multi_company"/>
</group>
</group>
<notebook>
<page string="Fee Lines Breakdown" name="lines_page">
<field name="line_ids" readonly="1">
<list string="Fee Lines">
<field name="fee_type_id"/>
<field name="amount"/>
<field name="mandatory"/>
</list>
</field>
</page>
<page string="Payments Received" name="payments_page">
<field name="payment_ids" readonly="1">
<list string="Payments">
<field name="receipt_number"/>
<field name="payment_date"/>
<field name="payment_method"/>
<field name="amount"/>
<field name="status" widget="badge" decoration-success="status == 'confirmed'"/>
</list>
</field>
</page>
</notebook>
</sheet>
</form>
</field>
</record>
<record id="view_education_fee_assignment_search" model="ir.ui.view">
<field name="name">education.fee.assignment.search</field>
<field name="model">education.fee.assignment</field>
<field name="arch" type="xml">
<search string="Fee Assignments &amp; Invoices">
<field name="name"/>
<field name="student_id"/>
<field name="fee_structure_id"/>
<filter string="Draft" name="draft" domain="[('state', '=', 'draft')]"/>
<filter string="Confirmed" name="confirmed" domain="[('state', '=', 'confirmed')]"/>
<separator/>
<filter string="Overdue" name="overdue" domain="[('payment_status', '=', 'overdue')]"/>
<filter string="Unpaid" name="unpaid" domain="[('payment_status', 'in', ('unpaid', 'partial'))]"/>
<filter string="Paid" name="paid" domain="[('payment_status', '=', 'paid')]"/>
<group>
<filter string="Student" name="group_student" context="{'group_by': 'student_id'}"/>
<filter string="Fee Structure" name="group_structure" context="{'group_by': 'fee_structure_id'}"/>
<filter string="Payment Status" name="group_payment_status" context="{'group_by': 'payment_status'}"/>
<filter string="Status" name="group_status" context="{'group_by': 'state'}"/>
</group>
</search>
</field>
</record>
<record id="action_education_fee_assignment" model="ir.actions.act_window">
<field name="name">Fee Assignments &amp; Invoices</field>
<field name="res_model">education.fee.assignment</field>
<field name="view_mode">list,form</field>
<field name="search_view_id" ref="view_education_fee_assignment_search"/>
<field name="help" type="html">
<p class="o_view_nocontent_smiling_face">
Assign fee structures and generate fee obligations for students.
</p>
</field>
</record>
</odoo>