Skip to content
Snippets Groups Projects
hall_contract_overview.xml 32.2 KiB
Newer Older
<?xml version="1.0" encoding="utf-8" ?>
<odoo>
    <record id="hall_contract_overview_form" model="ir.ui.view">
        <field name="name">hall.contract.overview</field>
        <field name="type">qweb</field>
        <field name="model">hall.contract</field>
        <field name="arch" type="xml">
            <qweb js_class="contract_overview">
                <nav class="o_qweb_cp_buttons">
                    <button type="object" class="btn" id="update_view">
                        <i class="fa fa-refresh" />
                    </button>
                    <button
                        type="object"
                        class="btn btn-outline-primary"
                        id="update_cashpad_values"
                        groups="base.group_no_one,hall_sale_cashpad.group_hall_cashpad_manager"
                    >
                        Mettre à jour les données Cashpad
                    </button>
                </nav>
                <div class="o_form_view o_form_readonly o_project_plan">
                    <div class="o_form_sheet_bg">
                        <div class="o_form_sheet position-relative">
                            <t t-set="values" t-value="records.get_overview()" />
                            <t t-set="job_ids" t-value="values['job_ids']" />
                                groups="base.group_no_one,hall_sale_cashpad.group_hall_cashpad_manager"
                            >
                                <div class="col-12">
                                    <div
                                        class="alert alert-warning"
                                        role="alert"
                                        t-if="job_ids"
                                    >
                                        <h3 class="text-uppercase fw-bolder mb-4">
                                        Archives en cours de traitement :

                                        </h3>
                                        <table class="table table-sm text-center">
                                            <tr>
                                                <td>en attente</td>
                                                <td>dans la file</td>
                                                <td>en cours</td>
                                                <td>en échec</td>
                                            </tr>
                                            <tr>
                                                <td><t
                                                        t-out="len(job_ids.filtered(lambda j: j.state == 'pending'))"
                                                    /></td>
                                                <td><t
                                                        t-out="len(job_ids.filtered(lambda j: j.state == 'enqueued'))"
                                                    /></td>
                                                <td><t
                                                        t-out="len(job_ids.filtered(lambda j: j.state == 'started'))"
                                                    /></td>
                                                <td><t
                                                        t-out="len(job_ids.filtered(lambda j: j.state == 'failed'))"
                                                    /></td>
                                            </tr>
                                        </table>
                                    </div>
                                    <div
                                        class="alert alert-success"
                                        role="alert"
                                        t-if="not job_ids"
                                    >
                                        Aucune archive en cours de traitement ou en échec
                                    </div>
                                </div>
                            </div>
                            <div class="row">
                                <!-- Global Values -->
                                <div class="col-12">
                                    <div class="row">
                                        <div class="col-12">
                                            <h3
                                                class="text-uppercase fw-bolder o_horizontal_separator mb-4"
                                            >
                                                Chiffre d'affaire
                                                <t
                                                    t-if="len(values['contract_ids']) == 1"
                                                >
                                                     -
                                                    <t
                                                        t-out="values['contract_ids'].display_name"
                                                    />
                                                </t>
                                            </h3>
                                            <div class="row">
                                                <!-- Yesterday -->
                                                <t
                                                    t-call="festa_dashboard.hall_contract_overview_kpi"
                                                >
                                                    <t t-set="title" t-value="'Hier'" />
                                                    <t
                                                        t-set="date_text"
                                                        t-value="'le '"
                                                    />
                                                    <t
                                                        t-set="date"
                                                        t-value="values['sales']['day']"
                                                    />
                                                    <t
                                                        t-set="amount"
                                                        t-value="values['sales']['yesterday']['total_sales']"
                                                    />
                                                    <t
                                                        t-set="target"
                                                        t-value="values['sales']['last_year']['total_sales']"
                                                    />
                                                    <t t-set="arrow" t-value="True" />
                                                    <t
                                                        t-set="bottom_text"
                                                        t-value="'''l'année dernière '''"
                                                    />
                                                    <t
                                                        t-set="average_sales"
                                                        t-value="values['sales']['yesterday']['average_sales']"
                                                    />
                                                    <t
                                                        t-set="currency_id"
                                                        t-value="values['company_id'].currency_id"
                                                    />
                                                </t>
                                                <!-- Last month -->
                                                <t
                                                    t-call="festa_dashboard.hall_contract_overview_kpi"
                                                >
                                                    <t
                                                        t-set="title"
                                                        t-value="'Ce mois-ci'"
                                                    />
                                                    <t
                                                        t-set="date_text"
                                                        t-value="'depuis le '"
                                                    />
                                                    <t
                                                        t-set="date"
                                                        t-value="values['sales']['month']"
                                                    />
                                                    <t
                                                        t-set="amount"
                                                        t-value="values['sales']['this_month']['total_sales']"
                                                    />
                                                    <t
                                                        t-set="target"
                                                        t-value="values['sales']['target_month']"
                                                    />
                                                    <t
                                                        t-set="bottom_text"
                                                        t-value="'objectif du mois  '"
                                                    />
                                                    <t
                                                        t-set="average_sales"
                                                        t-value="values['sales']['this_month']['average_sales']"
                                                    />
                                                    <t
                                                        t-set="currency_id"
                                                        t-value="values['company_id'].currency_id"
                                                    />
                                                </t>
                                                <!-- Last Year -->
                                                <t
                                                    t-call="festa_dashboard.hall_contract_overview_kpi"
                                                >
                                                    <t
                                                        t-set="title"
                                                        t-value="'Cette année'"
                                                    />
                                                    <t
                                                        t-set="date_text"
                                                        t-value="'depuis le '"
                                                    />
                                                    <t
                                                        t-set="date"
                                                        t-value="values['sales']['year']"
                                                    />
                                                    <t
                                                        t-set="amount"
                                                        t-value="values['sales']['this_year']['total_sales']"
                                                    />
                                                    <t
                                                        t-set="target"
                                                        t-value="values['sales']['target_year']"
                                                    />
                                                    <t
                                                        t-set="bottom_text"
                                                        t-value="'''objectif de l'année  '''"
                                                    />
                                                    <t
                                                        t-set="average_sales"
                                                        t-value="values['sales']['this_year']['average_sales']"
                                                    />
                                                    <t
                                                        t-set="currency_id"
                                                        t-value="values['company_id'].currency_id"
                                                    />
                                                </t>
                                            </div>
                                        </div>

                                        <!-- Detail by contract -->
                                        <div
                                            class="col-12 mt-4"
                                            t-if="values['sales']['revenue_detail']"
                                        >
                                            <h3
                                                class="text-uppercase fw-bolder o_horizontal_separator mb-4"
                                            >Objectif des derniers mois</h3>
                                            <table
                                                class="table table-striped table-hover"
                                            >
                                                <thead>
                                                    <tr>
                                                        <th />
                                                        <th
                                                            t-foreach="values['sales']['revenue_detail']"
                                                            t-as="revenue"
                                                        >
                                                            <t
                                                                t-out="revenue.day_date"
                                                                t-options="{'widget': 'date', 'format': 'MMMM yyyy'}"
                                                            />
                                                        </th>
                                                    </tr>
                                                </thead>
                                                <tbody>
                                                    <tr>
                                                        <th>CA HT</th>
                                                        <td
                                                            t-foreach="values['sales']['revenue_detail']"
                                                            t-as="revenue"
                                                            class="text-end"
                                                        >
                                                            <t
                                                                t-out="revenue.sales_excl_taxes"
                                                                t-options="{'widget': 'monetary', 'display_currency': values['company_id'].currency_id}"
                                                            />
                                                        </td>
                                                    </tr>
                                                    <tr>
                                                        <th>Objectif</th>
                                                        <td
                                                            t-foreach="values['sales']['revenue_detail']"
                                                            t-as="revenue"
                                                            class="text-end"
                                                        >
                                                            <t
                                                                t-out="revenue.amount_untaxed_target"
                                                                t-options="{'widget': 'monetary', 'display_currency': values['company_id'].currency_id}"
                                                            />
                                                        </td>
                                                    </tr>
                                                    <tr>
                                                        <th>% atteint</th>
                                                        <td
                                                            t-foreach="values['sales']['revenue_detail']"
                                                            t-as="revenue"
                                                            class="text-end"
                                                        >
                                                            <t
                                                                t-out="revenue.sales_excl_taxes / revenue.amount_untaxed_target * 100 if revenue.amount_untaxed_target else 100"
                                                                t-options="{'widget': 'float', 'precision': 0}"
                                                            /> %
                                                        </td>
                                                    </tr>
                                                    <tr>
                                                        <th>Panier moyen</th>
                                                        <td
                                                            t-foreach="values['sales']['revenue_detail']"
                                                            t-as="revenue"
                                                            class="text-end"
                                                        >
                                                            <t
                                                                t-out="revenue.sales_excl_taxes / revenue.nb_receipts if revenue.nb_receipts else 0"
                                                                t-options="{'widget': 'monetary', 'display_currency': values['company_id'].currency_id}"
                                                            />
                                                        </td>
                                                    </tr>
                                                </tbody>
                                            </table>
                                        </div>

                                        <!-- Detail by contract -->
                                        <div
                                            class="col-12 mt-4"
                                            t-if="len(values['contract_ids']) > 1"
                                        >
                                            <h3
                                                class="text-uppercase fw-bolder o_horizontal_separator mb-4"
                                            >Détail par contrat</h3>
                                            <!-- table- -->
                                            <table
                                                class="table table-striped table-borderless table-hover"
                                            >
                                                <t
                                                    t-foreach="values['hall_ids']"
                                                    t-as="hall"
                                                >
                                                    <thead>
                                                        <tr>
                                                            <th
                                                                class="text-uppercase"
                                                                style="background-color: rgba(113, 99, 158, 0.2);"
                                                            >
                                                                <t t-out="hall.name" />
                                                            </th>
                                                        </tr>
                                                        <tr>
                                                            <th>Stand</th>
                                                            <th>Enseigne</th>
                                                            <th>Hier <small
                                                                    class="test-muted"
                                                                ><t
                                                                        t-out="values['sales']['day']"
                                                                        t-options="{'widget': 'date', 'format': 'dd/MM/yyyy'}"
                                                                    /></small></th>
                                                            <th colspan="4">Ce mois-ci</th>
                                                            <th colspan="4">Cette année</th>
                                                        </tr>
                                                        <tr class="tr-detail-header">
                                                            <td />
                                                            <td />
                                                            <td />
                                                            <td class="text-muted">CA</td>
                                                            <td class="text-muted">Panier moyen</td>
                                                            <td class="text-muted">Objectif</td>
                                                            <td />
                                                            <td class="text-muted">CA</td>
                                                            <td class="text-muted">Panier moyen</td>
                                                            <td class="text-muted">Objectif</td>
                                                            <td />
                                                        </tr>
                                                    </thead>
                                                    <tbody>
                                                        <tr
                                                            t-foreach="values['contract_ids'].filtered('cashpad_id').sorted('commercial_name')"
                                                            t-as="contract"
                                                            t-att-class="'text-muted fst-italic' if not contract.active else ''"
                                                        >
                                                            <t
                                                                t-if="contract in hall.contract_ids"
                                                            >
                                                                <t
                                                                    t-set="data"
                                                                    t-value="contract.get_overview_sales()"
                                                                />
                                                                <t
                                                                    t-set="month_delta"
                                                                    t-value="data['this_month']['total_sales'] / data['target_month'] * 100 if data['target_month'] else 100"
                                                                />
                                                                <t
                                                                    t-set="year_delta"
                                                                    t-value="data['this_year']['total_sales'] / data['target_year'] * 100 if data['target_month'] else 100"
                                                                />
                                                                <td
                                                                    t-out="contract.stand_id.name"
                                                                />
                                                                <td
                                                                    t-out="contract.commercial_name"
                                                                />
                                                                <td
                                                                    class="text-end"
                                                                    t-out="data['yesterday']['total_sales']"
                                                                    t-options='{"widget": "monetary", "display_currency": values["company_id"].currency_id}'
                                                                />
                                                                <td
                                                                    class="text-end"
                                                                    t-out="data['this_month']['total_sales']"
                                                                    t-options='{"widget": "monetary", "display_currency": values["company_id"].currency_id}'
                                                                />
                                                                <td
                                                                    class="text-end"
                                                                    t-out="data['this_month']['average_sales']"
                                                                    t-options='{"widget": "monetary", "display_currency": values["company_id"].currency_id}'
                                                                />
                                                                <td
                                                                    class="text-end text-muted"
                                                                    t-out="data['target_month']"
                                                                    t-options='{"widget": "monetary", "display_currency": values["company_id"].currency_id}'
                                                                />
                                                                <td
                                                                    t-att-class="'text-end text-success' if month_delta >= 1 else 'text-end text-danger'"
                                                                >
                                                                    <t
                                                                        t-out="month_delta"
                                                                        t-options='{"widget": "float", "precision": 0}'
                                                                    /> %
                                                                </td>
                                                                <td
                                                                    class="text-end"
                                                                    t-out="data['this_year']['total_sales']"
                                                                    t-options='{"widget": "monetary", "display_currency": values["company_id"].currency_id}'
                                                                />
                                                                <td
                                                                    class="text-end"
                                                                    t-out="data['this_year']['average_sales']"
                                                                    t-options='{"widget": "monetary", "display_currency": values["company_id"].currency_id}'
                                                                />
                                                                <td
                                                                    class="text-end text-muted"
                                                                    t-out="data['target_year']"
                                                                    t-options='{"widget": "monetary", "display_currency": values["company_id"].currency_id}'
                                                                />
                                                                <td
                                                                    t-att-class="'text-end text-success' if year_delta >= 1 else 'text-end text-danger'"
                                                                >
                                                                    <t
                                                                        t-out="year_delta"
                                                                        t-options='{"widget": "float", "precision": 0}'
                                                                    /> %
                                                                </td>
                                                            </t>
                                                        </tr>
                                                    </tbody>
                                                </t>
                                            </table>
                                            <!-- en table- -->
                                        </div>

                                    </div>
                                </div>
                            </div>
                        </div>
                    </div>
                </div>
            </qweb>
        </field>
    </record>

    <template id="hall_contract_overview_kpi">
        <!-- Last month -->
        <div class="col-12 col-sm-6 col-lg-4 text-center mt-4 mb-4">
            <!-- Titre -->
            <h3><t t-out="title" /></h3>
            <!-- Date -->
            <t t-out="date_text" />
            <t t-out="date" t-options="{'widget': 'date', 'format': 'dd/MM/yyyy'}" />
            <!-- CA -->
            <p class="display-4">
                <t
                    t-out="amount"
                    t-options='{"widget": "monetary", "display_currency": currency_id}'
                />
            </p>
            <!-- Pourcentage -->
            <t t-if="target and target > 0">
                <t t-set="delta" t-value="amount / target * 100" />
                <p t-att-class="'text-success h3' if delta >= 1 else 'text-danger h3'">
                    <t t-if="arrow">
                        <i
                            t-att-class="'fa fa-arrow-up' if delta >= 1 else 'fa fa-arrow-down'"
                        />
                    </t>
                    <t
                        t-out="delta"
                        t-options='{"widget": "float", "precision": 0}'
                    /> %
                </p>
            </t>
            <t t-else="">
                <p class="h3">N/A</p>
            </t>
            <!-- Bottom -->
            <p>
                <t t-out="bottom_text" />
                <t
                    t-out="target"
                    t-options='{"widget": "monetary", "display_currency": currency_id}'
                />
            </p>
            <hr />
            <p />
            <span class="h5">Panier moyen</span>
            <p class="display-6">
                <t
                    t-out="average_sales"
                    t-options='{"widget": "monetary", "display_currency": currency_id}'
                />
            </p>
        </div>
    </template>

    <record id="hall_contract_overview_action" model="ir.actions.act_window">
        <field name="name">Overview</field>
        <field name="res_model">hall.contract</field>
        <field name="view_mode">qweb</field>
        <field name="context">{'active_test': False}</field>
    </record>
</odoo>