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('-'); }