From 8fc782fc9ba99e17ebde81fd94dac652e5568f41 Mon Sep 17 00:00:00 2001 From: Thibault Francois Date: Tue, 8 Mar 2016 21:04:56 +0100 Subject: [PATCH 1/5] [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 + From f1b6599b60ea54495d865da26d61a6bb8d70cb47 Mon Sep 17 00:00:00 2001 From: jmf Date: Fri, 20 May 2016 23:34:32 +0200 Subject: [PATCH 2/5] [ADD] Added max_shipping_date, responsible person --- beesdoo_inventory/__init__.py | 2 ++ beesdoo_inventory/__openerp__.py | 31 ++++++++++++++++++++++++++++ beesdoo_inventory/models/__init__.py | 2 ++ beesdoo_inventory/models/stock.py | 8 +++++++ beesdoo_inventory/views/stock.xml | 18 ++++++++++++++++ 5 files changed, 61 insertions(+) create mode 100644 beesdoo_inventory/__init__.py create mode 100644 beesdoo_inventory/__openerp__.py create mode 100644 beesdoo_inventory/models/__init__.py create mode 100644 beesdoo_inventory/models/stock.py create mode 100644 beesdoo_inventory/views/stock.xml diff --git a/beesdoo_inventory/__init__.py b/beesdoo_inventory/__init__.py new file mode 100644 index 0000000..0f7cb6b --- /dev/null +++ b/beesdoo_inventory/__init__.py @@ -0,0 +1,2 @@ +# -*- coding: utf-8 -*- +import models \ No newline at end of file diff --git a/beesdoo_inventory/__openerp__.py b/beesdoo_inventory/__openerp__.py new file mode 100644 index 0000000..03e6d33 --- /dev/null +++ b/beesdoo_inventory/__openerp__.py @@ -0,0 +1,31 @@ +# -*- coding: utf-8 -*- +{ + 'name': "beesdoo_inventory", + + 'summary': """ + Modification of inventory data for the needs of beescoop + - SOO24 - Bon de livraison""", + + 'description': """ + + """, + + 'author': "Beescoop - Cellule IT", + 'website': "https://github.com/beescoop/Obeesdoo", + + # Categories can be used to filter modules in modules listing + # Check https://github.com/odoo/odoo/blob/master/openerp/addons/base/module/module_data.xml + # for the full list + 'category': 'Sales Management', + 'version': '0.1', + + # any module necessary for this one to work correctly + 'depends': ['delivery'], + + # always loaded + 'data': [ + 'views/stock.xml' ], + + # only loaded in demonstration mode + 'demo': [], +} \ No newline at end of file diff --git a/beesdoo_inventory/models/__init__.py b/beesdoo_inventory/models/__init__.py new file mode 100644 index 0000000..9d94072 --- /dev/null +++ b/beesdoo_inventory/models/__init__.py @@ -0,0 +1,2 @@ +# -*- coding: utf-8 -*- +import stock \ No newline at end of file diff --git a/beesdoo_inventory/models/stock.py b/beesdoo_inventory/models/stock.py new file mode 100644 index 0000000..562f6c9 --- /dev/null +++ b/beesdoo_inventory/models/stock.py @@ -0,0 +1,8 @@ +# -*- coding: utf-8 -*- +from openerp import models, fields, api, _ + +class StockPicking(models.Model): + _inherit = 'stock.picking' + + max_shipping_date = fields.Datetime("End Shipping Date") + responsible = fields.Many2one("res.partner", string="Responsible Person") diff --git a/beesdoo_inventory/views/stock.xml b/beesdoo_inventory/views/stock.xml new file mode 100644 index 0000000..bdd0877 --- /dev/null +++ b/beesdoo_inventory/views/stock.xml @@ -0,0 +1,18 @@ + + + + + beesdoo.stock.form.view + stock.picking + + + + + + + + + + + + \ No newline at end of file From 34f334d64e585c27f200eb51cfe48a53a7f77230 Mon Sep 17 00:00:00 2001 From: jmf Date: Sat, 21 May 2016 01:05:20 +0200 Subject: [PATCH 3/5] [IMPL] Added mail.followers --- beesdoo_inventory/models/stock.py | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/beesdoo_inventory/models/stock.py b/beesdoo_inventory/models/stock.py index 562f6c9..efcbc72 100644 --- a/beesdoo_inventory/models/stock.py +++ b/beesdoo_inventory/models/stock.py @@ -6,3 +6,24 @@ class StockPicking(models.Model): max_shipping_date = fields.Datetime("End Shipping Date") responsible = fields.Many2one("res.partner", string="Responsible Person") + + def _add_follower(self): + self.env['mail.followers'].create({'partner_id': self.responsible.id, + 'res_id': self.id, + 'res_model': "stock.picking",}) + + @api.multi + def write(self, values): + res = super(StockPicking, self).write(values) + print "WRITE" + print values.get('responsible') + if values.get('responsible'): + for picking in self: + picking._add_follower() + return res + + @api.model + def create(self, values): + picking = super(StockPicking, self).create(values) + picking._add_follower() + return picking \ No newline at end of file From d1756a1fe6f9a0c94022447550a57105362b8575 Mon Sep 17 00:00:00 2001 From: jmf Date: Sat, 21 May 2016 01:32:45 +0200 Subject: [PATCH 4/5] [IMPL] Added 'responsible person' to stock picking tree view --- beesdoo_inventory/views/stock.xml | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/beesdoo_inventory/views/stock.xml b/beesdoo_inventory/views/stock.xml index bdd0877..85fe537 100644 --- a/beesdoo_inventory/views/stock.xml +++ b/beesdoo_inventory/views/stock.xml @@ -1,6 +1,17 @@ + + beesdoo.stock.tree.view + stock.picking + + + + + + + + beesdoo.stock.form.view stock.picking From 018ee9044a64a1a333a55735247e7d536327829d Mon Sep 17 00:00:00 2001 From: EliseDup Date: Wed, 19 Oct 2016 09:48:00 +0200 Subject: [PATCH 5/5] Fix S0024 : add responsible as follower --- beesdoo_inventory/models/stock.py | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) diff --git a/beesdoo_inventory/models/stock.py b/beesdoo_inventory/models/stock.py index efcbc72..4d76c9a 100644 --- a/beesdoo_inventory/models/stock.py +++ b/beesdoo_inventory/models/stock.py @@ -5,21 +5,20 @@ class StockPicking(models.Model): _inherit = 'stock.picking' max_shipping_date = fields.Datetime("End Shipping Date") - responsible = fields.Many2one("res.partner", string="Responsible Person") + responsible = fields.Many2one('res.partner', string="Responsible") def _add_follower(self): - self.env['mail.followers'].create({'partner_id': self.responsible.id, - 'res_id': self.id, - 'res_model': "stock.picking",}) + if(self.responsible): + types = self.env['mail.message.subtype'].search(['|',('res_model','=','stock.picking'),('name','=','Discussions')]) + self.env['mail.followers'].create({'res_model' : 'stock.picking', + 'res_id' : self.id, + 'partner_id' : self.responsible.id, + 'subtype_ids': [(6, 0, types.ids)]}) @api.multi def write(self, values): res = super(StockPicking, self).write(values) - print "WRITE" - print values.get('responsible') - if values.get('responsible'): - for picking in self: - picking._add_follower() + self._add_follower() return res @api.model