vatModule.controller('VatPreviewJournalController', ['$rootScope','$scope', '$log', '$filter','$translate', '$timeout', 'SweetAlert', '$q', 'uiGridConstants', '$interval', 'vatPreviewService', 'browserService', 'vatSessionService', 'region', 'enums', 'vatExportService', function ($rootScope,$scope, $log,$filter, $translate, $timeout, SweetAlert, $q, uiGridConstants, $interval, vatPreviewService, browserService, vatSessionService, region, enums, vatExportService) { 'use strict'; $scope.startDate = new Date(vatSessionService.project.year, 0, 1); $scope.endDate = new Date(vatSessionService.project.year, 11, 31); $scope.dateFormat = $translate.instant('dateFormat4YearMonthDay'); $scope.startMonth = vatSessionService.month; $scope.endMonth = vatSessionService.month; $scope.totalMoneyAmount = 0; $scope.totalTaxAmount = 0; var minDate = [1, vatSessionService.project.year]; // var minDate = moment().startOf('month').subtract(0, 'months'); var maxDate = [12, vatSessionService.project.year]; var setDate = [ [vatSessionService.month, vatSessionService.project.year], [vatSessionService.month, vatSessionService.project.year]]; $scope.monthList = [$translate.instant('Month01'), $translate.instant('Month02'), $translate.instant('Month03'), $translate.instant('Month04'), $translate.instant('Month05'), $translate.instant('Month06'), $translate.instant('Month07'), $translate.instant('Month08'), $translate.instant('Month09'), $translate.instant('Month10'), $translate.instant('Month11'), $translate.instant('Month12') ]; //初始化期间 var initPeriods = function () { var curMonth = new Date().getMonth() + 1; $scope.queryParams = { pageInfo: {}, periodStart: '', periodEnd: '', orgId: '', segment3: null, segment3Name: null, segment5: null, segment5Name: null, segment6: null, segment6Name: null, description: null, containsAdjustmentRecord: null }; }; //从数据库中load数据 var loadJournalEntryDataFromDB = function (pageIndex) { initJournalEntryPagination(); $scope.curJournalEntryPage = pageIndex; //初始化查询信息 $scope.queryParams.pageInfo = { totalCount: $scope.queryJournalEntryResult.pageInfo.totalCount, pageIndex: pageIndex, pageSize: $scope.queryJournalEntryResult.pageInfo.pageSize, totalPage: 0 }; $scope.getDataFromDatabase($scope.queryParams); }; $scope.getDataFromDatabase = function (queryParams){ vatPreviewService.getJEDataForDisplay(queryParams).success(function (data) { if (data) { // minDate = data. var index = 1; data.list.forEach(function (v) { v.index = index++; }); $scope.gridOptions.data = data.list; $scope.queryJournalEntryResult.pageInfo = data; computeJournalEntryPage(); $scope.ledgerName = data.list[0].ledgerName; $scope.currencyCode = data.list[0].currencyCode; $scope.status = data.list[0].status; $scope.importDate = $filter('date')(data.list[0].date, "yyyy-MM-dd hh:mm:ss"); } }); }; //点击任意一页加载数据事件 var loadIncomeInvoiceDataByPage = function (pageIndex) { loadJournalEntryDataFromDB(pageIndex); }; //计算页数,创建分页栏 var computeJournalEntryPage = function () { if ($scope.queryJournalEntryResult.pageInfo && $scope.queryJournalEntryResult.pageInfo.total > 0) { var totalPage = parseInt($scope.queryJournalEntryResult.pageInfo.total / $scope.queryJournalEntryResult.pageInfo.pageSize); totalPage = $scope.queryJournalEntryResult.pageInfo.totalCount % $scope.queryJournalEntryResult.pageInfo.pageSize == 0 ? totalPage : totalPage + 1; //计算本页记录数 if ($scope.queryJournalEntryResult.pageInfo.pageNum === totalPage) { $scope.curPageItemCount = $scope.queryJournalEntryResult.pageInfo.total % $scope.queryJournalEntryResult.pageInfo.pageSize; } else { $scope.curPageItemCount = $scope.queryJournalEntryResult.pageInfo.pageSize; } $scope.queryJournalEntryResult.pageInfo.totalPage = totalPage; var createPage = $("#totalInvoicePage").createPage({ pageCount: totalPage, current: $scope.curJournalEntryPage, backFn: function (p) { //单击回调方法,p是当前页码 loadIncomeInvoiceDataByPage(p); } }); $('#totalInvoicePage').css('display', 'inline-block'); } else { //如果查询结果为0,则直接设置本页记录数为0 $scope.curPageItemCount = 0; var createPage = $("#totalInvoicePage").createPage({ pageCount: 0, current: $scope.curJournalEntryPage, backFn: function (p) { //单击回调方法,p是当前页码 loadIncomeInvoiceDataByPage(p); } }); $('#totalInvoicePage').css('display', 'inline-block'); } }; //初始化分页信息 var initJournalEntryPagination = function () { $scope.queryJournalEntryResult = { list: [], pageInfo: { totalCount: -1, pageIndex: 1, pageSize: constant.pagesize, totalPage: 0, } } $scope.curJournalEntryPage = 1; }; //将选择了的查询条件显示在grid上方 var doDataFilter = function (removeData) { if ($scope.queryParams.periodStart > $scope.queryParams.periodEnd) { $scope.queryParams.periodEnd = $scope.queryParams.periodStart; } //设置需要去掉的查询条件的值为空 if (!PWC.isNullOrEmpty(removeData)) { var removeItem = removeData.split("|"); removeItem.forEach(function (v) { $scope.queryParams[v] = null; if ($scope.queryParams.segment3 === null) { $scope.queryParams.segment3 = ''; } if ($scope.queryParams.segment3Name === null) { $scope.queryParams.segment3Name = ''; } if ($scope.queryParams.segment5 === null) { $scope.queryParams.segment5Name = ''; } if ($scope.queryParams.segment6 === null) { $scope.queryParams.segment6 = ''; } if ($scope.queryParams.segment6Name === null) { $scope.queryParams.segment6Name = ''; } if ($scope.queryParams.description === null) { $scope.queryParams.description = ''; } if ($scope.queryParams.invoiceType === null) { $scope.InvoiceType.selected = undefined; } }); } loadJournalEntryDataFromDB(1); if ($scope.criteriaList.length > 6) { $scope.criteriaListFirstRow = $scope.criteriaList.slice(0, 6); $scope.criteriaListSecondRow = $scope.criteriaList.slice(6, $scope.criteriaList.length); } else { $scope.criteriaListFirstRow = $scope.criteriaList.slice(0, $scope.criteriaList.length); } $('.filter-button').popover("hide"); }; //去掉所有的查询条件,重新load数据 var doDataFilterReset = function () { $scope.queryParams = { pageInfo: {}, periodStart: '', periodEnd: '', segment3: null, segment3Name: null, segment5: null, segment5Name: null, segment6: null, segment6Name: null, description: null, containsAdjustmentRecord: null }; $scope.queryParams.periodStart = $scope.startMonth; $scope.queryParams.periodEnd = $scope.endMonth; loadJournalEntryDataFromDB(1); $('.filter-button').popover("hide"); }; var prepareSummary = function () { // do something before show popover }; //在popover打开时执行事件 var showPopover = function () { $timeout(function () { initDatePickers(); }, 500); }; //初始化时间控件 var initDatePickers = function () { //认证开始时间 var ele1 = $("#certificationDateStart"); ele1.datepicker({ startDate: $scope.startDate, endDate: $scope.endDate, language: region, autoclose: true,//选中之后自动隐藏日期选择框 clearBtn: true,//清除按钮 todayBtn: false,//今日按钮 format: $scope.dateFormat//日期格式,详见 http://bootstrap-datepicker.readthedocs.org/en/release/options.html#format }); ele1.datepicker("setDate", $scope.queryParams.certificationDateStart); //认证结束时间 var ele2 = $("#certificationDateEnd"); ele2.datepicker({ startDate: $scope.startDate, endDate: $scope.endDate, language: region, autoclose: true,//选中之后自动隐藏日期选择框 clearBtn: true,//清除按钮 todayBtn: false,//今日按钮 format: $scope.dateFormat//日期格式,详见 http://bootstrap-datepicker.readthedocs.org/en/release/options.html#format }) ele2.datepicker("setDate", $scope.queryParams.certificationDateEnd); }; var downloadJE = function () { vatPreviewService.initExportJEData($scope.queryParams).success(function (data, status, headers) { if(status===204){ SweetAlert.warning("没有数据可以下载"); return; } vatExportService.exportToExcel(data, status, headers, '日记账信息.xls'); }).error(function () { SweetAlert.error($translate.instant('PleaseContactAdministrator')); }); }; (function initialize() { $log.debug('VatPreviewInputInvoiceController.ctor()...'); $('#input-invoice-period-picker').focus(function () { $('.filter-button').popover("hide"); }); //初始化month-picker $('#input-invoice-period-picker').rangePicker({ minDate: minDate, maxDate: maxDate, setDate: setDate, months: $scope.monthList,//['1月', '2月', '3月', '4月', '5月', '6月', '7月', '8月', '9月', '10月', '11月', '12月'], ConfirmBtnText: $translate.instant('Confirm'), CancelBtnText: $translate.instant('ButtonCancel') }) .on('datePicker.done', function (e, result) { //开始月份 var startMonth = result[0][1] * 100 + result[0][0]; //结束月份 var endMonth = result[1][1] * 100 + result[1][0]; $scope.startMonth = startMonth; $scope.endMonth = endMonth; $scope.queryParams.periodStart = startMonth; $scope.queryParams.periodEnd = endMonth; loadJournalEntryDataFromDB(1); }); $scope.gridOptions = { rowHeight: constant.UIGrid.rowHeight, selectionRowHeaderWidth: constant.UIGrid.rowHeight, // expandableRowTemplate: '<div ui-grid="row.entity.subGridOptions" style="height:150px;"></div>', virtualizationThreshold: 50,//默认加载50条数据,避免在数据展示时,只显示前面4条 enableSorting: false, enableColumnMenus: false, enableHorizontalScrollbar : 1, columnDefs: [ { name: $translate.instant('ApprovalStatus'), width: 200, cellTemplate: '<div class="ui-grid-cell-contents"><span>{{row.entity.approvalStatus}}<span></div>' }, // { name: $translate.instant('InvoiceQJ'), width: '8%', cellTemplate: '<div class="ui-grid-cell-contents"><span>{{row.entity.periodID}}<span></div>' }, { name: $translate.instant('Posting'), width: 200,cellTemplate: '<div class="ui-grid-cell-contents"><span>{{row.entity.postedStatus}}<span></div>' }, { name: $translate.instant('AccountingPeriod'), width: 200,cellTemplate: '<div class="ui-grid-cell-contents"><span >{{row.entity.period}}</span></div>' }, { name: $translate.instant('DocumentDate'), width: 200,cellTemplate: '<div class="ui-grid-cell-contents"><span >{{row.entity.accountingDate | date:"yyyy-MM-dd"}}</span></div>' }, { name: $translate.instant('JournalSource'), width: 200,cellTemplate: '<div class="ui-grid-cell-contents"><span >{{row.entity.journalSource}}</span></div>' }, { name: $translate.instant('JournalCategory'), width: 200,cellTemplate: '<div class="ui-grid-cell-contents"><span >{{row.entity.category}}</span></div>' }, { name: $translate.instant('JournalName'), width: 200,cellTemplate: '<div class="ui-grid-cell-contents"><span >{{row.entity.name}}</span></div>' }, { name: $translate.instant('DocumentNo'), width: 200,cellTemplate: '<div class="ui-grid-cell-contents"><span >{{row.entity.voucherNum}}</span></div>' }, { name: $translate.instant('Summary'), width: 200,cellTemplate: '<div class="ui-grid-cell-contents"><span>{{row.entity.description}}</span></div>' }, { name: $translate.instant('MainBodyDescription'), width: 200,cellTemplate: '<div class="ui-grid-cell-contents"><span>{{row.entity.segment1Name}}</span></div>' }, { name: $translate.instant('CostCenterDescription'), width: 200,cellTemplate: '<div class="ui-grid-cell-contents"><span>{{row.entity.segment2Name}}</span></div>' }, { name: $translate.instant('SubjectDescription'),width: 200,cellTemplate: '<div class="ui-grid-cell-contents"><span>{{row.entity.segment3Name}}</span></div>' }, { name: $translate.instant('AuxiliaryAccountDescription'), width: 200,cellTemplate: '<div class="ui-grid-cell-contents"><span>{{row.entity.segment4Name}}</span></div>' }, { name: $translate.instant('ProfitCenterDescription'), width: 200,cellTemplate: '<div class="ui-grid-cell-contents"><span>{{row.entity.segment5Name}}</span></div>' }, { name: $translate.instant('ProductManual'), width: 200,cellTemplate: '<div class="ui-grid-cell-contents"><span>{{row.entity.segment6Name}}</span></div>' }, { name: $translate.instant('ProjectInstruction'), width: 200, cellTemplate: '<div class="ui-grid-cell-contents"><span>{{row.entity.segment7Name}}</span></div>' }, { name: $translate.instant('InterCompanyDescription'),width: 200, cellTemplate: '<div class="ui-grid-cell-contents"><span>{{row.entity.segment8Name}}</span></div>' }, { name: $translate.instant('Alternate1Description'), width: 200,cellTemplate: '<div class="ui-grid-cell-contents"><span>{{row.entity.segment9Name}}</span></div>' }, { name: $translate.instant('Alternate2Description'), width: 200,cellTemplate: '<div class="ui-grid-cell-contents"><span>{{row.entity.segment10Name}}</span></div>' }, { name: $translate.instant('Currency'), width: 200,cellTemplate: '<div class="ui-grid-cell-contents"><span>{{row.entity.journalCurrencyCode}}</span></div>' }, { name: $translate.instant('LocalCurrency'), width: 200,cellTemplate: '<div class="ui-grid-cell-contents"><span>{{row.entity.sobCurrencyCode}}</span></div>' }, { name: $translate.instant('JournalDebitAmount'), width: 200,cellTemplate: '<div class="ui-grid-cell-contents"><span>{{row.entity.accountedDr}}</span></div>' }, { name: $translate.instant('JournalCreditAmount'),width: 200, cellTemplate: '<div class="ui-grid-cell-contents"><span>{{row.entity.accountedCr}}</span></div>' }, { name: $translate.instant('Amount'),width: 200, cellTemplate: '<div class="ui-grid-cell-contents"><span></span></div>' }, { name: $translate.instant('LocalCurrencyDebitAmount'), width: 200,cellTemplate: '<div class="ui-grid-cell-contents"><span>{{row.entity.enteredDr}}</span></div>' }, { name: $translate.instant('LocalCurrencyCreditAmount'),width: 200, cellTemplate: '<div class="ui-grid-cell-contents"><span>{{row.entity.enteredCr}}</span></div>' }, { name: $translate.instant('CashFlowEntry'), width: 200,cellTemplate: '<div class="ui-grid-cell-contents"><span>{{row.entity.cfItem}}</span></div>' }, { name: $translate.instant('City'), width: 200,cellTemplate: '<div class="ui-grid-cell-contents"><span>{{row.entity.attribute1}}</span></div>' }, { name: $translate.instant('TransactionDate'), width: 200,cellTemplate: '<div class="ui-grid-cell-contents"><span>{{row.entity.attribute2| date:"yyyy-MM-dd"}}</span></div>' }, { name: $translate.instant('BankAccountNumber'), width: 200,cellTemplate: '<div class="ui-grid-cell-contents"><span>{{row.entity.attribute3}}</span></div>' }, { name: $translate.instant('BankSerialNumber'),width: 200, cellTemplate: '<div class="ui-grid-cell-contents"><span>{{row.entity.attribute4}}</span></div>' }, { name: $translate.instant('SupplierCode'),width: 200, cellTemplate: '<div class="ui-grid-cell-contents"><span>{{row.entity.attribute5}}</span></div>' }, { name: $translate.instant('TransactionOrderNumber'),width: 200, cellTemplate: '<div class="ui-grid-cell-contents"><span>{{row.entity.attribute6}}</span></div>' }, { name: $translate.instant('SupplierName'),width: 200, cellTemplate: '<div class="ui-grid-cell-contents"><span>{{row.entity.attribute7}}</span></div>' }, { name: $translate.instant('ReceiveCode'),width: 200, cellTemplate: '<div class="ui-grid-cell-contents"><span>{{row.entity.attribute8}}</span></div>' }, { name: $translate.instant('PreparedBy'),width: 200, cellTemplate: '<div class="ui-grid-cell-contents"><span>{{row.entity.attribute9}}</span></div>' }, { name: $translate.instant('Reviewer'),width: 200, cellTemplate: '<div class="ui-grid-cell-contents"><span>{{row.entity.attribute10}}</span></div>' }, { name: $translate.instant('CostCenterDepartmentDescription1'),width: 200, cellTemplate: '<div class="ui-grid-cell-contents"><span>{{row.entity.attribute11}}</span></div>' }, { name: $translate.instant('CostCenterDepartmentDescription2'),width: 200, cellTemplate: '<div class="ui-grid-cell-contents"><span>{{row.entity.attribute12}}</span></div>' }, { name: $translate.instant('CostCenterDepartmentDescription3'),width: 200, cellTemplate: '<div class="ui-grid-cell-contents"><span>{{row.entity.attribute13}}</span></div>' }, { name: $translate.instant('CostCenterDepartmentDescription4'),width: 200, cellTemplate: '<div class="ui-grid-cell-contents"><span>{{row.entity.attribute14}}</span></div>' }, { name: $translate.instant('CostCenterDepartmentDescription5'),width: 200, cellTemplate: '<div class="ui-grid-cell-contents"><span>{{row.entity.attribute15}}</span></div>' }, { name: $translate.instant('CostCenterDepartmentDescription6'),width: 200, cellTemplate: '<div class="ui-grid-cell-contents"><span>{{row.entity.attribute16}}</span></div>' }, { name: $translate.instant('GroupCertificateNumber'),width: 200, cellTemplate: '<div class="ui-grid-cell-contents"><span></span></div>' } ] }; $scope.doDataFilter = doDataFilter; $scope.doDataFilterReset = doDataFilterReset; $scope.prepareSummary = prepareSummary; $scope.showPopover = showPopover; $scope.downloadJE = downloadJE; initPeriods(); initJournalEntryPagination(); //初始化查询条件-期间范围 $scope.queryParams.periodStart = vatSessionService.year * 100 + vatSessionService.month; $scope.queryParams.periodEnd = vatSessionService.year * 100 + vatSessionService.month; $scope.queryParams.orgId = vatSessionService.project.organizationID; if($rootScope.currentLanguageDesc = $rootScope.currentLanguage === 'en-us'){ $('.periodInput')[0].style.left = "280px"; }else{ $('.periodInput')[0].style.left = "150px"; } loadJournalEntryDataFromDB(1); })(); } ]);