Skip to content
Snippets Groups Projects
Commit 07574202 authored by Benjamin - Le Filament's avatar Benjamin - Le Filament
Browse files

[IMP] account invoice report

parent 967666ac
No related branches found
No related tags found
No related merge requests found
......@@ -6,7 +6,14 @@
"version": "16.0.1.0.0",
"development_status": "Beta",
"license": "AGPL-3",
"depends": ["hall", "hall_flow", "hall_sale", "hall_sale_cashpad"],
"depends": [
"hall",
"hall_flow",
"hall_sale",
"hall_sale_cashpad",
"account",
"festa_account",
],
"data": [
"security/dashboard_security.xml",
"security/ir.model.access.csv",
......@@ -18,6 +25,7 @@
"views/hall.xml",
"views/hall_contract.xml",
# report
"report/account_invoice_report.xml",
"report/hall_contract_sale_report.xml",
"report/hall_contract_target_report.xml",
# wizard
......
# Copyright 2023 Le Filament (https://le-filament.com)
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html)
from . import account_invoice_report
from . import hall_contract_sale_report
from . import hall_contract_target_report
# Copyright 2023 Le Filament (https://le-filament.com)
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html)
from odoo import api, fields, models
class AccountInvoiceReport(models.Model):
_inherit = "account.invoice.report"
# ==== Invoice fields ====
contract_id = fields.Many2one(
comodel_name="hall.contract",
string="Contrat",
readonly=True,
)
period_start = fields.Date("Date loyer", readonly=True)
month_revenue = fields.Float(
"CA Mensuel (HT)",
readonly=True,
)
month_b2b_revenue = fields.Float(
"CA Mensuel B2B (HT)",
readonly=True,
)
month_ref_revenue = fields.Float(
string="CA Mensuel de référence (HT)",
readonly=True,
)
# ==== Invoice line fields ====
virtuous_discount_id = fields.Many2one(
comodel_name="hall.contract.discount",
string="Loyer vertueux",
readonly=True,
)
# ==== Contract fields ====
hall_id = fields.Many2one(
comodel_name="hall.hall",
string="Site",
readonly=True,
)
commercial_name = fields.Char("Enseigne", readonly=True)
type_job = fields.Selection(
selection=[
("food", "Restauration"),
("bar", "Bar"),
("hybrid", "Hybride"),
("food_scholl", "Food school"),
("pop_up", "Pop up"),
],
string="Type d'enseigne",
readonly=True,
)
# ==== Discount fields ====
date_discount = fields.Date("Date loyer vertueux", readonly=True)
discount = fields.Float("Réduction", readonly=True)
_depends = {
"account.move": [
"contract_id", "period_start", "month_revenue", "month_b2b_revenue",
"month_ref_revenue",
],
"account.move.line": ["virtuous_discount_id",],
"hall.contract": ["hall_id", "commercial_name", "type_job"],
"hall.contract.discount": ["date_discount", "date_discount"],
}
@api.model
def _select(self):
query_select = super(AccountInvoiceReport, self)._select()
query_select += """
,
move.contract_id as contract_id,
move.period_start as period_start,
move.month_revenue as month_revenue,
move.month_b2b_revenue as month_b2b_revenue,
move.month_ref_revenue as month_ref_revenue,
line.virtuous_discount_id as virtuous_discount_id,
contract.hall_id as hall_id,
contract.commercial_name as commercial_name,
contract.type_job as type_job,
discount.date_discount as date_discount,
discount.discount as discount
"""
return query_select
@api.model
def _from(self):
query_from = super(AccountInvoiceReport, self)._from()
query_from += """
LEFT JOIN hall_contract contract ON contract.id = move.contract_id
LEFT JOIN hall_contract_discount discount
ON discount.id = line.virtuous_discount_id
"""
return query_from
<?xml version="1.0" encoding="utf-8" ?>
<odoo>
<!-- Search view -->
<record id="festa_account_invoice_report_search" model="ir.ui.view">
<field name="name">festa.account.invoice.report.search</field>
<field name="model">account.invoice.report</field>
<field name="arch" type="xml">
<search string="Factures client">
<!-- Search -->
<field name="partner_id" />
<field name="contract_id" />
<field name="commercial_name" />
<field name="hall_id" />
<field name="product_id" />
<field
name="product_categ_id"
filter_domain="[('product_categ_id', 'child_of', self)]"
/>
<field name="invoice_user_id" />
<field name="invoice_date" />
<!-- Filtres -->
<filter
string="Factures de loyer"
name="rent"
domain="[('contract_id','!=',False)]"
/>
<filter
string="Loyer vertueux"
name="virtuous_discount"
domain="[('virtuous_discount_id','!=',False)]"
/>
<separator />
<filter name="filter_invoice_date" date="invoice_date" />
<filter name="invoice_date_due" date="invoice_date_due" />
<filter name="filter_period_start" date="period_start" />
<separator />
<filter
string="Factures"
name="invoice"
domain="[('move_type','=','out_invoice')]"
/>
<filter
string="Avoirs"
name="refund"
domain="[('move_type','=','out_refund')]"
/>
<!-- Regroupements -->
<group expand="1" string="Group By">
<filter
string="Client"
name="partner_id"
context="{'group_by':'partner_id','residual_visible':True}"
/>
<filter
string="Contrat"
name="contract_id"
context="{'group_by':'contract_id','residual_visible':True}"
/>
<filter
string="Site"
name="hall_id"
context="{'group_by':'hall_id','residual_visible':True}"
/>
<filter
string="Enseigne"
name="commercial_name"
context="{'group_by':'commercial_name','residual_visible':True}"
/>
<filter
string="Catégorie de produit"
name="category_product"
context="{'group_by':'product_categ_id','residual_invisible':True}"
/>
<filter
string="Société"
name="company"
context="{'group_by':'company_id'}"
groups="base.group_multi_company"
/>
<separator orientation="vertical" />
<filter
string="Date de facturation"
name="invoice_date"
context="{'group_by':'invoice_date'}"
/>
<filter
string="Date d'échéance"
name="duemonth"
context="{'group_by':'invoice_date_due:month'}"
/>
<filter
string="Date Loyer"
name="periodmonth"
context="{'group_by':'period_start:month'}"
/>
</group>
</search>
</field>
</record>
<!-- Pivot view -->
<record id="festa_account_invoice_report_pivot" model="ir.ui.view">
<field name="name">festa.account.invoice.report.pivot</field>
<field name="model">account.invoice.report</field>
<field name="arch" type="xml">
<pivot string="Factures client">
<field name="invoice_date" type="row" />
<field name="partner_id" type="row" />
<field name="contract_id" type="row" />
<field name="price_subtotal" type="measure" />
</pivot>
</field>
</record>
<!-- Graph view -->
<record id="festa_account_invoice_report_graph" model="ir.ui.view">
<field name="name">festa.account.invoice.report.graph</field>
<field name="model">account.invoice.report</field>
<field name="arch" type="xml">
<pivot string="Factures client">
<field name="invoice_date" />
<field name="price_subtotal" type="measure" />
</pivot>
</field>
</record>
<!-- Action -->
<record id="action_account_invoice_customer" model="ir.actions.act_window">
<field name="name">Facturation client</field>
<field name="res_model">account.invoice.report</field>
<field name="view_mode">pivot,graph</field>
<field
name="domain"
>[('move_type', 'in', ('out_invoice', 'out_refund')), ('state', '=', 'posted')]</field>
<field
name="view_ids"
eval="[(5, 0, 0),
(0, 0, {'view_mode': 'pivot', 'view_id': ref('festa_account_invoice_report_pivot')}),
(0, 0, {'view_mode': 'graph', 'view_id': ref('festa_account_invoice_report_graph')})]"
/>
<field
name="search_view_id"
ref="festa_dashboard.festa_account_invoice_report_search"
/>
</record>
</odoo>
......@@ -37,6 +37,14 @@
action="hall_contract_sale_report_action"
sequence="10"
/>
<menuitem
id="menu_festa_dashboard_invoices"
name="Facturation client"
parent="menu_festa_dashboard_analysis"
action="action_account_invoice_customer"
sequence="15"
/>
<menuitem
id="menu_festa_dashboard_target"
name="Suivi des objectifs"
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment