Commit 65a17285eac116acaf54ef9e2fc6b8ec8f7296fb

Authored by Eric Fernandez
Exists in master

Merge branch 'master' into 'master'

agrego foca-botonera-lateral

See merge request !5
1 const templateCache = require('gulp-angular-templatecache'); 1 const templateCache = require('gulp-angular-templatecache');
2 const clean = require('gulp-clean'); 2 const clean = require('gulp-clean');
3 const concat = require('gulp-concat'); 3 const concat = require('gulp-concat');
4 const htmlmin = require('gulp-htmlmin'); 4 const htmlmin = require('gulp-htmlmin');
5 const rename = require('gulp-rename'); 5 const rename = require('gulp-rename');
6 const uglify = require('gulp-uglify'); 6 const uglify = require('gulp-uglify');
7 const gulp = require('gulp'); 7 const gulp = require('gulp');
8 const pump = require('pump'); 8 const pump = require('pump');
9 const jshint = require('gulp-jshint'); 9 const jshint = require('gulp-jshint');
10 const replace = require('gulp-replace'); 10 const replace = require('gulp-replace');
11 const connect = require('gulp-connect'); 11 const connect = require('gulp-connect');
12 12
13 var paths = { 13 var paths = {
14 srcJS: 'src/js/*.js', 14 srcJS: 'src/js/*.js',
15 srcViews: 'src/views/*.html', 15 srcViews: 'src/views/*.html',
16 tmp: 'tmp', 16 tmp: 'tmp',
17 dist: 'dist/' 17 dist: 'dist/'
18 }; 18 };
19 19
20 gulp.task('templates', ['clean'], function() { 20 gulp.task('templates', ['clean'], function() {
21 return pump( 21 return pump(
22 [ 22 [
23 gulp.src(paths.srcViews), 23 gulp.src(paths.srcViews),
24 htmlmin(), 24 htmlmin(),
25 templateCache('views.js', { 25 templateCache('views.js', {
26 module: 'focaCrearHojaRuta', 26 module: 'focaCrearHojaRuta',
27 root: '' 27 root: ''
28 }), 28 }),
29 gulp.dest(paths.tmp) 29 gulp.dest(paths.tmp)
30 ] 30 ]
31 ); 31 );
32 }); 32 });
33 33
34 gulp.task('uglify', ['templates'], function() { 34 gulp.task('uglify', ['templates'], function() {
35 return pump( 35 return pump(
36 [ 36 [
37 gulp.src([ 37 gulp.src([
38 paths.srcJS, 38 paths.srcJS,
39 'tmp/views.js' 39 'tmp/views.js'
40 ]), 40 ]),
41 concat('foca-crear-hoja-ruta.js'), 41 concat('foca-crear-hoja-ruta.js'),
42 replace('src/views/', ''), 42 replace('src/views/', ''),
43 replace("'ngRoute', 'focaModalRemito', 'ui.bootstrap'", ''), 43 replace("'ngRoute','focaModalRemito','ui.bootstrap','focaBotoneraLateral'", ''),
44 gulp.dest(paths.tmp), 44 gulp.dest(paths.tmp),
45 rename('foca-crear-hoja-ruta.min.js'), 45 rename('foca-crear-hoja-ruta.min.js'),
46 uglify(), 46 uglify(),
47 gulp.dest(paths.dist) 47 gulp.dest(paths.dist)
48 ] 48 ]
49 ); 49 );
50 }); 50 });
51 51
52 gulp.task('clean', function() { 52 gulp.task('clean', function() {
53 return gulp.src(['tmp', 'dist'], {read: false}) 53 return gulp.src(['tmp', 'dist'], {read: false})
54 .pipe(clean()); 54 .pipe(clean());
55 }); 55 });
56 56
57 gulp.task('pre-commit', function() { 57 gulp.task('pre-commit', function() {
58 return pump( 58 return pump(
59 [ 59 [
60 gulp.src(paths.srcJS), 60 gulp.src(paths.srcJS),
61 jshint('.jshintrc'), 61 jshint('.jshintrc'),
62 jshint.reporter('default'), 62 jshint.reporter('default'),
63 jshint.reporter('fail') 63 jshint.reporter('fail')
64 ] 64 ]
65 ); 65 );
66 66
67 gulp.start('uglify'); 67 gulp.start('uglify');
68 }); 68 });
69 69
70 gulp.task('webserver', function() { 70 gulp.task('webserver', function() {
71 pump [ 71 pump [
72 connect.server({port: 3300, host: '0.0.0.0'}) 72 connect.server({port: 3300, host: '0.0.0.0'})
73 ] 73 ]
74 }); 74 });
75 75
76 gulp.task('clean-post-install', function() { 76 gulp.task('clean-post-install', function() {
77 return gulp.src(['src', 'tmp', '.jshintrc','readme.md', '.gitignore', 'gulpfile.js', 77 return gulp.src(['src', 'tmp', '.jshintrc','readme.md', '.gitignore', 'gulpfile.js',
78 'index.html'], {read: false}) 78 'index.html'], {read: false})
79 .pipe(clean()); 79 .pipe(clean());
80 }); 80 });
81 81
82 gulp.task('default', ['webserver']); 82 gulp.task('default', ['webserver']);
83 83
84 gulp.task('watch', function() { 84 gulp.task('watch', function() {
85 gulp.watch([paths.srcJS, paths.srcViews], ['uglify']); 85 gulp.watch([paths.srcJS, paths.srcViews], ['uglify']);
86 }); 86 });
87 87
1 angular.module('focaCrearHojaRuta', ['ngRoute', 'focaModalRemito', 'ui.bootstrap'/*, 1 angular.module('focaCrearHojaRuta', [
2 'focaBusquedaProductos', 2 'ngRoute',
3 'focaModalRemito',
4 'ui.bootstrap',
5 'focaBotoneraLateral',
6 /*'focaBusquedaProductos',
3 'focaModalProveedor', 7 'focaModalProveedor',
4 'focaBusquedaCliente', 8 'focaBusquedaCliente',
5 'focaModalPrecioCondicion', 9 'focaModalPrecioCondicion',
6 'focaModalFlete', 10 'focaModalFlete',
7 'focaDirectivas', 11 'focaDirectivas',
8 'focaModal', 12 'focaModal',
9 'focaModalDomicilio', 13 'focaModalDomicilio',
10 'focaModalMoneda', 14 'focaModalMoneda',
11 'focaModalCotizacion', 15 'focaModalCotizacion',
12 'focaSeguimiento', 16 'focaSeguimiento',
13 'angular-ladda', 17 'angular-ladda',
14 'cordovaGeolocationModule'*/ 18 'cordovaGeolocationModule'*/
15 ]); 19 ]);
16 20
src/js/controller.js
1 angular.module('focaCrearHojaRuta') .controller('hojaRutaCtrl', 1 angular.module('focaCrearHojaRuta') .controller('hojaRutaCtrl',
2 [ 2 [
3 '$scope', '$uibModal', '$location', '$filter', 'crearHojaRutaService', 'focaModalService', 3 '$scope',
4 function($scope, $uibModal, $location, $filter, crearHojaRutaService, focaModalService) { 4 '$uibModal',
5 '$location',
6 '$filter',
7 '$timeout',
8 'crearHojaRutaService',
9 'focaModalService',
10 'focaBotoneraLateralService',
11 function($scope, $uibModal, $location, $filter, $timeout,
12 crearHojaRutaService, focaModalService, focaBotoneraLateralService) {
5 13
6 $scope.botonera = crearHojaRutaService.getBotonera(); 14 $scope.botonera = crearHojaRutaService.getBotonera();
7 $scope.datepickerAbierto = false; 15 $scope.datepickerAbierto = false;
8 16
9 $scope.show = false; 17 $scope.show = false;
10 $scope.cargando = true; 18 $scope.cargando = true;
11 $scope.dateOptions = { 19 $scope.dateOptions = {
12 maxDate: new Date(), 20 maxDate: new Date(),
13 minDate: new Date(2010, 0, 1) 21 minDate: new Date(2010, 0, 1)
14 }; 22 };
15 23
16 $scope.hojaRuta = { 24 $scope.hojaRuta = {
17 fecha: new Date(), 25 fecha: new Date(),
18 litros: 0, 26 litros: 0,
19 chofer: {}, 27 chofer: {},
20 vehiculo: { 28 vehiculo: {
21 capacidad: 0 29 capacidad: 0
22 }, 30 },
23 transportista: {}, 31 transportista: {},
24 tarifario: { 32 tarifario: {
25 costo: null 33 costo: null
26 } 34 }
27 }; 35 };
28 36
29 $scope.showCabecera = true; 37 $scope.showCabecera = true;
30 38
31 $scope.now = new Date(); 39 $scope.now = new Date();
32 $scope.puntoVenta = '0000'; 40 $scope.puntoVenta = '0000';
33 $scope.comprobante = '00000000'; 41 $scope.comprobante = '00000000';
34 $scope.remitosTabla = []; 42 $scope.remitosTabla = [];
35 $scope.idLista = undefined; 43 $scope.idLista = undefined;
36 //La pantalla solo se usa para cargar pedidos 44 //La pantalla solo se usa para cargar pedidos
37 //var hojaRutaTemp = crearHojaRutaService.getHojaRuta(); 45 //var hojaRutaTemp = crearHojaRutaService.getHojaRuta();
38 46
47 //SETEO BOTONERA LATERAL
48 $timeout(function() {
49 focaBotoneraLateralService.showSalir(true);
50 focaBotoneraLateralService.showPausar(true);
51 focaBotoneraLateralService.showGuardar(true, $scope.crearNotaPedido);
52 });
53
39 crearHojaRutaService.getNumeroHojaRuta().then( 54 crearHojaRutaService.getNumeroHojaRuta().then(
40 function(res) { 55 function(res) {
41 $scope.puntoVenta = $scope.rellenar(res.data.sucursal, 4); 56 $scope.puntoVenta = $scope.rellenar(res.data.sucursal, 4);
42 $scope.comprobante = $scope.rellenar(res.data.numeroHojaRuta, 8); 57 $scope.comprobante = $scope.rellenar(res.data.numeroHojaRuta, 8);
43 }, 58 },
44 function(err) { 59 function(err) {
45 focaModalService.alert('La terminal no esta configurada correctamente'); 60 focaModalService.alert('La terminal no esta configurada correctamente');
46 console.info(err); 61 console.info(err);
47 } 62 }
48 ); 63 );
49 //La pantalla solo se usa para cargar pedidos 64 //La pantalla solo se usa para cargar pedidos
50 // if (hojaRutaTemp !== undefined) { 65 // if (hojaRutaTemp !== undefined) {
51 // hojaRutaTemp.fechaCarga = new Date(hojaRutaTemp.fechaCarga); 66 // hojaRutaTemp.fechaCarga = new Date(hojaRutaTemp.fechaCarga);
52 // $scope.hojaRuta = hojaRutaTemp; 67 // $scope.hojaRuta = hojaRutaTemp;
53 // $scope.hojaRuta.flete = ($scope.hojaRuta.flete).toString(); 68 // $scope.hojaRuta.flete = ($scope.hojaRuta.flete).toString();
54 // $scope.hojaRuta.bomba = ($scope.hojaRuta.bomba).toString(); 69 // $scope.hojaRuta.bomba = ($scope.hojaRuta.bomba).toString();
55 // $scope.idLista = $scope.hojaRuta.precioCondicion; 70 // $scope.idLista = $scope.hojaRuta.precioCondicion;
56 // crearHojaRutaService 71 // crearHojaRutaService
57 // .getArticulosByIdHojaRuta($scope.hojaRuta.id).then( 72 // .getArticulosByIdHojaRuta($scope.hojaRuta.id).then(
58 // function(res) { 73 // function(res) {
59 // $scope.remitosTabla = res.data; 74 // $scope.remitosTabla = res.data;
60 // } 75 // }
61 // ); 76 // );
62 //TODO DOMICILIOS QUE SE CARGAN AL EDITAR NOTA DE PEDIDO 77 //TODO DOMICILIOS QUE SE CARGAN AL EDITAR NOTA DE PEDIDO
63 //(NO REQUERIDO EN ESTA VERSION) 78 //(NO REQUERIDO EN ESTA VERSION)
64 // crearHojaRutaService.getDomiciliosByIdHojaRuta($scope.hojaRuta.id).then( 79 // crearHojaRutaService.getDomiciliosByIdHojaRuta($scope.hojaRuta.id).then(
65 // function(res) { 80 // function(res) {
66 // $scope.hojaRuta.domicilio = res.data; 81 // $scope.hojaRuta.domicilio = res.data;
67 // } 82 // }
68 // ); 83 // );
69 // } else { 84 // } else {
70 // $scope.hojaRuta.fechaCarga = new Date(); 85 // $scope.hojaRuta.fechaCarga = new Date();
71 // $scope.hojaRuta.bomba = '0'; 86 // $scope.hojaRuta.bomba = '0';
72 // $scope.hojaRuta.flete = '0'; 87 // $scope.hojaRuta.flete = '0';
73 // $scope.idLista = undefined; 88 // $scope.idLista = undefined;
74 // } 89 // }
75 //TO DO - FUNCIONES PARA MULTIPLES DOMICILIOS NO IMPLEMENTADAS EN ESTA DEMO 90 //TO DO - FUNCIONES PARA MULTIPLES DOMICILIOS NO IMPLEMENTADAS EN ESTA DEMO
76 // $scope.addNewDom = function() { 91 // $scope.addNewDom = function() {
77 // $scope.hojaRuta.domicilio.push({ 'id': 0 }); 92 // $scope.hojaRuta.domicilio.push({ 'id': 0 });
78 // }; 93 // };
79 // $scope.removeNewChoice = function(choice) { 94 // $scope.removeNewChoice = function(choice) {
80 // if ($scope.hojaRuta.domicilio.length > 1) { 95 // if ($scope.hojaRuta.domicilio.length > 1) {
81 // $scope.hojaRuta.domicilio.splice($scope.hojaRuta.domicilio.findIndex( 96 // $scope.hojaRuta.domicilio.splice($scope.hojaRuta.domicilio.findIndex(
82 // function(c) { 97 // function(c) {
83 // return c.$$hashKey === choice.$$hashKey; 98 // return c.$$hashKey === choice.$$hashKey;
84 // } 99 // }
85 // ), 1); 100 // ), 1);
86 // } 101 // }
87 // }; 102 // };
88 103
89 $scope.crearHojaRuta = function() { 104 $scope.crearHojaRuta = function() {
90 if($scope.hojaRuta.litros <= 0) { 105 if($scope.hojaRuta.litros <= 0) {
91 focaModalService.alert('Ingrese Remitos'); 106 focaModalService.alert('Ingrese Remitos');
92 return; 107 return;
93 } 108 }
94 109
95 if(!$scope.hojaRuta.chofer.id) { 110 if(!$scope.hojaRuta.chofer.id) {
96 focaModalService.alert('Ingrese Chofer'); 111 focaModalService.alert('Ingrese Chofer');
97 return; 112 return;
98 } 113 }
99 114
100 if(!$scope.hojaRuta.vehiculo.id) { 115 if(!$scope.hojaRuta.vehiculo.id) {
101 focaModalService.alert('Ingrese Vehiculo'); 116 focaModalService.alert('Ingrese Vehiculo');
102 return; 117 return;
103 } 118 }
104 119
105 if(!$scope.hojaRuta.transportista.codigo) { 120 if(!$scope.hojaRuta.transportista.codigo) {
106 focaModalService.alert('Ingrese Transportista'); 121 focaModalService.alert('Ingrese Transportista');
107 return; 122 return;
108 } 123 }
109 124
110 if($scope.hojaRuta.vehiculo.capacidad < $scope.hojaRuta.litros) { 125 if($scope.hojaRuta.vehiculo.capacidad < $scope.hojaRuta.litros) {
111 focaModalService.alert( 126 focaModalService.alert(
112 'La capacidad del Vehiculo es menor a lo ingresado en Remitos' 127 'La capacidad del Vehiculo es menor a lo ingresado en Remitos'
113 ); 128 );
114 return; 129 return;
115 } 130 }
116 131
117 if(!$scope.hojaRuta.tarifario.costo) { 132 if(!$scope.hojaRuta.tarifario.costo) {
118 focaModalService.alert('Ingrese Tarifario'); 133 focaModalService.alert('Ingrese Tarifario');
119 return; 134 return;
120 } 135 }
121 136
122 var date = new Date(); 137 var date = new Date();
123 var save = { 138 var save = {
124 hojaRuta: { 139 hojaRuta: {
125 id: 0, 140 id: 0,
126 fechaCreacion: 141 fechaCreacion:
127 new Date(date.getTime() - (date.getTimezoneOffset() * 60000)) 142 new Date(date.getTime() - (date.getTimezoneOffset() * 60000))
128 .toISOString().slice(0, 19) .replace('T', ' '), 143 .toISOString().slice(0, 19) .replace('T', ' '),
129 idTransportista: $scope.hojaRuta.transportista.codigo, 144 idTransportista: $scope.hojaRuta.transportista.codigo,
130 idChofer: $scope.hojaRuta.chofer.id, 145 idChofer: $scope.hojaRuta.chofer.id,
131 idVehiculo: $scope.hojaRuta.vehiculo.id, 146 idVehiculo: $scope.hojaRuta.vehiculo.id,
132 tarifaFlete: $scope.hojaRuta.tarifario.costo 147 tarifaFlete: $scope.hojaRuta.tarifario.costo
133 }, 148 },
134 remitos: $scope.remitosTabla 149 remitos: $scope.remitosTabla
135 }; 150 };
136 151
137 crearHojaRutaService.crearHojaRuta(save).then( 152 crearHojaRutaService.crearHojaRuta(save).then(
138 function(data) { 153 function(data) {
139 focaModalService.alert( 154 focaModalService.alert(
140 'Hoja ruta creada Nº: ' + 155 'Hoja ruta creada Nº: ' +
141 $scope.rellenar(data.data.sucursal, 4) + 156 $scope.rellenar(data.data.sucursal, 4) +
142 '-' + 157 '-' +
143 $scope.rellenar(data.data.numeroHojaRuta, 8) 158 $scope.rellenar(data.data.numeroHojaRuta, 8)
144 ); 159 );
145 $scope.hojaRuta = { 160 $scope.hojaRuta = {
146 fecha: new Date(), 161 fecha: new Date(),
147 litros: 0, 162 litros: 0,
148 chofer: {}, 163 chofer: {},
149 vehiculo: { 164 vehiculo: {
150 capacidad: 0 165 capacidad: 0
151 }, 166 },
152 transportista: {}, 167 transportista: {},
153 tarifario: { 168 tarifario: {
154 costo: null 169 costo: null
155 } 170 }
156 }; 171 };
157 172
158 $scope.remitosTabla = []; 173 $scope.remitosTabla = [];
159 $scope.$broadcast('cleanCabecera'); 174 $scope.$broadcast('cleanCabecera');
160 175
161 crearHojaRutaService.getNumeroHojaRuta().then(function(res) { 176 crearHojaRutaService.getNumeroHojaRuta().then(function(res) {
162 $scope.comprobante = $scope.rellenar(res.data.numeroHojaRuta, 8); 177 $scope.comprobante = $scope.rellenar(res.data.numeroHojaRuta, 8);
163 }); 178 });
164 }, 179 },
165 function(error) { 180 function(error) {
166 focaModalService.alert('Hubo un error al crear la nota de pedido'); 181 focaModalService.alert('Hubo un error al crear la nota de pedido');
167 console.info(error); 182 console.info(error);
168 } 183 }
169 ); 184 );
170 }; 185 };
171 186
172 $scope.seleccionarTransportista = function() { 187 $scope.seleccionarTransportista = function() {
173 var modalInstance = $uibModal.open( 188 var modalInstance = $uibModal.open(
174 { 189 {
175 ariaLabelledBy: 'Busqueda de Transportista', 190 ariaLabelledBy: 'Busqueda de Transportista',
176 templateUrl: 'modal-proveedor.html', 191 templateUrl: 'modal-proveedor.html',
177 controller: 'focaModalProveedorCtrl', 192 controller: 'focaModalProveedorCtrl',
178 size: 'lg', 193 size: 'lg',
179 resolve: { 194 resolve: {
180 transportista: function() { 195 transportista: function() {
181 return true; 196 return true;
182 } 197 }
183 } 198 }
184 } 199 }
185 ); 200 );
186 modalInstance.result.then( 201 modalInstance.result.then(
187 function(proveedor) { 202 function(proveedor) {
188 console.info($scope.hojaRuta); 203 console.info($scope.hojaRuta);
189 $scope.hojaRuta.transportista.codigo = proveedor.COD; 204 $scope.hojaRuta.transportista.codigo = proveedor.COD;
190 $scope.$broadcast('addCabecera', { 205 $scope.$broadcast('addCabecera', {
191 label: 'Transportista:', 206 label: 'Transportista:',
192 valor: proveedor.NOM 207 valor: proveedor.NOM
193 }); 208 });
194 }, function() { 209 }, function() {
195 210
196 } 211 }
197 ); 212 );
198 }; 213 };
199 214
200 $scope.seleccionarChofer = function() { 215 $scope.seleccionarChofer = function() {
201 var modalInstance = $uibModal.open( 216 var modalInstance = $uibModal.open(
202 { 217 {
203 ariaLabelledBy: 'Busqueda de Chofer', 218 ariaLabelledBy: 'Busqueda de Chofer',
204 templateUrl: 'modal-chofer.html', 219 templateUrl: 'modal-chofer.html',
205 controller: 'focaModalChoferController', 220 controller: 'focaModalChoferController',
206 size: 'lg' 221 size: 'lg'
207 } 222 }
208 ); 223 );
209 224
210 modalInstance.result.then( 225 modalInstance.result.then(
211 function(chofer) { 226 function(chofer) {
212 $scope.hojaRuta.chofer = chofer; 227 $scope.hojaRuta.chofer = chofer;
213 $scope.$broadcast('addCabecera', { 228 $scope.$broadcast('addCabecera', {
214 label: 'Chofer:', 229 label: 'Chofer:',
215 valor: chofer.nombre 230 valor: chofer.nombre
216 }); 231 });
217 }, function() { 232 }, function() {
218 // funcion ejecutada cuando se cancela el modal 233 // funcion ejecutada cuando se cancela el modal
219 } 234 }
220 ); 235 );
221 }; 236 };
222 237
223 $scope.seleccionarVehiculo = function() { 238 $scope.seleccionarVehiculo = function() {
224 var modalInstance = $uibModal.open( 239 var modalInstance = $uibModal.open(
225 { 240 {
226 ariaLabelledBy: 'Busqueda de Vehiculo', 241 ariaLabelledBy: 'Busqueda de Vehiculo',
227 templateUrl: 'modal-vehiculo.html', 242 templateUrl: 'modal-vehiculo.html',
228 controller: 'focaModalVehiculoController', 243 controller: 'focaModalVehiculoController',
229 size: 'lg' 244 size: 'lg'
230 } 245 }
231 ); 246 );
232 247
233 modalInstance.result.then( 248 modalInstance.result.then(
234 function(vehiculo) { 249 function(vehiculo) {
235 $scope.hojaRuta.vehiculo = vehiculo; 250 $scope.hojaRuta.vehiculo = vehiculo;
236 $scope.$broadcast('addCabecera', { 251 $scope.$broadcast('addCabecera', {
237 label: 'Tractor:', 252 label: 'Tractor:',
238 valor: vehiculo.tractor 253 valor: vehiculo.tractor
239 }); 254 });
240 $scope.$broadcast('addCabecera', { 255 $scope.$broadcast('addCabecera', {
241 label: 'Semi:', 256 label: 'Semi:',
242 valor: vehiculo.semi 257 valor: vehiculo.semi
243 }); 258 });
244 $scope.$broadcast('addCabecera', { 259 $scope.$broadcast('addCabecera', {
245 label: 'Capacidad:', 260 label: 'Capacidad:',
246 valor: vehiculo.capacidad 261 valor: vehiculo.capacidad
247 }); 262 });
248 }, function() { 263 }, function() {
249 // funcion ejecutada cuando se cancela el modal 264 // funcion ejecutada cuando se cancela el modal
250 } 265 }
251 ); 266 );
252 }; 267 };
253 268
254 $scope.seleccionarTarifario = function() { 269 $scope.seleccionarTarifario = function() {
255 var modalInstance = $uibModal.open( 270 var modalInstance = $uibModal.open(
256 { 271 {
257 ariaLabelledBy: 'Busqueda de Tarifario', 272 ariaLabelledBy: 'Busqueda de Tarifario',
258 templateUrl: 'modal-tarifa-flete.html', 273 templateUrl: 'modal-tarifa-flete.html',
259 controller: 'focaModalTarifaFleteController', 274 controller: 'focaModalTarifaFleteController',
260 size: 'lg', 275 size: 'lg',
261 resolve: { 276 resolve: {
262 parametrosTarifaFlete: function() { 277 parametrosTarifaFlete: function() {
263 return $scope.hojaRuta.tarifario.costo; 278 return $scope.hojaRuta.tarifario.costo;
264 } 279 }
265 } 280 }
266 } 281 }
267 ); 282 );
268 283
269 modalInstance.result.then( 284 modalInstance.result.then(
270 function(tarifario) { 285 function(tarifario) {
271 $scope.hojaRuta.tarifario = tarifario; 286 $scope.hojaRuta.tarifario = tarifario;
272 $scope.$broadcast('addCabecera', { 287 $scope.$broadcast('addCabecera', {
273 label: 'Tarifario:', 288 label: 'Tarifario:',
274 valor: tarifario.costo 289 valor: tarifario.costo
275 }); 290 });
276 }, function() { 291 }, function() {
277 // funcion ejecutada cuando se cancela el modal 292 // funcion ejecutada cuando se cancela el modal
278 } 293 }
279 ); 294 );
280 }; 295 };
281 296
282 $scope.seleccionarRemitos = function() { 297 $scope.seleccionarRemitos = function() {
283 var modalInstance = $uibModal.open( 298 var modalInstance = $uibModal.open(
284 { 299 {
285 ariaLabelledBy: 'Busqueda de Remito', 300 ariaLabelledBy: 'Busqueda de Remito',
286 templateUrl: 'foca-modal-remito.html', 301 templateUrl: 'foca-modal-remito.html',
287 controller: 'focaModalRemitoController', 302 controller: 'focaModalRemitoController',
288 size: 'lg', 303 size: 'lg',
289 resolve: {usadoPor: function() {return 'hojaRuta';}} 304 resolve: {usadoPor: function() {return 'hojaRuta';}}
290 } 305 }
291 ); 306 );
292 modalInstance.result.then( 307 modalInstance.result.then(
293 function(remito) { 308 function(remito) {
294 for (var i = $scope.remitosTabla.length - 1; i >= 0; i--) { 309 for (var i = $scope.remitosTabla.length - 1; i >= 0; i--) {
295 if ($scope.remitosTabla[i].id === remito.id) { 310 if ($scope.remitosTabla[i].id === remito.id) {
296 focaModalService.alert('Remito ya incluido'); 311 focaModalService.alert('Remito ya incluido');
297 return; 312 return;
298 } 313 }
299 } 314 }
300 315
301 var litros = 0; 316 var litros = 0;
302 for (var j = remito.articulosRemito.length - 1; j >= 0; j--) { 317 for (var j = remito.articulosRemito.length - 1; j >= 0; j--) {
303 litros = litros + parseFloat(remito.articulosRemito[j].cantidad); 318 litros = litros + parseFloat(remito.articulosRemito[j].cantidad);
304 } 319 }
305 320
306 if ($scope.hojaRuta.litros >= $scope.hojaRuta.vehiculo.capacidad) { 321 if ($scope.hojaRuta.litros >= $scope.hojaRuta.vehiculo.capacidad) {
307 focaModalService.alert( 322 focaModalService.alert(
308 'Debe ingresar toda la información para el transporte' 323 'Debe ingresar toda la información para el transporte'
309 ); 324 );
310 return; 325 return;
311 } 326 }
312 327
313 if ($scope.hojaRuta.litros + litros >= $scope.hojaRuta.vehiculo.capacidad) 328 if ($scope.hojaRuta.litros + litros >= $scope.hojaRuta.vehiculo.capacidad)
314 { 329 {
315 var litrostotales = litros; 330 var litrostotales = litros;
316 litros = $scope.hojaRuta.vehiculo.capacidad - $scope.hojaRuta.litros; 331 litros = $scope.hojaRuta.vehiculo.capacidad - $scope.hojaRuta.litros;
317 focaModalService.alert( 332 focaModalService.alert(
318 'La carga excede la capacidad disponible del vehiculo. ' + 333 'La carga excede la capacidad disponible del vehiculo. ' +
319 'Excedente no cargado: ' + (litrostotales - litros) + ' litros' 334 'Excedente no cargado: ' + (litrostotales - litros) + ' litros'
320 ); 335 );
321 } 336 }
322 337
323 remito.litros = litros; 338 remito.litros = litros;
324 $scope.hojaRuta.litros = $scope.hojaRuta.litros + litros; 339 $scope.hojaRuta.litros = $scope.hojaRuta.litros + litros;
325 $scope.remitosTabla.push(remito); 340 $scope.remitosTabla.push(remito);
326 }, function() { 341 }, function() {
327 // funcion ejecutada cuando se cancela el modal 342 // funcion ejecutada cuando se cancela el modal
328 } 343 }
329 ); 344 );
330 }; 345 };
331 346
332 $scope.getTotal = function() { 347 $scope.getTotal = function() {
333 var total = 0; 348 var total = 0;
334 var arrayTempArticulos = $scope.remitosTabla; 349 var arrayTempArticulos = $scope.remitosTabla;
335 for (var i = 0; i < arrayTempArticulos.length; i++) { 350 for (var i = 0; i < arrayTempArticulos.length; i++) {
336 total += arrayTempArticulos[i].precio * arrayTempArticulos[i].cantidad; 351 total += arrayTempArticulos[i].precio * arrayTempArticulos[i].cantidad;
337 } 352 }
338 return parseFloat(total.toFixed(2)); 353 return parseFloat(total.toFixed(2));
339 }; 354 };
340 355
341 $scope.getSubTotal = function() { 356 $scope.getSubTotal = function() {
342 if($scope.articuloACargar) { 357 if($scope.articuloACargar) {
343 return $scope.articuloACargar.precio * $scope.articuloACargar.cantidad; 358 return $scope.articuloACargar.precio * $scope.articuloACargar.cantidad;
344 } 359 }
345 }; 360 };
346 361
347 $scope.limpiarPantalla = function() { 362 $scope.limpiarPantalla = function() {
348 $scope.limpiarFlete(); 363 $scope.limpiarFlete();
349 $scope.hojaRuta.flete = '0'; 364 $scope.hojaRuta.flete = '0';
350 $scope.hojaRuta.bomba = '0'; 365 $scope.hojaRuta.bomba = '0';
351 $scope.hojaRuta.precioCondicion = ''; 366 $scope.hojaRuta.precioCondicion = '';
352 $scope.remitosTabla = []; 367 $scope.remitosTabla = [];
353 $scope.hojaRuta.vendedor.nombre = ''; 368 $scope.hojaRuta.vendedor.nombre = '';
354 $scope.hojaRuta.cliente = {nombre: ''}; 369 $scope.hojaRuta.cliente = {nombre: ''};
355 $scope.hojaRuta.domicilio = {dom: ''}; 370 $scope.hojaRuta.domicilio = {dom: ''};
356 $scope.hojaRuta.litros = 0; 371 $scope.hojaRuta.litros = 0;
357 $scope.domiciliosCliente = []; 372 $scope.domiciliosCliente = [];
358 }; 373 };
359 //Recibe aviso si el teclado está en uso 374 //Recibe aviso si el teclado está en uso
360 // $rootScope.$on('usarTeclado', function(event, data) { 375 // $rootScope.$on('usarTeclado', function(event, data) {
361 // if(data) { 376 // if(data) {
362 // $scope.mostrarTeclado = true; 377 // $scope.mostrarTeclado = true;
363 // return; 378 // return;
364 // } 379 // }
365 // $scope.mostrarTeclado = false; 380 // $scope.mostrarTeclado = false;
366 // }) 381 // })
367 $scope.selectFocus = function($event) { 382 $scope.selectFocus = function($event) {
368 //Si el teclado esta en uso no selecciona el valor 383 //Si el teclado esta en uso no selecciona el valor
369 // if($scope.mostrarTeclado) { 384 // if($scope.mostrarTeclado) {
370 // return; 385 // return;
371 // } 386 // }
372 $event.target.select(); 387 $event.target.select();
373 }; 388 };
374 389
375 $scope.salir = function() { 390 $scope.salir = function() {
376 $location.path('/'); 391 $location.path('/');
377 }; 392 };
378 393
379 $scope.parsearATexto = function(articulo) { 394 $scope.parsearATexto = function(articulo) {
380 articulo.cantidad = parseFloat(articulo.cantidad); 395 articulo.cantidad = parseFloat(articulo.cantidad);
381 articulo.precio = parseFloat(articulo.precio); 396 articulo.precio = parseFloat(articulo.precio);
382 }; 397 };
383 398
384 $scope.rellenar = function(relleno, longitud) { 399 $scope.rellenar = function(relleno, longitud) {
385 relleno = '' + relleno; 400 relleno = '' + relleno;
386 while (relleno.length < longitud) { 401 while (relleno.length < longitud) {
387 relleno = '0' + relleno; 402 relleno = '0' + relleno;
388 } 403 }
389 404
390 return relleno; 405 return relleno;
391 }; 406 };
392 407
393 $scope.quitarArticulo = function(key) { 408 $scope.quitarArticulo = function(key) {
394 $scope.remitosTabla.splice(key, 1); 409 $scope.remitosTabla.splice(key, 1);
395 var litros = 0; 410 var litros = 0;
396 411
397 for (var i = $scope.remitosTabla.length - 1; i >= 0; i--) { 412 for (var i = $scope.remitosTabla.length - 1; i >= 0; i--) {
398 litros += parseFloat($scope.remitosTabla[i].litros); 413 litros += parseFloat($scope.remitosTabla[i].litros);
399 } 414 }
400 415
401 $scope.hojaRuta.litros = litros; 416 $scope.hojaRuta.litros = litros;
402 417
403 }; 418 };
404 } 419 }
405 ] 420 ]
406 ) 421 )
407 .controller('hojaRutaListaCtrl', [ 422 .controller('hojaRutaListaCtrl', [
408 '$scope', 423 '$scope',
409 'crearHojaRutaService', 424 'crearHojaRutaService',
410 '$location', 425 '$location',
411 function($scope, crearHojaRutaService, $location) { 426 function($scope, crearHojaRutaService, $location) {
412 crearHojaRutaService.obtenerHojaRuta().then(function(datos) { 427 crearHojaRutaService.obtenerHojaRuta().then(function(datos) {
413 $scope.hojaRutas = datos.data; 428 $scope.hojaRutas = datos.data;
414 }); 429 });
415 $scope.editar = function(hojaRuta) { 430 $scope.editar = function(hojaRuta) {
416 crearHojaRutaService.setHojaRuta(hojaRuta); 431 crearHojaRutaService.setHojaRuta(hojaRuta);
417 $location.path('/venta-nota-pedido/abm/'); 432 $location.path('/venta-nota-pedido/abm/');
418 }; 433 };
419 $scope.crearPedido = function() { 434 $scope.crearPedido = function() {
420 crearHojaRutaService.clearHojaRuta(); 435 crearHojaRutaService.clearHojaRuta();
421 $location.path('/venta-nota-pedido/abm/'); 436 $location.path('/venta-nota-pedido/abm/');
422 }; 437 };
423 } 438 }
424 ]) 439 ])
425 .controller('focaCrearHojaRutaFichaClienteController', [ 440 .controller('focaCrearHojaRutaFichaClienteController', [
426 '$scope', 441 '$scope',
427 'crearHojaRutaService', 442 'crearHojaRutaService',
428 '$location', 443 '$location',
429 function($scope, crearHojaRutaService, $location) { 444 function($scope, crearHojaRutaService, $location) {
430 crearHojaRutaService.obtenerHojaRuta().then(function(datos) { 445 crearHojaRutaService.obtenerHojaRuta().then(function(datos) {
431 $scope.hojaRutas = datos.data; 446 $scope.hojaRutas = datos.data;
432 }); 447 });
433 $scope.editar = function(hojaRuta) { 448 $scope.editar = function(hojaRuta) {
434 crearHojaRutaService.setHojaRuta(hojaRuta); 449 crearHojaRutaService.setHojaRuta(hojaRuta);
435 $location.path('/venta-nota-pedido/abm/'); 450 $location.path('/venta-nota-pedido/abm/');
436 }; 451 };
437 $scope.crearPedido = function() { 452 $scope.crearPedido = function() {
438 crearHojaRutaService.clearHojaRuta(); 453 crearHojaRutaService.clearHojaRuta();
439 $location.path('/venta-nota-pedido/abm/'); 454 $location.path('/venta-nota-pedido/abm/');
440 }; 455 };
441 } 456 }
442 ]); 457 ]);
443 458
src/views/hoja-ruta.html
1 <div class="crear-hoja-ruta foca-crear one-row row"> 1 <div class="crear-hoja-ruta foca-crear row">
2 <foca-cabecera-facturador 2 <foca-cabecera-facturador
3 titulo="'HOJA DE RUTA'" 3 titulo="'HOJA DE RUTA'"
4 numero="puntoVenta + '-' + comprobante" 4 numero="puntoVenta + '-' + comprobante"
5 fecha="now" 5 fecha="now"
6 class="mb-0 col-lg-12" 6 class="mb-0 col-lg-12"
7 ></foca-cabecera-facturador> 7 ></foca-cabecera-facturador>
8 <div class="col-lg-12"> 8 <div class="col-lg-12">
9 <div class="row mt-4"> 9 <div class="row mt-4">
10 <div class="col-12 col-md-10 border border-light rounded"> 10 <div class="col-12 col-md-10 border border-light rounded">
11 <div class="row px-5 py-2 botonera-secundaria"> 11 <div class="row px-5 py-2 botonera-secundaria">
12 <div class="col-12"> 12 <div class="col-12">
13 <foca-botonera-facturador botones="botonera" extra="1" class="row"></foca-botonera-facturador> 13 <foca-botonera-facturador botones="botonera" extra="7" class="row"></foca-botonera-facturador>
14 </div> 14 </div>
15 </div> 15 </div>
16 <!-- PC --> 16 <!-- PC -->
17 <div class="row grilla-articulo align-items-end d-none d-sm-flex"> 17 <div class="row grilla-articulo align-items-end d-none d-sm-flex">
18 <table class="table tabla-articulo table-striped table-sm mb-0 rounded-bottom"> 18 <table class="table tabla-articulo table-striped table-sm mb-0 rounded-bottom">
19 <thead> 19 <thead>
20 <tr class="d-flex"> 20 <tr class="d-flex">
21 <th class="col-auto">#</th> 21 <th class="col-auto">#</th>
22 <th class="col-2">Remito</th> 22 <th class="col-2">Remito</th>
23 <th class="col">Cliente</th> 23 <th class="col">Cliente</th>
24 <th class="col">Dirección</th> 24 <th class="col">Dirección</th>
25 <th class="text-right" style="width: 80px">Cantidad</th> 25 <th class="text-right" style="width: 80px">Cantidad</th>
26 <th class="col-auto"> 26 <th class="col-auto">
27 <button 27 <button
28 class="btn btn-outline-light selectable" 28 class="btn btn-outline-light selectable"
29 ng-click="show = !show; masMenos()" 29 ng-click="show = !show; masMenos()"
30 > 30 >
31 <i 31 <i
32 class="fa fa-chevron-down" 32 class="fa fa-chevron-down"
33 ng-show="show" 33 ng-show="show"
34 aria-hidden="true" 34 aria-hidden="true"
35 > 35 >
36 </i> 36 </i>
37 <i 37 <i
38 class="fa fa-chevron-up" 38 class="fa fa-chevron-up"
39 ng-hide="show" 39 ng-hide="show"
40 aria-hidden="true"> 40 aria-hidden="true">
41 </i> 41 </i>
42 </button> 42 </button>
43 </th> 43 </th>
44 </th> 44 </th>
45 </tr> 45 </tr>
46 </thead> 46 </thead>
47 <tbody class="tabla-articulo-body"> 47 <tbody class="tabla-articulo-body">
48 <tr 48 <tr
49 ng-repeat="(key, remito) in remitosTabla" 49 ng-repeat="(key, remito) in remitosTabla"
50 class="d-flex" 50 class="d-flex"
51 ng-show="show || key == remitosTabla.length - 1" 51 ng-show="show || key == remitosTabla.length - 1"
52 > 52 >
53 <td ng-bind="key + 1" class="col-auto"></td> 53 <td ng-bind="key + 1" class="col-auto"></td>
54 <td 54 <td
55 class="col-2" 55 class="col-2"
56 ng-bind="rellenar(remito.sucursal, 4) + '-' + rellenar(remito.numeroRemito, 8)" 56 ng-bind="rellenar(remito.sucursal, 4) + '-' + rellenar(remito.numeroRemito, 8)"
57 ></td> 57 ></td>
58 <th class="col" ng-bind="remito.cliente[0].NOM"></th> 58 <th class="col" ng-bind="remito.cliente[0].NOM"></th>
59 <th class="col" ng-bind="remito.domicilioStamp"></th> 59 <th class="col" ng-bind="remito.domicilioStamp"></th>
60 <th class="text-right" ng-bind="remito.litros" style="width: 80px"></th> 60 <th class="text-right" ng-bind="remito.litros" style="width: 80px"></th>
61 <td class="text-center col-auto"> 61 <td class="text-center col-auto">
62 <button 62 <button
63 class="btn btn-outline-light" 63 class="btn btn-outline-light"
64 ng-click="quitarArticulo(key)" 64 ng-click="quitarArticulo(key)"
65 > 65 >
66 <i class="fa fa-trash"></i> 66 <i class="fa fa-trash"></i>
67 </button> 67 </button>
68 </td> 68 </td>
69 </tr> 69 </tr>
70 </tbody> 70 </tbody>
71 <tfoot> 71 <tfoot>
72 <tr class="d-flex"> 72 <tr class="d-flex">
73 <td class="col-auto px-1"> 73 <td class="col-auto px-1">
74 <strong>Remitos:</strong> 74 <strong>Remitos:</strong>
75 <a ng-bind="remitosTabla.length"></a> 75 <a ng-bind="remitosTabla.length"></a>
76 </td> 76 </td>
77 <td class="col"></td> 77 <td class="col"></td>
78 <td class="col-auto px-1"> 78 <td class="col-auto px-1">
79 <strong>Cantidad:</strong> 79 <strong>Cantidad:</strong>
80 <a ng-bind="hojaRuta.litros"></a> 80 <a ng-bind="hojaRuta.litros"></a>
81 </td> 81 </td>
82 </tr> 82 </tr>
83 </tfoot> 83 </tfoot>
84 </table> 84 </table>
85 </div> 85 </div>
86 86
87 <!-- MOBILE --> 87 <!-- MOBILE -->
88 <div class="row d-sm-none"> 88 <div class="row d-sm-none">
89 <table class="table table-sm table-striped tabla-articulo margin-bottom-mobile"> 89 <table class="table table-sm table-striped tabla-articulo margin-bottom-mobile">
90 <thead> 90 <thead>
91 <tr class="d-flex"> 91 <tr class="d-flex">
92 <th class="">#</th> 92 <th class="">#</th>
93 <th class="col px-0"> 93 <th class="col px-0">
94 <div class="d-flex"> 94 <div class="d-flex">
95 <div class="col-4 px-1">Código</div> 95 <div class="col-4 px-1">Código</div>
96 <div class="col-8 px-1">Descripción</div> 96 <div class="col-8 px-1">Descripción</div>
97 </div> 97 </div>
98 <div class="d-flex"> 98 <div class="d-flex">
99 <div class="col-3 px-1">Cantidad</div> 99 <div class="col-3 px-1">Cantidad</div>
100 <div class="col px-1 text-right">P. Uni.</div> 100 <div class="col px-1 text-right">P. Uni.</div>
101 <div class="col px-1 text-right">Subtotal</div> 101 <div class="col px-1 text-right">Subtotal</div>
102 </div> 102 </div>
103 </th> 103 </th>
104 <th class="text-center tamaño-boton"> 104 <th class="text-center tamaño-boton">
105 &nbsp; 105 &nbsp;
106 </th> 106 </th>
107 </tr> 107 </tr>
108 </thead> 108 </thead>
109 <tbody> 109 <tbody>
110 <tr 110 <tr
111 ng-repeat="(key, articulo) in remitosTabla" 111 ng-repeat="(key, articulo) in remitosTabla"
112 ng-show="show || key == remitosTabla.length - 1" 112 ng-show="show || key == remitosTabla.length - 1"
113 > 113 >
114 <td class="w-100 align-middle d-flex p-0"> 114 <td class="w-100 align-middle d-flex p-0">
115 <div class="align-middle p-1"> 115 <div class="align-middle p-1">
116 <span ng-bind="key+1" class="align-middle"></span> 116 <span ng-bind="key+1" class="align-middle"></span>
117 </div> 117 </div>
118 <div class="col px-0"> 118 <div class="col px-0">
119 <div class="d-flex"> 119 <div class="d-flex">
120 <div class="col-4 px-1"> 120 <div class="col-4 px-1">
121 <span 121 <span
122 ng-bind="articulo.sector + '-' + articulo.codigo" 122 ng-bind="articulo.sector + '-' + articulo.codigo"
123 ></span> 123 ></span>
124 </div> 124 </div>
125 <div class="col-8 px-1"> 125 <div class="col-8 px-1">
126 <span ng-bind="articulo.descripcion"></span> 126 <span ng-bind="articulo.descripcion"></span>
127 </div> 127 </div>
128 </div> 128 </div>
129 <div class="d-flex"> 129 <div class="d-flex">
130 <div class="col-3 px-1"> 130 <div class="col-3 px-1">
131 <span ng-bind="'x' + articulo.cantidad"></span> 131 <span ng-bind="'x' + articulo.cantidad"></span>
132 </div> 132 </div>
133 <div class="col-3 px-1 text-right"> 133 <div class="col-3 px-1 text-right">
134 <span ng-bind="articulo.precio | currency: hojaRuta.moneda.simbolo : 4"></span> 134 <span ng-bind="articulo.precio | currency: hojaRuta.moneda.simbolo : 4"></span>
135 </div> 135 </div>
136 <div class="col px-1 text-right"> 136 <div class="col px-1 text-right">
137 <span 137 <span
138 ng-bind="(articulo.precio * articulo.cantidad) | currency: hojaRuta.moneda.simbolo" 138 ng-bind="(articulo.precio * articulo.cantidad) | currency: hojaRuta.moneda.simbolo"
139 > 139 >
140 </span> 140 </span>
141 </div> 141 </div>
142 </div> 142 </div>
143 </div> 143 </div>
144 <div class="align-middle p-1"> 144 <div class="align-middle p-1">
145 <button 145 <button
146 class="btn btn-outline-light" 146 class="btn btn-outline-light"
147 ng-click="quitarArticulo(key)" 147 ng-click="quitarArticulo(key)"
148 > 148 >
149 <i class="fa fa-trash"></i> 149 <i class="fa fa-trash"></i>
150 </button> 150 </button>
151 </div> 151 </div>
152 </td> 152 </td>
153 </tr> 153 </tr>
154 </tbody> 154 </tbody>
155 <tfoot> 155 <tfoot>
156 <!-- CARGANDO ITEM --> 156 <!-- CARGANDO ITEM -->
157 <tr ng-show="!cargando" class="d-flex"> 157 <tr ng-show="!cargando" class="d-flex">
158 <td 158 <td
159 class="align-middle p-1" 159 class="align-middle p-1"
160 ng-bind="remitosTabla.length + 1" 160 ng-bind="remitosTabla.length + 1"
161 ></td> 161 ></td>
162 <td class="col p-0"> 162 <td class="col p-0">
163 <div class="d-flex"> 163 <div class="d-flex">
164 <div class="col-4 px-1"> 164 <div class="col-4 px-1">
165 <span 165 <span
166 ng-bind="articuloACargar.sectorCodigo" 166 ng-bind="articuloACargar.sectorCodigo"
167 ></span> 167 ></span>
168 </div> 168 </div>
169 <div class="col-8 px-1"> 169 <div class="col-8 px-1">
170 <span ng-bind="articuloACargar.descripcion"></span> 170 <span ng-bind="articuloACargar.descripcion"></span>
171 </div> 171 </div>
172 </div> 172 </div>
173 <div class="d-flex"> 173 <div class="d-flex">
174 <div class="col-3 px-1 m-1"> 174 <div class="col-3 px-1 m-1">
175 <input 175 <input
176 class="form-control p-1" 176 class="form-control p-1"
177 type="number" 177 type="number"
178 min="1" 178 min="1"
179 ng-model="articuloACargar.cantidad" 179 ng-model="articuloACargar.cantidad"
180 foca-focus="!cargando" 180 foca-focus="!cargando"
181 ng-keypress="agregarATabla($event.keyCode)" 181 ng-keypress="agregarATabla($event.keyCode)"
182 style="height: auto; line-height: 1.1em" 182 style="height: auto; line-height: 1.1em"
183 > 183 >
184 </div> 184 </div>
185 <div class="col-3 px-1 text-right"> 185 <div class="col-3 px-1 text-right">
186 <span ng-bind="articuloACargar.precio | currency: hojaRuta.moneda.simbolo : 4"></span> 186 <span ng-bind="articuloACargar.precio | currency: hojaRuta.moneda.simbolo : 4"></span>
187 </div> 187 </div>
188 <div class="col px-1 text-right"> 188 <div class="col px-1 text-right">
189 <span 189 <span
190 ng-bind="getSubTotal() | currency: hojaRuta.moneda.simbolo" 190 ng-bind="getSubTotal() | currency: hojaRuta.moneda.simbolo"
191 > 191 >
192 </span> 192 </span>
193 </div> 193 </div>
194 </div> 194 </div>
195 </td> 195 </td>
196 <td class="text-center align-middle"> 196 <td class="text-center align-middle">
197 <button 197 <button
198 class="btn btn-outline-light" 198 class="btn btn-outline-light"
199 ng-click="agregarATabla(13)" 199 ng-click="agregarATabla(13)"
200 > 200 >
201 <i class="fa fa-save"></i> 201 <i class="fa fa-save"></i>
202 </button> 202 </button>
203 </td> 203 </td>
204 </tr> 204 </tr>
205 <!-- SELECCIONAR PRODUCTO --> 205 <!-- SELECCIONAR PRODUCTO -->
206 <tr ng-show="cargando" class="d-flex"> 206 <tr ng-show="cargando" class="d-flex">
207 <td class="col-12"> 207 <td class="col-12">
208 <input 208 <input
209 placeholder="Seleccione Articulo" 209 placeholder="Seleccione Articulo"
210 class="form-control form-control-sm" 210 class="form-control form-control-sm"
211 readonly 211 readonly
212 ng-click="seleccionarArticulo()" 212 ng-click="seleccionarArticulo()"
213 /> 213 />
214 </td> 214 </td>
215 </tr> 215 </tr>
216 <!-- TOOGLE EXPANDIR --> 216 <!-- TOOGLE EXPANDIR -->
217 <tr> 217 <tr>
218 <td class="col"> 218 <td class="col">
219 <button 219 <button
220 class="btn btn-outline-light selectable w-100" 220 class="btn btn-outline-light selectable w-100"
221 ng-click="show = !show; masMenos()" 221 ng-click="show = !show; masMenos()"
222 ng-show="remitosTabla.length > 0" 222 ng-show="remitosTabla.length > 0"
223 > 223 >
224 <i 224 <i
225 class="fa fa-chevron-down" 225 class="fa fa-chevron-down"
226 ng-hide="show" 226 ng-hide="show"
227 aria-hidden="true" 227 aria-hidden="true"
228 > 228 >
229 </i> 229 </i>
230 <i 230 <i
231 class="fa fa-chevron-up" 231 class="fa fa-chevron-up"
232 ng-show="show" 232 ng-show="show"
233 aria-hidden="true"> 233 aria-hidden="true">
234 </i> 234 </i>
235 </button> 235 </button>
236 </td> 236 </td>
237 </tr> 237 </tr>
238 <!-- FOOTER --> 238 <!-- FOOTER -->
239 <tr class="d-flex"> 239 <tr class="d-flex">
240 <td class="align-middle no-border-top" colspan="2"> 240 <td class="align-middle no-border-top" colspan="2">
241 <strong>Cantidad Items:</strong> 241 <strong>Cantidad Items:</strong>
242 <a ng-bind="remitosTabla.length"></a> 242 <a ng-bind="remitosTabla.length"></a>
243 </td> 243 </td>
244 <td class="text-right ml-auto table-celda-total no-border-top"> 244 <td class="text-right ml-auto table-celda-total no-border-top">
245 <h3>Total:</h3> 245 <h3>Total:</h3>
246 </td> 246 </td>
247 <td class="table-celda-total text-right no-border-top"> 247 <td class="table-celda-total text-right no-border-top">
248 <h3>{{getTotal() | currency: hojaRuta.moneda.simbolo}}</h3> 248 <h3>{{getTotal() | currency: hojaRuta.moneda.simbolo}}</h3>
249 </td> 249 </td>
250 </tr> 250 </tr>
251 </tfoot> 251 </tfoot>
252 </table> 252 </table>
253 </div> 253 </div>
254 </div> 254 </div>
255 <div class="col-auto my-2 col-lg-2 botonera-lateral d-none">
256 <div class="col-12 mt-auto">
257 <button
258 ng-click="crearHojaRuta()"
259 type="submit"
260 title="Crear nota pedido"
261 class="btn btn-default btn-block mb-2 border border-dark">
262 <strong>GUARDAR</strong>
263 </button>
264 <button
265 type="submit"
266 title="Crear nota pedido"
267 class="btn btn-default btn-block mb-2 border border-dark">
268 <strong>PAUSAR</strong>
269 </button>
270 <button
271 ng-click="salir()"
272 type="button"
273 title="Salir"
274 class="btn btn-default btn-block border border-dark">
275 <strong>SALIR</strong>
276 </button>
277 </div>
278 </div>
279 </div> 255 </div>
280 </div> 256 </div>
281 <div class="row d-md-none fixed-bottom"> 257 <div class="row d-md-none fixed-bottom">
282 <div class="w-100 bg-dark d-flex px-3 acciones-mobile"> 258 <div class="w-100 bg-dark d-flex px-3 acciones-mobile">
283 <span class="ml-3 text-muted" ng-click="salir()">Salir</span> 259 <span class="ml-3 text-muted" ng-click="salir()">Salir</span>
284 <span class="mr-3 ml-auto" ng-click="crearHojaRuta()">Guardar</span> 260 <span class="mr-3 ml-auto" ng-click="crearHojaRuta()">Guardar</span>
285 </div> 261 </div>
286 </div> 262 </div>
287 </div> 263 </div>
288 264