/** * HOMER - Responsive Admin Theme * version 1.8 * */ function configState($stateProvider, $urlRouterProvider, $compileProvider) { // Optimize load start with remove binding information inside the DOM element $compileProvider.debugInfoEnabled(true); // Set default state $urlRouterProvider.otherwise("/landing_page"); $stateProvider // Landing page .state('landing', { url: "/landing_page", // templateUrl: "views/landing_page.html", templateUrl: "views/common_app/login.html", data: { pageTitle: 'Landing page', specialClass: 'blank' // specialClass: 'landing-page' } }) // Dashboard - Main page .state('dashboard', { url: "/dashboard", templateUrl: "views/dashboard.html", onEnter: function ($state) { $state.go('smrc.app'); }, data: { // auth : for required auth auth: 'Y', pageTitle: 'Dashboard' } }) // Common views .state('common', { abstract: true, url: "/common", templateUrl: "views/common/content_empty.html", data: { pageTitle: 'Common' } }) .state('common.login', { url: "/login", templateUrl: "views/common_app/login.html", data: { pageTitle: 'Login page', specialClass: 'blank' } }) .state('common.register', { url: "/register", templateUrl: "views/common_app/register.html", data: { pageTitle: 'Register page', specialClass: 'blank' } }) .state('common.error_one', { url: "/error_one", templateUrl: "views/common_app/error_one.html", data: { pageTitle: 'Error 404', specialClass: 'blank' } }) .state('common.error_two', { url: "/error_two", templateUrl: "views/common_app/error_two.html", data: { pageTitle: 'Error 505', specialClass: 'blank' } }) .state('common.lock', { url: "/lock", templateUrl: "views/common_app/lock.html", data: { pageTitle: 'Lock page', specialClass: 'blank' } }) .state('common.password_recovery', { url: "/password_recovery", templateUrl: "views/common_app/password_recovery.html", data: { pageTitle: 'Password recovery', specialClass: 'blank' } }) //--* EXTEND_CODE_MODULES BEGIN *--// /* /var/www/html/performax/app/scripts ../core/modules/base/config.js */ console.log('load extra js : base/model/bpm.js'); var bpmDashboardCtrl = { url: "/base_bpm_dashboard", templateUrl: "core/modules/base/view/bpm-dashboard.html", controller: function ($state, notify, sweetAlert, $http, $scope, global) { $scope.myurl="core/workflow/dashboard.html?UID="+$scope.profile.USER.UID+"&UCODE="+$scope.profile.USER.UCODE; }, data: { module: 'N', pageTitle: '', pageDesc: '' } } // Forms views $stateProvider.state('base', { abstract: true, url: "/base", templateUrl: "views/common/content_module.html", data: { pageTitle: 'Base', module: 'Y', role: [ { name: "base.admin", title: "System Administrator", access: [ 'base.base_setting','base.base_profile','base.bpm_dashboard' /* , 'base.base_appconf', 'base.base_menu' */ ] } /* , { name: "base.user", title: "Sample Role", access: ['base.base_setting'] } */ ], menu: { "base.base_setting": { url: "base.base_setting", title: "Setting", class: "pe pe-7s-portfolio text-info", sidemenu: "Y" }, "base.base_profile": { url: "base.base_profile", title: "Profile", class: "pe pe-7s-portfolio text-info", sidemenu: "N" }, "base.base_appconf": { url: "base.base_appconf", title: "App. Configure", class: "pe pe-7s-portfolio text-info", sidemenu: "Y" }, "base.base_menu": { url: "base.base_menu", title: "Master Menu", class: "pe pe-7s-box1 text-success", sidemenu: "N" }, "base.bpm_dashboard": { url: "base.bpm_dashboard", title: "BPM Dashboard", class: "pe pe-7s-box1 text-success", sidemenu: "N" } } } }) .state('base.base_setting', { url: "/base_setting", templateUrl: "core/modules/base/view/setting.html", controller: function ($state, sweetAlert, $http, $scope, $uibModal, userObj, groupObj,masterObj, global, Excel,$timeout) { $scope.roles = global.roles; $scope.modules = global.modules; $scope.menues = global.menues; console.log($scope.menues); $scope.data = { user: userObj.data, group: groupObj.data } global.set_para('master',masterObj.data); $scope.exportToExcel = function (tableId) { // ex: '#my-table' $scope.exportHref = Excel.tableToExcel(tableId, 'sheet name'); //$timeout(function () { location.href = $scope.exportHref; }, 100); // trigger download } $scope.selectGroup = function (group) { $scope.hasChanged = false; $scope.selectedGroup = group; $scope.tempGroup = { GID: angular.copy(group.GID), GROUPNAME: angular.copy(group.GROUPNAME), }; if (group.GROUP_PROFILE != '') { $scope.tempGroup.GROUP_PROFILE = JSON.parse(angular.copy(group.GROUP_PROFILE)); } } if (($scope.selectGrouped == undefined) && ($scope.data.group.length > 0)) { $scope.selectGroup($scope.data.group[0]); } function ModalInstanceCtrl(sweetAlert, $http, $scope, $uibModalInstance, info, fdata, mode_data, global,$window) { $scope.master = global.get_para('master'); $scope.info = info; $scope.data = fdata; $scope.mode = mode_data.mode; $scope.do = mode_data.do; $scope.url = mode_data.url; $scope.data_name = mode_data.data_name; $scope.previewImg="core/service.php?do=base.image&name=USER&id="+$scope.data.UID; $scope.delete = function () { swal({ title: "Are you sure?", text: "You will not be able to recover this data!", type: "warning", showCancelButton: true, confirmButtonColor: "#DD6B55", confirmButtonText: "Yes, delete it!", closeOnConfirm: false }, function () { var parameter = { do: $scope.do, data: $scope.data, name: $scope.data_name, mode: 'delete' }; var url = $scope.url; $http.post(url, parameter). success(function (data, status, headers, config) { if (data.STATUS == 'OK') { swal("Deleted!", "Data has been deleted.", "success"); $uibModalInstance.close(data); } }). error(function (data, status, headers, config) { }); }); }; $scope.browseFile = function () { $('#picUserFile').click(); } $scope.uploadProfilePictureFile = function () { try { $('.splash').css('display', 'block'); console.log(document.getElementById('picUserFile').files); var f = document.getElementById('picUserFile').files[0], r = new FileReader(); var type = document.getElementById('picUserFile').files[0].type; r.onloadend = function (e) { var data = e.target.result; $scope.display_transaction = false; $http( { method: 'POST', data: { file: btoa(data), type:type, id: $scope.data.UID, do: 'base.upload_profile_image' }, url: 'core/service.php' } ).then(function (response) { var a=new Date(); var t=a.getTime(); $scope.previewImg="core/service.php?do=base.image&name=USER&id="+$scope.data.UID+"&tmp="+t; $('#picUserFile').val(null); $('.splash').css('display', 'none'); }); //send your binary data via $http or $resource or do anything else with it } r.readAsBinaryString(f); } catch (error) { swal("Please check your file again."); $('.splash').css('display', 'none'); } } $window.uploadUserProfilePictureFile = function () { $scope.uploadProfilePictureFile(); } $scope.ok = function () { var parameter = { do: $scope.do, data: $scope.data, name: $scope.data_name, mode: $scope.mode }; var url = $scope.url; $('.splash').css('display', 'block'); $http.post(url, parameter). success(function (data, status, headers, config) { if (data.STATUS == 'OK') { $uibModalInstance.close(data); } else { sweetAlert.swal({ title: '' + data.CODE, text: '' + data.MSG, type: "error" }); } $('.splash').css('display', 'none'); }). error(function (data, status, headers, config) { sweetAlert.swal({ title: '' + status, text: '' + data, type: "error" }); $('.splash').css('display', 'none'); }); }; $scope.cancel = function () { $uibModalInstance.dismiss('cancel'); }; }; $scope.editUser = function (selectUser) { $scope.selectedUser = selectUser; var modalInstance = $uibModal.open({ templateUrl: 'core/modules/base/view/modal_adduser.html', size: 'lg', controller: ModalInstanceCtrl, resolve: { fdata: angular.copy($scope.selectedUser), info: $scope.selectedGroup, mode_data: { mode: 'edit', do: "base.data", data_name: "user", url: "core/service.php", }, } }); modalInstance.result.then(function (response) { console.log(response); if (response.DATA.MODE == 'delete') { for (var i = 0; i < $scope.selectedGroup.users.length; i++) { if ($scope.selectedGroup.users[i].UID == $scope.selectedUser.UID) { $scope.selectedGroup.users.splice(i, 1); } } } else { $scope.selectedUser = angular.copy(response.DATA.CALLBACK); for (var i = 0; i < $scope.selectedGroup.users.length; i++) { if ($scope.selectedGroup.users[i].UID == $scope.selectedUser.UID) { $scope.selectedGroup.users[i] = angular.copy($scope.selectedUser); } } } }, function () { // Cancel //console.log('Cancel'); }); } $scope.addUser = function () { var modalInstance = $uibModal.open({ templateUrl: 'core/modules/base/view/modal_adduser.html', size: 'lg', controller: ModalInstanceCtrl, resolve: { fdata: { GID: $scope.selectedGroup.GID }, info: $scope.selectedGroup, mode_data: { mode: 'add', do: "base.data", data_name: "user", url: "core/service.php", }, } }); modalInstance.result.then(function (response) { console.log(response); response.DATA.CALLBACK.UID = response.DATA.INSERT_ID; if($scope.selectedGroup.users == undefined){ $scope.selectedGroup.users=[]; } $scope.selectedGroup.users.push(response.DATA.CALLBACK); }); } $scope.changeGroup = function () { swal({ title: "Do you want to save ?", text: "Update group information ", type: "info", showCancelButton: true, confirmButtonColor: "#6BDD55", confirmButtonText: "Yes, change it!", closeOnConfirm: false }, function () { $scope.sendGroup = angular.copy($scope.tempGroup); $scope.sendGroup.GROUP_PROFILE = JSON.stringify($scope.sendGroup.GROUP_PROFILE); var parameter = { do: 'base.data', data: $scope.sendGroup, name: 'group', mode: 'edit' }; var url = 'core/service.php'; $http.post(url, parameter). success(function (data, status, headers, config) { if (data.STATUS == 'OK') { swal("Changed!", "Data has been changed.", "success"); $scope.selectedGroup.GROUPNAME = angular.copy($scope.sendGroup.GROUPNAME); $scope.selectedGroup.GROUP_PROFILE = angular.copy($scope.sendGroup.GROUP_PROFILE); } else { sweetAlert.swal({ title: '' + data.CODE, text: '' + data.MSG, type: "error" }); } }). error(function (data, status, headers, config) { }); }); } $scope.updateGroupRole = function () { $scope.hasChanged = true; } $scope.addUserToGroup = function () { for (var j = 0; j < $scope.data.user.length; j++) { var user = $scope.data.user[j]; for (var i = 0; i < $scope.data.group.length; i++) { if (user.GID == $scope.data.group[i].GID) { if ($scope.data.group[i].users == undefined) { $scope.data.group[i].users = []; $scope.data.group[i].users.push(user); } else { $scope.data.group[i].users.push(user); } } } } } $scope.addUserToGroup(); }, resolve: { userObj: function ($http) { // $http returns a promise for the url data return $http({ method: 'GET', url: 'core/service.php?do=base.list&name=USER' }); }, groupObj: function ($http) { // $http returns a promise for the url data return $http({ method: 'GET', url: 'core/service.php?do=base.list&name=GROUP' }); }, masterObj: function ($http) { // $http returns a promise for the url data return $http({ method: 'GET', url: 'core/service.php?do=base.list&name=MASTER' }); }, }, data: { module: 'N', pageTitle: 'Setting', pageDesc: 'Setting and Configuration for Base Module.' } }) .state('base.base_appconf', { url: "/base_appconf", templateUrl: "core/modules/base/view/appconf.html", data: { module: 'N', pageTitle: 'Application Configure', pageDesc: 'Get started by this configuration.' } }) .state('base.base_menu', { url: "/base_menu", templateUrl: "core/modules/base/view/menu.html", data: { module: 'N', pageTitle: 'Master Menu', pageDesc: 'Control access any function by this configuration.' } }) .state('base.base_profile', { url: "/base_profile", templateUrl: "core/modules/base/view/profile.html", controller:function ($state, sweetAlert, $http, $scope, $uibModal, global, Excel,$timeout) { $scope.dobj=global.profile.USER; $scope.browseFile = function () { $('#picUserFile').click(); } $scope.uploadProfilePictureFile = function () { try { $('.splash').css('display', 'block'); console.log(document.getElementById('picUserFile').files); var f = document.getElementById('picUserFile').files[0], r = new FileReader(); var type = document.getElementById('picUserFile').files[0].type; r.onloadend = function (e) { var data = e.target.result; $scope.display_transaction = false; $http( { method: 'POST', data: { file: btoa(data), type:type, id: $scope.data.UID, do: 'base.upload_profile_image' }, url: 'core/service.php' } ).then(function (response) { var a=new Date(); var t=a.getTime(); $scope.userProfileImage="core/service.php?do=base.image&name=USER&id="+$scope.data.UID+"&tmp="+t; $('#picUserFile').val(null); $('.splash').css('display', 'none'); }); //send your binary data via $http or $resource or do anything else with it } r.readAsBinaryString(f); } catch (error) { swal("Please check your file again."); $('.splash').css('display', 'none'); } } $scope.updateProfile = function () { swal({ title: "Do you want to save ?", text: "Update User information ", type: "info", showCancelButton: true, confirmButtonColor: "#6BDD55", confirmButtonText: "Yes, change it!", closeOnConfirm: false }, function () { $scope.send_data = angular.copy($scope.dobj); var parameter = { do: 'base.update_profile', data: $scope.send_data}; var url = 'core/service.php'; $http.post(url, parameter). success(function (data, status, headers, config) { if (data.STATUS == 'OK') { swal("Changed!", "Data has been changed.", "success"); } }). error(function (data, status, headers, config) { }); }); } $scope.change_password = function () { var pass=true; if(($scope.dobj.PASS1=='')||($scope.dobj.PASS1==undefined)){ pass=false; swal("Error !", "New Password can not blank.", "error"); } if($scope.dobj.PASS1!=$scope.dobj.PASS2){ pass=false; swal("Error !", "Confirm Password is incorrect.", "error"); } if(pass){ swal({ title: "Do you want to change password ?", text: "Change User Password ", type: "info", showCancelButton: true, confirmButtonColor: "#6BDD55", confirmButtonText: "Yes, change it!", closeOnConfirm: false }, function () { $scope.send_data = angular.copy($scope.dobj); var parameter = { do: 'base.change_password', data: $scope.send_data}; var url = 'core/service.php'; $http.post(url, parameter). success(function (data, status, headers, config) { if (data.STATUS == 'OK') { swal("Changed!", "Password has been changed.", "success"); }else{ sweetAlert.swal({ title: '' + data.CODE, text: '' + data.MSG, type: "error" }); } }). error(function (data, status, headers, config) { }); }); } } }, data: { module: 'N', pageTitle: 'User Profile', pageDesc: 'Profile Setting.' } }) .state('base.bpm_dashboard', bpmDashboardCtrl) /* /var/www/html/performax/app/scripts ../core/modules/wms/config.js */ console.log('load extra js : wms/model/wms_inventory.js'); var wms_inventoryCtrl = { url: "/wms_inventory", templateUrl: "core/modules/wms/view/inventory.html", controller: function ($state, notify, sweetAlert, $http, $scope, $uibModal, loadObj, global) { $scope.profile = global.profile; console.log(loadObj); $scope.data = loadObj.data; $scope.tab = ''; $scope.cond = {}; $scope.parserData = function () { $scope.qty_pid = {}; $scope.qty_location = {}; if ($scope.data.list != undefined) { for (i = 0; i < $scope.data.list.length; i++) { if ($scope.data.list[i].pid != undefined) { $scope.qty_pid['p_' + $scope.data.list[i].pid] = $scope.data.list[i].qty; } } } if ($scope.profile.PRODUCT != undefined) { for (i = 0; i < $scope.profile.PRODUCT.length; i++) { if ($scope.qty_pid['p_' + $scope.profile.PRODUCT[i].pid] != undefined) { $scope.profile.PRODUCT[i].onhand = $scope.qty_pid['p_' + $scope.profile.PRODUCT[i].pid]; } else { $scope.profile.PRODUCT[i].onhand = 0; } } } } $scope.reloadTab = function (tab) { $scope.tab = tab; $scope.reload(); } $scope.checkEnter = function (event) { if (event.keyCode == 13) { $scope.reload(); } } $scope.readBarcode = function (event) { if (event.keyCode == 13) { $scope.search = $scope.scanner; $scope.scanner = ''; } } $scope.reload = function () { $('.splash').css('display', 'block'); var parameter = { do: 'wms.dashboard', dataset: 'inventory', tab: $scope.tab, cond: $scope.cond }; var url = 'core/service.php'; $http.post(url, parameter). success(function (data, status, headers, config) { $('.splash').css('display', 'none'); if (data.STATUS == 'OK') { $scope.data = data; $scope.parserData(); } else { sweetAlert.swal({ title: 'Error', text: '' + data.MSG, type: "error" }); } }). error(function (data, status, headers, config) { $('.splash').css('display', 'none'); sweetAlert.swal({ title: '' + status, text: '' + data, type: "error" }); }); } $scope.selectDoc = function (doc) { $scope.editData(doc); } $scope.openProductInventory = function (obj) { var parameter = { do: 'wms.process', name: 'load.product', data: obj }; var url = 'core/service.php'; $http.post(url, parameter). success(function (data, status, headers, config) { if (data.STATUS == 'OK') { obj.list = data.DATA.list; obj.stockcard_before = data.DATA.stockcard_before; obj.stockcard = data.DATA.stockcard; obj.stocksum = data.DATA.stocksum; var modalPath = "core/modules/wms/view/form-wms-product.html"; var modalInstance = $uibModal.open({ backdrop: 'static', keyboard: false, templateUrl: modalPath, size: 'lg', controller: ModalInstanceCtrl_wms_product, resolve: { info: { obj: obj, } } }); modalInstance.result.then(function (response) { console.log(response); // reload dashboard $scope.reload(); // $scope.loadMasterFile($scope.selectedTable); }, function () { //console.log('Cancel'); }); } else { sweetAlert.swal({ title: 'Error', text: '' + data.MSG, type: "error" }); } }). error(function (data, status, headers, config) { $('.splash').css('display', 'none'); sweetAlert.swal({ title: '' + status, text: '' + data, type: "error" }); }); } $scope.openLocationInventory = function (obj) { var parameter = { do: 'wms.process', name: 'load.location', data: obj, location: obj.location }; var url = 'core/service.php'; $http.post(url, parameter). success(function (data, status, headers, config) { if (data.STATUS == 'OK') { obj.list = data.DATA.list; obj.stockcard_before = data.DATA.stockcard_before; obj.stockcard = data.DATA.stockcard; obj.stocksum = data.DATA.stocksum; var modalPath = "core/modules/wms/view/form-wms-location.html"; var modalInstance = $uibModal.open({ backdrop: 'static', keyboard: false, templateUrl: modalPath, size: 'lg', // reuse modal controller: ModalInstanceCtrl_wms_product, resolve: { info: { obj: obj, } } }); modalInstance.result.then(function (response) { console.log(response); // reload dashboard $scope.reload(); // $scope.loadMasterFile($scope.selectedTable); }, function () { //console.log('Cancel'); }); } else { sweetAlert.swal({ title: 'Error', text: '' + data.MSG, type: "error" }); } }). error(function (data, status, headers, config) { $('.splash').css('display', 'none'); sweetAlert.swal({ title: '' + status, text: '' + data, type: "error" }); }); } $scope.newDoc = function (obj, key, mode, modalPath, mobj, title, subtitle) { var modalInstance = $uibModal.open({ backdrop: 'static', keyboard: false, templateUrl: modalPath, size: 'lg', controller: ModalInstanceCtrl_wmsdoc, resolve: { info: { key: key, obj: obj, mobj: mobj, mode: mode, title: title, sub_title: subtitle } } }); modalInstance.result.then(function (response) { console.log(response); // reload dashboard $scope.reload(); // $scope.loadMasterFile($scope.selectedTable); }, function () { //console.log('Cancel'); }); } $scope.editData = function (obj) { var parameter = { do: 'wms.process', name: 'load.doc', data: obj }; var url = 'core/service.php'; $http.post(url, parameter). success(function (data, status, headers, config) { if (data.STATUS == 'OK') { var modalPath = "core/modules/wms/view/form-wms-" + obj.wms_operation_type + ".html"; $scope.newDoc(data.DATA, $scope.fls, 'edit', modalPath, $scope.selectedTable, obj.wms_operation, obj.form_subtitle); } else { sweetAlert.swal({ title: 'Error', text: '' + data.MSG, type: "error" }); } }). error(function (data, status, headers, config) { $('.splash').css('display', 'none'); sweetAlert.swal({ title: '' + status, text: '' + data, type: "error" }); }); } $scope.newData = function (obj) { obj.plan_datetime = (new Date()).toISOString(); var modalPath = "core/modules/wms/view/form-wms-" + obj.wms_operation_type + ".html"; $scope.newDoc(obj, $scope.fls, 'new', modalPath, $scope.selectedTable, obj.wms_operation, obj.form_subtitle); } $scope.parserData(); }, resolve: { loadObj: function ($http) { // $http returns a promise for the url data return $http({ method: 'GET', url: 'core/service.php?do=wms.dashboard&dataset=inventory' }); }, }, data: { module: 'N', pageTitle: 'Dashboard', pageDesc: 'Dashboard' } }; console.log('load extra js : wms/model/wms.js'); // WMSDOC Start Modal ----------------------------------------------------------------------------------- function ModalInstanceCtrl_wmsdoc(sweetAlert, $http, $scope, sweetAlert, $uibModalInstance, info, global, $window, $uibModal, $rootScope, $firebaseObject, $firebaseArray, $firebaseStorage) { $scope.profile = global.profile; $scope.data = angular.copy(info.obj); $scope.dobj = angular.copy(info.obj); $scope.schema = info.key; $scope.mode = info.mode; $scope.mobj = info.mobj; $scope.title = info.title; $scope.sub_title = info.sub_title; $rootScope.sendPrinterESC = function (textstr) { sweetAlert.swal({ title: "Print label", text: "Do you want to print label ? \n คุณต้องการพิมพ์ป้ายรหัสสินค้าใช่หรือไม่ ", type: "info", showCancelButton: true, confirmButtonColor: "#556BDD", confirmButtonText: "Confirm / ยืนยัน", closeOnConfirm: true }, function (isConfirm) { if (isConfirm) { // let encoder = new TextEncoder("utf-8"); // let text = encoder.encode('\x1B\x74\x60\u0E01'+"กNo 60 ภาษาไทย "+textstr+ '\u000A\u000D'+'\u000A\u000D'+'\u000A\u000D'); var str = '\x1B\x74\xFF' + textstr + '\u000A\u000D'; //var str = '\x1B\x74\x60' + textstr + '\u000A\u000D'; var bytes = new Uint8Array(textstr.length + 5); // char codes for (var i = 0; i < str.length; ++i) { var code = str.charCodeAt(i); if (code > 3424) { code -= 3424; } bytes[i] = code; } //console.log('bytes', bytes); return $rootScope.printCharacteristic.writeValue(bytes).then(() => { console.log('Write done.'); }); } else { } }); } $scope.genEscQR = function (qrcode) { var esc = "\x1B\x5A\x00\x03\x05" + String.fromCharCode(qrcode.length) + "\x00" + qrcode + ""; return esc; } $scope.genEscBarcode = function (qrcode) { var esc = "\x1D\x6D\x05000001\x00"; return esc; } $scope.genLabel = function () { var esc = ""; for (var i = 0; i < $scope.dobj.items.length; i++) { qrcode = $scope.dobj.items[i].code; if ($scope.dobj.items[i].qty > 0) { for (var j = 0; j < $scope.dobj.items[i].qty; j++) { esc += "\x1b\x61\x01" + qrcode + "\n\r" + $scope.genEscQR(qrcode) + "\n\r"; } } } return esc; } $scope.parseData = function (data) { $scope.dobj = data; var d = new Date($scope.dobj.plan_datetime.replace(' ', 'T')); $scope.dobj.plan_datetime = d; if ($scope.dobj.items == undefined) { $scope.dobj.items = []; } for (i = 0; i < $scope.dobj.items.length; i++) { $scope.dobj.items[i]['qty'] = parseFloat($scope.dobj.items[i]['qty']); if ($scope.dobj.items[i].locations == undefined) { $scope.dobj.items[i].locations = []; } for (j = 0; j < $scope.dobj.items[i].locations.length; j++) { $scope.dobj.items[i]['locations'][j]['qty'] = parseFloat($scope.dobj.items[i]['locations'][j]['qty']); } } if ($scope.dobj.wms_operation_type == 'transfer') { $scope.item_type = 'pick'; } if ($scope.dobj.wms_operation_type == 'receive') { $scope.item_type = 'receive'; } if ($scope.dobj.wms_operation_type == 'delivery') { $scope.item_type = 'pick'; } } $scope.newDoc = function (obj, key, mode, modalPath, mobj, title, subtitle) { var modalInstance = $uibModal.open({ backdrop: 'static', keyboard: false, templateUrl: modalPath, size: 'lg', controller: ModalInstanceCtrl_wms_product, resolve: { info: { key: key, obj: obj, mobj: mobj, mode: mode, title: title, sub_title: subtitle } } }); modalInstance.result.then(function (response) { // console.log(response); }, function () { //console.log('Cancel'); }); } $scope.modal_location = function (idx) { // overwrite pid var modalPath = "core/modules/wms/view/form-wms-item-location.html"; var modalInstance = $uibModal.open({ backdrop: 'static', keyboard: false, templateUrl: modalPath, size: 'md', controller: ModalInstanceCtrl_wms_location, resolve: { info: { obj: $scope.dobj.items[idx], mobj: $scope.dobj, } } }); modalInstance.result.then(function (response) { $scope.dobj.items[idx].locations = response.data.locations; if ($scope.dobj.items[idx].locations != undefined) { $scope.dobj.items[idx].qty_actual = 0; for (i = 0; i < $scope.dobj.items[idx].locations.length; i++) { $scope.dobj.items[idx].qty_actual += $scope.dobj.items[idx].locations[i].qty; } if ($scope.dobj.items[idx].qty != $scope.dobj.items[idx].qty_actual) { $scope.qty_not_match = true; } } // console.log(response); }, function () { //console.log('Cancel'); }); } $scope.print = function (type) { if ($scope.dobj.wms_rid > 0) { var url = "pdf/wms.php?ID=" + $scope.dobj.wms_rid; window.open(url); } } $scope.view_product = function () { var modalPath = "core/modules/wms/view/form-wms-product.html"; $scope.newDoc({ wms_operation: 'Receive', wms_operation_type: 'receive' }, $scope.fls, 'new', modalPath, $scope.selectedTable, 'Receive', 'นำสินค้าเข้าคลัง'); } $scope.setProduct = function (idx, prod) { if ($scope.dobj.items != undefined) { $scope.dobj.items[idx]['pid'] = prod['pid']; $scope.dobj.items[idx]['code'] = prod['code']; $scope.dobj.items[idx]['desc'] = prod['desc']; } } $scope.updateSum = function () { $scope.sumSKU = 0; for (i = 0; i < $scope.dobj.items.length; i++) { if ($scope.dobj.items[i].qty != undefined) { $scope.sumSKU += $scope.dobj.items[i].qty; } if ($scope.dobj.items[i].qty_actual != undefined) { if ($scope.dobj.items[i].qty != $scope.dobj.items[i].qty_actual) { $scope.qty_not_match = true; } } else { $scope.qty_not_match = true; } } } $scope.setQtyPlan = function () { for (i = 0; i < $scope.dobj.items.length; i++) { if ($scope.dobj.items[i].qty_actual != undefined) { if ($scope.dobj.items[i].qty != undefined) { if ($scope.dobj.items[i].qty > $scope.dobj.items[i].qty_actual) { var diff = $scope.dobj.items[i].qty - $scope.dobj.items[i].qty_actual; $scope.dobj.items[i].locations.push({ ts: 0, location: $scope.dobj.destination, owner: $scope.dobj.owner_name, qty: diff }); } else { $scope.dobj.items[i].qty = $scope.dobj.items[i].qty_actual; } } } else { if ($scope.dobj.items[i].qty != undefined) { $scope.dobj.items[i].locations = [{ ts: 0, location: $scope.dobj.destination, owner: $scope.dobj.owner_name, qty: $scope.dobj.items[i].qty }]; $scope.dobj.items[i].qty_actual = $scope.dobj.items[i].qty; } } } $scope.qty_not_match = false; } $scope.validate = function () { var passed = true; var error = []; // 1. ตรวจว่าจำนวนที่ done เท่ากับ plan for (i = 0; i < $scope.dobj.items.length; i++) { if ($scope.dobj.items[i].code == undefined) { error.push("[No. " + (i + 1) + "] Product code not found / ไม่พบรหัสสินค้าในรายการ"); } if ($scope.dobj.items[i].code == undefined) { error.push("[No. " + (i + 1) + "] Quantity is empty / จำนวนในรายการไม่ถูกต้อง"); } if ($scope.dobj.items[i].locations != undefined) { for (j = 0; j < $scope.dobj.items[i].locations.length; j++) { if ($scope.dobj.items[i].locations[j].location == undefined) { error.push("[No. " + (i + 1) + "-" + (j + 1) + "] Location not found / ไม่พบรหัสสถานที่ในรายการ"); } if ($scope.dobj.items[i].locations[j].qty == undefined) { error.push("[No. " + (i + 1) + "-" + (j + 1) + "] Quantity is empty / จำนวนในรายการไม่ถูกต้อง"); } } } } // 2. ตรวจสอบว่ามี location ครบทุกรายการ // 3. ตรวจสอบว่ามี product ครบ // 4. ตรวจสอบว่ามี qty ครบ if ($scope.dobj.items.length < 1) { error.push("Item not found / ไม่พบรายการ"); } if (error.length > 0) { passed = false; } if (passed) { if ($scope.dobj.wms_operation_type == 'receive') { $scope.dobj.status = 'putaway'; $scope.dobj.receive_by = $scope.profile.USER.USERNAME; $scope.dobj.receive_date = new Date(); } if ($scope.dobj.wms_operation_type == 'delivery') { $scope.dobj.status = 'confirm_do'; } if ($scope.dobj.wms_operation_type == 'transfer') { $scope.dobj.status = 'confirm_transfer'; } sweetAlert.swal({ title: "Save data ?", text: "Do you want to save this document \n คุณต้องการบันทึกการทำงานหรือไม่ ", type: "info", showCancelButton: true, confirmButtonColor: "#556BDD", confirmButtonText: "Save / บันทึก", closeOnConfirm: true }, function (isConfirm) { if (isConfirm) { $('.splash').css('display', 'block'); $scope.ok(); } else { } }); } else { sweetAlert.swal({ title: "Please check / กรุณาตรวจสอบ", text: error.join("\n"), type: "warning", }); } } $scope.confirm_approve = function () { if ($scope.check_role('RECEIVE_APPROVE')) { sweetAlert.swal({ title: "Confirm Approve ?", text: "Do you want to approve this document \n คุณต้องการยืนยันการอนุมัติเอกสารหรือไม่ ", type: "info", showCancelButton: true, confirmButtonColor: "#556BDD", confirmButtonText: "Confirm / ยืนยัน", closeOnConfirm: true }, function (isConfirm) { if (isConfirm) { $('.splash').css('display', 'block'); $scope.dobj.is_approve = 'Y'; $scope.dobj.approve_by = $scope.profile.USER.USERNAME; $scope.dobj.approve_date = new Date(); $scope.dobj.approve_status = 'approved'; $scope.ok(); } else { } }); } else { sweetAlert.swal({ title: 'Permission denied', text: 'Please contact admin user ', type: "error" }); } } $scope.confirm_done = function () { sweetAlert.swal({ title: "Confirm done ?", text: "Do you want to confirm this document \n คุณต้องการยืนยันการทำงานเสร็จสิ้นหรือไม่ ", type: "info", showCancelButton: true, confirmButtonColor: "#556BDD", confirmButtonText: "Confirm / ยืนยัน", closeOnConfirm: true }, function (isConfirm) { if (isConfirm) { $('.splash').css('display', 'block'); $scope.dobj.is_done = 'Y'; $scope.dobj.done_by = $scope.profile.USER.USERNAME; $scope.dobj.done_date = new Date(); $scope.ok(); } else { } }); } $scope.readBarcode = function (event) { // if (event.keyCode == 13) { if (event.which == 13) { console.log($scope.scanner); var prod = null; for (i = 0; i < global.profile.PRODUCT.length; i++) { if ($scope.scanner == global.profile.PRODUCT[i].code) { prod = angular.copy(global.profile.PRODUCT[i]); console.log(prod); } } if (prod == null) { // not found alert to ask detail if (confirm("New Product / ต้องการสร้างสินค้าใหม่หรือไม่ [" + $scope.scanner + "] ?")) { prod = { code: $scope.scanner, desc: $scope.scanner }; $('.splash').css('display', 'block'); var send_data = prod; var parameter = { do: 'wms.process', name: 'add.product', data: send_data }; var url = 'core/service.php'; $http.post(url, parameter). success(function (data, status, headers, config) { $('.splash').css('display', 'none'); if (data.STATUS == 'OK') { console.log(global.profile.PRODUCT); global.profile.PRODUCT.push(prod); console.log(global.profile.PRODUCT); if ($scope.dobj.items == undefined) { $scope.dobj.items = []; var d = new Date(); prod.ts = d.getTime(); prod.qty = 1; if ($scope.item_type != undefined) { prod.item_type = $scope.item_type; } $scope.dobj.items.push(prod); $scope.lastBarcode = $scope.dobj.items.length - 1; } else { var found = false; for (i = 0; i < $scope.dobj.items.length; i++) { if ((prod.code == $scope.dobj.items[i].code) && (($scope.item_type == undefined) || ($scope.dobj.items[i].item_type == $scope.item_type))) { if ($scope.dobj.items[i].qty == undefined) { $scope.dobj.items[i].qty = 0; } $scope.dobj.items[i].qty++; found = true; $scope.lastBarcode = i; } } if (!found) { var d = new Date(); prod.ts = d.getTime(); prod.qty = 1; if ($scope.item_type != undefined) { prod.item_type = $scope.item_type; } $scope.dobj.items.push(prod); $scope.lastBarcode = $scope.dobj.items.length - 1; } } } else { sweetAlert.swal({ title: 'Error', text: '' + data.MSG, type: "error" }); } }). error(function (data, status, headers, config) { $('.splash').css('display', 'none'); sweetAlert.swal({ title: '' + status, text: '' + data, type: "error" }); }); } } else { // found -> check existing add qty if ($scope.dobj.items == undefined) { $scope.dobj.items = []; var d = new Date(); prod.ts = d.getTime(); prod.qty = 1; if ($scope.item_type != undefined) { prod.item_type = $scope.item_type; } $scope.dobj.items.push(prod); $scope.lastBarcode = $scope.dobj.items.length - 1; } else { var found = false; for (i = 0; i < $scope.dobj.items.length; i++) { if ((prod.code == $scope.dobj.items[i].code) && (($scope.item_type == undefined) || ($scope.dobj.items[i].item_type == $scope.item_type))) { if ($scope.dobj.items[i].qty == undefined) { $scope.dobj.items[i].qty = 0; } $scope.dobj.items[i].qty++; found = true; $scope.lastBarcode = i; } } if (!found) { var d = new Date(); prod.ts = d.getTime(); prod.qty = 1; if ($scope.item_type != undefined) { prod.item_type = $scope.item_type; } $scope.dobj.items.push(prod); $scope.lastBarcode = $scope.dobj.items.length - 1; } } } $scope.updateSum(); $scope.scanner = ''; } } $scope.add_item = function (item_type) { var d = new Date(); if ($scope.dobj.items == undefined) { $scope.dobj.items = [{ ts: d.getTime(), item_type: item_type }]; } else { $scope.dobj.items.push({ ts: d.getTime(), item_type: item_type }); } } $scope.copy_item = function (item_type) { var d = new Date(); if ($scope.dobj.items != undefined) { for (i = 0; i < $scope.dobj.items.length; i++) { if ($scope.dobj.items[i].item_type != item_type) { var newitem = angular.copy($scope.dobj.items[i]); newitem.item_type = item_type; delete newitem.item_id; newitem.ts = d.getTime().toString() + "_" + i; $scope.dobj.items.push(newitem); } } } } $scope.clear_item = function (item_type) { if ($scope.is_admin() || ($scope.dobj.is_approve != 'Y')) { if ($scope.dobj.items != undefined) { for (i = $scope.dobj.items.length - 1; i >= 0; i--) { if ($scope.dobj.items[i].item_type == item_type) { $scope.delete_item(i); } } } } else { sweetAlert.swal({ title: 'Permission denied', text: 'Please contact admin user for delete transaction', type: "error" }); } } $scope.delete_item = function (idx) { if ($scope.is_admin() || ($scope.dobj.is_approve != 'Y')) { if ($scope.dobj.items != undefined) { $scope.dobj.items.splice(idx, 1) } } else { sweetAlert.swal({ title: 'Permission denied', text: 'Please contact admin user for delete transaction', type: "error" }); } } $scope.is_admin = function () { var idx = -1; var checkString = ''; // console.log($scope.profile.CONFIG); for (var i = 0; i < $scope.profile.CONFIG.length; i++) { if ($scope.profile.CONFIG[i].code == 'RECEIVE_ADMIN') { idx = i; checkString = $scope.profile.CONFIG[i].value; // console.log($scope.profile.CONFIG[i].value); } } if (idx == -1) { return false; } else if (checkString.includes('"' + $scope.profile.USER.USERNAME + '"')) { return true; } else { return false; } } $scope.check_role = function (role) { var idx = -1; var checkString = ''; // console.log($scope.profile.CONFIG); for (var i = 0; i < $scope.profile.CONFIG.length; i++) { if ($scope.profile.CONFIG[i].code == role) { idx = i; checkString = $scope.profile.CONFIG[i].value; // console.log('found', role, $scope.profile.CONFIG[i].value); } } if (idx == -1) { return false; } else if (checkString.includes('"' + $scope.profile.USER.USERNAME + '"')) { return true; } else { return false; } } $scope.delete = function () { if ($scope.is_admin() || ($scope.dobj.is_approve != 'Y')) { sweetAlert.swal({ title: "Are you sure?", text: "You will not be able to recover this data!", type: "warning", showCancelButton: true, confirmButtonColor: "#DD6B55", confirmButtonText: "Yes, delete it!", closeOnConfirm: true }, function (isConfirm) { if (isConfirm) { $('.splash').css('display', 'block'); var send_data = angular.copy($scope.dobj); var parameter = { do: 'wms.process', name: 'delete.doc', data: send_data, mode: 'delete' }; var url = 'core/service.php'; $http.post(url, parameter). success(function (data, status, headers, config) { $('.splash').css('display', 'none'); if (data.STATUS == 'OK') { $uibModalInstance.close({ status: "OK", data: send_data }); } else { sweetAlert.swal({ title: 'Error', text: '' + data.MSG, type: "error" }); } }). error(function (data, status, headers, config) { $('.splash').css('display', 'none'); sweetAlert.swal({ title: '' + status, text: '' + data, type: "error" }); }); } else { } }); } else { sweetAlert.swal({ title: 'Permission denied', text: 'Please contact admin user for delete transaction', type: "error" }); } }; $scope.openWin = function (url) { window.open(url); } $scope.onChange = function (fileList, attrs) { $('.splash').css('display', 'block'); var d = new Date(); var storageRef = firebase.storage().ref('temp/' + appid + '/' + d.getTime() + "_" + fileList[0].name); var storage = $firebaseStorage(storageRef); var uploadTask = storage.$put(fileList[0]); uploadTask.$complete(function (snapshot) { $scope.dobj[attrs.fname] = snapshot.downloadURL; $('.splash').css('display', 'none'); }); } $scope.newData = function (doc) { for (var i = 0; i < doc.items.length; i++) { doc.items[i].item_id = ''; doc.items[i].hid = ''; if (doc.items[i].item_type == 'pick') { doc.items[i].item_type = 'receive'; } else { doc.items[i].item_type = 'pick'; } if (doc.items[i]['locations'] != undefined) { for (var j = 0; j < doc.items[i]['locations'].length; j++) { doc.items[i].locations[j].lid = ''; doc.items[i].locations[j].hid = ''; doc.items[i].locations[j].item_id = ''; doc.items[i].locations[j].create_date = ''; doc.items[i].locations[j].create_by = ''; } } } $uibModalInstance.close({ status: "NEWDOC", data: doc }); }; $scope.ok = function () { $('.splash').css('display', 'block'); if ($scope.dobj.plan_datetime != undefined) { var d = new Date($scope.dobj.plan_datetime); $scope.dobj.plan_datetime = new Date(d.getTime() - (d.getTimezoneOffset() * 60000)).toISOString(); } var send_data = angular.copy($scope.dobj); var parameter = { do: 'wms.process', name: 'update.doc', mobj: $scope.mobj, data: send_data, old_data: $scope.data, mode: $scope.mode }; var url = 'core/service.php'; $http.post(url, parameter). success(function (data, status, headers, config) { if (data.STATUS == 'OK') { $('.splash').css('display', 'none'); $uibModalInstance.close({ status: "OK", data: send_data }); } else { sweetAlert.swal({ title: 'Error', text: '' + data.MSG, type: "error" }); } }). error(function (data, status, headers, config) { $('.splash').css('display', 'none'); sweetAlert.swal({ title: '' + status, text: '' + data, type: "error" }); }); }; $scope.cancel = function () { $uibModalInstance.dismiss('cancel'); }; $scope.parseData(info.obj); }; // WMSDOC End Modal --------------------------------------------------------------------------------------------------------- // LOCATION Start Modal ----------------------------------------------------------------------------------- function ModalInstanceCtrl_wms_location(sweetAlert, $http, $scope, sweetAlert, $uibModalInstance, info, global, $window, $firebaseObject, $firebaseArray, $firebaseStorage) { $scope.profile = global.profile; $scope.dobj = angular.copy(info.obj); $scope.mobj = angular.copy(info.mobj); // filter location with destination prefix if ($scope.dobj.item_type == 'pick') { $scope.filter_location = $scope.mobj.source; } if ($scope.dobj.item_type == 'receive') { $scope.filter_location = $scope.mobj.destination; } if (($scope.dobj.locations == undefined) || ($scope.dobj.locations.length == 0)) { var d = new Date(); $scope.dobj.locations = [{ ts: d.getTime(), location: $scope.filter_location, owner: $scope.mobj.owner_name, qty: $scope.dobj.qty }]; } $scope.add_item = function () { var d = new Date(); if ($scope.dobj.locations == undefined) { $scope.dobj.locations = [{ ts: d.getTime() }]; } else { $scope.dobj.locations.push({ ts: d.getTime() }); } } $scope.delete_item = function (idx) { if ($scope.dobj.locations != undefined) { $scope.dobj.locations.splice(idx, 1); } } $scope.showQty = async function (idx) { var data = await global.post({ do: 'wms.process', name: 'check.location', pid: $scope.dobj.pid }); if (data.data.DATA != undefined) { $scope.on_hand = data.data.DATA.list; if ($scope.on_hand != undefined) { $scope.total_onhand = 0; for (i = 0; i < $scope.on_hand.length; i++) { $scope.on_hand[i].qty = parseFloat($scope.on_hand[i].qty); $scope.total_onhand += $scope.on_hand[i].qty; } } } } $scope.ok = function () { $uibModalInstance.close({ status: "OK", data: $scope.dobj }); }; $scope.cancel = function () { $uibModalInstance.dismiss('cancel'); }; $scope.showQty(); }; // LOCATION End Modal --------------------------------------------------------------------------------------------------------- // PRODUCT Start Modal ----------------------------------------------------------------------------------- function ModalInstanceCtrl_wms_product(sweetAlert, $http, $scope, sweetAlert, $uibModalInstance, info, global, $uibModal, $window, $firebaseObject, $firebaseArray, $firebaseStorage) { $scope.profile = global.profile; $scope.dobj = angular.copy(info.obj); $scope.selectDoc = function (doc) { $scope.editData(doc); } $scope.newDoc = function (obj, key, mode, modalPath, mobj, title, subtitle) { var modalInstance = $uibModal.open({ backdrop: 'static', keyboard: false, templateUrl: modalPath, size: 'lg', controller: ModalInstanceCtrl_wmsdoc, resolve: { info: { key: key, obj: obj, mobj: mobj, mode: mode, title: title, sub_title: subtitle } } }); modalInstance.result.then(function (response) { console.log(response); // reload dashboard $scope.reload(); // $scope.loadMasterFile($scope.selectedTable); }, function () { //console.log('Cancel'); }); } $scope.editData = function (obj) { var parameter = { do: 'wms.process', name: 'load.doc', data: obj }; var url = 'core/service.php'; $http.post(url, parameter). success(function (data, status, headers, config) { if (data.STATUS == 'OK') { var modalPath = "core/modules/wms/view/form-wms-" + obj.wms_operation_type + ".html"; $scope.newDoc(data.DATA, $scope.fls, 'edit', modalPath, $scope.selectedTable, obj.wms_operation, obj.form_subtitle); } else { sweetAlert.swal({ title: 'Error', text: '' + data.MSG, type: "error" }); } }). error(function (data, status, headers, config) { $('.splash').css('display', 'none'); sweetAlert.swal({ title: '' + status, text: '' + data, type: "error" }); }); } $scope.reload = function () { var parameter = { do: 'wms.process', name: 'load.product', data: $scope.dobj }; var url = 'core/service.php'; $http.post(url, parameter). success(function (data, status, headers, config) { if (data.STATUS == 'OK') { $scope.dobj.list = data.DATA.list; $scope.dobj.stockcard_before = data.DATA.stockcard_before; $scope.dobj.stockcard = data.DATA.stockcard; $scope.dobj.stocksum = data.DATA.stocksum; } else { sweetAlert.swal({ title: 'Error', text: '' + data.MSG, type: "error" }); } }). error(function (data, status, headers, config) { $('.splash').css('display', 'none'); sweetAlert.swal({ title: '' + status, text: '' + data, type: "error" }); }); } $scope.modal_adjust_qty = function (obj, mobj) { var modalPath = "core/modules/wms/view/form-wms-adjust-qty.html"; var modalInstance = $uibModal.open({ backdrop: 'static', keyboard: false, templateUrl: modalPath, size: 'md', controller: ModalInstanceCtrl_wms_adjust_qty, resolve: { info: { obj: obj, mobj: mobj, } } }); modalInstance.result.then(function (response) { console.log(response); // reload dashboard $scope.reload(); // $scope.loadMasterFile($scope.selectedTable); }, function () { //console.log('Cancel'); }); } $scope.ok = function () { $('.splash').css('display', 'block'); var send_data = angular.copy($scope.dobj); var parameter = { do: 'wms.process', name: 'update.product', mobj: $scope.mobj, data: send_data, old_data: $scope.data, mode: $scope.mode }; var url = 'core/service.php'; $http.post(url, parameter). success(function (data, status, headers, config) { if (data.STATUS == 'OK') { $('.splash').css('display', 'none'); for (i = 0; i < global.profile.PRODUCT.length; i++) { if (send_data.pid == global.profile.PRODUCT[i].pid) { global.profile.PRODUCT[i] = data.UPDATED; } } $uibModalInstance.close({ status: "OK", data: send_data }); } else { sweetAlert.swal({ title: 'Error', text: '' + data.MSG, type: "error" }); } }). error(function (data, status, headers, config) { $('.splash').css('display', 'none'); sweetAlert.swal({ title: '' + status, text: '' + data, type: "error" }); }); }; $scope.cancel = function () { $uibModalInstance.dismiss('cancel'); }; }; // PRODUCT End Modal --------------------------------------------------------------------------------------------------------- // ADJUST Start Modal ----------------------------------------------------------------------------------- function ModalInstanceCtrl_wms_adjust_qty(sweetAlert, $http, $scope, sweetAlert, $uibModalInstance, info, global, $window, $firebaseObject, $firebaseArray, $firebaseStorage) { $scope.profile = global.profile; $scope.dobj = angular.copy(info.obj); $scope.mobj = angular.copy(info.mobj); $scope.ok = function () { $('.splash').css('display', 'block'); var send_data = angular.copy($scope.dobj); var parameter = { do: 'wms.process', name: 'adjust.qty', data: send_data, mobj: $scope.mobj }; var url = 'core/service.php'; $http.post(url, parameter). success(function (data, status, headers, config) { if (data.STATUS == 'OK') { $('.splash').css('display', 'none'); $uibModalInstance.close({ status: "OK", data: send_data }); } else { sweetAlert.swal({ title: 'Error', text: '' + data.MSG, type: "error" }); } }). error(function (data, status, headers, config) { $('.splash').css('display', 'none'); sweetAlert.swal({ title: '' + status, text: '' + data, type: "error" }); }); }; $scope.cancel = function () { $uibModalInstance.dismiss('cancel'); }; }; // ADJUST End Modal --------------------------------------------------------------------------------------------------------- // GENERAL Start Modal ----------------------------------------------------------------------------------- function ModalInstanceCtrl_wms_general(sweetAlert, $http, $scope, sweetAlert, $uibModalInstance, info, global, $window, $firebaseObject, $firebaseArray, $firebaseStorage) { $scope.profile = global.profile; $scope.dobj = angular.copy(info.obj); $scope.ok = function () { var send_data = angular.copy($scope.dobj); $uibModalInstance.close({ status: "OK", data: send_data }); }; $scope.cancel = function () { $uibModalInstance.dismiss('cancel'); }; }; // ADJUST End Modal --------------------------------------------------------------------------------------------------------- console.log('load extra js : wms/model/wms_transaction.js'); var wms_transactionCtrl = { url: "/wms_transaction", templateUrl: "core/modules/wms/view/transaction.html", controller: function ($state, notify, sweetAlert, $http, $scope, $uibModal, loadObj, global) { $scope.profile = global.profile; console.log(loadObj); $scope.data = loadObj.data; $scope.tab = ''; $scope.cond = {}; $scope.reloadTab = function (tab) { $scope.tab = tab; $scope.reload(); } $scope.checkEnter = function (event) { if (event.keyCode == 13) { $scope.reload(); } } $scope.reload = function () { $('.splash').css('display', 'block'); var parameter = { do: 'wms.dashboard', dataset: 'transaction', tab: $scope.tab, cond: $scope.cond }; var url = 'core/service.php'; $http.post(url, parameter). success(function (data, status, headers, config) { $('.splash').css('display', 'none'); if (data.STATUS == 'OK') { $scope.data = data; } else { sweetAlert.swal({ title: 'Error', text: '' + data.MSG, type: "error" }); } }). error(function (data, status, headers, config) { $('.splash').css('display', 'none'); sweetAlert.swal({ title: '' + status, text: '' + data, type: "error" }); }); } $scope.selectDoc = function (doc) { $scope.editData(doc); } $scope.newDoc = function (obj, key, mode, modalPath, mobj, title, subtitle) { var modalInstance = $uibModal.open({ backdrop: 'static', keyboard: false, templateUrl: modalPath, size: 'lg', controller: ModalInstanceCtrl_wmsdoc, resolve: { info: { key: key, obj: obj, mobj: mobj, mode: mode, title: title, sub_title: subtitle } } }); modalInstance.result.then(function (response) { console.log(response); // $scope.loadMasterFile($scope.selectedTable); if (response.status == 'NEWDOC') { $scope.newData(response.data); } else { // reload dashboard $scope.reload(); } }, function () { //console.log('Cancel'); }); } $scope.editData = function (obj) { var parameter = { do: 'wms.process', name: 'load.doc', data: obj }; var url = 'core/service.php'; $http.post(url, parameter). success(function (data, status, headers, config) { if (data.STATUS == 'OK') { var modalPath = "core/modules/wms/view/form-wms-" + obj.wms_operation_type + ".html"; $scope.newDoc(data.DATA, $scope.fls, 'edit', modalPath, $scope.selectedTable, obj.wms_operation, obj.form_subtitle); } else { sweetAlert.swal({ title: 'Error', text: '' + data.MSG, type: "error" }); } }). error(function (data, status, headers, config) { $('.splash').css('display', 'none'); sweetAlert.swal({ title: '' + status, text: '' + data, type: "error" }); }); } $scope.newData = function (obj) { obj.plan_datetime = (new Date()).toISOString(); var modalPath = "core/modules/wms/view/form-wms-" + obj.wms_operation_type + ".html"; $scope.newDoc(obj, $scope.fls, 'new', modalPath, $scope.selectedTable, obj.wms_operation, obj.form_subtitle); } }, resolve: { loadObj: function ($http) { // $http returns a promise for the url data return $http({ method: 'GET', url: 'core/service.php?do=wms.dashboard&dataset=transaction' }); }, }, data: { module: 'N', pageTitle: 'Dashboard', pageDesc: 'Dashboard' } }; console.log('load extra js : wms/model/wms_app.js'); var wms_appCtrl = { url: "/wms_app", templateUrl: "core/modules/wms/view/dashboard.html", controller: function ($state, notify, sweetAlert, $http, $scope, $uibModal, loadObj, global) { $scope.profile = global.profile; console.log(loadObj); $scope.data = loadObj.data; $scope.reload = function () { $('.splash').css('display', 'block'); var parameter = { do: 'wms.dashboard' }; var url = 'core/service.php'; $http.post(url, parameter). success(function (data, status, headers, config) { $('.splash').css('display', 'none'); if (data.STATUS == 'OK') { $scope.data = data; } else { sweetAlert.swal({ title: 'Error', text: '' + data.MSG, type: "error" }); } }). error(function (data, status, headers, config) { $('.splash').css('display', 'none'); sweetAlert.swal({ title: '' + status, text: '' + data, type: "error" }); }); } $scope.selectDoc = function (doc) { $scope.editData(doc); } $scope.newDoc = function (obj, key, mode, modalPath, mobj, title, subtitle) { var modalInstance = $uibModal.open({ backdrop: 'static', keyboard: false, templateUrl: modalPath, size: 'lg', controller: ModalInstanceCtrl_wmsdoc, resolve: { info: { key: key, obj: obj, mobj: mobj, mode: mode, title: title, sub_title: subtitle } } }); modalInstance.result.then(function (response) { if (response.status == 'NEWDOC') { $scope.newData(response.data); } else { // reload dashboard $scope.reload(); } }, function () { //console.log('Cancel'); }); } $scope.editData = function (obj) { var parameter = { do: 'wms.process', name: 'load.doc', data: obj }; var url = 'core/service.php'; $http.post(url, parameter). success(function (data, status, headers, config) { if (data.STATUS == 'OK') { var modalPath = "core/modules/wms/view/form-wms-" + obj.wms_operation_type + ".html"; $scope.newDoc(data.DATA, $scope.fls, 'edit', modalPath, $scope.selectedTable, obj.wms_operation, obj.form_subtitle); } else { sweetAlert.swal({ title: 'Error', text: '' + data.MSG, type: "error" }); } }). error(function (data, status, headers, config) { $('.splash').css('display', 'none'); sweetAlert.swal({ title: '' + status, text: '' + data, type: "error" }); }); } $scope.newData = function (obj) { obj.plan_datetime = (new Date()).toISOString(); var modalPath = "core/modules/wms/view/form-wms-" + obj.wms_operation_type + ".html"; $scope.newDoc(obj, $scope.fls, 'new', modalPath, $scope.selectedTable, obj.wms_operation, obj.form_subtitle); } }, resolve: { loadObj: function ($http) { // $http returns a promise for the url data return $http({ method: 'GET', url: 'core/service.php?do=wms.dashboard' }); }, }, data: { module: 'N', pageTitle: 'Dashboard', pageDesc: 'Dashboard' } }; console.log('load extra js : wms/model/wms_replenishment.js'); var wms_replenishmentCtrl = { url: "/wms_replenishment", templateUrl: "core/modules/wms/view/replenishment.html", controller: function ($state, notify, sweetAlert, $http, $scope, $uibModal, loadObj, global) { $scope.profile = global.profile; console.log(loadObj); $scope.data = loadObj.data; $scope.tab = ''; $scope.cond = {}; $scope.myonhand = []; $scope.parserData = function () { $scope.qty_pid = {}; $scope.qty_location = {}; if ($scope.data.list != undefined) { for (i = 0; i < $scope.data.list.length; i++) { if ($scope.data.list[i].pid != undefined) { $scope.qty_pid['p_' + $scope.data.list[i].pid] = $scope.data.list[i]; } } } if ($scope.profile.PRODUCT != undefined) { for (i = 0; i < $scope.profile.PRODUCT.length; i++) { if ($scope.qty_pid['p_' + $scope.profile.PRODUCT[i].pid] != undefined) { $scope.profile.PRODUCT[i].onhand = $scope.qty_pid['p_' + $scope.profile.PRODUCT[i].pid].qty; $scope.profile.PRODUCT[i].incoming = $scope.qty_pid['p_' + $scope.profile.PRODUCT[i].pid].qty_draft; $scope.profile.PRODUCT[i].purchasing_qty = parseFloat($scope.qty_pid['p_' + $scope.profile.PRODUCT[i].pid].purchasing_qty); $scope.profile.PRODUCT[i].incoming_qty = parseFloat($scope.qty_pid['p_' + $scope.profile.PRODUCT[i].pid].incoming_qty); if ((parseFloat($scope.profile.PRODUCT[i].onhand) - parseFloat($scope.profile.PRODUCT[i].wms_minimum_stock)) < 0) { var tmp = angular.copy($scope.profile.PRODUCT[i]); tmp.qty = parseFloat(tmp.wms_minimum_stock) - parseFloat(tmp.onhand); $scope.myonhand.push(tmp); } } else { $scope.profile.PRODUCT[i].onhand = 0; $scope.profile.PRODUCT[i].incoming = 0; $scope.profile.PRODUCT[i].purchasing_qty = 0; $scope.profile.PRODUCT[i].incoming_qty = 0; } } } } $scope.reloadTab = function (tab) { $scope.tab = tab; $scope.reload(); } $scope.checkEnter = function (event) { if (event.keyCode == 13) { $scope.reload(); } } $scope.readBarcode = function (event) { if (event.keyCode == 13) { $scope.search = $scope.scanner; $scope.scanner = ''; } } $scope.reload = function () { $('.splash').css('display', 'block'); var parameter = { do: 'wms.dashboard', dataset: 'replenishment', tab: $scope.tab, cond: $scope.cond }; var url = 'core/service.php'; $http.post(url, parameter). success(function (data, status, headers, config) { $('.splash').css('display', 'none'); if (data.STATUS == 'OK') { $scope.data = data; $scope.parserData(); } else { sweetAlert.swal({ title: 'Error', text: '' + data.MSG, type: "error" }); } }). error(function (data, status, headers, config) { $('.splash').css('display', 'none'); sweetAlert.swal({ title: '' + status, text: '' + data, type: "error" }); }); } $scope.selectDoc = function (doc) { $scope.editData(doc); } $scope.newDataPurchase = function (obj) { obj.items = $scope.myonhand; obj.subject = 'Inventory Replenishment [' + $scope.profile.USER.USERNAME + ']'; $state.go('purchase.app', { 'action': 'newRFQ', 'data': JSON.stringify(obj) }); } $scope.openProductInventory = function (obj) { var parameter = { do: 'wms.process', name: 'load.product', data: obj }; var url = 'core/service.php'; $http.post(url, parameter). success(function (data, status, headers, config) { if (data.STATUS == 'OK') { obj.list = data.DATA.list; obj.stockcard_before = data.DATA.stockcard_before; obj.stockcard = data.DATA.stockcard; obj.stocksum = data.DATA.stocksum; var modalPath = "core/modules/wms/view/form-wms-product.html"; var modalInstance = $uibModal.open({ backdrop: 'static', keyboard: false, templateUrl: modalPath, size: 'lg', controller: ModalInstanceCtrl_wms_product, resolve: { info: { obj: obj, } } }); modalInstance.result.then(function (response) { console.log(response); // reload dashboard $scope.reload(); // $scope.loadMasterFile($scope.selectedTable); }, function () { //console.log('Cancel'); }); } else { sweetAlert.swal({ title: 'Error', text: '' + data.MSG, type: "error" }); } }). error(function (data, status, headers, config) { $('.splash').css('display', 'none'); sweetAlert.swal({ title: '' + status, text: '' + data, type: "error" }); }); } $scope.openLocationInventory = function (obj) { var parameter = { do: 'wms.process', name: 'load.location', data: obj, location: obj.location }; var url = 'core/service.php'; $http.post(url, parameter). success(function (data, status, headers, config) { if (data.STATUS == 'OK') { obj.list = data.DATA.list; obj.stockcard_before = data.DATA.stockcard_before; obj.stockcard = data.DATA.stockcard; obj.stocksum = data.DATA.stocksum; var modalPath = "core/modules/wms/view/form-wms-location.html"; var modalInstance = $uibModal.open({ backdrop: 'static', keyboard: false, templateUrl: modalPath, size: 'lg', // reuse modal controller: ModalInstanceCtrl_wms_product, resolve: { info: { obj: obj, } } }); modalInstance.result.then(function (response) { console.log(response); // reload dashboard $scope.reload(); // $scope.loadMasterFile($scope.selectedTable); }, function () { //console.log('Cancel'); }); } else { sweetAlert.swal({ title: 'Error', text: '' + data.MSG, type: "error" }); } }). error(function (data, status, headers, config) { $('.splash').css('display', 'none'); sweetAlert.swal({ title: '' + status, text: '' + data, type: "error" }); }); } $scope.newDoc = function (obj, key, mode, modalPath, mobj, title, subtitle) { var modalInstance = $uibModal.open({ backdrop: 'static', keyboard: false, templateUrl: modalPath, size: 'lg', controller: ModalInstanceCtrl_wmsdoc, resolve: { info: { key: key, obj: obj, mobj: mobj, mode: mode, title: title, sub_title: subtitle } } }); modalInstance.result.then(function (response) { console.log(response); // reload dashboard $scope.reload(); // $scope.loadMasterFile($scope.selectedTable); }, function () { //console.log('Cancel'); }); } $scope.editData = function (obj) { var parameter = { do: 'wms.process', name: 'load.doc', data: obj }; var url = 'core/service.php'; $http.post(url, parameter). success(function (data, status, headers, config) { if (data.STATUS == 'OK') { var modalPath = "core/modules/wms/view/form-wms-" + obj.wms_operation_type + ".html"; $scope.newDoc(data.DATA, $scope.fls, 'edit', modalPath, $scope.selectedTable, obj.wms_operation, obj.form_subtitle); } else { sweetAlert.swal({ title: 'Error', text: '' + data.MSG, type: "error" }); } }). error(function (data, status, headers, config) { $('.splash').css('display', 'none'); sweetAlert.swal({ title: '' + status, text: '' + data, type: "error" }); }); } $scope.newData = function (obj) { obj.plan_datetime = (new Date()).toISOString(); var modalPath = "core/modules/wms/view/form-wms-" + obj.wms_operation_type + ".html"; $scope.newDoc(obj, $scope.fls, 'new', modalPath, $scope.selectedTable, obj.wms_operation, obj.form_subtitle); } $scope.parserData(); }, resolve: { loadObj: function ($http) { // $http returns a promise for the url data return $http({ method: 'GET', url: 'core/service.php?do=wms.dashboard&dataset=replenishment' }); }, }, data: { module: 'N', pageTitle: 'Dashboard', pageDesc: 'Dashboard' } }; console.log('load extra js : wms/model/wms_master.js'); var wms_masterCtrl = { url: "/wms_master", templateUrl: "core/modules/wms/view/master.html", controller: function ($state, notify, sweetAlert, $http, $scope, $uibModal, loadObj, global) { $scope.profile=global.profile; $scope.label = { title: "MASTER FILE", sub_title: "Configuration", }; console.log(loadObj); $scope.data = loadObj.data; $scope.order = ''; $scope.setOrder = function (f) { if ($scope.order == f) { $scope.order = '-' + f; } else { $scope.order = f; } }; $scope.loadMasterFile = function (mobj) { $('.splash').css('display', 'block'); var parameter = { do: 'wms.master', name: 'load.master', id: mobj.id }; var url = 'core/service.php'; $http.post(url, parameter). success(function (data, status, headers, config) { $('.splash').css('display', 'none'); // console.log('test ',data); if (data.STATUS == 'OK') { $scope.selectedTable = mobj; $scope.cols = data.cols; $scope.fls = data.fls; $scope.list = data.list; } }). error(function (data, status, headers, config) { $('.splash').css('display', 'none'); }); } function ModalInstanceCtrl(sweetAlert, $http, $scope, sweetAlert, $uibModalInstance, info, global, $window, $firebaseObject, $firebaseArray, $firebaseStorage) { $scope.profile=global.profile; $scope.data = angular.copy(info.obj); $scope.dobj = angular.copy(info.obj); $scope.schema = info.key; $scope.mode = info.mode; $scope.mobj = info.mobj; $scope.title = info.title; $scope.sub_title = info.sub_title; $scope.delete = function () { sweetAlert.swal({ title: "Are you sure?", text: "You will not be able to recover this data!", type: "warning", showCancelButton: true, confirmButtonColor: "#DD6B55", confirmButtonText: "Yes, delete it!", closeOnConfirm: true }, function (isConfirm) { if (isConfirm) { $('.splash').css('display', 'block'); var send_data = angular.copy($scope.dobj); var parameter = { do: 'wms.master', name: 'save.master', mobj: $scope.mobj, data: send_data, old_data: $scope.data, mode: 'delete' }; var url = 'core/service.php'; $http.post(url, parameter). success(function (data, status, headers, config) { $('.splash').css('display', 'none'); if (data.STATUS == 'OK') { $uibModalInstance.close({ status: "OK", data: send_data }); } else { sweetAlert.swal({ title: 'Error', text: '' + data.MSG, type: "error" }); } }). error(function (data, status, headers, config) { $('.splash').css('display', 'none'); sweetAlert.swal({ title: '' + status, text: '' + data, type: "error" }); }); } else { } }); }; $scope.openWin = function (url) { window.open(url); } $scope.onChange = function (fileList, attrs) { $('.splash').css('display', 'block'); var d = new Date(); var storageRef = firebase.storage().ref('temp/' + appid + '/' + d.getTime() + "_" + fileList[0].name); var storage = $firebaseStorage(storageRef); var uploadTask = storage.$put(fileList[0]); uploadTask.$complete(function (snapshot) { $scope.dobj[attrs.fname] = snapshot.downloadURL; $('.splash').css('display', 'none'); }); } $scope.ok = function () { $('.splash').css('display', 'block'); var send_data = angular.copy($scope.dobj); var parameter = { do: 'wms.master', name: 'save.master', mobj: $scope.mobj, data: send_data, old_data: $scope.data, mode: $scope.mode }; var url = 'core/service.php'; $http.post(url, parameter). success(function (data, status, headers, config) { if (data.STATUS == 'OK') { $('.splash').css('display', 'none'); $uibModalInstance.close({ status: "OK", data: send_data }); } else { sweetAlert.swal({ title: 'Error', text: '' + data.MSG, type: "error" }); } }). error(function (data, status, headers, config) { $('.splash').css('display', 'none'); sweetAlert.swal({ title: '' + status, text: '' + data, type: "error" }); }); }; $scope.cancel = function () { $uibModalInstance.dismiss('cancel'); }; }; $scope.newDoc = function (obj, key, mode, modalPath, mobj) { var modalInstance = $uibModal.open({ templateUrl: modalPath, size: 'lg', controller: ModalInstanceCtrl, resolve: { info: { key: key, obj: obj, mobj: mobj, mode: mode, sub_title: 'MASTER FILE', title: $scope.selectedTable.desc } } }); modalInstance.result.then(function (response) { console.log(response); $scope.loadMasterFile($scope.selectedTable); }, function () { //console.log('Cancel'); }); } $scope.editData = function (obj) { var modalPath = "core/modules/wms/view/form-master.html"; $scope.newDoc(obj, $scope.fls, 'edit', modalPath, $scope.selectedTable); } $scope.newData = function () { var modalPath = "core/modules/wms/view/form-master.html"; $scope.newDoc({}, $scope.fls, 'new', modalPath, $scope.selectedTable); } }, resolve: { loadObj: function ($http) { // $http returns a promise for the url data return $http({ method: 'GET', url: 'core/service.php?do=wms.master&name=master' }); }, }, data: { module: 'N', pageTitle: 'OPPORTUNITY DASHBOARD', pageDesc: 'OPPORTUNITY DASHBOARD' } }// Forms views $stateProvider.state('wms', { abstract: true, url: "/wms", templateUrl: "views/common/content_mobile.html", data: { pageTitle: 'wms', module: 'Y', role: [ { name: "wms.admin", title: "WMS Admin", access: ['wms.app', 'wms.master', "wms.transaction", "wms.inventory", "wms.replenishment"] }, { name: "wms.user", title: "WMS User", access: ['wms.app', "wms.transaction", "wms.inventory", "wms.replenishment"] }, ], menu: { "wms.app": { url: "wms.app", title: "Dashboard", class: "pe pe-7s-note text-success", sidemenu: "Y" }, 'wms.master': { url: "wms.master", title: "Master File", class: "pe pe-7s-note text-success", sidemenu: "Y" }, "wms.transaction": { url: "wms.transaction", title: "Transaction", class: "pe pe-7s-note text-success", sidemenu: "Y" }, "wms.inventory": { url: "wms.inventory", title: "Inventory", class: "pe pe-7s-note text-success", sidemenu: "Y" }, "wms.replenishment": { url: "wms.replenishment", title: "Replenishment", class: "pe pe-7s-note text-success", sidemenu: "Y" }, } } }) // MENU: CUSTOMER .state('wms.app', wms_appCtrl) .state('wms.master', wms_masterCtrl) .state('wms.transaction', wms_transactionCtrl) .state('wms.inventory', wms_inventoryCtrl) .state('wms.replenishment', wms_replenishmentCtrl) /* /var/www/html/performax/app/scripts ../core/modules/purchase/config.js */ console.log('load extra js : purchase/model/purchase_pricelist.js'); var purchase_pricelistCtrl = { url: "/purchase_pricelist", templateUrl: "core/modules/purchase/view/pricelist.html", controller: function ($state, notify, sweetAlert, $http, $scope, $uibModal, loadObj, global) { $scope.profile = global.profile; console.log(loadObj); $scope.data = loadObj.data; $scope.tab = ''; $scope.cond = {}; $scope.reloadTab = function (tab) { $scope.tab = tab; $scope.reload(); } $scope.checkEnter = function (event) { if (event.keyCode == 13) { $scope.reload(); } } $scope.reload = function () { $('.splash').css('display', 'block'); var parameter = { do: 'purchase.dashboard', dataset: 'pricelist', tab: $scope.tab, cond: $scope.cond }; var url = 'core/service.php'; $http.post(url, parameter). success(function (data, status, headers, config) { $('.splash').css('display', 'none'); if (data.STATUS == 'OK') { $scope.data = data; } else { sweetAlert.swal({ title: 'Error', text: '' + data.MSG, type: "error" }); } }). error(function (data, status, headers, config) { $('.splash').css('display', 'none'); sweetAlert.swal({ title: '' + status, text: '' + data, type: "error" }); }); } $scope.selectDoc = function (doc) { $scope.editData(doc); } $scope.newDoc = function (obj, key, mode, modalPath, mobj, title, subtitle) { var modalInstance = $uibModal.open({ backdrop: 'static', keyboard: false, templateUrl: modalPath, size: 'lg', controller: ModalInstanceCtrl_purchase_doc, resolve: { info: { key: key, obj: obj, mobj: mobj, mode: mode, title: title, sub_title: subtitle } } }); modalInstance.result.then(function (response) { console.log(response); // reload dashboard $scope.reload(); // $scope.loadMasterFile($scope.selectedTable); }, function () { //console.log('Cancel'); }); } $scope.editData = function (obj) { var parameter = { do: 'purchase.process', name: 'load.doc', data: obj }; var url = 'core/service.php'; $http.post(url, parameter). success(function (data, status, headers, config) { if (data.STATUS == 'OK') { var modalPath = "core/modules/purchase/view/form-purchase-doc.html"; $scope.newDoc(data.DATA, $scope.fls, 'edit', modalPath, $scope.selectedTable, obj.purchase_operation, obj.form_subtitle); } else { sweetAlert.swal({ title: 'Error', text: '' + data.MSG, type: "error" }); } }). error(function (data, status, headers, config) { $('.splash').css('display', 'none'); sweetAlert.swal({ title: '' + status, text: '' + data, type: "error" }); }); } $scope.newData = function (obj) { obj.due_date = (new Date()).toISOString(); var modalPath = "core/modules/purchase/view/form-purchase-doc.html"; $scope.newDoc(obj, $scope.fls, 'new', modalPath, $scope.selectedTable, obj.purchase_operation, obj.form_subtitle); } }, resolve: { loadObj: function ($http) { // $http returns a promise for the url data return $http({ method: 'GET', url: 'core/service.php?do=purchase.dashboard&dataset=pricelist' }); }, }, data: { module: 'N', pageTitle: 'Dashboard', pageDesc: 'Dashboard' } }; console.log('load extra js : purchase/model/purchase_master.js'); var purchase_masterCtrl = { url: "/purchase_master", templateUrl: "core/modules/purchase/view/master.html", controller: function ($state, notify, sweetAlert, $http, $scope, $uibModal, loadObj, global) { $scope.profile=global.profile; $scope.label = { title: "MASTER FILE", sub_title: "Configuration", }; console.log(loadObj); $scope.data = loadObj.data; $scope.order = ''; $scope.setOrder = function (f) { if ($scope.order == f) { $scope.order = '-' + f; } else { $scope.order = f; } }; $scope.loadMasterFile = function (mobj) { $('.splash').css('display', 'block'); var parameter = { do: 'purchase.master', name: 'load.master', id: mobj.id }; var url = 'core/service.php'; $http.post(url, parameter). success(function (data, status, headers, config) { $('.splash').css('display', 'none'); // console.log('test ',data); if (data.STATUS == 'OK') { $scope.selectedTable = mobj; $scope.cols = data.cols; $scope.fls = data.fls; $scope.list = data.list; } }). error(function (data, status, headers, config) { $('.splash').css('display', 'none'); }); } function ModalInstanceCtrl(sweetAlert, $http, $scope, sweetAlert, $uibModalInstance, info, global, $window, $firebaseObject, $firebaseArray, $firebaseStorage) { $scope.profile=global.profile; $scope.data = angular.copy(info.obj); $scope.dobj = angular.copy(info.obj); $scope.schema = info.key; $scope.mode = info.mode; $scope.mobj = info.mobj; $scope.title = info.title; $scope.sub_title = info.sub_title; $scope.delete = function () { sweetAlert.swal({ title: "Are you sure?", text: "You will not be able to recover this data!", type: "warning", showCancelButton: true, confirmButtonColor: "#DD6B55", confirmButtonText: "Yes, delete it!", closeOnConfirm: true }, function (isConfirm) { if (isConfirm) { $('.splash').css('display', 'block'); var send_data = angular.copy($scope.dobj); var parameter = { do: 'purchase.master', name: 'save.master', mobj: $scope.mobj, data: send_data, old_data: $scope.data, mode: 'delete' }; var url = 'core/service.php'; $http.post(url, parameter). success(function (data, status, headers, config) { $('.splash').css('display', 'none'); if (data.STATUS == 'OK') { $uibModalInstance.close({ status: "OK", data: send_data }); } else { sweetAlert.swal({ title: 'Error', text: '' + data.MSG, type: "error" }); } }). error(function (data, status, headers, config) { $('.splash').css('display', 'none'); sweetAlert.swal({ title: '' + status, text: '' + data, type: "error" }); }); } else { } }); }; $scope.openWin = function (url) { window.open(url); } $scope.onChange = function (fileList, attrs) { $('.splash').css('display', 'block'); var d = new Date(); var storageRef = firebase.storage().ref('temp/' + appid + '/' + d.getTime() + "_" + fileList[0].name); var storage = $firebaseStorage(storageRef); var uploadTask = storage.$put(fileList[0]); uploadTask.$complete(function (snapshot) { $scope.dobj[attrs.fname] = snapshot.downloadURL; $('.splash').css('display', 'none'); }); } $scope.ok = function () { $('.splash').css('display', 'block'); var send_data = angular.copy($scope.dobj); var parameter = { do: 'purchase.master', name: 'save.master', mobj: $scope.mobj, data: send_data, old_data: $scope.data, mode: $scope.mode }; var url = 'core/service.php'; $http.post(url, parameter). success(function (data, status, headers, config) { if (data.STATUS == 'OK') { $('.splash').css('display', 'none'); $uibModalInstance.close({ status: "OK", data: send_data }); } else { sweetAlert.swal({ title: 'Error', text: '' + data.MSG, type: "error" }); } }). error(function (data, status, headers, config) { $('.splash').css('display', 'none'); sweetAlert.swal({ title: '' + status, text: '' + data, type: "error" }); }); }; $scope.cancel = function () { $uibModalInstance.dismiss('cancel'); }; }; $scope.newDoc = function (obj, key, mode, modalPath, mobj) { var modalInstance = $uibModal.open({ templateUrl: modalPath, size: 'lg', controller: ModalInstanceCtrl, resolve: { info: { key: key, obj: obj, mobj: mobj, mode: mode, sub_title: 'MASTER FILE', title: $scope.selectedTable.desc } } }); modalInstance.result.then(function (response) { console.log(response); $scope.loadMasterFile($scope.selectedTable); }, function () { //console.log('Cancel'); }); } $scope.editData = function (obj) { var modalPath = "core/modules/wms/view/form-master.html"; $scope.newDoc(obj, $scope.fls, 'edit', modalPath, $scope.selectedTable); } $scope.newData = function () { var modalPath = "core/modules/wms/view/form-master.html"; $scope.newDoc({}, $scope.fls, 'new', modalPath, $scope.selectedTable); } }, resolve: { loadObj: function ($http) { // $http returns a promise for the url data return $http({ method: 'GET', url: 'core/service.php?do=purchase.master&name=master' }); }, }, data: { module: 'N', pageTitle: 'OPPORTUNITY DASHBOARD', pageDesc: 'OPPORTUNITY DASHBOARD' } } console.log('load extra js : purchase/model/purchase.js'); // WMSDOC Start Modal ----------------------------------------------------------------------------------- function ModalInstanceCtrl_purchase_doc(sweetAlert, $http, $scope, sweetAlert, $uibModalInstance, info, global, $window, $uibModal, $firebaseObject, $firebaseArray, $firebaseStorage) { $scope.profile = global.profile; $scope.data = angular.copy(info.obj); $scope.dobj = angular.copy(info.obj); $scope.schema = info.key; $scope.mode = info.mode; $scope.mobj = info.mobj; $scope.title = info.title; $scope.sub_title = info.sub_title; $scope.parseData = function (data) { $scope.dobj = data; var d = new Date($scope.dobj.due_date.replace(' ', 'T')); $scope.dobj.due_date = d; $scope.dobj['amount'] = parseFloat($scope.dobj['amount']); $scope.dobj['discount'] = parseFloat($scope.dobj['discount']); $scope.dobj['vat'] = parseFloat($scope.dobj['vat']); $scope.dobj['total'] = parseFloat($scope.dobj['total']); if ($scope.dobj.items == undefined) { $scope.dobj.items = []; } for (i = 0; i < $scope.dobj.items.length; i++) { $scope.dobj.items[i]['qty'] = parseFloat($scope.dobj.items[i]['qty']); $scope.dobj.items[i]['unitprice'] = parseFloat($scope.dobj.items[i]['unitprice']); } } // $scope.modal_email = function (idx) { // sweetAlert.swal({ // title: "Send RFQ to [" + $scope.dobj.suppliers[idx].sp_email + "] ?", // text: "Do you want to send RFQ to [" + $scope.dobj.suppliers[idx].sp_name + "] ", // type: "info", // showCancelButton: true, // confirmButtonColor: "#556Bdd", // confirmButtonText: "Yes / ใช่", // closeOnConfirm: true // }, function (isConfirm) { // if (isConfirm) { // $('.splash').css('display', 'block'); // var send_data = angular.copy($scope.dobj.suppliers[idx]); // send_data.po_id = $scope.dobj.po_id; // send_data.subject = $scope.dobj.email_subject; // send_data.message = $scope.dobj.remark_supplier; // var parameter = { do: 'purchase.process', name: 'send.rfq', data: send_data }; // var url = 'core/service.php'; // $http.post(url, parameter). // success(function (data, status, headers, config) { // $('.splash').css('display', 'none'); // if (data.STATUS == 'OK') { // $uibModalInstance.close({ status: "OK", data: send_data }); // } else { // sweetAlert.swal({ // title: 'Error', // text: '' + data.MSG, // type: "error" // }); // } // }). // error(function (data, status, headers, config) { // $('.splash').css('display', 'none'); // sweetAlert.swal({ // title: '' + status, // text: '' + data, // type: "error" // }); // }); // } else { // } // }); // } $scope.print = function (type) { if ($scope.dobj.po_id > 0) { if (type == 'Purchase Order') { dtype = 'PO'; } else { dtype = type; } var url = "pdf/" + dtype.toLowerCase() + ".php?ID=" + $scope.dobj.po_id; window.open(url); } } $scope.select_supplier = function (idx) { sweetAlert.swal({ title: "Confirm Supplier (RFQ -> PO)?", text: "Do you want to confirm supplier \n คุณต้องการยืนยันการผู้ขายหรือไม่ ", type: "info", showCancelButton: true, confirmButtonColor: "#556BDD", confirmButtonText: "Confirm / ยืนยัน", closeOnConfirm: true }, function (isConfirm) { if (isConfirm) { $('.splash').css('display', 'block'); $scope.dobj.confirm_supplier_name = $scope.dobj.suppliers[idx].sp_name; if ($scope.profile.WMS_SUPPLIER != undefined) { for (i = 0; i < $scope.profile.WMS_SUPPLIER.length; i++) { if ($scope.profile.WMS_SUPPLIER[i].contact_name == $scope.dobj.confirm_supplier_name) { $scope.dobj.address = $scope.profile.WMS_SUPPLIER[i].address; $scope.dobj.taxid = $scope.profile.WMS_SUPPLIER[i].taxid; } } } $scope.dobj.status = 'Purchase Order'; $scope.save(); } else { } }); } $scope.modal_supplier = function (idx) { // overwrite pid var modalPath = "core/modules/purchase/view/form-purchase-supplier.html"; var modalInstance = $uibModal.open({ backdrop: 'static', keyboard: false, templateUrl: modalPath, size: 'md', controller: ModalInstanceCtrl_purchase_supplier, resolve: { info: { obj: $scope.dobj.suppliers[idx], mobj: $scope.dobj, } } }); modalInstance.result.then(function (response) { $scope.dobj.suppliers[idx] = response.data; }, function () { //console.log('Cancel'); }); } $scope.setProduct = function (idx, prod) { if ($scope.dobj.items != undefined) { $scope.dobj.items[idx]['pid'] = prod['pid']; $scope.dobj.items[idx]['code'] = prod['code']; $scope.dobj.items[idx]['desc'] = prod['desc']; $scope.dobj.items[idx]['unitprice'] = parseFloat(prod['unitprice']); } } $scope.updateSum = function () { $scope.sumSKU = 0; for (i = 0; i < $scope.dobj.items.length; i++) { if ($scope.dobj.items[i].qty != undefined) { $scope.sumSKU += $scope.dobj.items[i].qty; } if ($scope.dobj.items[i].qty_actual != undefined) { if ($scope.dobj.items[i].qty != $scope.dobj.items[i].qty_actual) { $scope.qty_not_match = true; } } else { $scope.qty_not_match = true; } } } $scope.is_admin = function () { var idx = -1; var checkString = ''; // console.log($scope.profile.CONFIG); for (var i = 0; i < $scope.profile.CONFIG.length; i++) { if ($scope.profile.CONFIG[i].code == 'PURCHASE_ADMIN') { idx = i; checkString = $scope.profile.CONFIG[i].value; // console.log($scope.profile.CONFIG[i].value); } } if (idx == -1) { return false; } else if (checkString.includes('"' + $scope.profile.USER.USERNAME + '"')) { return true; } else { return false; } } $scope.check_role = function (role) { var idx = -1; var checkString = ''; // console.log($scope.profile.CONFIG); for (var i = 0; i < $scope.profile.CONFIG.length; i++) { if ($scope.profile.CONFIG[i].code == role) { idx = i; checkString = $scope.profile.CONFIG[i].value; // console.log('found', role, $scope.profile.CONFIG[i].value); } } if (idx == -1) { return false; } else if (checkString.includes('"' + $scope.profile.USER.USERNAME + '"')) { return true; } else { return false; } } $scope.confirm_approve = function () { if ($scope.check_role('PURCHASE_APPROVE')) { sweetAlert.swal({ title: "Confirm Approve ?", text: "Do you want to approve this document \n คุณต้องการยืนยันการอนุมัติเอกสารหรือไม่ ", type: "info", showCancelButton: true, confirmButtonColor: "#556BDD", confirmButtonText: "Confirm / ยืนยัน", closeOnConfirm: true }, function (isConfirm) { if (isConfirm) { $('.splash').css('display', 'block'); $scope.dobj.is_approve = 'Y'; $scope.dobj.approve_by = $scope.profile.USER.USERNAME; $scope.dobj.approve_date = new Date(); $scope.dobj.approve_status = 'approved'; $scope.dobj.status = 'Purchase Order'; $scope.ok(); } else { } }); } else { sweetAlert.swal({ title: 'Permission denied', text: 'Please contact admin user ', type: "error" }); } } $scope.confirm_po = function () { sweetAlert.swal({ title: "Confirm PO ?", text: "Do you want to confirm this document \n คุณต้องการยืนยันการทำงานเสร็จสิ้นหรือไม่ ", type: "info", showCancelButton: true, confirmButtonColor: "#556BDD", confirmButtonText: "Confirm / ยืนยัน", closeOnConfirm: true }, function (isConfirm) { if (isConfirm) { $('.splash').css('display', 'block'); $scope.dobj.status = 'Confirm Order'; $scope.ok(); } else { } }); } $scope.confirm_done = function () { sweetAlert.swal({ title: "Confirm done ?", text: "Do you want to confirm this document \n คุณต้องการยืนยันการทำงานเสร็จสิ้นหรือไม่ ", type: "info", showCancelButton: true, confirmButtonColor: "#556BDD", confirmButtonText: "Confirm / ยืนยัน", closeOnConfirm: true }, function (isConfirm) { if (isConfirm) { $('.splash').css('display', 'block'); $scope.dobj.is_done = 'Y'; $scope.dobj.done_by = $scope.profile.USER.USERNAME; $scope.dobj.done_date = new Date(); $scope.ok(); } else { } }); } $scope.add_item = function (item_type) { var d = new Date(); if ($scope.dobj.items == undefined) { $scope.dobj.items = [{ ts: d.getTime(), item_type: item_type }]; } else { $scope.dobj.items.push({ ts: d.getTime(), item_type: item_type }); } } $scope.clear_item = function (item_type) { if ($scope.dobj.items != undefined) { for (i = $scope.dobj.items.length - 1; i >= 0; i--) { if ($scope.dobj.items[i].item_type == item_type) { $scope.delete_item(i); } } } } $scope.delete_item = function (idx) { if ($scope.dobj.items != undefined) { $scope.dobj.items.splice(idx, 1) } } $scope.add_supplier = function (item_type) { var d = new Date(); if ($scope.dobj.suppliers == undefined) { $scope.dobj.suppliers = [{ ts: d.getTime(), item_type: item_type }]; } else { $scope.dobj.suppliers.push({ ts: d.getTime(), item_type: item_type }); } } $scope.delete_supplier = function (idx) { if ($scope.dobj.suppliers != undefined) { $scope.dobj.suppliers.splice(idx, 1) } } $scope.clear_supplier = function (item_type) { if ($scope.dobj.suppliers != undefined) { for (i = $scope.dobj.suppliers.length - 1; i >= 0; i--) { $scope.delete_supplier(i); } } } $scope.delete = function () { sweetAlert.swal({ title: "Are you sure?", text: "You will not be able to recover this data!", type: "warning", showCancelButton: true, confirmButtonColor: "#DD6B55", confirmButtonText: "Yes, delete it!", closeOnConfirm: true }, function (isConfirm) { if (isConfirm) { $('.splash').css('display', 'block'); var send_data = angular.copy($scope.dobj); var parameter = { do: 'purchase.process', name: 'delete.doc', data: send_data, mode: 'delete' }; var url = 'core/service.php'; $http.post(url, parameter). success(function (data, status, headers, config) { $('.splash').css('display', 'none'); if (data.STATUS == 'OK') { $uibModalInstance.close({ status: "OK", data: send_data }); } else { sweetAlert.swal({ title: 'Error', text: '' + data.MSG, type: "error" }); } }). error(function (data, status, headers, config) { $('.splash').css('display', 'none'); sweetAlert.swal({ title: '' + status, text: '' + data, type: "error" }); }); } else { } }); }; $scope.openWin = function (url) { window.open(url); } $scope.save = function () { $('.splash').css('display', 'block'); if ($scope.dobj.due_date != undefined) { var d = new Date($scope.dobj.due_date); $scope.dobj.due_date = new Date(d.getTime() - (d.getTimezoneOffset() * 60000)).toISOString(); } var send_data = angular.copy($scope.dobj); var parameter = { do: 'purchase.process', name: 'update.doc', mobj: $scope.mobj, data: send_data, old_data: $scope.data, mode: $scope.mode }; var url = 'core/service.php'; $http.post(url, parameter). success(function (data, status, headers, config) { if (data.STATUS == 'OK') { $('.splash').css('display', 'none'); } else { sweetAlert.swal({ title: 'Error', text: '' + data.MSG, type: "error" }); } }). error(function (data, status, headers, config) { $('.splash').css('display', 'none'); sweetAlert.swal({ title: '' + status, text: '' + data, type: "error" }); }); }; $scope.ok = function () { $('.splash').css('display', 'block'); if ($scope.dobj.due_date != undefined) { var d = new Date($scope.dobj.due_date); $scope.dobj.due_date = new Date(d.getTime() - (d.getTimezoneOffset() * 60000)).toISOString(); } var send_data = angular.copy($scope.dobj); var parameter = { do: 'purchase.process', name: 'update.doc', mobj: $scope.mobj, data: send_data, old_data: $scope.data, mode: $scope.mode }; var url = 'core/service.php'; $http.post(url, parameter). success(function (data, status, headers, config) { if (data.STATUS == 'OK') { $('.splash').css('display', 'none'); $uibModalInstance.close({ status: "OK", data: send_data }); } else { sweetAlert.swal({ title: 'Error', text: '' + data.MSG, type: "error" }); } }). error(function (data, status, headers, config) { $('.splash').css('display', 'none'); sweetAlert.swal({ title: '' + status, text: '' + data, type: "error" }); }); }; $scope.cancel = function () { $uibModalInstance.dismiss('cancel'); }; $scope.parseData(info.obj); }; // WMSDOC End Modal --------------------------------------------------------------------------------------------------------- // SUPPLIER Start Modal ----------------------------------------------------------------------------------- function ModalInstanceCtrl_purchase_supplier(sweetAlert, $http, $scope, sweetAlert, $uibModalInstance, info, global, $window, $firebaseObject, $firebaseArray, $firebaseStorage) { $scope.profile = global.profile; $scope.dobj = angular.copy(info.obj); var d = new Date($scope.dobj.sent_date.to.replace(' ', 'T')); $scope.dobj.sent_date = d; var d2 = new Date($scope.dobj.response_date.replace(' ', 'T')); $scope.dobj.response_date = d2; $scope.browseFile = function (id) { $("#" + id).val(''); $('#' + id).click(); } $scope.download = function (dataURI, filename) { global.download(dataURI, filename); } $scope.ok = function () { if ($scope.dobj.sent_date != undefined) { var d = new Date($scope.dobj.sent_date); $scope.dobj.sent_date = new Date(d.getTime() - (d.getTimezoneOffset() * 60000)).toISOString(); } if ($scope.dobj.response_date != undefined) { var d = new Date($scope.dobj.response_date); $scope.dobj.response_date = new Date(d.getTime() - (d.getTimezoneOffset() * 60000)).toISOString(); } var send_data = angular.copy($scope.dobj); $uibModalInstance.close({ status: "OK", data: send_data }); }; $scope.cancel = function () { $uibModalInstance.dismiss('cancel'); }; }; // SUPPLIER End Modal --------------------------------------------------------------------------------------------------------- // GENERAL Start Modal ----------------------------------------------------------------------------------- function ModalInstanceCtrl_purchase_general(sweetAlert, $http, $scope, sweetAlert, $uibModalInstance, info, global, $window, $firebaseObject, $firebaseArray, $firebaseStorage) { $scope.profile = global.profile; $scope.dobj = angular.copy(info.obj); $scope.ok = function () { var send_data = angular.copy($scope.dobj); $uibModalInstance.close({ status: "OK", data: send_data }); }; $scope.cancel = function () { $uibModalInstance.dismiss('cancel'); }; }; // GENERAL End Modal --------------------------------------------------------------------------------------------------------- console.log('load extra js : purchase/model/purchase_app.js'); var purchase_appCtrl = { url: "/purchase_app/{action}/{data}", templateUrl: "core/modules/purchase/view/dashboard.html", controller: function ($state, notify, sweetAlert, $http, $scope, $uibModal, loadObj, global, $stateParams) { $scope.profile = global.profile; console.log(loadObj); console.log($stateParams.action); $scope.data = loadObj.data; $scope.reload = function () { $('.splash').css('display', 'block'); var parameter = { do: 'purchase.dashboard' }; var url = 'core/service.php'; $http.post(url, parameter). success(function (data, status, headers, config) { $('.splash').css('display', 'none'); if (data.STATUS == 'OK') { $scope.data = data; } else { sweetAlert.swal({ title: 'Error', text: '' + data.MSG, type: "error" }); } }). error(function (data, status, headers, config) { $('.splash').css('display', 'none'); sweetAlert.swal({ title: '' + status, text: '' + data, type: "error" }); }); } $scope.selectDoc = function (doc) { $scope.editData(doc); } $scope.newDoc = function (obj, key, mode, modalPath, mobj, title, subtitle) { var modalInstance = $uibModal.open({ backdrop: 'static', keyboard: false, templateUrl: modalPath, size: 'lg', controller: ModalInstanceCtrl_purchase_doc, resolve: { info: { key: key, obj: obj, mobj: mobj, mode: mode, title: title, sub_title: subtitle } } }); modalInstance.result.then(function (response) { console.log(response); // reload dashboard $scope.reload(); // $scope.loadMasterFile($scope.selectedTable); }, function () { //console.log('Cancel'); }); } $scope.editData = function (obj) { var parameter = { do: 'purchase.process', name: 'load.doc', data: obj }; var url = 'core/service.php'; $http.post(url, parameter). success(function (data, status, headers, config) { if (data.STATUS == 'OK') { var modalPath = "core/modules/purchase/view/form-purchase-doc.html"; $scope.newDoc(data.DATA, '', 'edit', modalPath, '', '', ''); } else { sweetAlert.swal({ title: 'Error', text: '' + data.MSG, type: "error" }); } }). error(function (data, status, headers, config) { $('.splash').css('display', 'none'); sweetAlert.swal({ title: '' + status, text: '' + data, type: "error" }); }); } $scope.newData = function (obj) { obj.due_date = (new Date()).toISOString(); var modalPath = "core/modules/purchase/view/form-purchase-doc.html"; $scope.newDoc(obj, '', 'new', modalPath, '', '', ''); } if ($stateParams.action == 'newRFQ') { var obj = JSON.parse($stateParams.data); $scope.newData(obj); } }, resolve: { loadObj: function ($http) { // $http returns a promise for the url data return $http({ method: 'GET', url: 'core/service.php?do=purchase.dashboard' }); }, }, data: { module: 'N', pageTitle: 'Dashboard', pageDesc: 'Dashboard' } }; console.log('load extra js : purchase/model/purchase_transaction.js'); var purchase_transactionCtrl = { url: "/purchase_transaction", templateUrl: "core/modules/purchase/view/transaction.html", controller: function ($state, notify, sweetAlert, $http, $scope, $uibModal, loadObj, global) { $scope.profile = global.profile; console.log(loadObj); $scope.data = loadObj.data; $scope.tab = ''; $scope.cond = {}; $scope.reloadTab = function (tab) { $scope.tab = tab; $scope.reload(); } $scope.checkEnter = function (event) { if (event.keyCode == 13) { $scope.reload(); } } $scope.reload = function () { $('.splash').css('display', 'block'); var parameter = { do: 'purchase.dashboard', dataset: 'transaction', tab: $scope.tab, cond: $scope.cond }; var url = 'core/service.php'; $http.post(url, parameter). success(function (data, status, headers, config) { $('.splash').css('display', 'none'); if (data.STATUS == 'OK') { $scope.data = data; } else { sweetAlert.swal({ title: 'Error', text: '' + data.MSG, type: "error" }); } }). error(function (data, status, headers, config) { $('.splash').css('display', 'none'); sweetAlert.swal({ title: '' + status, text: '' + data, type: "error" }); }); } $scope.selectDoc = function (doc) { $scope.editData(doc); } $scope.newDoc = function (obj, key, mode, modalPath, mobj, title, subtitle) { var modalInstance = $uibModal.open({ backdrop: 'static', keyboard: false, templateUrl: modalPath, size: 'lg', controller: ModalInstanceCtrl_purchase_doc, resolve: { info: { key: key, obj: obj, mobj: mobj, mode: mode, title: title, sub_title: subtitle } } }); modalInstance.result.then(function (response) { console.log(response); // reload dashboard $scope.reload(); // $scope.loadMasterFile($scope.selectedTable); }, function () { //console.log('Cancel'); }); } $scope.editData = function (obj) { var parameter = { do: 'purchase.process', name: 'load.doc', data: obj }; var url = 'core/service.php'; $http.post(url, parameter). success(function (data, status, headers, config) { if (data.STATUS == 'OK') { var modalPath = "core/modules/purchase/view/form-purchase-doc.html"; $scope.newDoc(data.DATA, $scope.fls, 'edit', modalPath, $scope.selectedTable, obj.purchase_operation, obj.form_subtitle); } else { sweetAlert.swal({ title: 'Error', text: '' + data.MSG, type: "error" }); } }). error(function (data, status, headers, config) { $('.splash').css('display', 'none'); sweetAlert.swal({ title: '' + status, text: '' + data, type: "error" }); }); } $scope.newData = function (obj) { obj.due_date = (new Date()).toISOString(); var modalPath = "core/modules/purchase/view/form-purchase-doc.html"; $scope.newDoc(obj, $scope.fls, 'new', modalPath, $scope.selectedTable, obj.purchase_operation, obj.form_subtitle); } }, resolve: { loadObj: function ($http) { // $http returns a promise for the url data return $http({ method: 'GET', url: 'core/service.php?do=purchase.dashboard&dataset=transaction' }); }, }, data: { module: 'N', pageTitle: 'Dashboard', pageDesc: 'Dashboard' } };// Forms views $stateProvider.state('purchase', { abstract: true, url: "/purchase", templateUrl: "views/common/content_mobile.html", data: { pageTitle: 'purchase', module: 'Y', role: [ { name: "purchase.admin", title: "Purchase Admin", access: ['purchase.app', 'purchase.master', "purchase.transaction", "purchase.pricelist"] }, { name: "purchase.user", title: "Purchase User", access: ['purchase.app', "purchase.transaction", "purchase.pricelist"] }, ], menu: { "purchase.app": { url: "purchase.app", title: "Dashboard", class: "pe pe-7s-note text-success", sidemenu: "Y" }, 'purchase.master': { url: "purchase.master", title: "Master File", class: "pe pe-7s-note text-success", sidemenu: "Y" }, "purchase.transaction": { url: "purchase.transaction", title: "Transaction", class: "pe pe-7s-note text-success", sidemenu: "Y" }, "purchase.pricelist": { url: "purchase.pricelist", title: "Price List", class: "pe pe-7s-note text-success", sidemenu: "Y" }, } } }) // MENU: CUSTOMER .state('purchase.app', purchase_appCtrl) .state('purchase.master', purchase_masterCtrl) .state('purchase.transaction', purchase_transactionCtrl) .state('purchase.pricelist', purchase_pricelistCtrl) //--* EXTEND_CODE_MODULES END *--// } angular .module('homer') .config(configState) .run(function ($rootScope, $state, editableOptions, global) { $rootScope.$state = $state; editableOptions.theme = 'bs3'; $rootScope.$on('$stateChangeSuccess', function (event, toState, toParams, fromState, fromParams) { if (global.auth == 'Y') { if (global.menues[toState.name] == undefined) { console.log("S NOT ALLOW", toState.name); event.preventDefault(); $state.go('common.login'); } if (toState.data.auth == 'Y') { if (global.auth != 'Y') { event.preventDefault(); $state.go('common.login'); } } } $('.splash').css('display', 'none'); }); $rootScope.$on('$stateChangeStart', function (event, toState, toParams, fromState, fromParams) { $('.splash').css('display', 'block'); /* if(global.menues[toState.name] == undefined){ if((toState.name !='landing')&&(toState.name !='common.login')){ console.log("ST NOT ALLOW",toState.name,global.menues); event.preventDefault(); } } */ if (toState.data.auth == 'Y') { if (global.auth != 'Y') { event.preventDefault(); $state.go('common.login'); } } // Auto hide side bar when stage change on size < 400px if ($(window).width() < 400) { $("body").toggleClass("show-sidebar"); } }); });