angular.module('kalgudiApp.mybusiness').controller('transactionsFullviewController', ["$scope","kalgudiLiterals","$rootScope","$state","$stateParams","mybusinessMessageService","myconnectsdataFactory","mybusinessSalesService", "$filter","mybusinessdataFactory","mybusinessInboxFactory","mybusinessfullblownFactory","$ionicPopup","inboxSyncFactory","$ionicSlideBoxDelegate", "$ionicScrollDelegate","transactionServivces","basicAppMessageService", function($scope,kalgudiLiterals,$rootScope,$state,$stateParams,mybusinessMessageService,myconnectsdataFactory,mybusinessSalesService, $filter,mybusinessdataFactory,mybusinessInboxFactory,mybusinessfullblownFactory,$ionicPopup,inboxSyncFactory,$ionicSlideBoxDelegate, $ionicScrollDelegate, transactionServivces, basicAppMessageService){ $scope.connectsfactory = myconnectsdataFactory; $rootScope.spinerisActive = false; $scope.TaLiterals = kalgudiLiterals; $scope.commentrequest = {}; $scope.commentForm = { "comment" : "" }; $rootScope.item = { select : -1 } $scope.bizfullviewFlags = { "transactiondetail" : true, "transactioncomment" : false, "transactionattachment" : false, "chargeTableHideMF" : false } $scope.bizfullviewDates = { "modifiedDate" : '', "customEntrydate" : '' } $scope.bizfullviewAmounts = { "taxAmount" : 0, "productsTotalAmount" : 0, "commission" : 0, "chargeAmount" : 0, "taxAmountFilter" : 0, "productTaxFilter" : 0, "commissionFilter" : 0, "customTotalTxAmt" : 0, "chargeAmountFilter" : 0 } $scope.attachment = {}; $scope.attachment.businessAttachmentListFileNames = []; $scope.reportabuseText={Flag:false}; $scope.init = function () { $scope.stockEntries = []; $scope.getTransaction(items.purchaseCommonKeyPatternIds); } $scope.getTransaction = function (transactionId) { transactionServivces.getFullViewMessages(transactionId).then( function (response) { var data = JSON.parse(response.data); for(i in data) { $scope.stockEntries.push(JSON.parse(data[i])); } }, function (err) { } ) } $scope.businessslidetobeChanged = function(index){ if(index == 0){ $scope.bizfullviewFlags.transactiondetail = true; $scope.bizfullviewFlags.transactioncomment = false; $scope.bizfullviewFlags.transactionattachment = false; } else if(index == 1){ $scope.bizfullviewFlags.transactiondetail = false; $scope.bizfullviewFlags.transactioncomment = false; $scope.bizfullviewFlags.transactionattachment = true; } else if(index == 2){ $scope.bizfullviewFlags.transactiondetail = false; $scope.bizfullviewFlags.transactioncomment = true; $scope.bizfullviewFlags.transactionattachment = false; } } $scope.transactiondetailslide = function(index){ $ionicSlideBoxDelegate.$getByHandle('bizfullviewslides').slide(index, [300]); } $scope.handle = $ionicScrollDelegate.$getByHandle('bizScroll'); $scope.onDrag = function(e){ var distance = -1 * e.gesture.deltaY; $scope.handle.scrollBy(0,distance,true); }; $scope.stateChangeEvent = function(toState, toParams) { if(toState.data.action == "inboxFullView"){ var messageRequest = { "keypattern_id":toParams.threadId, "dbName" : $rootScope.loggedInUserCurrentBussinessInfo.businessUUID }; $rootScope.spinnerActiveblock=true; $rootScope.linearprogressbardisplay(); mybusinessfullblownFactory.getFullViewMessages(messageRequest).then(function(serviceResponseList){ $rootScope.spinnerActiveblock=false; $rootScope.linearprogressbarcancel(); $scope.viewMessageDetails = serviceResponseList; $scope.transportList = serviceResponseList.transportList; $scope.viewMessageDetails.commentList = $filter('orderBy')($scope.viewMessageDetails.commentList,"modifiedDate",true); $scope.bizfullviewDates.modifiedDate = $filter('datefilter')($scope.viewMessageDetails.createdTimeStamp); $scope.bizfullviewDates.customEntrydate = $filter('date')($scope.viewMessageDetails.createdTimeStamp, 'dd MMM yy' ); //$scope.bizfullviewAmounts.customTotalTxAmt = $filter('number')($scope.viewMessageDetails.totalTxAmount, 2).toString().replace(/,/g,''); // calculating total tax amount $scope.bizfullviewAmounts.productsTotalAmount = 0; if($scope.viewMessageDetails.partnerBusinessTypeId=="BT000009"){ for(var i in $scope.viewMessageDetails.productList){ $scope.bizfullviewAmounts.productsTotalAmount = parseFloat($scope.bizfullviewAmounts.productsTotalAmount + parseFloat($scope.viewMessageDetails.productList[i].rate)); $scope.productsTotalAmountFilter = $filter('number')($scope.bizfullviewAmounts.productsTotalAmount, 2).toString().replace(/,/g,''); } $scope.bizfullviewAmounts.taxAmountFilter = $filter('number')($scope.viewMessageDetails.serviceTaxes, 2).toString().replace(/,/g,''); $scope.bizfullviewAmounts.productTaxFilter = $filter('number')($scope.bizfullviewAmounts.productsTotalAmount + $scope.viewMessageDetails.serviceTaxes, 2).toString().replace(/,/g,''); } else{ for(var i in $scope.viewMessageDetails.productList){ $scope.taxDetails = $scope.viewMessageDetails.productList[i].taxList; if($scope.viewMessageDetails.transactionType.toLowerCase()=="transportation"){ $scope.bizfullviewAmounts.productsTotalAmount = parseFloat($scope.viewMessageDetails.freightAmount); } else{ $scope.bizfullviewAmounts.productsTotalAmount = parseFloat($scope.bizfullviewAmounts.productsTotalAmount + ($scope.viewMessageDetails.productList[i].quantity * $scope.viewMessageDetails.productList[i].rate)); } $scope.productsTotalAmountFilter = $filter('number')($scope.bizfullviewAmounts.productsTotalAmount, 2).toString().replace(/,/g,''); for(var j in $scope.taxDetails){ if($scope.taxDetails[j].addToInvoice == 1){ if($scope.viewMessageDetails.transactionType.toLowerCase()=="transportation"){ $scope.bizfullviewAmounts.taxAmount = $scope.taxDetails[0].taxAmount; } else{ $scope.bizfullviewAmounts.taxAmount += $scope.taxDetails[j].taxAmount; } } } $scope.viewMessageDetails.productList[i].productTotalFilter = $filter('number')($scope.viewMessageDetails.productList[i].quantity * $scope.viewMessageDetails.productList[i].rate, 2).toString().replace(/,/g,''); } $scope.bizfullviewAmounts.taxAmountFilter = $filter('number')($scope.bizfullviewAmounts.taxAmount, 2).toString().replace(/,/g,''); $scope.bizfullviewAmounts.productTaxFilter = $filter('number')($scope.bizfullviewAmounts.productsTotalAmount + $scope.bizfullviewAmounts.taxAmount, 2).toString().replace(/,/g,''); // commission $scope.bizfullviewAmounts.commission = parseFloat(($scope.viewMessageDetails.commission * $scope.bizfullviewAmounts.productsTotalAmount)/100); $scope.bizfullviewAmounts.commissionFilter = $filter('number')($scope.bizfullviewAmounts.commission, 2).toString().replace(/,/g,''); } //calculating total charge amount $scope.chargeList = serviceResponseList.chargeList; for(var index in $scope.chargeList){ if($scope.chargeList[index].addToInvoice == 1){ $scope.bizfullviewAmounts.chargeAmount += $scope.chargeList[index].chargesAmount; } $scope.chargeList[index].separateChargeAmtFilter = $filter('number')($scope.chargeList[index].chargesAmount, 2).toString().replace(/,/g,''); } $scope.bizfullviewAmounts.chargeAmountFilter = $filter('number')($scope.bizfullviewAmounts.chargeAmount, 2).toString().replace(/,/g,''); // For MF for(var i in $scope.chargeList) { if($scope.chargeList[i].serialNum != '' && $scope.viewMessageDetails.transactionType.toLowerCase()=='sale' ){ $scope.bizfullviewFlags.chargeTableHideMF = false; } else { $scope.bizfullviewFlags.chargeTableHideMF = true; break; } } $scope.ChargeComm = $scope.bizfullviewAmounts.chargeAmount; // filenames split $scope.fileNames = serviceResponseList.fileNames; $scope.filesArrayMain = []; if($scope.fileNames != "" && $scope.fileNames != undefined){ $scope.splitfiles = $scope.fileNames.split(','); for(var index in $scope.splitfiles){ var splitNames = $scope.splitfiles[index].split('/'); var filekeyTemp = $scope.splitfiles[index]; $scope.filesArrayMain.push({ "text": splitNames[2], "key": filekeyTemp, "keyPatternId":serviceResponseList.keyPatternId, "downloaderFlag":false }); } } $scope.showMoreFiles = false; // to show moere than 3 files $scope.moreFiles = function() { $scope.showMoreFiles = true; } // commenter name $scope.commentList = serviceResponseList.commentList; $scope.commenterName = ""; $scope.loginDetails = $rootScope.loggedInUserBusinessProfile.lstOfUserBusinessDetailsInfo[0]; for(var index in $scope.commentList){ $scope.modifiedName = $scope.commentList[index].modifiedBy; $scope.commentedName = myconnectsdataFactory.getConnetcs_VisitorsProfile($scope.modifiedName); if($scope.commentedName == undefined){ $scope.commentedName = mybusinessdataFactory.getAllconnectsListWithBizId($scope.modifiedName); } $scope.commentList[index].commentDate = $filter('datefilter')($scope.commentList[index].modifiedDate); if($scope.modifiedName == $scope.loginDetails.businessKey){ $scope.commentList[index].commenterName = $rootScope.loggedInUserBusinessProfile.lstOfUserBusinessDetailsInfo[0].businessName; $scope.commentList[index].commenterFirstName = $rootScope.loggedInUserBusinessProfile.lstOfUserBusinessDetailsInfo[0].firstName; }else{ $scope.commentList[index].commenterName = $scope.commentedName.businessName; $scope.commentList[index].commenterFirstName = $scope.commentedName.firstName; } } // comment file download $scope.commentfiledownload = function(fileKey,mobileflag){ var splitFile = fileKey.split('/'); var fileToDownload = splitFile[0]+"/"+splitFile[1]; mybusinessMessageService.downloadFile(fileToDownload).then(function(result){ var fileName = fileKey.split('/')[1]; var shortName = splitFile[2]; var type = splitFile[3]; if(mobileflag) { if(detectmob()) showInGallery(result,fileName,shortName,type); else{ var a = document.createElement('a'); a.href = result; a.download = result.filename; a.target = '_blank'; a.click(); } } else { window.open(result); } }); } }); /* download file starts*/ $scope.filedownload = function(keyPatternId,filename,mobileflag,files){ if($scope.viewMessageDetails.isAccepted == 1){ var request={ "keyPatternId":keyPatternId, "fileName":filename, "moduleId":"TRADERAPP" } if($rootScope.networkAvaliable){ files.downloaderFlag = true; mybusinessMessageService.fileGenerateDoc(request).then(function(result){ if(result != undefined || result != ""){ var key = result; var splitFile = key.split('/'); var fileToDownload = splitFile[0]+"/"+splitFile[1]; mybusinessMessageService.downloadFile(fileToDownload).then(function(result){ files.downloaderFlag = false; var fileName = key.split('/')[1]; var shortName = splitFile[2]; var type = splitFile[3]; if(mobileflag) { //window.open(result, '_system', 'location=yes'); if(detectmob()) showInGallery(result,fileName,shortName,type); else{ var a = document.createElement('a'); a.href = result; a.download = result.filename; a.target = '_blank'; a.click(); } // $rootScope.commonTopErrorAlert("File dowloading","","dowloadAlert"); } else { window.open(result); } }); } }); } else{ window.plugins.toast.show(' No network ', 'long', 'bottom'); } } } /* email document file starts*/ $scope.emailDocument = function(keyPatternId,filename,mobileflag,files){ if($rootScope.loggedInUserCurrentBussinessInfo.emailId == "" || $rootScope.loggedInUserCurrentBussinessInfo.emailId == undefined){ $rootScope.goToState('profile.viewadditionalBizHome.additionalBizInfoForm'); $rootScope.commonTopErrorAlert($scope.TaLiterals.searchByKey('KL_TR_0580')); } else{ if($scope.viewMessageDetails.isAccepted == 1){ var request={ "keyPatternId":keyPatternId, "fileName":filename, "moduleId":"TRADERAPP" } var email = $rootScope.loggedInUserCurrentBussinessInfo.emailId; mybusinessMessageService.emailDoc(request,email).then(function(result){ $rootScope.commonTopErrorAlert($scope.TaLiterals.searchByKey('KL_TR_0581') + $rootScope.loggedInUserCurrentBussinessInfo.emailId); }); } } } //go to inbox $scope.goToInbox = function() { $state.go("mybusiness.home"); } /* download file ends*/ // accept transaction $scope.acceptTransaction = function(){ $rootScope.spinerisActive = true; mybusinessInboxFactory.acceptTransaction($scope.viewMessageDetails).then(function(responseData){ $rootScope.spinerisActive = false; if(responseData.code == 201){ $scope.postiontoBeWhileCommenting.count++; $scope.viewMessageDetails.isAccepted = 1; var responseData = JSON.parse(data.data)[0]; responseData._inboxId =responseData.keyPatternId responseData._fullViewId = responseData.keyPatternId; responseData._isRead = responseData.isRead; responseData._modifiedTS = responseData.modifiedDate; responseData._createdTS = responseData.createdDate; responseData._isDeleted = responseData.isDeleted; var responseFullViewData = responseData; var tempLocalStorage = JSON.parse(window.localStorage['BUSINESS']); var check = _.find(tempLocalStorage.FullViews,function(rw){ return rw!=null && rw.keyPatternId == responseData._fullViewId }); var tempObj = _.find(tempLocalStorage.Inbox,function(rw){ return rw._fullViewId == responseData._fullViewId }); if(check != undefined) { tempLocalStorage.FullViews[responseData._fullViewId] = responseFullViewData; } var processResponseInboxMsg = mybusinessInboxFactory.snapshot_message_processing(responseData); if(tempObj != undefined){ tempLocalStorage.Inbox.splice(tempLocalStorage.Inbox.indexOf(tempObj), 1); } tempLocalStorage.Inbox.unshift(processResponseInboxMsg); if(tempLocalStorage.Inbox.length > GLOBAL_LIMIT) { tempLocalStorage.Inbox = tempLocalStorage.Inbox.slice(0, -1); } checkLocalStorage("BUSINESS",tempLocalStorage); $scope.goToInbox(); }else{ $rootScope.commonTopErrorAlert($scope.TaLiterals.searchByKey('KL_TR_0187')); } }); } //reject Transaction $scope.rejectTransaction = function(){ $rootScope.spinerisActive = true; mybusinessInboxFactory.rejectTransaction($scope.viewMessageDetails).then(function(responseData){ $rootScope.spinerisActive = false; if(responseData.code == 201){ $scope.postiontoBeWhileCommenting.count++; //$rootScope.showCommonTopInfoAlert($scope.TaLiterals.searchByKey('KL_TR_0226')); $scope.viewMessageDetails.isRejected = 1; var responseData = JSON.parse(data.data)[0]; responseData._inboxId =responseData.keyPatternId responseData._fullViewId = responseData.keyPatternId; responseData._isRead = responseData.isRead; responseData._modifiedTS = responseData.modifiedDate; responseData._createdTS = responseData.createdDate; responseData._isDeleted = responseData.isDeleted; var responseFullViewData = responseData; var tempLocalStorage = JSON.parse(window.localStorage['BUSINESS']); var check = _.find(tempLocalStorage.FullViews,function(rw){ return rw!=null && rw.keyPatternId == responseData._fullViewId }); var tempObj = _.find(tempLocalStorage.Inbox,function(rw){ return rw._fullViewId == responseData._fullViewId }); if(check != undefined) { tempLocalStorage.FullViews[responseData._fullViewId] = responseFullViewData; } var processResponseInboxMsg = mybusinessInboxFactory.snapshot_message_processing(responseData); if(tempObj != undefined){ tempLocalStorage.Inbox.splice(tempLocalStorage.Inbox.indexOf(tempObj), 1); } tempLocalStorage.Inbox.unshift(processResponseInboxMsg); if(tempLocalStorage.Inbox.length > GLOBAL_LIMIT) { tempLocalStorage.Inbox = tempLocalStorage.Inbox.slice(0, -1); } checkLocalStorage("BUSINESS",tempLocalStorage); $scope.goToInbox(); /*inboxSyncFactory.inbox_sink("BUSINESS").then(function(server_snapshot){ $scope.goToInbox(); });*/ } else{ $rootScope.commonTopErrorAlert($scope.TaLiterals.searchByKey('KL_TR_0187')); } }) } //mobile edit and accept $scope.mobileEditAccept = function(){ $rootScope.businessfullviewmodal = false; $state.go("mybusiness.editAndAccept.home", {threadId: $scope.viewMessageDetails.keyPatternId}); //$scope.viewMessageDetails.isAccepted = 1; } $scope.receiversList = []; var deletedcount = 0; $scope.checkattachment = function(){ var deletedfilestatus = ""; var splitfiles = []; var filestobesend = []; var tempsplitofattachmentsfiles = $scope.businessAttachmentsList.split(","); var tempsplitofattachments = $scope.businessAttachmentsList.split(","); var data = ""; for(index in tempsplitofattachments){ for(innerindex in $scope.deletedfiles){ if(tempsplitofattachments[index] == $scope.deletedfiles[innerindex]){ deletedcount++; } if($scope.deletedfiles.length == deletedcount){ deletedflag = false; } } } for(var i in $scope.attachment.businessAttachmentListFileNames) { if(data != ""){ data = data+","+$scope.attachment.businessAttachmentListFileNames[i].cephKey; } else if(data == ""){ data = $scope.attachment.businessAttachmentListFileNames[i].cephKey; } } $scope.commentrequest.fileNames = data; if($scope.sendflag == true && $scope.uploadflag == true&& deletedflag == false){ mybusinessMessageService.postComment($scope.commentrequest).then(function(responseData){ $rootScope.spinerisActive = false; if(responseData.code == 201){ //mybusinessInboxFactory.prependCommentMessage(JSON.parse(responseData.data)); $rootScope.showCommonTopInfoAlert($scope.TaLiterals.searchByKey('KL_TR_0228')); inboxSyncFactory.inbox_sink("BUSINESS").then(function(server_snapshot){ $scope.goToInbox(); }); }else{ $rootScope.commonTopErrorAlert($scope.TaLiterals.searchByKey('KL_TR_0187')); } }); } } $scope.resetCommentDetails = function() { // reset comment box $scope.commentForm.comment = ""; var filesToDelete = []; if($scope.attachment.businessAttachmentListFileNames.length >= 1){ for(var i in $scope.attachment.businessAttachmentListFileNames){ filesToDelete[i] = $scope.attachment.businessAttachmentListFileNames[i]; } for(var i in filesToDelete){ $scope.deleteuploadfiles(filesToDelete[i],filesToDelete[i].cephKey); } } } var deletedflag = false; var deletedcount = 0; var completeFileDeleted = 0; $scope.deleteuploadfiles = function(file,filename){ deletedflag = true; if($scope.checkfileupload.indexOf(filename) != -1){ $scope.deletedfiles.push($scope.checkfileupload[$scope.checkfileupload.indexOf(filename)]); var index = $scope.checkfileupload.indexOf(file); $scope.checkfileuploadProgress[index] = 100; } else { //files that are deleted after files uploaded var request = { "filename" : file.cephKey } var tempindex = $scope.attachment.businessAttachmentListFileNames.indexOf(file); var tempBusinesslistAttach = []; for(index in $scope.attachment.businessAttachmentListFileNames){ tempBusinesslistAttach.push($scope.attachment.businessAttachmentListFileNames[index].cephKey); } if(tempBusinesslistAttach.indexOf(file.cephKey) != -1){ $scope.deletedfiles.push(tempBusinesslistAttach[tempBusinesslistAttach.indexOf(file.cephKey)]); } completeFileDeleted++; $scope.attachment.businessAttachmentListFileNames.splice(tempindex,1); mybusinessSalesService.deleteUploadFile(file.cephKey).then(function(serviceResponseList){ }); } } $scope.deletedfiles = []; $scope.sendflag = false; $scope.uploadflag = false; $scope.checkfileupload = []; $rootScope.businessAttachmentsList = ""; $scope.files = []; $scope.checkfileuploadProgress = []; $scope.checkfileuploadProgressNames = {}; $scope.checkfileuploadSizes = []; $scope.attachment.businessAttachmentListFileNames = []; // camera attachment $scope.attachmentsMenuShow = function(){ if($rootScope.networkAvaliable) { $scope.attachmentsShowFlag = !$scope.attachmentsShowFlag; } else { window.plugins.toast.show(' No network ', 'long', 'bottom'); } } } } /* * Download Invoice of Transaction */ $scope.downloadReceipt = function (commonKeyPatternId, file) { $rootScope.spinerisActive = true; file = file.toUpperCase(); transactionServivces.dowloadReceipt(commonKeyPatternId, file).then( function(response) { if(response.data != undefined || response.data != "") { var key = response.data; var splitFile = key.split('/'); var fileToDownload = splitFile[0]+"/"+splitFile[1]; basicAppMessageService.downloadFile(fileToDownload).then( function(result) { var fileName = key.split('/')[1]; var shortName = splitFile[2]; var type = splitFile[3]; $rootScope.spinerisActive = false; var a = document.createElement('a'); a.href = result; a.download = result.filename; a.target = '_blank'; a.click(); }); } }, function (err) { $rootScope.spinerisActive = false; }); } /* ---------------------- Transaction Comments ---------------------- */ $scope.commentTo = { commentedBy : "", commenterBizId : "", commenterFirstName : "", commenterBizName : "", commentedTS : "", message : "", attachemnts : [], commenterProfilePic : "" } $scope.commentForm = { comment : "" } /* * Update Transaction Comments */ $scope.commentUpdate = function (viewMessageDetails, index) { $rootScope.spinerisActive = true; const transactionDetails = { transactionId : viewMessageDetails.commonKeyPatternId, } $scope.commentTo.commentedBy = $rootScope.loggedInUserBusinessProfile.profileKey $scope.commentTo.commenterBizId = $rootScope.loggedInUserBusinessProfile.additionalBizDetails.businessTypeId; $scope.commentTo.commenterFirstName = $rootScope.loggedInUserBusinessProfile.firstName, $scope.commentTo.commenterBizName = $rootScope.loggedInUserBusinessProfile.additionalBizDetails.businessTypeName; $scope.commentTo.commentedTS = new Date().toISOString().replace('T', ' ').replace('.', ' ').replace('Z', ''); $scope.commentTo.message = $scope.commentForm.comment; $scope.commentTo.commenterProfilePic = $rootScope.loggedInUserBusinessProfile.profilePicUrl; $scope.commentTo.attachemnts = $scope.checkfileupload; transactionServivces.postComments(transactionDetails.transactionId, $scope.commentTo).then( function(response) { $rootScope.spinerisActive = false; if(response.code == 200){ $scope.updateView(response); } }, function (err) { }); } $scope.updateView = function(data) { $rootScope.spinerisActive = false; var totalcommentlist = JSON.parse(data.data).commentList; (totalcommentlist[totalcommentlist.length-1].commentedTS) = (totalcommentlist[totalcommentlist.length-1].commentedTS); $scope.viewMessageDetails.commentList.unshift({ "commentedTS" : (totalcommentlist[totalcommentlist.length-1].commentedTS), "message" : totalcommentlist[totalcommentlist.length-1].message, "commenterFirstName" : totalcommentlist[totalcommentlist.length-1].commenterFirstName, "commenterProfilePic" : totalcommentlist[totalcommentlist.length-1].commenterProfilePic, //"commentFiles" : scope.commentrequest.fileNames, //"attachments" : scope.imagePost }); $scope.commentForm = { 'comment' : "" } } $scope.stateChangeEvent($state.current, $stateParams); }]);