(function () { "use strict"; angular .module('codeAPLEBOX.client.user.employee.customer.transferstatus') .controller('transferstatusController', transferstatusController); /* @ngInject */ function transferstatusController($state, appConfig, $log, WEB_API_EMPLOYEE, $cookies, moment) { var vm = this; // ======================================================================= // 초기데이터 // ======================================================================= vm.employeeInfo = $cookies.getObject("employeeInfo"); iniData(); // ======================================================================= // Angularjs Function // ======================================================================= /* start dialog */ vm.clickOpenDialogTransferSubmit = function(transactionInfo){ vm.selectedTransactionInfo = transactionInfo; vm.checkDialogTransferSubmit = true; // 이관대기 } vm.clickOpenDialogModifyTransferSubmit = function(transactionInfo){ WEB_API_EMPLOYEE.getAvailableTransactionCount({ customerId: transactionInfo.ReleaseCustomerId }).then(function (result) { var getAvailableTransactionCount = result.data.getAvailableTransactionCount; vm.maxquantity = getAvailableTransactionCount + transactionInfo.quantity; vm.selectedModifyTransactionInfo = transactionInfo; vm.selectedModifyTransactionInfo['modifyTransactionQuantity'] = transactionInfo.quantity; vm.checkDialogModifyTransferSubmit = true; // 이관수정 }).catch(function (err) { $log.error(err); }); } vm.clickTransferModifySubmitCompleted = function(){ if(vm.selectedModifyTransactionInfo.quantity.toString() == vm.selectedModifyTransactionInfo.modifyTransactionQuantity.toString()){ return; } if(vm.selectedModifyTransactionInfo.modifyTransactionQuantity > vm.maxquantity){ alert("이관 수량을 확인하세요."); return; } vm.checkDialogModifyTransferSubmit = false; // 이관수정 var transactionReleaseInfo = vm.selectedModifyTransactionInfo.Release[0]; var historyId = transactionReleaseInfo.History.id; var costInfoOfRelease = transactionReleaseInfo.Cost; var returnDeposit = vm.selectedModifyTransactionInfo.modifyTransactionQuantity * costInfoOfRelease.deposit; /*1. transaction 관련 1) history 삭제 2) transaction 삭제*/ vm.checkRootModification = true; WEB_API_EMPLOYEE.modifyTransaction({ transactionId: vm.selectedModifyTransactionInfo.id, historyId: historyId, quantity: vm.selectedModifyTransactionInfo.modifyTransactionQuantity, returnDeposit: returnDeposit }).then(function (result) { /* 2. 이관인 1) modifyRelease */ var releaseId = transactionReleaseInfo.id; var releaseSubmitModifyReleaseInfo = { originalDateTime: moment(transactionReleaseInfo.dateTime).format("YYYY-MM-DD HH:mm:ss").toString(), modifyDateTime: moment(new Date()).format("YYYY-MM-DD HH:mm:ss").toString(), checkComplete: transactionReleaseInfo.checkComplete, quantity: transactionReleaseInfo.quantity, // remindQuantity: transactionReleaseInfo.remindQuantity + vm.selectedModifyTransactionInfo.quantity, // 삭제 (remindquantity + 이관 수량) remindQuantity: transactionReleaseInfo.remindQuantity + vm.selectedModifyTransactionInfo.quantity - vm.selectedModifyTransactionInfo.modifyTransactionQuantity, // 수정 ChangeEmployeeId: vm.employeeInfo.id } var releaseSubmitDepositInfo = { customerId: transactionReleaseInfo.CustomerId, diffUseDeposit: 0 } var releaseSubmitStockInfo = { diffQuantity: 0, } WEB_API_EMPLOYEE.modifyRelease({ releaseId: releaseId, submitModifyReleaseInfo: releaseSubmitModifyReleaseInfo, submitDepositInfo: releaseSubmitDepositInfo, submitStockInfo: releaseSubmitStockInfo, }).then(function (result) { /* 3. 수관인 1) removeRelease */ var transactionReceiptReleaseInfo = vm.selectedModifyTransactionInfo.TransactionRelease; var costInfoOfTransactionReceiptRelease = transactionReceiptReleaseInfo.Cost; var receiptReleaseId = transactionReceiptReleaseInfo.id; var diffTransactionQuantity = vm.selectedModifyTransactionInfo.modifyTransactionQuantity - vm.selectedModifyTransactionInfo.quantity var releaseSubmitModifyReleaseInfo = { originalDateTime: moment(transactionReceiptReleaseInfo.dateTime).format("YYYY-MM-DD HH:mm:ss").toString(), modifyDateTime: moment(new Date()).format("YYYY-MM-DD HH:mm:ss").toString(), checkComplete: transactionReceiptReleaseInfo.checkComplete, quantity: transactionReceiptReleaseInfo.quantity + diffTransactionQuantity, remindQuantity: transactionReceiptReleaseInfo.remindQuantity + diffTransactionQuantity, ChangeEmployeeId: vm.employeeInfo.id } var diffUseDeposit = vm.selectedModifyTransactionInfo.modifyTransactionQuantity * costInfoOfTransactionReceiptRelease.deposit - vm.selectedModifyTransactionInfo.quantity * costInfoOfTransactionReceiptRelease.deposit; var releaseSubmitDepositInfo = { customerId: transactionReceiptReleaseInfo.CustomerId, diffUseDeposit: diffUseDeposit } var releaseSubmitStockInfo = { diffQuantity: diffTransactionQuantity, } WEB_API_EMPLOYEE.modifyRelease({ releaseId: receiptReleaseId, submitModifyReleaseInfo: releaseSubmitModifyReleaseInfo, submitDepositInfo: releaseSubmitDepositInfo, submitStockInfo: releaseSubmitStockInfo, }).then(function (result) { WEB_API_EMPLOYEE.updateStock() .then(function (result) { vm.checkRootModification = false; vm.checkDialogModifyTransferSubmitCompleted = true; // 이관수정 완료 getTransactionList(); }).catch(function (err) { $log.error(err); }); }).catch(function (err) { $log.error(err); }); }).catch(function (err) { $log.error(err); }); }).catch(function (err) { $log.error(err); }); } vm.clickTransferRemoveSubmitCompleted = function(){ vm.checkDialogModifyTransferSubmit = false; // 이관수정 /*1. transaction 관련 1) history 삭제 2) transaction 삭제*/ vm.checkRootRemoving = true; WEB_API_EMPLOYEE.removeTransaction({ transactionId: vm.selectedModifyTransactionInfo.id }).then(function (result) { /* 2. 이관인 1) modifyRelease */ var transactionReleaseInfo = vm.selectedModifyTransactionInfo.Release[0]; var releaseId = transactionReleaseInfo.id; var submitModifyReleaseInfo = { originalDateTime: moment(transactionReleaseInfo.dateTime).format("YYYY-MM-DD HH:mm:ss").toString(), modifyDateTime: moment(new Date()).format("YYYY-MM-DD HH:mm:ss").toString(), checkComplete: false, quantity: transactionReleaseInfo.quantity, remindQuantity: transactionReleaseInfo.remindQuantity + vm.selectedModifyTransactionInfo.quantity, // 삭제 (remindquantity + 이관 수량) // remindQuantity: releaseInfo.remindQuantity + vm.selectedModifyTransactionInfo.quantity - vm.selectedModifyTransactionInfo.modifyTransactionQuantity, // 수정 ChangeEmployeeId: vm.employeeInfo.id } var submitDepositInfo = { customerId: transactionReleaseInfo.CustomerId, diffUseDeposit: 0 } var submitStockInfo = { diffQuantity: 0, } WEB_API_EMPLOYEE.modifyRelease({ releaseId: releaseId, submitModifyReleaseInfo: submitModifyReleaseInfo, submitDepositInfo: submitDepositInfo, submitStockInfo: submitStockInfo, }).then(function (result) { /* 3. 수관인 1) removeRelease */ var transactionReceiptInfo = vm.selectedModifyTransactionInfo.TransactionRelease; var removeInfo ={ releaseId: transactionReceiptInfo.id, customerId: transactionReceiptInfo.CustomerId, dateTime: moment(transactionReceiptInfo.dateTime).format("YYYY-MM-DD HH:mm:ss").toString(), } WEB_API_EMPLOYEE.removeRelease({ removeInfo: removeInfo }).then(function (result) { WEB_API_EMPLOYEE.updateStock() .then(function (resultOfUpdateStock) { vm.checkRootRemoving = false; vm.checkDialogRemoveTransferSubmitCompleted = true; // 이관 삭제 완료 getTransactionList(); }).catch(function (err) { $log.error(err); }); }).catch(function (err) { $log.error(err); }); }).catch(function (err) { $log.error(err); }); }).catch(function (err) { $log.error(err); }); } vm.clickTransferSubmitCompleted = function(check){ if(check == 1){ vm.joinStr = "승인" }else if(check == 2){ vm.joinStr = "거부" } var remindReleaseInfoList = []; for(var i = 0; i < vm.selectedTransactionInfo.Release.length; i++){ var releaseId = vm.selectedTransactionInfo.Release[i].id; var quantiy = vm.selectedTransactionInfo.Release[i].History.quantity; var remindReleaseInfo = { releaseId: releaseId, quantiy: quantiy, } remindReleaseInfoList.push(remindReleaseInfo); } vm.checkRootUploading = true; WEB_API_EMPLOYEE.setTransaction({ EmployeeId: vm.employeeInfo.id, ReleaseCustomerId: vm.selectedTransactionInfo.ReleaseCustomerId, ReceiptCustomerId: vm.selectedTransactionInfo.ReceiptCustomerId, transactionId: vm.selectedTransactionInfo.id, transactionQuantity: vm.selectedTransactionInfo.quantity, permissionStatus: check, remindReleaseInfoList: remindReleaseInfoList }).then(function (result) { vm.checkRootUploading = false; vm.checkDialogTransferSubmit = false; vm.checkDialogTransferSubmitCompleted = true; getTransactionList(); }).catch(function (err) { $log.error(err); }); } vm.closeDialog = function(){ vm.checkDialogTransferSubmit = false; // 이관대기 vm.checkDialogTransferSubmitCompleted = false; vm.checkDialogModifyTransferSubmit = false; // 이관수정 vm.checkDialogModifyTransferSubmitCompleted = false; // 이관수정 완료 vm.checkDialogRemoveTransferSubmitCompleted = false; // 이관삭제 완료 vm.selectedTransactionInfo = null; vm.selectedModifyTransactionInfo = null; } /* end dialog */ vm.resetBoard = function () { vm.checkChangeDate = false; // 날짜변경 // board 초기화 vm.flag = true; vm.curPage = 1; // 현재 페이지 vm.startRange = 1; // 시작 페이지 번호 vm.endRange = 1; // 마지막 페이지 번호 vm.searchInfo = { searchDate: { startDate: null, endDate: null, }, searchTransactionStatus: null, searchCustomerNameOrEmployeeName: null } vm.startDate = null; vm.endDate = null; vm.searchTransactionStatus = null; vm.searchCustomerNameOrEmployeeName = null; vm.orderInfo = null; getTransactionList(); } vm.iniBoard = function(){ vm.flag = true; vm.curPage = 1; // 현재 페이지 vm.startRange = 1; // 시작 페이지 번호 vm.endRange = 1; // 마지막 페이지 번호 } vm.searchForBoard = function(){ if(vm.searchCustomerNameOrEmployeeName == null || vm.searchCustomerNameOrEmployeeName == ''){ vm.searchCustomerNameOrEmployeeName = null; } vm.searchInfo = { searchDate: { startDate: vm.startDate, endDate: vm.endDate, }, searchTransactionStatus: vm.searchTransactionStatus, searchCustomerNameOrEmployeeName: vm.searchCustomerNameOrEmployeeName } vm.iniBoard(); getTransactionList(); } vm.checkDuring = function(check){ if(check == 1){ // 오늘 vm.checkChangeDate = false; }else{ vm.checkChangeDate = true; } } vm.searchForDate = function(check){ if(check){ vm.checkChangeDate = false; vm.startDate = null; vm.endDate = null; }else{ vm.startDate = $("#startDate").val(); vm.endDate = $("#endDate").val(); } vm.searchForBoard(); } vm.searchForTransactionStatus = function(check){ // check 0:이관대기, 1: 이관승인, 2: 이관거부 if(check == null){ vm.searchTransactionStatus = null; }else{ vm.searchTransactionStatus = check; } vm.searchForBoard(); } vm.searchForCustomerNameOrEmployeeName = function(check){ if(check == 0){ vm.searchCustomerNameOrEmployeeName = null; } vm.searchForBoard(); } vm.selectBoardCnt = function(number){ vm.boardCnt = number; vm.iniBoard(); getTransactionList(); } // ======================================================================= // Common API // ======================================================================= function iniData(){ vm.checkSearchResult = true; vm.selectedTransactionInfo = null; vm.selectedModifyTransactionInfo = null; vm.checkChangeDate = false; // 날짜변경 /* start dialog */ vm.checkDialogTransferSubmit = false; // 이관대기 vm.checkDialogTransferSubmitCompleted = false; vm.checkDialogModifyTransferSubmit = false; // 이관수정 vm.checkDialogModifyTransferSubmitCompleted = false; // 이관수정 완료 vm.checkDialogRemoveTransferSubmitCompleted = false; // 이관삭제 완료 /* end dialog */ // board 초기화 vm.flag = true; vm.curPage = 1; // 현재 페이지 vm.boardCnt = 15; // 한페이지에 보여지는 콘텐츠 개수 vm.arrowPageCnt = 5; vm.maxShownPageCnt = 5; // 보여지는 최대 페이지 개수 vm.startRange = 1; // 시작 페이지 번호 vm.endRange = 1; // 마지막 페이지 번호 vm.searchInfo = { searchDate: { startDate: null, endDate: null, }, searchTransactionStatus: null, searchCustomerNameOrEmployeeName: null } vm.startDate = null; vm.endDate = null; vm.searchTransactionStatus = null; vm.searchCustomerNameOrEmployeeName = null; getTransactionList(); } /*start: getTransactionList*/ function getTransactionList() { if( vm.searchInfo.searchDate.startDate == null && vm.searchInfo.searchDate.endDate == null && vm.searchInfo.searchTransactionStatus == null && vm.searchInfo.searchCustomerNameOrEmployeeName== null ){ vm.checkSearchResult = false; }else{ vm.checkSearchResult = true; } WEB_API_EMPLOYEE.getTransactionList({ curPage: vm.curPage, boardCnt: vm.boardCnt, searchInfo: vm.searchInfo, orderInfo: vm.orderInfo, }).then(function (result) { vm.getTransactionList = result.data.rows; vm.totalBoardLen = result.data.count; // 이번달 +- 5일 구하기. var tmpYear = new Date().getFullYear().toString(); var tmpMonth = (new Date().getMonth()+1).toString(); var currentFullDay = tmpYear+"-"+tmpMonth+"-01"; var previousDay = moment(currentFullDay).add(-2, 'days').format("YYYY-MM-DD 00:00").toString(); // 5일전 var afterDay = moment(currentFullDay).add(2, 'days').format("YYYY-MM-DD 23:59").toString(); // 5일후 var tmpCurrentFullDay = moment(new Date()).format("YYYY-MM-DD HH:mm").toString(); var fullCheckRegister = true; if(tmpCurrentFullDay >= previousDay && tmpCurrentFullDay <= afterDay){ // 현재일 기준 fullCheckRegister = false; } for(var i = 0; i < vm.getTransactionList.length; i++){ var checkRegister = false; if(fullCheckRegister){ var previousTime = moment(new Date()).format("YYYY-MM-DD 00:00").toString(); var afterTime = moment(new Date()).format("YYYY-MM-DD 23:59").toString(); var registerTime = null; if(vm.getTransactionList[i].approvalDateTime != null && vm.getTransactionList[i].permissionStatus == 1){ registerTime = moment(vm.getTransactionList[i].approvalDateTime).format("YYYY-MM-DD HH:mm").toString(); if(registerTime >= previousTime && registerTime <= afterTime){ checkRegister = true; } }else{ checkRegister = false; } } vm.getTransactionList[i]['checkRegister'] = checkRegister; } vm.pageCnt = Math.ceil(vm.totalBoardLen / vm.boardCnt); if (vm.flag) { if (vm.pageCnt <= vm.maxShownPageCnt) { vm.endRange = vm.pageCnt; } else { vm.endRange = vm.maxShownPageCnt; } } vm.flag = false; }).catch(function (err) { $log.error(err); }); } // ======================================================================= // 페이지 범위 계산 // ======================================================================= vm.pageRange = function (min, max) { var input = []; for (var i = min; i <= max; i += 1) { input.push(i); } return input; }; // ======================================================================= // 버튼클릭 이벤트 // ======================================================================= // clickFirstArrow 클릭 vm.clickFirstArrow = function () { vm.curPage = 1; vm.startRange = 1; if (vm.pageCnt <= vm.maxShownPageCnt) { vm.endRange = vm.pageCnt; } else { vm.endRange = vm.maxShownPageCnt; } getTransactionList(); }; // clickLastArrow 클릭 vm.clickLastArrow = function () { vm.curPage = vm.pageCnt; vm.endRange = vm.pageCnt; if (vm.pageCnt <= vm.maxShownPageCnt) { vm.startRange = 1; } else { var remainderValue = vm.pageCnt % vm.maxShownPageCnt; var value = vm.maxShownPageCnt - remainderValue; if (remainderValue != 0) { vm.startRange = vm.pageCnt - remainderValue + 1; } else { vm.startRange = vm.endRange; } } getTransactionList(); }; // leftArrow 클릭 vm.clickLeftArrow = function () { if (vm.curPage > 1) { vm.curPage -= vm.arrowPageCnt; } if (vm.curPage < vm.startRange) { if ((vm.endRange % vm.maxShownPageCnt) != 0) { vm.endRange += (vm.maxShownPageCnt - (vm.endRange % vm.maxShownPageCnt)); } vm.startRange -= vm.arrowPageCnt; vm.endRange = vm.startRange + (vm.arrowPageCnt - 1); } vm.curPage = vm.endRange; getMonthlyPersonalList(); }; // rightArrow 클릭 vm.clickRightArrow = function () { if (vm.curPage < vm.pageCnt) { vm.curPage += vm.arrowPageCnt; } if (vm.curPage > vm.endRange) { vm.startRange += vm.arrowPageCnt; vm.endRange += vm.arrowPageCnt; if (vm.endRange >= vm.pageCnt) { vm.endRange = vm.pageCnt; } } vm.curPage = vm.startRange; getTransactionList(); }; // 페이지 직접 클릭 vm.clickPage = function (index) { vm.curPage = index; getTransactionList(); }; /* end: getTransactionList*/ } function getAvailableTransactionCount() { WEB_API_CUSTOMER.getAvailableTransactionCount({ customerId: vm.customerInfo.id }).then(function (result) { vm.getAvailableTransactionCount = result.data.getAvailableTransactionCount; }).catch(function (err) { $log.error(err); }); } })();