From e869ed9d3c17234d0e2a9161f95bfd6c8388960f Mon Sep 17 00:00:00 2001 From: "robin.keunen" Date: Tue, 19 Feb 2019 11:52:58 +0100 Subject: [PATCH 01/47] [ADD] pos_container: init module --- pos_container/__init__.py | 2 + pos_container/__manifest__.py | 29 +++++++++++ pos_container/demo/demo.xml | 30 +++++++++++ pos_container/models/__init__.py | 3 ++ pos_container/models/models.py | 17 ++++++ pos_container/security/ir.model.access.csv | 2 + pos_container/views/templates.xml | 22 ++++++++ pos_container/views/views.xml | 60 ++++++++++++++++++++++ 8 files changed, 165 insertions(+) create mode 100644 pos_container/__init__.py create mode 100644 pos_container/__manifest__.py create mode 100644 pos_container/demo/demo.xml create mode 100644 pos_container/models/__init__.py create mode 100644 pos_container/models/models.py create mode 100644 pos_container/security/ir.model.access.csv create mode 100644 pos_container/views/templates.xml create mode 100644 pos_container/views/views.xml diff --git a/pos_container/__init__.py b/pos_container/__init__.py new file mode 100644 index 0000000000..a3326d8405 --- /dev/null +++ b/pos_container/__init__.py @@ -0,0 +1,2 @@ +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). +from . import models \ No newline at end of file diff --git a/pos_container/__manifest__.py b/pos_container/__manifest__.py new file mode 100644 index 0000000000..97ed19fd38 --- /dev/null +++ b/pos_container/__manifest__.py @@ -0,0 +1,29 @@ +# Copyright 2019 Coop IT Easy SCRLfs +# Robin Keunen +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).{ +{ + 'name': "POS Container", + 'version': '12.0.1.0.0', + + 'summary': """ + Allows managing pre-weighted containers for bulk shop""", + + "author": "Coop IT Easy SCRLfs, " + "Odoo Community Association (OCA)", + 'website': "https://odoo-community.org/", + + 'category': 'Point of Sale', + + 'depends': ['point_of_sale'], + + 'data': [ + # 'security/ir.model.access.csv', + # 'views/views.xml', + # 'views/templates.xml', + ], + # only loaded in demonstration mode + 'demo': [ + # 'demo/demo.xml', + ], + 'installable': True, +} diff --git a/pos_container/demo/demo.xml b/pos_container/demo/demo.xml new file mode 100644 index 0000000000..aec42696c5 --- /dev/null +++ b/pos_container/demo/demo.xml @@ -0,0 +1,30 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/pos_container/models/__init__.py b/pos_container/models/__init__.py new file mode 100644 index 0000000000..e2ee4b899d --- /dev/null +++ b/pos_container/models/__init__.py @@ -0,0 +1,3 @@ +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +from . import models \ No newline at end of file diff --git a/pos_container/models/models.py b/pos_container/models/models.py new file mode 100644 index 0000000000..359167779f --- /dev/null +++ b/pos_container/models/models.py @@ -0,0 +1,17 @@ +# Copyright 2019 Coop IT Easy SCRLfs +# Robin Keunen +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). + +from odoo import models, fields, api + +# class pos_container(models.Model): +# _name = 'pos_container.pos_container' + +# name = fields.Char() +# value = fields.Integer() +# value2 = fields.Float(compute="_value_pc", store=True) +# description = fields.Text() +# +# @api.depends('value') +# def _value_pc(self): +# self.value2 = float(self.value) / 100 \ No newline at end of file diff --git a/pos_container/security/ir.model.access.csv b/pos_container/security/ir.model.access.csv new file mode 100644 index 0000000000..ba69636bc1 --- /dev/null +++ b/pos_container/security/ir.model.access.csv @@ -0,0 +1,2 @@ +id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink +access_pos_container_pos_container,pos_container.pos_container,model_pos_container_pos_container,,1,0,0,0 \ No newline at end of file diff --git a/pos_container/views/templates.xml b/pos_container/views/templates.xml new file mode 100644 index 0000000000..ba61acd8c9 --- /dev/null +++ b/pos_container/views/templates.xml @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/pos_container/views/views.xml b/pos_container/views/views.xml new file mode 100644 index 0000000000..cd873a0644 --- /dev/null +++ b/pos_container/views/views.xml @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + \ No newline at end of file From 8fca805fdbb97d4620cbc57c3392d9f60a1d1f86 Mon Sep 17 00:00:00 2001 From: "robin.keunen" Date: Tue, 19 Feb 2019 15:09:30 +0100 Subject: [PATCH 02/47] [ADD] pos_container: container model, view and menu --- pos_container/__manifest__.py | 8 ++- pos_container/demo/demo.xml | 47 ++++++++--------- pos_container/models/__init__.py | 2 +- pos_container/models/container.py | 35 +++++++++++++ pos_container/models/models.py | 17 ------ pos_container/security/ir.model.access.csv | 3 +- pos_container/views/container.xml | 45 ++++++++++++++++ pos_container/views/templates.xml | 22 -------- pos_container/views/views.xml | 60 ---------------------- 9 files changed, 106 insertions(+), 133 deletions(-) create mode 100644 pos_container/models/container.py delete mode 100644 pos_container/models/models.py create mode 100644 pos_container/views/container.xml delete mode 100644 pos_container/views/templates.xml delete mode 100644 pos_container/views/views.xml diff --git a/pos_container/__manifest__.py b/pos_container/__manifest__.py index 97ed19fd38..3b4aa1e378 100644 --- a/pos_container/__manifest__.py +++ b/pos_container/__manifest__.py @@ -17,13 +17,11 @@ 'depends': ['point_of_sale'], 'data': [ - # 'security/ir.model.access.csv', - # 'views/views.xml', - # 'views/templates.xml', + 'views/container.xml', + 'security/ir.model.access.csv', ], - # only loaded in demonstration mode 'demo': [ - # 'demo/demo.xml', + 'demo/demo.xml', ], 'installable': True, } diff --git a/pos_container/demo/demo.xml b/pos_container/demo/demo.xml index aec42696c5..489f162514 100644 --- a/pos_container/demo/demo.xml +++ b/pos_container/demo/demo.xml @@ -1,30 +1,23 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - + + + Container 1 + 4987654567897 + 123 + + + + Container 2 + 4909876543567 + 234 + + + + Container 3 + 4909876543987 + 23.4 + + - \ No newline at end of file + diff --git a/pos_container/models/__init__.py b/pos_container/models/__init__.py index e2ee4b899d..14f8196051 100644 --- a/pos_container/models/__init__.py +++ b/pos_container/models/__init__.py @@ -1,3 +1,3 @@ # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). -from . import models \ No newline at end of file +from . import container diff --git a/pos_container/models/container.py b/pos_container/models/container.py new file mode 100644 index 0000000000..36abbd218a --- /dev/null +++ b/pos_container/models/container.py @@ -0,0 +1,35 @@ +# Copyright 2019 Coop IT Easy SCRLfs +# Robin Keunen +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). + +from odoo import models, fields, api +from odoo.exceptions import ValidationError + + +class Container(models.Model): + _name = 'pos.container' + _description = 'Container for bulk items' + + name = fields.Char( + string='Name', + ) + ean13 = fields.Char( + 'EAN13 Barcode', + size=13, + ) + weight = fields.Float( + string='Weight (g)', + ) + + @api.multi + @api.constrains('ean13') + def _check_ean13(self): + for container in self: + if not container.ean13.startswith('49'): + raise ValidationError( + 'Container barcode must start with 49 prefix.' + ) + if len(container.ean13) != 13: + raise ValidationError( + 'Container barcode must be 13 digit long.' + ) diff --git a/pos_container/models/models.py b/pos_container/models/models.py deleted file mode 100644 index 359167779f..0000000000 --- a/pos_container/models/models.py +++ /dev/null @@ -1,17 +0,0 @@ -# Copyright 2019 Coop IT Easy SCRLfs -# Robin Keunen -# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). - -from odoo import models, fields, api - -# class pos_container(models.Model): -# _name = 'pos_container.pos_container' - -# name = fields.Char() -# value = fields.Integer() -# value2 = fields.Float(compute="_value_pc", store=True) -# description = fields.Text() -# -# @api.depends('value') -# def _value_pc(self): -# self.value2 = float(self.value) / 100 \ No newline at end of file diff --git a/pos_container/security/ir.model.access.csv b/pos_container/security/ir.model.access.csv index ba69636bc1..9bac7aa8f9 100644 --- a/pos_container/security/ir.model.access.csv +++ b/pos_container/security/ir.model.access.csv @@ -1,2 +1,3 @@ id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink -access_pos_container_pos_container,pos_container.pos_container,model_pos_container_pos_container,,1,0,0,0 \ No newline at end of file +access_pos_container_pos_user,access_pos_container_pos_user,model_pos_container,point_of_sale.group_pos_user,1,1,1,1 +access_pos_container_pos_manager,access_pos_container_pos_manager,model_pos_container,point_of_sale.group_pos_manager,1,1,1,1 diff --git a/pos_container/views/container.xml b/pos_container/views/container.xml new file mode 100644 index 0000000000..95301eeee5 --- /dev/null +++ b/pos_container/views/container.xml @@ -0,0 +1,45 @@ + + + + pos.container.tree + pos.container + + + + + + + + + + + pos.container.form + pos.container + +
+ + + + + + + +
+
+
+ + + Containers + pos.container + tree,form + + + +
+
diff --git a/pos_container/views/templates.xml b/pos_container/views/templates.xml deleted file mode 100644 index ba61acd8c9..0000000000 --- a/pos_container/views/templates.xml +++ /dev/null @@ -1,22 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/pos_container/views/views.xml b/pos_container/views/views.xml deleted file mode 100644 index cd873a0644..0000000000 --- a/pos_container/views/views.xml +++ /dev/null @@ -1,60 +0,0 @@ - - - - - - - - - - - - - - - - - - - \ No newline at end of file From 0f1a3d12e1547b86773389d8863f960ece6406fc Mon Sep 17 00:00:00 2001 From: "robin.keunen" Date: Wed, 20 Feb 2019 17:03:21 +0100 Subject: [PATCH 03/47] [ADD] pos_container: add container list - broken --- pos_container/__manifest__.py | 6 ++++++ pos_container/static/src/js/models.js | 25 +++++++++++++++++++++++++ pos_container/static/src/xml/pos.xml | 14 ++++++++++++++ pos_container/templates/templates.xml | 14 ++++++++++++++ 4 files changed, 59 insertions(+) create mode 100644 pos_container/static/src/js/models.js create mode 100644 pos_container/static/src/xml/pos.xml create mode 100644 pos_container/templates/templates.xml diff --git a/pos_container/__manifest__.py b/pos_container/__manifest__.py index 3b4aa1e378..541a4b4ca2 100644 --- a/pos_container/__manifest__.py +++ b/pos_container/__manifest__.py @@ -18,10 +18,16 @@ 'data': [ 'views/container.xml', + # 'templates/templates.xml', 'security/ir.model.access.csv', ], 'demo': [ 'demo/demo.xml', ], + + 'qweb': [ + 'static/src/xml/pos.xml', + ], + 'installable': True, } diff --git a/pos_container/static/src/js/models.js b/pos_container/static/src/js/models.js new file mode 100644 index 0000000000..42500f035a --- /dev/null +++ b/pos_container/static/src/js/models.js @@ -0,0 +1,25 @@ +/* + Copyright 2019 Coop IT Easy SCRLfs + Robin Keunen + License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). +*/ + + +odoo.define('pos_container.pos_container', function (require) { + "use strict"; + + + var models = require('point_of_sale.models'); + var core = require('web.core'); + + // example: add field from defined model + // models.load_fields('res.partner','loyalty_points'); + + models.load_models([ + { + model: 'pos.container', + fields: ['name','ean13', 'weight'], + // domain: function(self){ return [['id','=',self.config.loyalty_id[0]]]; }, + }] + ) +}); diff --git a/pos_container/static/src/xml/pos.xml b/pos_container/static/src/xml/pos.xml new file mode 100644 index 0000000000..33efbac830 --- /dev/null +++ b/pos_container/static/src/xml/pos.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + diff --git a/pos_container/templates/templates.xml b/pos_container/templates/templates.xml new file mode 100644 index 0000000000..8f1cb7c02a --- /dev/null +++ b/pos_container/templates/templates.xml @@ -0,0 +1,14 @@ + + + + +