diff --git a/@salix/app/src/components/app/app.js b/@salix/app/src/components/app/app.js index 6b3ea4a37..fe2fd93bb 100644 --- a/@salix/app/src/components/app/app.js +++ b/@salix/app/src/components/app/app.js @@ -10,7 +10,7 @@ module.component(NAME, COMPONENT); vnAppInterceptor.$inject = ['$q', '$rootScope', '$document']; function vnAppInterceptor($q, $rootScope, $document) { $rootScope.loading = false; - function showMessage (message) { + function showMessage(message) { let snackbar = $document.find('vn-snackbar').controller('vnSnackbar'); snackbar.show({message: message}); } @@ -23,11 +23,10 @@ function vnAppInterceptor($q, $rootScope, $document) { return $q.reject(rejection); }, response: function(response) { - switch(response.config.method) - { - case 'PUT': - case 'POST': - showMessage('Data saved!'); + switch (response.config.method) { + case 'PUT': + case 'POST': + showMessage('Data saved!'); } $rootScope.loading = false; return response; diff --git a/@salix/crud/src/client/basic-data/index.html b/@salix/crud/src/client/basic-data/index.html index 8a1048a24..50e1eb8d9 100644 --- a/@salix/crud/src/client/basic-data/index.html +++ b/@salix/crud/src/client/basic-data/index.html @@ -14,6 +14,7 @@ + diff --git a/@salix/crud/src/client/basic-data/index.js b/@salix/crud/src/client/basic-data/index.js index c9947c1e3..64f2a5cc7 100644 --- a/@salix/crud/src/client/basic-data/index.js +++ b/@salix/crud/src/client/basic-data/index.js @@ -8,42 +8,54 @@ export const COMPONENT = { bindings: { client: '<' }, - controller: function($http, copyObject, equalsObject, $transitions, $state) { + controller: function($http, copyObject, equalsObject, $transitions, $element) { - var self = this; - + var self = this; var deregister = $transitions.onStart({ }, callback); - this.$onChanges = function (changes) { - if(this.client){ - this.clientOld = copyObject(this.client); + this.$onChanges = function(changes) { + if (this.client) { + this.copyClient(); } - } + }; - this.$onDestroy = function(){ + this.$onDestroy = function() { deregister(); - } + }; $http.get('/client/api/SalesPeople').then( - json => this.sales = json.data + json => { + this.sales = json.data; + } ); function callback(transition) { - if(!equalsObject(self.client, self.clientOld)){ + if (!equalsObject(self.client, self.clientOld)) { self.state = transition.to().name; - var dialog = document.querySelector('dialog'); + var dialog = $element[0].querySelector('dialog'); dialog.showModal(); return false; } } this.submit = function() { - if(!equalsObject(this.client, this.clientOld)){ + if (!equalsObject(this.client, this.clientOld)) { this.client.modify = "BasicData"; - $http.put('/client/api/Clients', this.client); + $http.put('/client/api/Clients', this.client).then( + json => { + this.client = json.data; + this.copyClient(); + } + ); } }; + + this.copyClient = function() { + this.clientOld = {}; + copyObject(this.client, this.clientOld); + }; } }; -COMPONENT.controller.$inject = ['$http', 'copyObject', 'equalsObject', '$transitions', '$state']; + +COMPONENT.controller.$inject = ['$http', 'copyObject', 'equalsObject', '$transitions', '$element']; module.component(NAME, COMPONENT); diff --git a/@salix/crud/src/client/confirm/index.html b/@salix/crud/src/client/confirm/index.html index ed2f19b32..703a0b448 100644 --- a/@salix/crud/src/client/confirm/index.html +++ b/@salix/crud/src/client/confirm/index.html @@ -1,11 +1,11 @@

- Allow this site to collect usage data to improve your experience? + ¿Desea salir sin guardar?

- - + +
\ No newline at end of file diff --git a/@salix/crud/src/client/create/index.html b/@salix/crud/src/client/create/index.html index 650ce5df7..0371f986f 100644 --- a/@salix/crud/src/client/create/index.html +++ b/@salix/crud/src/client/create/index.html @@ -1,20 +1,21 @@
- - - Crear Cliente - - - - - - - - - - - - - - - -
\ No newline at end of file + + + Crear Cliente + + + + + + + + + + + + + + + + + diff --git a/@salix/crud/src/client/create/index.js b/@salix/crud/src/client/create/index.js index c4a4607bf..b7c8ce7f5 100644 --- a/@salix/crud/src/client/create/index.js +++ b/@salix/crud/src/client/create/index.js @@ -5,8 +5,8 @@ export const NAME = "vnClientCreate"; export const COMPONENT = { template: template, controllerAs: "create", - controller: function($http, $state){ - this.submit = function(){ + controller: function($http, $state) { + this.submit = function() { $http.post('/client/api/Clients', this.model).then( json => $state.go('clientCard.basicData',{id: json.data.id}) ); diff --git a/@salix/crud/src/client/fiscal-data/index.html b/@salix/crud/src/client/fiscal-data/index.html index 2b97bee5d..00d3eaa6a 100644 --- a/@salix/crud/src/client/fiscal-data/index.html +++ b/@salix/crud/src/client/fiscal-data/index.html @@ -32,17 +32,17 @@ Información de facturación + - - + @@ -61,4 +61,5 @@ - \ No newline at end of file + + \ No newline at end of file diff --git a/@salix/crud/src/client/fiscal-data/index.js b/@salix/crud/src/client/fiscal-data/index.js index bf8d88fc2..bccda409d 100644 --- a/@salix/crud/src/client/fiscal-data/index.js +++ b/@salix/crud/src/client/fiscal-data/index.js @@ -8,22 +8,60 @@ export const COMPONENT = { bindings: { client: '<' }, - controller: function($http) { + controller: function($http, copyObject, equalsObject, $transitions, $element) { + + var self = this; + var deregister = $transitions.onStart({ }, callback); + $http.get('/client/api/Countries').then( json => this.countries = json.data ); + $http.get('/client/api/Provinces').then( json => this.provinces = json.data ); + $http.get('/client/api/PaymentMethods').then( json => this.payments = json.data ); this.submit = function() { - $http.put('/client/api/Clients', this.client); + if (!equalsObject(this.client, this.clientOld)) { + this.client.modify = "FiscalData"; + $http.put('/client/api/Clients', this.client).then( + json => { + this.client = json.data; + this.copyClient(); + } + ); + } + }; + + this.$onChanges = function(changes) { + if (this.client) { + this.copyClient(); + } + }; + + this.$onDestroy = function() { + deregister(); + }; + + function callback(transition) { + if (!equalsObject(self.client, self.clientOld)) { + self.state = transition.to().name; + var dialog = $element[0].querySelector('dialog'); + dialog.showModal(); + return false; + } + } + + this.copyClient = function() { + this.clientOld = {}; + copyObject(this.client, this.clientOld); }; } }; -COMPONENT.controller.$inject = ['$http']; +COMPONENT.controller.$inject = ['$http', 'copyObject', 'equalsObject', '$transitions', '$element']; module.component(NAME, COMPONENT); diff --git a/@salix/crud/src/client/web-access/index.html b/@salix/crud/src/client/web-access/index.html index ba6696619..df54b3b84 100644 --- a/@salix/crud/src/client/web-access/index.html +++ b/@salix/crud/src/client/web-access/index.html @@ -7,4 +7,5 @@ - \ No newline at end of file + + \ No newline at end of file diff --git a/@salix/crud/src/client/web-access/index.js b/@salix/crud/src/client/web-access/index.js index 04bd3ac12..b123c888d 100644 --- a/@salix/crud/src/client/web-access/index.js +++ b/@salix/crud/src/client/web-access/index.js @@ -8,11 +8,47 @@ export const COMPONENT = { bindings: { client: '<' }, - controller: function($http) { + controller: function($http, copyObject, equalsObject, $transitions, $element) { + + var self = this; + var deregister = $transitions.onStart({ }, callback); + this.submit = function() { - $http.put('/client/api/Clients', this.client); + if (!equalsObject(this.client, this.clientOld)) { + this.client.modify = "WebAccess"; + $http.put('/client/api/Clients', this.client).then( + json => { + this.client = json.data; + this.copyClient(); + } + ); + } + }; + + this.$onChanges = function(changes) { + if (this.client) { + this.copyClient(); + } + }; + + this.$onDestroy = function() { + deregister(); + }; + + function callback(transition) { + if (!equalsObject(self.client, self.clientOld)) { + self.state = transition.to().name; + var dialog = $element[0].querySelector('dialog'); + dialog.showModal(); + return false; + } + } + + this.copyClient = function() { + this.clientOld = {}; + copyObject(this.client, this.clientOld); }; } }; -COMPONENT.controller.$inject = ['$http']; +COMPONENT.controller.$inject = ['$http', 'copyObject', 'equalsObject', '$transitions', '$element']; module.component(NAME, COMPONENT); diff --git a/db.json b/db.json index 267cc6a33..4e3bc286f 100644 --- a/db.json +++ b/db.json @@ -2,7 +2,7 @@ "ids": { "User": 2, "AccessToken": 2, - "Client": 15, + "Client": 16, "PaymentMethod": 4, "SalesPerson": 4, "Address": 58, @@ -18,8 +18,9 @@ "NUf7o684TmteojFX9KmPOpaDLthjP5Def4wuy83Yjv31i43HHiWgV3FyBp6pX8Ue": "{\"id\":\"NUf7o684TmteojFX9KmPOpaDLthjP5Def4wuy83Yjv31i43HHiWgV3FyBp6pX8Ue\",\"ttl\":1209600,\"created\":\"2016-11-21T11:06:11.113Z\",\"userId\":1}" }, "Client": { - "12": "{\"name\":\"Verdnatura\",\"id\":12,\"fi\":\"B97367486\",\"salesPerson\":\"2\",\"telefono\":\"963242100\",\"socialName\":\"Verdnatura Levante SL\",\"active\":true,\"user\":\"verdnatura\",\"fax\":\"963242100\",\"phone\":\"963242100\",\"email\":\"informatica@verdnatura.es\",\"surcharge\":true,\"cyc\":2345,\"credit\":1000,\"iban\":\"2352345234523452345\",\"street\":\"Avenida Espioca, 100\",\"city\":\"Silla\",\"postcode\":\"46013\",\"mobile\":\"654654654\",\"dueDay\":4,\"gestdoc\":23452343,\"province\":1,\"country\":\"1\",\"modify\":\"BasicData\",\"navigate\":true}", - "14": "{\"name\":\"Cliente 1\",\"id\":14,\"street\":\"Aaaaaaaaaa\",\"fi\":\"1234567890A\",\"socialName\":\"Cliente 1\",\"fax\":\"963242100\",\"dischargeDate\":\"01/01/2017\",\"telefono\":\"963242100\",\"salesPerson\":\"2\",\"email\":\"informatica@verdnatura.es\",\"city\":\"asdf\",\"postcode\":\"asdf\",\"phone\":\"asdf\",\"mobile\":\"asdf\",\"credit\":2345,\"cyc\":123,\"iban\":\"asdf\",\"dueDay\":345,\"gestdoc\":2435,\"surcharge\":true,\"navigate\":true}" + "12": "{\"name\":\"Verdnatura\",\"id\":12,\"fi\":\"B97367486\",\"salesPerson\":\"1\",\"telefono\":\"963242100\",\"socialName\":\"Verdnatura Levante SL\",\"active\":true,\"user\":\"verdnatura\",\"fax\":\"963242100\",\"phone\":\"963242101\",\"email\":\"informatica@verdnatura.es\",\"surcharge\":true,\"cyc\":2345,\"credit\":1000,\"iban\":\"456\",\"street\":\"Avenida Espioca, 100\",\"city\":\"Silla\",\"postcode\":\"46013\",\"mobile\":\"654654654\",\"dueDay\":10,\"gestdoc\":23452343,\"province\":\"2\",\"country\":\"1\",\"modify\":\"BasicData\",\"navigate\":true,\"payMethod\":\"1\"}", + "14": "{\"name\":\"Cliente 1\",\"id\":14,\"street\":\"Aaaaaaaaaa\",\"fi\":\"1234567890A\",\"socialName\":\"Cliente 1\",\"fax\":\"963242100\",\"dischargeDate\":\"01/01/2017\",\"telefono\":\"963242100\",\"salesPerson\":\"2\",\"email\":\"informatica@verdnatura.es\",\"city\":\"asdf\",\"postcode\":\"asdf\",\"phone\":\"asdf\",\"mobile\":\"asdf\",\"credit\":2345,\"cyc\":123,\"iban\":\"asdf\",\"dueDay\":345,\"gestdoc\":2435,\"surcharge\":true,\"navigate\":true}", + "15": "{\"name\":\"afsdf\",\"fi\":\"12341234rasf\",\"socialName\":\"asdfasd\",\"dueDay\":5,\"id\":15,\"payMethod\":\"2\",\"salesPerson\":\"1\",\"modify\":\"BasicData\",\"iban\":\"sdfgsdfgsdfg\"}" }, "PaymentMethod": { "1": "{\"name\":\"Tarjeta\",\"id\":1}", @@ -32,8 +33,8 @@ "3": "{\"name\":\"Carlos Zambrano\",\"id\":3}" }, "Address": { - "57": "{\"street\":\"Avda Espioca\",\"consignee\":\"Vicente\",\"city\":\"Silla\",\"postcode\":\"46900\",\"phone\":\"963242100\",\"province\":\"1\",\"agency\":\"3\",\"id\":57,\"enabled\":false,\"default\":true}", - "63": "{\"street\":\"Avd. Espioca nº 100\",\"consignee\":\"Verndatura Silla\",\"city\":\"Silla\",\"postcode\":\"46460\",\"phone\":\"66666666\",\"mobile\":\"989898888\",\"id\":63,\"province\":\"2\",\"agency\":\"3\",\"default\":false,\"enabled\":true}", + "57": "{\"street\":\"Avda Espioca\",\"consignee\":\"Vicente\",\"city\":\"Silla\",\"postcode\":\"46900\",\"phone\":\"963242100\",\"province\":\"1\",\"agency\":\"3\",\"id\":57,\"enabled\":true,\"default\":true}", + "63": "{\"street\":\"Avd. Espioca nº 100\",\"consignee\":\"Verndatura Silla\",\"city\":\"Silla\",\"postcode\":\"46460\",\"phone\":\"66666666\",\"mobile\":\"989898888\",\"id\":63,\"province\":\"2\",\"agency\":\"3\",\"default\":false,\"enabled\":false}", "64": "{\"street\":\"Aaa\",\"consignee\":\"aaa\",\"city\":\"121212\",\"postcode\":\"11111\",\"phone\":\"963242100\",\"mobile\":\"11231241423\",\"id\":64,\"default\":false,\"province\":\"1\",\"agency\":\"2\",\"enabled\":false}" }, "Country": { diff --git a/services/client/common/models/Client.js b/services/client/common/models/Client.js index d927d8e1b..707d45607 100644 --- a/services/client/common/models/Client.js +++ b/services/client/common/models/Client.js @@ -1,14 +1,36 @@ module.exports = function(Client) { + //validations + Client.validatesUniquenessOf('name', {message: 'el nombre debe ser unico'}); + Client.validatesUniquenessOf('fi', {message: 'el nif/cif debe ser unico'}); - // prueba uno - // Client.validatesUniquenessOf('name', {message: 'el nombre debe ser unico'}); - - // prueba dos - Client.validate('name',hasCC,{message: 'Introducir cuenta bancaria'}); - + Client.validate('payMethod',hasCC,{message: 'Introduzca el iban del cliente'}); function hasCC(err) { - if (this.payMethod == 2) err(); - + if (this.payMethod == 2 && !this.iban) err(); } + Client.validate('payMethod',hasSalesMan,{message: 'No se puede cambiar la forma de pago si no hay comercial asignado'}); + function hasSalesMan(err) { + if (this.payMethod && !this.salesPerson) err(); + } + + // Hooks + Client.observe('before save', function (ctx, next) { + if (ctx.instance) { + if (!ctx.instance.dueDay){ + ctx.instance.dueDay = 5; + } + next(); + } else { + Client.findById(ctx.where.id, + function(err, item) { + if (!err) { + if (item.payMethod != ctx.data.payMethod && item.dueDay == ctx.data.dueDay) { + ctx.data.dueDay = 5; + } + } + next(); + } + ); + } + }); }; \ No newline at end of file