Commit a65d046f3d041086084592f008f3aefaac943633

Authored by Marcelo Puebla
1 parent d1f4e3a1e6
Exists in master

arreglo en responsividad.

src/js/controller.js
1 angular.module('focaHojaRuta') 1 angular.module('focaHojaRuta')
2 .controller('listaHojaRutaCtrl', 2 .controller('listaHojaRutaCtrl',
3 [ 3 [
4 '$scope', 4 '$scope', '$location', '$filter', '$uibModal', 'hojaRutaService',
5 '$location', 5 'focaLoginService', 'focaModalService', '$rootScope', '$localStorage',
6 '$filter', 6 function ($scope, $location, $filter, $uibModal, hojaRutaService,
7 '$uibModal', 7 focaLoginService, focaModalService, $rootScope, $localStorage) {
8 'hojaRutaService',
9 'focaLoginService',
10 'focaModalService',
11 '$rootScope',
12 '$localStorage',
13 function (
14 $scope,
15 $location,
16 $filter,
17 $uibModal,
18 hojaRutaService,
19 focaLoginService,
20 focaModalService,
21 $rootScope,
22 $localStorage
23 ) {
24 8
25 var loginData = focaLoginService.getLoginData(); 9 var loginData = focaLoginService.getLoginData();
26
27 config(); 10 config();
28 11 init();
29 function config() { 12 function config() {
30
31 $scope.cabecera = []; 13 $scope.cabecera = [];
32 $scope.showCabecera = true; 14 $scope.showCabecera = true;
33 $scope.now = new Date(); 15 $scope.now = new Date();
34 $scope.puntoVenta = '0000'; 16 $scope.puntoVenta = '0000';
35 $scope.comprobante = '00000000'; 17 $scope.comprobante = '00000000';
36 } 18 }
37 19 function init() {
38 hojaRutaService.getHojaRuta(loginData.chofer).then(function (res) { 20 hojaRutaService.getHojaRuta(loginData.chofer)
39 21 .then(function (res) {
40 if (res.data) { 22 if (res.data) {
41 var hojaRuta = res.data; 23 var hojaRuta = res.data;
42 $scope.hojaRuta = hojaRuta; 24 $scope.hojaRuta = hojaRuta;
43 $scope.puntoVenta = hojaRuta.sucursal; 25 $scope.puntoVenta = hojaRuta.sucursal;
44 $scope.comprobante = hojaRuta.numeroHojaRuta; 26 $scope.comprobante = hojaRuta.numeroHojaRuta;
45 addCabecera('Transportista:', hojaRuta.transportista.NOM); 27 addCabecera('Transportista:', hojaRuta.transportista.NOM);
46 addCabecera('Chofer:', hojaRuta.chofer.nombre); 28 addCabecera('Chofer:', hojaRuta.chofer.nombre);
47 addCabecera('Vehículo:', hojaRuta.vehiculo.tractor); 29 addCabecera('Vehículo:', hojaRuta.vehiculo.tractor);
48 } else { 30 } else {
49 focaModalService.alert('Sin hoja de ruta asignada'); 31 focaModalService.alert('Sin hoja de ruta asignada');
50 $location.path('/'); 32 $location.path('/');
51 } 33 }
52 34 watch();
53 watch(); 35 if (!$scope.estadoRed) {
54 36 getLSHojaRuta();
55 if (!$scope.estadoRed) { 37 }
56 getLSHojaRuta(); 38 });
57 } 39 }
58
59
60 });
61
62 function watch() { 40 function watch() {
63
64 $scope.$watch('hojaRuta', function (nuevoValor) { 41 $scope.$watch('hojaRuta', function (nuevoValor) {
65 $localStorage.hojaRuta = JSON.stringify(nuevoValor); 42 $localStorage.hojaRuta = JSON.stringify(nuevoValor);
66 }, true); 43 }, true);
67 } 44 }
68
69 $scope.verDetalle = function (remito) { 45 $scope.verDetalle = function (remito) {
70 var modalInstance = $uibModal.open( 46 var modalInstance = $uibModal.open(
71 { 47 {
72 ariaLabelledBy: 'Detalle hoja ruta', 48 ariaLabelledBy: 'Detalle hoja ruta',
73 templateUrl: 'modal-detalle-hoja-ruta.html', 49 templateUrl: 'modal-detalle-hoja-ruta.html',
74 controller: 'focaModalDetalleHojaRutaController', 50 controller: 'focaModalDetalleHojaRutaController',
75 resolve: { 51 resolve: {
76 parametros: { 52 parametros: {
77 remito: remito, 53 remito: remito,
78 } 54 }
79 }, 55 },
80 size: 'lg' 56 size: 'lg'
81 } 57 }
82 ); 58 );
83 modalInstance.result.then(function () { 59 modalInstance.result
84 //funcion se ejecuta cuando se carga pantalla 60 .then(function (data) {
85 }); 61 //funcion se ejecuta cuando se carga pantalla
62 console.log(data);
63 })
64 .catch(function (e) { console.info(e); });
86 }; 65 };
87
88 function addCabecera(label, valor) {
89 var propiedad = $filter('filter')($scope.cabecera, { label: label }, true);
90 if (propiedad.length === 1) {
91 propiedad[0].valor = valor;
92 } else {
93 $scope.cabecera.push({ label: label, valor: valor });
94 }
95 }
96
97 $scope.rellenar = function (relleno, longitud) { 66 $scope.rellenar = function (relleno, longitud) {
98 relleno = '' + relleno; 67 relleno = '' + relleno;
99 while (relleno.length < longitud) { 68 while (relleno.length < longitud) {
100 relleno = '0' + relleno; 69 relleno = '0' + relleno;
101 } 70 }
102 71
103 return relleno; 72 return relleno;
104 }; 73 };
105
106 $scope.salir = function () { 74 $scope.salir = function () {
107 $location.path('/'); 75 $location.path('/');
108 }; 76 };
109
110 $scope.terminarHojaRuta = function () { 77 $scope.terminarHojaRuta = function () {
111 focaModalService 78 focaModalService
112 .confirm('¿Desea terminar la hoja de ruta? No podra realizar ninguna ' + 79 .confirm('¿Desea terminar la hoja de ruta? No podra realizar ninguna ' +
113 'otra descarga ni modificación') 80 'otra descarga ni modificación')
114 .then(function () { $scope.datosExtraCierre(terminar); }); 81 .then(function () { $scope.datosExtraCierre(terminar); });
115 function terminar(datosExtraCierre) { 82 function terminar(datosExtraCierre) {
116 $scope.hojaRuta = angular.extend({}, $scope.hojaRuta, datosExtraCierre); 83 $scope.hojaRuta = angular.extend({}, $scope.hojaRuta, datosExtraCierre);
117 //limpio objeto para guardar 84 //limpio objeto para guardar
118 delete $scope.hojaRuta.chofer; 85 delete $scope.hojaRuta.chofer;
119 delete $scope.hojaRuta.remitos; 86 delete $scope.hojaRuta.remitos;
120 delete $scope.hojaRuta.transportista; 87 delete $scope.hojaRuta.transportista;
121 delete $scope.hojaRuta.vehiculo; 88 delete $scope.hojaRuta.vehiculo;
122 89
123 $scope.hojaRuta.fechaCreacion = 90 $scope.hojaRuta.fechaCreacion =
124 $scope.hojaRuta.fechaCreacion.slice(0, 19).replace('T', ' '); 91 $scope.hojaRuta.fechaCreacion.slice(0, 19).replace('T', ' ');
125 $scope.hojaRuta.fechaReparto = 92 $scope.hojaRuta.fechaReparto =
126 $scope.hojaRuta.fechaReparto.slice(0, 19).replace('T', ' '); 93 $scope.hojaRuta.fechaReparto.slice(0, 19).replace('T', ' ');
127 $scope.hojaRuta.estado = 2; 94 $scope.hojaRuta.estado = 2;
128 hojaRutaService.terminarHojaRuta($scope.hojaRuta).then( 95 hojaRutaService.terminarHojaRuta($scope.hojaRuta).then(
129 function () { 96 function () {
130 focaModalService.alert( 97 focaModalService.alert(
131 'Hoja de ruta ' + 98 'Hoja de ruta ' +
132 $filter('comprobante')([$scope.puntoVenta, 99 $filter('comprobante')([$scope.puntoVenta,
133 $scope.comprobante]) + ' cerrada con éxito'); 100 $scope.comprobante]) + ' cerrada con éxito');
134 $location.path('/'); 101 $location.path('/');
135 } 102 }
136 ); 103 );
137 } 104 }
138 }; 105 };
139
140 $scope.datosExtraCierre = function (terminar) { 106 $scope.datosExtraCierre = function (terminar) {
141 var modalInstance = $uibModal.open( 107 var modalInstance = $uibModal.open(
142 { 108 {
143 templateUrl: 'focaDatosExtra.html', 109 templateUrl: 'focaDatosExtra.html',
144 controller: 'focaModalDatosExtraCierre', 110 controller: 'focaModalDatosExtraCierre',
145 } 111 }
146 ); 112 );
147 modalInstance.result.then(terminar); 113 modalInstance.result.then(terminar);
148 }; 114 };
149
150 $scope.modalDescargas = function () { 115 $scope.modalDescargas = function () {
151 delete $scope.hojaRuta.remitos[0].cliente; 116 delete $scope.hojaRuta.remitos[0].cliente;
152 var remito = $scope.hojaRuta.remitos[0]; 117 var remito = $scope.hojaRuta.remitos[0];
153 var msg = ''; 118 var msg = '';
154 var mostrarMensaje = true; 119 var mostrarMensaje = true;
155 for (var i = 0; i < remito.cisternas.length; i++) { 120 for (var i = 0; i < remito.cisternas.length; i++) {
156 if (remito.cisternas[i].cisternaCarga.cantidad <= 0) 121 if (remito.cisternas[i].cisternaCarga.cantidad <= 0)
157 msg += 'Cisterna ' + remito.cisternas[i].cisternaCarga.articulo.DetArt + 122 msg += 'Cisterna ' + remito.cisternas[i].cisternaCarga.articulo.DetArt +
158 ' esta vacía.\n'; 123 ' esta vacía.\n';
159 else 124 else
160 mostrarMensaje = false; 125 mostrarMensaje = false;
161
162 } 126 }
163 if (mostrarMensaje === true) { 127 if (mostrarMensaje === true) {
164 focaModalService.alert(msg); 128 focaModalService.alert(msg);
165 return; 129 return;
166 } 130 }
167 var modalInstance = $uibModal.open( 131 var modalInstance = $uibModal.open(
168 { 132 {
169 templateUrl: 'foca-modal-descarga.html', 133 templateUrl: 'foca-modal-descarga.html',
170 controller: 'focaModalDescargaCtrl', 134 controller: 'focaModalDescargaCtrl',
171 resolve: { 135 resolve: {
172 remito: function () { return remito; } 136 remito: function () { return remito; }
173 }, 137 },
174 } 138 }
175 ); 139 );
176
177 modalInstance.result.then(function (data) { 140 modalInstance.result.then(function (data) {
178
179 console.log(data); 141 console.log(data);
180 }); 142 });
181 }; 143 };
182
183 $rootScope.$on('estadoRed', function (event, value) { 144 $rootScope.$on('estadoRed', function (event, value) {
184 $scope.estadoRed = value; 145 $scope.estadoRed = value;
185 }); 146 });
186 147 function addCabecera(label, valor) {
148 var propiedad = $filter('filter')($scope.cabecera, { label: label }, true);
149 if (propiedad.length === 1) {
150 propiedad[0].valor = valor;
151 } else {
152 $scope.cabecera.push({ label: label, valor: valor });
153 }
154 }
187 function getLSHojaRuta() { 155 function getLSHojaRuta() {
188 156
189 var hojaRuta = JSON.parse($localStorage.hojaRuta || null); 157 var hojaRuta = JSON.parse($localStorage.hojaRuta || null);
src/views/lista-hoja-ruta.html
1 <div> 1 <div class="row mx-0">
2 <div class="col-md-10 offset-md-1 col-lg-8 offset-lg-2"> 2 <div class="col-md-10 offset-md-1 col-lg-8 offset-lg-2">
3 <div class="row p-1 panel-informativo"> 3 <div class="row p-1 panel-informativo">
4 <div class="col-12"> 4 <div class="col-12">
5 <div class="row"> 5 <div class="row">
6 <div class="col-12 col-sm-4 nota-pedido"> 6 <div class="col-12 col-sm-4 nota-pedido">
7 <h5>Hojas de ruta</h5> 7 <h5>Hojas de ruta</h5>
8 </div> 8 </div>
9 <div class="col-5 col-sm-4 numero-pedido"> 9 <div class="col-5 col-sm-4 numero-pedido">
10 Nº <span ng-bind="[puntoVenta, comprobante] | comprobante"></span> 10 Nº <span ng-bind="[puntoVenta, comprobante] | comprobante"></span>
11 </div> 11 </div>
12 <div class="col-7 col-sm-4 text-right"> 12 <div class="col-7 col-sm-4 text-right">
13 Fecha: 13 Fecha:
14 <span 14 <span
15 ng-show="!datepickerAbierto" 15 ng-show="!datepickerAbierto"
16 ng-bind="now | date:'dd/MM/yyyy HH:mm'" 16 ng-bind="now | date:'dd/MM/yyyy HH:mm'"
17 ng-click="datepickerAbierto = true" 17 ng-click="datepickerAbierto = true"
18 > 18 >
19 </span> 19 </span>
20 <input 20 <input
21 ng-show="datepickerAbierto" 21 ng-show="datepickerAbierto"
22 type="date" 22 type="date"
23 ng-model="now" 23 ng-model="now"
24 ng-change="datepickerAbierto = false" 24 ng-change="datepickerAbierto = false"
25 ng-blur="datepickerAbierto = false" 25 ng-blur="datepickerAbierto = false"
26 class="form-control form-control-sm col-8 float-right" 26 class="form-control form-control-sm col-8 float-right"
27 foca-focus="datepickerAbierto" 27 foca-focus="datepickerAbierto"
28 hasta-hoy 28 hasta-hoy
29 /> 29 />
30 </div> 30 </div>
31 </div> 31 </div>
32 <div class="row"> 32 <div class="row">
33 <div class="col-auto" ng-repeat="cab in cabecera" ng-show="showCabecera"> 33 <div class="col-auto" ng-repeat="cab in cabecera" ng-show="showCabecera">
34 <span class="label" ng-bind="cab.label"></span> 34 <span class="label" ng-bind="cab.label"></span>
35 <span class="valor" ng-bind="cab.valor"></span> 35 <span class="valor" ng-bind="cab.valor"></span>
36 </div> 36 </div>
37 </div> 37 </div>
38 </div> 38 </div>
39 </div> 39 </div>
40 <div class="row p-1 botonera-secundaria"> 40 <div class="row p-1 botonera-secundaria">
41 <div class="col-12"> 41 <div class="col-12">
42 <div class="row"> 42 <div class="row">
43 <div class="col-6 col-sm-3 px-0 py-0" ng-repeat="boton in botonera"> 43 <div class="col-6 col-sm-3 px-0 py-0" ng-repeat="boton in botonera">
44 <button 44 <button
45 type="button" 45 type="button"
46 class="btn btn-default btn-block btn-xs text-left py-2" 46 class="btn btn-default btn-block btn-xs text-left py-2"
47 ng-click="boton.accion()" 47 ng-click="boton.accion()"
48 ng-class="{'d-none d-sm-block': boton.texto == ''}" 48 ng-class="{'d-none d-sm-block': boton.texto == ''}"
49 > 49 >
50 <i 50 <i
51 class="fa fa-arrow-circle-right" 51 class="fa fa-arrow-circle-right"
52 ng-show="boton.texto != ''" 52 ng-show="boton.texto != ''"
53 ></i> 53 ></i>
54 &nbsp; 54 &nbsp;
55 {{boton.texto}} 55 {{boton.texto}}
56 </button> 56 </button>
57 </div> 57 </div>
58 </div> 58 </div>
59 </div> 59 </div>
60 </div> 60 </div>
61 </div> 61 </div>
62 <div class="col-12 col-md-10 col-lg-8 offset-md-1 offset-lg-2"> 62 <div class="col-12 col-md-10 col-lg-8 offset-md-1 offset-lg-2 mb-5">
63 <div class="row grilla-articulo"> 63 <div ng-hide="hojaRuta.abierta" class="row">
64 <table ng-hide="hojaRuta.abierta" class="table table-responsive table-striped table-sm table-dark"> 64 <div class="col p-0">
65 <thead> 65 <table class="table table-striped table-sm table-dark">
66 <tr> 66 <thead>
67 <th>#</th> 67 <tr>
68 <th>Número</th> 68 <th class="align-middle">#</th>
69 <th>Razon Social</th> 69 <th class="align-middle">Número</th>
70 <th>Domicilio</th> 70 <th class="align-middle">Razon Social</th>
71 <th>&nbsp;</th> 71 <th class="align-middle" colspan="2">Domicilio</th>
72 </tr> 72 </tr>
73 </thead> 73 </thead>
74 <tbody class="tabla-articulo-body"> 74 <tbody class="tabla-articulo-body">
75 <tr 75 <tr
76 ng-repeat="(key, remito) in hojaRuta.remitos" 76 ng-repeat="(key, remito) in hojaRuta.remitos"
77 > 77 >
78 <td ng-bind="key + 1"></td> 78 <td class="align-middle" ng-bind="key + 1"></td>
79 <td 79 <td
80 ng-bind="[remito.sucursal, remito.numeroRemito] | comprobante" 80 class="align-middle"
81 ></td> 81 ng-bind="[remito.sucursal, remito.numeroRemito] | comprobante"
82 <td ng-bind="remito.nombreCliente"></td> 82 ></td>
83 <td ng-bind="remito.domicilioStamp"></td> 83 <td class="align-middle" ng-bind="remito.nombreCliente"></td>
84 <td> 84 <td class="align-middle" ng-bind="remito.domicilioStamp"></td>
85 <button 85 <td class="align-middle">
86 class="btn btn-secondary" 86 <div class="btn-group-vertical">
87 type="button" 87 <button
88 ng-click="verDetalle(remito)" 88 class="btn btn-secondary my-1 rounded"
89 ><i class="fa fa-search" aria-hidden="true"></i> 89 type="button"
90 </button> 90 ng-click="verDetalle(remito)">
91 </td> 91 <i class="fa fa-search" aria-hidden="true"></i>
92 </tr> 92 </button>
93 </tbody> 93 <button
94 </table> 94 class="btn btn-secondary my-1 rounded"
95 type="button">
96 <i class="fa fa-check fa-lg text-success" aria-hidden="true"></i>
97 </button>
98 <button
99 ng-show="remito.rechazado"
100 class="btn btn-secondary my-1 rounded"
101 type="button">
102 <i class="fa fa-remove fa-lg text-danger" aria-hidden="true"></i>
103 </button>
104 </div>
105 </td>
106 </tr>
107 </tbody>
108 </table>
109 </div>
95 </div> 110 </div>
96 <div ng-show="hojaRuta.abierta" class="row grilla-articulo"> 111 <div ng-show="hojaRuta.abierta" class="row grilla-articulo">
97 <table class="table table-striped table-sm table-dark"> 112 <div class="col p-0">
98 <thead> 113 <table class="table table-striped table-sm table-dark">
99 <tr> 114 <thead>
100 <th colspan="3" class="text-center">Remito abierto Nº 115 <tr>
101 {{[hojaRuta.remitos[0].sucursal, hojaRuta.remitos[0].numeroRemito] | comprobante}} 116 <th colspan="3" class="text-center">Remito abierto Nº
102 </th> 117 {{[hojaRuta.remitos[0].sucursal, hojaRuta.remitos[0].numeroRemito] | comprobante}}
103 </tr> 118 </th>
104 <tr> 119 </tr>
105 <th>Cisterna</th> 120 <tr>
106 <th>Producto</th> 121 <th>Cisterna</th>
107 <th>Disponibles</th> 122 <th>Producto</th>
108 </tr> 123 <th>Disponibles</th>
109 </thead> 124 </tr>
110 <tbody> 125 </thead>
111 <tr ng-repeat="cisterna in hojaRuta.remitos[0].cisternas"> 126 <tbody>
112 <td ng-bind="cisterna.codigo"></td> 127 <tr ng-repeat="cisterna in hojaRuta.remitos[0].cisternas">
113 <td ng-bind="cisterna.cisternaCarga.articulo.DetArt"></td> 128 <td ng-bind="cisterna.codigo"></td>
114 <td ng-bind="cisterna.cisternaCarga.cantidad"></td> 129 <td ng-bind="cisterna.cisternaCarga.articulo.DetArt"></td>
115 </tr> 130 <td ng-bind="cisterna.cisternaCarga.cantidad"></td>
116 </tbody> 131 </tr>
117 </table> 132 </tbody>
133 </table>
134 </div>
118 <table class="table table-striped table-sm table-dark"> 135 <table class="table table-striped table-sm table-dark">
119 <thead> 136 <thead>
120 <tr> 137 <tr>
121 <th>Descarga en cliente</th> 138 <th>Descarga en cliente</th>
122 <th> 139 <th>
123 <button class="btn btn-outline-debo" ng-click="modalDescargas()"> 140 <button class="btn btn-outline-debo" ng-click="modalDescargas()">
124 <i class="fa fa-plus"></i> 141 <i class="fa fa-plus"></i>
125 </button> 142 </button>
126 </th> 143 </th>
127 </tr> 144 </tr>
128 <tr></tr> 145 <tr></tr>
129 </thead> 146 </thead>
130 <tbody> 147 <tbody>
131 <tr ng-repeat="remito in remitos"></tr> 148 <tr ng-repeat="remito in remitos"></tr>
132 </tbody> 149 </tbody>
133 </table> 150 </table>
134 </div> 151 </div>
135 </div> 152 </div>
136 <div class="row d-md-none fixed-bottom"> 153 <div class="row d-md-none fixed-bottom">
137 <div class="w-100 bg-dark d-flex px-3 acciones-mobile"> 154 <div class="w-100 bg-dark d-flex px-3 acciones-mobile">
138 <span class="ml-3 text-muted" ng-click="salir()">Salir</span> 155 <span class="ml-3 text-muted" ng-click="salir()">Salir</span>
139 <span 156 <span
140 class="mr-3 ml-auto" 157 class="mr-3 ml-auto"
141 ng-click="terminarHojaRuta()" 158 ng-click="terminarHojaRuta()"
142 ladda="saveLoading" 159 ladda="saveLoading"
143 data-style="expand-left" 160 data-style="expand-left"
144 >Terminar</span> 161 >Terminar</span>
145 </div> 162 </div>
146 </div> 163 </div>
147 </div> 164 </div>
148 165