From 332c05317359c0f7ddde50daef722328ff500cd1 Mon Sep 17 00:00:00 2001 From: Pramod Nuthakki Date: Fri, 16 Jan 2015 10:23:16 +0530 Subject: [PATCH] MIFOSX-1742 : Ui changes for collection sheet --- app/global-translations/locale-en.json | 2 + app/index.html | 2 + .../collection/CollectionSheetController.js | 21 ++ .../IndividualCollectionSheetController.js | 179 ++++++++++++++ app/scripts/mifosXComponents.js | 1 + app/scripts/routes.js | 3 + .../services/ResourceFactoryProvider.js | 2 + app/views/collection/collectionsheet.html | 37 +++ .../collection/individualcollectionsheet.html | 234 ++++++++++++++++++ 9 files changed, 481 insertions(+) mode change 100644 => 100755 app/index.html mode change 100644 => 100755 app/scripts/controllers/collection/CollectionSheetController.js create mode 100755 app/scripts/controllers/collection/IndividualCollectionSheetController.js mode change 100644 => 100755 app/views/collection/collectionsheet.html create mode 100755 app/views/collection/individualcollectionsheet.html diff --git a/app/global-translations/locale-en.json b/app/global-translations/locale-en.json index efc2088f..3c4d3d1d 100755 --- a/app/global-translations/locale-en.json +++ b/app/global-translations/locale-en.json @@ -3311,5 +3311,7 @@ "label.input.teller.cashiertxn.txnDate":"Date", "label.input.teller.cashiertxn.txnAmount": "Amount", "label.input.teller.cashiertxn.txnNote": "Notes/Comments", + "label.button.addpaymentdetail": "Add Payment Detail", + "label.anchor.individualcollectionsheet": "Individual Collection Sheet", "----------------------": "------------" } diff --git a/app/index.html b/app/index.html old mode 100644 new mode 100755 index 0577b55e..b6bf1fa5 --- a/app/index.html +++ b/app/index.html @@ -144,6 +144,8 @@
  •   {{ 'label.anchor.collectionsheet' | translate}}
  • +
  •   {{ 'label.anchor.individualcollectionsheet' | translate}}
  • +
  •    {{ 'label.anchor.frequentpostings' | translate}}
  •     {{ 'label.anchor.addjournalentries' | translate}}
  • diff --git a/app/scripts/controllers/collection/CollectionSheetController.js b/app/scripts/controllers/collection/CollectionSheetController.js old mode 100644 new mode 100755 index 8a4b0a10..785f00e3 --- a/app/scripts/controllers/collection/CollectionSheetController.js +++ b/app/scripts/controllers/collection/CollectionSheetController.js @@ -116,11 +116,23 @@ } }; + scope.showPaymentDetailsFn = function () { + var paymentDetail = {}; + scope.showPaymentDetails = true; + paymentDetail.paymentTypeId = ""; + paymentDetail.accountNumber = ""; + paymentDetail.checkNumber = ""; + paymentDetail.routingCode = ""; + paymentDetail.receiptNumber = ""; + paymentDetail.bankNumber = ""; + }; + scope.previewCollectionSheet = function () { scope.formData = {}; scope.formData.dateFormat = scope.df; scope.formData.locale = scope.optlang.code; scope.formData.calendarId = scope.calendarId; + scope.showPaymentDetails = false; if (scope.date.transactionDate) { scope.formData.transactionDate = dateFilter(scope.date.transactionDate, scope.df); } @@ -399,6 +411,15 @@ } scope.formData.actualDisbursementDate = this.formData.transactionDate; scope.formData.clientsAttendance = scope.clientsAttendance; + + if(scope.showPaymentDetails && scope.paymentDetail.paymentTypeId != ""){ + scope.formData.paymentTypeId = scope.paymentDetail.paymentTypeId; + scope.formData.accountNumber = scope.paymentDetail.accountNumber; + scope.formData.checkNumber = scope.paymentDetail.checkNumber; + scope.formData.routingCode =scope.paymentDetail.routingCode; + scope.formData.receiptNumber = scope.paymentDetail.receiptNumber; + scope.formData.bankNumber = scope.paymentDetail.bankNumber; + } scope.formData.bulkDisbursementTransactions = []; //construct loan repayment and savings due transactions scope.constructBulkLoanAndSavingsRepaymentTransactions(); diff --git a/app/scripts/controllers/collection/IndividualCollectionSheetController.js b/app/scripts/controllers/collection/IndividualCollectionSheetController.js new file mode 100755 index 00000000..901f3fa2 --- /dev/null +++ b/app/scripts/controllers/collection/IndividualCollectionSheetController.js @@ -0,0 +1,179 @@ +'use strict'; +/*global _ */ +/*global mifosX */ + +(function (module) { + mifosX.controllers = _.extend(module, { + IndividualCollectionSheetController: function (scope, resourceFactory, location, routeParams, dateFilter, localStorageService, route, $timeout) { + scope.offices = []; + scope.centers = []; + scope.groups = []; + scope.clientsAttendance = []; + scope.calendarId = ''; + scope.formData = {}; + scope.centerId = ''; + scope.groupId = ''; + scope.date = {}; + scope.newGroupTotal = {}; + scope.savingsGroupsTotal = []; + scope.date.transactionDate = new Date(); + var centerOrGroupResource = ''; + resourceFactory.officeResource.getAllOffices(function (data) { + scope.offices = data; + }); + + + scope.officeSelected = function (officeId) { + scope.officeId = officeId; + if (officeId) { + resourceFactory.employeeResource.getAllEmployees({officeId: officeId}, function (data) { + scope.loanOfficers = data; + }); + } + }; + + scope.showLoanPaymentDetails = function (parentindex, index) { + var client = scope.collectionsheetdata.clients[parentindex]; + var loandetail = client.loans[index]; + loandetail.showPaymentDetails = true; + loandetail.paymentTypeId = ""; + loandetail.accountNumber = ""; + loandetail.checkNumber = ""; + loandetail.routingCode = ""; + loandetail.receiptNumber = ""; + loandetail.bankNumber = ""; + }; + + scope.showSavingsPaymentDetails = function (parentindex, index) { + var client = scope.collectionsheetdata.clients[parentindex]; + var savings = client.savings[index]; + savings.showPaymentDetails = true; + savings.paymentTypeId = ""; + savings.accountNumber = ""; + savings.checkNumber = ""; + savings.routingCode = ""; + savings.receiptNumber = ""; + savings.bankNumber = ""; + }; + + scope.previewCollectionSheet = function () { + scope.formData = {}; + scope.formData.dateFormat = scope.df; + scope.formData.locale = scope.optlang.code; + if (scope.date.transactionDate) { + scope.formData.transactionDate = dateFilter(scope.date.transactionDate, scope.df); + } + scope.formData.staffId = scope.loanOfficerId; + scope.formData.officeId = scope.officeId; + + resourceFactory.collectionSheetResource.save({command: 'generateCollectionSheet'}, scope.formData, function (data) { + if (data.clients.length > 0) { + scope.collectionsheetdata = data; + scope.clients = data.clients; + } else { + scope.noData = true; + $timeout(function () { + scope.noData = false; + }, 3000); + } + + }); + + }; + + if (localStorageService.getFromLocalStorage('Success') === 'true') { + scope.savesuccess = true; + localStorageService.removeFromLocalStorage('Success'); + scope.val = true; + $timeout(function () { + scope.val = false; + }, 3000); + } + + scope.getLoanTotalDueAmount = function (loan) { + var principalInterestDue = loan.totalDue; + var chargesDue = loan.chargesDue; + if (isNaN(principalInterestDue)) { + principalInterestDue = parseInt(0); + } + if (isNaN(chargesDue)) { + chargesDue = parseInt(0); + } + return Math.ceil((Number(principalInterestDue) + Number(chargesDue)) * 100) / 100; + }; + + scope.constructBulkLoanAndSavingsRepaymentTransactions = function () { + scope.bulkRepaymentTransactions = []; + scope.bulkSavingsDueTransactions = []; + _.each(scope.clients, function (client) { + _.each(client.savings, function (saving) { + var dueAmount = saving.dueAmount; + if (isNaN(dueAmount)) { + dueAmount = parseInt(0); + } + var savingsTransaction = { + savingsId: saving.savingsId, + transactionAmount: dueAmount + }; + if(saving.showPaymentDetails && saving.paymentTypeId != ""){ + savingsTransaction.paymentTypeId = saving.paymentTypeId; + savingsTransaction.accountNumber = saving.accountNumber; + savingsTransaction.checkNumber = saving.checkNumber; + savingsTransaction.routingCode =saving.routingCode; + savingsTransaction.receiptNumber = saving.receiptNumber; + savingsTransaction.bankNumber = saving.bankNumber; + } + scope.bulkSavingsDueTransactions.push(savingsTransaction); + }); + + _.each(client.loans, function (loan) { + var totalDue = scope.getLoanTotalDueAmount(loan); + var loanTransaction = { + loanId: loan.loanId, + transactionAmount: totalDue + }; + if(loan.showPaymentDetails && loan.paymentTypeId != ""){ + loanTransaction.paymentTypeId = loan.paymentTypeId; + loanTransaction.accountNumber = loan.accountNumber; + loanTransaction.checkNumber = loan.checkNumber; + loanTransaction.routingCode =loan.routingCode; + loanTransaction.receiptNumber = loan.receiptNumber; + loanTransaction.bankNumber = loan.bankNumber; + } + scope.bulkRepaymentTransactions.push(loanTransaction); + }); + } + ); + }; + + scope.submit = function () { + var data = {}; + data.dateFormat = scope.df; + data.locale = scope.optlang.code; + + if (scope.date.transactionDate) { + data.transactionDate = dateFilter(scope.date.transactionDate, scope.df); + } + data.actualDisbursementDate = this.formData.transactionDate; + data.bulkDisbursementTransactions = []; + //construct loan repayment and savings due transactions + scope.constructBulkLoanAndSavingsRepaymentTransactions(); + data.bulkRepaymentTransactions = scope.bulkRepaymentTransactions; + data.bulkSavingsDueTransactions = scope.bulkSavingsDueTransactions; + resourceFactory.collectionSheetResource.save({command: 'saveCollectionSheet'}, data, function (data) { + localStorageService.addToLocalStorage('Success', true); + route.reload(); + }); + }; + + } + }) + ; + mifosX.ng.application.controller('IndividualCollectionSheetController', ['$scope', 'ResourceFactory', '$location', '$routeParams', 'dateFilter', 'localStorageService', + '$route', '$timeout', mifosX.controllers.IndividualCollectionSheetController]).run(function ($log) { + $log.info("IndividualCollectionSheetController initialized"); + }); +} +(mifosX.controllers || {}) + ) +; diff --git a/app/scripts/mifosXComponents.js b/app/scripts/mifosXComponents.js index 7511f4ae..9614f0bf 100755 --- a/app/scripts/mifosXComponents.js +++ b/app/scripts/mifosXComponents.js @@ -21,6 +21,7 @@ define(['Q', 'underscore', 'mifosX'], function (Q) { 'main/NavigationController', 'collection/ProductiveCollectionSheetController', 'collection/CollectionSheetController', + 'collection/IndividualCollectionSheetController', 'loanAccount/ViewLoanDetailsController', 'loanAccount/NewLoanAccAppController', 'loanAccount/LoanAccountActionsController', diff --git a/app/scripts/routes.js b/app/scripts/routes.js index 29de65d1..c6961ac0 100755 --- a/app/scripts/routes.js +++ b/app/scripts/routes.js @@ -598,6 +598,9 @@ .when('/entercollectionsheet', { templateUrl: 'views/collection/collectionsheet.html' }) + .when('/individualcollectionsheet', { + templateUrl: 'views/collection/individualcollectionsheet.html' + }) .when('/assignstaff/:id/:entityType', { templateUrl: 'views/groups/assignstaff.html' }) diff --git a/app/scripts/services/ResourceFactoryProvider.js b/app/scripts/services/ResourceFactoryProvider.js index 00d262a4..42aaba9f 100755 --- a/app/scripts/services/ResourceFactoryProvider.js +++ b/app/scripts/services/ResourceFactoryProvider.js @@ -447,6 +447,8 @@ }), cashierTxnTemplateResource: defineResource(apiVer + "/tellers/:tellerId/cashiers/:cashierId/transactions/template", {tellerId: "@tellerId", cashierId: "@cashierId"}, { get: {method: 'GET', params: {tellerId: "@tellerId", cashierId: "@cashierId"}, isArray: false} + }), + collectionSheetResource: defineResource(apiVer + "/collectionsheet", {}, { }) }; }]; diff --git a/app/views/collection/collectionsheet.html b/app/views/collection/collectionsheet.html old mode 100644 new mode 100755 index 888706bc..747fa864 --- a/app/views/collection/collectionsheet.html +++ b/app/views/collection/collectionsheet.html @@ -266,11 +266,48 @@ {{loanDueTotalCollection.currencySymbol}} +
    + + + + + + + + + + + + + + + + + + + + + +
    {{ 'label.input.paymenttype' | translate}}{{ 'label.input.accnum' | translate}}{{ 'label.input.checknumber' | translate}}{{ 'label.input.routingcode' | translate}}{{ 'label.input.receiptnumber' | translate}}{{ 'label.input.banknumber' | translate}}
    +
    + diff --git a/app/views/collection/individualcollectionsheet.html b/app/views/collection/individualcollectionsheet.html new file mode 100755 index 00000000..8c364928 --- /dev/null +++ b/app/views/collection/individualcollectionsheet.html @@ -0,0 +1,234 @@ +
    + +
    + +

    {{'label.norepaymentsanddisbursalareavailable' + | + translate}}

    + +

    {{'label.savecollectionsheetsuccessfully' | + translate}}

    +
    +
    +
    + + +
    + +
    +
    + +
    +
    + +
    + + +
    + +
    +
    + +
    + + +
    + +
    +
    + +
    +
    + +
    +
    +
    +
    +
    +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    {{'label.heading.duecollections' | + translate}} +
    {{'label.heading.loanaccountnum' | translate}}{{'label.heading.productname' | translate}}{{'label.heading.clientname' | translate}}{{'label.heading.totaldue' | translate}}{{'label.heading.charges' | translate}}{{'label.heading.actions' | translate}}
    {{loan.accountId}}{{loan.productShortName}}({{loan.productId}}){{client.clientName}}({{client.clientId}}) + + + + + +
    + + + + + + + + + + + + + + + + + + + + + +
    {{ 'label.input.paymenttype' | translate}}{{ 'label.input.accnum' | translate}}{{ 'label.input.checknumber' | translate}}{{ 'label.input.routingcode' | translate}}{{ 'label.input.receiptnumber' | translate}}{{ 'label.input.banknumber' | translate}}
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    {{'label.heading.due.savings.collections' | + translate}} +
    {{'label.heading.savingsaccountno' | translate}}{{'label.heading.productname' | translate}}{{'label.heading.clientname' | translate}}{{'label.heading.totaldue' | translate}}{{'label.heading.actions' | translate}}
    {{saving.accountId}}{{saving.productName}}({{saving.productId}}){{client.clientName}}({{client.clientId}}) + + + +
    + + + + + + + + + + + + + + + + + + + + + +
    {{ 'label.input.paymenttype' | translate}}{{ 'label.input.accnum' | translate}}{{ 'label.input.checknumber' | translate}}{{ 'label.input.routingcode' | translate}}{{ 'label.input.receiptnumber' | translate}}{{ 'label.input.banknumber' | translate}}
    +
    + +
    +
    +
    +
    +
    + +
    +
    + + +
    +
    +
    +
    +
    \ No newline at end of file