diff --git a/pos_customer_birthday_discount/README.rst b/pos_customer_birthday_discount/README.rst new file mode 100644 index 000000000..a1e09b44c --- /dev/null +++ b/pos_customer_birthday_discount/README.rst @@ -0,0 +1,46 @@ +.. image:: https://img.shields.io/badge/license-AGPL--3-blue.svg + :target: https://www.gnu.org/licenses/agpl-3.0-standalone.html + :alt: License: AGPL-3 + +POS Birthday Discount +====================== +This module aims in providing special discount for customers in POS on their respective birthdate. + +Configuration +============= +No additional configuration required + +Company +======= +* `Cybrosys Techno Solutions `__ + +License +======= +GNU AFFERO GENERAL PUBLIC LICENSE (AGPL v3) +(https://www.gnu.org/licenses/agpl-3.0-standalone.html) + +Credits +======= +* Developer: (V14) RAHUL C K, Contact: odoo@cybrosys.com + +Contacts +======== +* Mail Contact : odoo@cybrosys.com +* Website : https://cybrosys.com + +Bug Tracker +=========== +Bugs are tracked on GitHub Issues. In case of trouble, please check there if your issue has already been reported. + +Maintainer +---------- +.. image:: https://cybrosys.com/images/logo.png + :target: https://cybrosys.com + +This module is maintained by Cybrosys Technologies. + +For support and more information, please visit https://www.cybrosys.com. + +Further information +=================== +HTML Description: ``__ diff --git a/pos_customer_birthday_discount/__init__.py b/pos_customer_birthday_discount/__init__.py new file mode 100644 index 000000000..d835cf9c5 --- /dev/null +++ b/pos_customer_birthday_discount/__init__.py @@ -0,0 +1,20 @@ +# -*- coding: utf-8 -*- +############################################################################## +# +# Cybrosys Technologies Pvt. Ltd. +# Copyright (C) 2023-TODAY Cybrosys Technologies(). +# Author: Rahul CK() +# you can modify it under the terms of the GNU AFFERO GENERAL +# PUBLIC LICENSE (AGPL v3), Version 3. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU AFFERO GENERAL PUBLIC LICENSE (AGPL v3) for more details. +# +# You should have received a copy of the GNU AFFERO GENERAL PUBLIC +# LICENSE (AGPL v3) along with this program. +# If not, see . +# +############################################################################## +from . import models diff --git a/pos_customer_birthday_discount/__manifest__.py b/pos_customer_birthday_discount/__manifest__.py new file mode 100644 index 000000000..acd268fa8 --- /dev/null +++ b/pos_customer_birthday_discount/__manifest__.py @@ -0,0 +1,46 @@ +# -*- coding: utf-8 -*- +############################################################################## +# +# Cybrosys Technologies Pvt. Ltd. +# Copyright (C) 2023-TODAY Cybrosys Technologies(). +# Author: Rahul CK() +# you can modify it under the terms of the GNU AFFERO GENERAL +# PUBLIC LICENSE (AGPL v3), Version 3. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU AFFERO GENERAL PUBLIC LICENSE (AGPL v3) for more details. +# +# You should have received a copy of the GNU AFFERO GENERAL PUBLIC +# LICENSE (AGPL v3) along with this program. +# If not, see . +# +############################################################################## +{ + 'name': "POS Birthday Discount", + 'version': '14.0.1.0.0', + 'category': 'Point of Sale', + 'summary': """Extra discount on customer birthday""", + 'description': """Customers get extra discount for their orders in POS + in odoo on the month of their birth date.""", + 'author': "Cybrosys Techno Solutions", + 'company': "Cybrosys Techno Solutions", + 'maintainer': "Cybrosys Techno Solutions", + 'website': "https://www.cybrosys.com", + 'depends': ['base', 'point_of_sale'], + 'data': [ + 'views/res_partner_views.xml', + 'views/pos_config_views.xml', + 'views/assets.xml' + ], + 'qweb': [ + 'static/src/xml/ActionpadWidgetInherit.xml', + 'static/src/xml/OrderlineInherit.xml' + ], + 'images': ['static/description/banner.png'], + 'license': 'AGPL-3', + 'installable': True, + 'auto_install': False, + 'application': False, +} diff --git a/pos_customer_birthday_discount/doc/RELEASE_NOTES.md b/pos_customer_birthday_discount/doc/RELEASE_NOTES.md new file mode 100644 index 000000000..1c687b05a --- /dev/null +++ b/pos_customer_birthday_discount/doc/RELEASE_NOTES.md @@ -0,0 +1,6 @@ +## Module + +#### 08.01.2024 +#### Version 14.0.1.0.0 +#### ADD +- Initial commit for POS Birthday Discount diff --git a/pos_customer_birthday_discount/models/__init__.py b/pos_customer_birthday_discount/models/__init__.py new file mode 100644 index 000000000..309015593 --- /dev/null +++ b/pos_customer_birthday_discount/models/__init__.py @@ -0,0 +1,21 @@ +# -*- coding: utf-8 -*- +############################################################################## +# +# Cybrosys Technologies Pvt. Ltd. +# Copyright (C) 2023-TODAY Cybrosys Technologies(). +# Author: Rahul CK() +# you can modify it under the terms of the GNU AFFERO GENERAL +# PUBLIC LICENSE (AGPL v3), Version 3. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU AFFERO GENERAL PUBLIC LICENSE (AGPL v3) for more details. +# +# You should have received a copy of the GNU AFFERO GENERAL PUBLIC +# LICENSE (AGPL v3) along with this program. +# If not, see . +# +############################################################################## +from . import pos_config +from . import res_partner diff --git a/pos_customer_birthday_discount/models/pos_config.py b/pos_customer_birthday_discount/models/pos_config.py new file mode 100644 index 000000000..e4cdef2dc --- /dev/null +++ b/pos_customer_birthday_discount/models/pos_config.py @@ -0,0 +1,66 @@ +# -*- coding: utf-8 -*- +############################################################################## +# +# Cybrosys Technologies Pvt. Ltd. +# Copyright (C) 2023-TODAY Cybrosys Technologies(). +# Author: Rahul CK() +# you can modify it under the terms of the GNU AFFERO GENERAL +# PUBLIC LICENSE (AGPL v3), Version 3. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU AFFERO GENERAL PUBLIC LICENSE (AGPL v3) for more details. +# +# You should have received a copy of the GNU AFFERO GENERAL PUBLIC +# LICENSE (AGPL v3) along with this program. +# If not, see . +# +############################################################################## +from odoo import api, fields, models + + +class PosConfig(models.Model): + """Set the Birthday discount fields in pos_config model""" + _inherit = 'pos.config' + + birthday_discount = fields.Boolean(string="Birthday Discount", + help="Enable this field to activate " + "birthday discount") + discount = fields.Float(string="Discount", help="Percentage of birthday " + "discount") + first_order = fields.Boolean(string="Only Apply the discount on the " + "first order on Birthday", + help="Restrict discount to apply only on " + "first order on birthday") + + @api.model + def check_birthday(self, args): + """Check the birthday of selected partner""" + data = {} + for rec in self.search([]): + partner_id = self.env['res.partner'].browse(args) + today = fields.Date.today() + if rec.birthday_discount and partner_id.birthdate: + if (partner_id.birthdate.day == today.day and + partner_id.birthdate.month == today.month): + data = {'birthday': 'True'} + break + return data + + @api.model + def check_pos_order(self, args): + """Check if any other pos order is created by partner on birthday""" + data = {'order': 'False'} + today = fields.Date.today() + partner_id = self.env['res.partner'].browse(args[0]) + if partner_id.birthdate: + if (partner_id.birthdate.day == today.day and + partner_id.birthdate.month == today.month): + data['birthday'] = 'True' + if args[1]: + orders = self.env['pos.order'].search( + [('partner_id', '=', args[0])]).filtered( + lambda r: r.date_order.date() == today) + data['order'] = 'True' if len(orders) > 0 else 'False' + return data diff --git a/pos_customer_birthday_discount/models/res_partner.py b/pos_customer_birthday_discount/models/res_partner.py new file mode 100644 index 000000000..61ebbc158 --- /dev/null +++ b/pos_customer_birthday_discount/models/res_partner.py @@ -0,0 +1,28 @@ +# -*- coding: utf-8 -*- +############################################################################## +# +# Cybrosys Technologies Pvt. Ltd. +# Copyright (C) 2023-TODAY Cybrosys Technologies(). +# Author: Rahul CK() +# you can modify it under the terms of the GNU AFFERO GENERAL +# PUBLIC LICENSE (AGPL v3), Version 3. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU AFFERO GENERAL PUBLIC LICENSE (AGPL v3) for more details. +# +# You should have received a copy of the GNU AFFERO GENERAL PUBLIC +# LICENSE (AGPL v3) along with this program. +# If not, see . +# +############################################################################## +from odoo import fields, models + + +class ResPartner(models.Model): + """New field birthdate is added in res_partner""" + _inherit = 'res.partner' + + birthdate = fields.Date(string="Birth Date", + help="Birthdate of the partner") diff --git a/pos_customer_birthday_discount/static/description/banner.png b/pos_customer_birthday_discount/static/description/banner.png new file mode 100644 index 000000000..b70d6fa35 Binary files /dev/null and b/pos_customer_birthday_discount/static/description/banner.png differ diff --git a/pos_customer_birthday_discount/static/description/icon.png b/pos_customer_birthday_discount/static/description/icon.png new file mode 100644 index 000000000..d9e3a781f Binary files /dev/null and b/pos_customer_birthday_discount/static/description/icon.png differ diff --git a/pos_customer_birthday_discount/static/description/images/1.png b/pos_customer_birthday_discount/static/description/images/1.png new file mode 100644 index 000000000..1217263a6 Binary files /dev/null and b/pos_customer_birthday_discount/static/description/images/1.png differ diff --git a/pos_customer_birthday_discount/static/description/images/2.png b/pos_customer_birthday_discount/static/description/images/2.png new file mode 100644 index 000000000..6f604a403 Binary files /dev/null and b/pos_customer_birthday_discount/static/description/images/2.png differ diff --git a/pos_customer_birthday_discount/static/description/images/3.png b/pos_customer_birthday_discount/static/description/images/3.png new file mode 100644 index 000000000..6f28da108 Binary files /dev/null and b/pos_customer_birthday_discount/static/description/images/3.png differ diff --git a/pos_customer_birthday_discount/static/description/images/4.png b/pos_customer_birthday_discount/static/description/images/4.png new file mode 100644 index 000000000..3afc14722 Binary files /dev/null and b/pos_customer_birthday_discount/static/description/images/4.png differ diff --git a/pos_customer_birthday_discount/static/description/images/5.png b/pos_customer_birthday_discount/static/description/images/5.png new file mode 100644 index 000000000..cea66b05f Binary files /dev/null and b/pos_customer_birthday_discount/static/description/images/5.png differ diff --git a/pos_customer_birthday_discount/static/description/images/6.png b/pos_customer_birthday_discount/static/description/images/6.png new file mode 100644 index 000000000..0c9bb377e Binary files /dev/null and b/pos_customer_birthday_discount/static/description/images/6.png differ diff --git a/pos_customer_birthday_discount/static/description/images/checked.png b/pos_customer_birthday_discount/static/description/images/checked.png new file mode 100644 index 000000000..578cedb80 Binary files /dev/null and b/pos_customer_birthday_discount/static/description/images/checked.png differ diff --git a/pos_customer_birthday_discount/static/description/images/cybrosys.png b/pos_customer_birthday_discount/static/description/images/cybrosys.png new file mode 100644 index 000000000..d76b5bafb Binary files /dev/null and b/pos_customer_birthday_discount/static/description/images/cybrosys.png differ diff --git a/pos_customer_birthday_discount/static/description/images/hero.gif b/pos_customer_birthday_discount/static/description/images/hero.gif new file mode 100644 index 000000000..c6d53fee4 Binary files /dev/null and b/pos_customer_birthday_discount/static/description/images/hero.gif differ diff --git a/pos_customer_birthday_discount/static/description/images/image_1.png b/pos_customer_birthday_discount/static/description/images/image_1.png new file mode 100644 index 000000000..765489d5d Binary files /dev/null and b/pos_customer_birthday_discount/static/description/images/image_1.png differ diff --git a/pos_customer_birthday_discount/static/description/images/image_2.png b/pos_customer_birthday_discount/static/description/images/image_2.png new file mode 100644 index 000000000..4b2e97b43 Binary files /dev/null and b/pos_customer_birthday_discount/static/description/images/image_2.png differ diff --git a/pos_customer_birthday_discount/static/description/images/image_3.png b/pos_customer_birthday_discount/static/description/images/image_3.png new file mode 100644 index 000000000..e9a7f66ff Binary files /dev/null and b/pos_customer_birthday_discount/static/description/images/image_3.png differ diff --git a/pos_customer_birthday_discount/static/description/images/image_4.png b/pos_customer_birthday_discount/static/description/images/image_4.png new file mode 100644 index 000000000..12b072730 Binary files /dev/null and b/pos_customer_birthday_discount/static/description/images/image_4.png differ diff --git a/pos_customer_birthday_discount/static/description/images/image_5.png b/pos_customer_birthday_discount/static/description/images/image_5.png new file mode 100644 index 000000000..d8402a0bb Binary files /dev/null and b/pos_customer_birthday_discount/static/description/images/image_5.png differ diff --git a/pos_customer_birthday_discount/static/description/index.html b/pos_customer_birthday_discount/static/description/index.html new file mode 100644 index 000000000..e4bf14f10 --- /dev/null +++ b/pos_customer_birthday_discount/static/description/index.html @@ -0,0 +1,655 @@ +
+
+
+
+ +
+
+
+ Community +
+
+ Enterprise +
+
+
+
+
+
+
+
+

