1765 lines
62 KiB
JavaScript
1765 lines
62 KiB
JavaScript
window.OrderModulDefault={
|
|
actionFunction: function () {},
|
|
}
|
|
class DataModelOrder extends DataModel{
|
|
|
|
/*
|
|
* Constructor
|
|
*/
|
|
constructor (data,options) {
|
|
super(data,options)
|
|
if(typeof this.productSelected ==="undefined"){
|
|
this.productSelected={};
|
|
}
|
|
if(typeof this.productComment ==="undefined"){
|
|
this.productComment={};
|
|
}
|
|
console.log(this.constructor.name+' constructor called');
|
|
};
|
|
};
|
|
window.DataModelOrder=DataModelOrder;
|
|
|
|
window.Stepper=function () {
|
|
|
|
/*
|
|
* Variables accessible
|
|
* in the class
|
|
*/
|
|
let Opts = {
|
|
complete: ['supplier'],
|
|
available: ['supplier', 'parameter', 'productSelect', 'invoice', 'send'],
|
|
enable: ['supplier', 'invoice'],
|
|
load: [],
|
|
excludeLoaded:['invoice','send'],
|
|
loaded: [],
|
|
active: false,
|
|
URL: {
|
|
create: '',
|
|
},
|
|
UrlData:false,
|
|
onAfterLoad:function () {},
|
|
onAfterActivate:function () {},
|
|
autoCallback:{
|
|
'invoice':{
|
|
onAfterActivate:function () {},
|
|
},
|
|
'send':{
|
|
onAfterActivate:function () {},
|
|
},
|
|
},
|
|
nowLoaded:false,
|
|
|
|
};
|
|
|
|
let root=this;
|
|
/*
|
|
* Constructor
|
|
*/
|
|
this.construct = function (options) {
|
|
$.extend(Opts, options);
|
|
};
|
|
|
|
this.getOpts=function(){
|
|
return Opts;
|
|
}
|
|
this.setOpts=function(options){
|
|
$.extend(Opts, options);
|
|
}
|
|
|
|
|
|
|
|
this.init=function (options){
|
|
$.extend(Opts, options);
|
|
|
|
debug(Opts);
|
|
$('.step').each(function(){
|
|
let stepName=$(this).data('stepname');
|
|
if(Opts.complete.includes(stepName)){
|
|
root.setCompleted(stepName);
|
|
}
|
|
if(Opts.enable.includes(stepName)){
|
|
root.setEnabled(stepName);
|
|
}
|
|
if(Opts.load.includes(stepName)){
|
|
root.loadStepContent(stepName);
|
|
}
|
|
|
|
if(Opts.active===stepName){
|
|
root.setActive(stepName);
|
|
}
|
|
});
|
|
root.bindClickAction();
|
|
}
|
|
|
|
this.bindClickAction=function (){
|
|
let stepClickButtons=$('.stepClick');
|
|
stepClickButtons.off('click');
|
|
stepClickButtons.on('click',root.stepClick);
|
|
|
|
}
|
|
|
|
this.setCompleted=function (stepName){
|
|
console.log(stepName+' completed');
|
|
$('.step[data-stepName="'+stepName+'"]').addClass('completed');
|
|
}
|
|
|
|
this.unsetCompleted=function (stepName){
|
|
console.log(stepName+' Uncompleted');
|
|
$('.step[data-stepName="'+stepName+'"]').removeClass('completed');
|
|
Opts.complete=arrayRemove(Opts.complete,stepName);
|
|
}
|
|
|
|
this.unsetEnabled=function (stepName){
|
|
console.log(stepName+' Un enabled');
|
|
$('.click'+stepName).contents().unwrap();
|
|
Opts.enable=arrayRemove(Opts.enable,stepName);
|
|
}
|
|
this.setEnabled=function (stepName){
|
|
console.log(stepName+' enabled');
|
|
let stepItem=$('.step[data-stepName="'+stepName+'"]');
|
|
stepItem.html('<a class="stepClick click'+stepName+'" data-stepName="'+stepName+'" href="#">'+stepItem.html()+'</a>');
|
|
root.bindClickAction();
|
|
//$('.stepClick').click(root.stepClick);
|
|
|
|
}
|
|
|
|
this.addEnabled=function(stepName){
|
|
if(!Opts.enable.includes(stepName)){
|
|
Opts.enable.push(stepName);
|
|
}
|
|
root.setEnabled(stepName);
|
|
}
|
|
|
|
this.addCompleted=function(stepName){
|
|
if(!Opts.complete.includes(stepName)){
|
|
Opts.complete.push(stepName);
|
|
}
|
|
root.setCompleted(stepName);
|
|
root.bindClickAction();
|
|
}
|
|
|
|
|
|
this.loadStepContent=function (stepName){
|
|
let data={'type':stepName};
|
|
$.extend(data, Opts.UrlData);
|
|
|
|
$.ajax({
|
|
async: true,
|
|
type: "GET",
|
|
url: Opts.URL.create,
|
|
data: data,
|
|
cache: false,
|
|
success: function(result)
|
|
{
|
|
let container=$('.SC'+stepName.capitalize());
|
|
if($.inArray(stepName,Opts.excludeLoaded)==-1){
|
|
Opts.loaded.push(stepName);
|
|
}else{
|
|
console.log('excluded View');
|
|
}
|
|
container.html(result);
|
|
if(Opts.nowLoaded){
|
|
Opts.nowLoaded(stepName);
|
|
}
|
|
Opts.onAfterLoad();
|
|
}
|
|
});
|
|
}
|
|
|
|
this.clearLoaded=function () {
|
|
Opts.loaded=['supplier'];
|
|
$('.stepContainer').each(function(){
|
|
/*
|
|
console.log(this.classList);
|
|
console.log(this.classList.contains('SCSupplier'));
|
|
console.log($(this).attr('class'));
|
|
*/
|
|
if(!this.classList.contains('SCSupplier')){
|
|
$(this).html('');
|
|
}
|
|
});
|
|
}
|
|
|
|
this.setActiveFinish=function(stepName){
|
|
let container=$('.SC'+stepName.capitalize());
|
|
if(stepName==='productSelect'){
|
|
$('.containerStepper').addClass('activeSideBar');
|
|
}else{
|
|
$('.containerStepper').removeClass('activeSideBar');
|
|
}
|
|
debug('setActiveFinish show:'+stepName);
|
|
container.show();
|
|
Opts.nowLoaded=false;
|
|
root.active=stepName;
|
|
Opts.onAfterActivate();
|
|
if(typeof Opts.autoCallback[stepName]!=='undefined' ){
|
|
Opts.autoCallback[stepName].onAfterActivate();
|
|
}
|
|
}
|
|
this.setActive=function(stepName){
|
|
$('.stepContainer').hide();
|
|
if(!Opts.loaded.includes(stepName)){
|
|
root.loadStepContent(stepName);
|
|
Opts.nowLoaded=this.setActiveFinish;
|
|
}else{
|
|
this.setActiveFinish(stepName);
|
|
}
|
|
}
|
|
|
|
this.stepClick=function(event){
|
|
event.preventDefault();
|
|
let stepName=$(event.currentTarget).data('stepname');
|
|
console.log('setActive:'+stepName);
|
|
root.setActive(stepName);
|
|
}
|
|
}
|
|
|
|
window.OrderModule = function () {
|
|
|
|
/*
|
|
* Variables accessible
|
|
* in the class
|
|
*/
|
|
let Opts = {
|
|
testMode: false,
|
|
needStepper:true,
|
|
CSSSelectorForm:'.orderParameterForm',
|
|
defaultDeliveryDate:'',
|
|
dataSyncPauseTime:500,
|
|
token:null,
|
|
URL: {
|
|
root:null,
|
|
getDataTableContentProductList:null,
|
|
checkReadyToSend:null,
|
|
index:null,
|
|
show:null,
|
|
edit:null,
|
|
create: null,
|
|
store: null,
|
|
update:null,
|
|
destroy:null,
|
|
toggleFavorites:null,
|
|
},
|
|
};
|
|
|
|
const PublicVar = {};
|
|
let PublicVar2 = {'asd': '21'};
|
|
let ApiToken = null;
|
|
let Order=null;
|
|
let root = this;
|
|
let viewInicialized=[];
|
|
|
|
this.setOpts = function (options) {
|
|
$.extend(Opts, options);
|
|
}
|
|
|
|
this.getOpts = function () {
|
|
return Opts;
|
|
}
|
|
this.clickOrderEdit=function (data){
|
|
debug('clickEdit');
|
|
debug(data);
|
|
let ajaxUrl=Opts.URL.edit.replace('%id%',data.id);
|
|
APP.loadMainContent(ajaxUrl);
|
|
/* let ajaxData={};
|
|
ajaxData._token=Opts.token;
|
|
$.extend(ajaxData,Order);
|
|
let ajaxUrl=Opts.URL.edit.replace('%id%',data.id);
|
|
$.ajax({
|
|
url: ajaxUrl,
|
|
method:'GET',
|
|
data:ajaxData,
|
|
success:function (response) {
|
|
if(response.success){
|
|
let orderData=response.data;
|
|
orderData.supplierId=orderData.supplier_id;
|
|
delete(orderData.supplier_id);
|
|
root.initOrder(orderData);
|
|
root.initStepper();
|
|
//root.afterOrderSetSupplierOk(data.data);
|
|
}
|
|
}
|
|
});*/
|
|
|
|
|
|
}
|
|
this.afterOrderDeleted=function (data){
|
|
if(data.success==true){
|
|
debug('Order delete success');
|
|
APP.loadMainContent(Opts.URL.index);
|
|
}else{
|
|
Toast.create({ title: "Error deleted !", message: '', status: TOAST_STATUS.DANGER, timeout: 5000 });
|
|
}
|
|
}
|
|
this.clickOrderDeleteConfirmed=function (event){
|
|
debug('clickOrderDeleteConfirmed');
|
|
debug(event);
|
|
debug(event.data);
|
|
$('#dialogModal').modal('hide');
|
|
let ajaxData={};
|
|
ajaxData._token=Opts.token;
|
|
let ajaxUrl=Opts.URL.destroy.replace('%id%',event.data.id);
|
|
$.ajax({
|
|
url:ajaxUrl,
|
|
data:ajaxData,
|
|
method:"DELETE",
|
|
success:root.afterOrderDeleted,
|
|
//error:ajaxErrorHandler
|
|
});
|
|
|
|
}
|
|
this.initViewOrderSelect=function (){
|
|
debug('called initViewOrderSelect ');
|
|
$('.ordersSelectTable button').off('click');
|
|
$('.ordersSelectTable button').on('click',function (){
|
|
let action=$(this).data('action');
|
|
let orderId=$($(this).closest('tr')[0]).data('orderid');
|
|
debug(action);
|
|
debug(orderId);
|
|
|
|
if(action=='delete'){
|
|
$('#dialogModal').on('show.bs.modal', function (event) {
|
|
// If necessary, you could initiate an AJAX request here (and then do the updating in a callback).
|
|
// Update the modal's content. We'll use jQuery here, but you could use a data binding library or other methods instead.
|
|
var modal = $(this);
|
|
modal.find('.modal-title').text('Megerősítés ');
|
|
modal.find('.modal-body').text('Biztosan törli a megrendelést?');
|
|
modal.find('.buttonYes').off('click');
|
|
modal.find('.buttonYes').on('click',{id:orderId},root.clickOrderDeleteConfirmed);
|
|
});
|
|
$('#dialogModal').modal('show');
|
|
}else{
|
|
root.clickOrderEdit({id:orderId});
|
|
}
|
|
});
|
|
$('.buttonNew').off('click');
|
|
$('.buttonNew').on('click',function (){
|
|
APP.loadMainContent(Opts.URL.index,'force=true');
|
|
});
|
|
|
|
}
|
|
this.initStepper=function (){
|
|
debug(Order.getData());
|
|
viewInicialized=[];
|
|
$('.statusNamePlace').text('Nincs elküldve');
|
|
$('.statusNamePlace').addClass('statusBlink');
|
|
root.setDeliveryDate('-');
|
|
root.setSupplier('-');
|
|
|
|
let unEnabled=['parameter', 'productSelect', 'invoice', 'send'];
|
|
$.each(unEnabled,function (index,value) {
|
|
root.Stepper.unsetEnabled(value);
|
|
root.Stepper.unsetCompleted(value);
|
|
});
|
|
|
|
debug(root.Stepper.getOpts()['available']);
|
|
debug(Order.getData()['orderStatus']);
|
|
|
|
let stepActive='supplier';
|
|
let stepComplete=['supplier'];
|
|
let stepEnable=[];
|
|
let stepOnAfterActivate=function (){};
|
|
|
|
let avalaibleSteps=root.Stepper.getOpts()['available'];
|
|
let stepUrlData=false;
|
|
let stepAutoCallback=[];
|
|
for (let stepName of avalaibleSteps) {
|
|
stepOnAfterActivate=this['initView'+stepName.capitalize()];
|
|
let item={};
|
|
item['onAfterActivate']=stepOnAfterActivate;
|
|
stepAutoCallback[stepName]=item;
|
|
}
|
|
debug(stepAutoCallback);
|
|
debug(Order.getData()['id']);
|
|
if(Order.getData()['id']>0){
|
|
debug('hajra');
|
|
debug(Order.getData());
|
|
if(Order.getData()['deliveryDate']){
|
|
root.setDeliveryDate(Order.getData()['deliveryDate']);
|
|
/*
|
|
@todo: weekly-t beallitani
|
|
*/
|
|
}
|
|
if(Order.getData()['supplierName']){
|
|
root.setSupplier(Order.getData()['supplierName']);
|
|
}
|
|
stepUrlData={'supplierId':Order.supplierId,id:Order.id};
|
|
for (let stepName of avalaibleSteps) {
|
|
console.log(stepName);
|
|
stepComplete.push(stepName);
|
|
stepEnable.push(stepName);
|
|
if(Order.getData()['orderStatus']==stepName){
|
|
stepActive=stepName;
|
|
/*
|
|
debug('initView'+stepName.capitalize());
|
|
if(stepName!=='invoice' && stepName!=='send'){
|
|
stepOnAfterActivate=this['initView'+stepName.capitalize()];
|
|
}else{
|
|
stepOnAfterActivate=function (){};
|
|
}
|
|
*/
|
|
break;
|
|
}
|
|
}
|
|
|
|
/*
|
|
//refactored for loop
|
|
var BreakException = {};
|
|
try {
|
|
avalaibleSteps.forEach(function(stepName) {
|
|
console.log(stepName);
|
|
stepComplete.push(stepName);
|
|
stepEnable.push(stepName);
|
|
if(Order.getData()['orderStatus']==stepName){
|
|
stepActive=stepName;
|
|
throw BreakException;
|
|
}
|
|
|
|
});
|
|
} catch (e) {
|
|
if (e !== BreakException) throw e;
|
|
}*/
|
|
|
|
}
|
|
|
|
root.Stepper.init({
|
|
complete:stepComplete,
|
|
enable:stepEnable,
|
|
loaded:[],
|
|
active: stepActive,
|
|
URL: {
|
|
create: Opts.URL.create,
|
|
},
|
|
UrlData:stepUrlData,
|
|
onAfterActivate:stepOnAfterActivate,
|
|
autoCallback: stepAutoCallback,
|
|
/*{
|
|
invoice: {
|
|
onAfterActivate:root.initViewInvoice
|
|
},
|
|
send: {
|
|
onAfterActivate:root.initViewSend
|
|
},
|
|
|
|
}*/
|
|
});
|
|
}
|
|
|
|
this.initOrder=function (data){
|
|
Order=new DataModelOrder(data);
|
|
}
|
|
|
|
this.init = function (options) {
|
|
debug('OrderModul init called');
|
|
$.extend(Opts, window.OrderModulDefault, options);
|
|
Order=new DataModelOrder();
|
|
if(Opts.needStepper){
|
|
if (typeof this.Stepper == 'undefined') {
|
|
this.Stepper=new Stepper();
|
|
}
|
|
}
|
|
if(Opts.testMode){
|
|
return root.testMode();
|
|
}
|
|
}
|
|
|
|
this.setSupplier=function (supplierName,supplierId){
|
|
if(supplierName){
|
|
$('.supplierNamePlace').text(supplierName);
|
|
}
|
|
if(supplierId){
|
|
Order.setData({supplierId:supplierId});
|
|
root.Stepper.setOpts({'UrlData':{'supplierId':supplierId}});
|
|
}
|
|
}
|
|
this.setDeliveryDate=function (dateText,dateTextTo){
|
|
let dateTextHuman=dateText.replaceAll('-','.')+'.';
|
|
if(dateTextHuman.length<5){
|
|
$('.deliveryDatePlace').text(dateText);
|
|
return;
|
|
}
|
|
if(dateTextTo){
|
|
dateTextHuman+=' - '+dateTextTo.replaceAll('-','.')+'.';
|
|
}
|
|
|
|
$(Opts.CSSSelectorForm+' .selectedDateText').text(dateTextHuman);
|
|
$('.deliveryDatePlace').text(dateTextHuman);
|
|
$(Opts.CSSSelectorForm+' input[name="deliveryDate"]').val(dateText);
|
|
}
|
|
|
|
|
|
|
|
this.getData=function (){
|
|
return Order;
|
|
}
|
|
|
|
|
|
this.setSupplierCompleted=function () {
|
|
console.log('bingo');
|
|
root.initViewParameter()
|
|
}
|
|
|
|
this.afterOrderSetSupplierOk=function (data) {
|
|
Toast.create({ title: "Supplier selected !", message: data.supplier.name , status: TOAST_STATUS.INFO, timeout: 5000 });
|
|
root.setSupplier(data.supplier.name,data.supplier.id);
|
|
Order.setData({id:data.id});
|
|
root.Stepper.setOpts({'UrlData':{'supplierId':Order.supplierId,id:Order.id}});
|
|
//root.Stepper.setOpts({onAfterLoad:root.setSupplierCompleted})
|
|
root.Stepper.setEnabled('parameter');
|
|
root.Stepper.addCompleted('parameter');
|
|
root.Stepper.setCompleted('parameter');
|
|
root.Stepper.setActive('parameter');
|
|
}
|
|
|
|
|
|
this.initViewSupplier=function (){
|
|
debug('call initViewSupplier');
|
|
root.Stepper.setOpts({onAfterLoad:function (){}});
|
|
$('.supplierItem').off('click');
|
|
$('.supplierItem').on('click',function(event){
|
|
console.log(Order.getData());
|
|
|
|
event.preventDefault();
|
|
let supplierId=$(event.currentTarget).data('id');
|
|
let supplierName=$(event.currentTarget).find('h5.card-title').text();
|
|
if(typeof Order.supplierId=='undefined'){
|
|
//new order
|
|
|
|
let ajaxData={};
|
|
ajaxData._token=Opts.token;
|
|
ajaxData.supplierId=supplierId;
|
|
ajaxData.storeType='supplierSelect';
|
|
$.extend(ajaxData,Order);
|
|
$.ajax({
|
|
url: Opts.URL.store,
|
|
method:'POST',
|
|
data:ajaxData,
|
|
success:function (data) {
|
|
if(data.success){
|
|
root.afterOrderSetSupplierOk(data.data);
|
|
}
|
|
}
|
|
});
|
|
//Order.setData({supplierId:supplierId});
|
|
}else{
|
|
//ide kellene egy jo kis kerdes
|
|
if(Order.supplierId!=supplierId){
|
|
Toast.create({ title: "Supplier change to!", message: supplierName, status: TOAST_STATUS.WARNING, timeout: 5000 });
|
|
root.Stepper.clearLoaded();
|
|
Order=new DataModelOrder();
|
|
//Order.setData({supplierId:supplierId});
|
|
}
|
|
}
|
|
|
|
return;
|
|
console.log('-----------');
|
|
console.log(root.Stepper.getOpts());
|
|
console.log('-----------');
|
|
|
|
//$('.supplierNamePlace').text(supplierName);
|
|
root.setSupplier(supplierName,supplierId);
|
|
console.log(supplierName)
|
|
//@todo:ide kell egy mentes!
|
|
//@todo:mentes eredemenyekeppen lehet valtani
|
|
event.preventDefault();
|
|
root.Stepper.setOpts({onAfterLoad:root.setSupplierCompleted})
|
|
root.Stepper.setEnabled('parameter');
|
|
root.Stepper.addCompleted('parameter');
|
|
root.Stepper.setCompleted('parameter');
|
|
root.Stepper.setActive('parameter');
|
|
|
|
|
|
});
|
|
}
|
|
|
|
this.checkContactNameField=function () {
|
|
let CSSSelectorForm='.orderParameterForm';
|
|
let node=$(CSSSelectorForm+' input[name=contactName]');
|
|
if(node.val().length<2){
|
|
node.removeClass('is-valid');
|
|
node.addClass('is-invalid');
|
|
return false;
|
|
}else{
|
|
node.addClass('is-valid');
|
|
node.removeClass('is-invalid');
|
|
return true;
|
|
}
|
|
}
|
|
|
|
|
|
|
|
this.sendOrderDataToServer=function (updateType,callback,errorCallback) {
|
|
let ajaxData= {};
|
|
let ajaxUrl=Opts.URL.store;
|
|
let ajaxMethod="POST";
|
|
if(Order.id){
|
|
ajaxUrl=Opts.URL.update.replace('%id%',Order.id);
|
|
//ajaxMethod="PUT";
|
|
//ajaxData=new FormData($(CSSSelectorForm)[0]);
|
|
ajaxData._method='PUT';
|
|
}
|
|
ajaxData._token=Opts.token;
|
|
ajaxData.updateType=updateType;
|
|
$.extend(ajaxData,Order);
|
|
debug(Order);
|
|
debug(ajaxData);
|
|
debug('ajaxUrl:'+ajaxUrl);
|
|
ajaxData=jsonToFormData(ajaxData);
|
|
$.ajax({
|
|
url:ajaxUrl,
|
|
data:ajaxData,
|
|
type:ajaxMethod,
|
|
contentType:false,
|
|
processData: false,
|
|
success:function (data) {
|
|
debug('ajax returned data');
|
|
debug(data);
|
|
if(data.success){
|
|
//root.afterOrderSetSupplierOk(data.data);
|
|
callback(data);
|
|
}
|
|
},
|
|
error: function (xhr, ajaxOptions, thrownError) {
|
|
ajaxErrorHandler(xhr, ajaxOptions, thrownError);
|
|
if(typeof errorCallback!='undefined'){
|
|
errorCallback(xhr.responseJSON);
|
|
}
|
|
},
|
|
|
|
});
|
|
|
|
}
|
|
this.afterOrderSetParameterOk=function (data) {
|
|
debug('called afterOrderSetParameterOk');
|
|
root.Stepper.setOpts({'UrlData':{'supplierId':Order.supplierId,'id':Order.id}});
|
|
//root.Stepper.setOpts({onAfterLoad:root.setParameterCompleted})
|
|
root.Stepper.setEnabled('productSelect');
|
|
root.Stepper.addCompleted('productSelect');
|
|
root.Stepper.setCompleted('productSelect');
|
|
root.Stepper.setActive('productSelect');
|
|
}
|
|
this.selectCurrentWeek = function() {
|
|
console.error('selectCurrentWeek');
|
|
console.error($('.ui-datepicker').find('.ui-datepicker-current-day a'));
|
|
$('.ui-datepicker').find('.ui-datepicker-current-selected-weekday a').addClass('ui-state-active')
|
|
}
|
|
this.weekHover = function() {
|
|
console.error('hover Active');
|
|
$('.ui-datepicker-calendar tr').off('mousemove');
|
|
$('.ui-datepicker-calendar tr').off('mouseleave');
|
|
|
|
$('.ui-datepicker-calendar tr').on('mousemove', function() { $(this).find('td a').addClass('ui-state-hover'); });
|
|
$('.ui-datepicker-calendar tr').on('mouseleave', function() { $(this).find('td a').removeClass('ui-state-hover'); });
|
|
|
|
}
|
|
this.weekHoverSlow = function() {
|
|
console.error('weekHoverSlow');
|
|
if($('.ui-datepicker-calendar tr').length<1){
|
|
setTimeout(root.weekHoverSlow, 1);
|
|
return;
|
|
}
|
|
root.weekHover();
|
|
}
|
|
this.initDatePicker=function (type) {
|
|
console.error('asdasdadad');
|
|
console.log('tipus' + type);
|
|
let CSSSelectorForm = '.orderParameterForm';
|
|
let startDate=new Date('1900-01-01');
|
|
let endDate=new Date('1900-01-02');
|
|
|
|
$(CSSSelectorForm + ' .datePicker').datepicker("destroy");
|
|
|
|
if (type == 'weekly') {
|
|
$(CSSSelectorForm + ' .datePicker').datepicker({
|
|
showOtherMonths: true,
|
|
selectOtherMonths: true,
|
|
showWeek: true,
|
|
dateFormat: 'yy-mm-dd',
|
|
firstDay: 1,
|
|
minDate: new Date(),
|
|
afterShow: function (dateText, inst) {
|
|
root.weekHover();
|
|
root.selectCurrentWeek();
|
|
},
|
|
onSelect: function (dateText, inst) {
|
|
let date = $(this).datepicker('getDate');
|
|
startDate = new getMonday(date);
|
|
endDate = new Date(date.getFullYear(), date.getMonth(), date.getDate() - date.getDay() + 7);
|
|
root.setDeliveryDate($.datepicker.formatDate( 'yy-mm-dd',startDate),$.datepicker.formatDate( 'yy-mm-dd',endDate))
|
|
},
|
|
beforeShow: function () {
|
|
console.group('beforeShow')
|
|
console.log(startDate);
|
|
console.log(endDate);
|
|
//root.weekHoverSlow();
|
|
console.groupEnd();
|
|
},
|
|
beforeShowDay: function(date) {
|
|
console.group('beforeShowDay');
|
|
console.log(date.toLocaleDateString('hu-Hu'));
|
|
let cssClass = '';
|
|
if(date >= startDate && date <= endDate){
|
|
console.error(date.toLocaleDateString('hu-Hu'));
|
|
cssClass = 'ui-datepicker-current-selected-weekday';
|
|
//cssClass = 'ui-state-active';
|
|
}
|
|
console.log(cssClass);
|
|
console.groupEnd();
|
|
|
|
return [true, cssClass];
|
|
},
|
|
onChangeMonthYear: function(year, month, inst) {
|
|
//root.selectCurrentWeek();
|
|
}
|
|
});
|
|
|
|
} else {
|
|
$(CSSSelectorForm + ' .datePicker').datepicker({
|
|
dateFormat: 'yy-mm-dd',
|
|
minDate: new Date(),
|
|
onSelect: function (dateText) {
|
|
$(CSSSelectorForm + ' .selectedDateText').text(dateText);
|
|
$('.deliveryDatePlace').text(dateText.replaceAll('-', '.') + '.');
|
|
$(CSSSelectorForm + ' input[name="deliveryDate"]').val(dateText);
|
|
|
|
},
|
|
});
|
|
|
|
}
|
|
}
|
|
this.callChangeOrderType=function(){
|
|
console.log(this);
|
|
console.log(this.value);
|
|
root.initDatePicker(this.value);
|
|
//enum('daily', 'weekly')
|
|
/*let CSSSelectorForm='.orderParameterForm';
|
|
let node=$(CSSSelectorForm+' input[name=contactName]');
|
|
if(node.val().length<2){
|
|
node.removeClass('is-valid');
|
|
node.addClass('is-invalid');
|
|
return false;
|
|
}else{
|
|
node.addClass('is-valid');
|
|
node.removeClass('is-invalid');
|
|
return true;
|
|
}
|
|
*/
|
|
}
|
|
|
|
this.initViewParameter=function () {
|
|
debug('call initViewParameter');
|
|
root.Stepper.setOpts({onAfterLoad:function (){}});
|
|
let CSSSelectorForm='.orderParameterForm';
|
|
$(CSSSelectorForm+' .datePickerClick').click(function(){
|
|
$(CSSSelectorForm+' .datePicker').datepicker('show');
|
|
});
|
|
|
|
$(CSSSelectorForm+' .orderParameterDeliveryAddress').select2({}).show();
|
|
$(CSSSelectorForm+' input[name=contactName]').off('blur');
|
|
$(CSSSelectorForm+' input[name=contactName]').off('keyup');
|
|
$(CSSSelectorForm+' input[name=contactName]').on('blur',root.checkContactNameField);
|
|
$(CSSSelectorForm+' input[name=contactName]').on('keyup',root.checkContactNameField);
|
|
|
|
$(CSSSelectorForm+' input[name=orderType]').off('change');
|
|
$(CSSSelectorForm+' input[name=orderType]').on('change',root.callChangeOrderType);
|
|
|
|
|
|
$(CSSSelectorForm+' .orderParameterNextButton').off('click');
|
|
if(Order.getData()['id']>0){
|
|
if(Order.getData()['orderType']=='weekly'){
|
|
root.initDatePicker(Order.getData()['orderType']);
|
|
$(CSSSelectorForm+" input[name=orderType][value=" + Order.getData()['orderType'] + "]").prop('checked', true);
|
|
|
|
const endDate = new Date(Order.getData()['deliveryDate']);
|
|
endDate.setDate(endDate.getDate() + 6);
|
|
root.setDeliveryDate(Order.getData()['deliveryDate'],$.datepicker.formatDate( 'yy-mm-dd',endDate));
|
|
root.initDatePicker('weekly');
|
|
}else{
|
|
if(Order.getData()['deliveryDate']){
|
|
root.setDeliveryDate(Order.getData()['deliveryDate']);
|
|
}
|
|
root.initDatePicker('daily');
|
|
}
|
|
|
|
|
|
|
|
if(Order.getData()['contactName']){
|
|
$(CSSSelectorForm+' input[name=contactName]').val(Order.getData()['contactName']);
|
|
}
|
|
if(Order.getData()['note']){
|
|
$(CSSSelectorForm+' textarea[name=note]').val(Order.getData()['note']);
|
|
}
|
|
if(Order.getData()['deliveryAddressId']){
|
|
console.log($(CSSSelectorForm+' select[name=deliveryAddressId]'));
|
|
$(CSSSelectorForm+' select[name=deliveryAddressId]').val(Order.getData()['deliveryAddressId']);
|
|
}
|
|
if(Order.getData()['customNotificationEmail']){
|
|
console.log($(CSSSelectorForm+' select[name=customNotificationEmail]'));
|
|
$(CSSSelectorForm+' select[name=customNotificationEmail]').val(Order.getData()['customNotificationEmail']);
|
|
}
|
|
}else{
|
|
root.initDatePicker('daily');
|
|
}
|
|
|
|
$(CSSSelectorForm+' .orderParameterDeliveryAddress').select2({}).show();
|
|
$(CSSSelectorForm+' .orderParameterCustomNotificationEmail').select2({}).show();
|
|
|
|
$(CSSSelectorForm).submit(function(event){
|
|
|
|
event.preventDefault();
|
|
if ($(CSSSelectorForm)[0].checkValidity() === false) {
|
|
debug('validaton false');
|
|
event.stopPropagation();
|
|
return;
|
|
} else {
|
|
debug('validaton ok');
|
|
//do your ajax submition here
|
|
}
|
|
$('.deliveryDatePlace').text($(CSSSelectorForm+' input[name=deliveryDate]').val().replaceAll('-','.')+'.');
|
|
|
|
Order.setData({
|
|
contactName:$(CSSSelectorForm+' input[name=contactName]').val(),
|
|
note:$(CSSSelectorForm+' textarea[name=note]').val(),
|
|
orderType:$(CSSSelectorForm+' input:checked[name=orderType]').val(),
|
|
deliveryDate:$(CSSSelectorForm+' input[name=deliveryDate]').val(),
|
|
deliveryAddressId:$(CSSSelectorForm+' select[name=deliveryAddressId]').val(),
|
|
deliveryAddress:$(CSSSelectorForm+' select[name=deliveryAddress]').val(),
|
|
customNotificationEmail:$(CSSSelectorForm+' select[name=customNotificationEmail]').val(),
|
|
});
|
|
console.group('parameter form submit')
|
|
console.error($(CSSSelectorForm+' input:checked[name=orderType]').val());
|
|
console.error($(CSSSelectorForm+' input[name=deliveryDate]').val());
|
|
debug(Order.getData());
|
|
console.groupEnd();
|
|
root.sendOrderDataToServer('parameter',root.afterOrderSetParameterOk);
|
|
});
|
|
|
|
}
|
|
this.blank=function (){};
|
|
this.setParameterCompleted=function () {
|
|
console.log('setParameterCompleted called');
|
|
root.Stepper.setOpts({onAfterLoad:function (){}});
|
|
//root.initViewProductSelect()
|
|
}
|
|
|
|
this.bindRowFavoritesAction = function () {
|
|
$('.buttonItemFavorites').off('click');
|
|
$('.buttonItemFavorites').on('click', function () {
|
|
let productId = $(this).data('id');
|
|
console.log(productId);
|
|
|
|
let ajaxUrl=Opts.URL.toggleFavorites.replace('%id%',productId);
|
|
let ajaxData={};
|
|
ajaxData._token=Opts.token;
|
|
let button=this;
|
|
console.log(ajaxUrl);
|
|
$.ajax({
|
|
url: ajaxUrl,
|
|
method:'POST',
|
|
data:ajaxData,
|
|
success:function (response) {
|
|
if(response.success){
|
|
if(response.status){
|
|
console.log('true');
|
|
$(button).addClass('btn-warning');
|
|
$(button).removeClass('btn-light');
|
|
}else{
|
|
$(button).removeClass('btn-warning');
|
|
$(button).addClass('btn-light');
|
|
console.log('false');
|
|
}
|
|
}
|
|
}
|
|
});
|
|
/*
|
|
$(this).toggleClass('btn-warning');
|
|
$(this).toggleClass('btn-light');
|
|
*/
|
|
});
|
|
}
|
|
|
|
this.bindRowDescriptionAction=function (){
|
|
$('textarea.orderItemComment').on('change',function (){
|
|
let comment=$(this).val();
|
|
let productId=$(this).data('id');
|
|
let productComment=Order.getData('productComment');
|
|
if(productComment!==null){
|
|
if(typeof productComment[productId]=='undefined' && comment.length===0){
|
|
return;
|
|
}
|
|
if(productComment[productId]===comment){
|
|
return;
|
|
}
|
|
}
|
|
productComment[productId]=comment;
|
|
if(comment.length===0){
|
|
delete Order.productComment[productId];
|
|
}
|
|
Order.productComment=productComment;
|
|
queueAjax.push(Date.now());
|
|
root.syncOrderDataToServer();
|
|
});
|
|
}
|
|
|
|
this.productSelectDatatablesRowFormatter=function (d) {
|
|
// `d` is the original data object for the row
|
|
/**
|
|
@todo: felszedni es updatelni az adott termek memojat az orderban
|
|
*/
|
|
console.group('productSelectDatatablesRowFormatter');
|
|
console.log(d);
|
|
let templateData=d;
|
|
templateData.comment='';
|
|
// debug(Order);
|
|
if(Order.productComment && Order.productComment!==null){
|
|
debug(typeof Order.productComment[d.id]);
|
|
if(typeof Order.productComment[d.id]!='undefined' && Order.productComment[d.id].length>0){
|
|
templateData.comment=Order.productComment[d.id];
|
|
}
|
|
}
|
|
/** @typedef {boolean} d.favorites */
|
|
if(d.favorites===true){
|
|
templateData.btnFavoritesClass='btn-warning';
|
|
}else{
|
|
templateData.btnFavoritesClass='btn-light';
|
|
}
|
|
let template=$('template[data-name="orderProductSelectDetails"]').html()
|
|
templateData.weekly=false;
|
|
if(Order.getData().orderType==='weekly'){
|
|
templateData.weekly=true;
|
|
/*
|
|
|
|
templateData.weeklyDay=[
|
|
{"index":1,"name":"Hétfő"},
|
|
{"index":2,"name":"Kedd"},
|
|
{"index":3,"name":"Szerda"},
|
|
{"index":4,"name":"Csütörtök"},
|
|
{"index":5,"name":"Péntek"},
|
|
{"index":6,"name":"Szombat"},
|
|
{"index":7,"name":"Vasárnap"},
|
|
];
|
|
|
|
templateData.weeklyDay=[
|
|
{"index":2,"name":"Hétfő" },
|
|
{"name":"Kedd"},
|
|
{"name":"Szerda"},
|
|
{"name":"Csütörtök"},
|
|
{"name":"Péntek"},
|
|
{"name":"Szombat"},
|
|
{"name":"Vasárnap"}
|
|
];
|
|
*/
|
|
}
|
|
let productSelected=Order.getData('productSelected');
|
|
if(typeof productSelected[d.id]!='undefined'){
|
|
templateData.itemQuantity=productSelected[d.id];
|
|
}
|
|
console.log(['templateData',templateData]);
|
|
let oldTags=Mustache.tags;
|
|
Mustache.tags = ["~!", "!~"];
|
|
if(templateData['specification']=='false' || templateData['specification']==false){
|
|
templateData.specificationClass='d-none';
|
|
}
|
|
templateData.pictureImg='';
|
|
if(templateData['picture']=='false' || templateData['picture']==false){
|
|
templateData.pictureClass='d-none';
|
|
}else{
|
|
templateData.pictureImg='<img src= "'+templateData['picture']+'" class="productPicture" ></img>';
|
|
}
|
|
console.log('templateData',templateData);
|
|
//templateData['aa_specification']=false;
|
|
let render=Mustache.render(template,templateData);
|
|
Mustache.tags =oldTags;
|
|
console.groupEnd();
|
|
return render;
|
|
/*
|
|
solution before template
|
|
return '<table cellpadding="5" cellspacing="0" border="0" style="padding-left:50px;">'+
|
|
'<tr>'+
|
|
'<td>Info:</td>'+
|
|
'<td>'+d.note+'</td>'+
|
|
'</tr>'+
|
|
'<tr>'+
|
|
'<td>hooreyca :</td>'+
|
|
'<td><span style="padding-right: 2em;">'+d.hooreycaId+'</span>' +
|
|
|
|
'<button type="button"\n' +
|
|
' data-id="'+d.id+'"\n' +
|
|
' class="buttonItemFavorites btn '+btnFavoritesClass+'">\n' +
|
|
' <i class="bi bi-star-fill pr-2" aria-hidden="true"></i>\n' +
|
|
' Kedvenc\n' +
|
|
'</button>' +
|
|
'</td>'+
|
|
'</tr>'+
|
|
/!*
|
|
'<tr>'+
|
|
'<td>Extension number:</td>'+
|
|
'<td>'+d.extn+'</td>'+
|
|
'</tr>'+
|
|
*!/
|
|
'<tr>'+
|
|
'<td>Info:</td>'+
|
|
'<td>'+d.note+'</td>'+
|
|
'</tr>'+
|
|
'<tr>'+
|
|
'<td>Megjegyzés:</td>'+
|
|
'<td><textarea class="orderItemComment" data-id="'+d.id+'">'+comment+'</textarea></td>'+
|
|
'</tr>'+
|
|
/!*
|
|
*!/
|
|
'</table>';
|
|
*/
|
|
}
|
|
|
|
this.setDatatableHeaderText=function(text){
|
|
$('.tableHeaderText').text(text);
|
|
}
|
|
|
|
this.getTreePathName=function (node){
|
|
let res='';
|
|
let items=$(node).parents('li').toArray();
|
|
items.shift();
|
|
items.reverse();
|
|
for (const item in items) {
|
|
console.log($(items[item]).children('a.categoryItem'));
|
|
if($(items[item]).children('a.categoryItem').length>0){
|
|
res+=$(items[item]).children('a.categoryItem').text()+'/'
|
|
}
|
|
}
|
|
res+=$(node).text();
|
|
console.log(res);
|
|
return res;
|
|
}
|
|
|
|
let selectedProductGroup=null;
|
|
let dataTableSearchStr=null;
|
|
let dataTableSearchKrel=false;
|
|
|
|
this.searchProductByString=function (filterStr){
|
|
root.setDatatableHeaderText('Termékek szűrve:'+filterStr);
|
|
dataTableSearchStr=filterStr;
|
|
$('.dataTableOrderProductSelect').DataTable().ajax.reload();
|
|
}
|
|
|
|
this.clickSearchProduct=function (){
|
|
debug(this);
|
|
let filterStr=$('.sidebar-search input[name=searchValue]').val()
|
|
debug(filterStr);
|
|
root.searchProductByString(filterStr);
|
|
}
|
|
|
|
this.clickFavoritesProduct = function () {
|
|
debug('clickFavoritesProduct');
|
|
root.setDatatableHeaderText('Termékek szűrve: kedvencek');
|
|
dataTableSearchStr='**favorites**';
|
|
$('.dataTableOrderProductSelect').DataTable().ajax.reload();
|
|
}
|
|
this.clickOftenProduct = function () {
|
|
debug('clickOftenProduct');
|
|
root.setDatatableHeaderText('Termékek szűrve: gyakran vásárolt');
|
|
dataTableSearchStr='**often**';
|
|
$('.dataTableOrderProductSelect').DataTable().ajax.reload();
|
|
}
|
|
|
|
this.clickSpecialOffer = function () {
|
|
debug('clickSpecialOffer');
|
|
root.setDatatableHeaderText('Termékek szűrve: Akciós termékek');
|
|
dataTableSearchStr='**specialOffer**';
|
|
$('.dataTableOrderProductSelect').DataTable().ajax.reload();
|
|
}
|
|
|
|
|
|
|
|
|
|
this.clickLastProduct = function () {
|
|
debug('clickLastProduct');
|
|
root.setDatatableHeaderText('Termékek szűrve: utoljára vásárolt');
|
|
dataTableSearchStr='**last**';
|
|
$('.dataTableOrderProductSelect').DataTable().ajax.reload();
|
|
|
|
}
|
|
|
|
this.clickWeeklyProduct = function () {
|
|
debug('clickWeeklyProduct');
|
|
root.setDatatableHeaderText('Termékek szűrve: Heti termékek');
|
|
dataTableSearchStr='**weekly**';
|
|
$('.dataTableOrderProductSelect').DataTable().ajax.reload();
|
|
|
|
}
|
|
|
|
this.clickKrelProduct = function () {
|
|
debug('clickKrelProduct');
|
|
//root.setDatatableHeaderText('Termékek szűrve: Heti termékek');
|
|
//dataTableSearchStr='**weekly**';
|
|
//$('.dataTableOrderProductSelect').DataTable().ajax.reload();
|
|
$(this).parent().toggleClass('krelActive');
|
|
dataTableSearchKrel=!dataTableSearchKrel;
|
|
$('.dataTableOrderProductSelect').DataTable().ajax.reload();
|
|
}
|
|
|
|
this.productSelectDataTableColumnDefs=function (){
|
|
return [
|
|
{"width": "10px", "targets": 0 },
|
|
{ "className": "dt-left", "targets": 1 },
|
|
// { "width": "120px", "targets": 1 },
|
|
{ "width": "28px", "targets": 2 },
|
|
{ "width": "41px", "targets": 3 },
|
|
{ "width": "76px", "targets": 4 },
|
|
{ "width": "55px", "targets": 5 },
|
|
{ "width": "70px", "targets": 6 },
|
|
{ "width": "54px", "targets": 7 },
|
|
{ "width": "57px", "targets": 8 },
|
|
{ "width": "42px", "targets": 9 },
|
|
{ "width": "100px", "targets": 10},
|
|
{"className": "dt-center", "targets": "_all"},
|
|
];
|
|
}
|
|
this.productSelectDataTableColumn=function (){
|
|
let columnData=[
|
|
{
|
|
"className": 'details-control',
|
|
"orderable": false,
|
|
"data": null,
|
|
"defaultContent": ''
|
|
},
|
|
{ "data": "name" },
|
|
{ "data": "krel" },
|
|
{ "data": "packing"},
|
|
{ "data": "unitValue" },
|
|
{ "data": "productUnit"},
|
|
{ "data": "sellerUnit" },
|
|
{ "data": "unitMultiplier"},
|
|
{ "data": "amountUnit" },
|
|
{ "data": "price" },
|
|
|
|
];
|
|
|
|
let actionColumn={ "className": 'details-control2',
|
|
"orderable": false,
|
|
"data": null,
|
|
"width": "100px",
|
|
"defaultContent":''
|
|
};
|
|
if(Order.getData('orderType')=='daily'){
|
|
actionColumn.render = function (data, type, row) {
|
|
if (row.stock_status === 'out_of_stock') {
|
|
return '<img src="/images/icons/details_close.png" title="Nincs raktáron" style="width: 24px;">';
|
|
}
|
|
return '<input type="number" value="0" min="0" max="9999" step="1" data-decimals="1" class="form-control-sm inputNumberSpinner" style="width: 1em;"/>';
|
|
};
|
|
}
|
|
columnData.push(actionColumn);
|
|
return columnData;
|
|
}
|
|
this.getDatatables=function (orderType){
|
|
console.error(orderType);
|
|
var table = $('.dataTableOrderProductSelect').DataTable( {
|
|
language: {
|
|
url: '//cdn.datatables.net/plug-ins/1.10.24/i18n/Hungarian.json'
|
|
},
|
|
|
|
//"ajax": "{{asset('exapmle2.json')}}",
|
|
"ajax": {
|
|
url:Opts.URL.getDataTableContentProductList,
|
|
data:function (data) {
|
|
data.searchStr=dataTableSearchStr;
|
|
data.krel=dataTableSearchKrel;
|
|
data.groupId=selectedProductGroup;
|
|
data.supplierId=Order.supplierId;
|
|
data.deliveryDate=Order.deliveryDate;
|
|
}
|
|
},
|
|
buttons: {
|
|
buttons: []
|
|
},
|
|
"columnDefs": root.productSelectDataTableColumnDefs(),
|
|
"columns": root.productSelectDataTableColumn(),
|
|
"order": [[1, 'asc']],
|
|
} );
|
|
return table;
|
|
}
|
|
|
|
this.productSelectDataTableDrawDT=function (e) {
|
|
//debug( 'Table draw complete: '+new Date().getTime() );
|
|
|
|
//$('td:contains("*")').html('<i class="bi bi-check-circle-fill"></i>');
|
|
$("td").filter(function(){
|
|
return $(this).text() === '*';
|
|
}).html('<i class="bi bi-check-circle-fill"></i>');
|
|
if(Order.getData().orderType=='daily'){
|
|
$("input[type='number'].inputNumberSpinner").inputSpinner({
|
|
template:
|
|
'<div class="input-group ${groupClass}">' +
|
|
'<button style="min-width: ${buttonsWidth}" class="btn btn-sm btn-decrement ${buttonsClass}" type="button">${decrementButton}</button>' +
|
|
//'<input type="text" inputmode="decimal" style="text-align: ${textAlign}" class="productQuantity form-control"/>' +
|
|
'<input type="text" step="0.1" data-decimals="2" style="text-align: ${textAlign}" class="productQuantity form-control"/>' +
|
|
'<button style="min-width: ${buttonsWidth}" class="btn btn-sm btn-increment ${buttonsClass}" type="button">${incrementButton}</button>' +
|
|
'</div>',
|
|
buttonsWidth: "0.5rem",
|
|
groupClass: "", // css class of the resulting input-group
|
|
buttonsClass: "btn-outline-secondary",
|
|
});
|
|
}
|
|
root.bindWeakUserHelper();
|
|
/*
|
|
----------------------------------------------------------
|
|
change order quantity
|
|
*/
|
|
$(".dataTableOrderProductSelect .details-control2 input[type=text]").off('change');
|
|
$(".dataTableOrderProductSelect .details-control2 input[type=text]").on('change',function (e){
|
|
let quantity=$(this).val();
|
|
quantity=quantity.replace(',','.');
|
|
quantity=parseFloat(quantity);
|
|
let rowData=$('.dataTableOrderProductSelect').DataTable().row($(this).closest('tr')).data();
|
|
root.orderItemsChange(rowData,quantity)
|
|
});
|
|
|
|
$(".dataTableOrderProductSelect .details-control2 input[type=text]").each(function (){
|
|
//debug('ez a function2')
|
|
let quantity=$(this).val();
|
|
let rowData=$('.dataTableOrderProductSelect').DataTable().row($(this).closest('tr')).data();
|
|
|
|
if(Order.productSelected[rowData.id]){
|
|
debug(rowData);
|
|
debug($($(this).closest('tr').find('input[type=number]')[0]));
|
|
debug(Order.productSelected[rowData.id]);
|
|
let quantityCurrent=Order.productSelected[rowData.id];
|
|
if(typeof quantityCurrent!='string'){
|
|
quantityCurrent+='';
|
|
}
|
|
$($(this).closest('tr').find('input[type=number]')[0]).val(quantityCurrent.replace(',','.'));
|
|
}
|
|
});
|
|
|
|
|
|
$(".dataTableOrderProductSelect .details-control2 button").off('click');
|
|
$(".dataTableOrderProductSelect .details-control2 button").on('click',function () {
|
|
// debug('.details-control2 button click ')
|
|
// debug(this);
|
|
$(this).parent().find('input[type=text]').trigger('change');
|
|
});
|
|
|
|
}
|
|
|
|
this.initViewProductSelect=function () {
|
|
let functionName='initViewProductSelect';
|
|
console.log(functionName+' called');
|
|
if(viewInicialized.includes(functionName)){
|
|
return;
|
|
}
|
|
//debug(Object.getOwnPropertyNames(root));
|
|
root.setDatatableHeaderText('');
|
|
root.Stepper.setOpts({onAfterActivate:function (){}});
|
|
//@note: be kell kapcsolni az elonezetet
|
|
root.Stepper.addCompleted('invoice');
|
|
root.Stepper.addEnabled('invoice');
|
|
let CSSSelectorForm='.orderParameterForm';
|
|
//console.log(Opts.URL.getDataTableContentProductList);change
|
|
debug((CSSSelectorForm+' .fa-search'));
|
|
|
|
$('.sidebar-search .fa-search').off('click');
|
|
$('.sidebar-search .fa-search').on('click',root.clickSearchProduct);
|
|
|
|
$('a.sidebar.favorites').off('click');
|
|
$('a.sidebar.favorites').on('click',root.clickFavoritesProduct);
|
|
|
|
$('a.sidebar.often').off('click');
|
|
$('a.sidebar.often').on('click',root.clickOftenProduct);
|
|
|
|
$('a.sidebar.last').off('click');
|
|
$('a.sidebar.last').on('click',root.clickLastProduct);
|
|
|
|
$('a.sidebar.weekly').off('click');
|
|
$('a.sidebar.weekly').on('click',root.clickWeeklyProduct);
|
|
|
|
$('a.sidebar.krel').off('click');
|
|
$('a.sidebar.krel').on('click',root.clickKrelProduct);
|
|
|
|
$('a.sidebar.specialOffer').off('click');
|
|
$('a.sidebar.specialOffer').on('click',root.clickSpecialOffer);
|
|
|
|
|
|
$('.sidebar-search input[name=searchValue]').off('keypress');
|
|
$('.sidebar-search input[name=searchValue]').on('keypress',function (event) {
|
|
if ( event.which == 13 ) {
|
|
event.preventDefault();
|
|
}
|
|
if($(this).val().length>=2){
|
|
root.searchProductByString($(this).val()+event.key);
|
|
}
|
|
});
|
|
|
|
|
|
|
|
$('.sidebar-wrapper .sidebar-menu .sidebar-dropdown .sidebar-submenu li a.categoryItem.clickable').off('click');
|
|
$('.sidebar-wrapper .sidebar-menu .sidebar-dropdown .sidebar-submenu li a.categoryItem.clickable').on('click',
|
|
function () {
|
|
let groupId=$(this).data('id');
|
|
selectedProductGroup=groupId;
|
|
dataTableSearchStr=null;
|
|
console.log(groupId);
|
|
console.log(root.getTreePathName(this));
|
|
root.setDatatableHeaderText(root.getTreePathName(this));
|
|
/*
|
|
let ajaxData={
|
|
'groupId':groupId,
|
|
'supplier_id':Order.supplierId,
|
|
};
|
|
//$('.dataTableOrderProductSelect').DataTable().ajax.data(ajaxData).load();
|
|
|
|
*/
|
|
/*
|
|
let ajaxUrl=Opts.URL.getDataTableContentProductList+'?groupId='+groupId+'&supplier_id='+Order.supplierId;
|
|
$('.dataTableOrderProductSelect').DataTable().ajax.url(ajaxUrl).load();
|
|
*/
|
|
$('.dataTableOrderProductSelect').DataTable().ajax.reload();
|
|
});
|
|
|
|
|
|
let table = root.getDatatables(Order.getData('orderType'));
|
|
|
|
$('.dataTableOrderProductSelect').on( 'init.dt', function () {
|
|
console.log( 'Table initialisation complete: '+new Date().getTime() );
|
|
} ).dataTable();
|
|
|
|
|
|
|
|
$('.dataTableOrderProductSelect').on( 'draw.dt',root.productSelectDataTableDrawDT).dataTable();
|
|
|
|
//$('.dataTableOrderProductSelect').on( 'draw.dt', ).dataTable();
|
|
|
|
$('.dataTableOrderProductSelect').on( 'xhr.dt', function () {
|
|
debug( 'Table xhr complete: '+new Date().getTime() );
|
|
} ).dataTable();
|
|
|
|
//$("input[type='number'].inputNumberSpinner").inputSpinner();
|
|
|
|
/*
|
|
----------------------------------------------------------
|
|
Add event listener for opening and closing details
|
|
*/
|
|
|
|
$('.dataTableOrderProductSelect tbody').on('click', 'td.details-control', function () {
|
|
let tr = $(this).closest('tr');
|
|
let row = table.row( tr );
|
|
|
|
if ( row.child.isShown() ) {
|
|
// This row is already open - close it
|
|
row.child.hide();
|
|
tr.removeClass('shown');
|
|
}
|
|
else {
|
|
// Open this row
|
|
row.child( root.productSelectDatatablesRowFormatter(row.data()) ).show();
|
|
tr.addClass('shown');
|
|
root.bindProductDetailsAction();
|
|
}
|
|
} );
|
|
viewInicialized.push(functionName);
|
|
}
|
|
|
|
this.bindProductDetailsAction=function (){
|
|
root.bindRowDescriptionAction();
|
|
root.bindRowFavoritesAction();
|
|
if(Order.getData()['orderType']=='weekly'){
|
|
root.bindOrderItemWeekQuantity();
|
|
}
|
|
}
|
|
|
|
this.bindWeakUserHelper=function (){
|
|
$( "input.inputNumberSpinner" ).off( "focus");
|
|
$( "input.inputNumberSpinner" ).on( "focus", function() {
|
|
let quantity=$(this).val();
|
|
quantity=quantity.replace(',','.');
|
|
quantity=parseFloat(quantity);
|
|
if(quantity===0){
|
|
$(this).val('')
|
|
}
|
|
});
|
|
$( "input[type=text].inputNumberSpinner" ).off( "keypress");
|
|
$( "input[type=text].inputNumberSpinner" ).on( "keypress", function(event) {
|
|
if ( event.which == 13 ) {
|
|
// console.error('enter pressed');
|
|
let actualItem=this;
|
|
let items=$( "input[type=text].inputNumberSpinner" );
|
|
items.each(function (item){
|
|
// console.log(this);
|
|
if(this==actualItem){
|
|
// console.error(item);
|
|
if(item+1<=items.length){
|
|
// console.error(items[item+1]);
|
|
$(items[item+1]).focus();
|
|
}
|
|
return false;
|
|
}
|
|
});
|
|
}
|
|
});
|
|
}
|
|
|
|
this.bindOrderItemWeekQuantity=function (){
|
|
$("input.productSelectDayQuantity").off('change');
|
|
$("input.productSelectDayQuantity").on('change',function () {
|
|
console.log(this.name);
|
|
console.log(this.value);
|
|
console.log($(this).data('dayindex'));
|
|
|
|
let rowData=null;
|
|
let rowNode=$($(this).closest('table.orderProductSelectRowDetailsTable').closest('tr')).prev();
|
|
rowData=$('.dataTableOrderProductSelect').DataTable().row(rowNode).data();
|
|
console.log(rowData);
|
|
let quantity=$(this).val();
|
|
quantity=quantity.replace(',','.');
|
|
quantity=parseFloat(quantity);
|
|
console.log(rowData.id);
|
|
root.orderItemsChange(rowData,quantity,$(this).data('dayindex'));
|
|
// root.orderItemsChange
|
|
//orderItemsChange
|
|
//quantity[1683][1]
|
|
});
|
|
|
|
}
|
|
|
|
this.afterSyncOrderDataToServer=function (data) {
|
|
//root.toggleEnableSend();
|
|
//console.log('most vegzett. ennyit kiszed'+batchNum);
|
|
for (let i = 0; i <queueAjax.length; i++) {
|
|
console.log('shiftel')
|
|
queueAjax.shift();
|
|
}
|
|
//console.log('remaining left '+queueAjax.length);
|
|
setTimeout(function(){
|
|
syncDoing=false;
|
|
root.syncOrderDataToServer();
|
|
}, Opts.dataSyncPauseTime);
|
|
}
|
|
let queueAjax=[];
|
|
let syncDoing=false;
|
|
|
|
this.syncOrderDataToServer=function () {
|
|
//debug(queueAjax);
|
|
if(syncDoing){
|
|
//debug('sync in progress....');
|
|
return false;
|
|
}
|
|
if(queueAjax.length<1){
|
|
return ;
|
|
}
|
|
syncDoing=true;
|
|
|
|
root.sendOrderDataToServer('productSelect',root.afterSyncOrderDataToServer);
|
|
return ;
|
|
}
|
|
|
|
this.orderItemsChange=function(ItemData,quantity,dayIndex){
|
|
|
|
/*
|
|
debug('-----------------');
|
|
debug(ItemData);
|
|
debug(quantity);
|
|
debug(Order.getData('productSelected'));
|
|
debug('-----------------');
|
|
|
|
*/
|
|
if(isNaN(quantity)){
|
|
quantity=0;
|
|
}
|
|
let productSelected=Order.getData('productSelected');
|
|
console.group('orderItemsChange');
|
|
console.log(['productSelected',productSelected]);
|
|
console.log(['ItemData',ItemData]);
|
|
console.log(['ItemData.id',ItemData.id]);
|
|
console.log(['quantity',quantity]);
|
|
console.log(['dayIndex',dayIndex]);
|
|
console.log(productSelected[ItemData.id]);
|
|
|
|
let productSelectedItem=productSelected[ItemData.id];
|
|
/*
|
|
ha 0 ertek jon es nem is volt akkor hamar kiugratjuk
|
|
*/
|
|
if(quantity==0){
|
|
console.error('quantity==0');
|
|
if(typeof productSelectedItem=='undefined'){
|
|
console.error('itt lep1');
|
|
console.groupEnd();
|
|
return;
|
|
}
|
|
if(dayIndex){
|
|
console.log('van dayIndex')
|
|
if(typeof productSelected[ItemData.id][dayIndex]=='undefined'){
|
|
console.log(['productSelectedItem',productSelectedItem]);
|
|
console.error('itt lep2');
|
|
console.groupEnd();
|
|
return;
|
|
}
|
|
}
|
|
}
|
|
/*
|
|
ha azonos az ertek kiugrunk
|
|
*/
|
|
if(dayIndex){
|
|
if(typeof productSelected[ItemData.id]!='undefined'
|
|
&& typeof productSelected[ItemData.id][dayIndex]!='undefined'){
|
|
if(productSelected[ItemData.id][dayIndex]==quantity){
|
|
console.error('azonos napi');
|
|
console.groupEnd();
|
|
return;
|
|
}
|
|
}
|
|
}else{
|
|
if(productSelected[ItemData.id]==quantity){
|
|
console.error('azonos');
|
|
console.groupEnd();
|
|
return;
|
|
}
|
|
}
|
|
|
|
if(quantity==0){
|
|
if(dayIndex){
|
|
delete Order.productSelected[ItemData.id][dayIndex];
|
|
delete productSelected[ItemData.id][dayIndex];
|
|
}else{
|
|
delete Order.productSelected[ItemData.id];
|
|
delete productSelected[ItemData.id];
|
|
}
|
|
}else{
|
|
/*
|
|
ha van ertek erteket adunk!
|
|
*/
|
|
if(dayIndex){
|
|
if(typeof productSelected[ItemData.id]=='undefined'){
|
|
productSelected[ItemData.id]=[];
|
|
}
|
|
console.log('set quantity productSelected[ItemData.id][dayIndex]',quantity);
|
|
productSelected[ItemData.id][dayIndex]=quantity;
|
|
}else{
|
|
productSelected[ItemData.id]=quantity;
|
|
console.log('set quantity productSelected[ItemData.id]',quantity);
|
|
}
|
|
}
|
|
console.log(['productSelected',productSelected]);
|
|
Order.productSelected=productSelected;
|
|
|
|
console.groupEnd();
|
|
queueAjax.push(Date.now());
|
|
root.syncOrderDataToServer();
|
|
|
|
return;
|
|
|
|
|
|
if(productSelected[ItemData.id]==quantity){
|
|
debug('itt lep12');
|
|
console.groupEnd();
|
|
return;
|
|
}
|
|
productSelected[ItemData.id]=quantity;
|
|
if(quantity==0){
|
|
delete Order.productSelected[ItemData.id];
|
|
}
|
|
Order.productSelected=productSelected;
|
|
console.groupEnd();
|
|
return;
|
|
|
|
queueAjax.push(Date.now());
|
|
root.syncOrderDataToServer();
|
|
|
|
/*
|
|
debug(Order.getData('productSelected'));
|
|
debug('*******************');
|
|
*/
|
|
}
|
|
this.initViewInvoice=function () {
|
|
root.Stepper.setOpts({onAfterLoad:function (){}});
|
|
|
|
if(Object.keys(Order.productSelected).length>0){
|
|
root.Stepper.addCompleted('send');
|
|
root.Stepper.addEnabled('send');
|
|
}
|
|
let styleStr='<link rel="stylesheet" href="'+Opts.URL.root+'/css/invoice.css">';
|
|
$('table.invoice button.printButton').off('click');
|
|
$('table.invoice button.printButton').on('click',function () {
|
|
window.print();
|
|
return;
|
|
|
|
let newWin= window.open("");
|
|
newWin.document.write(styleStr);
|
|
let print=$('table.invoice').clone();
|
|
print.find('button.printButton').remove();
|
|
// newWin.document.write($('table.invoice').prop('outerHTML'));
|
|
newWin.document.write(print.prop('outerHTML'));
|
|
newWin.print();
|
|
newWin.close();
|
|
});
|
|
}
|
|
|
|
this.resetOrder=function () {
|
|
root.init();
|
|
root.setDeliveryDate('-');
|
|
root.setSupplier('-');
|
|
|
|
}
|
|
|
|
this.afterOrderSendOk=function (data) {
|
|
Toast.create({ title: "Sent!", message: 'Order Sent' , status: TOAST_STATUS.INFO, timeout: 5000 });
|
|
$('.buttonOrderSend').off('click');
|
|
$('.buttonOrderSend').prop('disabled',true);
|
|
$('.statusNamePlace').removeClass('statusBlink');
|
|
$('.statusNamePlace').text('elküldve');
|
|
$('.buttonOrderSending').toggleClass('d-none');
|
|
$('.buttonOrderSendOk').toggleClass('d-none');
|
|
$('div.invoiceContainer').html(data.retHTML);
|
|
//root.resetOrder();
|
|
}
|
|
this.afterOrderSendError=function (data) {
|
|
$('.buttonOrderSend').toggleClass('d-none');
|
|
$('.buttonOrderSending').toggleClass('d-none');
|
|
$.each(APP.OrderModule.Stepper.getOpts().available,function (index,value) {
|
|
APP.OrderModule.Stepper.setEnabled(value);
|
|
APP.OrderModule.Stepper.setCompleted(value);
|
|
});
|
|
}
|
|
|
|
this.initViewSend=function () {
|
|
console.log('initViewSend called 2');
|
|
root.Stepper.setOpts({onAfterLoad:function (){}});
|
|
$('.buttonOrderSend').off('click');
|
|
$('.buttonOrderSend').on('click',function () {
|
|
console.log('Send buton clicked');
|
|
//@todo: datasynchere and callback
|
|
$('.buttonOrderSend').toggleClass('d-none');
|
|
$('.buttonOrderSending').toggleClass('d-none');
|
|
/**
|
|
* PM158
|
|
*/
|
|
$.each(APP.OrderModule.Stepper.getOpts().available,function (index,value) {
|
|
root.Stepper.unsetEnabled(value);
|
|
root.Stepper.unsetCompleted(value);
|
|
});
|
|
/**
|
|
|
|
*/
|
|
root.sendOrderDataToServer('send',root.afterOrderSendOk,root.afterOrderSendError);
|
|
|
|
/* let ajaxData={};
|
|
ajaxData._token=Opts.token;
|
|
ajaxData.send=true;
|
|
$.extend(ajaxData,Order);
|
|
$.ajax({
|
|
url: Opts.URL.store,
|
|
method:'POST',
|
|
data:ajaxData,
|
|
success:function (data) {
|
|
if(data.success){
|
|
root.afterOrderSendOk(data);
|
|
}
|
|
}
|
|
});*/
|
|
});
|
|
|
|
}
|
|
|
|
this.testModeSend=function () {
|
|
|
|
}
|
|
|
|
|
|
this.testMode=function () {
|
|
console.log('testMode called ')
|
|
Order.setData({
|
|
id:234,
|
|
supplierId:7,
|
|
productSelected:{
|
|
116 : 3,
|
|
293 : 2,
|
|
},
|
|
contactName:'Contact Name',
|
|
note:'Note',
|
|
type:'daily',
|
|
deliveryDate:Opts.defaultDeliveryDate,
|
|
deliveryAddress:12,
|
|
});
|
|
console.log(Order.getData());
|
|
|
|
console.log('*******************');
|
|
//root.Stepper.setOpts({'UrlData':{'supplierId':supplierId}});
|
|
root.Stepper.setOpts({'UrlData':{'supplierId':Order.supplierId,id:Order.id}});
|
|
this.Stepper.init({
|
|
URL: {
|
|
create: Opts.URL.create,
|
|
},
|
|
/*
|
|
csupasz az elejerol
|
|
complete:['supplier'],
|
|
enable: ['supplier'],
|
|
active: 'supplier',
|
|
onAfterActivate:this.initViewSupplier,
|
|
|
|
product select
|
|
complete:['supplier','parameter','productSelect'],
|
|
enable: ['supplier','parameter','productSelect'],
|
|
active: 'productSelect',
|
|
onAfterActivate:this.initViewProductSelect,
|
|
|
|
fullos
|
|
complete:['supplier','parameter','productSelect','invoice'],
|
|
enable: ['supplier','parameter','productSelect','invoice','send'],
|
|
active: 'productSelect',
|
|
onAfterActivate:this.initViewProductSelect,
|
|
|
|
send
|
|
complete:['supplier','parameter','productSelect','invoice','send'],
|
|
enable: ['supplier','parameter','productSelect','invoice','send'],
|
|
active: 'send',
|
|
onAfterActivate:this.initViewProductSelect,
|
|
|
|
*/
|
|
complete:['supplier','parameter','productSelect'],
|
|
enable: ['supplier','parameter','productSelect'],
|
|
active: 'productSelect',
|
|
onAfterActivate:this.initViewProductSelect,
|
|
|
|
|
|
autoCallback: {
|
|
invoice: {
|
|
onAfterActivate:root.initViewInvoice
|
|
},
|
|
send: {
|
|
onAfterActivate:root.initViewSend
|
|
},
|
|
|
|
}
|
|
|
|
});
|
|
console.log('*******************');
|
|
|
|
}
|
|
this.toggleEnableSend=function () {
|
|
console.log('toggleEnableSend called');
|
|
let ajaxUrl=Opts.URL.checkReadyToSend.replace('%id%',Order.id);
|
|
$.ajax({
|
|
url:ajaxUrl,
|
|
success:function (data) {
|
|
if(data.success){
|
|
if(data.readyToSend){
|
|
root.Stepper.addCompleted('send');
|
|
/*
|
|
root.Stepper.addCompleted('invoice');
|
|
root.Stepper.addEnabled('invoice');
|
|
*/
|
|
root.Stepper.addEnabled('send');
|
|
}else{
|
|
root.Stepper.unsetCompleted('send');
|
|
/*
|
|
root.Stepper.unsetCompleted('invoice');
|
|
root.Stepper.unsetEnabled('invoice');
|
|
*/
|
|
root.Stepper.unsetEnabled('send');
|
|
}
|
|
}
|
|
console.log(data);
|
|
}
|
|
});
|
|
}
|
|
|
|
}
|