Commit 565239b5f6fbec586494fd317eee1298b52f26e1

Authored by Luigi
1 parent 8fa463e44a
Exists in master

Agregar cisterna

src/js/controller.js
1   -angular.module('focaAbmVehiculo')
2   - .controller('focaAbmVehiculosController', [
3   - '$scope', 'focaAbmVehiculoService', '$location', 'focaModalService',
4   - '$uibModal', 'focaBotoneraLateralService', '$timeout', '$localStorage',
5   - function($scope, focaAbmVehiculoService, $location, focaModalService,
6   - $uibModal, focaBotoneraLateralService, $timeout, $localStorage) {
  1 + angular.module('focaAbmVehiculo')
  2 + .controller('focaAbmVehiculosController', [
  3 + '$scope', 'focaAbmVehiculoService', '$location', 'focaModalService',
  4 + '$uibModal', 'focaBotoneraLateralService', '$timeout', '$localStorage',
  5 + function($scope, focaAbmVehiculoService, $location, focaModalService,
  6 + $uibModal, focaBotoneraLateralService, $timeout, $localStorage) {
7 7  
8   - $scope.now = new Date();
9   - $scope.botonera = [{
10   - label: 'Transportista',
11   - image: 'cliente.png'
12   - }];
  8 + $scope.now = new Date();
  9 + $scope.botonera = [{
  10 + label: 'Transportista',
  11 + image: 'cliente.png'
  12 + }];
13 13  
14   - focaAbmVehiculoService.cleanCisternas();
  14 + focaAbmVehiculoService.cleanCisternas();
15 15  
16   - //SETEO BOTONERA LATERAL
17   - focaBotoneraLateralService.showSalir(false);
18   - focaBotoneraLateralService.showPausar(false);
19   - focaBotoneraLateralService.showCancelar(false);
20   - focaBotoneraLateralService.showGuardar(false);
21   - focaBotoneraLateralService.addCustomButton('Salir', salir);
  16 + //SETEO BOTONERA LATERAL
  17 + focaBotoneraLateralService.showSalir(false);
  18 + focaBotoneraLateralService.showPausar(false);
  19 + focaBotoneraLateralService.showCancelar(false);
  20 + focaBotoneraLateralService.showGuardar(false);
  21 + focaBotoneraLateralService.addCustomButton('Salir', salir);
22 22  
23   - if (focaAbmVehiculoService.transportistaSeleccionado.COD) {
24   - elegirTransportista(focaAbmVehiculoService.transportistaSeleccionado);
25   - }
26   - $scope.editar = function(id) {
27   - $location.path('/vehiculo/' + id + '/' + $scope.idTransportista);
28   - };
29   - $scope.solicitarConfirmacion = function(vehiculo) {
30   - focaModalService.confirm('¿Está seguro que desea borrar el vehiculo ' +
31   - vehiculo.id + ' ' + vehiculo.tractor + ' ?').then(
32   - function(data) {
33   - if (data) {
34   - focaAbmVehiculoService.deleteVehiculo(vehiculo.id);
35   - $scope.vehiculos.splice($scope.vehiculos.indexOf(vehiculo), 1);
  23 + if (focaAbmVehiculoService.transportistaSeleccionado.COD) {
  24 + elegirTransportista(focaAbmVehiculoService.transportistaSeleccionado);
  25 + }
  26 + $scope.editar = function(id) {
  27 + $location.path('/vehiculo/' + id + '/' + $scope.idTransportista);
  28 + };
  29 + $scope.solicitarConfirmacion = function(vehiculo) {
  30 + focaModalService.confirm('¿Está seguro que desea borrar el vehiculo ' +
  31 + vehiculo.id + ' ' + vehiculo.tractor + ' ?').then(
  32 + function(data) {
  33 + if (data) {
  34 + focaAbmVehiculoService.deleteVehiculo(vehiculo.id);
  35 + $scope.vehiculos.splice($scope.vehiculos.indexOf(vehiculo), 1);
  36 + }
  37 + }
  38 + );
  39 + };
  40 + $scope.seleccionarTransportista = function() {
  41 + var parametrosModal = {
  42 + titulo: 'Búsqueda de Transportista',
  43 + query: '/transportista',
  44 + columnas: [
  45 + {
  46 + nombre: 'Código',
  47 + propiedad: 'COD'
  48 + },
  49 + {
  50 + nombre: 'Nombre',
  51 + propiedad: 'NOM'
  52 + },
  53 + {
  54 + nombre: 'CUIT',
  55 + propiedad: 'CUIT'
36 56 }
  57 + ]
  58 + };
  59 + focaModalService.modal(parametrosModal).then(
  60 + function(transportista) {
  61 + elegirTransportista(transportista);
  62 + focaAbmVehiculoService.transportistaSeleccionado = transportista;
  63 + }, function() {
  64 +
37 65 }
38 66 );
39   - };
40   - $scope.seleccionarTransportista = function() {
41   - var parametrosModal = {
42   - titulo: 'Búsqueda de Transportista',
43   - query: '/transportista',
44   - columnas: [
45   - {
46   - nombre: 'Código',
47   - propiedad: 'COD'
48   - },
49   - {
50   - nombre: 'Nombre',
51   - propiedad: 'NOM'
52   - },
53   - {
54   - nombre: 'CUIT',
55   - propiedad: 'CUIT'
56   - }
57   - ]
58 67 };
59   - focaModalService.modal(parametrosModal).then(
60   - function(transportista) {
61   - elegirTransportista(transportista);
62   - focaAbmVehiculoService.transportistaSeleccionado = transportista;
63   - }, function() {
64   -
65   - }
66   - );
67   - };
68   - function elegirTransportista(transportista) {
69   - var codigo = ('00000' + transportista.COD).slice(-5);
70   - $scope.idTransportista = transportista.COD;
71   - $scope.filtros = transportista.NOM.trim();
72   - $timeout(function() {
73   - $scope.$broadcast('addCabecera', {
74   - label: 'Transportista:',
75   - valor: codigo + ' - ' + transportista.NOM
76   - });
77   - });
78   - buscar(transportista.COD);
79   - }
80   -
81   - function buscar(idTransportista) {
82   - focaAbmVehiculoService
83   - .getVehiculosPorTransportista(idTransportista)
84   - .then(function(datos) {
85   - $scope.vehiculos = datos.data;
86   - });
87   - }
88   - function salir() {
89   - focaAbmVehiculoService.transportistaSeleccionado = {};
90   - $location.path('/');
91   - }
92   - }
93   - ])
94   - .controller('focaAbmVehiculoController', [
95   - '$scope', 'focaAbmVehiculoService', '$routeParams', '$location', '$uibModal',
96   - 'focaModalService', '$timeout', 'focaBotoneraLateralService', '$localStorage', '$filter',
97   - function($scope, focaAbmVehiculoService, $routeParams, $location, $uibModal,
98   - focaModalService, $timeout, focaBotoneraLateralService, $localStorage, $filter) {
99   - $scope.nuevo = $routeParams.idVehiculo === '0' ? true : false;
100   - $scope.now = new Date();
101   - $scope.focused = 1;
102   - $scope.transportistaStamp = '';
103   - $scope.cisternas = [];
104   -
105   - $timeout(function() {
106   - focaBotoneraLateralService.showSalir(false);
107   - focaBotoneraLateralService.showPausar(true);
108   - focaBotoneraLateralService.showCancelar(false);
109   - focaBotoneraLateralService.showGuardar(true, $scope.guardar);
110   - focaBotoneraLateralService.addCustomButton('Salir', $scope.salir);
111   - });
112   -
113   - $timeout(function() {getLSVehiculo();});
114   -
115   - if ($scope.nuevo) {
116   - focaAbmVehiculoService
117   - .getTransportistaPorId($routeParams.idTransportista)
118   - .then(function(res) {
119   - var codigo = ('00000' + res.data.COD).slice(-5);
120   - $scope.vehiculo.idTransportista = res.data.COD;
121   - $scope.vehiculo.transportista = res.data;
  68 + function elegirTransportista(transportista) {
  69 + var codigo = ('00000' + transportista.COD).slice(-5);
  70 + $scope.idTransportista = transportista.COD;
  71 + $scope.filtros = transportista.NOM.trim();
  72 + $timeout(function() {
122 73 $scope.$broadcast('addCabecera', {
123 74 label: 'Transportista:',
124   - valor: codigo + ' - ' + res.data.NOM
  75 + valor: codigo + ' - ' + transportista.NOM
125 76 });
126 77 });
  78 + buscar(transportista.COD);
  79 + }
  80 +
  81 + function buscar(idTransportista) {
  82 + focaAbmVehiculoService
  83 + .getVehiculosPorTransportista(idTransportista)
  84 + .then(function(datos) {
  85 + $scope.vehiculos = datos.data;
  86 + });
  87 + }
  88 + function salir() {
  89 + focaAbmVehiculoService.transportistaSeleccionado = {};
  90 + $location.path('/');
  91 + }
127 92 }
128   - $scope.vehiculo = {};
129   - focaAbmVehiculoService.getVehiculo($routeParams.idVehiculo).then(function(res) {
130   - if (res.data) {
131   - $scope.transportistaStamp = ('00000' + res.data.transportista.COD).slice(-5);
132   - $scope.transportistaStamp += ' - ' + res.data.transportista.NOM;
  93 + ])
  94 + .controller('focaAbmVehiculoController', [
  95 + '$scope', 'focaAbmVehiculoService', '$routeParams', '$location', '$uibModal',
  96 + 'focaModalService', '$timeout', 'focaBotoneraLateralService', '$localStorage', '$filter',
  97 + function($scope, focaAbmVehiculoService, $routeParams, $location, $uibModal,
  98 + focaModalService, $timeout, focaBotoneraLateralService, $localStorage, $filter) {
  99 + $scope.nuevo = $routeParams.idVehiculo === '0' ? true : false;
  100 + $scope.nuevoCisterna = ($routeParams.idx > -1) ? false : true;
  101 + $scope.now = new Date();
  102 + $scope.focused = 1;
  103 + $scope.editando = false;
  104 + $scope.transportistaStamp = '';
  105 + $scope.cisternas = [];
133 106  
134   - $scope.vehiculo = res.data;
135   - $scope.$broadcast('addCabecera', {
136   - label: 'Transportista:',
137   - valor: $scope.transportistaStamp
138   - });
139   - $scope.$broadcast('addCabecera', {
140   - label: 'Unidad:',
141   - valor: res.data.codigo
142   - });
  107 + $scope.cisterna = {
  108 + codigo: '',
  109 + capacidad: '',
  110 + unidadMedida: {}
  111 + };
  112 +
  113 + $timeout(function() {
  114 + focaBotoneraLateralService.showSalir(false);
  115 + focaBotoneraLateralService.showPausar(true);
  116 + focaBotoneraLateralService.showCancelar(false);
  117 + focaBotoneraLateralService.showGuardar(true, $scope.guardar);
  118 + focaBotoneraLateralService.addCustomButton('Salir', $scope.salir);
  119 + });
  120 +
  121 + if ($scope.nuevo) {
143 122 focaAbmVehiculoService
144   - .getCisternas($routeParams.idVehiculo)
  123 + .getTransportistaPorId($routeParams.idTransportista)
145 124 .then(function(res) {
146   - $scope.cisternas = res;
147   - $scope.$apply();
  125 + var codigo = ('00000' + res.data.COD).slice(-5);
  126 + $scope.vehiculo.idTransportista = res.data.COD;
  127 + $scope.vehiculo.transportista = res.data;
  128 + $scope.$broadcast('addCabecera', {
  129 + label: 'Transportista:',
  130 + valor: codigo + ' - ' + res.data.NOM
  131 + });
148 132 });
149 133 }
150   - });
  134 + $scope.vehiculo = {};
151 135  
152   - $scope.next = function(key) {
153   - if (key === 13) $scope.focused++;
154   - };
  136 + focaAbmVehiculoService.getVehiculo($routeParams.idVehiculo).then(function(res) {
  137 +
  138 + if (res.data) {
  139 + var vehiculoSeteado = getLSVehiculo();
  140 + if (vehiculoSeteado === false) {
  141 + $scope.transportistaStamp = ('00000' + res.data.transportista.COD).slice(-5);
  142 + $scope.transportistaStamp += ' - ' + res.data.transportista.NOM;
155 143  
156   - $scope.salir = function() {
157   - if (!$scope.formVehiculo.$pristine && focaAbmVehiculoService.cisternasPristine) {
158   - focaModalService.confirm(
159   - '¿Está seguro de que desea salir? Se perderán todos los datos cargados.'
160   - ).then(function(data) {
161   - if (data) {
162   - $location.path('/vehiculo');
  144 + $scope.vehiculo = res.data;
  145 + $scope.$broadcast('addCabecera', {
  146 + label: 'Transportista:',
  147 + valor: $scope.transportistaStamp
  148 + });
  149 + $scope.$broadcast('addCabecera', {
  150 + label: 'Unidad:',
  151 + valor: res.data.codigo
  152 + });
163 153 }
  154 +
  155 + focaAbmVehiculoService
  156 + .getCisternas($routeParams.idVehiculo)
  157 + .then(function(res) {
  158 + $scope.cisternas = res;
  159 + $scope.$apply();
  160 + });
  161 + }
  162 + });
  163 +
  164 + $scope.next = function(key) {
  165 + if (key === 13) $scope.focused++;
  166 + };
  167 +
  168 + $scope.salir = function() {
  169 + if (!$scope.formVehiculo.$pristine && focaAbmVehiculoService.cisternasPristine) {
  170 + focaModalService.confirm(
  171 + '¿Está seguro de que desea salir? Se perderán todos los datos cargados.'
  172 + ).then(function(data) {
  173 + if (data) {
  174 + $location.path('/vehiculo');
  175 + }
  176 + });
  177 + } else {
  178 + $location.path('/vehiculo');
  179 + }
  180 + };
  181 +
  182 + $scope.editar = function(key, cisterna) {
  183 + if (key === 'nuevo') {
  184 + $scope.editando = true;
  185 + } else {
  186 + console.log('Editar: ');
  187 + $scope.cisterna = cisterna;
  188 + $scope.editando = true;
  189 + }
  190 + };
  191 +
  192 + $scope.seleccionarUnidadMedida = function() {
  193 + var modalInstance = $uibModal.open(
  194 + {
  195 + ariaLabelledBy: 'Busqueda de Unidades de medida',
  196 + templateUrl: 'modal-unidad-medida.html',
  197 + controller: 'focaModalUnidadMedidaCtrl',
  198 + size: 'lg'
  199 + }
  200 + );
  201 + modalInstance.result.then(function(unidaMedida) {
  202 + $scope.cisterna.idUnidadMedida = unidaMedida.ID;
  203 + $scope.cisterna.unidadMedida = unidaMedida;
164 204 });
165   - } else {
166   - $location.path('/vehiculo');
167   - }
168   - }
  205 + };
169 206  
170   - $scope.editar = function(key) {
171   - if (key) {
172   - $location.path('/vehiculo/' + $routeParams.idVehiculo +
173   - '/cisterna/' + key);
174   - } else {
175   - $location.path('/vehiculo/' + $routeParams.idVehiculo + '/cisterna/0/');
176   - }
177   - };
178   - $scope.guardar = function(key) {
  207 + $scope.guardar = function(key) {
  208 +
  209 + key = (typeof key === 'undefined') ? 13 : key;
179 210  
180   - key = (typeof key === 'undefined') ? 13 : key;
  211 + if (key === 13) {
181 212  
182   - if (key === 13) {
  213 + if ($scope.formVehiculo.$pristine && focaAbmVehiculoService.cisternasPristine) {
  214 + $scope.salir();
  215 + return;
  216 + }
183 217  
184   - if ($scope.formVehiculo.$pristine && focaAbmVehiculoService.cisternasPristine) {
185   - $scope.salir();
186   - return;
  218 + if (!$scope.vehiculo.codigo) {
  219 + focaModalService.alert('Ingrese unidad');
  220 + return;
  221 + } else if (!$scope.vehiculo.tractor) {
  222 + focaModalService.alert('Ingrese dominio tractor');
  223 + return;
  224 + } else if (!$scope.vehiculo.semi) {
  225 + focaModalService.alert('Ingrese dominio semi');
  226 + return;
  227 + } else if (!$scope.vehiculo.capacidad) {
  228 + focaModalService.alert('Ingrese capacidad total');
  229 + return;
  230 + }
  231 + //Valida si existe numero de unidad
  232 + if (!validaTotalCargas() && !$scope.nuevo) {
  233 + focaModalService.alert('La suma de las capacidades de las cisternas' +
  234 + ' debe ser igual a la capacidad total del vehículo');
  235 + return;
  236 + }
  237 + validaCodigoUnidad().then(function() {
  238 + delete $scope.vehiculo.transportista;
  239 + delete $scope.vehiculo.cisternas;
  240 + focaAbmVehiculoService.guardarVehiculo($scope.vehiculo)
  241 + .then(function(res) {
  242 + if ($scope.nuevo) {
  243 + $location.path('/vehiculo/' + res.data.id +
  244 + '/' + res.data.idTransportista);
  245 + } else {
  246 + guardarCisternas().then(function() {
  247 + $location.path('/vehiculo');
  248 + });
  249 + }
  250 + });
  251 + }, function() {
  252 + focaModalService.alert('Código de unidad existente');
  253 + });
187 254 }
  255 + };
188 256  
189   - if (!$scope.vehiculo.codigo) {
190   - focaModalService.alert('Ingrese unidad');
191   - return;
192   - } else if (!$scope.vehiculo.tractor) {
193   - focaModalService.alert('Ingrese dominio tractor');
194   - return;
195   - } else if (!$scope.vehiculo.semi) {
196   - focaModalService.alert('Ingrese dominio semi');
197   - return;
198   - } else if (!$scope.vehiculo.capacidad) {
199   - focaModalService.alert('Ingrese capacidad total');
200   - return;
201   - }
202   - //Valida si existe numero de unidad
203   - if (!validaTotalCargas() && !$scope.nuevo) {
204   - focaModalService.alert('La suma de las capacidades de las cisternas' +
205   - ' debe ser igual a la capacidad total del vehículo');
206   - return;
  257 + //Agregar propiedades de cisterna
  258 + $scope.$watch('vehiculo', function(newValue) {
  259 + focaBotoneraLateralService.setPausarData({
  260 + label:'vehiculo',
  261 + val: {
  262 + codigo: newValue.codigo,
  263 + tractor: newValue.tractor,
  264 + semi: newValue.semi,
  265 + capacidad: newValue.capacidad,
  266 + idVehiculo: newValue.idVehiculo,
  267 + idTransportista: newValue.idTransportista
  268 + }
  269 + });
  270 + }, true);
  271 +
  272 + function getLSVehiculo() {
  273 + var vehiculo = JSON.parse($localStorage.vehiculo|| null);
  274 + if (vehiculo) {
  275 + setearVehiculo(vehiculo);
  276 + delete $localStorage.vehiculo;
  277 + return true;
207 278 }
208   - validaCodigoUnidad().then(function() {
209   - delete $scope.vehiculo.transportista;
210   - delete $scope.vehiculo.cisternas;
211   - focaAbmVehiculoService.guardarVehiculo($scope.vehiculo)
  279 + return false;
  280 + }
  281 +
  282 + function setearVehiculo(vehiculo) {
  283 + $scope.vehiculo = vehiculo;
  284 + $scope.$broadcast('addCabecera', {
  285 + label: 'Vehiculo:',
  286 + valor: $filter('rellenarDigitos')(vehiculo.codigo) + ' - '
  287 + });
  288 + }
  289 +
  290 + $scope.solicitarConfirmacionCisterna = function(cisterna, idx) {
  291 + focaModalService.confirm('¿Está seguro que desea borrar la cisterna ' +
  292 + cisterna.id + ' ' + cisterna.codigo + ' ?').then(
  293 + function(data) {
  294 + if (data) {
  295 + focaAbmVehiculoService.deleteCisterna(idx);
  296 + focaAbmVehiculoService
  297 + .getCisternas($routeParams.idVehiculo)
  298 + .then(function(res) {
  299 + $scope.cisternas = res;
  300 + });
  301 + }
  302 + }
  303 + );
  304 + };
  305 +
  306 + function validaCodigoUnidad() {
  307 + return new Promise(function(resolve, reject) {
  308 + focaAbmVehiculoService
  309 + .getVehiculosPorTransportista(parseInt($routeParams.idTransportista))
212 310 .then(function(res) {
213   - if ($scope.nuevo) {
214   - $location.path('/vehiculo/' + res.data.id +
215   - '/' + res.data.idTransportista);
  311 + //Valida si existe numero de unidad
  312 + var existe = res.data.filter(function(vehiculo) {
  313 + return vehiculo.codigo === $scope.vehiculo.codigo &&
  314 + vehiculo.id !== $scope.vehiculo.id;
  315 + });
  316 +
  317 + if (existe.length) {
  318 + reject(existe);
216 319 } else {
217   - guardarCisternas().then(function() {
218   - $location.path('/vehiculo');
219   - });
  320 + resolve();
220 321 }
221 322 });
222   - }, function() {
223   - focaModalService.alert('Código de unidad existente');
224 323 });
225 324 }
226 325  
227   - };
  326 + function validaTotalCargas() {
  327 + var total = 0;
  328 + $scope.cisternas.forEach(function(cisterna) {
  329 + if (!cisterna.desactivado) {
  330 + total += parseInt(cisterna.capacidad);
  331 + }
  332 + });
  333 + return $scope.vehiculo.capacidad == total;
  334 + }
  335 + function guardarCisternas() {
  336 + var cisternas = $scope.cisternas.map(function(cisterna) {
  337 + return {
  338 + id: cisterna.id,
  339 + capacidad: parseFloat(cisterna.capacidad),
  340 + codigo: cisterna.codigo,
  341 + idUnidadMedida: cisterna.idUnidadMedida,
  342 + idVehiculo: $routeParams.idVehiculo,
  343 + desactivado: cisterna.desactivado
  344 + };
  345 + });
  346 +
  347 + return focaAbmVehiculoService.guardarCisternas(cisternas);
  348 + }
228 349  
229   - $scope.$watch('vehiculo', function(newValue) {
230   - focaBotoneraLateralService.setPausarData({
231   - label:'vehiculo',
232   - val: {
233   - codigo: newValue.codigo,
234   - tractor: newValue.tractor,
235   - semi: newValue.semi,
236   - capacidad: newValue.capacidad,
237   - idVehiculo: newValue.idVehiculo,
238   - idTransportista: newValue.idTransportista
  350 + $scope.guardarCisterna = function() {
  351 + if (!$scope.cisterna.codigo) {
  352 + focaModalService.alert('Ingrese codigo de cisterna');
  353 + return;
  354 + } else if (!$scope.cisterna.capacidad) {
  355 + focaModalService.alert('Ingrese capacidad');
  356 + return;
  357 + } else if (!$scope.cisterna.idUnidadMedida) {
  358 + focaModalService.alert('Ingrese unidad de medida');
  359 + return;
239 360 }
240   - });
241   - }, true);
  361 + $scope.editando = false;
  362 + validaCodigo()
  363 + .then(function() {
  364 + saveCisterna();
  365 + }, function(err) {
  366 + focaModalService.alert(err);
  367 + });
  368 + };
242 369  
243   - function getLSVehiculo() {
244   - var vehiculo = JSON.parse($localStorage.vehiculo|| null);
245   - if (vehiculo) {
246   - setearVehiculo(vehiculo);
247   - delete $localStorage.vehiculo;
  370 + function saveCisterna () {
  371 + $scope.cisterna.idVehiculo = parseInt($routeParams.idVehiculo);
  372 + delete $scope.cisterna.vehiculo;
  373 + var auxCisternas = $scope.cisternas;
  374 + auxCisternas.push($scope.cisterna);
  375 + guardarCisternas(auxCisternas)
  376 + .then(function(result) {
  377 + $scope.cisternas = result.data;
  378 + $scope.cisterna = {};
  379 + })
  380 + .catch(function (err) {
  381 + console.log('Err: ', err);
  382 + });
248 383 }
249   - }
250   -
251   - function setearVehiculo(vehiculo) {
252   - $scope.vehiculo = vehiculo;
253   - $scope.$broadcast('addCabecera', {
254   - label: 'Vehiculo:',
255   - valor: $filter('rellenarDigitos')(vehiculo.codigo) + ' - '
256   - });
257   - }
258 384  
259   - $scope.solicitarConfirmacionCisterna = function(cisterna, idx) {
260   - focaModalService.confirm('¿Está seguro que desea borrar la cisterna ' +
261   - cisterna.id + ' ' + cisterna.codigo + ' ?').then(
262   - function(data) {
263   - if (data) {
264   - focaAbmVehiculoService.deleteCisterna(idx);
265   - focaAbmVehiculoService
266   - .getCisternas($routeParams.idVehiculo)
267   - .then(function(res) {
268   - $scope.cisternas = res;
269   - });
270   - }
271   - }
272   - );
273   - };
274   -
275   - function validaCodigoUnidad() {
276   - return new Promise(function(resolve, reject) {
  385 + if ($routeParams.idx !== -1) {
  386 + $scope.cisterna = [$routeParams.idx];
277 387 focaAbmVehiculoService
278   - .getVehiculosPorTransportista(parseInt($routeParams.idTransportista))
  388 + .getCisternas($routeParams.idVehiculo)
279 389 .then(function(res) {
280   - //Valida si existe numero de unidad
281   - var existe = res.data.filter(function(vehiculo) {
282   - return vehiculo.codigo === $scope.vehiculo.codigo &&
283   - vehiculo.id !== $scope.vehiculo.id;
284   - });
285   -
286   - if (existe.length) {
287   - reject(existe);
288   - } else {
289   - resolve();
290   - }
  390 + $scope.cisterna = res[$routeParams.idx];
291 391 });
292   - });
293   - }
294   -
295   - function validaTotalCargas() {
296   - var total = 0;
297   - $scope.cisternas.forEach(function(cisterna) {
298   - if (!cisterna.desactivado) {
299   - total += parseInt(cisterna.capacidad);
300   - }
301   - });
302   - return $scope.vehiculo.capacidad == total;
303   - }
304   -
305   - function guardarCisternas() {
306   - var cisternas = $scope.cisternas.map(function(cisterna) {
307   - return {
308   - id: cisterna.id,
309   - capacidad: parseFloat(cisterna.capacidad),
310   - codigo: cisterna.codigo,
311   - idUnidadMedida: cisterna.idUnidadMedida,
312   - idVehiculo: $routeParams.idVehiculo,
313   - desactivado: cisterna.desactivado
314   - };
315   - });
  392 + }
316 393  
317   - return focaAbmVehiculoService.guardarCisternas(cisternas);
  394 + function validaCodigo() {
  395 + return new Promise(function(resolve, reject) {
  396 + focaAbmVehiculoService
  397 + .getCisternas($routeParams.idVehiculo)
  398 + .then(function(res) {
  399 + var cisternas = res;
  400 + var totalCargado = 0;
  401 + cisternas.forEach(function(cisterna, idx) {
  402 + //SI EL CODIGO YA EXISTE
  403 + if (cisterna.codigo === $scope.cisterna.codigo &&
  404 + idx != $routeParams.idx &&
  405 + !cisterna.desactivado) {
  406 + reject('Código de cisterna existente');
  407 + }
  408 + if (idx !== $routeParams.idx &&
  409 + !cisterna.desactivado) {
  410 + totalCargado += cisterna.capacidad;
  411 + }
  412 + });
  413 + resolve();
  414 + });
  415 + });
  416 + }
318 417 }
319   -
320   - }
321   - ]);
  418 + ]);
src/js/controllerCisterna.js
1 1 angular.module('focaAbmVehiculo')
2 2 .controller('focaAbmVehiculoCisternaController', [
3 3 '$scope', 'focaAbmVehiculoService', '$routeParams', '$location', '$uibModal',
4   - 'focaModalService', 'focaBotoneraLateralService', '$timeout', '$window',
  4 + 'focaModalService', 'focaBotoneraLateralService', '$timeout', '$window','$localStorage',
5 5 function($scope, focaAbmVehiculoService, $routeParams, $location, $uibModal,
6   - focaModalService, focaBotoneraLateralService, $timeout, $window) {
  6 + focaModalService, focaBotoneraLateralService, $timeout, $window, $localStorage) {
7 7 $scope.nuevo = ($routeParams.idx > -1) ? false : true;
8 8 $scope.editar = false;
9 9 $scope.now = new Date();
... ... @@ -29,6 +29,8 @@ angular.module('focaAbmVehiculo')
29 29 focaBotoneraLateralService.addCustomButton('Salir', $scope.salir);
30 30 });
31 31  
  32 + $timeout(function (){getLSCisterna();});
  33 +
32 34 if ($routeParams.idx !== -1) {
33 35 $scope.cisterna = [$routeParams.idx];
34 36 focaAbmVehiculoService
... ... @@ -122,6 +124,29 @@ angular.module('focaAbmVehiculo')
122 124 });
123 125 };
124 126  
  127 + $scope.$watch('cisterna', function(newValue) {
  128 + focaBotoneraLateralService.setPausarData({
  129 + label:'cisterna',
  130 + val: newValue
  131 + });
  132 + }, true);
  133 +
  134 + function getLSCisterna() {
  135 + var cisterna = JSON.parse($localStorage.cisterna|| null);
  136 + if (cisterna) {
  137 + setearVehiculo(cisterna);
  138 + delete $localStorage.cisterna;
  139 + }
  140 + }
  141 +
  142 + function setearVehiculo(cisterna) {
  143 + $scope.cisterna = cisterna;
  144 + $scope.$broadcast('addCabecera', {
  145 + label: 'Codigo de Cisterna:',
  146 + valor: cisterna.codigo
  147 + });
  148 + }
  149 +
125 150 function validaCodigo() {
126 151 return new Promise(function(resolve, reject) {
127 152 focaAbmVehiculoService
src/views/foca-abm-vehiculos-item.html
... ... @@ -77,28 +77,84 @@
77 77 <table class="table table-default table-hover table-sm table-abm table-striped mb-0">
78 78 <thead>
79 79 <tr>
80   - <th class="px-5">Código</th>
81   - <th class="text-right px-5">Capacidad</th>
82   - <th class="text-center px-4">
  80 + <th class="text-center px-4">Código</th>
  81 + <th class="text-center">Capacidad</th>
  82 + <th class="text-center">Unidad de Medida</th>
  83 + <th class="text-center">
83 84 <button
84 85 class="btn btn-outline-debo boton-accion"
85 86 title="Agregar"
86   - ng-click="editar(-1)">
  87 + ng-click="editar('nuevo')">
87 88 <i class="fa fa-plus"></i>
88 89 </button>
89 90 </th>
90 91 </tr>
91 92 </thead>
92 93 <tbody>
  94 + <tr ng-show="editando">
  95 + <td align="center">
  96 + <input
  97 + class="form-control text-uppercase foca-input ng-not-empty ng-valid ng-valid-required ng-touched"
  98 + ng-model="cisterna.codigo"
  99 + ng-keypress="next($event.keyCode)"
  100 + foca-focus="focused == 1"
  101 + ng-focus="focused = 1"
  102 + ng-disabled="!nuevoCisterna"
  103 + teclado-virtual
  104 + >
  105 + </td>
  106 + <td align="center">
  107 + <input
  108 + class="form-control text-uppercase foca-input ng-not-empty ng-valid ng-valid-required ng-touched"
  109 + teclado-virtual
  110 + foca-tipo-input
  111 + ng-model="cisterna.capacidad"
  112 + ng-required="true"
  113 + ng-keypress="next($event.keyCode)"
  114 + foca-focus="focused == 2"
  115 + ng-focus="focused = 2"
  116 + >
  117 + </td>
  118 + <td align="center">
  119 + <div class="input-group">
  120 + <input
  121 + ng-model="cisterna.unidadMedida.NOM"
  122 + class="form-control"
  123 + readonly
  124 + />
  125 + <div class="input-group-append">
  126 + <button
  127 + ladda="searchLoading"
  128 + class="btn btn-outline-secondary form-control"
  129 + type="button"
  130 + ng-click="seleccionarUnidadMedida()"
  131 + foca-focus="focused == 3"
  132 + >
  133 + <i class="fa fa-search" aria-hidden="true"></i>
  134 + </button>
  135 + </div>
  136 + </div>
  137 + </td>
  138 + <td align="center">
  139 + <button
  140 + class="btn btn-outline-dark boton-accion"
  141 + ng-click="guardarCisterna()"
  142 + >
  143 + <i class="fa fa-save"></i>
  144 + </button>
  145 + </td>
  146 + </tr>
  147 +
93 148 <tr ng-repeat="(key, cisterna) in cisternas | filter:filtros"
94 149 ng-show="!cisterna.desactivado">
95   - <td ng-bind="cisterna.codigo" class="px-5"></td>
96   - <td ng-bind="cisterna.capacidad + ' ' + cisterna.unidadMedida.NOM" class="text-right px-5"></td>
97   - <td class="text-center px-4">
  150 + <td ng-bind="cisterna.codigo" class="text-center"></td>
  151 + <td ng-bind="cisterna.capacidad" class="text-center"></td>
  152 + <td ng-bind="cisterna.unidadMedida.NOM" class="text-center"></td>
  153 + <td class="text-center">
98 154 <button
99 155 class="btn btn-outline-dark boton-accion"
100 156 title="Editar"
101   - ng-click="editar(key)"
  157 + ng-click="editar('',cisterna)"
102 158 >
103 159 <i class="fa fa-pencil"></i>
104 160 </button>