+ POS Birthday Discount

+

+ Special discount on customer birthday

+
+

Key + Highlights

+
    +
  • + Special discount for + products in POS on customer birthday. +
  • +
  • + Birthday greetings + will be shown near customer name. +
  • +
  • + Can be configured in + settings if the discount should be applied only for first order + of customer on birthday +
  • +
+
+
+ +
+
+
+
+
+
+ +
+
+ +

+ Overview

+
+

+ This module aims in providing special discount for + customers in POS on their respective birthdate. +

+
+
+ +

+ POS Birthday Discount

+
+
    +
  • + Discount + will be automatically applied to products while + creating pos order. +
  • + +
  • + + Discount Percentage can be set in POS settings. +
  • + +
  • + New + field 'Birth Date' is added in customer form. +
  • + +
+
+ +
+
+

+ Screenshots

+
+
+
+ +
+
+
+
+ + +
+
    +
+
+
+
+
+
+
+

+ Suggested Products

+
+ +
+
+

+ Our Service

+
+ +
+
+
+

+ Our Industries

+
+ +
+
+
+
+ Odoo Industry +
+
+
+

+ + Trading

+

+ Easily procure and sell your products.

+
+
+
+
+
+ Odoo Industry +
+
+
+

+ + Manufacturing

+

+ Plan, track and schedule your operations.

