diff --git a/client/client/src/credit-classification-create/credit-classification-create.html b/client/client/src/credit-classification-create/credit-classification-create.html index feba2f242e..2a83a27752 100644 --- a/client/client/src/credit-classification-create/credit-classification-create.html +++ b/client/client/src/credit-classification-create/credit-classification-create.html @@ -1,20 +1,28 @@ - - - -
+ New contract + + + + + ini-options="{dateFormat: 'd-m-Y'}"> diff --git a/client/client/src/credit-classification-create/credit-classification-create.js b/client/client/src/credit-classification-create/credit-classification-create.js index 9e5c5de1dc..11968797cd 100644 --- a/client/client/src/credit-classification-create/credit-classification-create.js +++ b/client/client/src/credit-classification-create/credit-classification-create.js @@ -1,15 +1,33 @@ import ngModule from '../module'; class Controller { - constructor($filter, $state) { + constructor($http, $filter, $state, $scope, $translate, vnApp) { + this.$http = $http; + this.$state = $state; + this.$scope = $scope; + this.$translate = $translate; + this.vnApp = vnApp; this.creditClassification = { started: $filter('date')(new Date(), 'yyyy-MM-dd HH:mm') }; - this.$state = $state; + } + + submit() { + if (this.$scope.form.$invalid) + return this.vnApp.showMessage(this.$translate.instant('Some fields are invalid')); + + let query = `/client/api/creditClassifications/createWithInsurance`; + let data = this.creditClassification; + data.clientFk = this.client.id; + + this.$http.post(query, data).then((res, err) => { + if (res.data) + this.$state.go('clientCard.creditClassification.list'); + }); } } -Controller.$inject = ['$filter', '$state']; +Controller.$inject = ['$http', '$filter', '$state', '$scope', '$translate', 'vnApp']; ngModule.component('vnClientCreditClassificationCreate', { template: require('./credit-classification-create.html'), diff --git a/client/client/src/credit-classification-list/credit-classification-list.html b/client/client/src/credit-classification-list/credit-classification-list.html index 363b1a7277..db7d90aaed 100644 --- a/client/client/src/credit-classification-list/credit-classification-list.html +++ b/client/client/src/credit-classification-list/credit-classification-list.html @@ -16,16 +16,24 @@
To {{classification.finished | date:'dd/MM/yyyy'}}
- - Credit {{insurance.credit}} - Grade - - - {{insurance.grade}} - Date {{insurance.created | date:'dd/MM/yyyy' }} - + + + Credit + {{::insurance.credit}} + + + Grade + - + {{::insurance.grade}} + + + Date + {{::insurance.created | date:'dd/MM/yyyy' }} + + - + @@ -40,4 +48,10 @@ icon="add" label="Add"> - \ No newline at end of file + + + \ No newline at end of file diff --git a/client/client/src/credit-classification-list/credit-classification-list.js b/client/client/src/credit-classification-list/credit-classification-list.js index 6b8d479e92..1aba85a348 100644 --- a/client/client/src/credit-classification-list/credit-classification-list.js +++ b/client/client/src/credit-classification-list/credit-classification-list.js @@ -14,6 +14,7 @@ class Controller { _getClassifications(clientId) { let filter = { + order: 'finished ASC, started DESC', include: [ { relation: 'creditInsurances', @@ -50,8 +51,16 @@ class Controller { } closeContract(classification) { + this.classificationId = classification.id; + this.$scope.closeContract.show(); + } + + returnDialog(response) { + if (response === 'CANCEL') + return; + let params = {finished: Date.now()}; - this.$http.patch(`/client/api/CreditClassifications/${classification.id}`, params).then(() => { + this.$http.patch(`/client/api/CreditClassifications/${this.classificationId}`, params).then(() => { this._getClassifications(this.client.id); }); } diff --git a/client/client/src/credit-classification-list/locale/es.yml b/client/client/src/credit-classification-list/locale/es.yml index aec6b185aa..731fe3c2a9 100644 --- a/client/client/src/credit-classification-list/locale/es.yml +++ b/client/client/src/credit-classification-list/locale/es.yml @@ -1,4 +1,6 @@ Contract credit insurance: Contratos de seguro de crédito New contract: Nuevo contrato Close contract: Cerrar contrato -Edit contract: Modificar contrato \ No newline at end of file +Edit contract: Modificar contrato +List classifications: Ver clasificaciones +Are you sure you want to close this contract?: ¿Seguro que quieres cerrar este contrato? \ No newline at end of file diff --git a/client/client/src/credit-insurance-create/credit-insurance-create.html b/client/client/src/credit-insurance-create/credit-insurance-create.html index 0712f486a4..48dedebbe1 100644 --- a/client/client/src/credit-insurance-create/credit-insurance-create.html +++ b/client/client/src/credit-insurance-create/credit-insurance-create.html @@ -8,7 +8,7 @@ - New credit + New classification + Requested credits - - - - + + + + - {{insurance.credit}} - {{insurance.grade}} - {{insurance.created | date: 'dd/MM/yyyy'}} + ng-repeat="insurance in index.model.instances track by insurance.id"> + {{::insurance.credit}} + {{::insurance.grade}} + {{::insurance.created | date: 'dd/MM/yyyy'}} + No results + fixed-bottom-right vn-tooltip="New classification" tooltip-position="left" ng-if="!$ctrl.isClosed"> \ No newline at end of file diff --git a/client/client/src/credit-insurance-list/credit-insurance-list.js b/client/client/src/credit-insurance-list/credit-insurance-list.js index 73403f3755..ac5c90d434 100644 --- a/client/client/src/credit-insurance-list/credit-insurance-list.js +++ b/client/client/src/credit-insurance-list/credit-insurance-list.js @@ -1,12 +1,31 @@ import ngModule from '../module'; +import FilterList from 'core/src/lib/filter-list'; -class Controller { - constructor($state) { - this.classificationId = $state.params.classificationId; +class Controller extends FilterList { + constructor($scope, $timeout, $state, $http) { + super($scope, $timeout, $state); + this.modelName = 'creditClassificationFk'; + this.modelId = $state.params.classificationId; + this.isClosed = true; + this.$http = $http; + } + + $onInit() { + let filter = { + fields: ['finished'], + where: {id: this.modelId} + }; + filter = encodeURIComponent(JSON.stringify(filter)); + + let query = `/client/api/CreditClassifications?filter=${filter}`; + this.$http.get(query).then(res => { + if (res.data) + this.isClosed = res.data[0].finished != null; + }); } } -Controller.$inject = ['$state']; +Controller.$inject = ['$scope', '$timeout', '$state', '$http']; ngModule.component('vnClientCreditInsuranceList', { template: require('./credit-insurance-list.html'), diff --git a/client/client/src/credit-insurance-list/locale/es.yml b/client/client/src/credit-insurance-list/locale/es.yml index b21b6b0301..637e27fd5e 100644 --- a/client/client/src/credit-insurance-list/locale/es.yml +++ b/client/client/src/credit-insurance-list/locale/es.yml @@ -1 +1,2 @@ -Requested credits: Créditos solicitados \ No newline at end of file +Requested credits: Créditos solicitados +Created: Creado \ No newline at end of file diff --git a/services/client/common/methods/creditClassification/createWithInsurance.js b/services/client/common/methods/creditClassification/createWithInsurance.js new file mode 100644 index 0000000000..d22dd91137 --- /dev/null +++ b/services/client/common/methods/creditClassification/createWithInsurance.js @@ -0,0 +1,40 @@ +module.exports = function(Self) { + Self.remoteMethod('createWithInsurance', { + description: 'Creates both classification and one insurance', + accepts: { + arg: 'data', + type: 'object', + http: {source: 'body'} + }, + returns: { + root: true, + type: 'boolean' + }, + http: { + verb: 'post', + path: '/createWithInsurance' + } + }); + + Self.createWithInsurance = async data => { + let transaction = await Self.beginTransaction({}); + + try { + let classificationSchema = {client: data.clientFk, started: data.started}; + let newClassification = await Self.create(classificationSchema, {transaction}); + let insuranceSchema = { + creditClassification: newClassification.id, + credit: data.credit, + grade: data.grade + }; + + Self.app.models.CreditInsurance.create(insuranceSchema, {transaction}); + + await transaction.commit(); + return newClassification; + } catch (e) { + transaction.rollback(); + throw e; + } + }; +}; diff --git a/services/client/common/methods/creditInsurance/filter.js b/services/client/common/methods/creditInsurance/filter.js index 121c3a407f..033afae7a9 100644 --- a/services/client/common/methods/creditInsurance/filter.js +++ b/services/client/common/methods/creditInsurance/filter.js @@ -4,7 +4,7 @@ module.exports = Self => { function filterParams(params) { return { where: { - creditClassification: params.creditClassification + creditClassification: params.creditClassificationFk }, skip: (params.page - 1) * params.size, limit: params.size, diff --git a/services/client/common/models/credit-classification.js b/services/client/common/models/credit-classification.js new file mode 100644 index 0000000000..bad926eb6f --- /dev/null +++ b/services/client/common/models/credit-classification.js @@ -0,0 +1,3 @@ +module.exports = Self => { + require('../methods/creditClassification/createWithInsurance')(Self); +};