0
1
Fork 0
hedera-web-mindshore/usr/share/hedera-web/modules/order/order.js

176 lines
3.8 KiB
JavaScript
Executable File

Vn.Order = new Class
({
Extends: Vn.Module
,orderId: null
,currentStep: null
,activate: function ()
{
// Configuring columns
var amount = this.get ('column-amount');
amount.on ('changed', this.amountChanged.bind (this));
amount.renderer = this.amountRender;
this.get ('column-subtotal').renderer = this.subtotalRender.bind (this);
this.get ('stems').renderer = this.stemsRender.bind (this);
this.get ('order-total').func = this.subtotal;
// Connecting buttons events
Vn.get ('delete-order').addEventListener ('click', this.deleteClicked.bind (this));
Vn.get ('go-catalog').addEventListener ('click', this.catalogClicked.bind (this));
Vn.get ('checkout-button').addEventListener ('click', this.checkoutClicked.bind (this));
Vn.get ('go-basket').addEventListener ('click', this.basketClicked.bind (this));
Vn.get ('confirm-button').addEventListener ('click', this.confirmClicked.bind (this));
// Loading order
this.orderId = this.get ('order-id');
if (!this.orderId.value)
{
var orderId = Vn.Cookie.getInt ('order');
if (!orderId)
{
var sql = 'INSERT INTO order_view (date_send) VALUES (CURDATE());'
+'SELECT LAST_INSERT_ID();';
this.conn.execQuery (sql, this.orderCreated.bind (this));
}
else
this.orderId.value = orderId;
}
this.showStep ('basket-step');
}
,amountRender: function (renderer, form)
{
var amount = form.get ('amount');
var grouping = form.get ('grouping');
if (amount && grouping)
renderer.value = amount / grouping;
else
renderer.value = null;
}
,amountChanged: function (renderer, row, newValue)
{
var model = this.get ('order-rows');
model.set (row, 'amount', newValue * model.get (row, 'grouping'));
}
,stemsRender: function (renderer, form)
{
if (form.get ('amount') > form.get ('available'))
renderer.td.className = 'available-exceeded';
else
renderer.td.className = '';
}
,subtotalRender: function (renderer, form)
{
renderer.value = this.subtotal (form);
}
,subtotal: function (form)
{
return form.get ('amount') * form.get ('price')
* ((100 - form.get ('discount')) / 100);
}
,availableRender: function (renderer, form)
{
if (form.get ('amount') > form.get ('avail'))
renderer.value = 'unavailable';
else
renderer.value = 'invisible';
}
,deleteClicked: function ()
{
if (confirm (_('SureDelOrder')))
{
var gui = this.gui;
if (Vn.Cookie.getInt ('order') == this.orderId.value)
Vn.Cookie.unset ('order');
this.get ('order-form').deleteRow ();
this.hash.set ({'module': 'orders'});
}
}
,catalogClicked: function ()
{
Vn.Cookie.set ('order', this.orderId.value);
this.hash.set ({'module': 'catalog'});
}
,showStep: function (stepId)
{
if (this.currentStep)
this.currentStep.style.display = 'none';
this.currentStep = Vn.get (stepId);
this.currentStep.style.display = 'inline';
}
,checkoutClicked: function ()
{
this.showStep ('checkout-step');
}
,basketClicked: function ()
{
this.showStep ('basket-step');
}
,confirmClicked: function ()
{
if (!confirm (_('SureConfirmOrder')))
return;
var query = 'CALL order_confirm (#order)';
var batch = new Sql.Batch ();
batch.addParam ('order', this.orderId);
this.conn.execQuery (query, this.confirmDone.bind (this), batch);
}
,confirmDone: function (resultSet)
{
if (resultSet.fetchResult ())
{
Vn.Cookie.unset ('order');
this.hash.set ({'module': 'orders'});
alert (_('OrderConfirmed'));
}
else
{
this.showStep ('basket-step');
this.get ('order-rows').refresh ();
}
}
,orderCreated: function (resultSet)
{
var insertOk = resultSet.fetchResult ();
var orderId = resultSet.fetchValue ();
if (insertOk && orderId)
{
this.orderId.value = orderId;
Vn.Cookie.set ('order', orderId);
}
else
this.hash.set ({'module': 'orders'});
}
});