From 7fa9aa9f7d25d518f4356ab4bd7a93203456a69d Mon Sep 17 00:00:00 2001 From: mgh-odoo Date: Wed, 19 Feb 2020 05:00:31 +0000 Subject: [PATCH] [ADD] l10n_co_pos: DIAN Sequence for pos receipt In the Colombian legal requirementqs for point_of_sale, a number should be printed on the receipt, this number sequence must have no gap and no duplicates. As there is already a no gap 'ir.sequence' on each config, we allow the edition of this sequence, and set set same ir.sequence on all pos config, with their DIAN number as prefix. closes odoo/odoo#46546 Task-id: 2169664 X-original-commit: 4ba07bb5a503b5d7dc1ad07cc05adac6309ab8c4 Signed-off-by: pimodoo --- addons/l10n_co_pos/__manifest__.py | 21 ++++++++ addons/l10n_co_pos/static/src/js/pos.js | 64 +++++++++++++++++++++++ addons/l10n_co_pos/static/src/xml/pos.xml | 11 ++++ addons/l10n_co_pos/views/templates.xml | 10 ++++ addons/l10n_co_pos/views/views.xml | 18 +++++++ 5 files changed, 124 insertions(+) create mode 100644 addons/l10n_co_pos/__manifest__.py create mode 100644 addons/l10n_co_pos/static/src/js/pos.js create mode 100644 addons/l10n_co_pos/static/src/xml/pos.xml create mode 100644 addons/l10n_co_pos/views/templates.xml create mode 100644 addons/l10n_co_pos/views/views.xml diff --git a/addons/l10n_co_pos/__manifest__.py b/addons/l10n_co_pos/__manifest__.py new file mode 100644 index 00000000000..2ec35d61593 --- /dev/null +++ b/addons/l10n_co_pos/__manifest__.py @@ -0,0 +1,21 @@ +# -*- coding: utf-8 -*- +# Part of Odoo. See LICENSE file for full copyright and licensing details. + +{ + 'name': 'Colombian - Point of Sale', + 'version': '1.0', + 'description': """Colombian - Point of Sale""", + 'category': 'Localization', + 'auto_install': True, + 'depends': [ + 'l10n_co', + 'point_of_sale' + ], + 'data': [ + 'views/templates.xml', + 'views/views.xml' + ], + 'qweb': [ + 'static/src/xml/pos.xml' + ], +} diff --git a/addons/l10n_co_pos/static/src/js/pos.js b/addons/l10n_co_pos/static/src/js/pos.js new file mode 100644 index 00000000000..8303a9c2337 --- /dev/null +++ b/addons/l10n_co_pos/static/src/js/pos.js @@ -0,0 +1,64 @@ +odoo.define('l10n_co_pos.pos', function (require) { +"use strict"; + +var models = require('point_of_sale.models'); +var screens = require('point_of_sale.screens'); +var session = require('web.session'); +var rpc = require('web.rpc'); + +models.PosModel = models.PosModel.extend({ + is_colombian_country: function () { + return this.company.country.code === 'CO'; + }, +}); + +var _super_order = models.Order.prototype; +models.Order = models.Order.extend({ + export_for_printing: function () { + var result = _super_order.export_for_printing.apply(this, arguments); + result.l10n_co_dian = this.get_l10n_co_dian(); + return result; + }, + set_l10n_co_dian: function (l10n_co_dian) { + this.l10n_co_dian = l10n_co_dian; + }, + get_l10n_co_dian: function () { + return this.l10n_co_dian; + }, + wait_for_push_order: function () { + var result = _super_order.wait_for_push_order.apply(this, arguments); + result = Boolean(result || this.pos.is_colombian_country()); + return result; + } +}); + +screens.PaymentScreenWidget.include({ + post_push_order_resolve: function (order, server_ids) { + if (this.pos.is_colombian_country()) { + var _super = this._super; + var args = arguments; + var self = this; + return new Promise (function (resolve, reject) { + rpc.query({ + model: 'pos.order', + method: 'search_read', + domain: [['id', 'in', server_ids]], + fields: ['name'], + context: session.user_context, + }).then(function (result) { + order.set_l10n_co_dian(result[0].name || false); + }).finally(function () { + _super.apply(self, args).then(function () { + resolve(); + }).catch(function (error) { + reject(error); + }); + }); + }); + } else { + return this._super(order, server_ids); + } + }, +}); + +}); diff --git a/addons/l10n_co_pos/static/src/xml/pos.xml b/addons/l10n_co_pos/static/src/xml/pos.xml new file mode 100644 index 00000000000..24d98d5f7cf --- /dev/null +++ b/addons/l10n_co_pos/static/src/xml/pos.xml @@ -0,0 +1,11 @@ + + + + + + +
+
+
+
+
diff --git a/addons/l10n_co_pos/views/templates.xml b/addons/l10n_co_pos/views/templates.xml new file mode 100644 index 00000000000..438508663f9 --- /dev/null +++ b/addons/l10n_co_pos/views/templates.xml @@ -0,0 +1,10 @@ + + + + + + diff --git a/addons/l10n_co_pos/views/views.xml b/addons/l10n_co_pos/views/views.xml new file mode 100644 index 00000000000..27bb5db6c54 --- /dev/null +++ b/addons/l10n_co_pos/views/views.xml @@ -0,0 +1,18 @@ + + + + + pos.config.form.view.inherit.l10n_co_pos + pos.config + + + + + + + 0 + + + + +