Commit 0b4f70caac093fbd688dfb7f99da4bff7c23295b

Authored by Eric Fernandez
Exists in master and in 2 other branches develop, lab

Merge branch 'develop' into 'master'

Develop

See merge request !35
src/js/controller.js
1 angular.module('focaCrearHojaRuta') .controller('hojaRutaCtrl', 1 angular.module('focaCrearHojaRuta') .controller('hojaRutaCtrl',
2 [ 2 [
3 '$scope', 3 '$scope',
4 '$uibModal', 4 '$uibModal',
5 '$location', 5 '$location',
6 '$filter', 6 '$filter',
7 '$timeout', 7 '$timeout',
8 'focaCrearHojaRutaService', 8 'focaCrearHojaRutaService',
9 'focaModalService', 9 'focaModalService',
10 'focaBotoneraLateralService', 10 'focaBotoneraLateralService',
11 'focaLoginService', 11 'focaLoginService',
12 '$localStorage', 12 '$localStorage',
13 function($scope, $uibModal, $location, $filter, $timeout, 13 function($scope, $uibModal, $location, $filter, $timeout,
14 focaCrearHojaRutaService, focaModalService, focaBotoneraLateralService, 14 focaCrearHojaRutaService, focaModalService, focaBotoneraLateralService,
15 focaLoginSrv, $localStorage) 15 focaLoginSrv, $localStorage)
16 { 16 {
17 config(); 17 config();
18 18
19 function config() { 19 function config() {
20 $scope.botonera = focaCrearHojaRutaService.getBotonera(); 20 $scope.botonera = focaCrearHojaRutaService.getBotonera();
21 $scope.datepickerAbierto = false; 21 $scope.datepickerAbierto = false;
22 $scope.show = false; 22 $scope.show = false;
23 $scope.cargando = true; 23 $scope.cargando = true;
24 $scope.now = new Date(); 24 $scope.now = new Date();
25 $scope.puntoVenta = $filter('rellenarDigitos')(0, 4); 25 $scope.puntoVenta = $filter('rellenarDigitos')(0, 4);
26 $scope.comprobante = $filter('rellenarDigitos')(0, 8); 26 $scope.comprobante = $filter('rellenarDigitos')(0, 8);
27 27
28 //SETEO BOTONERA LATERAL 28 //SETEO BOTONERA LATERAL
29 $timeout(function() { 29 $timeout(function() {
30 focaBotoneraLateralService.showSalir(false); 30 focaBotoneraLateralService.showSalir(false);
31 focaBotoneraLateralService.showPausar(true); 31 focaBotoneraLateralService.showPausar(true);
32 focaBotoneraLateralService.showGuardar(true, $scope.crearHojaRuta); 32 focaBotoneraLateralService.showGuardar(true, $scope.crearHojaRuta);
33 focaBotoneraLateralService.addCustomButton('Salir', salir); 33 focaBotoneraLateralService.addCustomButton('Salir', salir);
34 }); 34 });
35 35
36 init(); 36 init();
37 $timeout(function() {getLSHojaRuta();}); 37 $timeout(function() {getLSHojaRuta();});
38 } 38 }
39 39
40 function init() { 40 function init() {
41 $scope.$broadcast('cleanCabecera'); 41 $scope.$broadcast('cleanCabecera');
42 42
43 $scope.hojaRuta = { 43 $scope.hojaRuta = {
44 fecha: new Date(), 44 fecha: new Date(),
45 litros: 0, 45 litros: 0,
46 chofer: {}, 46 chofer: {},
47 vehiculo: { 47 vehiculo: {
48 capacidad: 0 48 capacidad: 0
49 }, 49 },
50 transportista: {}, 50 transportista: {},
51 tarifario: { 51 tarifario: {
52 costo: null 52 costo: null
53 }, 53 },
54 remitosTabla: [] 54 remitosTabla: []
55 }; 55 };
56 $scope.idLista = undefined; 56 $scope.idLista = undefined;
57 57
58 focaCrearHojaRutaService.getNumeroHojaRuta().then( 58 focaCrearHojaRutaService.getNumeroHojaRuta().then(
59 function(res) { 59 function(res) {
60 $scope.puntoVenta = $filter('rellenarDigitos')(res.data.sucursal, 4); 60 $scope.puntoVenta = $filter('rellenarDigitos')(res.data.sucursal, 4);
61 $scope.comprobante = $filter('rellenarDigitos')(res.data.numeroHojaRuta, 8); 61 $scope.comprobante = $filter('rellenarDigitos')(res.data.numeroHojaRuta, 8);
62 }, 62 },
63 function(err) { 63 function(err) {
64 focaModalService.alert('La terminal no esta configurada correctamente'); 64 focaModalService.alert('La terminal no esta configurada correctamente');
65 console.info(err); 65 console.info(err);
66 } 66 }
67 ); 67 );
68 68
69 $scope.inicial = angular.copy($scope.hojaRuta); 69 $scope.inicial = angular.copy($scope.hojaRuta);
70 } 70 }
71 71
72 $scope.$watch('hojaRuta', function(newValue, oldValue) { 72 $scope.$watch('hojaRuta', function(newValue, oldValue) {
73 focaBotoneraLateralService.setPausarData({ 73 focaBotoneraLateralService.setPausarData({
74 label: 'hojaRuta', 74 label: 'hojaRuta',
75 val: newValue 75 val: newValue
76 }); 76 });
77 }, true); 77 }, true);
78 78
79 $scope.crearHojaRuta = function() { 79 $scope.crearHojaRuta = function() {
80 if(!$scope.hojaRuta.remitosTabla.length) { 80 if (!$scope.hojaRuta.remitosTabla.length) {
81 focaModalService.alert('Ingrese Remitos'); 81 focaModalService.alert('Ingrese Remitos');
82 return; 82 return;
83 } 83 }
84 if(!$scope.hojaRuta.chofer.id) { 84 if (!$scope.hojaRuta.chofer.id) {
85 focaModalService.alert('Ingrese Chofer'); 85 focaModalService.alert('Ingrese Chofer');
86 return; 86 return;
87 } 87 }
88 if(!$scope.hojaRuta.vehiculo.id) { 88 if (!$scope.hojaRuta.vehiculo.id) {
89 focaModalService.alert('Ingrese Vehiculo'); 89 focaModalService.alert('Ingrese Vehiculo');
90 return; 90 return;
91 } 91 }
92 if(!$scope.hojaRuta.transportista.COD) { 92 if (!$scope.hojaRuta.transportista.COD) {
93 focaModalService.alert('Ingrese Transportista'); 93 focaModalService.alert('Ingrese Transportista');
94 return; 94 return;
95 } 95 }
96 if(!$scope.hojaRuta.tarifario.costo) { 96 if (!$scope.hojaRuta.tarifario.costo) {
97 focaModalService.alert('Ingrese Tarifario'); 97 focaModalService.alert('Ingrese Tarifario');
98 return; 98 return;
99 } 99 }
100 if(!$scope.hojaRuta.datosExtra) { 100 if (!$scope.hojaRuta.datosExtra) {
101 focaModalService.alert('Ingrese Datos extra'); 101 focaModalService.alert('Ingrese Datos extra');
102 return; 102 return;
103 } 103 }
104 var date = new Date(); 104 var date = new Date();
105 var save = { 105 var save = {
106 hojaRuta: { 106 hojaRuta: {
107 id: 0, 107 id: 0,
108 fechaCreacion: new Date(date.getTime()).toISOString().slice(0, 19) 108 fechaCreacion: new Date(date.getTime()).toISOString().slice(0, 19)
109 .replace('T', ' '), 109 .replace('T', ' '),
110 idTransportista: $scope.hojaRuta.transportista.COD, 110 idTransportista: $scope.hojaRuta.transportista.COD,
111 idChofer: $scope.hojaRuta.chofer.id, 111 idChofer: $scope.hojaRuta.chofer.id,
112 idVehiculo: $scope.hojaRuta.vehiculo.id, 112 idVehiculo: $scope.hojaRuta.vehiculo.id,
113 tarifaFlete: $scope.hojaRuta.tarifario.costo, 113 tarifaFlete: $scope.hojaRuta.tarifario.costo,
114 fechaReparto: new Date($scope.hojaRuta.fechaReparto).toISOString().substring(0, 10), 114 fechaReparto: new Date($scope.hojaRuta.fechaReparto).toISOString().substring(0, 10),
115 estado: 0 115 estado: 0
116 }, 116 },
117 remitos: $scope.hojaRuta.remitosTabla 117 remitos: $scope.hojaRuta.remitosTabla
118 }; 118 };
119 save.hojaRuta = angular.extend({}, save.hojaRuta, $scope.hojaRuta.datosExtra); 119 save.hojaRuta = angular.extend({}, save.hojaRuta, $scope.hojaRuta.datosExtra);
120 focaCrearHojaRutaService.crearHojaRuta(save).then( 120 focaCrearHojaRutaService.crearHojaRuta(save).then(
121 function(data) { 121 function(data) {
122 focaModalService.alert( 122 focaModalService.alert(
123 'Hoja ruta creada Nº: ' + 123 'Hoja ruta creada Nº: ' +
124 $filter('rellenarDigitos')(data.data.sucursal, 4) + '-' + 124 $filter('rellenarDigitos')(data.data.sucursal, 4) + '-' +
125 $filter('rellenarDigitos')(data.data.numeroHojaRuta, 8) 125 $filter('rellenarDigitos')(data.data.numeroHojaRuta, 8)
126 ); 126 );
127 127
128 init(); 128 init();
129 }, 129 },
130 function(error) { 130 function(error) {
131 focaModalService.alert('Hubo un error al crear la hoja de ruta'); 131 focaModalService.alert('Hubo un error al crear la hoja de ruta');
132 console.info(error); 132 console.info(error);
133 } 133 }
134 ); 134 );
135 }; 135 };
136 136
137 $scope.seleccionarTransportista = function() { 137 $scope.seleccionarTransportista = function() {
138 if(eligioPreConfirmado()) return; 138 if (eligioPreConfirmado()) return;
139 var parametrosModal = { 139 var parametrosModal = {
140 titulo: 'Búsqueda de transportista', 140 titulo: 'Búsqueda de transportista',
141 query: '/transportista', 141 query: '/transportista',
142 columnas: [ 142 columnas: [
143 { 143 {
144 nombre: 'Código', 144 nombre: 'Código',
145 propiedad: 'COD' 145 propiedad: 'COD'
146 }, 146 },
147 { 147 {
148 nombre: 'Nombre', 148 nombre: 'Nombre',
149 propiedad: 'NOM' 149 propiedad: 'NOM'
150 }, 150 },
151 { 151 {
152 nombre: 'CUIT', 152 nombre: 'CUIT',
153 propiedad: 'CUIT' 153 propiedad: 'CUIT'
154 } 154 }
155 ] 155 ]
156 }; 156 };
157 focaModalService.modal(parametrosModal).then( 157 focaModalService.modal(parametrosModal).then(
158 function(proveedor) { 158 function(proveedor) {
159 $scope.hojaRuta.transportista = proveedor; 159 $scope.hojaRuta.transportista = proveedor;
160 $scope.$broadcast('addCabecera', { 160 $scope.$broadcast('addCabecera', {
161 label: 'Transportista:', 161 label: 'Transportista:',
162 valor: $filter('rellenarDigitos')(proveedor.COD, 5) + ' - ' + 162 valor: $filter('rellenarDigitos')(proveedor.COD, 5) + ' - ' +
163 proveedor.NOM 163 proveedor.NOM
164 }); 164 });
165 }, function() { 165 }, function() {
166 166
167 } 167 }
168 ); 168 );
169 }; 169 };
170 170
171 $scope.seleccionarChofer = function() { 171 $scope.seleccionarChofer = function() {
172 var parametrosModal = { 172 var parametrosModal = {
173 titulo: 'Búsqueda de Chofer', 173 titulo: 'Búsqueda de Chofer',
174 query: '/chofer', 174 query: '/chofer',
175 columnas: [ 175 columnas: [
176 { 176 {
177 propiedad: 'id', 177 propiedad: 'id',
178 nombre: 'Código', 178 nombre: 'Código',
179 filtro: { 179 filtro: {
180 nombre: 'rellenarDigitos', 180 nombre: 'rellenarDigitos',
181 parametro: 3 181 parametro: 3
182 } 182 }
183 }, 183 },
184 { 184 {
185 propiedad: 'nombre', 185 propiedad: 'nombre',
186 nombre: 'Nombre' 186 nombre: 'Nombre'
187 }, 187 },
188 { 188 {
189 propiedad: 'dni', 189 propiedad: 'dni',
190 nombre: 'DNI' 190 nombre: 'DNI'
191 }, 191 },
192 { 192 {
193 propiedad: 'telefono', 193 propiedad: 'telefono',
194 nombre: 'Teléfono' 194 nombre: 'Teléfono'
195 } 195 }
196 ] 196 ]
197 }; 197 };
198 focaModalService.modal(parametrosModal).then( 198 focaModalService.modal(parametrosModal).then(
199 function(chofer) { 199 function(chofer) {
200 $scope.hojaRuta.chofer = chofer; 200 $scope.hojaRuta.chofer = chofer;
201 $scope.$broadcast('addCabecera', { 201 $scope.$broadcast('addCabecera', {
202 label: 'Chofer:', 202 label: 'Chofer:',
203 valor: $filter('rellenarDigitos')(chofer.id, 3) + ' - ' +chofer.nombre 203 valor: $filter('rellenarDigitos')(chofer.id, 3) + ' - ' +chofer.nombre
204 }); 204 });
205 }, function() { 205 }, function() {
206 // funcion ejecutada cuando se cancela el modal 206 // funcion ejecutada cuando se cancela el modal
207 } 207 }
208 ); 208 );
209 }; 209 };
210 210
211 $scope.seleccionarVehiculo = function() { 211 $scope.seleccionarVehiculo = function() {
212 if(!eligioFecha() || eligioPreConfirmado()) return; 212 if (!eligioFecha() || eligioPreConfirmado()) return;
213 modalVehiculos(); 213 modalVehiculos();
214 }; 214 };
215 215
216 $scope.seleccionarTarifario = function() { 216 $scope.seleccionarTarifario = function() {
217 var modalInstance = $uibModal.open( 217 focaModalService
218 { 218 .prompt({
219 ariaLabelledBy: 'Busqueda de Tarifario', 219 titulo: 'Tarifa flete',
220 templateUrl: 'modal-tarifa-flete.html', 220 value: $scope.hojaRuta.tarifario.costo
221 controller: 'focaModalTarifaFleteController', 221 })
222 size: 'lg', 222 .then(function(costo) {
223 resolve: { 223 if (isNaN(costo)) {
224 parametrosTarifaFlete: function() { 224 focaModalService
225 return $scope.hojaRuta.tarifario.costo; 225 .alert('Ingrese un valor válido')
226 } 226 .then(function() {
227 $scope.seleccionarTarifario();
228 });
229
230 return;
227 } 231 }
228 }
229 );
230 232
231 modalInstance.result.then( 233 $scope.hojaRuta.tarifario.costo = costo;
232 function(tarifario) {
233 $scope.hojaRuta.tarifario = tarifario;
234 $scope.$broadcast('addCabecera', { 234 $scope.$broadcast('addCabecera', {
235 label: 'Tarifario:', 235 label: 'Tarifario:',
236 valor: tarifario.costo 236 valor: costo
237 }); 237 });
238 }, function() { 238 });
239 // funcion ejecutada cuando se cancela el modal
240 }
241 );
242 }; 239 };
243 240
244 $scope.seleccionarRemitos = function() { 241 $scope.seleccionarRemitos = function() {
245 if(eligioPreConfirmado() || !eligioFecha() || !eligioVehiculo()) return; 242 if (eligioPreConfirmado() || !eligioFecha() || !eligioVehiculo()) return;
246 var modalInstance = $uibModal.open( 243 var modalInstance = $uibModal.open(
247 { 244 {
248 ariaLabelledBy: 'Busqueda de Remito', 245 ariaLabelledBy: 'Busqueda de Remito',
249 templateUrl: 'foca-modal-remito.html', 246 templateUrl: 'foca-modal-remito.html',
250 controller: 'focaModalRemitoController', 247 controller: 'focaModalRemitoController',
251 size: 'lg', 248 size: 'lg',
252 resolve: {usadoPor: function() {return 'hojaRuta';}} 249 resolve: {usadoPor: function() {return 'hojaRuta';}}
253 } 250 }
254 ); 251 );
255 modalInstance.result.then( 252 modalInstance.result.then(
256 function(remito) { 253 function(remito) {
257 // TODO: borrar cuando no se use definitivamente 254 // TODO: borrar cuando no se use definitivamente
258 // for (var i = $scope.hojaRuta.remitosTabla.length - 1; i >= 0; i--) { 255 // for (var i = $scope.hojaRuta.remitosTabla.length - 1; i >= 0; i--) {
259 // if ($scope.hojaRuta.remitosTabla[i].id === remito.id) { 256 // if ($scope.hojaRuta.remitosTabla[i].id === remito.id) {
260 // focaModalService.alert('Remito ya incluido'); 257 // focaModalService.alert('Remito ya incluido');
261 // return; 258 // return;
262 // } 259 // }
263 // } 260 // }
264 261
265 // var litros = 0; 262 // var litros = 0;
266 // for (var j = remito.articulosRemito.length - 1; j >= 0; j--) { 263 // for (var j = remito.articulosRemito.length - 1; j >= 0; j--) {
267 // litros = litros + parseFloat(remito.articulosRemito[j].cantidad); 264 // litros = litros + parseFloat(remito.articulosRemito[j].cantidad);
268 // } 265 // }
269 266
270 // if ($scope.hojaRuta.litros >= $scope.hojaRuta.vehiculo.capacidad) { 267 // if ($scope.hojaRuta.litros >= $scope.hojaRuta.vehiculo.capacidad) {
271 // focaModalService.alert( 268 // focaModalService.alert(
272 // 'Debe ingresar toda la información para el transporte' 269 // 'Debe ingresar toda la información para el transporte'
273 // ); 270 // );
274 // return; 271 // return;
275 // } 272 // }
276 273
277 //if($scope.hojaRuta.litros + litros >= $scope.hojaRuta.vehiculo.capacidad) 274 //if($scope.hojaRuta.litros + litros >= $scope.hojaRuta.vehiculo.capacidad)
278 // { 275 // {
279 // var litrostotales = litros; 276 // var litrostotales = litros;
280 // litros = $scope.hojaRuta.vehiculo.capacidad - $scope.hojaRuta.litros; 277 // litros = $scope.hojaRuta.vehiculo.capacidad - $scope.hojaRuta.litros;
281 // focaModalService.alert( 278 // focaModalService.alert(
282 // 'La carga excede la capacidad disponible del vehiculo. ' + 279 // 'La carga excede la capacidad disponible del vehiculo. ' +
283 // 'Excedente no cargado: ' + (litrostotales - litros) + ' litros' 280 // 'Excedente no cargado: ' + (litrostotales - litros) + ' litros'
284 // ); 281 // );
285 // } 282 // }
286 283
287 // remito.litros = litros; 284 // remito.litros = litros;
288 // $scope.hojaRuta.litros = $scope.hojaRuta.litros + litros; 285 // $scope.hojaRuta.litros = $scope.hojaRuta.litros + litros;
289 $scope.cargarCisterna(remito.id).then(function() { 286 $scope.cargarCisterna(remito.id).then(function(response) {
290 $scope.hojaRuta.remitosTabla.push(remito); 287 $scope.hojaRuta.remitosTabla.push(remito);
291 $scope.seleccionarRemitos(); 288 if (!response) $scope.seleccionarRemitos();
292 }, function() { 289 }, function() {
293 $scope.seleccionarRemitos(); 290 $scope.seleccionarRemitos();
294 }); 291 });
295 }, function() { 292 }, function() {
296 // funcion ejecutada cuando se cancela el modal 293 // funcion ejecutada cuando se cancela el modal
297 } 294 }
298 ); 295 );
299 }; 296 };
300 297
301 $scope.seleccionarVehiculosPrecargados = function() { 298 $scope.seleccionarVehiculosPrecargados = function() {
302 if(!eligioFecha()) return; 299 if (!eligioFecha()) return;
303 modalVehiculos(true); 300 modalVehiculos(true);
304 }; 301 };
305 302
306 $scope.cargarCisterna = function(idRemito) { 303 $scope.cargarCisterna = function(idRemito) {
307 if(!eligioFecha() || !$scope.hojaRuta.vehiculo.id) return; 304 if (!eligioFecha() || !$scope.hojaRuta.vehiculo.id) return;
308 var modalInstance = $uibModal.open( 305 var modalInstance = $uibModal.open(
309 { 306 {
310 ariaLabelledBy: 'Busqueda de Vehiculo', 307 ariaLabelledBy: 'Busqueda de Vehiculo',
311 templateUrl: 'foca-detalle-vehiculo.html', 308 templateUrl: 'foca-detalle-vehiculo.html',
312 controller: 'focaDetalleVehiculo', 309 controller: 'focaDetalleVehiculo',
313 size: 'lg', 310 size: 'lg',
314 resolve: { 311 resolve: {
315 idVehiculo: function() {return $scope.hojaRuta.vehiculo.id;}, 312 idVehiculo: function() {return $scope.hojaRuta.vehiculo.id;},
316 idRemito: function() {return idRemito;}, 313 idRemito: function() {return idRemito;},
317 fechaReparto: function() {return $scope.hojaRuta.fechaReparto;} 314 fechaReparto: function() {return $scope.hojaRuta.fechaReparto;}
318 } 315 }
319 } 316 }
320 ); 317 );
321 return modalInstance.result; 318 return modalInstance.result;
322 }; 319 };
323 320
324 $scope.seleccionarFechaEntrega = function() { 321 $scope.seleccionarFechaEntrega = function() {
325 if (!$scope.hojaRuta.fechaReparto) { 322 if (!$scope.hojaRuta.fechaReparto) {
326 elegirFecha(); 323 elegirFecha();
327 return; 324 return;
328 } 325 }
329 focaModalService 326 focaModalService
330 .confirm('Si cambia la fecha se perderán los datos actuales') 327 .confirm('Si cambia la fecha se perderán los datos actuales')
331 .then(function() { 328 .then(function() {
332 elegirFecha(); 329 elegirFecha();
333 }, function() { 330 }, function() {
334 return ; 331 return ;
335 }); 332 });
336 }; 333 };
337 334
338 $scope.seleccionarDatosExtra = function() { 335 $scope.seleccionarDatosExtra = function() {
339 var datosHojaRuta = $scope.hojaRuta.datosExtra; 336 var datosHojaRuta = $scope.hojaRuta.datosExtra;
340 var modalInstance = $uibModal.open( 337 var modalInstance = $uibModal.open(
341 { 338 {
342 templateUrl: 'foca-modal-datos-hoja-ruta.html', 339 templateUrl: 'foca-modal-datos-hoja-ruta.html',
343 controller: 'focaModalDatosHojaRutaCtrl', 340 controller: 'focaModalDatosHojaRutaCtrl',
344 size: 'lg', 341 size: 'lg',
345 resolve: { 342 resolve: {
346 parametrosDatos: function() { 343 parametrosDatos: function() {
347 return { 344 return {
348 datosHojaRuta: datosHojaRuta 345 datosHojaRuta: datosHojaRuta
349 }; 346 };
350 } 347 }
351 } 348 }
352 } 349 }
353 ); 350 );
354 return modalInstance.result.then(function(datosExtra) { 351 return modalInstance.result.then(function(datosExtra) {
355 $scope.hojaRuta.datosExtra = datosExtra; 352 $scope.hojaRuta.datosExtra = datosExtra;
356 }, function() { 353 }, function() {
357 //se ejecuta cuando se cancela el modal 354 //se ejecuta cuando se cancela el modal
358 }); 355 });
359 }; 356 };
360 357
361 $scope.desasociarRemito = function(key, idRemito) { 358 $scope.desasociarRemito = function(key, idRemito) {
362 var idsRemito = [idRemito]; 359 var idsRemito = [idRemito];
363 focaModalService.confirm('¿Está seguro que desea desasociar este remito del' + 360 focaModalService.confirm('¿Está seguro que desea desasociar este remito del' +
364 ' vehículo?').then(function() { 361 ' vehículo?').then(function() {
365 focaCrearHojaRutaService.desasociarRemitos(idsRemito, 362 focaCrearHojaRutaService.desasociarRemitos(idsRemito,
366 $scope.hojaRuta.vehiculo.id, $scope.hojaRuta.remitosTabla.length <= 1).then( 363 $scope.hojaRuta.vehiculo.id, $scope.hojaRuta.remitosTabla.length <= 1)
367 function() { 364 .then(function() {
368 $scope.hojaRuta.remitosTabla.splice(key, 1); 365 $scope.hojaRuta.remitosTabla.splice(key, 1);
369 focaModalService.alert('Remito desasociado con éxito'); 366 focaModalService.alert('Remito desasociado con éxito');
370 } 367 });
371 );
372 }); 368 });
373 }; 369 };
370
371 $scope.verProductosRemito = function(idRemito) {
372 var parametrosModal = {
373 titulo: 'Articulos remito',
374 query: '/articulos/remito/' + idRemito,
375 soloMostrar: true,
376 columnas: [
377 {
378 nombre: 'Código',
379 propiedad: 'codigo'
380 },
381 {
382 nombre: 'Descripción',
383 propiedad: 'descripcion'
384 },
385 {
386 nombre: 'Cantidad',
387 propiedad: 'cantidad'
388 }
389 ]
390 };
391 focaModalService.modal(parametrosModal).then();
392 };
374 393
375 function elegirFecha() { 394 function elegirFecha() {
376 focaModalService.modalFecha('Fecha de entrega').then(function(fecha) { 395 var fechaEntrega = {
396 titulo: 'Fecha de entrega',
397 minDate: new Date()
398 };
399 focaModalService.modalFecha(fechaEntrega).then(function(fecha) {
377 $scope.$broadcast('addCabecera', { 400 $scope.$broadcast('addCabecera', {
378 label: 'Fecha de entrega:', 401 label: 'Fecha de entrega: ',
379 valor: fecha.toLocaleDateString() 402 valor: fecha.toLocaleDateString()
380 }); 403 });
381 $scope.hojaRuta.fechaReparto = fecha; 404 $scope.hojaRuta.fechaReparto = fecha;
382 }); 405 });
383 } 406 }
384 407
385 function eligioPreConfirmado() { 408 function eligioPreConfirmado() {
386 if($scope.eligioPreConfirmado) { 409 if ($scope.eligioPreConfirmado) {
387 focaModalService.alert('No puede elegir si eligió un vehiculo pre cargado'); 410 focaModalService.alert('No puede elegir si eligió un vehiculo pre cargado');
388 return true; 411 return true;
389 } 412 }
390 return false; 413 return false;
391 } 414 }
392 415
393 function eligioFecha() { 416 function eligioFecha() {
394 if(!$scope.hojaRuta.fechaReparto) { 417 if (!$scope.hojaRuta.fechaReparto) {
395 focaModalService.alert('Primero seleccione fecha de reparto'); 418 focaModalService.alert('Primero seleccione fecha de reparto');
396 return false; 419 return false;
397 } 420 }
398 return true; 421 return true;
399 } 422 }
400 423
401 function eligioVehiculo() { 424 function eligioVehiculo() {
402 if(!$scope.hojaRuta.vehiculo.id) { 425 if (!$scope.hojaRuta.vehiculo.id) {
403 focaModalService.alert('Primero seleccione vehiculo'); 426 focaModalService.alert('Primero seleccione vehiculo');
404 return false; 427 return false;
405 } 428 }
406 return true; 429 return true;
407 } 430 }
408 431
409 function modalVehiculos(preCargados) { 432 function modalVehiculos(preCargados) {
410 var parametrosModal = {}; 433 var parametrosModal = {};
411 if(preCargados) { 434 if (preCargados) {
412 parametrosModal.query = '/vehiculo/obtener/pre-confirmados/' + 435 parametrosModal.query = '/vehiculo/obtener/pre-confirmados/' +
413 new Date($scope.hojaRuta.fechaReparto).toISOString().substring(0, 10); 436 new Date($scope.hojaRuta.fechaReparto).toISOString().substring(0, 10);
414 parametrosModal.titulo = 'Búsqueda de vehiculos pre confirmados'; 437 parametrosModal.titulo = 'Búsqueda de vehiculos pre confirmados';
415 }else { 438 } else {
416 parametrosModal.query = '/vehiculo'; 439 parametrosModal.query = '/vehiculo';
417 parametrosModal.titulo = 'Búsqueda de vehículos'; 440 parametrosModal.titulo = 'Búsqueda de vehículos';
418 } 441 }
419 parametrosModal.columnas = [ 442 parametrosModal.columnas = [
420 { 443 {
421 propiedad: 'codigo', 444 propiedad: 'codigo',
422 nombre: 'Código' 445 nombre: 'Código'
423 }, 446 },
424 { 447 {
425 propiedad: 'tractor', 448 propiedad: 'tractor',
426 nombre: 'tractor' 449 nombre: 'tractor'
427 }, 450 },
428 { 451 {
429 propiedad: 'semi', 452 propiedad: 'semi',
430 nombre: 'Semi' 453 nombre: 'Semi'
431 } 454 }
432 ]; 455 ];
433 focaModalService.modal(parametrosModal).then(function(vehiculo) { 456 focaModalService.modal(parametrosModal).then(function(vehiculo) {
434 if(!preCargados && vehiculoEnUso(vehiculo)) return; 457 if (!preCargados && vehiculoEnUso(vehiculo)) return;
435 $scope.hojaRuta.vehiculo = vehiculo; 458 $scope.hojaRuta.vehiculo = vehiculo;
436 $scope.hojaRuta.transportista = vehiculo.transportista; 459 $scope.hojaRuta.transportista = vehiculo.transportista;
437 if(preCargados) { 460 if (preCargados) {
438 $scope.eligioPreConfirmado = true; 461 $scope.eligioPreConfirmado = true;
439 $scope.hojaRuta.vehiculo = vehiculo; 462 $scope.hojaRuta.vehiculo = vehiculo;
440 $scope.$broadcast('addCabecera', { 463 $scope.$broadcast('addCabecera', {
441 label: 'Transportista:', 464 label: 'Transportista:',
442 valor: $filter('rellenarDigitos')(vehiculo.transportista.COD, 5) + 465 valor: $filter('rellenarDigitos')(vehiculo.transportista.COD, 5) +
443 ' - ' + vehiculo.transportista.NOM 466 ' - ' + vehiculo.transportista.NOM
444 }); 467 });
445 focaCrearHojaRutaService 468 focaCrearHojaRutaService
446 .getRemitosByIdVehiculo(vehiculo.id, $scope.hojaRuta.fechaReparto) 469 .getRemitosByIdVehiculo(vehiculo.id, $scope.hojaRuta.fechaReparto)
447 .then(function(res) { 470 .then(function(res) {
448 $scope.hojaRuta.remitosTabla = res.data; 471 $scope.hojaRuta.remitosTabla = res.data;
449 }); 472 });
450 }else { 473 } else {
451 focaCrearHojaRutaService 474 focaCrearHojaRutaService
452 .getRemitosByIdVehiculo(vehiculo.id, $scope.hojaRuta.fechaReparto, true) 475 .getRemitosByIdVehiculo(vehiculo.id, $scope.hojaRuta.fechaReparto, true)
453 .then(function(res) { 476 .then(function(res) {
454 $scope.hojaRuta.remitosTabla = res.data; 477 $scope.hojaRuta.remitosTabla = res.data;
455 }); 478 });
456 } 479 }
457 $scope.$broadcast('addCabecera', { 480 $scope.$broadcast('addCabecera', {
458 label: 'Tractor:', 481 label: 'Tractor:',
459 valor: vehiculo.tractor 482 valor: vehiculo.tractor
460 }); 483 });
461 $scope.$broadcast('addCabecera', { 484 $scope.$broadcast('addCabecera', {
462 label: 'Semi:', 485 label: 'Semi:',
463 valor: vehiculo.semi 486 valor: vehiculo.semi
464 }); 487 });
465 $scope.$broadcast('addCabecera', { 488 $scope.$broadcast('addCabecera', {
466 label: 'Capacidad:', 489 label: 'Capacidad:',
467 valor: vehiculo.capacidad 490 valor: vehiculo.capacidad
468 }); 491 });
469 }); 492 });
470 } 493 }
471 494
472 function vehiculoEnUso(vehiculo) { 495 function vehiculoEnUso(vehiculo) {
473 var idUsuario = focaLoginSrv.getLoginData().vendedorCobrador; 496 var idUsuario = focaLoginSrv.getLoginData().vendedorCobrador;
474 for (var i = 0; i < vehiculo.cisternas.length; i++) { 497 for (var i = 0; i < vehiculo.cisternas.length; i++) {
475 for (var j = 0; j < vehiculo.cisternas[i].cisternasCarga.length; j++) { 498 for (var j = 0; j < vehiculo.cisternas[i].cisternasCarga.length; j++) {
476 var cisternaCarga = vehiculo.cisternas[i].cisternasCarga[j]; 499 var cisternaCarga = vehiculo.cisternas[i].cisternasCarga[j];
477 if (cisternaCarga.fechaReparto.substring(0, 10) === 500 if (cisternaCarga.fechaReparto.substring(0, 10) ===
478 new Date($scope.hojaRuta.fechaReparto).toISOString().substring(0, 10) && 501 new Date($scope.hojaRuta.fechaReparto).toISOString().substring(0, 10) &&
479 cisternaCarga.idUsuarioProceso && 502 cisternaCarga.idUsuarioProceso &&
480 cisternaCarga.idUsuarioProceso !== idUsuario) 503 cisternaCarga.idUsuarioProceso !== idUsuario)
481 { 504 {
482 focaModalService.alert('El vehículo está siendo usado por otro' + 505 focaModalService.alert('El vehículo está siendo usado por otro' +
483 ' usuario'); 506 ' usuario');
484 return true; 507 return true;
485 } 508 }
486 } 509 }
487 } 510 }
488 return false; 511 return false;
489 } 512 }
490 513
491 function salir() { 514 function salir() {
492 var confirmacion = false; 515 var confirmacion = false;
493 516
494 if (!angular.equals($scope.hojaRuta, $scope.inicial)) { 517 if (!angular.equals($scope.hojaRuta, $scope.inicial)) {
495 confirmacion = true; 518 confirmacion = true;
496 } 519 }
497 520
498 if (confirmacion) { 521 if (confirmacion) {
499 focaModalService.confirm( 522 focaModalService.confirm(
500 '¿Está seguro de que desea salir? Se perderán todos los datos cargados.' 523 '¿Está seguro de que desea salir? Se perderán todos los datos cargados.'
501 ).then(function(data) { 524 ).then(function(data) {
502 if (data) { 525 if (data) {
503 $location.path('/'); 526 $location.path('/');
504 } 527 }
505 }); 528 });
506 } else { 529 } else {
507 $location.path('/'); 530 $location.path('/');
508 } 531 }
509 } 532 }
510 533
511 function setearHojaRuta(hojaRuta) { 534 function setearHojaRuta(hojaRuta) {
512 $scope.$broadcast('cleanCabecera'); 535 $scope.$broadcast('cleanCabecera');
513 536
514 var cabeceras = []; 537 var cabeceras = [];
515 if (hojaRuta.fechaReparto) { 538 if (hojaRuta.fechaReparto) {
516 cabeceras.push({ 539 cabeceras.push({
517 label: 'Fecha de entrega:', 540 label: 'Fecha de entrega:',
518 valor: $filter('date')(hojaRuta.fechaReparto, 'dd/MM/yyyy') 541 valor: $filter('date')(hojaRuta.fechaReparto, 'dd/MM/yyyy')
519 }); 542 });
520 } 543 }
521 if (hojaRuta.transportista.COD) { 544 if (hojaRuta.transportista.COD) {
522 cabeceras.push({ 545 cabeceras.push({
523 label: 'Transportista:', 546 label: 'Transportista:',
524 valor: $filter('rellenarDigitos')(hojaRuta.transportista.COD, 5) + ' - ' + 547 valor: $filter('rellenarDigitos')(hojaRuta.transportista.COD, 5) + ' - ' +
525 hojaRuta.transportista.NOM 548 hojaRuta.transportista.NOM
526 }); 549 });
527 } 550 }
528 if (hojaRuta.chofer.id) { 551 if (hojaRuta.chofer.id) {
529 cabeceras.push({ 552 cabeceras.push({
530 label: 'Chofer:', 553 label: 'Chofer:',
531 valor: $filter('rellenarDigitos')(hojaRuta.chofer.id, 3) + 554 valor: $filter('rellenarDigitos')(hojaRuta.chofer.id, 3) +
532 ' - ' + hojaRuta.chofer.nombre 555 ' - ' + hojaRuta.chofer.nombre
533 }); 556 });
534 } 557 }
535 if (hojaRuta.vehiculo.id) { 558 if (hojaRuta.vehiculo.id) {
536 cabeceras.push({ 559 cabeceras.push({
537 label: 'Tractor:', 560 label: 'Tractor:',
538 valor: hojaRuta.vehiculo.tractor 561 valor: hojaRuta.vehiculo.tractor
539 }); 562 });
540 cabeceras.push({ 563 cabeceras.push({
541 label: 'Semi:', 564 label: 'Semi:',
542 valor: hojaRuta.vehiculo.semi 565 valor: hojaRuta.vehiculo.semi
543 }); 566 });
544 cabeceras.push({ 567 cabeceras.push({
545 label: 'Capacidad:', 568 label: 'Capacidad:',
546 valor: hojaRuta.vehiculo.capacidad 569 valor: hojaRuta.vehiculo.capacidad
547 }); 570 });
548 } 571 }
549 if (hojaRuta.tarifario.costo) { 572 if (hojaRuta.tarifario.costo) {
550 cabeceras.push({ 573 cabeceras.push({
551 label: 'Tarifario:', 574 label: 'Tarifario:',
552 valor: hojaRuta.tarifario.costo 575 valor: hojaRuta.tarifario.costo
553 }); 576 });
554 } 577 }
555 578
556 addArrayCabecera(cabeceras); 579 addArrayCabecera(cabeceras);
557 $scope.hojaRuta = hojaRuta; 580 $scope.hojaRuta = hojaRuta;
558 } 581 }
559 582
560 function getLSHojaRuta() { 583 function getLSHojaRuta() {
561 var hojaRuta = JSON.parse($localStorage.hojaRuta || null); 584 var hojaRuta = JSON.parse($localStorage.hojaRuta || null);
562 if (hojaRuta) { 585 if (hojaRuta) {
563 setearHojaRuta(hojaRuta); 586 setearHojaRuta(hojaRuta);
564 delete $localStorage.hojaRuta; 587 delete $localStorage.hojaRuta;
565 } 588 }
566 } 589 }
567 function addArrayCabecera(array) { 590 function addArrayCabecera(array) {
568 for(var i = 0; i < array.length; i++) { 591 for(var i = 0; i < array.length; i++) {
569 $scope.$broadcast('addCabecera', { 592 $scope.$broadcast('addCabecera', {
src/js/controllerDatosHojaRuta.js
1 angular.module('focaCrearHojaRuta') 1 angular.module('focaCrearHojaRuta')
2 .controller('focaModalDatosHojaRutaCtrl', 2 .controller('focaModalDatosHojaRutaCtrl',
3 [ 3 [
4 '$filter', 4 '$filter',
5 '$scope', 5 '$scope',
6 '$uibModalInstance', 6 '$uibModalInstance',
7 'focaModalService', 7 'focaModalService',
8 'parametrosDatos', 8 'parametrosDatos',
9 function($filter, $scope, $uibModalInstance, focaModalService, parametrosDatos) { 9 function($filter, $scope, $uibModalInstance, focaModalService, parametrosDatos) {
10 $scope.datosHojaRuta = parametrosDatos.datosHojaRuta; 10 $scope.datosHojaRuta = parametrosDatos.datosHojaRuta;
11 $scope.focused = 0; 11 $scope.focused = 0;
12 12
13 $scope.aceptar = function(key) { 13 $scope.aceptar = function(key) {
14 if(key === 13) { 14 if (key === 13) {
15 if(!$scope.formDatosHojaRuta.$valid) { 15 if (!$scope.formDatosHojaRuta.$valid) {
16 focaModalService.alert('Formulario inválido'); 16 focaModalService.alert('Formulario inválido');
17 return; 17 return;
18 } 18 }
19 $uibModalInstance.close($scope.datosHojaRuta); 19 $uibModalInstance.close($scope.datosHojaRuta);
20 } 20 }
21 }; 21 };
22 22
23 $scope.next = function(key) { 23 $scope.next = function(key) {
24 if(key === 13) $scope.focused++; 24 if (key === 13) $scope.focused++;
25 }; 25 };
26 26
27 $scope.cancel = function() { 27 $scope.cancel = function() {
28 $uibModalInstance.dismiss('cancel'); 28 $uibModalInstance.dismiss('cancel');
29 }; 29 };
30 } 30 }
31 ] 31 ]
32 ); 32 );
33 33
src/views/hoja-ruta.html
1 <div class="crear-hoja-ruta foca-crear row"> 1 <div class="crear-hoja-ruta foca-crear row">
2 <foca-cabecera-facturador 2 <foca-cabecera-facturador
3 titulo="'Hoja de ruta'" 3 titulo="'Hoja de ruta'"
4 numero="puntoVenta + '-' + comprobante" 4 numero="puntoVenta + '-' + comprobante"
5 fecha="now" 5 fecha="now"
6 class="mb-0 col-lg-12" 6 class="mb-0 col-lg-12"
7 ></foca-cabecera-facturador> 7 ></foca-cabecera-facturador>
8 <div class="col-lg-12"> 8 <div class="col-lg-12">
9 <div class="row mt-4"> 9 <div class="row mt-4">
10 <div class="col-12 col-md-10 border border-light rounded"> 10 <div class="col-12 col-md-10 border border-light rounded">
11 <div class="row px-5 py-2 botonera-secundaria"> 11 <div class="row px-5 py-2 botonera-secundaria">
12 <div class="col-12"> 12 <div class="col-12">
13 <foca-botonera-facturador botones="botonera" extra="4" class="row"></foca-botonera-facturador> 13 <foca-botonera-facturador botones="botonera" extra="4" class="row"></foca-botonera-facturador>
14 </div> 14 </div>
15 </div> 15 </div>
16 <!-- PC --> 16 <!-- PC -->
17 <div class="row grilla-articulo align-items-end d-none d-sm-flex"> 17 <div class="row grilla-articulo align-items-end d-none d-sm-flex">
18 <table class="table tabla-articulo table-striped table-sm mb-0 rounded-bottom"> 18 <table class="table tabla-articulo table-striped table-sm mb-0 rounded-bottom">
19 <thead> 19 <thead>
20 <tr class="d-flex"> 20 <tr class="d-flex">
21 <th class="col-auto">#</th> 21 <th class="col-auto">#</th>
22 <th class="col-2">Remito</th> 22 <th class="col-2">Remito</th>
23 <th class="col">Cliente</th> 23 <th class="col">Cliente</th>
24 <th class="col">Dirección</th> 24 <th class="col">Dirección</th>
25 <th class="col-auto"></th>
25 <th class="col-auto"> 26 <th class="col-auto">
26 <button 27 <button
27 class="btn btn-outline-light selectable" 28 class="btn btn-outline-light selectable"
28 ng-click="show = !show; masMenos()" 29 ng-click="show = !show; masMenos()"
29 > 30 >
30 <i 31 <i
31 class="fa fa-chevron-down" 32 class="fa fa-chevron-down"
32 ng-show="show" 33 ng-show="show"
33 aria-hidden="true" 34 aria-hidden="true"
34 > 35 >
35 </i> 36 </i>
36 <i 37 <i
37 class="fa fa-chevron-up" 38 class="fa fa-chevron-up"
38 ng-hide="show" 39 ng-hide="show"
39 aria-hidden="true"> 40 aria-hidden="true">
40 </i> 41 </i>
41 </button> 42 </button>
42 </th> 43 </th>
43 </th>
44 </tr> 44 </tr>
45 </thead> 45 </thead>
46 <tbody class="tabla-articulo-body"> 46 <tbody class="tabla-articulo-body">
47 <tr 47 <tr
48 ng-repeat="(key, remito) in hojaRuta.remitosTabla" 48 ng-repeat="(key, remito) in hojaRuta.remitosTabla"
49 class="d-flex" 49 class="d-flex"
50 ng-show="show || key == hojaRuta.remitosTabla.length - 1" 50 ng-show="show || key == hojaRuta.remitosTabla.length - 1"
51 > 51 >
52 <td ng-bind="key + 1" class="col-auto"></td> 52 <td ng-bind="key + 1" class="col-auto"></td>
53 <td 53 <td
54 class="col-2" 54 class="col-2"
55 ng-bind="rellenar(remito.sucursal, 4) + '-' + rellenar(remito.numeroRemito, 8)" 55 >{{remito.sucursal | rellenarDigitos: 4}}-{{remito.numeroRemito | rellenarDigitos: 8}}</td>
56 ></td>
57 <th class="col" ng-bind="remito.nombreCliente"></th> 56 <th class="col" ng-bind="remito.nombreCliente"></th>
58 <th class="col" ng-bind="remito.domicilioStamp"></th> 57 <th class="col" ng-bind="remito.domicilioStamp"></th>
59 <td class="text-center col-auto"> 58 <td class="text-center col-auto">
60 <button 59 <button
61 class="btn btn-outline-light" 60 class="btn btn-outline-light"
61 ng-click="verProductosRemito(remito.id)"
62 title="Ver productos"
63 >
64 <i class="fa fa-eye"></i>
65 </button>
66 </td>
67 <td class="text-center col-auto">
68 <button
69 class="btn btn-outline-light"
62 ng-click="desasociarRemito(key, remito.id)" 70 ng-click="desasociarRemito(key, remito.id)"
71 title="Eliminar"
63 > 72 >
64 <i class="fa fa-trash"></i> 73 <i class="fa fa-trash"></i>
65 </button> 74 </button>
66 </td> 75 </td>
67 </tr> 76 </tr>
68 </tbody> 77 </tbody>
69 <tfoot> 78 <tfoot>
70 <tr class="d-flex"> 79 <tr class="d-flex">
71 <td class="col-auto px-1"> 80 <td class="col-auto px-1">
72 <strong>Remitos:</strong> 81 <strong>Remitos:</strong>
73 <a ng-bind="hojaRuta.remitosTabla.length"></a> 82 <a ng-bind="hojaRuta.remitosTabla.length"></a>
74 </td> 83 </td>
75 <td class="col"></td> 84 <td class="col"></td>
76 <td class="col-auto px-1"> 85 <td class="col-auto px-1">
77 <strong>Cantidad:</strong> 86 <strong>Cantidad:</strong>
78 <a ng-bind="hojaRuta.litros"></a> 87 <a ng-bind="hojaRuta.litros"></a>
79 </td> 88 </td>
80 </tr> 89 </tr>
81 </tfoot> 90 </tfoot>
82 </table> 91 </table>
83 </div> 92 </div>
84 </div> 93 </div>
85 </div> 94 </div>
86 </div> 95 </div>