diff --git a/forms/ecomerce/basket/index.js b/forms/ecomerce/basket/index.js index d1880829..e0583a24 100644 --- a/forms/ecomerce/basket/index.js +++ b/forms/ecomerce/basket/index.js @@ -6,18 +6,16 @@ export default new Class({ async open() { await Hedera.Form.prototype.open.call(this); + this.basket = new Hedera.Basket(this.app); - let orderId = this.$.params.$.id; - if (!orderId) - orderId = localStorage.getItem('hederaBasket'); - if (!orderId) - this.hash.setAll({form: 'ecomerce/pending'}); - else - await Hedera.Basket.check(this.conn, this.hash); - this.$.params.set('id', orderId); + this.orderId = this.$.params.$.id || this.basket.orderId; + if (!this.orderId) + return this.hash.setAll({form: 'ecomerce/checkout'}); + + this.$.lot.assign({id: this.orderId}); }, - activate() { + activate() { this.$.items.setInfo('bi', 'myBasketItem', 'hedera'); }, @@ -25,14 +23,19 @@ export default new Class({ Htk.Toast.showWarning(_('RememberReconfiguringImpact')); this.hash.setAll({ form: 'ecomerce/checkout', - id: this.$.params.$.id + id: this.orderId }); }, + async onCatalogClick() { + const basket = new Hedera.Basket(this.app); + await basket.load(this.orderId); + }, + onConfirmClick() { this.hash.setAll({ form: 'ecomerce/confirm', - id: this.$.params.$.id + id: this.orderId }); }, diff --git a/forms/ecomerce/basket/locale/ca.yml b/forms/ecomerce/basket/locale/ca.yml index d4a09b57..702db20f 100644 --- a/forms/ecomerce/basket/locale/ca.yml +++ b/forms/ecomerce/basket/locale/ca.yml @@ -1,4 +1,6 @@ ShoppingBasket: Cistella de la compra +Order: Encàrrec +ShippingInformation: Dades d'enviament Delete: Borrar encàrrec GoToCatalog: Anar al catàleg ConfigureOrder: Configurar encàrrec diff --git a/forms/ecomerce/basket/locale/en.yml b/forms/ecomerce/basket/locale/en.yml index d1b3271a..e82ebf7e 100644 --- a/forms/ecomerce/basket/locale/en.yml +++ b/forms/ecomerce/basket/locale/en.yml @@ -1,4 +1,6 @@ ShoppingBasket: Shopping basket +Order: Order +ShippingInformation: Shipping information Delete: Delete order GoToCatalog: Go to catalog ConfigureOrder: Configure order diff --git a/forms/ecomerce/basket/locale/es.yml b/forms/ecomerce/basket/locale/es.yml index 4069ca0d..d216da1d 100644 --- a/forms/ecomerce/basket/locale/es.yml +++ b/forms/ecomerce/basket/locale/es.yml @@ -1,4 +1,6 @@ ShoppingBasket: Cesta de la compra +Order: Pedido +ShippingInformation: Datos de envío Delete: Borrar pedido GoToCatalog: Ir al catálogo ConfigureOrder: Configurar pedido diff --git a/forms/ecomerce/basket/locale/fr.yml b/forms/ecomerce/basket/locale/fr.yml index dba6194b..74f4ad67 100644 --- a/forms/ecomerce/basket/locale/fr.yml +++ b/forms/ecomerce/basket/locale/fr.yml @@ -1,4 +1,6 @@ ShoppingBasket: Panier +Order: Commande +ShippingInformation: Informations sur la livraison Delete: Effacer GoToCatalog: Aller au catalogue ConfigureOrder: Définissez l'ordre diff --git a/forms/ecomerce/basket/locale/pt.yml b/forms/ecomerce/basket/locale/pt.yml index 0e3227b7..eab4e1e5 100644 --- a/forms/ecomerce/basket/locale/pt.yml +++ b/forms/ecomerce/basket/locale/pt.yml @@ -1,4 +1,6 @@ ShoppingBasket: Cesta da compra +Order: Encomenda +ShippingInformation: Dados de envio Delete: Eliminar encomenda GoToCatalog: Ir ao catálogo ConfigureOrder: Configurar encomenda diff --git a/forms/ecomerce/basket/ui.xml b/forms/ecomerce/basket/ui.xml index 29e08853..90a5ccaf 100644 --- a/forms/ecomerce/basket/ui.xml +++ b/forms/ecomerce/basket/ui.xml @@ -13,15 +13,16 @@ + on-click="this.onCatalogClick()"/> + - + SELECT o.id, o.sent, ag.description agency, v.code method, ad.nickname FROM myOrder o @@ -52,7 +53,7 @@
- + SELECT bi.id, bi.amount, bi.price, i.longName item, i.tag5, i.value5, i.tag6, i.value6, i.tag7, i.value7, i.image, im.updated diff --git a/forms/ecomerce/catalog/index.js b/forms/ecomerce/catalog/index.js index d9ce71f5..211c40d2 100644 --- a/forms/ecomerce/catalog/index.js +++ b/forms/ecomerce/catalog/index.js @@ -8,18 +8,29 @@ const Catalog = new Class({ ,async open() { let isOk = true; + const basket = new Hedera.Basket(this.app); + this.orderId = basket.orderId; - if (!localStorage.getItem('hederaGuest')) - isOk = await Hedera.Basket.check(this.conn, this.hash); - else - await this.conn.execQuery('CALL mybasket_configureForGuest'); + if (!localStorage.getItem('hederaGuest')) { + if (!this.orderId) + return this.hash.setAll({form: 'ecomerce/checkout'}); + else + isOk = await basket.checkRedirect(this.orderId); + } else { + const resultSet = await this.conn.execQuery( + 'CALL myOrder_configureForGuest(@orderId); SELECT @orderId;'); + + resultSet.fetchResult(); + this.orderId = resultSet.fetchValue(); + } if (isOk) await Hedera.Form.prototype.open.call(this); } - + ,activate() { document.body.appendChild(this.$.rightPanel); this.$.items.setInfo('i', 'item', 'vn', ['id']); + this.$.orderLot.assign({orderId: this.orderId}); if (localStorage.getItem('hederaView')) this.setView(parseInt(localStorage.getItem('hederaView'))); @@ -98,6 +109,7 @@ const Catalog = new Class({ break; } + params.orderId = this.orderId; const refreshItems = hasTagFilter || params.search != null || params.type != null; @@ -245,7 +257,11 @@ const Catalog = new Class({ if (this.isGuest()) return; - this.hash.setAll({form: 'ecomerce/checkout'}); + this.hash.setAll({ + form: 'ecomerce/checkout', + id: this.orderId, + continue: 'catalog' + }); } ,onAddItemClick(event, form) { @@ -255,7 +271,10 @@ const Catalog = new Class({ this.onEraseClick(); this.$.$card.row = form.row; - this.$.cardLot.assign({item: form.$.id}); + this.$.cardLot.assign({ + item: form.$.id, + orderId: this.orderId + }); this.$.cardPopup.show(event.currentTarget); } @@ -284,7 +303,7 @@ const Catalog = new Class({ ,async onConfirmClick() { var sql = ''; - var query = new Sql.String({query: 'CALL myBasket_addItem(#warehouse, #item, #amount);'}); + var query = new Sql.String({query: 'CALL myOrder_addItem(#orderId, #warehouse, #item, #amount);'}); var amountSum = 0; for (var warehouse in this.items) { @@ -292,6 +311,7 @@ const Catalog = new Class({ amountSum += amount; const params = { + orderId: this.orderId, warehouse: warehouse, item: this.$.cardLot.$.item, amount: amount diff --git a/forms/ecomerce/catalog/ui.xml b/forms/ecomerce/catalog/ui.xml index 5c2e3b6e..59bf2126 100644 --- a/forms/ecomerce/catalog/ui.xml +++ b/forms/ecomerce/catalog/ui.xml @@ -91,12 +91,14 @@ param="producer"/> + - - SELECT b.id, b.sent, a.description agency, m.code method - FROM myBasket b - JOIN vn.agencyMode a ON a.id = b.agencyModeFk - JOIN vn.deliveryMethod m ON m.id = b.deliveryMethodFk + + SELECT o.id, o.sent, a.description agency, m.code method + FROM myOrder o + JOIN vn.agencyMode a ON a.id = o.agencyModeFk + JOIN vn.deliveryMethod m ON m.id = o.deliveryMethodFk + WHERE o.id = #orderId - CALL myBasket_getAvailable; + CALL myOrder_getAvailable(#orderId); SELECT DISTINCT t.id, l.name FROM vn.item i JOIN vn.itemType t ON t.id = i.typeFk @@ -283,7 +285,7 @@ property="model" auto-load="false" result-index="1"> - CALL myBasket_getAvailable; + CALL myOrder_getAvailable(#orderId); SELECT DISTINCT l.id, l.name FROM vn.item i JOIN vn.itemType t ON t.id = i.typeFk @@ -304,7 +306,7 @@ property="model" auto-load="false" result-index="1"> - CALL myBasket_getAvailable; + CALL myOrder_getAvailable(#orderId); SELECT DISTINCT p.id, p.name FROM vn.item i JOIN vn.itemType t ON t.id = i.typeFk @@ -325,7 +327,7 @@ property="model" auto-load="false" result-index="1"> - CALL myBasket_getAvailable; + CALL myOrder_getAvailable(#orderId); SELECT DISTINCT o.id, l.name, o.code FROM vn.item i JOIN vn.itemType t ON t.id = i.typeFk @@ -347,7 +349,7 @@ property="model" auto-load="false" result-index="1"> - CALL myBasket_getAvailable; + CALL myOrder_getAvailable(#orderId); SELECT DISTINCT i.category, i.category FROM vn.item i JOIN vn.itemType t ON t.id = i.typeFk @@ -466,7 +468,7 @@ result-index="1" on-status-changed-after="onCardLoad" lot="card-lot"> - CALL myBasket_calcCatalogFromItem(#item); + CALL myOrder_calcCatalogFromItem(#orderId, #item); SELECT l.warehouseFk, w.name warehouse, p.`grouping`, p.price, p.priceKg, p.rate, l.available FROM tmp.ticketLot l diff --git a/forms/ecomerce/checkout/index.js b/forms/ecomerce/checkout/index.js index d1402a58..24bb2f26 100644 --- a/forms/ecomerce/checkout/index.js +++ b/forms/ecomerce/checkout/index.js @@ -59,7 +59,7 @@ export default new Class({ async onConfirmClick() { this.disableButtons(true); - const id = this.$.params.$.id; + let id = this.$.params.$.id; const params = Object.assign({}, this.$.lot.$); let query; @@ -67,7 +67,7 @@ export default new Class({ params.id = id; query = 'CALL myOrder_configure(#id, #date, #method, #agency, #address)'; } else { - query = 'CALL myOrder_create(@id, #date, #method, #agency, #address)'; + query = 'CALL myOrder_create(@orderId, #date, #method, #agency, #address); SELECT @orderId;'; } let resultSet; @@ -81,12 +81,21 @@ export default new Class({ if (!resultSet.fetchResult()) return; - if (id) + if (id) { Htk.Toast.showMessage(_('OrderUpdated')); - else - Htk.Toast.showMessage(_('OrderStarted')); - this.hash.setAll({form: 'ecomerce/catalog'}); + switch(this.hash.$.continue) { + case 'catalog': + this.hash.setAll({form: 'ecomerce/catalog'}); + break; + default: + this.hash.setAll({form: 'ecomerce/basket', id}); + } + } else { + const basket = new Hedera.Basket(this.app); + basket.loadIntoBasket(resultSet.fetchValue()); + this.hash.setAll({form: 'ecomerce/catalog'}); + } }, onCancelClick() { diff --git a/forms/ecomerce/confirm/index.js b/forms/ecomerce/confirm/index.js index 277b0389..fc51c82c 100644 --- a/forms/ecomerce/confirm/index.js +++ b/forms/ecomerce/confirm/index.js @@ -5,8 +5,13 @@ export default new Class({ Template: require('./ui.xml'), async open() { - const isOk = await Hedera.Basket.check(this.conn, this.hash); - if (isOk) await Hedera.Form.prototype.open.call(this); + const basket = new Hedera.Basket(this.app); + try { + await basket.check(this.hash.$.id); + } catch (err) { + Htk.Toast.showError(err.message); + } + await Hedera.Form.prototype.open.call(this); }, onOrderReady(form) { @@ -117,6 +122,7 @@ export default new Class({ 'CALL myOrder_confirm(#id)', this.$.params.$ ); + Hedera.Basket.unload(); this.$.successDialog.show(); } finally { Vn.Node.disableInputs(this.node, false); diff --git a/forms/ecomerce/orders/locale/ca.yml b/forms/ecomerce/orders/locale/ca.yml index c93f4817..68ef7804 100644 --- a/forms/ecomerce/orders/locale/ca.yml +++ b/forms/ecomerce/orders/locale/ca.yml @@ -5,7 +5,7 @@ OrderNumber: N encàrrec DateMake: Data de creació DateExit: Data d'eixida SendMethod: Forma d'enviament -LastOrders: Últimes comandes +LastOrders: Comandes confirmades 'Balance:': 'Saldo:' PaymentInfo: >- La quantitat mostrada és el teu saldo pendent (negatiu) o favorable a dia diff --git a/forms/ecomerce/orders/locale/en.yml b/forms/ecomerce/orders/locale/en.yml index 4bb08ce7..b7fa58b5 100644 --- a/forms/ecomerce/orders/locale/en.yml +++ b/forms/ecomerce/orders/locale/en.yml @@ -5,7 +5,7 @@ OrderNumber: Order number DateMake: Creation date DateExit: Shipping date SendMethod: Delivery method -LastOrders: Last orders +LastOrders: Confirmed orders 'Balance:': 'Balance:' PaymentInfo: >- The amount shown is your slope (negative) or favorable balance today, it diff --git a/forms/ecomerce/orders/locale/es.yml b/forms/ecomerce/orders/locale/es.yml index b649cddf..d471178c 100644 --- a/forms/ecomerce/orders/locale/es.yml +++ b/forms/ecomerce/orders/locale/es.yml @@ -5,7 +5,7 @@ OrderNumber: Nº pedido DateMake: Fecha de creación DateExit: Fecha de salida SendMethod: Forma de envío -LastOrders: Últimos pedidos +LastOrders: Pedidos confirmados 'Balance:': 'Saldo:' PaymentInfo: >- La cantidad mostrada es tu saldo pendiente (negativa) o favorable a día de diff --git a/forms/ecomerce/orders/locale/fr.yml b/forms/ecomerce/orders/locale/fr.yml index e10b5d7c..32bd3c0d 100644 --- a/forms/ecomerce/orders/locale/fr.yml +++ b/forms/ecomerce/orders/locale/fr.yml @@ -5,7 +5,7 @@ OrderNumber: Numéro de commande DateMake: Date de creation DateExit: Date de sortie SendMethod: Typo -LastOrders: Les dernières commandes +LastOrders: Commandes confirmées 'Balance:': 'Balance:' PaymentInfo: >- Le montant indiqué est votre pente (négative) ou balance favorable diff --git a/forms/ecomerce/orders/locale/mn.yml b/forms/ecomerce/orders/locale/mn.yml deleted file mode 100644 index 207a0dac..00000000 --- a/forms/ecomerce/orders/locale/mn.yml +++ /dev/null @@ -1,37 +0,0 @@ -OpenOrders: Open orders -StartOrder: Start order -ContinueOrder: Continue order -OrderNumber: Order number -DateMake: Creation date -DateExit: Shipping date -SendMethod: Delivery method -LastOrders: Last orders -'Balance:': 'Balance:' -PaymentInfo: >- - Үзүүлсэн хэмжээ цаашид захиалга эзэлж биш, таны налуу (сөрөг), эсвэл - тааламжтай тэнцвэр нь өнөөдөр юм. Хэрэв та дүн арилгаж гэж хэлж байсан нь доош - нь төлбөр хийж, өөрийн хүссэн хэмжээгээр орж хүсэж байгаа бол таны захиалга - ирдэг бол авах, энэ хэмжээ тэнцүү буюу 0-ээс их байх ёстой. -MakePayment: Make payment -Company: Company -Pending: Pending -Pay: Pay -Basket: Basket -ShoppingBasket: Shopping basket -SeeOrder: Show details of the order -Delivery: Delivery -TicketNumber: Ticket number -SentAddress: Delivery address -Consignee: Consignee -Boxes: Bundles -TotalWithVAT: Total with VAT -PayOrder: Pay order -'AmountToPay:': 'Amount to pay (€):' -AmountError: >- - The amount must be a positive number less than or equal to the outstanding - amount -PayError: Failed to make the payment -An error has been in the payment: >- - It seems that there has been an error in the payment -Retry: Retry -Accept: Accept diff --git a/forms/ecomerce/orders/locale/pt.yml b/forms/ecomerce/orders/locale/pt.yml index ff127648..d638cf7e 100644 --- a/forms/ecomerce/orders/locale/pt.yml +++ b/forms/ecomerce/orders/locale/pt.yml @@ -5,7 +5,7 @@ OrderNumber: Nº pedido DateMake: Data de criação DateExit: Data de saída SendMethod: Forma de envío -LastOrders: Últimas encomendas +LastOrders: Encomendas confirmadas 'Balance:': 'Saldo:' PaymentInfo: >- A quantidade mostrada é seu saldo pendente (negativo) ou favorável a dia de diff --git a/forms/ecomerce/orders/style.scss b/forms/ecomerce/orders/style.scss index 6c4fb965..97761413 100644 --- a/forms/ecomerce/orders/style.scss +++ b/forms/ecomerce/orders/style.scss @@ -33,6 +33,6 @@ /* List */ -.orders .htk-list .total { +.hedera-orders .htk-list .total { float: right; } diff --git a/forms/ecomerce/pending/index.js b/forms/ecomerce/pending/index.js index d5e9a666..7364cba5 100644 --- a/forms/ecomerce/pending/index.js +++ b/forms/ecomerce/pending/index.js @@ -5,6 +5,7 @@ export default new Class({ Template: require('./ui.xml'), activate() { + this.basket = new Hedera.Basket(this.app); this.$.orders.setInfo('o', 'myOrder', 'hedera', ['id'], 'id'); }, @@ -13,9 +14,8 @@ export default new Class({ await form.deleteRow(); }, - loadOrder(id) { - localStorage.setItem('hederaBasket', id); - this.hash.setAll({form: 'ecomerce/catalog'}); - Htk.Toast.showMessage(_('OrderLoadedIntoBasket')); + async loadOrder(id) { + const basket = new Hedera.Basket(this.app); + await basket.load(id); } }); diff --git a/js/hedera/basket.js b/js/hedera/basket.js index deae7ec4..11b02538 100644 --- a/js/hedera/basket.js +++ b/js/hedera/basket.js @@ -6,37 +6,43 @@ module.exports = class { if (orderId) orderId = parseInt(orderId); this.orderId = orderId; } - async check(conn, hash) { - this.hash = hash; - const orderId = localStorage.getItem('hederaBasket'); + async check(orderId) { const resultSet = await this.app.conn.execQuery( 'CALL myOrder_check(#id)', {id: orderId} ); - - const status = resultSet.fetchValue(); - if (!status) return; - - const isOk = status == 'updated' || status == 'ok'; - - if (status == 'updated') - Htk.Toast.showWarning(_('Order items updated')); - - if (!isOk) { - const params = {form: 'ecomerce/checkout'}; - if (orderId) params.id = orderId; - this.hash.setAll(params); + resultSet.fetchValue(); + } + async checkRedirect(orderId) { + try { + await this.check(orderId); + return true; + } catch(err) { + Htk.Toast.showError(err.message); + this.app.hash.setAll({ + form: 'ecomerce/checkout', + id: orderId, + continue: 'catalog' + }); + return false; } - - return isOk; } async load(orderId) { + this.loadIntoBasket(orderId); + if (!await this.checkRedirect(orderId)) return; + this.app.hash.setAll({ + form: 'ecomerce/catalog' + }); + } + loadIntoBasket(orderId) { if (this.orderId != orderId) { localStorage.setItem('hederaBasket', orderId); this.orderId = orderId; + Htk.Toast.showMessage(_('OrderLoadedIntoBasket')); } - - await this.check() + } + static unload() { + localStorage.removeItem('hederaBasket'); } }; diff --git a/js/hedera/locale/ca.yml b/js/hedera/locale/ca.yml index fe0589df..326e90ec 100644 --- a/js/hedera/locale/ca.yml +++ b/js/hedera/locale/ca.yml @@ -38,7 +38,8 @@ AppName: Verdnatura Home: Inici Orders: Encàrrecs Basket: Cistella -Last orders: Últims comandes +Pending orders: Pendents +Last orders: Confirmades Invoices: Factures Catalog: Catàleg About: Coneix-nos diff --git a/js/hedera/locale/en.yml b/js/hedera/locale/en.yml index 88d354eb..f6add13c 100644 --- a/js/hedera/locale/en.yml +++ b/js/hedera/locale/en.yml @@ -34,7 +34,8 @@ AppName: Verdnatura Home: Home Orders: Orders Basket: Basket -Last orders: Last orders +Pending orders: Pending +Last orders: Confirmed Invoices: Invoices Catalog: Catalog About: About diff --git a/js/hedera/locale/es.yml b/js/hedera/locale/es.yml index de2766ed..9c6a656a 100644 --- a/js/hedera/locale/es.yml +++ b/js/hedera/locale/es.yml @@ -38,7 +38,8 @@ AppName: Verdnatura Home: Inicio Orders: Pedidos Basket: Cesta -Last orders: Últimos pedidos +Pending orders: Pendientes +Last orders: Confirmados Invoices: Facturas Catalog: Catálogo About: Conócenos diff --git a/js/hedera/locale/fr.yml b/js/hedera/locale/fr.yml index 4622bfeb..37811b10 100644 --- a/js/hedera/locale/fr.yml +++ b/js/hedera/locale/fr.yml @@ -38,7 +38,8 @@ AppName: Verdnatura Home: Accueil Orders: Commandes Basket: Panier -Last orders: Dernières commandes +Pending orders: En attente +Last orders: Confirmées Invoices: Facturas Catalog: Catalogue About: Nous diff --git a/js/hedera/locale/pt.yml b/js/hedera/locale/pt.yml index d1254b4b..f8ed38db 100644 --- a/js/hedera/locale/pt.yml +++ b/js/hedera/locale/pt.yml @@ -36,7 +36,8 @@ AppName: VerdNatura Home: Principio Orders: Encomendas Basket: Cesta -Last orders: Últimas encomendas +Pending orders: Pendentes +Last orders: Confirmados Invoices: Facturas Catalog: Catálogo About: Conheça-nos