+
+
+
+
+
+ Odoo Industry +
+
+
+

+ + Restaurant

+

+ Run your bar or restaurant methodical.

+
+
+
+
+
+ Odoo Industry +
+
+
+

+ + POS

+

+ Easy configuring and convivial selling.

+
+
+
+
+
+ Odoo Industry +
+
+
+

+ + E-commerce & Website

+

+ Mobile friendly, awe-inspiring product pages.

+
+
+
+
+
+ Odoo Industry +
+
+
+

+ + Hotel Management

+

+ An all-inclusive hotel management + application.

+
+
+
+
+
+ Odoo Industry +
+
+
+

+ + Education

+

+ A Collaborative platform for educational + management.

+
+
+
+
+
+ Odoo Industry +
+
+
+

+ + Service Management

+

+ Keep track of services and invoice + accordingly.

+
+
+
+
+
+
+
+

+ Need Any Help?

+
+

If you have anything to share with + us based on your use of this module, please let us know. We + are ready to offer our support.

+
+

Email us

+

odoo@cybrosys.com

+
+
+

Contact Us

+ www.cybrosys.com +
+
+
+
+
+
+
+
+ +
+ + + + +
+
+
+
diff --git a/pos_customer_birthday_discount/static/src/js/PaymentScreen.js b/pos_customer_birthday_discount/static/src/js/PaymentScreen.js new file mode 100644 index 000000000..9c936340a --- /dev/null +++ b/pos_customer_birthday_discount/static/src/js/PaymentScreen.js @@ -0,0 +1,46 @@ +odoo.define('point_of_sale.BirthdayPaymentScreen', function(require) { + 'use strict'; + + const PaymentScreen = require('point_of_sale.PaymentScreen'); + const Registries = require('point_of_sale.Registries'); + var rpc = require('web.rpc'); + /** + * selectClient function is inherited to check if the current day is the birthday + * of selected partner and apply the discount. + */ + const BirthdayPaymentScreen = (PaymentScreen) => + class extends PaymentScreen { + async selectClient() { + // IMPROVEMENT: This code snippet is repeated multiple times. + // Maybe it's better to create a function for it. + const currentClient = this.currentOrder.get_client(); + const { confirmed, payload: newClient } = await this.showTempScreen( + 'ClientListScreen', + { client: currentClient } + ); + if (confirmed) { + var val = 0; + var orderLines = this.currentOrder.orderlines + if(newClient){ + var first_order = this.env.pos.config.first_order; + var self = this; + await rpc.query({model: "pos.config", method: "check_pos_order", args: [[newClient['id'],first_order]] + }) + .then(function (data) { + if(data['birthday'] == 'True' && data['order'] == 'False'){ + val = self.env.pos.config.discount * 100; + } + }); + } + for(var order_id=0; order_id + class extends ProductScreen{ + /** + * Function executes when product is added to the pos orderLine and checks if the + * customer is eligible for birthday discount and triggers the set discount function + * to set the discount percentage. + * + * @param {Object} event Details of the product added to the orderline + */ + async _clickProduct(event) { + if(this.env.pos.config.birthday_discount && this.currentOrder.attributes.client){ + var val = this.env.pos.config.discount * 100; + for (let order_line of this.currentOrder.orderlines.models){ + if(order_line.product.id == event.detail.id){ + var qty = order_line.quantity + 1; + order_line.set_quantity(qty) + return; + } + } +// Code of original function + if (!this.currentOrder) { + this.env.pos.add_new_order(); + } + const product = event.detail; + const options = await this._getAddProductOptions(product); + // Do not add product if options is undefined. + if (!options) return; + // Add the product after having the extra information. + this.currentOrder.add_product(product, options); + NumberBuffer.reset(); +// End of original function code + var self = this; + var first_order = self.env.pos.config.first_order; + var partner_id = self.currentOrder.attributes.client.id; + await rpc.query({model: "pos.config", method: "check_pos_order", args: [[partner_id,first_order]] + }) + .then(function (data) { + if(data['birthday'] == 'True' && data['order'] == 'False'){ + self.currentOrder.get_selected_orderline().set_discount(val); + } + }); + } + else { + if (!this.currentOrder) { + this.env.pos.add_new_order(); + } + const product = event.detail; + const options = await this._getAddProductOptions(product); + // Do not add product if options is undefined. + if (!options) return; + // Add the product after having the extra information. + this.currentOrder.add_product(product, options); + NumberBuffer.reset(); + } + } + } + Registries.Component.extend(ProductScreen, ClickProductDiscount); +}); \ No newline at end of file diff --git a/pos_customer_birthday_discount/static/src/js/birthday_discount.js b/pos_customer_birthday_discount/static/src/js/birthday_discount.js new file mode 100644 index 000000000..2d51ab243 --- /dev/null +++ b/pos_customer_birthday_discount/static/src/js/birthday_discount.js @@ -0,0 +1,40 @@ +odoo.define('point_of_sale.BirthdayDiscount', function(require) { + 'use strict'; + + const ActionpadWidget = require('point_of_sale.ActionpadWidget'); + const Registries = require('point_of_sale.Registries'); + var rpc = require('web.rpc'); + + const BirthdayDiscount = (ActionpadWidget) => + class extends ActionpadWidget{ + /** + * isLong function is inherited to check if the current day is the birthday + * of selected partner and return the result. + * constructor is used to make the function async + */ + constructor() { + super(...arguments); + Object.defineProperty(this,'isLongName', { + get: async function() { + var self = this + if(self.env.pos.config.birthday_discount && self.props.client){ + self.client['disc'] = 0 ; + var orderLines = self.env.pos.attributes.selectedOrder.orderlines.models; + rpc.query({model: "pos.config", method: "check_birthday", args: [self.props.client.id] + }).then(function (data) { + if(data['birthday']){ + self.client['birthday'] = 'True'; + self.client['disc'] = self.env.pos.config.discount * 100; + } + for(var order_id=0; order_id 10; + } + }); + } + } + Registries.Component.extend(ActionpadWidget, BirthdayDiscount); +}); diff --git a/pos_customer_birthday_discount/static/src/js/models.js b/pos_customer_birthday_discount/static/src/js/models.js new file mode 100644 index 000000000..3a32432c0 --- /dev/null +++ b/pos_customer_birthday_discount/static/src/js/models.js @@ -0,0 +1,38 @@ +odoo.define('point_of_sale.discountOrderLine', function(require) { + 'use strict'; + + const field_utils = require('web.field_utils'); + var models = require('point_of_sale.models'); + var rpc = require('web.rpc'); + + models.Orderline = models.Orderline.extend({ + /** + * Set the discount to order of customer or replaces the current discount with birthday discount to the order placed by the customer. + * + * @param {string} discount Discount to be applied + */ + async set_discount(discount){ + var self = this; + if(self.pos.config.birthday_discount && self.order.attributes.client){ + var partner_id = self.order.attributes.client.id; + var first_order = self.pos.config.first_order; + await rpc.query({model: "pos.config", method: "check_pos_order", args: [[partner_id,first_order]] + }) + .then(function (data){ + if(data['birthday'] == 'True' && data['order'] == 'False'){ + self['check_birthday'] = true + } + else{ + self['check_birthday'] = false + } + }); + } + var parsed_discount = typeof(discount) === + 'number' ? discount : isNaN(parseFloat(discount)) ? 0 : field_utils.parse.float('' + discount); + var disc = Math.min(Math.max(parsed_discount || 0, 0),100); + this.discount = disc; + this.discountStr = '' + disc; + this.trigger('change',this); + } + }); +}); diff --git a/pos_customer_birthday_discount/static/src/xml/ActionpadWidgetInherit.xml b/pos_customer_birthday_discount/static/src/xml/ActionpadWidgetInherit.xml new file mode 100644 index 000000000..23e1da11a --- /dev/null +++ b/pos_customer_birthday_discount/static/src/xml/ActionpadWidgetInherit.xml @@ -0,0 +1,12 @@ + + + + + + +
(Happy birthday)
+
+
+
+
+
diff --git a/pos_customer_birthday_discount/static/src/xml/OrderlineInherit.xml b/pos_customer_birthday_discount/static/src/xml/OrderlineInherit.xml new file mode 100644 index 000000000..1f431013e --- /dev/null +++ b/pos_customer_birthday_discount/static/src/xml/OrderlineInherit.xml @@ -0,0 +1,51 @@ + + + + +
    + +
  • + + + + + at + + + + + + + + + + / + +
  • +
    + + +
  • + With a + + % + + Birthday discount +
  • +
    + +
  • + With a + + % + + discount +
  • +
    +
    +
+
+
+
diff --git a/pos_customer_birthday_discount/views/assets.xml b/pos_customer_birthday_discount/views/assets.xml new file mode 100644 index 000000000..1dd799ef6 --- /dev/null +++ b/pos_customer_birthday_discount/views/assets.xml @@ -0,0 +1,11 @@ + + + + diff --git a/pos_customer_birthday_discount/views/pos_config_views.xml b/pos_customer_birthday_discount/views/pos_config_views.xml new file mode 100644 index 000000000..bf7cc31ec --- /dev/null +++ b/pos_customer_birthday_discount/views/pos_config_views.xml @@ -0,0 +1,43 @@ + + + + + pos.config.view.form.inherit.pos.customer.birthday.discount + pos.config + + + +
+
+ +
+
+
+
+
+ +
+
+
+
+
+
+
+
+
diff --git a/pos_customer_birthday_discount/views/res_partner_views.xml b/pos_customer_birthday_discount/views/res_partner_views.xml new file mode 100644 index 000000000..8e0df8730 --- /dev/null +++ b/pos_customer_birthday_discount/views/res_partner_views.xml @@ -0,0 +1,17 @@ + + + + + view.partner.form.inherit.pos.customer.birthday.discount + res.partner + + + + + + +