diff --git a/__manifest__.py b/__manifest__.py index 7858cb8d86ff5b562ad1619cc6db68ef4af1296b..4523b8ccc5461184f96ed519073f3e9e5912b85e 100644 --- a/__manifest__.py +++ b/__manifest__.py @@ -14,7 +14,6 @@ "security/lefilament_dashboard_security.xml", "security/ir.model.access.csv", # datas - "data/cron_dashboard.xml", # templates "templates/lefilament_dashboard.xml", # views diff --git a/data/cron_dashboard.xml b/data/cron_dashboard.xml deleted file mode 100644 index b7438abab73890412432a0c3d01323ed282f7840..0000000000000000000000000000000000000000 --- a/data/cron_dashboard.xml +++ /dev/null @@ -1,15 +0,0 @@ -<?xml version="1.0" encoding="utf-8" ?> -<odoo noupdate="1"> - <record id="ir_cron_lefilament_tdb" forcecreate="True" model="ir.cron"> - <field name="name">Tableau de Bord - Le Filament</field> - <field eval="True" name="active" /> - <field name="user_id" ref="base.user_root" /> - <field name="interval_number">1</field> - <field name="interval_type">months</field> - <field name="numbercall">-1</field> - <field name="model_id" ref="model_lefilament_dashboard" /> - <field name="nextcall">2017-01-31 23:10:00</field> - <field name="state">code</field> - <field name="code">model.cron_new_data()</field> - </record> -</odoo> diff --git a/models/lefilament_tdb.py b/models/lefilament_tdb.py index 50419e2ef1cb5f0d1ec8f8749a49977a31e1b1b3..18fce4dda5003fceba7096f3594ecccb9e7a9a14 100644 --- a/models/lefilament_tdb.py +++ b/models/lefilament_tdb.py @@ -2,10 +2,10 @@ # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). from datetime import date - from dateutil.relativedelta import relativedelta from odoo import api, fields, models +from odoo.tools.safe_eval import safe_eval class LeFilamentTdb(models.Model): @@ -144,11 +144,22 @@ class LeFilamentTdb(models.Model): ) # ------------------------------------------------------ - # CRON function + # Action buttons # ------------------------------------------------------ @api.model - def cron_new_data(self): - self.create({"date_tdb": fields.Date.today()}) + def open_detail(self, target_model, name=None, domain=None, views=None): + + action = { + "name": name or target_model, + "type": "ir.actions.act_window", + "res_model": target_model, + } + if domain: + action["domain"] = safe_eval(domain) + if views: + action["views"] = safe_eval(views) + + return action # ------------------------------------------------------ # Business function @@ -236,14 +247,14 @@ class LeFilamentTdb(models.Model): [ ("move_type", "in", ("out_invoice", "out_refund")), ("state", "=", "posted"), - ("payment_state", "!=", "paid"), + ("payment_state", "in", ["not_paid", "partial", "in_payment"]), ] ) res["to_pay"] = self.env["account.move"].search( [ ("move_type", "in", ("in_invoice", "in_refund")), ("state", "=", "posted"), - ("payment_state", "!=", "paid"), + ("payment_state", "in", ["not_paid", "partial", "in_payment"]), ] ) diff --git a/static/src/css/lefilament_tdb.css b/static/src/css/lefilament_tdb.css index c2edb2ccc1317cf3f8b821b0ba6e782c07eabb17..a2457f73090ffa895a5a9c7ad61464d2620aa091 100644 --- a/static/src/css/lefilament_tdb.css +++ b/static/src/css/lefilament_tdb.css @@ -6,6 +6,11 @@ .lefilament_dashboard .display-6, .lefilament_dashboard .card-title { color: #495057; } +.lefilament_dashboard a.dashboard_view { + cursor: pointer; +} + + p.card-maj { font-size: 10px; font-style: italic; diff --git a/static/src/js/dashboard_overview.js b/static/src/js/dashboard_overview.js index e89bf86bc752101d874175759b30fdf82d260d47..1402a503f396ad40832917a8382993550e378082 100644 --- a/static/src/js/dashboard_overview.js +++ b/static/src/js/dashboard_overview.js @@ -1,17 +1,44 @@ odoo.define("lefilament_tdb.dashboard_overview", function (require) { "use strict"; + var core = require("web.core"); const qweb = require("web.qweb"); const viewRegistry = require("web.view_registry"); + var QWeb = core.qweb; + const Controller = qweb.Controller.extend({ events: _.extend({}, qweb.Controller.prototype.events, { "click #update_view": "_onClickUpdateView", + "click .dashboard_view": "_onClickDashboardAction", }), _onClickUpdateView() { this.reload(); }, + + async _onClickDashboardAction(e) { + e.preventDefault(); + var $target = $(e.currentTarget); + var self = this; + var data = $target.data(); + + await this._rpc({ + model: "lefilament.dashboard", + method: "open_detail", + args: [data.targetModel], + kwargs: { + name: data.title, + domain: data.domain || null, + views: data.views || null, + }, + }).then(function (action) { + if (action !== undefined) { + self.do_action(action); + } + }); + }, + }); const DashboardOverview = qweb.View.extend({ diff --git a/templates/lefilament_dashboard.xml b/templates/lefilament_dashboard.xml index 4da6f18b0f4bf33ce79e496694ad1d6fae76ab8c..0e3db35bd427ff52fab41421a0fdc270205ca875 100644 --- a/templates/lefilament_dashboard.xml +++ b/templates/lefilament_dashboard.xml @@ -5,7 +5,7 @@ <field name="type">qweb</field> <field name="model">lefilament.dashboard</field> <field name="arch" type="xml"> - <qweb js_class="lefilament_dashboard_overview"> + <qweb js_class="dashboard_overview"> <nav class="o_qweb_cp_buttons"> <button type="object" class="btn" id="update_view"> <i class="fa fa-refresh" /> @@ -31,11 +31,12 @@ /> <div class="card-body"> <a - type="action" - data-model="account.move" - t-att-data-domain="[('id','in', values.get('invoice_ids').ids)]" - data-views='[[0, "list"], [0, "pivot"], [0, "graph"], [0, "form"]]' - tabindex="-1" + class="dashboard_view" + data-target-model="account.move" + data-method="open_detail" + t-att-data-domain="[('id', 'in', values.get('invoice_ids').ids)]" + data-title="Factures client" + t-att-data-views="[[%(lefilament_tdb.view_invoice_tree)d, 'tree'], [0, 'pivot'], [0, 'graph'], [0, 'form']]" > <h5 class="card-title">Facturé</h5> <p class="display-6"> @@ -381,11 +382,12 @@ aria-labelledby="cust_to_pay-tab" > <a - type="action" - data-model="account.move" - t-att-data-domain="[('id','in', values.get('to_get').ids)]" - data-views='[[0, "list"], [0, "pivot"], [0, "graph"], [0, "form"]]' - tabindex="-1" + class="dashboard_view" + data-target-model="account.move" + data-method="open_detail" + t-att-data-domain="[('id', 'in', values.get('to_get').ids)]" + data-title="Factures à encaisser" + t-att-data-views="[[%(lefilament_tdb.view_invoice_tree)d, 'tree'], [0, 'pivot'], [0, 'graph'], [0, 'form']]" > <p class="display-6"> <t @@ -402,11 +404,12 @@ aria-labelledby="provider_to_pay-tab" > <a - type="action" - data-model="account.move" - t-att-data-domain="[('id','in', values.get('to_pay').ids)]" - data-views='[[0, "list"], [0, "pivot"], [0, "graph"], [0, "form"]]' - tabindex="-1" + class="dashboard_view" + data-target-model="account.move" + data-method="open_detail" + t-att-data-domain="[('id', 'in', values.get('to_pay').ids)]" + data-title="Factures fournisseurs" + t-att-data-views="[[%(lefilament_tdb.view_invoice_tree)d, 'tree'], [0, 'pivot'], [0, 'graph'], [0, 'form']]" > <p class="display-6"> <t