Commit 2b165ae044f8adcbf2f26e6933cdf0767ed1e85c

Authored by Eric Fernandez
1 parent 2723a81a46
Exists in master

detalles, fecha en servicio, servicio vehiculos por fecha

1 angular.module('focaLogisticaPedidoRuta') 1 angular.module('focaLogisticaPedidoRuta')
2 .service( 2 .factory(
3 'focaLogisticaPedidoRutaService', [ 3 'focaLogisticaPedidoRutaService', [
4 '$http', 4 '$http',
5 '$cookies', 5 '$cookies',
6 'API_ENDPOINT', 6 'API_ENDPOINT',
7 '$filter', 7 '$filter',
8 function($http, $cookies, API_ENDPOINT, $filter) { 8 function($http, $cookies, API_ENDPOINT, $filter) {
9 return { 9 return {
10 idUsuario: $cookies.get('idUsuario'), 10 idUsuario: $cookies.get('idUsuario'),
11 obtenerActividad: function(parametros) { 11 obtenerActividad: function(parametros) {
12 return $http.post(API_ENDPOINT.URL + '/seguimiento/filtros', parametros); 12 return $http.post(API_ENDPOINT.URL + '/seguimiento/filtros', parametros);
13 }, 13 },
14 obtenerVehiculoById: function(idVehiculo) { 14 obtenerVehiculoById: function(idVehiculo) {
15 return $http.get(API_ENDPOINT.URL + '/vehiculo/' + idVehiculo); 15 return $http.get(API_ENDPOINT.URL + '/vehiculo/' + idVehiculo);
16 }, 16 },
17 obtenerRemitoById: function(idRemito) { 17 obtenerRemitoById: function(idRemito) {
18 return $http.get(API_ENDPOINT.URL + '/remito/obtener/' + idRemito); 18 return $http.get(API_ENDPOINT.URL + '/remito/obtener/' + idRemito);
19 }, 19 },
20 guardarCisternas: function(cisterna, idRemito) { 20 guardarCisternas: function(cisterna, idRemito) {
21 return $http.post(API_ENDPOINT.URL + '/cisterna/guardar/cargar/' + 21 return $http.post(API_ENDPOINT.URL + '/cisterna/guardar/cargar/' +
22 this.idUsuario + '/' + idRemito,cisterna); 22 this.idUsuario + '/' + idRemito,cisterna);
23 }, 23 },
24 numeroHojaRuta: function() { 24 numeroHojaRuta: function() {
25 return $http.get(API_ENDPOINT.URL + '/hoja-ruta/numero-siguiente'); 25 return $http.get(API_ENDPOINT.URL + '/hoja-ruta/numero-siguiente');
26 }, 26 },
27 getRemitos: function(idVehiculo) { 27 getRemitos: function(idVehiculo) {
28 return $http.get(API_ENDPOINT.URL + '/remito/sin-hoja-ruta/' +idVehiculo); 28 return $http.get(API_ENDPOINT.URL + '/remito/sin-hoja-ruta/' +idVehiculo);
29 }, 29 },
30 crearHojaRuta: function(hojaRuta) { 30 crearHojaRuta: function(hojaRuta) {
31 return $http.post(API_ENDPOINT.URL + '/hoja-ruta', hojaRuta); 31 return $http.post(API_ENDPOINT.URL + '/hoja-ruta', hojaRuta);
32 }, 32 },
33 desasociarRemitos: function(remitos, idVehiculo, sinRemitos) { 33 desasociarRemitos: function(remitos, idVehiculo, sinRemitos) {
34 var idsRemitos = []; 34 var idsRemitos = [];
35 for (var i = 0; i < remitos.length; i++) { 35 for (var i = 0; i < remitos.length; i++) {
36 idsRemitos.push(remitos[i].id); 36 idsRemitos.push(remitos[i].id);
37 } 37 }
38 return $http.post(API_ENDPOINT.URL + '/vehiculo/desasociar-remitos', 38 return $http.post(API_ENDPOINT.URL + '/vehiculo/desasociar-remitos',
39 { 39 {
40 idsRemitos: idsRemitos, 40 idsRemitos: idsRemitos,
41 idVehiculo: idVehiculo, 41 idVehiculo: idVehiculo,
42 vehiculoSinRemitos: sinRemitos 42 vehiculoSinRemitos: sinRemitos
43 }); 43 });
44 }, 44 },
45 obtenerRemitosDeCarga: function(remitos) { 45 obtenerRemitosDeCarga: function(remitos) {
46 var remitosRes = []; 46 var remitosRes = [];
47 for(var i = 0; i < remitos.cisternas.length; i++) { 47 for(var i = 0; i < remitos.cisternas.length; i++) {
48 procesoCistena(remitos.cisternas[i]); 48 procesoCistena(remitos.cisternas[i], this.fecha.toISOString());
49 } 49 }
50 function procesoCistena(cisterna) { 50 function procesoCistena(cisterna, fecha) {
51 for(var j = 0; j < cisterna.cisternaCarga.cisternaMovimientos.length; 51 for(var j = 0; j < cisterna.cisternasCarga.length; j++) {
52 j++) { 52 for (var k = 0; k < cisterna.cisternasCarga[j].cisternaMovimientos
53 procesoMovimiento( 53 .length; k++)
54 cisterna.cisternaCarga.cisternaMovimientos[j]); 54 {
55 if(cisterna.cisternasCarga[j].fechaReparto.substring(0, 10) ===
56 fecha.substring(0, 10))
57 {
58 procesoMovimiento(cisterna.cisternasCarga[j]
59 .cisternaMovimientos[k]);
60 }
61 }
55 } 62 }
56 } 63 }
57 function procesoMovimiento(movimiento) { 64 function procesoMovimiento(movimiento) {
58 if(!movimiento.anulado && movimiento.remito && 65 if(!movimiento.anulado && movimiento.remito &&
59 !movimiento.remito.idHojaRuta) { 66 !movimiento.remito.idHojaRuta) {
60 var remito = movimiento.remito; 67 var remito = movimiento.remito;
61 var yaEstaCargado = $filter('filter')(remitosRes, {id: remito.id}); 68 var yaEstaCargado = $filter('filter')(remitosRes, {id: remito.id});
62 if(!yaEstaCargado.length && movimiento.metodo === 'carga') { 69 if(!yaEstaCargado.length && movimiento.metodo === 'carga') {
63 remitosRes.push(remito); 70 remitosRes.push(remito);
64 } 71 }
65 } 72 }
66 } 73 }
67 return remitosRes; 74 return remitosRes;
68 }, 75 },
69 getVehiculosByIdUsuario: function() { 76 getVehiculosByIdUsuario: function() {
70 return $http.get(API_ENDPOINT.URL + '/vehiculo/usuario/' + this.idUsuario); 77 return $http.get(API_ENDPOINT.URL + '/vehiculo/usuario/' + this.idUsuario);
71 }, 78 },
72 obtenerCisternasPorFecha: function(idVehiculo, fecha) { 79 obtenerCisternasPorFecha: function(idVehiculo) {
73 return $http.post(API_ENDPOINT.URL + '/cisterna/listar/fecha', 80 return $http.post(API_ENDPOINT.URL + '/cisterna/listar/fecha',
74 {idVehiculo: idVehiculo, fechaReparto: fecha}); 81 {idVehiculo: idVehiculo, fechaReparto: this.fecha});
82 },
83 getUnidadesByFecha: function() {
84 return $http.post(API_ENDPOINT.URL + '/vehiculo/listar/fecha',
85 {fecha: this.fecha});
86 },
87 setFechaReparto: function(fechaReparto) {
88 this.fecha = fechaReparto;
75 } 89 }
76 }; 90 };
77 }]); 91 }]);
78 92
src/views/foca-logistica-pedido-ruta.html
1 <div class="foca-logistica-pedido-ruta" id="scope"> 1 <div class="foca-logistica-pedido-ruta" id="scope">
2 <div class="row"> 2 <div class="row">
3 <foca-cabecera-facturador 3 <foca-cabecera-facturador
4 titulo="titulo" 4 titulo="titulo"
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> 8 </div>
9 <div class="row px-5 py-2 botonera-secundaria"> 9 <div class="row px-5 py-2 botonera-secundaria">
10 <div class="col-12"> 10 <div class="col-12">
11 <foca-botonera-facturador botones="botonera" extra="4" class="row"></foca-botonera-facturador> 11 <foca-botonera-facturador botones="botonera" extra="4" class="row"></foca-botonera-facturador>
12 </div> 12 </div>
13 </div> 13 </div>
14 <div class="row"> 14 <div class="row">
15 <div class="offset-1 col-9"> 15 <div class="offset-1 col-9">
16 <foca-logistica 16 <foca-logistica
17 latitud="-32.89214159952345" 17 latitud="-32.89214159952345"
18 longitud="-68.84572999101856" 18 longitud="-68.84572999101856"
19 zoom="14" 19 zoom="14"
20 marcadores="marcadores" 20 marcadores="marcadores"
21 parametros= "datosBuscados" 21 parametros= "datosBuscados"
22 /> 22 />
23 </div> 23 </div>
24 <div class="col-2 pl-0"> 24 <div class="col-2 pl-0">
25 <strong>Filtros: </strong> 25 <strong>Filtros: </strong>
26 <br> 26 <br>
27 <span>Fecha Desde</span> 27 <span>Fecha Desde</span>
28 <input 28 <input
29 type="text" 29 type="text"
30 readonly 30 readonly
31 ng-model="fechaDesde" 31 ng-model="fechaDesde"
32 class="form-control form-control-sm" 32 class="form-control form-control-sm"
33 uib-datepicker-popup="dd/MM/yyyy" 33 uib-datepicker-popup="dd/MM/yyyy"
34 show-button-bar="false" 34 show-button-bar="false"
35 is-open="fechaDesdeOpen" 35 is-open="fechaDesdeOpen"
36 on-open-focus="false" 36 on-open-focus="false"
37 ng-focus="fechaDesdeOpen = true" 37 ng-focus="fechaDesdeOpen = true"
38 ng-change="search()" 38 ng-change="search()"
39 /> 39 />
40 <span>Fecha Hasta</span> 40 <span>Fecha Hasta</span>
41 <input 41 <input
42 type="text" 42 type="text"
43 readonly 43 readonly
44 ng-model="fechaHasta" 44 ng-model="fechaHasta"
45 class="form-control form-control-sm" 45 class="form-control form-control-sm"
46 uib-datepicker-popup="dd/MM/yyyy" 46 uib-datepicker-popup="dd/MM/yyyy"
47 show-button-bar="false" 47 show-button-bar="false"
48 is-open="fechaHastaOpen" 48 is-open="fechaHastaOpen"
49 on-open-focus="false" 49 on-open-focus="false"
50 ng-focus="fechaHastaOpen = true" 50 ng-focus="fechaHastaOpen = true"
51 ng-change="search()" 51 ng-change="search()"
52 /> 52 />
53 <!-- TODO: descomentar cuando se quite definitivamente --> 53 <!-- TODO: descomentar cuando se quite definitivamente -->
54 <!-- <button 54 <!-- <button
55 type="button" 55 type="button"
56 ng-class="{'active': idVendedor == 0}" 56 ng-class="{'active': idVendedor == 0}"
57 class="btn col-12 my-1" 57 class="btn col-12 my-1"
58 ng-click="general()" 58 ng-click="general()"
59 >General</button> 59 >General</button>
60 <button 60 <button
61 type="button" 61 type="button"
62 ng-class="{'active': idVendedor != 0}" 62 ng-class="{'active': idVendedor != 0}"
63 class="btn col-12 my-1" 63 class="btn col-12 my-1"
64 ng-click="individual()" 64 ng-click="individual()"
65 >Individual</button> 65 >Individual</button>
66 <div class="form-group" ng-show="idVendedor == -1"> 66 <div class="form-group" ng-show="idVendedor == -1">
67 <input 67 <input
68 type="text" 68 type="text"
69 placeholder="Vendedor" 69 placeholder="Vendedor"
70 class="form-control" 70 class="form-control"
71 ng-model="idVendedorInput" 71 ng-model="idVendedorInput"
72 ng-keypress="search($event.keyCode)" 72 ng-keypress="search($event.keyCode)"
73 foca-focus="idVendedor == -1" 73 foca-focus="idVendedor == -1"
74 > 74 >
75 </div> --> 75 </div> -->
76 <div class="custom-control custom-radio"> 76 <div class="custom-control custom-radio">
77 <input 77 <input
78 type="radio" 78 type="radio"
79 class="custom-control-input" 79 class="custom-control-input"
80 id="idTodos" 80 id="idTodos"
81 name="filtro" 81 name="filtro"
82 ng-model="filtroEstado" 82 ng-model="filtroEstado"
83 ng-change="search()" 83 ng-change="search()"
84 checked> 84 checked>
85 <label class="custom-control-label pb-3" for="idTodos"></label> 85 <label class="custom-control-label pb-3" for="idTodos"></label>
86 <img src="img/marker-icon-grey.png"> 86 <img src="img/marker-icon-grey.png">
87 <strong>Todos</strong> 87 <strong>Todos</strong>
88 </div> 88 </div>
89 <div class="custom-control custom-radio"> 89 <div class="custom-control custom-radio">
90 <input 90 <input
91 type="radio" 91 type="radio"
92 class="custom-control-input" 92 class="custom-control-input"
93 id="idSinAsignar" 93 id="idSinAsignar"
94 name="filtro" 94 name="filtro"
95 ng-model="filtroEstado" 95 ng-model="filtroEstado"
96 ng-change="search()" 96 ng-change="search()"
97 ng-value="false"> 97 ng-value="false">
98 <label class="custom-control-label pb-3" for="idSinAsignar"></label> 98 <label class="custom-control-label pb-3" for="idSinAsignar"></label>
99 <img src="img/marker-icon-green.png"> 99 <img src="img/marker-icon-green.png">
100 <strong>Sin asignar</strong> 100 <strong>Sin asignar</strong>
101 </div> 101 </div>
102 <div class="custom-control custom-radio"> 102 <div class="custom-control custom-radio">
103 <input 103 <input
104 type="radio" 104 type="radio"
105 class="custom-control-input" 105 class="custom-control-input"
106 id="idAsignado" 106 id="idAsignado"
107 name="filtro" 107 name="filtro"
108 ng-model="filtroEstado" 108 ng-model="filtroEstado"
109 ng-change="search()" 109 ng-change="search()"
110 ng-value="true"> 110 ng-value="true">
111 <label class="custom-control-label pb-3" for="idAsignado"></label> 111 <label class="custom-control-label pb-3" for="idAsignado"></label>
112 <img src="img/marker-icon-red.png"> 112 <img src="img/marker-icon-red.png">
113 <strong>Asignado</strong> 113 <strong>Asignado</strong>
114 </div> 114 </div>
115 </div> 115 </div>
116 <div class="row"> 116 <div class="row">
117 <div 117 <div
118 class="container col-auto" 118 class="container col-auto"
119 ng-repeat="vehiculo in vehiculos" 119 ng-repeat="vehiculo in vehiculos"
120 ng-click="mostrarDetalleVehiculo(vehiculo)" 120 ng-click="mostrarDetalleVehiculo(vehiculo)"
121 > 121 >
122 <div> 122 <div>
123 <div class="col-md-3 col-sm-6"> 123 <div class="col-md-3 col-sm-6">
124 <div class="progress-circle" ng-class="{'arrastrando': arrastrando}"> 124 <div class="progress-circle" ng-class="{'arrastrando': arrastrando}">
125 <span class="progress-left"> 125 <span class="progress-left">
126 <span class="progress-bar"></span> 126 <span class="progress-bar"></span>
127 </span> 127 </span>
128 <span class="progress-right"> 128 <span class="progress-right">
129 <span class="progress-bar"></span> 129 <span class="progress-bar"></span>
130 </span> 130 </span>
131 <div class="progress-value">{{vehiculo.codigo}}</div> 131 <div class="progress-value">{{vehiculo.codigo}}</div>
132 </div> 132 </div>
133 </div> 133 </div>
134 <div class="row ml-2"> 134 <div class="row ml-2">
135 <div class="col-3 position-absolute"> 135 <div class="col-3 position-absolute">
136 <img 136 <img
137 src="img/hojaRutaVolante.png" 137 src="img/hojaRutaVolante.png"
138 width="100%"> 138 width="100%">
139 </div> 139 </div>
140 <div class="col-3" 140 <div class="col-3"
141 uib-tooltip="Confeccionar hoja de ruta" 141 uib-tooltip="Confirmar hoja de ruta"
142 ng-click="hacerHojaRuta(vehiculo)"></div> 142 ng-click="hacerHojaRuta(vehiculo)"></div>
143 <div class="col-3"> 143 <div class="col-3">
144 <i 144 <i
145 class="fa fa-eye fa-2x" 145 class="fa fa-eye fa-2x"
146 uib-tooltip="Ver cisternas" 146 uib-tooltip="Ver cisternas"
147 ng-click="cargar(vehiculo.id, -1)"> 147 ng-click="cargar(vehiculo.id, -1)">
148 </i> 148 </i>
149 </div> 149 </div>
150 <div class="col-3 ml-2"> 150 <div class="col-3 ml-2">
151 <i 151 <i
152 class="fa fa-trash fa-2x" 152 class="fa fa-trash fa-2x"
153 uib-tooltip="Eliminar vehiculo" 153 uib-tooltip="Eliminar vehiculo"
154 ng-click="quitarVehiculo(vehiculo)"></i> 154 ng-click="quitarVehiculo(vehiculo)"></i>
155 </div> 155 </div>
156 </div> 156 </div>
157 <div 157 <div
158 class="ml-1 border border-dark text-center" 158 class="ml-1 border border-dark text-center"
159 ng-show="arrastrando" 159 ng-show="arrastrando"
160 id="{{vehiculo.id}}" 160 id="{{vehiculo.id}}"
161 ondrop="drop(event)" 161 ondrop="drop(event)"
162 ondragover="allowDrop(event)" 162 ondragover="allowDrop(event)"
163 >Soltar acá</div> 163 >Soltar acá</div>
164 </div> 164 </div>
165 </div> 165 </div>
166 </div> 166 </div>
167 </div> 167 </div>
168 </div> 168 </div>
169 169
src/views/foca-modal-crear-hoja-ruta.html
1 <div class="modal-header"> 1 <div class="modal-header">
2 <h5>En desarrollo</h5> 2 <h5>En desarrollo</h5>
3 <h4>Confirmar hoja de ruta</h4> 3 <h4>Confirmar hoja de ruta</h4>
4 <div class="row"> 4 <div class="row">
5 <!-- <div class="col-6"> 5 <!-- <div class="col-6">
6 <span>Hoja de ruta Nº </span> 6 <span>Hoja de ruta Nº </span>
7 <strong ng-bind="[sucursal, numero] | comprobante"></strong> 7 <strong ng-bind="[sucursal, numero] | comprobante"></strong>
8 </div> --> 8 </div> -->
9 <div class="col-6 row"> 9 <div class="col-6 row">
10 <label class="col-3 mt-2">Fecha:</label> 10 <label class="col-3 mt-2">Fecha:</label>
11 <input 11 <input
12 type="text" 12 type="text"
13 readonly 13 readonly
14 ng-model="now" 14 ng-model="now"
15 uib-datepicker-popup="dd/MM/yyyy" 15 uib-datepicker-popup="dd/MM/yyyy"
16 show-button-bar="false" 16 show-button-bar="false"
17 is-open="datepickerOpen" 17 is-open="datepickerOpen"
18 on-open-focus="false" 18 on-open-focus="false"
19 ng-focus="datepickerOpen = true" 19 ng-focus="datepickerOpen = true"
20 datepicker-options="dateOptions" 20 datepicker-options="dateOptions"
21 class="form-control col-8"/> 21 class="form-control col-8"/>
22 </div> 22 </div>
23 </div> 23 </div>
24 </div> 24 </div>
25 <div class="modal-body"> 25 <div class="modal-body">
26 <form class="row" name="formHojaRuta"> 26 <form class="row" name="formHojaRuta">
27 27
28 <div class="col-2"> 28 <div class="col-2">
29 <label>Transportista</label> 29 <label>Transportista</label>
30 </div> 30 </div>
31 <div class="col-4"> 31 <div class="col-4">
32 <input 32 <input
33 class="form-control" 33 class="form-control"
34 readonly 34 readonly
35 ng-value="vehiculo.transportista.COD + ' ' + vehiculo.transportista.NOM" 35 ng-value="vehiculo.transportista.COD + ' ' + vehiculo.transportista.NOM"
36 > 36 >
37 </div> 37 </div>
38 <div class="col-2 form-group"> 38 <div class="col-2 form-group">
39 <label>Unidad</label> 39 <label>Unidad</label>
40 </div> 40 </div>
41 <div class="col-4"> 41 <div class="col-4">
42 <input 42 <input
43 class="form-control" 43 class="form-control"
44 readonly 44 readonly
45 ng-model="vehiculo.tractor" 45 ng-model="vehiculo.tractor"
46 > 46 >
47 </div> 47 </div>
48 </form> 48 </form>
49 <strong>Remitos:</strong> 49 <strong>Remitos:</strong>
50 <table class="table"> 50 <table class="table">
51 <thead> 51 <thead>
52 <tr> 52 <tr>
53 <th>Remito Nº</th> 53 <th>Remito Nº</th>
54 <th>Cliente</th> 54 <th>Cliente</th>
55 <th>Domicilio de entrega</th> 55 <th>Domicilio de entrega</th>
56 </tr> 56 </tr>
57 </thead> 57 </thead>
58 <tbody> 58 <tbody>
59 <tr ng-show="!remitos.length"> 59 <tr ng-show="!remitos.length">
60 <td colspan="3"> 60 <td colspan="3">
61 No se han encontrado remitos. 61 No se han encontrado remitos.
62 </td> 62 </td>
63 </tr> 63 </tr>
64 <tr ng-repeat="remito in remitos"> 64 <tr ng-repeat="remito in remitos">
65 <td ng-bind="[remito.sucursal, remito.numeroRemito] | comprobante"></td> 65 <td ng-bind="[remito.sucursal, remito.numeroRemito] | comprobante"></td>
66 <td ng-bind="remito.nombreCliente"></td> 66 <td ng-bind="remito.nombreCliente"></td>
67 <td ng-bind="remito.domicilioStamp"></td> 67 <td ng-bind="remito.domicilioStamp"></td>
68 <td> 68 <td>
69 <div class="custom-control custom-checkbox"> 69 <div class="custom-control custom-checkbox">
70 <input 70 <input
71 type="checkbox" 71 type="checkbox"
72 ng-model="remito.checked" 72 ng-model="remito.checked"
73 class="custom-control-input" 73 class="custom-control-input"
74 id="{{remito.id}}"> 74 id="{{remito.id}}">
75 <label class="custom-control-label" for="{{remito.id}}"></label> 75 <label class="custom-control-label" for="{{remito.id}}"></label>
76 </div> 76 </div>
77 </td> 77 </td>
78 </tr> 78 </tr>
79 </tbody> 79 </tbody>
80 </table> 80 </table>
81 </div> 81 </div>
82 <div class="modal-footer py-1"> 82 <div class="modal-footer py-1">
83 <button 83 <button
84 class="btn btn-sm btn-danger" 84 class="btn btn-sm btn-danger"
85 type="button" 85 type="button"
86 ng-click="eliminarRemitos()" 86 ng-click="eliminarRemitos()"
87 ng-disabled="minimoUnoChecked()">Eliminar</button> 87 ng-disabled="minimoUnoChecked()">Eliminar</button>
88 <button 88 <button
89 class="btn btn-sm btn-secondary" 89 class="btn btn-sm btn-secondary"
90 ladda="cargando" 90 ladda="cargando"
91 type="button" 91 type="button"
92 ng-click="cancelar()">Cancelar</button> 92 ng-click="cancelar()">Cancelar</button>
93 <button 93 <button
94 class="btn btn-sm btn-primary" 94 class="btn btn-sm btn-primary"
95 ladda="cargando" 95 ladda="cargando"
96 type="button" 96 type="button"
97 ng-disabled="!formHojaRuta.$valid || !remitos.length || true" 97 ng-disabled="!formHojaRuta.$valid || !remitos.length || true"
98 ng-click="aceptar()">Crear hoja ruta</button> 98 ng-click="aceptar()">Confirmar hoja ruta</button>
99 </div> 99 </div>
100 100