Commit c3e03fa155abaace284afa01dca01f75a4ac3223
Exists in
master
Merge branch 'develop' into 'master'
Develop See merge request !7
Showing
5 changed files
Show diff stats
src/js/controller-general-unidad.js
| 1 | angular.module('focaModalInforme') | 1 | angular.module('focaModalInforme') |
| 2 | .controller('focaModalInformeGeneralUnidadController', | 2 | .controller('focaModalInformeGeneralUnidadController', |
| 3 | [ | 3 | [ |
| 4 | '$filter', | 4 | '$filter', |
| 5 | '$scope', | 5 | '$scope', |
| 6 | '$uibModalInstance', | 6 | '$uibModalInstance', |
| 7 | 'focaModalInformeGeneralUnidadService', | 7 | 'focaModalInformeGeneralUnidadService', |
| 8 | 'i18nService', | 8 | 'i18nService', |
| 9 | 'focaModalService', | 9 | 'focaModalService', |
| 10 | function($filter, $scope, $uibModalInstance, | 10 | function($filter, $scope, $uibModalInstance, |
| 11 | focaModalInformeGeneralUnidadService, i18nService, focaModalService | 11 | focaModalInformeGeneralUnidadService, i18nService, focaModalService |
| 12 | ) { | 12 | ) { |
| 13 | i18nService.setCurrentLang('es'); | 13 | i18nService.setCurrentLang('es'); |
| 14 | var fecha = new Date(); | 14 | var fecha = new Date(); |
| 15 | $scope.generando = false; | 15 | $scope.generando = false; |
| 16 | $scope.buscar = true; | 16 | $scope.buscar = true; |
| 17 | $scope.informe = {}; | 17 | $scope.informe = {}; |
| 18 | $scope.params = { | 18 | $scope.params = { |
| 19 | fechaHasta: new Date(), | 19 | fechaHasta: new Date(), |
| 20 | fechaDesde: new Date(fecha.setMonth(fecha.getMonth() - 1)), | 20 | fechaDesde: new Date(fecha.setMonth(fecha.getMonth() - 1)), |
| 21 | sector: undefined, | 21 | sector: undefined, |
| 22 | diferenciarProductos: false, | 22 | diferenciarProductos: false, |
| 23 | diferenciarMeses: false | 23 | diferenciarMeses: false |
| 24 | }; | 24 | }; |
| 25 | $scope.gridOptions = { | 25 | $scope.gridOptions = { |
| 26 | enableGridMenu: true, | 26 | enableGridMenu: true, |
| 27 | exporterMenuCsv: false, | 27 | exporterMenuCsv: false, |
| 28 | exporterPdfPageSize: 'A4', | 28 | exporterPdfPageSize: 'A4', |
| 29 | exporterPdfFooter: function (currentPage, pageCount) { | 29 | exporterPdfFooter: function (currentPage, pageCount) { |
| 30 | return { | 30 | return { |
| 31 | columns: [ | 31 | columns: [ |
| 32 | {text: $filter('date')(new Date(), 'dd/MM/yyyy'), | 32 | {text: $filter('date')(new Date(), 'dd/MM/yyyy'), |
| 33 | margin: [40, 0]}, | 33 | margin: [40, 0]}, |
| 34 | {text: currentPage + ' de ' + pageCount, | 34 | {text: currentPage + ' de ' + pageCount, |
| 35 | margin: [28, 0], alignment: 'right'} | 35 | margin: [28, 0], alignment: 'right'} |
| 36 | ] | 36 | ] |
| 37 | }; | 37 | }; |
| 38 | }, | 38 | }, |
| 39 | columnDefs: [ | 39 | columnDefs: [ |
| 40 | { | 40 | { |
| 41 | field: 'vehiculo', | 41 | field: 'vehiculo', |
| 42 | enableSorting: false, | 42 | enableSorting: false, |
| 43 | cellClass: function(grid, row, col) { | 43 | cellClass: function(grid, row, col) { |
| 44 | if (grid.getCellValue(row,col).indexOf('Sector:') !== -1) | 44 | if (grid.getCellValue(row,col).indexOf('Sector:') !== -1) |
| 45 | return 'yellow w-100'; | 45 | return 'yellow w-100'; |
| 46 | if (grid.getCellValue(row,col).indexOf('Producto:') !== -1) | 46 | if (grid.getCellValue(row,col).indexOf('Producto:') !== -1) |
| 47 | return 'red w-100'; | 47 | return 'red w-100'; |
| 48 | if (grid.getCellValue(row,col).indexOf('Fecha:') !== -1) | 48 | if (grid.getCellValue(row,col).indexOf('Fecha:') !== -1) |
| 49 | return 'green w-100'; | 49 | return 'green w-100'; |
| 50 | } | 50 | } |
| 51 | }, | 51 | }, |
| 52 | { | 52 | { |
| 53 | field: 'kmRecorridos', | 53 | field: 'kmRecorridos', |
| 54 | enableSorting: false, | 54 | enableSorting: false, |
| 55 | cellClass: function(grid, row, col) { | 55 | cellClass: function(grid, row, col) { |
| 56 | if (!grid.getCellValue(row,col)) | 56 | if (!grid.getCellValue(row,col)) |
| 57 | return 'd-none'; | 57 | return 'd-none'; |
| 58 | } | 58 | } |
| 59 | }, | 59 | }, |
| 60 | { | 60 | { |
| 61 | field: 'litrosRepartidos', | 61 | field: 'litrosRepartidos', |
| 62 | enableSorting: false, | 62 | enableSorting: false, |
| 63 | cellClass: function(grid, row, col) { | 63 | cellClass: function(grid, row, col) { |
| 64 | if (!grid.getCellValue(row,col)) | 64 | if (!grid.getCellValue(row,col)) |
| 65 | return 'd-none'; | 65 | return 'd-none'; |
| 66 | } | 66 | } |
| 67 | }, | 67 | }, |
| 68 | { | 68 | { |
| 69 | field: 'viajes', | 69 | field: 'viajes', |
| 70 | enableSorting: false, | 70 | enableSorting: false, |
| 71 | cellClass: function(grid, row, col) { | 71 | cellClass: function(grid, row, col) { |
| 72 | if (!grid.getCellValue(row,col)) | 72 | if (!grid.getCellValue(row,col)) |
| 73 | return 'd-none'; | 73 | return 'd-none'; |
| 74 | } | 74 | } |
| 75 | } | 75 | } |
| 76 | ] | 76 | ] |
| 77 | }; | 77 | }; |
| 78 | $scope.generarInforme = function() { | 78 | $scope.generarInforme = function() { |
| 79 | $scope.generando = true; | 79 | $scope.generando = true; |
| 80 | focaModalInformeGeneralUnidadService | 80 | focaModalInformeGeneralUnidadService |
| 81 | .getInformeData($scope.params) | 81 | .getInformeData($scope.params) |
| 82 | .then(function(res) { | 82 | .then(function(res) { |
| 83 | var result = []; | 83 | var result = []; |
| 84 | 84 | ||
| 85 | res.data.forEach(function(sector) { | 85 | res.data.forEach(function(sector) { |
| 86 | if (!$scope.params.sector || | 86 | if (!$scope.params.sector || |
| 87 | $scope.params.sector.ID === sector.idSector) { | 87 | $scope.params.sector.ID === sector.idSector) { |
| 88 | //AGREGO SECTORES | 88 | //AGREGO SECTORES |
| 89 | result.push({ | 89 | result.push({ |
| 90 | vehiculo: 'Sector: ' + | 90 | vehiculo: 'Sector: ' + |
| 91 | $filter('rellenarDigitos')(sector.idSector, 2, '0') + | 91 | $filter('rellenarDigitos')(sector.idSector, 2, '0') + |
| 92 | ' - ' + sector.sector.trim() | 92 | ' - ' + sector.sector.trim() |
| 93 | }); | 93 | }); |
| 94 | if (!$scope.params.diferenciarProductos) | 94 | if (!$scope.params.diferenciarProductos) |
| 95 | sector.productos = unirProductos(sector.productos); | 95 | sector.productos = unirProductos(sector.productos); |
| 96 | 96 | ||
| 97 | sector.productos.forEach(function(producto) { | 97 | sector.productos.forEach(function(producto) { |
| 98 | //AGREGO PRODUCTOS | 98 | //AGREGO PRODUCTOS |
| 99 | if ($scope.params.diferenciarProductos){ | 99 | if ($scope.params.diferenciarProductos){ |
| 100 | result.push({ | 100 | result.push({ |
| 101 | vehiculo: 'Producto: ' + | 101 | vehiculo: 'Producto: ' + |
| 102 | producto.idProducto + | 102 | producto.idProducto + |
| 103 | ' - ' + producto.producto | 103 | ' - ' + producto.producto |
| 104 | }); | 104 | }); |
| 105 | } | 105 | } |
| 106 | if (!$scope.params.diferenciarMeses) { | 106 | if (!$scope.params.diferenciarMeses) { |
| 107 | producto.fechas = unirFechas(producto.fechas); | 107 | producto.fechas = unirFechas(producto.fechas); |
| 108 | } | 108 | } |
| 109 | producto.fechas.forEach(function(fecha) { | 109 | producto.fechas.forEach(function(fecha) { |
| 110 | //AGREGO FECHAS | 110 | //AGREGO FECHAS |
| 111 | if ($scope.params.diferenciarMeses) { | 111 | if ($scope.params.diferenciarMeses) { |
| 112 | result.push({ | 112 | result.push({ |
| 113 | vehiculo: | 113 | vehiculo: |
| 114 | 'Fecha: ' + fecha.month + ' - ' + fecha.year | 114 | 'Fecha: ' + fecha.month + ' - ' + fecha.year |
| 115 | }); | 115 | }); |
| 116 | } else { | 116 | } else { |
| 117 | result.push({ | 117 | result.push({ |
| 118 | vehiculo: | 118 | vehiculo: |
| 119 | 'Fecha: ' + fecha.year | 119 | 'Fecha: ' + fecha.year |
| 120 | }); | 120 | }); |
| 121 | } | 121 | } |
| 122 | fecha.vehiculos.forEach(function(vehiculo) { | 122 | fecha.vehiculos.forEach(function(vehiculo) { |
| 123 | //AGREGO VEHICULOS | 123 | //AGREGO VEHICULOS |
| 124 | result.push({ | 124 | result.push({ |
| 125 | vehiculo: vehiculo.vehiculo, | 125 | vehiculo: vehiculo.vehiculo, |
| 126 | kmRecorridos: | 126 | kmRecorridos: |
| 127 | $filter('number')(vehiculo.data.kms, 2), | 127 | $filter('number')(vehiculo.data.kms, 2), |
| 128 | litrosRepartidos: | 128 | litrosRepartidos: |
| 129 | $filter('number')(vehiculo.data.lts, 2), | 129 | $filter('number')(vehiculo.data.lts, 2), |
| 130 | viajes: | 130 | viajes: |
| 131 | $filter('number')(vehiculo.data.viajes, 0) | 131 | $filter('number')(vehiculo.data.viajes, 0) |
| 132 | }); | 132 | }); |
| 133 | }); | 133 | }); |
| 134 | }); | 134 | }); |
| 135 | }); | 135 | }); |
| 136 | } | 136 | } |
| 137 | }); | 137 | }); |
| 138 | 138 | ||
| 139 | $scope.gridOptions.data = result; | 139 | $scope.gridOptions.data = result; |
| 140 | $scope.generando = false; | 140 | $scope.generando = false; |
| 141 | $scope.buscar = false; | 141 | $scope.buscar = false; |
| 142 | }); | 142 | }); |
| 143 | }; | 143 | }; |
| 144 | 144 | ||
| 145 | $scope.seleccionarSector = function(key) { | 145 | $scope.seleccionarSector = function(key) { |
| 146 | if (key === 13) { | 146 | if (key === 13) { |
| 147 | var parametrosModal = { | 147 | var parametrosModal = { |
| 148 | titulo: 'Búsqueda de Sector', | 148 | titulo: 'Búsqueda de Sector', |
| 149 | searchText: $scope.params.sector.NOMBRE, | ||
| 149 | query: '/sector', | 150 | query: '/sector', |
| 150 | columnas: [ | 151 | columnas: [ |
| 151 | { | 152 | { |
| 152 | nombre: 'Código', | 153 | nombre: 'Código', |
| 153 | propiedad: 'ID' | 154 | propiedad: 'ID' |
| 154 | }, | 155 | }, |
| 155 | { | 156 | { |
| 156 | nombre: 'Nombre', | 157 | nombre: 'Nombre', |
| 157 | propiedad: 'NOMBRE' | 158 | propiedad: 'NOMBRE' |
| 158 | } | 159 | } |
| 159 | ], | 160 | ], |
| 160 | size: 'md' | 161 | size: 'md' |
| 161 | }; | 162 | }; |
| 162 | focaModalService.modal(parametrosModal).then( | 163 | focaModalService.modal(parametrosModal).then( |
| 163 | function(sector) { | 164 | function(sector) { |
| 164 | $scope.params.sector = sector; | 165 | $scope.params.sector = sector; |
| 165 | }, function() {} | 166 | }, function() {} |
| 166 | ); | 167 | ); |
| 167 | } | 168 | } |
| 168 | }; | 169 | }; |
| 169 | $scope.volver = function() { | 170 | $scope.volver = function() { |
| 170 | $scope.buscar = true; | 171 | $scope.buscar = true; |
| 171 | }; | 172 | }; |
| 172 | $scope.cancel = function() { | 173 | $scope.cancel = function() { |
| 173 | $uibModalInstance.dismiss('Cancelar'); | 174 | $uibModalInstance.dismiss('Cancelar'); |
| 174 | }; | 175 | }; |
| 175 | $scope.clearSector = function() { | 176 | $scope.clearSector = function() { |
| 176 | $scope.params.sector = undefined; | 177 | $scope.params.sector = undefined; |
| 177 | }; | 178 | }; |
| 178 | 179 | ||
| 179 | function unirProductos(productos) { | 180 | function unirProductos(productos) { |
| 180 | var result = [{fechas: []}]; | 181 | var result = [{fechas: []}]; |
| 181 | productos.forEach(function(producto) { | 182 | productos.forEach(function(producto) { |
| 182 | producto.fechas.forEach(function(fecha) { | 183 | producto.fechas.forEach(function(fecha) { |
| 183 | var existe = result[0].fechas.filter(function(result) { | 184 | var existe = result[0].fechas.filter(function(result) { |
| 184 | return result.fecha === fecha.fecha; | 185 | return result.fecha === fecha.fecha; |
| 185 | }); | 186 | }); |
| 186 | if (existe.length) { | 187 | if (existe.length) { |
| 187 | existe[0].vehiculos = existe[0].vehiculos.concat(fecha.vehiculos); | 188 | existe[0].vehiculos = existe[0].vehiculos.concat(fecha.vehiculos); |
| 188 | } else { | 189 | } else { |
| 189 | result[0].fechas.push(fecha); | 190 | result[0].fechas.push(fecha); |
| 190 | } | 191 | } |
| 191 | 192 | ||
| 192 | }); | 193 | }); |
| 193 | }); | 194 | }); |
| 194 | result[0].fechas.forEach(function(fecha) { | 195 | result[0].fechas.forEach(function(fecha) { |
| 195 | fecha.vehiculos = unirVehiculos(fecha.vehiculos); | 196 | fecha.vehiculos = unirVehiculos(fecha.vehiculos); |
| 196 | }); | 197 | }); |
| 197 | return result; | 198 | return result; |
| 198 | } | 199 | } |
| 199 | 200 | ||
| 200 | function unirFechas(fechas) { | 201 | function unirFechas(fechas) { |
| 201 | var results = []; | 202 | var results = []; |
| 202 | fechas.forEach(function(fecha) { | 203 | fechas.forEach(function(fecha) { |
| 203 | var existe = results.filter(function(result) { | 204 | var existe = results.filter(function(result) { |
| 204 | return result.year === fecha.year; | 205 | return result.year === fecha.year; |
| 205 | }); | 206 | }); |
| 206 | 207 | ||
| 207 | if (existe.length) { | 208 | if (existe.length) { |
| 208 | existe[0].vehiculos = existe[0].vehiculos.concat(fecha.vehiculos); | 209 | existe[0].vehiculos = existe[0].vehiculos.concat(fecha.vehiculos); |
| 209 | } else { | 210 | } else { |
| 210 | results.push({ | 211 | results.push({ |
| 211 | year: fecha.year, | 212 | year: fecha.year, |
| 212 | vehiculos: fecha.vehiculos | 213 | vehiculos: fecha.vehiculos |
| 213 | }); | 214 | }); |
| 214 | } | 215 | } |
| 215 | }); | 216 | }); |
| 216 | 217 | ||
| 217 | results.forEach(function(result) { | 218 | results.forEach(function(result) { |
| 218 | result.vehiculos = unirVehiculos(result.vehiculos); | 219 | result.vehiculos = unirVehiculos(result.vehiculos); |
| 219 | }); | 220 | }); |
| 220 | return results; | 221 | return results; |
| 221 | } | 222 | } |
| 222 | 223 | ||
| 223 | function unirVehiculos(vehiculos) { | 224 | function unirVehiculos(vehiculos) { |
| 224 | var results = []; | 225 | var results = []; |
| 225 | vehiculos.forEach(function(vehiculo) { | 226 | vehiculos.forEach(function(vehiculo) { |
| 226 | var existe = results.filter(function(result) { | 227 | var existe = results.filter(function(result) { |
| 227 | return result.vehiculo === vehiculo.vehiculo; | 228 | return result.vehiculo === vehiculo.vehiculo; |
| 228 | }); | 229 | }); |
| 229 | 230 | ||
| 230 | if (existe.length) { | 231 | if (existe.length) { |
| 231 | existe[0].data.kms += vehiculo.data.kms; | 232 | existe[0].data.kms += vehiculo.data.kms; |
| 232 | existe[0].data.lts += vehiculo.data.lts; | 233 | existe[0].data.lts += vehiculo.data.lts; |
| 233 | existe[0].data.viajes += vehiculo.data.viajes; | 234 | existe[0].data.viajes += vehiculo.data.viajes; |
| 234 | } else { | 235 | } else { |
| 235 | results.push(vehiculo); | 236 | results.push(vehiculo); |
| 236 | } | 237 | } |
| 237 | }); | 238 | }); |
| 238 | return results; | 239 | return results; |
| 239 | } | 240 | } |
| 240 | |||
| 241 | |||
| 242 | } | 241 | } |
| 243 | ] | 242 | ] |
| 244 | ); | 243 | ); |
src/js/controller-hoja-ruta.js
| 1 | angular.module('focaModalInforme') | 1 | angular.module('focaModalInforme') |
| 2 | .controller('focaModalInformeHojaRutaController', | 2 | .controller('focaModalInformeHojaRutaController', |
| 3 | [ | 3 | [ |
| 4 | '$filter', | 4 | '$filter', |
| 5 | '$scope', | 5 | '$scope', |
| 6 | '$uibModalInstance', | 6 | '$uibModalInstance', |
| 7 | 'focaModalInformeHojaRutaService', | 7 | 'focaModalInformeHojaRutaService', |
| 8 | 'i18nService', | 8 | 'i18nService', |
| 9 | 'uiGridConstants', | 9 | 'uiGridConstants', |
| 10 | function($filter, $scope, $uibModalInstance, | 10 | function($filter, $scope, $uibModalInstance, |
| 11 | focaModalInformeHojaRutaService, i18nService, uiGridConstants | 11 | focaModalInformeHojaRutaService, i18nService, uiGridConstants |
| 12 | ) { | 12 | ) { |
| 13 | var fecha = new Date(); | 13 | var fecha = new Date(); |
| 14 | $scope.fechaHasta = new Date(); | 14 | $scope.fechaHasta = new Date(); |
| 15 | $scope.fechaDesde = new Date(fecha.setMonth(fecha.getMonth() - 1)); | 15 | $scope.fechaDesde = new Date(fecha.setMonth(fecha.getMonth() - 1)); |
| 16 | $scope.buscar = true; | 16 | $scope.buscar = true; |
| 17 | $scope.informe = {}; | 17 | $scope.informe = {}; |
| 18 | i18nService.setCurrentLang('es'); | 18 | i18nService.setCurrentLang('es'); |
| 19 | $scope.gridOptions = { | 19 | $scope.gridOptions = { |
| 20 | enableHorizontalScrollbar: uiGridConstants.scrollbars.ALWAYS, | 20 | enableHorizontalScrollbar: uiGridConstants.scrollbars.ALWAYS, |
| 21 | enableVerticalScrollbar: uiGridConstants.scrollbars.WHEN_NEEDED, | 21 | enableVerticalScrollbar: uiGridConstants.scrollbars.WHEN_NEEDED, |
| 22 | enableGridMenu: true, | 22 | enableGridMenu: true, |
| 23 | exporterMenuCsv: false, | 23 | exporterMenuCsv: false, |
| 24 | exporterPdfPageSize: 'A4', | 24 | exporterPdfPageSize: 'A4', |
| 25 | exporterPdfFooter: function (currentPage, pageCount) { | 25 | exporterPdfFooter: function (currentPage, pageCount) { |
| 26 | return { | 26 | return { |
| 27 | columns: [ | 27 | columns: [ |
| 28 | {text: $filter('date')(new Date(), 'dd/MM/yyyy'), | 28 | {text: $filter('date')(new Date(), 'dd/MM/yyyy'), |
| 29 | margin: [40, 0]}, | 29 | margin: [40, 0]}, |
| 30 | {text: currentPage + ' de ' + pageCount, | 30 | {text: currentPage + ' de ' + pageCount, |
| 31 | margin: [28, 0], alignment: 'right'} | 31 | margin: [28, 0], alignment: 'right'} |
| 32 | ] | 32 | ] |
| 33 | }; | 33 | }; |
| 34 | }, | 34 | }, |
| 35 | |||
| 36 | }; | 35 | }; |
| 37 | $scope.generarInforme = function() { | 36 | $scope.generarInforme = function() { |
| 38 | focaModalInformeHojaRutaService | 37 | focaModalInformeHojaRutaService |
| 39 | .getHojasRuta( | 38 | .getHojasRuta( |
| 40 | $scope.fechaDesde.toISOString().split('.')[0], | 39 | $scope.fechaDesde.toISOString().split('.')[0], |
| 41 | $scope.fechaHasta.toISOString().split('.')[0] | 40 | $scope.fechaHasta.toISOString().split('.')[0] |
| 42 | ) | 41 | ) |
| 43 | .then(function(res) { | 42 | .then(function(res) { |
| 44 | $scope.gridOptions.data = res.data.map(function(hojaRuta) { | 43 | $scope.gridOptions.data = res.data.map(function(hojaRuta) { |
| 45 | return { | 44 | return { |
| 46 | sucursal: hojaRuta.sucursal, | 45 | sucursal: hojaRuta.sucursal, |
| 47 | numero: hojaRuta.numeroHojaRuta, | 46 | numero: hojaRuta.numeroHojaRuta, |
| 48 | transportista: hojaRuta.transportista.NOM, | 47 | transportista: hojaRuta.transportista.NOM, |
| 49 | unidad: hojaRuta.vehiculo.codigo, | 48 | unidad: hojaRuta.vehiculo.codigo, |
| 50 | chofer: hojaRuta.chofer.nombre, | 49 | chofer: hojaRuta.chofer.nombre, |
| 51 | fechaDeReparto: $filter('date')(hojaRuta.fechaReparto, 'dd/MM/yyyy') | 50 | fechaDeReparto: $filter('date')(hojaRuta.fechaReparto, 'dd/MM/yyyy') |
| 52 | }; | 51 | }; |
| 53 | }); | 52 | }); |
| 54 | |||
| 55 | //TODO: sacar id empresa hardcodeado | 53 | //TODO: sacar id empresa hardcodeado |
| 56 | return focaModalInformeHojaRutaService.getEmpresa(1); | 54 | return focaModalInformeHojaRutaService.getEmpresa(1); |
| 57 | }) | 55 | }) |
| 58 | .then(function(res) { | 56 | .then(function(res) { |
| 59 | var filenameStamp = 'Informe de correlatividad de hojas de ruta - ' + | 57 | var filenameStamp = 'Informe de correlatividad de hojas de ruta - ' + |
| 60 | $filter('date')(new Date(), 'dd/MM/yyyy'); | 58 | $filter('date')(new Date(), 'dd/MM/yyyy'); |
| 61 | $scope.informe.nombreEmpresa = res.data.NOM.trim(); | 59 | $scope.informe.nombreEmpresa = res.data.NOM.trim(); |
| 62 | $scope.informe.direccionEmpresa = res.data.DIR.trim(); | 60 | $scope.informe.direccionEmpresa = res.data.DIR.trim(); |
| 63 | $scope.gridOptions.exporterPdfFilename = filenameStamp + '.pdf'; | 61 | $scope.gridOptions.exporterPdfFilename = filenameStamp + '.pdf'; |
| 64 | $scope.gridOptions.exporterExcelFilename = filenameStamp + '.xlsx'; | 62 | $scope.gridOptions.exporterExcelFilename = filenameStamp + '.xlsx'; |
| 65 | $scope.gridOptions.exporterPdfHeader = { | 63 | $scope.gridOptions.exporterPdfHeader = { |
| 66 | columns: [ | 64 | columns: [ |
| 67 | { | 65 | { |
| 68 | text: $scope.informe.nombreEmpresa, | 66 | text: $scope.informe.nombreEmpresa, |
| 69 | margin: [40, 0], | 67 | margin: [40, 0], |
| 70 | fontSize: 9 | 68 | fontSize: 9 |
| 71 | }, | 69 | }, |
| 72 | { | 70 | { |
| 73 | text: '\nInforme de correlatividad de hojas de ruta', | 71 | text: '\nInforme de correlatividad de hojas de ruta', |
| 74 | margin: [-170, -4, 0, 0], | 72 | margin: [-170, -4, 0, 0], |
| 75 | fontSize: 12 | 73 | fontSize: 12 |
| 76 | }, | 74 | }, |
| 77 | { | 75 | { |
| 78 | text: [ | 76 | text: [ |
| 79 | '\n\nFiltros: ', | 77 | '\n\nFiltros: ', |
| 80 | 'Fecha desde: ', | 78 | 'Fecha desde: ', |
| 81 | $filter('date')($scope.fechaDesde, 'dd/MM/yyyy'), | 79 | $filter('date')($scope.fechaDesde, 'dd/MM/yyyy'), |
| 82 | ' Fecha hasta: ', | 80 | ' Fecha hasta: ', |
| 83 | $filter('date')($scope.fechaHasta, 'dd/MM/yyyy') | 81 | $filter('date')($scope.fechaHasta, 'dd/MM/yyyy') |
| 84 | ], | 82 | ], |
| 85 | margin: [-380, 2, 0, 0], | 83 | margin: [-380, 2, 0, 0], |
| 86 | fontSize: 9 | 84 | fontSize: 9 |
| 87 | }, | 85 | }, |
| 88 | { | 86 | { |
| 89 | text: $scope.informe.direccionEmpresa, | 87 | text: $scope.informe.direccionEmpresa, |
| 90 | margin: [28, 0], | 88 | margin: [28, 0], |
| 91 | alignment: 'right', | 89 | alignment: 'right', |
| 92 | fontSize: 9 | 90 | fontSize: 9 |
| 93 | } | 91 | } |
| 94 | ] | 92 | ] |
| 95 | }; | 93 | }; |
| 96 | $scope.buscar = false; | 94 | $scope.buscar = false; |
| 97 | }); | 95 | }); |
| 98 | }; | 96 | }; |
| 99 | $scope.volver = function() { | 97 | $scope.volver = function() { |
| 100 | $scope.buscar = true; | 98 | $scope.buscar = true; |
| 101 | }; | 99 | }; |
| 102 | $scope.cancel = function() { | 100 | $scope.cancel = function() { |
| 103 | $uibModalInstance.dismiss('Cancelar'); | 101 | $uibModalInstance.dismiss('Cancelar'); |
| 104 | }; | 102 | }; |
| 105 | } | 103 | } |
| 106 | ] | 104 | ] |
| 107 | ); | 105 | ); |
| 108 | 106 |
src/js/controller-litros-km-unidad.js
| 1 | angular.module('focaModalInforme') | 1 | angular.module('focaModalInforme') |
| 2 | .controller('focaModalInformeLitrosKmUnidadController', | 2 | .controller('focaModalInformeLitrosKmUnidadController', |
| 3 | [ | 3 | [ |
| 4 | '$filter', | 4 | '$filter', |
| 5 | '$scope', | 5 | '$scope', |
| 6 | '$uibModalInstance', | 6 | '$uibModalInstance', |
| 7 | 'focaModalInformeLitrosKmUnidadService', | 7 | 'focaModalInformeLitrosKmUnidadService', |
| 8 | 'i18nService', | 8 | 'i18nService', |
| 9 | 'focaModalService', | 9 | 'focaModalService', |
| 10 | '$uibModal', | 10 | '$uibModal', |
| 11 | function($filter, $scope, $uibModalInstance, focaModalInformeLitrosKmUnidadService, | 11 | function($filter, $scope, $uibModalInstance, focaModalInformeLitrosKmUnidadService, |
| 12 | i18nService, focaModalService, $uibModal | 12 | i18nService, focaModalService, $uibModal |
| 13 | ) { | 13 | ) { |
| 14 | var meses = ['ene', 'feb', 'mar', 'abr', 'may', 'jun', | 14 | var meses = ['ene', 'feb', 'mar', 'abr', 'may', 'jun', |
| 15 | 'jul', 'ago', 'sep', 'oct', 'nov', 'dic']; | 15 | 'jul', 'ago', 'sep', 'oct', 'nov', 'dic']; |
| 16 | var fecha = new Date(); | 16 | var fecha = new Date(); |
| 17 | $scope.generando = false; | 17 | $scope.generando = false; |
| 18 | $scope.fechaHasta = new Date(); | 18 | $scope.fechaHasta = new Date(); |
| 19 | $scope.fechaDesde = new Date(fecha.setMonth(fecha.getMonth() - 1)); | 19 | $scope.fechaDesde = new Date(fecha.setMonth(fecha.getMonth() - 1)); |
| 20 | $scope.buscar = true; | 20 | $scope.buscar = true; |
| 21 | $scope.informe = {}; | 21 | $scope.informe = {}; |
| 22 | i18nService.setCurrentLang('es'); | 22 | i18nService.setCurrentLang('es'); |
| 23 | $scope.gridOptions = { | 23 | $scope.gridOptions = { |
| 24 | enableGridMenu: true, | 24 | enableGridMenu: true, |
| 25 | exporterMenuCsv: false, | 25 | exporterMenuCsv: false, |
| 26 | exporterPdfPageSize: 'A4', | 26 | exporterPdfPageSize: 'A4', |
| 27 | exporterPdfFooter: function (currentPage, pageCount) { | 27 | exporterPdfFooter: function (currentPage, pageCount) { |
| 28 | return { | 28 | return { |
| 29 | columns: [ | 29 | columns: [ |
| 30 | {text: $filter('date')(new Date(), 'dd/MM/yyyy'), | 30 | {text: $filter('date')(new Date(), 'dd/MM/yyyy'), |
| 31 | margin: [40, 0]}, | 31 | margin: [40, 0]}, |
| 32 | {text: currentPage + ' de ' + pageCount, | 32 | {text: currentPage + ' de ' + pageCount, |
| 33 | margin: [28, 0], alignment: 'right'} | 33 | margin: [28, 0], alignment: 'right'} |
| 34 | ] | 34 | ] |
| 35 | }; | 35 | }; |
| 36 | }, | 36 | }, |
| 37 | columnDefs: [ | 37 | columnDefs: [ |
| 38 | { | 38 | { |
| 39 | field: 'fecha', | 39 | field: 'fecha', |
| 40 | enableSorting: false, | 40 | enableSorting: false, |
| 41 | cellClass: function(grid, row, col, rowRenderIndex, colRenderIndex) { | 41 | cellClass: function(grid, row, col, rowRenderIndex, colRenderIndex) { |
| 42 | if (grid.getCellValue(row,col).indexOf('Sector:') !== -1) | 42 | if (grid.getCellValue(row,col).indexOf('Sector:') !== -1) |
| 43 | return 'yellow w-100'; | 43 | return 'yellow w-100'; |
| 44 | if (grid.getCellValue(row,col).indexOf('Producto:') !== -1) | 44 | if (grid.getCellValue(row,col).indexOf('Producto:') !== -1) |
| 45 | return 'red w-100'; | 45 | return 'red w-100'; |
| 46 | } | 46 | } |
| 47 | }, | 47 | }, |
| 48 | { | 48 | { |
| 49 | field: 'litrosRepartidos', | 49 | field: 'litrosRepartidos', |
| 50 | enableSorting: false, | 50 | enableSorting: false, |
| 51 | cellClass: function(grid, row, col, rowRenderIndex, colRenderIndex) { | 51 | cellClass: function(grid, row, col, rowRenderIndex, colRenderIndex) { |
| 52 | if (!grid.getCellValue(row,col)) | 52 | if (!grid.getCellValue(row,col)) |
| 53 | return 'd-none'; | 53 | return 'd-none'; |
| 54 | } | 54 | } |
| 55 | }, | 55 | }, |
| 56 | { | 56 | { |
| 57 | field: 'kmRecorridos', | 57 | field: 'kmRecorridos', |
| 58 | enableSorting: false, | 58 | enableSorting: false, |
| 59 | cellClass: function(grid, row, col, rowRenderIndex, colRenderIndex) { | 59 | cellClass: function(grid, row, col, rowRenderIndex, colRenderIndex) { |
| 60 | if (!grid.getCellValue(row,col)) | 60 | if (!grid.getCellValue(row,col)) |
| 61 | return 'd-none'; | 61 | return 'd-none'; |
| 62 | } | 62 | } |
| 63 | }, | 63 | }, |
| 64 | { | 64 | { |
| 65 | field: 'lts/Km', | 65 | field: 'lts/Km', |
| 66 | enableSorting: false, | 66 | enableSorting: false, |
| 67 | cellClass: function(grid, row, col, rowRenderIndex, colRenderIndex) { | 67 | cellClass: function(grid, row, col, rowRenderIndex, colRenderIndex) { |
| 68 | if (!grid.getCellValue(row,col)) | 68 | if (!grid.getCellValue(row,col)) |
| 69 | return 'd-none'; | 69 | return 'd-none'; |
| 70 | } | 70 | } |
| 71 | } | 71 | } |
| 72 | ] | 72 | ] |
| 73 | 73 | ||
| 74 | }; | 74 | }; |
| 75 | $scope.generarInforme = function() { | 75 | $scope.generarInforme = function() { |
| 76 | if(!$scope.unidad){ | 76 | if(!$scope.unidad){ |
| 77 | focaModalService.alert('Primero seleccione una unidad'); | 77 | focaModalService.alert('Primero seleccione una unidad'); |
| 78 | return; | 78 | return; |
| 79 | } | 79 | } |
| 80 | $scope.generando = true; | 80 | $scope.generando = true; |
| 81 | focaModalInformeLitrosKmUnidadService | 81 | focaModalInformeLitrosKmUnidadService |
| 82 | .getDescargas( | 82 | .getDescargas( |
| 83 | $scope.unidad.id, | 83 | $scope.unidad.id, |
| 84 | $scope.fechaDesde.toISOString().split('.')[0], | 84 | $scope.fechaDesde.toISOString().split('.')[0], |
| 85 | $scope.fechaHasta.toISOString().split('.')[0] | 85 | $scope.fechaHasta.toISOString().split('.')[0] |
| 86 | ) | 86 | ) |
| 87 | .then(function(res) { | 87 | .then(function(res) { |
| 88 | var result = []; | 88 | var result = []; |
| 89 | res.data.forEach(function(sector) { | 89 | res.data.forEach(function(sector) { |
| 90 | result.push({ | 90 | result.push({ |
| 91 | fecha: 'Sector: ' + | 91 | fecha: 'Sector: ' + |
| 92 | $filter('rellenarDigitos')(sector[0].articulo.CodSec, 2, '0') + | 92 | $filter('rellenarDigitos')(sector[0].articulo.CodSec, 2, '0') + |
| 93 | ' - ' + sector[0].articulo.sector.NOMBRE.trim() | 93 | ' - ' + sector[0].articulo.sector.NOMBRE.trim() |
| 94 | }); | 94 | }); |
| 95 | sector.forEach(function(cisternaCarga) { | 95 | sector.forEach(function(cisternaCarga) { |
| 96 | result.push({ | 96 | result.push({ |
| 97 | fecha: 'Producto: ' + | 97 | fecha: 'Producto: ' + |
| 98 | cisternaCarga.articulo.CodArt + | 98 | cisternaCarga.articulo.CodArt + |
| 99 | ' - ' + cisternaCarga.articulo.DetArt | 99 | ' - ' + cisternaCarga.articulo.DetArt |
| 100 | }); | 100 | }); |
| 101 | cisternaCarga.cisternaMovimientos.forEach(function(cisternaMovimiento) { | 101 | cisternaCarga.cisternaMovimientos.forEach(function(cisternaMovimiento) { |
| 102 | var lts = cisternaMovimiento.lts; | 102 | var lts = cisternaMovimiento.lts; |
| 103 | var kms = cisternaMovimiento.kms; | 103 | var kms = cisternaMovimiento.kms; |
| 104 | 104 | ||
| 105 | result.push({ | 105 | result.push({ |
| 106 | fecha: meses[cisternaMovimiento.month] + ' - ' + cisternaMovimiento.year, | 106 | fecha: meses[cisternaMovimiento.month] + ' - ' + cisternaMovimiento.year, |
| 107 | litrosRepartidos: $filter('number')(lts, 2), | 107 | litrosRepartidos: $filter('number')(lts, 2), |
| 108 | kmRecorridos: $filter('number')(kms, 2), | 108 | kmRecorridos: $filter('number')(kms, 2), |
| 109 | 'lts/Km': (kms) ? $filter('number')(lts / kms, 2) : lts | 109 | 'lts/Km': (kms) ? $filter('number')(lts / kms, 2) : lts |
| 110 | }); | 110 | }); |
| 111 | }); | 111 | }); |
| 112 | }); | 112 | }); |
| 113 | }); | 113 | }); |
| 114 | $scope.gridOptions.data = result; | 114 | $scope.gridOptions.data = result; |
| 115 | $scope.generando = false; | 115 | $scope.generando = false; |
| 116 | $scope.buscar = false; | 116 | $scope.buscar = false; |
| 117 | }); | 117 | }); |
| 118 | }; | 118 | }; |
| 119 | $scope.seleccionarTransportista = function() { | 119 | $scope.seleccionarTransportista = function() { |
| 120 | var parametrosModal = { | 120 | var parametrosModal = { |
| 121 | titulo: 'Búsqueda de Transportista', | 121 | titulo: 'Búsqueda de Transportista', |
| 122 | query: '/transportista', | 122 | query: '/transportista', |
| 123 | columnas: [ | 123 | columnas: [ |
| 124 | { | 124 | { |
| 125 | propiedad: 'COD', | 125 | propiedad: 'COD', |
| 126 | nombre: 'Código', | 126 | nombre: 'Código', |
| 127 | filtro: { | 127 | filtro: { |
| 128 | nombre: 'rellenarDigitos', | 128 | nombre: 'rellenarDigitos', |
| 129 | parametro: 5 | 129 | parametro: 5 |
| 130 | } | 130 | } |
| 131 | }, | 131 | }, |
| 132 | { | 132 | { |
| 133 | propiedad: 'NOM', | 133 | propiedad: 'NOM', |
| 134 | nombre: 'Nombre' | 134 | nombre: 'Nombre' |
| 135 | }, | 135 | }, |
| 136 | { | 136 | { |
| 137 | propiedad: 'CUIT', | 137 | propiedad: 'CUIT', |
| 138 | nombre: 'CUIT' | 138 | nombre: 'CUIT' |
| 139 | } | 139 | } |
| 140 | ], | 140 | ], |
| 141 | size: 'md' | 141 | size: 'md' |
| 142 | }; | 142 | }; |
| 143 | return focaModalService.modal(parametrosModal) | 143 | return focaModalService.modal(parametrosModal) |
| 144 | }; | 144 | }; |
| 145 | 145 | ||
| 146 | $scope.seleccionarUnidad = function() { | 146 | $scope.seleccionarUnidad = function(key) { |
| 147 | $scope.seleccionarTransportista().then( | 147 | if (key === 13) { |
| 148 | function(transportista) { | 148 | $scope.seleccionarTransportista().then( |
| 149 | $scope.transportista = transportista; | 149 | function(transportista) { |
| 150 | var parametrosModal = { | 150 | $scope.transportista = transportista; |
| 151 | titulo: 'Búsqueda de vehículos', | 151 | var parametrosModal = { |
| 152 | query: '/vehiculo/transportista/' + transportista.COD, | 152 | titulo: 'Búsqueda de vehículos', |
| 153 | columnas: [ | 153 | searchText: $scope.unidad.codigo, |
| 154 | { | 154 | query: '/vehiculo/transportista/' + transportista.COD, |
| 155 | propiedad: 'codigo', | 155 | columnas: [ |
| 156 | nombre: 'Código' | 156 | { |
| 157 | }, | 157 | propiedad: 'codigo', |
| 158 | { | 158 | nombre: 'Código' |
| 159 | propiedad: 'tractor', | 159 | }, |
| 160 | nombre: 'Tractor' | 160 | { |
| 161 | }, | 161 | propiedad: 'tractor', |
| 162 | { | 162 | nombre: 'Tractor' |
| 163 | propiedad: 'semi', | 163 | }, |
| 164 | nombre: 'Semi' | 164 | { |
| 165 | }, | 165 | propiedad: 'semi', |
| 166 | { | 166 | nombre: 'Semi' |
| 167 | propiedad: 'tractor', | 167 | }, |
| 168 | nombre: 'Tractor' | 168 | { |
| 169 | } | 169 | propiedad: 'tractor', |
| 170 | ], | 170 | nombre: 'Tractor' |
| 171 | size: 'md' | 171 | } |
| 172 | }; | 172 | ], |
| 173 | focaModalService.modal(parametrosModal).then( | 173 | size: 'md' |
| 174 | function(unidad) { | 174 | }; |
| 175 | $scope.unidad = unidad; | 175 | focaModalService.modal(parametrosModal).then( |
| 176 | }, function() { | 176 | function(unidad) { |
| 177 | $scope.seleccionarUnidad(); | 177 | $scope.unidad = unidad; |
| 178 | }); | 178 | }, function() { |
| 179 | }); | 179 | $scope.seleccionarUnidad(); |
| 180 | }); | ||
| 181 | }); | ||
| 182 | } | ||
| 180 | }; | 183 | }; |
| 181 | $scope.volver = function() { | 184 | $scope.volver = function() { |
| 182 | $scope.buscar = true; | 185 | $scope.buscar = true; |
| 183 | }; | 186 | }; |
| 184 | $scope.cancel = function() { | 187 | $scope.cancel = function() { |
| 185 | $uibModalInstance.dismiss('Cancelar'); | 188 | $uibModalInstance.dismiss('Cancelar'); |
| 186 | }; | 189 | }; |
| 187 | } | 190 | } |
| 188 | ] | 191 | ] |
| 189 | ); | 192 | ); |
| 190 | 193 |
src/js/controller-productividad.js
| 1 | angular.module('focaModalInforme') | 1 | angular.module('focaModalInforme') |
| 2 | .controller('focaModalInformeProductividadController', | 2 | .controller('focaModalInformeProductividadController', |
| 3 | [ | 3 | [ |
| 4 | '$filter', | 4 | '$filter', |
| 5 | '$scope', | 5 | '$scope', |
| 6 | '$uibModalInstance', | 6 | '$uibModalInstance', |
| 7 | 'focaModalInformeProductividadService', | 7 | 'focaModalInformeProductividadService', |
| 8 | 'i18nService', | 8 | 'i18nService', |
| 9 | 'focaModalService', | 9 | 'focaModalService', |
| 10 | function($filter, $scope, $uibModalInstance, | 10 | function($filter, $scope, $uibModalInstance, |
| 11 | focaModalInformeProductividadService, i18nService, focaModalService | 11 | focaModalInformeProductividadService, i18nService, focaModalService |
| 12 | ) { | 12 | ) { |
| 13 | i18nService.setCurrentLang('es'); | 13 | i18nService.setCurrentLang('es'); |
| 14 | var fecha = new Date(); | 14 | var fecha = new Date(); |
| 15 | $scope.generando = false; | 15 | $scope.generando = false; |
| 16 | $scope.buscar = true; | 16 | $scope.buscar = true; |
| 17 | $scope.informe = {}; | 17 | $scope.informe = {}; |
| 18 | $scope.params = { | 18 | $scope.params = { |
| 19 | fechaHasta: new Date(), | 19 | fechaHasta: new Date(), |
| 20 | fechaDesde: new Date(fecha.setMonth(fecha.getMonth() - 1)), | 20 | fechaDesde: new Date(fecha.setMonth(fecha.getMonth() - 1)), |
| 21 | sector: undefined, | 21 | sector: undefined, |
| 22 | diferenciarProductos: false, | 22 | diferenciarProductos: false, |
| 23 | diferenciarMeses: false | 23 | diferenciarMeses: false |
| 24 | }; | 24 | }; |
| 25 | $scope.gridOptions = { | 25 | $scope.gridOptions = { |
| 26 | enableGridMenu: true, | 26 | enableGridMenu: true, |
| 27 | exporterMenuCsv: false, | 27 | exporterMenuCsv: false, |
| 28 | exporterPdfPageSize: 'A4', | 28 | exporterPdfPageSize: 'A4', |
| 29 | exporterPdfFooter: function (currentPage, pageCount) { | 29 | exporterPdfFooter: function (currentPage, pageCount) { |
| 30 | return { | 30 | return { |
| 31 | columns: [ | 31 | columns: [ |
| 32 | {text: $filter('date')(new Date(), 'dd/MM/yyyy'), | 32 | {text: $filter('date')(new Date(), 'dd/MM/yyyy'), |
| 33 | margin: [40, 0]}, | 33 | margin: [40, 0]}, |
| 34 | {text: currentPage + ' de ' + pageCount, | 34 | {text: currentPage + ' de ' + pageCount, |
| 35 | margin: [28, 0], alignment: 'right'} | 35 | margin: [28, 0], alignment: 'right'} |
| 36 | ] | 36 | ] |
| 37 | }; | 37 | }; |
| 38 | }, | 38 | }, |
| 39 | columnDefs: [ | 39 | columnDefs: [ |
| 40 | { | 40 | { |
| 41 | field: 'cliente', | 41 | field: 'cliente', |
| 42 | enableSorting: false, | 42 | enableSorting: false, |
| 43 | cellClass: function(grid, row, col) { | 43 | cellClass: function(grid, row, col) { |
| 44 | var value = grid.getCellValue(row,col); | 44 | var value = grid.getCellValue(row,col); |
| 45 | 45 | ||
| 46 | if (value.indexOf('Vendedores') !== -1 || | 46 | if (value.indexOf('Vendedores') !== -1 || |
| 47 | value.indexOf('Cobradores') !== -1 || | 47 | value.indexOf('Cobradores') !== -1 || |
| 48 | value.indexOf('Transportistas') !== -1) | 48 | value.indexOf('Transportistas') !== -1) |
| 49 | return 'yellow w-100'; | 49 | return 'yellow w-100'; |
| 50 | if (value.indexOf('Vendedor:') !== -1 || | 50 | if (value.indexOf('Vendedor:') !== -1 || |
| 51 | value.indexOf('Cobrador:') !== -1 || | 51 | value.indexOf('Cobrador:') !== -1 || |
| 52 | value.indexOf('Transportista:') !== -1) | 52 | value.indexOf('Transportista:') !== -1) |
| 53 | return 'red w-100'; | 53 | return 'red w-100'; |
| 54 | if (value.indexOf('Fecha:') !== -1) | 54 | if (value.indexOf('Fecha:') !== -1) |
| 55 | return 'green w-100'; | 55 | return 'green w-100'; |
| 56 | } | 56 | } |
| 57 | }, | 57 | }, |
| 58 | { | 58 | { |
| 59 | field: 'fecha', | 59 | field: 'fecha', |
| 60 | enableSorting: false, | 60 | enableSorting: false, |
| 61 | cellClass: function(grid, row, col) { | 61 | cellClass: function(grid, row, col) { |
| 62 | if (!grid.getCellValue(row,col)) | 62 | if (!grid.getCellValue(row,col)) |
| 63 | return 'd-none'; | 63 | return 'd-none'; |
| 64 | } | 64 | } |
| 65 | }, | 65 | }, |
| 66 | { | 66 | { |
| 67 | field: 'kmRecorridos', | 67 | field: 'kmRecorridos', |
| 68 | enableSorting: false, | 68 | enableSorting: false, |
| 69 | cellClass: function(grid, row, col) { | 69 | cellClass: function(grid, row, col) { |
| 70 | if (!grid.getCellValue(row,col)) | 70 | if (!grid.getCellValue(row,col)) |
| 71 | return 'd-none'; | 71 | return 'd-none'; |
| 72 | } | 72 | } |
| 73 | }, | 73 | }, |
| 74 | { | 74 | { |
| 75 | field: 'geolocalizacion', | 75 | field: 'geolocalizacion', |
| 76 | enableSorting: false, | 76 | enableSorting: false, |
| 77 | cellClass: function(grid, row, col) { | 77 | cellClass: function(grid, row, col) { |
| 78 | if (!grid.getCellValue(row,col)) | 78 | if (!grid.getCellValue(row,col)) |
| 79 | return 'd-none'; | 79 | return 'd-none'; |
| 80 | } | 80 | } |
| 81 | } | 81 | } |
| 82 | ] | 82 | ] |
| 83 | }; | 83 | }; |
| 84 | $scope.seleccionarTipo = function() { | 84 | $scope.seleccionarTipo = function() { |
| 85 | var data = [ | 85 | var data = [ |
| 86 | { | 86 | { |
| 87 | id: 0, | 87 | id: 0, |
| 88 | label: 'Todos' | 88 | label: 'Todos' |
| 89 | }, | 89 | }, |
| 90 | { | 90 | { |
| 91 | id: 1, | 91 | id: 1, |
| 92 | label: 'Vendedores' | 92 | label: 'Vendedores' |
| 93 | }, | 93 | }, |
| 94 | { | 94 | { |
| 95 | id: 2, | 95 | id: 2, |
| 96 | label: 'Cobradores' | 96 | label: 'Cobradores' |
| 97 | }, | 97 | }, |
| 98 | { | 98 | { |
| 99 | id: 3, | 99 | id: 3, |
| 100 | label: 'Transportistas' | 100 | label: 'Transportistas' |
| 101 | } | 101 | } |
| 102 | ]; | 102 | ]; |
| 103 | focaModalService.modal({ | 103 | focaModalService.modal({ |
| 104 | titulo: 'Seleccionar entidad', | 104 | titulo: 'Seleccionar entidad', |
| 105 | data: data, | 105 | data: data, |
| 106 | columnas: [ | 106 | columnas: [ |
| 107 | { | 107 | { |
| 108 | propiedad: 'label', | 108 | propiedad: 'label', |
| 109 | nombre: 'Entidad' | 109 | nombre: 'Entidad' |
| 110 | } | 110 | } |
| 111 | ], | 111 | ], |
| 112 | }).then(function(res) { | 112 | }).then(function(res) { |
| 113 | $scope.params.entidad = res; | 113 | $scope.params.entidad = res; |
| 114 | }); | 114 | }); |
| 115 | }; | 115 | }; |
| 116 | $scope.generarInforme = function() { | 116 | $scope.generarInforme = function() { |
| 117 | if (!$scope.params.entidad) { | 117 | if (!$scope.params.entidad) { |
| 118 | focaModalService.alert('Seleccione una entidad'); | 118 | focaModalService.alert('Seleccione una entidad'); |
| 119 | return; | 119 | return; |
| 120 | } | 120 | } |
| 121 | $scope.generando = true; | 121 | $scope.generando = true; |
| 122 | focaModalInformeProductividadService | 122 | focaModalInformeProductividadService |
| 123 | .getInformeData($scope.params) | 123 | .getInformeData($scope.params) |
| 124 | .then(function(res) { | 124 | .then(function(res) { |
| 125 | var result = []; | 125 | var result = []; |
| 126 | 126 | ||
| 127 | if ($scope.params.entidad.id === 1 || !$scope.params.entidad.id) { | 127 | if ($scope.params.entidad.id === 1 || !$scope.params.entidad.id) { |
| 128 | result.push({ | 128 | result.push({ |
| 129 | cliente: 'Vendedores' | 129 | cliente: 'Vendedores' |
| 130 | }); | 130 | }); |
| 131 | res.data.vendedores.forEach(function(vendedor) { | 131 | res.data.vendedores.forEach(function(vendedor) { |
| 132 | result.push({ | 132 | result.push({ |
| 133 | cliente: 'Vendedor: ' + vendedor.NOM | 133 | cliente: 'Vendedor: ' + vendedor.NOM |
| 134 | }); | 134 | }); |
| 135 | vendedor.notasPedido.forEach(function(notaPedido) { | 135 | vendedor.notasPedido.forEach(function(notaPedido) { |
| 136 | var seguimiento = notaPedido.seguimiento; | 136 | var seguimiento = notaPedido.seguimiento; |
| 137 | result.push({ | 137 | result.push({ |
| 138 | cliente: notaPedido.cliente.NOM, | 138 | cliente: notaPedido.cliente.NOM, |
| 139 | fecha: seguimiento ? $filter('date')(seguimiento.fecha) : $filter('date')(notaPedido.fechaCarga), | 139 | fecha: seguimiento ? $filter('date')(seguimiento.fecha) : $filter('date')(notaPedido.fechaCarga), |
| 140 | kmRecorridos: seguimiento ? $filter('number')(seguimiento.kmRecorridos || 0, 2) : $filter('number')(0, 2), | 140 | kmRecorridos: seguimiento ? $filter('number')(seguimiento.kmRecorridos || 0, 2) : $filter('number')(0, 2), |
| 141 | geolocalizacion: seguimiento ? seguimiento.latitud + ', ' + seguimiento.longitud : '' | 141 | geolocalizacion: seguimiento ? seguimiento.latitud + ', ' + seguimiento.longitud : '' |
| 142 | }); | 142 | }); |
| 143 | }); | 143 | }); |
| 144 | }); | 144 | }); |
| 145 | } | 145 | } |
| 146 | if ($scope.params.entidad.id === 2 || !$scope.params.entidad.id) { | 146 | if ($scope.params.entidad.id === 2 || !$scope.params.entidad.id) { |
| 147 | result.push({ | 147 | result.push({ |
| 148 | cliente: 'Cobradores' | 148 | cliente: 'Cobradores' |
| 149 | }); | 149 | }); |
| 150 | res.data.cobradores.forEach(function(cobrador) { | 150 | res.data.cobradores.forEach(function(cobrador) { |
| 151 | result.push({ | 151 | result.push({ |
| 152 | cliente: 'Cobrador: ' + cobrador.NOM | 152 | cliente: 'Cobrador: ' + cobrador.NOM |
| 153 | }); | 153 | }); |
| 154 | cobrador.cobranzas.forEach(function(cobranza) { | 154 | cobrador.cobranzas.forEach(function(cobranza) { |
| 155 | var seguimiento = cobranza.seguimiento; | 155 | var seguimiento = cobranza.seguimiento; |
| 156 | result.push({ | 156 | result.push({ |
| 157 | cliente: cobranza.cliente.NOM, | 157 | cliente: cobranza.cliente.NOM, |
| 158 | fecha: seguimiento ? $filter('date')(seguimiento.fecha, 'dd/MM/yyyy') : $filter('date')(cobranza.FEC), | 158 | fecha: seguimiento ? $filter('date')(seguimiento.fecha, 'dd/MM/yyyy') : $filter('date')(cobranza.FEC), |
| 159 | kmRecorridos: seguimiento ? $filter('number')(seguimiento.kmRecorridos || 0, 2) : $filter('number')(0, 2), | 159 | kmRecorridos: seguimiento ? $filter('number')(seguimiento.kmRecorridos || 0, 2) : $filter('number')(0, 2), |
| 160 | geolocalizacion: seguimiento ? seguimiento.latitud + ', ' + seguimiento.longitud : '' | 160 | geolocalizacion: seguimiento ? seguimiento.latitud + ', ' + seguimiento.longitud : '' |
| 161 | }); | 161 | }); |
| 162 | }); | 162 | }); |
| 163 | }); | 163 | }); |
| 164 | } | 164 | } |
| 165 | if ($scope.params.entidad.id === 3 || !$scope.params.entidad.id) { | 165 | if ($scope.params.entidad.id === 3 || !$scope.params.entidad.id) { |
| 166 | result.push({ | 166 | result.push({ |
| 167 | cliente: 'Transportistas' | 167 | cliente: 'Transportistas' |
| 168 | }); | 168 | }); |
| 169 | res.data.transportistas.forEach(function(transportista) { | 169 | res.data.transportistas.forEach(function(transportista) { |
| 170 | result.push({ | 170 | result.push({ |
| 171 | cliente: 'Transportista: ' + transportista.NOM | 171 | cliente: 'Transportista: ' + transportista.NOM |
| 172 | }); | 172 | }); |
| 173 | transportista.remitos.forEach(function(remito) { | 173 | transportista.remitos.forEach(function(remito) { |
| 174 | var kms = 0, | 174 | var kms = 0, |
| 175 | geolocalizacion; | 175 | geolocalizacion; |
| 176 | remito.hojaRutaMovimiento.forEach(function(movimiento) { | 176 | remito.hojaRutaMovimiento.forEach(function(movimiento) { |
| 177 | kms += movimiento.seguimiento.kmRecorridos || 0; | 177 | kms += movimiento.seguimiento.kmRecorridos || 0; |
| 178 | geolocalizacion = geolocalizacion || | 178 | geolocalizacion = geolocalizacion || |
| 179 | movimiento.seguimiento.latitud + ', ' + | 179 | movimiento.seguimiento.latitud + ', ' + |
| 180 | movimiento.seguimiento.longitud; | 180 | movimiento.seguimiento.longitud; |
| 181 | }); | 181 | }); |
| 182 | result.push({ | 182 | result.push({ |
| 183 | cliente: remito.cliente.NOM, | 183 | cliente: remito.cliente.NOM, |
| 184 | fecha: $filter('date')(remito.fechaRemito, 'dd/MM/yyyy'), | 184 | fecha: $filter('date')(remito.fechaRemito, 'dd/MM/yyyy'), |
| 185 | kmRecorridos: $filter('number')(kms, 2), | 185 | kmRecorridos: $filter('number')(kms, 2), |
| 186 | geolocalizacion: geolocalizacion | 186 | geolocalizacion: geolocalizacion |
| 187 | }); | 187 | }); |
| 188 | }); | 188 | }); |
| 189 | }); | 189 | }); |
| 190 | } | 190 | } |
| 191 | $scope.gridOptions.data = result; | 191 | $scope.gridOptions.data = result; |
| 192 | $scope.generando = false; | 192 | $scope.generando = false; |
| 193 | $scope.buscar = false; | 193 | $scope.buscar = false; |
| 194 | }); | 194 | }); |
| 195 | }; | 195 | }; |
| 196 | 196 | ||
| 197 | |||
| 198 | $scope.volver = function() { | 197 | $scope.volver = function() { |
| 199 | $scope.buscar = true; | 198 | $scope.buscar = true; |
| 200 | }; | 199 | }; |
| 201 | $scope.cancel = function() { | 200 | $scope.cancel = function() { |
| 202 | $uibModalInstance.dismiss('Cancelar'); | 201 | $uibModalInstance.dismiss('Cancelar'); |
| 203 | }; | 202 | }; |
| 204 | $scope.clearEntidad = function() { | 203 | $scope.clearEntidad = function() { |
| 205 | $scope.params.entidad = undefined; | 204 | $scope.params.entidad = undefined; |
| 206 | }; | 205 | }; |
| 207 | |||
| 208 | } | 206 | } |
| 209 | ] | 207 | ] |
| 210 | ); | 208 | ); |
| 211 | 209 |
src/js/controller-reparto-optimo.js
| 1 | angular.module('focaModalInforme') | 1 | angular.module('focaModalInforme') |
| 2 | .controller('focaModalInformeRepartoOptimoController', | 2 | .controller('focaModalInformeRepartoOptimoController', |
| 3 | [ | 3 | [ |
| 4 | '$filter', | 4 | '$filter', |
| 5 | '$scope', | 5 | '$scope', |
| 6 | '$uibModalInstance', | 6 | '$uibModalInstance', |
| 7 | 'focaModalInformeRepartoOptimoService', | 7 | 'focaModalInformeRepartoOptimoService', |
| 8 | 'i18nService', | 8 | 'i18nService', |
| 9 | 'focaModalService', | 9 | 'focaModalService', |
| 10 | '$uibModal', | 10 | '$uibModal', |
| 11 | function($filter, $scope, $uibModalInstance, focaModalInformeRepartoOptimoService, | 11 | function($filter, $scope, $uibModalInstance, focaModalInformeRepartoOptimoService, |
| 12 | i18nService, focaModalService, $uibModal | 12 | i18nService, focaModalService, $uibModal |
| 13 | ) { | 13 | ) { |
| 14 | var fecha = new Date(); | 14 | var fecha = new Date(); |
| 15 | $scope.generando = false; | 15 | $scope.generando = false; |
| 16 | $scope.buscar = true; | 16 | $scope.buscar = true; |
| 17 | $scope.params = { | 17 | $scope.params = { |
| 18 | fechaHasta: new Date(), | 18 | fechaHasta: new Date(), |
| 19 | fechaDesde: new Date(fecha.setMonth(fecha.getMonth() - 1)), | 19 | fechaDesde: new Date(fecha.setMonth(fecha.getMonth() - 1)), |
| 20 | sector: undefined, | 20 | sector: undefined, |
| 21 | diferenciarProductos: false, | 21 | diferenciarProductos: false, |
| 22 | diferenciarMeses: false | 22 | diferenciarMeses: false |
| 23 | }; | 23 | }; |
| 24 | i18nService.setCurrentLang('es'); | 24 | i18nService.setCurrentLang('es'); |
| 25 | $scope.gridOptions = { | 25 | $scope.gridOptions = { |
| 26 | enableGridMenu: true, | 26 | enableGridMenu: true, |
| 27 | exporterMenuCsv: false, | 27 | exporterMenuCsv: false, |
| 28 | exporterPdfPageSize: 'A4', | 28 | exporterPdfPageSize: 'A4', |
| 29 | exporterPdfFooter: function (currentPage, pageCount) { | 29 | exporterPdfFooter: function (currentPage, pageCount) { |
| 30 | return { | 30 | return { |
| 31 | columns: [ | 31 | columns: [ |
| 32 | {text: $filter('date')(new Date(), 'dd/MM/yyyy'), | 32 | {text: $filter('date')(new Date(), 'dd/MM/yyyy'), |
| 33 | margin: [40, 0]}, | 33 | margin: [40, 0]}, |
| 34 | {text: currentPage + ' de ' + pageCount, | 34 | {text: currentPage + ' de ' + pageCount, |
| 35 | margin: [28, 0], alignment: 'right'} | 35 | margin: [28, 0], alignment: 'right'} |
| 36 | ] | 36 | ] |
| 37 | }; | 37 | }; |
| 38 | }, | 38 | }, |
| 39 | columnDefs: [ | 39 | columnDefs: [ |
| 40 | { | 40 | { |
| 41 | field: 'vehiculo', | 41 | field: 'vehiculo', |
| 42 | enableSorting: false, | 42 | enableSorting: false, |
| 43 | cellClass: function(grid, row, col) { | 43 | cellClass: function(grid, row, col) { |
| 44 | if (grid.getCellValue(row,col).indexOf('Sector:') !== -1) | 44 | if (grid.getCellValue(row,col).indexOf('Sector:') !== -1) |
| 45 | return 'yellow w-100'; | 45 | return 'yellow w-100'; |
| 46 | if (grid.getCellValue(row,col).indexOf('Producto:') !== -1) | 46 | if (grid.getCellValue(row,col).indexOf('Producto:') !== -1) |
| 47 | return 'red w-100'; | 47 | return 'red w-100'; |
| 48 | if (grid.getCellValue(row,col).indexOf('Fecha:') !== -1) | 48 | if (grid.getCellValue(row,col).indexOf('Fecha:') !== -1) |
| 49 | return 'green w-100'; | 49 | return 'green w-100'; |
| 50 | } | 50 | } |
| 51 | }, | 51 | }, |
| 52 | { | 52 | { |
| 53 | field: 'ltsRepartidos', | 53 | field: 'ltsRepartidos', |
| 54 | enableSorting: false, | 54 | enableSorting: false, |
| 55 | cellClass: function(grid, row, col) { | 55 | cellClass: function(grid, row, col) { |
| 56 | if (!grid.getCellValue(row,col)) | 56 | if (!grid.getCellValue(row,col)) |
| 57 | return 'd-none'; | 57 | return 'd-none'; |
| 58 | } | 58 | } |
| 59 | }, | 59 | }, |
| 60 | { | 60 | { |
| 61 | field: 'ltsOptimos', | 61 | field: 'ltsOptimos', |
| 62 | enableSorting: false, | 62 | enableSorting: false, |
| 63 | cellClass: function(grid, row, col) { | 63 | cellClass: function(grid, row, col) { |
| 64 | if (!grid.getCellValue(row,col)) | 64 | if (!grid.getCellValue(row,col)) |
| 65 | return 'd-none'; | 65 | return 'd-none'; |
| 66 | } | 66 | } |
| 67 | }, | 67 | }, |
| 68 | { | 68 | { |
| 69 | field: 'diferencia', | 69 | field: 'diferencia', |
| 70 | enableSorting: false, | 70 | enableSorting: false, |
| 71 | cellClass: function(grid, row, col) { | 71 | cellClass: function(grid, row, col) { |
| 72 | if (!grid.getCellValue(row,col)) | 72 | if (!grid.getCellValue(row,col)) |
| 73 | return 'd-none'; | 73 | return 'd-none'; |
| 74 | } | 74 | } |
| 75 | }, | 75 | }, |
| 76 | { | 76 | { |
| 77 | field: 'porcentaje', | 77 | field: 'porcentaje', |
| 78 | enableSorting: false, | 78 | enableSorting: false, |
| 79 | cellClass: function(grid, row, col) { | 79 | cellClass: function(grid, row, col) { |
| 80 | if (!grid.getCellValue(row,col)) | 80 | if (!grid.getCellValue(row,col)) |
| 81 | return 'd-none'; | 81 | return 'd-none'; |
| 82 | } | 82 | } |
| 83 | } | 83 | } |
| 84 | ] | 84 | ] |
| 85 | }; | 85 | }; |
| 86 | 86 | ||
| 87 | $scope.generarInforme = function() { | 87 | $scope.generarInforme = function() { |
| 88 | $scope.generando = true; | 88 | $scope.generando = true; |
| 89 | focaModalInformeRepartoOptimoService | 89 | focaModalInformeRepartoOptimoService |
| 90 | .getInformeData($scope.params) | 90 | .getInformeData($scope.params) |
| 91 | .then(function(res) { | 91 | .then(function(res) { |
| 92 | var result = []; | 92 | var result = []; |
| 93 | 93 | ||
| 94 | res.data.forEach(function(sector) { | 94 | res.data.forEach(function(sector) { |
| 95 | if (!$scope.params.sector || | 95 | if (!$scope.params.sector || |
| 96 | $scope.params.sector.ID === sector.idSector) { | 96 | $scope.params.sector.ID === sector.idSector) { |
| 97 | //AGREGO SECTORES | 97 | //AGREGO SECTORES |
| 98 | result.push({ | 98 | result.push({ |
| 99 | vehiculo: 'Sector: ' + | 99 | vehiculo: 'Sector: ' + |
| 100 | $filter('rellenarDigitos')(sector.idSector, 2, '0') + | 100 | $filter('rellenarDigitos')(sector.idSector, 2, '0') + |
| 101 | ' - ' + sector.sector.trim() | 101 | ' - ' + sector.sector.trim() |
| 102 | }); | 102 | }); |
| 103 | if (!$scope.params.diferenciarProductos) | 103 | if (!$scope.params.diferenciarProductos) |
| 104 | sector.productos = unirProductos(sector.productos); | 104 | sector.productos = unirProductos(sector.productos); |
| 105 | 105 | ||
| 106 | sector.productos.forEach(function(producto) { | 106 | sector.productos.forEach(function(producto) { |
| 107 | //AGREGO PRODUCTOS | 107 | //AGREGO PRODUCTOS |
| 108 | if ($scope.params.diferenciarProductos) { | 108 | if ($scope.params.diferenciarProductos) { |
| 109 | result.push({ | 109 | result.push({ |
| 110 | vehiculo: 'Producto: ' + | 110 | vehiculo: 'Producto: ' + |
| 111 | producto.idProducto + | 111 | producto.idProducto + |
| 112 | ' - ' + producto.producto | 112 | ' - ' + producto.producto |
| 113 | }); | 113 | }); |
| 114 | } | 114 | } |
| 115 | if (!$scope.params.diferenciarMeses) { | 115 | if (!$scope.params.diferenciarMeses) { |
| 116 | producto.fechas = unirFechas(producto.fechas); | 116 | producto.fechas = unirFechas(producto.fechas); |
| 117 | } | 117 | } |
| 118 | producto.fechas.forEach(function(fecha) { | 118 | producto.fechas.forEach(function(fecha) { |
| 119 | //AGREGO FECHAS | 119 | //AGREGO FECHAS |
| 120 | if ($scope.params.diferenciarMeses) { | 120 | if ($scope.params.diferenciarMeses) { |
| 121 | result.push({ | 121 | result.push({ |
| 122 | vehiculo: | 122 | vehiculo: |
| 123 | 'Fecha: ' + fecha.month + ' - ' + fecha.year | 123 | 'Fecha: ' + fecha.month + ' - ' + fecha.year |
| 124 | }); | 124 | }); |
| 125 | } else { | 125 | } else { |
| 126 | result.push({ | 126 | result.push({ |
| 127 | vehiculo: | 127 | vehiculo: |
| 128 | 'Fecha: ' + fecha.year | 128 | 'Fecha: ' + fecha.year |
| 129 | }); | 129 | }); |
| 130 | } | 130 | } |
| 131 | fecha.vehiculos.forEach(function(vehiculo) { | 131 | fecha.vehiculos.forEach(function(vehiculo) { |
| 132 | //AGREGO VEHICULOS | 132 | //AGREGO VEHICULOS |
| 133 | result.push({ | 133 | result.push({ |
| 134 | vehiculo: vehiculo.vehiculo, | 134 | vehiculo: vehiculo.vehiculo, |
| 135 | ltsRepartidos: | 135 | ltsRepartidos: |
| 136 | $filter('number') | 136 | $filter('number') |
| 137 | (vehiculo.data.ltsRepartidos, 2), | 137 | (vehiculo.data.ltsRepartidos, 2), |
| 138 | ltsOptimos: | 138 | ltsOptimos: |
| 139 | $filter('number') | 139 | $filter('number') |
| 140 | (vehiculo.data.ltsOptimos, 2), | 140 | (vehiculo.data.ltsOptimos, 2), |
| 141 | diferencia: | 141 | diferencia: |
| 142 | $filter('number') | 142 | $filter('number') |
| 143 | (vehiculo.data.diferencia, 2), | 143 | (vehiculo.data.diferencia, 2), |
| 144 | porcentaje: | 144 | porcentaje: |
| 145 | $filter('number') | 145 | $filter('number') |
| 146 | (vehiculo.data.porcentaje, 2) + '%' | 146 | (vehiculo.data.porcentaje, 2) + '%' |
| 147 | }); | 147 | }); |
| 148 | }); | 148 | }); |
| 149 | }); | 149 | }); |
| 150 | }); | 150 | }); |
| 151 | } | 151 | } |
| 152 | }); | 152 | }); |
| 153 | 153 | ||
| 154 | $scope.gridOptions.data = result; | 154 | $scope.gridOptions.data = result; |
| 155 | $scope.generando = false; | 155 | $scope.generando = false; |
| 156 | $scope.buscar = false; | 156 | $scope.buscar = false; |
| 157 | }); | 157 | }); |
| 158 | }; | 158 | }; |
| 159 | 159 | ||
| 160 | |||
| 161 | $scope.seleccionarSector = function(key) { | 160 | $scope.seleccionarSector = function(key) { |
| 162 | if (key === 13) { | 161 | if (key === 13) { |
| 163 | var parametrosModal = { | 162 | var parametrosModal = { |
| 164 | titulo: 'Búsqueda de Sector', | 163 | titulo: 'Búsqueda de Sector', |
| 164 | searchText: $scope.params.sector.NOMBRE, | ||
| 165 | query: '/sector', | 165 | query: '/sector', |
| 166 | columnas: [ | 166 | columnas: [ |
| 167 | { | 167 | { |
| 168 | nombre: 'Código', | 168 | nombre: 'Código', |
| 169 | propiedad: 'ID' | 169 | propiedad: 'ID' |
| 170 | }, | 170 | }, |
| 171 | { | 171 | { |
| 172 | nombre: 'Nombre', | 172 | nombre: 'Nombre', |
| 173 | propiedad: 'NOMBRE' | 173 | propiedad: 'NOMBRE' |
| 174 | } | 174 | } |
| 175 | ], | 175 | ], |
| 176 | size: 'md' | 176 | size: 'md' |
| 177 | }; | 177 | }; |
| 178 | focaModalService.modal(parametrosModal).then( | 178 | focaModalService.modal(parametrosModal).then( |
| 179 | function(sector) { | 179 | function(sector) { |
| 180 | $scope.params.sector = sector; | 180 | $scope.params.sector = sector; |
| 181 | }, function() {} | 181 | }, function() {} |
| 182 | ); | 182 | ); |
| 183 | } | 183 | } |
| 184 | }; | 184 | }; |
| 185 | $scope.clearSector = function() { | 185 | $scope.clearSector = function() { |
| 186 | $scope.params.sector = undefined; | 186 | $scope.params.sector = undefined; |
| 187 | }; | 187 | }; |
| 188 | $scope.volver = function() { | 188 | $scope.volver = function() { |
| 189 | $scope.buscar = true; | 189 | $scope.buscar = true; |
| 190 | }; | 190 | }; |
| 191 | $scope.cancel = function() { | 191 | $scope.cancel = function() { |
| 192 | $uibModalInstance.dismiss('Cancelar'); | 192 | $uibModalInstance.dismiss('Cancelar'); |
| 193 | }; | 193 | }; |
| 194 | 194 | ||
| 195 | function unirProductos(productos) { | 195 | function unirProductos(productos) { |
| 196 | var result = [{fechas: []}]; | 196 | var result = [{fechas: []}]; |
| 197 | productos.forEach(function(producto) { | 197 | productos.forEach(function(producto) { |
| 198 | producto.fechas.forEach(function(fecha) { | 198 | producto.fechas.forEach(function(fecha) { |
| 199 | var existe = result[0].fechas.filter(function(result) { | 199 | var existe = result[0].fechas.filter(function(result) { |
| 200 | return result.fecha === fecha.fecha; | 200 | return result.fecha === fecha.fecha; |
| 201 | }); | 201 | }); |
| 202 | if (existe.length) { | 202 | if (existe.length) { |
| 203 | existe[0].vehiculos = existe[0].vehiculos.concat(fecha.vehiculos); | 203 | existe[0].vehiculos = existe[0].vehiculos.concat(fecha.vehiculos); |
| 204 | } else { | 204 | } else { |
| 205 | result[0].fechas.push(fecha); | 205 | result[0].fechas.push(fecha); |
| 206 | } | 206 | } |
| 207 | 207 | ||
| 208 | }); | 208 | }); |
| 209 | }); | 209 | }); |
| 210 | result[0].fechas.forEach(function(fecha) { | 210 | result[0].fechas.forEach(function(fecha) { |
| 211 | fecha.vehiculos = unirVehiculos(fecha.vehiculos); | 211 | fecha.vehiculos = unirVehiculos(fecha.vehiculos); |
| 212 | }); | 212 | }); |
| 213 | return result; | 213 | return result; |
| 214 | } | 214 | } |
| 215 | 215 | ||
| 216 | function unirFechas(fechas) { | 216 | function unirFechas(fechas) { |
| 217 | var results = []; | 217 | var results = []; |
| 218 | fechas.forEach(function(fecha) { | 218 | fechas.forEach(function(fecha) { |
| 219 | var existe = results.filter(function(result) { | 219 | var existe = results.filter(function(result) { |
| 220 | return result.year === fecha.year; | 220 | return result.year === fecha.year; |
| 221 | }); | 221 | }); |
| 222 | 222 | ||
| 223 | if (existe.length) { | 223 | if (existe.length) { |
| 224 | existe[0].vehiculos = existe[0].vehiculos.concat(fecha.vehiculos); | 224 | existe[0].vehiculos = existe[0].vehiculos.concat(fecha.vehiculos); |
| 225 | } else { | 225 | } else { |
| 226 | results.push({ | 226 | results.push({ |
| 227 | year: fecha.year, | 227 | year: fecha.year, |
| 228 | vehiculos: fecha.vehiculos | 228 | vehiculos: fecha.vehiculos |
| 229 | }); | 229 | }); |
| 230 | } | 230 | } |
| 231 | }); | 231 | }); |
| 232 | 232 | ||
| 233 | results.forEach(function(result) { | 233 | results.forEach(function(result) { |
| 234 | result.vehiculos = unirVehiculos(result.vehiculos); | 234 | result.vehiculos = unirVehiculos(result.vehiculos); |
| 235 | }); | 235 | }); |
| 236 | return results; | 236 | return results; |
| 237 | } | 237 | } |
| 238 | 238 | ||
| 239 | function unirVehiculos(vehiculos) { | 239 | function unirVehiculos(vehiculos) { |
| 240 | var results = []; | 240 | var results = []; |
| 241 | vehiculos.forEach(function(vehiculo) { | 241 | vehiculos.forEach(function(vehiculo) { |
| 242 | var existe = results.filter(function(result) { | 242 | var existe = results.filter(function(result) { |
| 243 | return result.vehiculo === vehiculo.vehiculo; | 243 | return result.vehiculo === vehiculo.vehiculo; |
| 244 | }); | 244 | }); |
| 245 | 245 | ||
| 246 | if (existe.length) { | 246 | if (existe.length) { |
| 247 | existe[0].data.kms += vehiculo.data.kms; | 247 | existe[0].data.kms += vehiculo.data.kms; |
| 248 | existe[0].data.lts += vehiculo.data.lts; | 248 | existe[0].data.lts += vehiculo.data.lts; |
| 249 | existe[0].data.viajes += vehiculo.data.viajes; | 249 | existe[0].data.viajes += vehiculo.data.viajes; |
| 250 | } else { | 250 | } else { |
| 251 | results.push(vehiculo); | 251 | results.push(vehiculo); |
| 252 | } | 252 | } |
| 253 | }); | 253 | }); |
| 254 | return results; | 254 | return results; |
| 255 | } | 255 | } |
| 256 | } | 256 | } |
| 257 | ] | 257 | ] |
| 258 | ); | 258 | ); |