diff --git a/forms/ecomerce/basket/index.js b/forms/ecomerce/basket/index.js index 2e2ec1f2..e0583a24 100644 --- a/forms/ecomerce/basket/index.js +++ b/forms/ecomerce/basket/index.js @@ -5,17 +5,38 @@ export default new Class({ Template: require('./ui.xml'), async open() { - const isOk = await Hedera.BasketChecker.check(this.conn, this.hash); - if (isOk) await Hedera.Form.prototype.open.call(this); + await Hedera.Form.prototype.open.call(this); + this.basket = new Hedera.Basket(this.app); + + 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'); }, onConfigureClick() { Htk.Toast.showWarning(_('RememberReconfiguringImpact')); - this.hash.setAll({form: 'ecomerce/checkout'}); + this.hash.setAll({ + form: 'ecomerce/checkout', + 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.orderId + }); }, onDeleteClick(form) { 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/style.scss b/forms/ecomerce/basket/style.scss index 7019b65a..4cacd373 100644 --- a/forms/ecomerce/basket/style.scss +++ b/forms/ecomerce/basket/style.scss @@ -2,13 +2,29 @@ .hedera-basket { .head { border-bottom: 1px solid #DDD; - } - .head p { - font-weight: bold; - margin: 0; - padding: 0; - font-size: 1.4rem; - text-align: right; + + & > div > div { + margin: 15px 0; + } + & > div > div:first-child { + margin: 0; + } + p { + margin: 3px 0; + + &.important { + font-size: 1.2rem; + font-weight: bold; + } + } + .total { + + font-weight: bold; + margin: 0; + padding: 0; + font-size: 1.4rem; + text-align: right; + } } .form > p { margin: 0; diff --git a/forms/ecomerce/basket/ui.xml b/forms/ecomerce/basket/ui.xml index f6859c49..90a5ccaf 100644 --- a/forms/ecomerce/basket/ui.xml +++ b/forms/ecomerce/basket/ui.xml @@ -1,6 +1,9 @@ + + +
-

ShoppingBasket

+

{{_(params.$.id ? 'Order' : 'ShoppingBasket')}}

+ on-click="this.onCatalogClick()"/> + on-click="this.onConfirmClick()"/>
+ + + + + SELECT o.id, o.sent, + ag.description agency, v.code method, ad.nickname + FROM myOrder o + JOIN vn.agencyMode ag ON ag.id = o.agencyModeFk + LEFT JOIN myAddress ad ON ad.id = o.addressFk + JOIN vn.deliveryMethod v ON v.id = o.deliveryMethodFk + WHERE o.id = #id; + + +
-

+

#{{order.id}}
+
+
ShippingInformation
+

+

Delivery at {{Vn.Value.format(order.sent, _('%D'))}}

+

Agency {{order.agency}}

+

{{order.nickname}}

+
+

Total @@ -28,15 +53,16 @@

- + 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 - FROM myBasketItem bi + FROM myOrderRow bi JOIN vn.item i ON i.id = bi.itemFk LEFT JOIN image im ON im.collectionFk = 'catalog' AND im.name = i.image + WHERE orderFk = #id
diff --git a/forms/ecomerce/catalog/index.js b/forms/ecomerce/catalog/index.js index 8b6eddd9..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.BasketChecker.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 85f0ea0e..24bb2f26 100644 --- a/forms/ecomerce/checkout/index.js +++ b/forms/ecomerce/checkout/index.js @@ -44,7 +44,7 @@ export default new Class({ } this.$.lot.assign({ - date: date, + date, method: row.deliveryMethod, agency: row.agencyModeFk, address: row.addressFk @@ -59,11 +59,21 @@ export default new Class({ async onConfirmClick() { this.disableButtons(true); - const query = 'CALL myBasket_configure(#date, #method, #agency, #address)'; + let id = this.$.params.$.id; + const params = Object.assign({}, this.$.lot.$); + + let query; + if (id) { + params.id = id; + query = 'CALL myOrder_configure(#id, #date, #method, #agency, #address)'; + } else { + query = 'CALL myOrder_create(@orderId, #date, #method, #agency, #address); SELECT @orderId;'; + } + let resultSet; try { - resultSet = await this.conn.execQuery(query, this.$.lot.$); + resultSet = await this.conn.execQuery(query, params); } finally { this.disableButtons(false); } @@ -71,16 +81,25 @@ export default new Class({ if (!resultSet.fetchResult()) return; - if (this.$.orderForm.numRows > 0) + 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() { - if (this.$.orderForm.numRows > 0) + if (this.$.params.$.id) window.history.back(); else this.hash.setAll({form: 'ecomerce/orders'}); diff --git a/forms/ecomerce/checkout/ui.xml b/forms/ecomerce/checkout/ui.xml index a62d37cc..8506152f 100644 --- a/forms/ecomerce/checkout/ui.xml +++ b/forms/ecomerce/checkout/ui.xml @@ -1,4 +1,7 @@ + + + @@ -8,10 +11,11 @@ - + SELECT m.code deliveryMethod, o.sent, o.agencyModeFk, o.addressFk - FROM myBasket o + FROM myOrder o JOIN vn.deliveryMethod m ON m.id = o.deliveryMethodFk + WHERE o.id = #id + + + - - CALL myBasket_getTax; + + CALL myOrder_getTax(#id); SELECT o.id, o.sent, o.notes, o.companyFk, ag.description agency, v.code method, ad.nickname, ad.postalCode, ad.city, ad.street, t.*, c.credit, myClient_getDebt(NULL) debt - FROM myBasket o + FROM myOrder o JOIN vn.agencyMode ag ON ag.id = o.agencyModeFk LEFT JOIN myAddress ad ON ad.id = o.addressFk JOIN vn.deliveryMethod v ON v.id = o.deliveryMethodFk @@ -17,7 +20,8 @@ IFNULL(SUM(taxableBase), 0) taxableBase, IFNULL(SUM(tax), 0) tax FROM tmp.orderAmount - ) t; + ) t + WHERE o.id = #id; DROP TEMPORARY TABLE tmp.orderAmount, tmp.orderTax; @@ -34,7 +38,7 @@
ShippingInformation

- Delivery at {{Vn.Value.format(order.sent, _('%D'))}} + Delivery at {{Vn.Value.format(order.sent, _('%D'))}}

Agency {{order.agency}} 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 80318bed..97761413 100644 --- a/forms/ecomerce/orders/style.scss +++ b/forms/ecomerce/orders/style.scss @@ -33,7 +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 new file mode 100644 index 00000000..7364cba5 --- /dev/null +++ b/forms/ecomerce/pending/index.js @@ -0,0 +1,21 @@ +import './style.scss'; + +export default new Class({ + Extends: Hedera.Form, + Template: require('./ui.xml'), + + activate() { + this.basket = new Hedera.Basket(this.app); + this.$.orders.setInfo('o', 'myOrder', 'hedera', ['id'], 'id'); + }, + + async onRemoveOrderClick(form) { + if (confirm(_('AreYouSureDeleteOrder'))) + await form.deleteRow(); + }, + + async loadOrder(id) { + const basket = new Hedera.Basket(this.app); + await basket.load(id); + } +}); diff --git a/forms/ecomerce/pending/locale/ca.yml b/forms/ecomerce/pending/locale/ca.yml new file mode 100644 index 00000000..dd862364 --- /dev/null +++ b/forms/ecomerce/pending/locale/ca.yml @@ -0,0 +1 @@ +Pending: Pendents diff --git a/forms/ecomerce/pending/locale/en.yml b/forms/ecomerce/pending/locale/en.yml new file mode 100644 index 00000000..eeb6d5a0 --- /dev/null +++ b/forms/ecomerce/pending/locale/en.yml @@ -0,0 +1 @@ +Pending: Pending diff --git a/forms/ecomerce/pending/locale/es.yml b/forms/ecomerce/pending/locale/es.yml new file mode 100644 index 00000000..6a3cfa3c --- /dev/null +++ b/forms/ecomerce/pending/locale/es.yml @@ -0,0 +1,8 @@ +Pending: Pendientes +PendingOrders: Pedidos pendientes +NewOrder: Nuevo pedido +ViewOrder: Ver pedido +RemoveOrder: Eliminar pedido +LoadOrderIntoCart: Cargar pedido en la cesta +AreYouSureDeleteOrder: ¿Seguro que quieres borrar el pedido? +OrderLoadedIntoBasket: ¡Pedido cargado en la cesta! \ No newline at end of file diff --git a/forms/ecomerce/pending/locale/fr.yml b/forms/ecomerce/pending/locale/fr.yml new file mode 100644 index 00000000..dd862364 --- /dev/null +++ b/forms/ecomerce/pending/locale/fr.yml @@ -0,0 +1 @@ +Pending: Pendents diff --git a/forms/ecomerce/pending/locale/pt.yml b/forms/ecomerce/pending/locale/pt.yml new file mode 100644 index 00000000..e79f9482 --- /dev/null +++ b/forms/ecomerce/pending/locale/pt.yml @@ -0,0 +1 @@ +Pending: Pendientes diff --git a/forms/ecomerce/pending/style.scss b/forms/ecomerce/pending/style.scss new file mode 100644 index 00000000..e69de29b diff --git a/forms/ecomerce/pending/ui.xml b/forms/ecomerce/pending/ui.xml new file mode 100644 index 00000000..e0c1fc15 --- /dev/null +++ b/forms/ecomerce/pending/ui.xml @@ -0,0 +1,54 @@ + +

+

PendingOrders

+
+
+ +
+
+ + + SELECT o.id, o.sent, o.deliveryMethodFk, o.total, + a.nickname, am.description agency + FROM myOrder o + JOIN myAddress a ON a.id = o.addressFk + JOIN vn.agencyMode am ON am.id = o.agencyModeFk + WHERE NOT o.isConfirmed + ORDER BY o.sent DESC + + + +
+

+ {{Vn.Value.format(iter.sent, '%D')}} +

+

#{{iter.id}}

+

{{iter.nickname}}

+

{{iter.agency}}

+

{{Vn.Value.format(iter.total, '%.2d€')}}

+
+
+ + +
+
+
+
+
+ diff --git a/import.js b/import.js index 46c8f0d4..4b33cf30 100644 --- a/import.js +++ b/import.js @@ -70,7 +70,9 @@ export const routes = { orders: () => import('ecomerce/orders'), ticket: - () => import('ecomerce/ticket') + () => import('ecomerce/ticket'), + pending: + () => import('ecomerce/pending') }, news: { new: diff --git a/js/hedera/app.js b/js/hedera/app.js index 394ab2fe..2ddc98dd 100644 --- a/js/hedera/app.js +++ b/js/hedera/app.js @@ -9,6 +9,24 @@ module.exports = new Class({ ,get() { return this._conn; } + }, + hash: { + type: Vn.Hash + ,get() { + return this._hash; + } + }, + gui: { + type: Gui + ,get() { + return this._gui; + } + }, + login: { + type: Login + ,get() { + return this._login; + } } } @@ -35,6 +53,7 @@ module.exports = new Class({ ,showLogin() { const login = this._login = new Login({ + app: this, conn: this._conn, hash: this._hash }); @@ -47,6 +66,7 @@ module.exports = new Class({ if (this._gui) return; const gui = this._gui = new Gui({ + app: this, conn: this._conn, hash: this._hash }); diff --git a/js/hedera/basket-checker.js b/js/hedera/basket-checker.js deleted file mode 100644 index 29a6c841..00000000 --- a/js/hedera/basket-checker.js +++ /dev/null @@ -1,21 +0,0 @@ - -module.exports = { - async check(conn, hash) { - this.hash = hash; - const resultSet = await conn.execQuery('CALL myBasket_check'); - - const status = resultSet.fetchValue(); - if (!status) return; - - const isOk = status == 'UPDATED' || status == 'OK'; - - if (status == 'UPDATED') - Htk.Toast.showWarning(_('Order items updated')); - - if (!isOk) - this.hash.setAll({form: 'ecomerce/checkout'}); - - return isOk; - } -}; - diff --git a/js/hedera/basket.js b/js/hedera/basket.js new file mode 100644 index 00000000..517ed125 --- /dev/null +++ b/js/hedera/basket.js @@ -0,0 +1,48 @@ + +module.exports = class { + constructor(app) { + this.app = app; + let orderId = localStorage.getItem('hederaBasket'); + if (orderId) orderId = parseInt(orderId); + this.orderId = orderId; + } + async check(orderId) { + const resultSet = await this.app.conn.execQuery( + 'CALL myOrder_checkConfig(#id)', + {id: orderId} + ); + 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; + } + } + 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')); + } + } + static unload() { + localStorage.removeItem('hederaBasket'); + } +}; + diff --git a/js/hedera/form.js b/js/hedera/form.js index 518cb3f9..8911fa6a 100644 --- a/js/hedera/form.js +++ b/js/hedera/form.js @@ -7,6 +7,7 @@ module.exports = new Class({ ,initialize(gui) { this.gui = gui; + this.app = gui.app; this.conn = gui.conn; this.hash = gui.hash; } diff --git a/js/hedera/hedera.js b/js/hedera/hedera.js index 5389daea..ab76578e 100644 --- a/js/hedera/hedera.js +++ b/js/hedera/hedera.js @@ -10,6 +10,6 @@ Hedera = module.exports = { ,Report : require('./report') ,App : require('./app') ,Tpv : require('./tpv') - ,BasketChecker : require('./basket-checker') + ,Basket : require('./basket') }; 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