var viewModel = (function() {
var self = this;
selectedUser = ko.observable(new user());
transactionTypes = ko.observableArray();
selectedTransactionType = ko.observable('');
dateStart = ko.observable('');
dateEnd = ko.observable('');
transactions = ko.observableArray([]);
summary = ko.observableArray([]);
transactionPage = ko.observable(0);
summaryPage = ko.observable(0);
summaryMoreButton = ko.observable(false);
moreButton = ko.observable(false);
showSummary = ko.observable(false);
viewType = ko.observableArray([{
name: 'Transaction',
value: ''
},
{
name: 'Wallet Activity',
value: 'transaction'
},
{
name: 'Sales Report',
value: 'transaction/standard_sales'
},
//{name:'By SKU',value: 'transaction/summary_by_sku'}
]);
selectedViewType = ko.observable(false);
reportUrl = ko.observable('');
reportSummaryUrl = ko.observable('');
user_filter = ko.observable('');
TransactionTypeChanged = function(obj, event) {
if (transactions().length != 0)
transactions([]);
}
getTransactionTypes = function() {
transactionTypes([]);
if (selectedViewType() == 'transaction') {
transactionTypes([]);
transactionTypes([{
name: 'All',
value: 'All'
},
{
name: 'Money',
value: 'Money'
},
{
name: 'Prepaid',
value: 'Prepaid'
}
]);
if (selectedUser().relation() == "0-1014" || selectedUser().rel_id() == "1014" || selectedUser().relation() == "0-273" || selectedUser().rel_id() == "273")
transactionTypes.push({
name: 'P Cortez PayMaya',
value: 'P Cortez PayMaya'
});
if (selectedUser().relation() == "0-1013" || selectedUser().rel_id() == "1013" || selectedUser().relation() == "0-272" || selectedUser().rel_id() == "272")
transactionTypes.push({
name: 'Joyas PayMaya',
value: 'Joyas PayMaya'
});
} else {
var parameters = {
'_endpoint': 'transaction',
'_token': ko.observable($('meta[name="_token"]').attr('content')),
'size': 100,
'fields': 'transaction_type',
'filter': "transaction_type:'':!=",
'distinct': 1
};
$.ajax({
url: "/restadapter",
type: "GET",
data: $.param(ko.toJS(parameters)),
processData: false,
contentType: "application/json",
dataType: "json",
success: function(result) {
transactionTypes([]);
if (!result.data.records.length) {
toastr.warning("no data");
self.moreButton(false);
}
if (selectedViewType() != 'transaction/standard_sales')
transactionTypes.push({
name: 'All',
value: ''
});
ko.utils.arrayForEach(result.data.records, function(model) {
var _txnType = model.transaction_type;
if (model.transaction_type == 'Prepaid Wallet'){
transactionTypes.push({
name: model.transaction_type,
value: model.transaction_type + ',transactions.subtype:Commission:!='
});
model.transaction_type = model.transaction_type + ' & ' + model.transaction_type + ' Reversal';
}
if (model.transaction_type == 'Money Wallet'){
transactionTypes.push({
name: model.transaction_type,
value: model.transaction_type + ',transactions.subtype:Commission:!='
});
model.transaction_type = model.transaction_type + ' & ' + model.transaction_type + ' Reversal';
}
if (model.transaction_type == 'P Cortez PayMaya Wallet'){
transactionTypes.push({
name: model.transaction_type,
value: model.transaction_type + ',transactions.subtype:Commission:!='
});
model.transaction_type = model.transaction_type + ' & ' + model.transaction_type + ' Reversal';
}
if (model.transaction_type == 'Joyas PayMaya Wallet'){
transactionTypes.push({
name: model.transaction_type,
value: model.transaction_type + ',transactions.subtype:Commission:!='
});
model.transaction_type = model.transaction_type + ' & ' + model.transaction_type + ' Reversal';
}
if (model.transaction_type == 'Prepaid Wallet Reversal')
model.transaction_type = '';
if (model.transaction_type == 'Money Wallet Reversal')
model.transaction_type = '';
if (model.transaction_type == 'P Cortez PayMaya Wallet Reversal')
model.transaction_type = '';
if (model.transaction_type == 'Joyas PayMaya Wallet Reversal')
model.transaction_type = '';
if (model.transaction_type != '' &&
!(selectedViewType() == 'transaction/standard_sales' &&
(model.transaction_type == 'Prepaid Wallet & Prepaid Wallet Reversal' ||
model.transaction_type == 'Money Wallet & Money Wallet Reversal' ||
model.transaction_type == 'Joyas PayMaya Wallet & Joyas PayMaya Wallet Reversal' ||
model.transaction_type == 'P Cortez PayMaya Wallet & P Cortez PayMaya Wallet Reversal'
)
)
)
transactionTypes.push({
name: model.transaction_type,
value: model.transaction_type
});
});
},
error: function(result) {
var error = ko.utils.parseJson(result.responseText);
var text = "";
$.each(error.message, function(index, val) {
text += index + ": " + val + "
";
});
toastr.error(text);
}
});
}
}
getTransactions = function(endpoint = 'transaction', page, user = '', event) {
if (typeof event != 'undefined') {
$(event.currentTarget).attr("disabled", "disabled");
$(event.currentTarget).html('Processing');
}
endpoint == 'transaction/standard_sales' ? $('#loading-summary').show() : $('#loading').show();
user_filter(user);
endpoint = endpoint == false ? 'transaction' : endpoint;
var _selectedTransactionType = selectedTransactionType();
if (selectedTransactionType() == 'Money Wallet & Money Wallet Reversal')
_selectedTransactionType = 'Money Wallet%:LIKE';
if (selectedTransactionType() == 'Prepaid Wallet & Prepaid Wallet Reversal')
_selectedTransactionType = 'Prepaid Wallet%:LIKE';
if (selectedTransactionType() == 'Joyas PayMaya Wallet & Joyas PayMaya Wallet Reversal')
_selectedTransactionType = 'Joyas PayMaya Wallet%:LIKE';
if (selectedTransactionType() == 'P Cortez PayMaya Wallet & P Cortez PayMaya Wallet Reversal')
_selectedTransactionType = 'P Cortez PayMaya Wallet%:LIKE';
var type = selectedTransactionType() != undefined && selectedTransactionType() != 'All' ? ',transactions.transaction_type:' + _selectedTransactionType : '';
if (selectedViewType() == 'transaction')
type = selectedTransactionType() != undefined && selectedTransactionType() != 'All' ? ',transactions.wallet:' + _selectedTransactionType : '';
var userFilter = user_filter() == '' ? '' : ',transactions.user_id:' + user_filter() + ':=:AND';
if (selectedViewType() == 'transaction/standard_sales')
userFilter = userFilter + ',transactions.transactable_type:WALLET:!=:AND'
var parameters = {
'_endpoint': endpoint,
'filter': 'date:(transactions.created_at:' + $('#dateStart').val() + ' 00.00.00:>=)(transactions.created_at:' + $('#dateEnd').val() + ' 23.59.59:<=:AND):GROUPED' + type + userFilter,
'page': page
};
if (endpoint == 'transaction')
parameters.order = 'transactions.created_at:DESC';
if (page < 2 && endpoint == 'transaction/standard_sales') {
summary([]);
}
if (page < 2 && endpoint != 'transaction/standard_sales') {
transactions([]);
}
$.ajax({
url: "/restadapter",
type: "GET",
beforeSend: function(xhr) {
xhr.setRequestHeader('Authorization', 'Bearer ' + amplify.store("accessToken"));
},
data: $.param(ko.toJS(parameters)),
processData: false,
contentType: "application/json",
dataType: "json",
success: function(result) {
if (result.data.records.length && parameters._endpoint == 'transaction/standard_sales') {
showSummary(true);
summaryMoreButton(true);
summaryPage(page + 1);
reportUrl(result.data.report_url);
ko.utils.arrayForEach(result.data.records, function(model) {
summary.push(new transaction(model));
});
} else if (!result.data.records.length && parameters._endpoint == 'transaction/standard_sales') {
toastr.warning("no data");
summaryMoreButton(false);
} else if (result.data.records.length) {
showSummary(false);
moreButton(true);
transactionPage(page + 1);
reportUrl(result.data.report_url);
ko.utils.arrayForEach(result.data.records, function(model) {
transactions.push(new transaction(model));
});
} else {
toastr.warning("no data");
moreButton(false);
}
parameters._endpoint == 'transaction/standard_sales' ? $('#loading-summary').hide() : $('#loading').hide();
if (typeof event != 'undefined') {
$(event.currentTarget).attr("disabled", false);
$(event.currentTarget).html('forwardSubmit');
}
},
error: function(result) {
var error = ko.utils.parseJson(result.responseText);
var text = "";
$.each(error.message, function(index, val) {
text += index + ": " + val + "
";
});
toastr.error(text);
parameters._endpoint == 'transaction/standard_sales' ? $('#loading-summary').hide() : $('#loading').hide();
if (typeof event != 'undefined') {
$(event.currentTarget).attr("disabled", false);
$(event.currentTarget).html('forwardSubmit');
}
}
});
}
getTransactionTypes();
})();
(function($) {
$.fn.inputFilter = function(inputFilter) {
return this.on("input keydown keyup mousedown mouseup select contextmenu drop", function(event) {
if (inputFilter(this.value)) {
this.oldValue = this.value;
this.oldSelectionStart = this.selectionStart;
this.oldSelectionEnd = this.selectionEnd;
} else if (this.hasOwnProperty("oldValue")) {
this.value = this.oldValue;
this.setSelectionRange(this.oldSelectionStart, this.oldSelectionEnd);
}
});
};
}(jQuery));
ko.bindingHandlers.DATE_FORMAT = {
init: function(element, valueAccessor) {
$(element).inputFilter(function(value) {
if (event.keyCode != '8')
return /^([0-9]{1,4}|[0-9]{1,4}\-|[0-9]{1,4}\-(0|0?[1-9]|1[012])|[0-9]{1,4}\-(0|0?[1-9]|1[012])\-|[0-9]{1,4}\-(0|0?[1-9]|1[012])\-(0|0?[1-9]|[12][0-9]|3[01])|$)$/.test(value);
});
}
};
ko.applyBindings(viewModel);
$('#loading').hide();
$('#loading-summary').hide();
var nowTemp = new Date();
var now = new Date(nowTemp.getFullYear(), nowTemp.getMonth(), nowTemp.getDate(), 0, 0, 0, 0);
var dateStart = $('#dateStart').datepicker({
format: 'yyyy-mm-dd'
}).on('changeDate', function(ev) {
if (ev.date.valueOf() > dateEnd.date.valueOf()) {
var newDate = new Date(ev.date)
dateEnd.setValue(newDate);
}
dateStart.hide();
}).data('datepicker');
dateStart.setValue(now);
var dateEnd = $('#dateEnd').datepicker({
format: 'yyyy-mm-dd',
onRender: function(date) {
return date.valueOf() <= dateStart.date.valueOf() ? 'disabled' : '';
}
}).on('changeDate', function(ev) {
dateEnd.hide();
}).data('datepicker');
dateEnd.setValue(now)
Date.prototype.addDays = function(days) {
var dat = new Date(this.valueOf());
dat.setDate(dat.getDate() + days);
return dat.getFullYear() + "-" + (dat.getMonth() + 1) + "-" + dat.getDate();
}
function formatDate(date) {
var d = new Date(date),
month = '' + (d.getMonth() + 1),
day = '' + d.getDate(),
year = d.getFullYear();
if (month.length < 2) month = '0' + month;
if (day.length < 2) day = '0' + day;
return [year, month, day].join('-');
}