From 63ac94574fe4d097c934da1eaa9b954847e7fa0f Mon Sep 17 00:00:00 2001 From: Vicente Date: Tue, 2 May 2023 12:06:41 +0200 Subject: [PATCH] [IMP] pos_pms_link: - Add translation. - Add improved search. - Add note to pos.order.line with reservation and room. - Add room to list. - Add new domain. - Add reservation confirm popup. - Add hides reservation payment button if there is payment lines in the order. --- pos_pms_link/i18n/es.po | 355 ++++++++++++++++++ .../js/Screens/PaymentScreen/PaymentScreen.js | 28 +- pos_pms_link/static/src/js/db.js | 4 +- pos_pms_link/static/src/js/models.js | 18 +- .../Screens/PaymentScreen/PaymentScreen.xml | 2 +- .../ReservationListScreen/ReservationLine.xml | 3 + .../ReservationListScreen.xml | 1 + 7 files changed, 397 insertions(+), 14 deletions(-) create mode 100644 pos_pms_link/i18n/es.po diff --git a/pos_pms_link/i18n/es.po b/pos_pms_link/i18n/es.po new file mode 100644 index 000000000..0db16ca7d --- /dev/null +++ b/pos_pms_link/i18n/es.po @@ -0,0 +1,355 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * pos_pms_link +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 14.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2023-05-02 09:32+0000\n" +"PO-Revision-Date: 2023-05-02 09:32+0000\n" +"Last-Translator: \n" +"Language-Team: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: \n" + +#. module: pos_pms_link +#. openerp-web +#: code:addons/pos_pms_link/static/src/js/Screens/ReservationListScreen/ReservationDetailsEdit.js:0 +#, python-format +msgid "A Customer Name Is Required" +msgstr "Se requiere el nombre de cliente" + +#. module: pos_pms_link +#. openerp-web +#: code:addons/pos_pms_link/static/src/xml/Screens/ReservationListScreen/ReservationListScreen.xml:0 +#, python-format +msgid "Adults" +msgstr "Adultos" + +#. module: pos_pms_link +#. openerp-web +#: code:addons/pos_pms_link/static/src/xml/Screens/ReservationListScreen/ReservationDetailsEdit.xml:0 +#, python-format +msgid "Adults:" +msgstr "Adultos:" + +#. module: pos_pms_link +#: model_terms:ir.ui.view,arch_db:pos_pms_link.pos_config_view_form +msgid "Allow pay on reservations" +msgstr "Permitir pagar contra reserva" + +#. module: pos_pms_link +#: model_terms:ir.ui.view,arch_db:pos_pms_link.pos_config_view_form +msgid "Allowed properties" +msgstr "Hoteles permitidos" + +#. module: pos_pms_link +#. openerp-web +#: code:addons/pos_pms_link/static/src/js/Screens/ReservationListScreen/ReservationListScreen.js:0 +#, python-format +msgid "Change Reservation" +msgstr "Cambiar reserva" + +#. module: pos_pms_link +#. openerp-web +#: code:addons/pos_pms_link/static/src/xml/Screens/ReservationListScreen/ReservationListScreen.xml:0 +#, python-format +msgid "Checkin" +msgstr "" + +#. module: pos_pms_link +#. openerp-web +#: code:addons/pos_pms_link/static/src/xml/Screens/ReservationListScreen/ReservationDetailsEdit.xml:0 +#, python-format +msgid "Checkin:" +msgstr "" + +#. module: pos_pms_link +#. openerp-web +#: code:addons/pos_pms_link/static/src/xml/Screens/ReservationListScreen/ReservationListScreen.xml:0 +#, python-format +msgid "Checkout" +msgstr "" + +#. module: pos_pms_link +#. openerp-web +#: code:addons/pos_pms_link/static/src/xml/Screens/ReservationListScreen/ReservationDetailsEdit.xml:0 +#, python-format +msgid "Checkout:" +msgstr "" + +#. module: pos_pms_link +#. openerp-web +#: code:addons/pos_pms_link/static/src/xml/Screens/ReservationListScreen/ReservationListScreen.xml:0 +#, python-format +msgid "Children" +msgstr "Niños" + +#. module: pos_pms_link +#. openerp-web +#: code:addons/pos_pms_link/static/src/xml/Screens/ReservationListScreen/ReservationDetailsEdit.xml:0 +#, python-format +msgid "Children:" +msgstr "Niños:" + +#. module: pos_pms_link +#. openerp-web +#: code:addons/pos_pms_link/static/src/js/Screens/ReservationListScreen/ReservationListScreen.js:0 +#, python-format +msgid "Deselect Reservation" +msgstr "Deshacer selección de reserva" + +#. module: pos_pms_link +#. openerp-web +#: code:addons/pos_pms_link/static/src/xml/Screens/ReservationListScreen/ReservationListScreen.xml:0 +#, python-format +msgid "Discard" +msgstr "Descartar" + +#. module: pos_pms_link +#: model:ir.model.fields,field_description:pos_pms_link.field_pms_reservation__display_name +#: model:ir.model.fields,field_description:pos_pms_link.field_pms_service__display_name +#: model:ir.model.fields,field_description:pos_pms_link.field_pms_service_line__display_name +#: model:ir.model.fields,field_description:pos_pms_link.field_pos_config__display_name +#: model:ir.model.fields,field_description:pos_pms_link.field_pos_order__display_name +#: model:ir.model.fields,field_description:pos_pms_link.field_pos_order_line__display_name +#: model:ir.model.fields,field_description:pos_pms_link.field_pos_payment__display_name +#: model:ir.model.fields,field_description:pos_pms_link.field_pos_session__display_name +#: model:ir.model.fields,field_description:pos_pms_link.field_product_pricelist__display_name +#: model:ir.model.fields,field_description:pos_pms_link.field_product_pricelist_item__display_name +msgid "Display Name" +msgstr "Nombre" + +#. module: pos_pms_link +#: model:ir.model.fields,field_description:pos_pms_link.field_pms_reservation__id +#: model:ir.model.fields,field_description:pos_pms_link.field_pms_service__id +#: model:ir.model.fields,field_description:pos_pms_link.field_pms_service_line__id +#: model:ir.model.fields,field_description:pos_pms_link.field_pos_config__id +#: model:ir.model.fields,field_description:pos_pms_link.field_pos_order__id +#: model:ir.model.fields,field_description:pos_pms_link.field_pos_order_line__id +#: model:ir.model.fields,field_description:pos_pms_link.field_pos_payment__id +#: model:ir.model.fields,field_description:pos_pms_link.field_pos_session__id +#: model:ir.model.fields,field_description:pos_pms_link.field_product_pricelist__id +#: model:ir.model.fields,field_description:pos_pms_link.field_product_pricelist_item__id +msgid "ID" +msgstr "Identificación" + +#. module: pos_pms_link +#. openerp-web +#: code:addons/pos_pms_link/static/src/xml/Screens/ReservationListScreen/ReservationDetailsEdit.xml:0 +#, python-format +msgid "Internal comment:" +msgstr "Comentario interno:" + +#. module: pos_pms_link +#: model:ir.model.fields,field_description:pos_pms_link.field_pms_reservation____last_update +#: model:ir.model.fields,field_description:pos_pms_link.field_pms_service____last_update +#: model:ir.model.fields,field_description:pos_pms_link.field_pms_service_line____last_update +#: model:ir.model.fields,field_description:pos_pms_link.field_pos_config____last_update +#: model:ir.model.fields,field_description:pos_pms_link.field_pos_order____last_update +#: model:ir.model.fields,field_description:pos_pms_link.field_pos_order_line____last_update +#: model:ir.model.fields,field_description:pos_pms_link.field_pos_payment____last_update +#: model:ir.model.fields,field_description:pos_pms_link.field_pos_session____last_update +#: model:ir.model.fields,field_description:pos_pms_link.field_product_pricelist____last_update +#: model:ir.model.fields,field_description:pos_pms_link.field_product_pricelist_item____last_update +msgid "Last Modified on" +msgstr "Última modificación en" + +#. module: pos_pms_link +#. openerp-web +#: code:addons/pos_pms_link/static/src/xml/Screens/ReservationListScreen/ReservationDetailsEdit.xml:0 +#, python-format +msgid "Lines" +msgstr "Líneas" + +#. module: pos_pms_link +#. openerp-web +#: code:addons/pos_pms_link/static/src/xml/Screens/ReservationListScreen/ReservationListScreen.xml:0 +#, python-format +msgid "Name" +msgstr "Nombre" + +#. module: pos_pms_link +#. openerp-web +#: code:addons/pos_pms_link/static/src/xml/Screens/ReservationListScreen/ReservationDetailsEdit.xml:0 +#, python-format +msgid "Name:" +msgstr "Nombre:" + +#. module: pos_pms_link +#: model:ir.model.fields,field_description:pos_pms_link.field_pos_order_line__pms_service_line_id +msgid "PMS Service line" +msgstr "" + +#. module: pos_pms_link +#: model:ir.model.fields,field_description:pos_pms_link.field_pos_order__pms_reservation_id +msgid "PMS reservation" +msgstr "" + +#. module: pos_pms_link +#: model:ir.model.fields,field_description:pos_pms_link.field_pms_service_line__pos_order_line_ids +msgid "POS lines" +msgstr "" + +#. module: pos_pms_link +#: model:ir.model.fields,field_description:pos_pms_link.field_pos_order__paid_on_reservation +msgid "Paid on reservation" +msgstr "Pagado contra reserva" + +#. module: pos_pms_link +#. openerp-web +#: code:addons/pos_pms_link/static/src/xml/Screens/ReservationListScreen/ReservationListScreen.xml:0 +#, python-format +msgid "Partner name" +msgstr "Cliente" + +#. module: pos_pms_link +#: model:ir.model.fields,field_description:pos_pms_link.field_pos_config__pay_on_reservation +msgid "Pay on reservation" +msgstr "Pagar contra reserva" + +#. module: pos_pms_link +#: model:ir.model.fields,field_description:pos_pms_link.field_pos_config__pay_on_reservation_method_id +msgid "Pay on reservation method" +msgstr "Método de pago contra reserva" + +#. module: pos_pms_link +#. openerp-web +#: code:addons/pos_pms_link/static/src/js/Screens/PaymentScreen/PaymentScreen.js:0 +#, python-format +msgid "Pay order with reservation ?" +msgstr "Pagar pedido contra reserva?" + +#. module: pos_pms_link +#: model:ir.model,name:pos_pms_link.model_pos_config +msgid "Point of Sale Configuration" +msgstr "Configuración del TPV" + +#. module: pos_pms_link +#: model:ir.model,name:pos_pms_link.model_pos_order_line +msgid "Point of Sale Order Lines" +msgstr "Líneas de Orden de Punto de Venta" + +#. module: pos_pms_link +#: model:ir.model,name:pos_pms_link.model_pos_order +msgid "Point of Sale Orders" +msgstr "Pedidos del TPV" + +#. module: pos_pms_link +#: model:ir.model,name:pos_pms_link.model_pos_payment +msgid "Point of Sale Payments" +msgstr "Pagos en puntos de venta" + +#. module: pos_pms_link +#: model:ir.model,name:pos_pms_link.model_pos_session +msgid "Point of Sale Session" +msgstr "Sesión TPV" + +#. module: pos_pms_link +#: model:ir.model,name:pos_pms_link.model_product_pricelist +msgid "Pricelist" +msgstr "Tarifa" + +#. module: pos_pms_link +#: model:ir.model,name:pos_pms_link.model_product_pricelist_item +msgid "Pricelist Rule" +msgstr "" + +#. module: pos_pms_link +#. openerp-web +#: code:addons/pos_pms_link/static/src/xml/Screens/PaymentScreen/PaymentScreen.xml:0 +#: model:ir.model,name:pos_pms_link.model_pms_reservation +#, python-format +msgid "Reservation" +msgstr "Reserva" + +#. module: pos_pms_link +#. openerp-web +#: code:addons/pos_pms_link/static/src/xml/ReservationSelectionButton.xml:0 +#, python-format +msgid "Reservation #" +msgstr "Reserva #" + +#. module: pos_pms_link +#: model:ir.model.fields,field_description:pos_pms_link.field_pos_config__reservation_allowed_propertie_ids +msgid "Reservation allowed properties" +msgstr "Reservas de hoteles permitidas" + +#. module: pos_pms_link +#: code:addons/pos_pms_link/models/pos_order.py:0 +#, python-format +msgid "Reservation does not exists." +msgstr "La reserva no existe." + +#. module: pos_pms_link +#. openerp-web +#: code:addons/pos_pms_link/static/src/xml/Screens/ReservationListScreen/ReservationListScreen.xml:0 +#, python-format +msgid "Room" +msgstr "Habitación" + +#. module: pos_pms_link +#. openerp-web +#: code:addons/pos_pms_link/static/src/xml/Screens/ReservationListScreen/ReservationListScreen.xml:0 +#, python-format +msgid "Search Reservations" +msgstr "Buscar reservas" + +#. module: pos_pms_link +#. openerp-web +#: code:addons/pos_pms_link/static/src/xml/Screens/ReservationListScreen/ReservationDetailsEdit.xml:0 +#, python-format +msgid "Service" +msgstr "Servicio" + +#. module: pos_pms_link +#: model:ir.model,name:pos_pms_link.model_pms_service_line +msgid "Service by day" +msgstr "Servicio por día" + +#. module: pos_pms_link +#: model:ir.model,name:pos_pms_link.model_pms_service +msgid "Services and its charges" +msgstr "Servicios y sus cargos" + +#. module: pos_pms_link +#. openerp-web +#: code:addons/pos_pms_link/static/src/xml/Screens/ReservationListScreen/ReservationDetailsEdit.xml:0 +#, python-format +msgid "Services:" +msgstr "Servicios:" + +#. module: pos_pms_link +#. openerp-web +#: code:addons/pos_pms_link/static/src/js/Screens/ReservationListScreen/ReservationListScreen.js:0 +#, python-format +msgid "Set Reservation" +msgstr "Seleccionar reserva" + +#. module: pos_pms_link +#. openerp-web +#: code:addons/pos_pms_link/static/src/xml/Screens/ReceiptScreen/OrderReceipt.xml:0 +#, python-format +msgid "Signature:" +msgstr "Firma:" + +#. module: pos_pms_link +#. openerp-web +#: code:addons/pos_pms_link/static/src/js/Screens/PaymentScreen/PaymentScreen.js:0 +#, python-format +msgid "" +"This operation will add all the products in the order to the reservation. " +"RESERVATION: name PARTNER : partner_name ROOM: rooms" +msgstr "" +"Esta operación añadirá todos los productos del pedido a la reserva. " +"RESERVA: name CLIENTE : partner_name HABITACIONES: rooms" + +#. module: pos_pms_link +#. openerp-web +#: code:addons/pos_pms_link/static/src/xml/Screens/ReservationListScreen/ReservationLine.xml:0 +#, python-format +msgid "VIEW" +msgstr "VER" diff --git a/pos_pms_link/static/src/js/Screens/PaymentScreen/PaymentScreen.js b/pos_pms_link/static/src/js/Screens/PaymentScreen/PaymentScreen.js index 81904e2b8..eb708d1c0 100644 --- a/pos_pms_link/static/src/js/Screens/PaymentScreen/PaymentScreen.js +++ b/pos_pms_link/static/src/js/Screens/PaymentScreen/PaymentScreen.js @@ -15,17 +15,25 @@ odoo.define('pos_pms_link.PaymentScreen', function (require) { if (confirmed) { var self = this; - var payment_method = { - 'id': self.env.pos.config.pay_on_reservation_method_id[0], - 'name': self.env.pos.config.pay_on_reservation_method_id[1], - 'is_cash_count': false, - 'pos_mercury_config_id': false, - 'use_payment_terminal': false, + const { confirmed } = await this.showPopup('ConfirmPopup', { + title: this.env._t('Pay order with reservation ?'), + body: this.env._t( + 'This operation will add all the products in the order to the reservation. RESERVATION: ' + newReservation['name'] + ' PARTNER : ' + newReservation['partner_name'] + ' ROOM: ' + newReservation['rooms'] + ), + }); + if (confirmed) { + var payment_method = { + 'id': self.env.pos.config.pay_on_reservation_method_id[0], + 'name': self.env.pos.config.pay_on_reservation_method_id[1], + 'is_cash_count': false, + 'pos_mercury_config_id': false, + 'use_payment_terminal': false, + } + self.trigger('new-payment-line', payment_method); + this.currentOrder.set_paid_on_reservation(true); + this.currentOrder.set_pms_reservation_id(newReservation['id']); + self.validateOrder(false); } - self.trigger('new-payment-line', payment_method); - this.currentOrder.set_paid_on_reservation(true); - this.currentOrder.set_pms_reservation_id(newReservation['id']); - self.validateOrder(false); } } }; diff --git a/pos_pms_link/static/src/js/db.js b/pos_pms_link/static/src/js/db.js index 24420e0b6..063e4ad63 100644 --- a/pos_pms_link/static/src/js/db.js +++ b/pos_pms_link/static/src/js/db.js @@ -67,7 +67,9 @@ odoo.define("pos_pms_link.db", function (require) { }, _reservation_search_string: function(reservation){ var str = reservation.name || ''; - str = '' + reservation.id + ':' + str.replace(':', '').replace(/\n/g, ' ') + '\n'; + var room_str = reservation.rooms || ''; + var partner_str = reservation.partner_name || ''; + str = '' + reservation.id + ':' + str.replace(':', '').replace(/\n/g, ' ') + ':' + room_str.replace(':', '').replace(/\n/g, ' ') + ':' + partner_str.replace(':', '').replace(/\n/g, ' ') + '\n'; return str; }, add_reservations: function(reservations){ diff --git a/pos_pms_link/static/src/js/models.js b/pos_pms_link/static/src/js/models.js index f90b9f4b3..28bea9493 100644 --- a/pos_pms_link/static/src/js/models.js +++ b/pos_pms_link/static/src/js/models.js @@ -117,6 +117,8 @@ odoo.define('pos_pms_link.models', function (require) { }; var service_product = self.pos.db.get_product_by_id(service_line_id.product_id[0]); self.pos.get_order().add_product(service_product, options); + var last_line = self.pos.get_order().get_last_orderline(); + last_line.set_note("RESERVATION: " + reservation.name + " ROOMS: " + reservation.rooms); var r_service_line_id = reservation.service_ids.map(x => x.service_line_ids)[0].find(x=>x.id==service_line_id.id); if (r_service_line_id.pos_order_line_ids.length == 0) { r_service_line_id.pos_order_line_ids.push({ @@ -283,15 +285,27 @@ odoo.define('pos_pms_link.models', function (require) { models.load_models({ model: 'pms.reservation', - fields: ['name', 'id', 'state', 'service_ids', 'partner_name', 'adults', 'children', 'checkin', 'checkout', 'folio_internal_comment'], + fields: ['name', 'id', 'state', 'service_ids', 'partner_name', 'adults', 'children', 'checkin', 'checkout', 'folio_internal_comment', 'rooms'], context: function(self){ var ctx_copy = session.user_context ctx_copy['pos_user_force'] = true; return ctx_copy; }, domain: function(self){ + var d = new Date(); + var month = d.getMonth()+1; + var day = d.getDate(); + + var current_date = d.getFullYear() + '-' + + (month<10 ? '0' : '') + month + '-' + + (day<10 ? '0' : '') + day; + var domain = [ - ['state', '=', 'onboard'] + '|', + '&', + ['state', '=', 'onboard'], + ['checkout', '=', current_date], + ['state', '!=', 'cancel'] ]; if (self.config_id && self.config.reservation_allowed_propertie_ids) domain.push(['pms_property_id', 'in', self.config.reservation_allowed_propertie_ids]); return domain; diff --git a/pos_pms_link/static/src/xml/Screens/PaymentScreen/PaymentScreen.xml b/pos_pms_link/static/src/xml/Screens/PaymentScreen/PaymentScreen.xml index bc07e9cb0..408f331e6 100644 --- a/pos_pms_link/static/src/xml/Screens/PaymentScreen/PaymentScreen.xml +++ b/pos_pms_link/static/src/xml/Screens/PaymentScreen/PaymentScreen.xml @@ -4,7 +4,7 @@
-
Reservation
+
Reservation
diff --git a/pos_pms_link/static/src/xml/Screens/ReservationListScreen/ReservationLine.xml b/pos_pms_link/static/src/xml/Screens/ReservationListScreen/ReservationLine.xml index fbd856f14..b966adaec 100644 --- a/pos_pms_link/static/src/xml/Screens/ReservationListScreen/ReservationLine.xml +++ b/pos_pms_link/static/src/xml/Screens/ReservationListScreen/ReservationLine.xml @@ -13,6 +13,9 @@ + + + diff --git a/pos_pms_link/static/src/xml/Screens/ReservationListScreen/ReservationListScreen.xml b/pos_pms_link/static/src/xml/Screens/ReservationListScreen/ReservationListScreen.xml index e4508885e..a27501090 100644 --- a/pos_pms_link/static/src/xml/Screens/ReservationListScreen/ReservationListScreen.xml +++ b/pos_pms_link/static/src/xml/Screens/ReservationListScreen/ReservationListScreen.xml @@ -43,6 +43,7 @@ Name Partner name + Room Checkin Checkout Adults