From 8fc782fc9ba99e17ebde81fd94dac652e5568f41 Mon Sep 17 00:00:00 2001 From: Thibault Francois Date: Tue, 8 Mar 2016 21:04:56 +0100 Subject: [PATCH] [MERGE][TACHE] 0010 - Gestion de foyer de mangeurs --- beesdoo_pos/__openerp__.py | 2 +- beesdoo_pos/models/beesdoo_pos.py | 23 ++++++++- beesdoo_pos/static/src/css/beesdoo.css | 24 +++++++++ beesdoo_pos/static/src/js/beesdoo.js | 63 +++++++++++++++++++++++- beesdoo_pos/static/src/xml/templates.xml | 26 +++++++++- beesdoo_pos/views/beesdoo_pos.xml | 2 +- 6 files changed, 135 insertions(+), 5 deletions(-) diff --git a/beesdoo_pos/__openerp__.py b/beesdoo_pos/__openerp__.py index 3753249..384275e 100644 --- a/beesdoo_pos/__openerp__.py +++ b/beesdoo_pos/__openerp__.py @@ -4,7 +4,7 @@ 'summary': """ Module that extends the pos for the beescoop - """, + """, 'description': """ Long description of module's purpose diff --git a/beesdoo_pos/models/beesdoo_pos.py b/beesdoo_pos/models/beesdoo_pos.py index 75de9e6..319bf3a 100644 --- a/beesdoo_pos/models/beesdoo_pos.py +++ b/beesdoo_pos/models/beesdoo_pos.py @@ -38,4 +38,25 @@ class BeescoopPosOrder(models.Model): return _('Cannot send the ticket, no email address found on the client') mail_template = self.env.ref("beescoop_pos.email_send_ticket") mail_template.send_mail(order.id) - return _("Ticket sent") \ No newline at end of file + return _("Ticket sent") + +class BeescoopPosPartner(models.Model): + _inherit = 'res.partner' + + def _get_eater(self): + eater1, eater2 = False, False + if self.child_eater_ids: + eater1 = self.child_eater_ids[0].name + if len(self.child_eater_ids) > 1: + eater2 = self.child_eater_ids[1].name + return eater1, eater2 + + @api.multi + def get_balance_and_eater(self): + self.ensure_one() + account_id = self.property_account_receivable_id.id + move_lines = self.env['account.move.line'].search([('account_id', '=', account_id), ('partner_id', '=', self.id)]) + credit = sum([m.credit for m in move_lines]) + debit = sum([m.debit for m in move_lines]) + eater1, eater2 = self._get_eater() + return str(round(credit - debit, 2)), eater1, eater2 diff --git a/beesdoo_pos/static/src/css/beesdoo.css b/beesdoo_pos/static/src/css/beesdoo.css index a68e1ed..4a794e4 100644 --- a/beesdoo_pos/static/src/css/beesdoo.css +++ b/beesdoo_pos/static/src/css/beesdoo.css @@ -1,4 +1,28 @@ .message-send { margin: 16px; text-align: center; +} + +.customer-information { + margin: 16px 24px 16px 24px; + font-weight: bold; + font-size: 16px; +} + +.customer-name { + font-size: 18px; +} + +.button.set-customer.decentered { + height: 108px; +} + +.customer-information-pay { + font-weight: normal; + font-size: 12px; + text-align: left; +} + +.pos .actionpad .button.pay { + height: 108px; } \ No newline at end of file diff --git a/beesdoo_pos/static/src/js/beesdoo.js b/beesdoo_pos/static/src/js/beesdoo.js index 79b6161..7d483c9 100644 --- a/beesdoo_pos/static/src/js/beesdoo.js +++ b/beesdoo_pos/static/src/js/beesdoo.js @@ -2,12 +2,23 @@ odoo.define('beescoop.pos', function (require) { "use strict"; var module = require("point_of_sale.screens"); var Model = require('web.DataModel'); + var set_customer_info = function(el_class, value, prefix) { + var el = this.$(el_class); + el.empty(); + if (prefix && value) { + value = prefix + value + } + if (value) { + el.append(value); + } + } module.ReceiptScreenWidget = module.ReceiptScreenWidget.include({ send : function() { var self = this; + var loaded = new $.Deferred(); var order = this.pos.get_order().name; - var records = new Model('pos.order').call('send_order', [order], {}); + var records = new Model('pos.order').call('send_order', [order], {}, { shadow: false, timeout: 10000}); records.then(function(result){ var el = self.$('.message-send') el.empty(); @@ -31,4 +42,54 @@ odoo.define('beescoop.pos', function (require) { this.$('.message-send').empty(); }, }) + + module.ActionpadWidget = module.ActionpadWidget.include({ + renderElement : function() { + var self = this; + var loaded = new $.Deferred(); + this._super(); + if (!this.pos.get_client()) { + return + + } + var customer_id = this.pos.get_client().id; + var res = new Model('res.partner').call('get_balance_and_eater', + [ customer_id ], undefined, { shadow: true, timeout: 1000}); + res.then(function(result) { + set_customer_info.call(self, '.customer-balance', result[0]) + set_customer_info.call(self, '.customer-delegate1', result[1], 'Eater 1: '); + set_customer_info.call(self, '.customer-delegate2', result[2], 'Eater 2: '); + }, function(err) { + loaded.reject(err); + }); + }, + }); + + module.PaymentScreenWidget.include({ + render_customer_info : function() { + var self = this; + var loaded = new $.Deferred(); + if (!this.pos.get_client()) { + return + } + var customer_id = this.pos.get_client().id; + var res = new Model('res.partner').call('get_balance_and_eater', [ customer_id ], undefined, { shadow: true, timeout: 1000}); + res.then(function(result) { + set_customer_info.call(self, '.customer-name', self.pos.get_client().name); + set_customer_info.call(self, '.customer-balance', result[0]); + set_customer_info.call(self, '.customer-delegate1', result[1], 'Eater 1: '); + set_customer_info.call(self, '.customer-delegate2', result[2], 'Eater 2: '); + }, function(err) { + loaded.reject(err); + }); + }, + renderElement : function() { + this._super(); + this.render_customer_info(); + }, + customer_changed : function() { + this._super(); + this.render_customer_info(); + }, + }); }); \ No newline at end of file diff --git a/beesdoo_pos/static/src/xml/templates.xml b/beesdoo_pos/static/src/xml/templates.xml index e9b3391..2eda871 100644 --- a/beesdoo_pos/static/src/xml/templates.xml +++ b/beesdoo_pos/static/src/xml/templates.xml @@ -6,8 +6,32 @@ Send Receipt By Mail
-
+ + + + +
+ Balance: € +
+
+
+
+
+
+ + + + +
+
+ Balance:
+
+
+
+
+
+
\ No newline at end of file diff --git a/beesdoo_pos/views/beesdoo_pos.xml b/beesdoo_pos/views/beesdoo_pos.xml index 2f8397e..0069bb9 100644 --- a/beesdoo_pos/views/beesdoo_pos.xml +++ b/beesdoo_pos/views/beesdoo_pos.xml @@ -23,4 +23,4 @@ - \ No newline at end of file +