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