Commit 8fafa96188a9bcc40e356d530a2f58918ab0c202

Authored by Eric Fernandez
Exists in master

Merge branch 'master' into 'master'

Master(efernandez)

See merge request modulos-npm/foca-crear-nota-pedido!90
src/js/controller.js
1 angular.module('focaCrearNotaPedido') .controller('notaPedidoCtrl', 1 angular.module('focaCrearNotaPedido') .controller('notaPedidoCtrl',
2 [ 2 [
3 '$scope', '$uibModal', '$location', '$filter', 'crearNotaPedidoService', 3 '$scope', '$uibModal', '$location', '$filter', 'crearNotaPedidoService',
4 'focaModalService', 'notaPedidoBusinessService', '$rootScope', 'focaSeguimientoService', 4 'focaModalService', 'notaPedidoBusinessService', '$rootScope', 'focaSeguimientoService',
5 function( 5 function(
6 $scope, $uibModal, $location, $filter, crearNotaPedidoService, focaModalService, 6 $scope, $uibModal, $location, $filter, crearNotaPedidoService, focaModalService,
7 notaPedidoBusinessService, $rootScope, focaSeguimientoService 7 notaPedidoBusinessService, $rootScope, focaSeguimientoService
8 ) { 8 ) {
9 $scope.botonera = [ 9 $scope.botonera = [
10 {texto: 'Vendedor', accion: function() { 10 {texto: 'Vendedor', accion: function() {
11 validarNotaRemitada($scope.seleccionarVendedor);}}, 11 validarNotaRemitada($scope.seleccionarVendedor);}},
12 {texto: 'Cliente', accion: function() { 12 {texto: 'Cliente', accion: function() {
13 validarNotaRemitada($scope.seleccionarCliente);}}, 13 validarNotaRemitada($scope.seleccionarCliente);}},
14 {texto: 'Proveedor', accion: function() { 14 {texto: 'Proveedor', accion: function() {
15 validarNotaRemitada($scope.seleccionarProveedor);}}, 15 validarNotaRemitada($scope.seleccionarProveedor);}},
16 {texto: 'Moneda', accion: function() { 16 {texto: 'Moneda', accion: function() {
17 validarNotaRemitada($scope.abrirModalMoneda);}}, 17 validarNotaRemitada($scope.abrirModalMoneda);}},
18 {texto: 'Precios y condiciones', accion: function() { 18 {texto: 'Precios y condiciones', accion: function() {
19 validarNotaRemitada($scope.abrirModalListaPrecio);}}, 19 validarNotaRemitada($scope.abrirModalListaPrecio);}},
20 {texto: 'Flete', accion: function() { 20 {texto: 'Flete', accion: function() {
21 validarNotaRemitada($scope.abrirModalFlete);}}, 21 validarNotaRemitada($scope.abrirModalFlete);}},
22 {texto: '', accion: function() {}}, 22 {texto: '', accion: function() {}},
23 {texto: '', accion: function() {}} 23 {texto: '', accion: function() {}}
24 ]; 24 ];
25 25
26 $scope.datepickerAbierto = false; 26 $scope.datepickerAbierto = false;
27 27
28 $scope.show = false; 28 $scope.show = false;
29 $scope.cargando = true; 29 $scope.cargando = true;
30 $scope.dateOptions = { 30 $scope.dateOptions = {
31 maxDate: new Date(), 31 maxDate: new Date(),
32 minDate: new Date(2010, 0, 1) 32 minDate: new Date(2010, 0, 1)
33 }; 33 };
34 34
35 $scope.notaPedido = { 35 $scope.notaPedido = {
36 id: 0, 36 id: 0,
37 vendedor: {}, 37 vendedor: {},
38 cliente: {}, 38 cliente: {},
39 proveedor: {}, 39 proveedor: {},
40 domicilio: {dom: ''}, 40 domicilio: {dom: ''},
41 moneda: {}, 41 moneda: {},
42 cotizacion: {} 42 cotizacion: {}
43 }; 43 };
44 var monedaPorDefecto; 44 var monedaPorDefecto;
45 //Trabajo con la cotización más reciente, por eso uso siempre la primera '[0]' 45 //Trabajo con la cotización más reciente, por eso uso siempre la primera '[0]'
46 crearNotaPedidoService.getCotizacionByIdMoneda(1).then(function(res) { 46 crearNotaPedidoService.getCotizacionByIdMoneda(1).then(function(res) {
47 monedaPorDefecto = res.data[0]; 47 monedaPorDefecto = res.data[0];
48 addCabecera('Moneda:', monedaPorDefecto.DETALLE); 48 addCabecera('Moneda:', monedaPorDefecto.DETALLE);
49 addCabecera('Fecha cotizacion:', 49 addCabecera('Fecha cotizacion:',
50 new Date(monedaPorDefecto.cotizaciones[0].FECHA).toLocaleDateString()); 50 new Date(monedaPorDefecto.cotizaciones[0].FECHA).toLocaleDateString());
51 addCabecera('Cotizacion:', monedaPorDefecto.cotizaciones[0].VENDEDOR); 51 addCabecera('Cotizacion:', monedaPorDefecto.cotizaciones[0].VENDEDOR);
52 $scope.notaPedido.moneda = monedaPorDefecto; 52 $scope.notaPedido.moneda = monedaPorDefecto;
53 $scope.notaPedido.cotizacion = monedaPorDefecto.cotizaciones[0]; 53 $scope.notaPedido.cotizacion = monedaPorDefecto.cotizaciones[0];
54 }); 54 });
55 55
56 $scope.cabecera = []; 56 $scope.cabecera = [];
57 $scope.showCabecera = true; 57 $scope.showCabecera = true;
58 58
59 $scope.now = new Date(); 59 $scope.now = new Date();
60 $scope.puntoVenta = '0000'; 60 $scope.puntoVenta = '0000';
61 $scope.comprobante = '00000000'; 61 $scope.comprobante = '00000000';
62 $scope.articulosTabla = []; 62 $scope.articulosTabla = [];
63 $scope.idLista = undefined; 63 $scope.idLista = undefined;
64 //La pantalla solo se usa para cargar pedidos 64 //La pantalla solo se usa para cargar pedidos
65 //var notaPedidoTemp = crearNotaPedidoService.getNotaPedido(); 65 //var notaPedidoTemp = crearNotaPedidoService.getNotaPedido();
66 66
67 crearNotaPedidoService.getPrecioCondicion().then( 67 crearNotaPedidoService.getPrecioCondicion().then(
68 function(res) { 68 function(res) {
69 $scope.precioCondiciones = res.data; 69 $scope.precioCondiciones = res.data;
70 } 70 }
71 ); 71 );
72 72
73 crearNotaPedidoService.getNumeroNotaPedido().then( 73 crearNotaPedidoService.getNumeroNotaPedido().then(
74 function(res) { 74 function(res) {
75 $scope.puntoVenta = rellenar(res.data.sucursal, 4); 75 $scope.puntoVenta = rellenar(res.data.sucursal, 4);
76 $scope.comprobante = rellenar(res.data.numeroNotaPedido, 8); 76 $scope.comprobante = rellenar(res.data.numeroNotaPedido, 8);
77 }, 77 },
78 function(err) { 78 function(err) {
79 focaModalService.alert('La terminal no esta configurada correctamente'); 79 focaModalService.alert('La terminal no esta configurada correctamente');
80 console.info(err); 80 console.info(err);
81 } 81 }
82 ); 82 );
83 //La pantalla solo se usa para cargar pedidos 83 //La pantalla solo se usa para cargar pedidos
84 // if (notaPedidoTemp !== undefined) { 84 // if (notaPedidoTemp !== undefined) {
85 // notaPedidoTemp.fechaCarga = new Date(notaPedidoTemp.fechaCarga); 85 // notaPedidoTemp.fechaCarga = new Date(notaPedidoTemp.fechaCarga);
86 // $scope.notaPedido = notaPedidoTemp; 86 // $scope.notaPedido = notaPedidoTemp;
87 // $scope.notaPedido.flete = ($scope.notaPedido.flete).toString(); 87 // $scope.notaPedido.flete = ($scope.notaPedido.flete).toString();
88 // $scope.notaPedido.bomba = ($scope.notaPedido.bomba).toString(); 88 // $scope.notaPedido.bomba = ($scope.notaPedido.bomba).toString();
89 // $scope.idLista = $scope.notaPedido.precioCondicion; 89 // $scope.idLista = $scope.notaPedido.precioCondicion;
90 // crearNotaPedidoService 90 // crearNotaPedidoService
91 // .getArticulosByIdNotaPedido($scope.notaPedido.id).then( 91 // .getArticulosByIdNotaPedido($scope.notaPedido.id).then(
92 // function(res) { 92 // function(res) {
93 // $scope.articulosTabla = res.data; 93 // $scope.articulosTabla = res.data;
94 // } 94 // }
95 // ); 95 // );
96 //TODO DOMICILIOS QUE SE CARGAN AL EDITAR NOTA DE PEDIDO 96 //TODO DOMICILIOS QUE SE CARGAN AL EDITAR NOTA DE PEDIDO
97 //(NO REQUERIDO EN ESTA VERSION) 97 //(NO REQUERIDO EN ESTA VERSION)
98 // crearNotaPedidoService.getDomiciliosByIdNotaPedido($scope.notaPedido.id).then( 98 // crearNotaPedidoService.getDomiciliosByIdNotaPedido($scope.notaPedido.id).then(
99 // function(res) { 99 // function(res) {
100 // $scope.notaPedido.domicilio = res.data; 100 // $scope.notaPedido.domicilio = res.data;
101 // } 101 // }
102 // ); 102 // );
103 // } else { 103 // } else {
104 // $scope.notaPedido.fechaCarga = new Date(); 104 // $scope.notaPedido.fechaCarga = new Date();
105 // $scope.notaPedido.bomba = '0'; 105 // $scope.notaPedido.bomba = '0';
106 // $scope.notaPedido.flete = '0'; 106 // $scope.notaPedido.flete = '0';
107 // $scope.idLista = undefined; 107 // $scope.idLista = undefined;
108 // } 108 // }
109 //TO DO - FUNCIONES PARA MULTIPLES DOMICILIOS NO IMPLEMENTADAS EN ESTA DEMO 109 //TO DO - FUNCIONES PARA MULTIPLES DOMICILIOS NO IMPLEMENTADAS EN ESTA DEMO
110 // $scope.addNewDom = function() { 110 // $scope.addNewDom = function() {
111 // $scope.notaPedido.domicilio.push({ 'id': 0 }); 111 // $scope.notaPedido.domicilio.push({ 'id': 0 });
112 // }; 112 // };
113 // $scope.removeNewChoice = function(choice) { 113 // $scope.removeNewChoice = function(choice) {
114 // if ($scope.notaPedido.domicilio.length > 1) { 114 // if ($scope.notaPedido.domicilio.length > 1) {
115 // $scope.notaPedido.domicilio.splice($scope.notaPedido.domicilio.findIndex( 115 // $scope.notaPedido.domicilio.splice($scope.notaPedido.domicilio.findIndex(
116 // function(c) { 116 // function(c) {
117 // return c.$$hashKey === choice.$$hashKey; 117 // return c.$$hashKey === choice.$$hashKey;
118 // } 118 // }
119 // ), 1); 119 // ), 1);
120 // } 120 // }
121 // }; 121 // };
122 122
123 $scope.crearNotaPedido = function() { 123 $scope.crearNotaPedido = function() {
124 if(!$scope.notaPedido.vendedor.CodVen) { 124 if(!$scope.notaPedido.vendedor.CodVen) {
125 focaModalService.alert('Ingrese Vendedor'); 125 focaModalService.alert('Ingrese Vendedor');
126 return; 126 return;
127 } else if(!$scope.notaPedido.cliente.COD) { 127 } else if(!$scope.notaPedido.cliente.COD) {
128 focaModalService.alert('Ingrese Cliente'); 128 focaModalService.alert('Ingrese Cliente');
129 return; 129 return;
130 } else if(!$scope.notaPedido.proveedor.COD) { 130 } else if(!$scope.notaPedido.proveedor.COD) {
131 focaModalService.alert('Ingrese Proveedor'); 131 focaModalService.alert('Ingrese Proveedor');
132 return; 132 return;
133 } else if(!$scope.notaPedido.moneda.ID) { 133 } else if(!$scope.notaPedido.moneda.ID) {
134 focaModalService.alert('Ingrese Moneda'); 134 focaModalService.alert('Ingrese Moneda');
135 return; 135 return;
136 } else if(!$scope.notaPedido.cotizacion.ID) { 136 } else if(!$scope.notaPedido.cotizacion.ID) {
137 focaModalService.alert('Ingrese Cotización'); 137 focaModalService.alert('Ingrese Cotización');
138 return; 138 return;
139 } else if(!$scope.plazosPagos) { 139 } else if(!$scope.plazosPagos) {
140 focaModalService.alert('Ingrese Precios y Condiciones'); 140 focaModalService.alert('Ingrese Precios y Condiciones');
141 return; 141 return;
142 } else if( 142 } else if(
143 $scope.notaPedido.flete === undefined || $scope.notaPedido.flete === null) 143 $scope.notaPedido.flete === undefined || $scope.notaPedido.flete === null)
144 { 144 {
145 focaModalService.alert('Ingrese Flete'); 145 focaModalService.alert('Ingrese Flete');
146 return; 146 return;
147 } else if(!$scope.notaPedido.domicilioStamp) {//TODO validar domicilio correcto 147 } else if(!$scope.notaPedido.domicilioStamp) {//TODO validar domicilio correcto
148 focaModalService.alert('Ingrese Domicilio'); 148 focaModalService.alert('Ingrese Domicilio');
149 return; 149 return;
150 } else if($scope.articulosTabla.length === 0) { 150 } else if($scope.articulosTabla.length === 0) {
151 focaModalService.alert('Debe cargar al menos un articulo'); 151 focaModalService.alert('Debe cargar al menos un articulo');
152 return; 152 return;
153 } 153 }
154 var date = new Date(); 154 var date = new Date();
155 var notaPedido = { 155 var notaPedido = {
156 id: $scope.notaPedido.id, 156 id: $scope.notaPedido.id,
157 fechaCarga: new Date(date.getTime() - (date.getTimezoneOffset() * 60000)) 157 fechaCarga: new Date(date.getTime() - (date.getTimezoneOffset() * 60000))
158 .toISOString().slice(0, 19).replace('T', ' '), 158 .toISOString().slice(0, 19).replace('T', ' '),
159 idVendedor: $scope.notaPedido.vendedor.CodVen, 159 idVendedor: $scope.notaPedido.vendedor.CodVen,
160 idCliente: $scope.notaPedido.cliente.COD, 160 idCliente: $scope.notaPedido.cliente.COD,
161 nombreCliente: $scope.notaPedido.cliente.NOM, 161 nombreCliente: $scope.notaPedido.cliente.NOM,
162 cuitCliente: $scope.notaPedido.cliente.CUIT, 162 cuitCliente: $scope.notaPedido.cliente.CUIT,
163 idProveedor: $scope.notaPedido.proveedor.COD, 163 idProveedor: $scope.notaPedido.proveedor.COD,
164 idDomicilio: $scope.notaPedido.domicilio.id, 164 idDomicilio: $scope.notaPedido.domicilio.id,
165 idCotizacion: $scope.notaPedido.cotizacion.ID, 165 idCotizacion: $scope.notaPedido.cotizacion.ID,
166 idPrecioCondicion: $scope.notaPedido.idPrecioCondicion, 166 idPrecioCondicion: $scope.notaPedido.idPrecioCondicion,
167 cotizacion: $scope.notaPedido.cotizacion.VENDEDOR, 167 cotizacion: $scope.notaPedido.cotizacion.VENDEDOR,
168 flete: $scope.notaPedido.flete, 168 flete: $scope.notaPedido.flete,
169 fob: $scope.notaPedido.fob, 169 fob: $scope.notaPedido.fob,
170 bomba: $scope.notaPedido.bomba, 170 bomba: $scope.notaPedido.bomba,
171 kilometros: $scope.notaPedido.kilometros, 171 kilometros: $scope.notaPedido.kilometros,
172 domicilioStamp: $scope.notaPedido.domicilioStamp, 172 domicilioStamp: $scope.notaPedido.domicilioStamp,
173 estado: 0, 173 estado: 0,
174 total: $scope.getTotal() 174 total: $scope.getTotal()
175 }; 175 };
176 crearNotaPedidoService.crearNotaPedido(notaPedido).then( 176 crearNotaPedidoService.crearNotaPedido(notaPedido).then(
177 function(data) { 177 function(data) {
178 // Al guardar los datos de la nota de pedido logueamos la 178 // Al guardar los datos de la nota de pedido logueamos la
179 // actividad para su seguimiento. 179 // actividad para su seguimiento.
180 focaSeguimientoService.guardarPosicion( 180 focaSeguimientoService.guardarPosicion(
181 $scope.notaPedido.vendedor.CodVen, 181 $scope.notaPedido.vendedor.CodVen,
182 'Nota de pedido', 182 'Nota de pedido',
183 'Nº: ' + $filter('comprobante')([ 183 'Nº: ' + $filter('comprobante')([
184 $scope.puntoVenta, 184 $scope.puntoVenta,
185 $scope.comprobante 185 $scope.comprobante
186 ]) + '<br/>' + 186 ]) + '<br/>' +
187 'Vendedor: ' + $scope.notaPedido.vendedor.NomVen + '<br/>' + 187 'Vendedor: ' + $scope.notaPedido.vendedor.NomVen + '<br/>' +
188 'Total: ' + $filter('currency')($scope.getTotal()) 188 'Total: ' + $filter('currency')($scope.getTotal())
189 ); 189 );
190 notaPedidoBusinessService.addArticulos($scope.articulosTabla, 190 notaPedidoBusinessService.addArticulos($scope.articulosTabla,
191 data.data.id, $scope.notaPedido.cotizacion.VENDEDOR); 191 data.data.id, $scope.notaPedido.cotizacion.VENDEDOR);
192 var plazos = $scope.plazosPagos; 192 var plazos = $scope.plazosPagos;
193 193
194 for(var j = 0; j < plazos.length; j++) { 194 for(var j = 0; j < plazos.length; j++) {
195 var json = { 195 var json = {
196 idPedido: data.data.id, 196 idPedido: data.data.id,
197 dias: plazos[j].dias 197 dias: plazos[j].dias
198 }; 198 };
199 crearNotaPedidoService.crearPlazosParaNotaPedido(json); 199 crearNotaPedidoService.crearPlazosParaNotaPedido(json);
200 } 200 }
201 notaPedidoBusinessService.addEstado(data.data.id, 201 notaPedidoBusinessService.addEstado(data.data.id,
202 $scope.notaPedido.vendedor.CodVen); 202 $scope.notaPedido.vendedor.CodVen);
203 203
204 focaModalService.alert('Nota pedido creada'); 204 focaModalService.alert('Nota pedido creada');
205 $scope.cabecera = []; 205 $scope.cabecera = [];
206 addCabecera('Moneda:', $scope.notaPedido.moneda.detalle); 206 addCabecera('Moneda:', $scope.notaPedido.moneda.detalle);
207 addCabecera( 207 addCabecera(
208 'Fecha cotizacion:', 208 'Fecha cotizacion:',
209 $filter('date')($scope.notaPedido.cotizacion.FECHA, 'dd/MM/yyyy') 209 $filter('date')($scope.notaPedido.cotizacion.FECHA, 'dd/MM/yyyy')
210 ); 210 );
211 addCabecera('Cotizacion:', $scope.notaPedido.cotizacion.VENDEDOR); 211 addCabecera('Cotizacion:', $scope.notaPedido.cotizacion.VENDEDOR);
212 crearNotaPedidoService.getNumeroNotaPedido().then( 212 crearNotaPedidoService.getNumeroNotaPedido().then(
213 function(res) { 213 function(res) {
214 $scope.puntoVenta = rellenar(res.data.sucursal, 4); 214 $scope.puntoVenta = rellenar(res.data.sucursal, 4);
215 $scope.comprobante = rellenar(res.data.numeroNotaPedido, 8); 215 $scope.comprobante = rellenar(res.data.numeroNotaPedido, 8);
216 }, 216 },
217 function(err) { 217 function(err) {
218 focaModalService.alert('La terminal no esta configurada correctamente'); 218 focaModalService.alert(
219 'La terminal no esta configurada correctamente');
219 console.info(err); 220 console.info(err);
220 } 221 }
221 ); 222 );
222 $scope.notaPedido.vendedor = {}; 223 $scope.notaPedido.vendedor = {};
223 $scope.notaPedido.cliente = {}; 224 $scope.notaPedido.cliente = {};
224 $scope.notaPedido.proveedor = {}; 225 $scope.notaPedido.proveedor = {};
225 $scope.notaPedido.domicilio = {}; 226 $scope.notaPedido.domicilio = {};
226 $scope.notaPedido.flete = null; 227 $scope.notaPedido.flete = null;
227 $scope.notaPedido.fob = null; 228 $scope.notaPedido.fob = null;
228 $scope.notaPedido.bomba = null; 229 $scope.notaPedido.bomba = null;
229 $scope.notaPedido.kilometros = null; 230 $scope.notaPedido.kilometros = null;
230 $scope.articulosTabla = []; 231 $scope.articulosTabla = [];
231 }, 232 },
232 function(error) { 233 function(error) {
233 focaModalService.alert('Hubo un error al crear la nota de pedido'); 234 focaModalService.alert('Hubo un error al crear la nota de pedido');
234 console.info(error); 235 console.info(error);
235 } 236 }
236 ); 237 );
237 }; 238 };
238 239
239 $scope.seleccionarNotaPedido = function() { 240 $scope.seleccionarNotaPedido = function() {
240 var modalInstance = $uibModal.open( 241 var modalInstance = $uibModal.open(
241 { 242 {
242 ariaLabelledBy: 'Busqueda de Nota de Pedido', 243 ariaLabelledBy: 'Busqueda de Nota de Pedido',
243 templateUrl: 'foca-modal-nota-pedido.html', 244 templateUrl: 'foca-modal-nota-pedido.html',
244 controller: 'focaModalNotaPedidoController', 245 controller: 'focaModalNotaPedidoController',
245 size: 'lg', 246 size: 'lg',
246 resolve: {usadoPor: function(){return 'notaPedido';}} 247 resolve: {usadoPor: function(){return 'notaPedido';}}
247 } 248 }
248 ); 249 );
249 modalInstance.result.then( 250 modalInstance.result.then(
250 function(notaPedido) { 251 function(notaPedido) {
251 //añado cabeceras 252 //añado cabeceras
252 $scope.notaPedido.id = notaPedido.id; 253 $scope.notaPedido.id = notaPedido.id;
253 removeCabecera('Moneda:'); 254 removeCabecera('Moneda:');
254 removeCabecera('Fecha cotizacion:'); 255 removeCabecera('Fecha cotizacion:');
255 removeCabecera('Cotizacion:'); 256 removeCabecera('Cotizacion:');
256 var cabeceras = [ 257 var cabeceras = [
257 { 258 {
258 label: 'Moneda', 259 label: 'Moneda',
259 valor: notaPedido.cotizacion[0].moneda[0].DETALLE 260 valor: notaPedido.cotizacion[0].moneda[0].DETALLE
260 }, 261 },
261 { 262 {
262 label: 'Fecha cotizacion', 263 label: 'Fecha cotizacion',
263 valor: $filter('date')(notaPedido.cotizacion[0].FECHA, 264 valor: $filter('date')(notaPedido.cotizacion[0].FECHA,
264 'dd/MM/yyyy') 265 'dd/MM/yyyy')
265 }, 266 },
266 { 267 {
267 label: 'Cotizacion', 268 label: 'Cotizacion',
268 valor: notaPedido.cotizacion[0].VENDEDOR 269 valor: notaPedido.cotizacion[0].VENDEDOR
269 }, 270 },
270 { 271 {
271 label: 'Cliente:', 272 label: 'Cliente:',
272 valor: notaPedido.cliente[0].NOM 273 valor: notaPedido.cliente[0].NOM
273 }, 274 },
274 { 275 {
275 label: 'Domicilio:', 276 label: 'Domicilio:',
276 valor: notaPedido.domicilioStamp 277 valor: notaPedido.domicilioStamp
277 }, 278 },
278 { 279 {
279 label: 'Vendedor:', 280 label: 'Vendedor:',
280 valor: notaPedido.vendedor[0].NomVen 281 valor: notaPedido.vendedor[0].NomVen
281 }, 282 },
282 { 283 {
283 label: 'Proveedor:', 284 label: 'Proveedor:',
284 valor: notaPedido.proveedor[0].NOM 285 valor: notaPedido.proveedor[0].NOM
285 }, 286 },
286 { 287 {
287 label: 'Flete:', 288 label: 'Flete:',
288 valor: notaPedido.flete === 1 ? 'Si' : 'No' 289 valor: notaPedido.flete === 1 ? 'Si' : 'No'
289 }, 290 },
290 { 291 {
291 label: 'FOB:', 292 label: 'FOB:',
292 valor: notaPedido.fob === 1 ? 'Si' : 'No' 293 valor: notaPedido.fob === 1 ? 'Si' : 'No'
293 }, 294 },
294 { 295 {
295 label: 'Precio condicion:', 296 label: 'Precio condicion:',
296 valor: valorPrecioCondicion() 297 valor: valorPrecioCondicion()
297 } 298 }
298 ]; 299 ];
299 //TODO MOSTRAR PLAZOS 300 //TODO MOSTRAR PLAZOS
300 function valorPrecioCondicion() { 301 function valorPrecioCondicion() {
301 if(notaPedido.idPrecioCondicion > 0) { 302 if(notaPedido.idPrecioCondicion > 0) {
302 return notaPedido.precioCondicion[0].nombre; 303 return notaPedido.precioCondicion[0].nombre;
303 } else { 304 } else {
304 return 'Ingreso Manual'; 305 return 'Ingreso Manual';
305 } 306 }
306 } 307 }
307 308
308 if(notaPedido.flete === 1) { 309 if(notaPedido.flete === 1) {
309 var cabeceraBomba = { 310 var cabeceraBomba = {
310 label: 'Bomba', 311 label: 'Bomba',
311 valor: notaPedido.bomba === 1 ? 'Si' : 'No' 312 valor: notaPedido.bomba === 1 ? 'Si' : 'No'
312 }; 313 };
313 if(notaPedido.kilometros) { 314 if(notaPedido.kilometros) {
314 var cabeceraKilometros = { 315 var cabeceraKilometros = {
315 label: 'Kilometros', 316 label: 'Kilometros',
316 valor: notaPedido.kilometros 317 valor: notaPedido.kilometros
317 }; 318 };
318 cabeceras.push(cabeceraKilometros); 319 cabeceras.push(cabeceraKilometros);
319 } 320 }
320 cabeceras.push(cabeceraBomba); 321 cabeceras.push(cabeceraBomba);
321 } 322 }
322 $scope.articulosTabla = notaPedido.articulosNotaPedido; 323 $scope.articulosTabla = notaPedido.articulosNotaPedido;
323 if(notaPedido.precioCondicion.length > 0) { 324 if(notaPedido.precioCondicion.length > 0) {
324 $scope.idLista = notaPedido.precioCondicion[0].idListaPrecio; 325 $scope.idLista = notaPedido.precioCondicion[0].idListaPrecio;
325 } else { 326 } else {
326 $scope.idLista = -1; 327 $scope.idLista = -1;
327 } 328 }
328 $scope.comprobante = rellenar(notaPedido.numeroNotaPedido, 8); 329 $scope.comprobante = rellenar(notaPedido.numeroNotaPedido, 8);
329 $scope.notaPedido = notaPedido; 330 $scope.notaPedido = notaPedido;
330 $scope.notaPedido.vendedor = notaPedido.vendedor[0]; 331 $scope.notaPedido.vendedor = notaPedido.vendedor[0];
331 $scope.notaPedido.cliente = notaPedido.cliente[0]; 332 $scope.notaPedido.cliente = notaPedido.cliente[0];
332 $scope.notaPedido.proveedor = notaPedido.proveedor[0]; 333 $scope.notaPedido.proveedor = notaPedido.proveedor[0];
333 $scope.notaPedido.moneda = notaPedido.cotizacion[0].moneda[0]; 334 $scope.notaPedido.moneda = notaPedido.cotizacion[0].moneda[0];
334 $scope.notaPedido.cotizacion = notaPedido.cotizacion[0]; 335 $scope.notaPedido.cotizacion = notaPedido.cotizacion[0];
335 $scope.plazosPagos = notaPedido.plazoPago; 336 $scope.plazosPagos = notaPedido.plazoPago;
336 addArrayCabecera(cabeceras); 337 addArrayCabecera(cabeceras);
337 338
338 }, function() { 339 }, function() {
339 // funcion ejecutada cuando se cancela el modal 340 // funcion ejecutada cuando se cancela el modal
340 } 341 }
341 ); 342 );
342 } 343 };
343 344
344 $scope.seleccionarArticulo = function() { 345 $scope.seleccionarArticulo = function() {
345 if ($scope.idLista === undefined) { 346 if ($scope.idLista === undefined) {
346 focaModalService.alert( 347 focaModalService.alert(
347 'Primero seleccione una lista de precio y condicion'); 348 'Primero seleccione una lista de precio y condicion');
348 return; 349 return;
349 } 350 }
350 var modalInstance = $uibModal.open( 351 var modalInstance = $uibModal.open(
351 { 352 {
352 ariaLabelledBy: 'Busqueda de Productos', 353 ariaLabelledBy: 'Busqueda de Productos',
353 templateUrl: 'modal-busqueda-productos.html', 354 templateUrl: 'modal-busqueda-productos.html',
354 controller: 'modalBusquedaProductosCtrl', 355 controller: 'modalBusquedaProductosCtrl',
355 resolve: { 356 resolve: {
356 parametroProducto: { 357 parametroProducto: {
357 idLista: $scope.idLista, 358 idLista: $scope.idLista,
358 cotizacion: $scope.notaPedido.cotizacion.VENDEDOR, 359 cotizacion: $scope.notaPedido.cotizacion.VENDEDOR,
359 simbolo: $scope.notaPedido.moneda.simbolo 360 simbolo: $scope.notaPedido.moneda.SIMBOLO
360 } 361 }
361 }, 362 },
362 size: 'lg' 363 size: 'lg'
363 } 364 }
364 ); 365 );
365 modalInstance.result.then( 366 modalInstance.result.then(
366 function(producto) { 367 function(producto) {
367 var newArt = 368 var newArt =
368 { 369 {
369 id: 0, 370 id: 0,
370 codigo: producto.codigo, 371 codigo: producto.codigo,
371 sector: producto.sector, 372 sector: producto.sector,
372 sectorCodigo: producto.sector + '-' + producto.codigo, 373 sectorCodigo: producto.sector + '-' + producto.codigo,
373 descripcion: producto.descripcion, 374 descripcion: producto.descripcion,
374 item: $scope.articulosTabla.length + 1, 375 item: $scope.articulosTabla.length + 1,
375 nombre: producto.descripcion, 376 nombre: producto.descripcion,
376 precio: parseFloat(producto.precio.toFixed(4)), 377 precio: parseFloat(producto.precio.toFixed(4)),
377 costoUnitario: producto.costo, 378 costoUnitario: producto.costo,
378 editCantidad: false, 379 editCantidad: false,
379 editPrecio: false, 380 editPrecio: false,
380 rubro: producto.CodRub, 381 rubro: producto.CodRub,
381 exentoUnitario: producto.precio, 382 exentoUnitario: producto.precio,
382 ivaUnitario: producto.IMPIVA, 383 ivaUnitario: producto.IMPIVA,
383 impuestoInternoUnitario: producto.ImpInt, 384 impuestoInternoUnitario: producto.ImpInt,
384 impuestoInterno1Unitario: producto.ImpInt2, 385 impuestoInterno1Unitario: producto.ImpInt2,
385 impuestoInterno2Unitario: producto.ImpInt3, 386 impuestoInterno2Unitario: producto.ImpInt3,
386 precioLista: producto.precio, 387 precioLista: producto.precio,
387 combustible: 1, 388 combustible: 1,
388 facturado: 0 389 facturado: 0
389 }; 390 };
390 $scope.articuloACargar = newArt; 391 $scope.articuloACargar = newArt;
391 $scope.cargando = false; 392 $scope.cargando = false;
392 }, function() { 393 }, function() {
393 // funcion ejecutada cuando se cancela el modal 394 // funcion ejecutada cuando se cancela el modal
394 } 395 }
395 ); 396 );
396 }; 397 };
397 398
398 $scope.seleccionarVendedor = function() { 399 $scope.seleccionarVendedor = function() {
399 var modalInstance = $uibModal.open( 400 var modalInstance = $uibModal.open(
400 { 401 {
401 ariaLabelledBy: 'Busqueda de Vendedores', 402 ariaLabelledBy: 'Busqueda de Vendedores',
402 templateUrl: 'modal-vendedores.html', 403 templateUrl: 'modal-vendedores.html',
403 controller: 'modalVendedoresCtrl', 404 controller: 'modalVendedoresCtrl',
404 size: 'lg' 405 size: 'lg'
405 } 406 }
406 ); 407 );
407 modalInstance.result.then( 408 modalInstance.result.then(
408 function(vendedor) { 409 function(vendedor) {
409 addCabecera('Vendedor:', vendedor.NomVen); 410 addCabecera('Vendedor:', vendedor.NomVen);
410 $scope.notaPedido.vendedor = vendedor; 411 $scope.notaPedido.vendedor = vendedor;
411 }, function() { 412 }, function() {
412 413
413 } 414 }
414 ); 415 );
415 }; 416 };
416 417
417 $scope.seleccionarProveedor = function() { 418 $scope.seleccionarProveedor = function() {
418 var modalInstance = $uibModal.open( 419 var modalInstance = $uibModal.open(
419 { 420 {
420 ariaLabelledBy: 'Busqueda de Proveedor', 421 ariaLabelledBy: 'Busqueda de Proveedor',
421 templateUrl: 'modal-proveedor.html', 422 templateUrl: 'modal-proveedor.html',
422 controller: 'focaModalProveedorCtrl', 423 controller: 'focaModalProveedorCtrl',
423 size: 'lg', 424 size: 'lg',
424 resolve: { 425 resolve: {
425 transportista: function() { 426 transportista: function() {
426 return false; 427 return false;
427 } 428 }
428 } 429 }
429 } 430 }
430 ); 431 );
431 modalInstance.result.then( 432 modalInstance.result.then(
432 function(proveedor) { 433 function(proveedor) {
433 $scope.notaPedido.proveedor = proveedor; 434 $scope.notaPedido.proveedor = proveedor;
434 addCabecera('Proveedor:', proveedor.NOM); 435 addCabecera('Proveedor:', proveedor.NOM);
435 }, function() { 436 }, function() {
436 437
437 } 438 }
438 ); 439 );
439 }; 440 };
440 441
441 $scope.seleccionarCliente = function() { 442 $scope.seleccionarCliente = function() {
442 443
443 var modalInstance = $uibModal.open( 444 var modalInstance = $uibModal.open(
444 { 445 {
445 ariaLabelledBy: 'Busqueda de Cliente', 446 ariaLabelledBy: 'Busqueda de Cliente',
446 templateUrl: 'foca-busqueda-cliente-modal.html', 447 templateUrl: 'foca-busqueda-cliente-modal.html',
447 controller: 'focaBusquedaClienteModalController', 448 controller: 'focaBusquedaClienteModalController',
448 size: 'lg' 449 size: 'lg'
449 } 450 }
450 ); 451 );
451 modalInstance.result.then( 452 modalInstance.result.then(
452 function(cliente) { 453 function(cliente) {
453 $scope.abrirModalDomicilios(cliente); 454 $scope.abrirModalDomicilios(cliente);
454 }, function() { 455 }, function() {
455 456
456 } 457 }
457 ); 458 );
458 }; 459 };
459 460
460 $scope.abrirModalDomicilios = function(cliente) { 461 $scope.abrirModalDomicilios = function(cliente) {
461 var modalInstanceDomicilio = $uibModal.open( 462 var modalInstanceDomicilio = $uibModal.open(
462 { 463 {
463 ariaLabelledBy: 'Busqueda de Domicilios', 464 ariaLabelledBy: 'Busqueda de Domicilios',
464 templateUrl: 'modal-domicilio.html', 465 templateUrl: 'modal-domicilio.html',
465 controller: 'focaModalDomicilioController', 466 controller: 'focaModalDomicilioController',
466 resolve: { idCliente: function() { return cliente.cod; }}, 467 resolve: { idCliente: function() { return cliente.cod; }},
467 size: 'lg', 468 size: 'lg',
468 } 469 }
469 ); 470 );
470 modalInstanceDomicilio.result.then( 471 modalInstanceDomicilio.result.then(
471 function(domicilio) { 472 function(domicilio) {
472 $scope.notaPedido.domicilio = domicilio; 473 $scope.notaPedido.domicilio = domicilio;
473 $scope.notaPedido.cliente = { 474 $scope.notaPedido.cliente = {
474 COD: cliente.cod, 475 COD: cliente.cod,
475 CUIT: cliente.cuit, 476 CUIT: cliente.cuit,
476 NOM: cliente.nom 477 NOM: cliente.nom
477 }; 478 };
478 addCabecera('Cliente:', cliente.nom); 479 addCabecera('Cliente:', cliente.nom);
479 var domicilioStamp = 480 var domicilioStamp =
480 domicilio.Calle + ' ' + domicilio.Numero + ', ' + 481 domicilio.Calle + ' ' + domicilio.Numero + ', ' +
481 domicilio.Localidad + ', ' + domicilio.Provincia; 482 domicilio.Localidad + ', ' + domicilio.Provincia;
482 $scope.notaPedido.domicilioStamp = domicilioStamp; 483 $scope.notaPedido.domicilioStamp = domicilioStamp;
483 addCabecera('Domicilio:', domicilioStamp); 484 addCabecera('Domicilio:', domicilioStamp);
484 }, function() { 485 }, function() {
485 $scope.seleccionarCliente(); 486 $scope.seleccionarCliente();
486 return; 487 return;
487 } 488 }
488 ); 489 );
489 }; 490 };
490 491
491 $scope.mostrarFichaCliente = function() { 492 $scope.mostrarFichaCliente = function() {
492 $uibModal.open( 493 $uibModal.open(
493 { 494 {
494 ariaLabelledBy: 'Datos del Cliente', 495 ariaLabelledBy: 'Datos del Cliente',
495 templateUrl: 'foca-crear-nota-pedido-ficha-cliente.html', 496 templateUrl: 'foca-crear-nota-pedido-ficha-cliente.html',
496 controller: 'focaCrearNotaPedidoFichaClienteController', 497 controller: 'focaCrearNotaPedidoFichaClienteController',
497 size: 'lg' 498 size: 'lg'
498 } 499 }
499 ); 500 );
500 }; 501 };
501 502
502 $scope.getTotal = function() { 503 $scope.getTotal = function() {
503 var total = 0; 504 var total = 0;
504 var arrayTempArticulos = $scope.articulosTabla; 505 var arrayTempArticulos = $scope.articulosTabla;
505 for (var i = 0; i < arrayTempArticulos.length; i++) { 506 for (var i = 0; i < arrayTempArticulos.length; i++) {
506 total += arrayTempArticulos[i].precio * arrayTempArticulos[i].cantidad; 507 total += arrayTempArticulos[i].precio * arrayTempArticulos[i].cantidad;
507 } 508 }
508 return parseFloat(total.toFixed(2)); 509 return parseFloat(total.toFixed(2));
509 }; 510 };
510 511
511 $scope.getSubTotal = function() { 512 $scope.getSubTotal = function() {
512 if($scope.articuloACargar) { 513 if($scope.articuloACargar) {
513 return $scope.articuloACargar.precio * $scope.articuloACargar.cantidad; 514 return $scope.articuloACargar.precio * $scope.articuloACargar.cantidad;
514 } 515 }
515 }; 516 };
516 517
517 $scope.abrirModalListaPrecio = function() { 518 $scope.abrirModalListaPrecio = function() {
518 var modalInstance = $uibModal.open( 519 var modalInstance = $uibModal.open(
519 { 520 {
520 ariaLabelledBy: 'Busqueda de Precio Condición', 521 ariaLabelledBy: 'Busqueda de Precio Condición',
521 templateUrl: 'modal-precio-condicion.html', 522 templateUrl: 'modal-precio-condicion.html',
522 controller: 'focaModalPrecioCondicionController', 523 controller: 'focaModalPrecioCondicionController',
523 size: 'lg' 524 size: 'lg'
524 } 525 }
525 ); 526 );
526 modalInstance.result.then( 527 modalInstance.result.then(
527 function(precioCondicion) { 528 function(precioCondicion) {
528 var cabecera = ''; 529 var cabecera = '';
529 var plazosConcat = ''; 530 var plazosConcat = '';
530 if(!Array.isArray(precioCondicion)) { 531 if(!Array.isArray(precioCondicion)) {
531 $scope.notaPedido.idPrecioCondicion = precioCondicion.id; 532 $scope.notaPedido.idPrecioCondicion = precioCondicion.id;
532 $scope.plazosPagos = precioCondicion.plazoPago; 533 $scope.plazosPagos = precioCondicion.plazoPago;
533 $scope.idLista = precioCondicion.idListaPrecio; 534 $scope.idLista = precioCondicion.idListaPrecio;
534 for(var i = 0; i < precioCondicion.plazoPago.length; i++) { 535 for(var i = 0; i < precioCondicion.plazoPago.length; i++) {
535 plazosConcat += precioCondicion.plazoPago[i].dias + ' '; 536 plazosConcat += precioCondicion.plazoPago[i].dias + ' ';
536 } 537 }
537 cabecera = precioCondicion.nombre + ' ' + plazosConcat.trim(); 538 cabecera = precioCondicion.nombre + ' ' + plazosConcat.trim();
538 } else { //Cuando se ingresan los plazos manualmente 539 } else { //Cuando se ingresan los plazos manualmente
539 $scope.notaPedido.idPrecioCondicion = 0; 540 $scope.notaPedido.idPrecioCondicion = 0;
540 $scope.idLista = -1; //-1, el modal productos busca todos los productos 541 $scope.idLista = -1; //-1, el modal productos busca todos los productos
541 $scope.plazosPagos = precioCondicion; 542 $scope.plazosPagos = precioCondicion;
542 for(var j = 0; j < precioCondicion.length; j++) { 543 for(var j = 0; j < precioCondicion.length; j++) {
543 plazosConcat += precioCondicion[j].dias + ' '; 544 plazosConcat += precioCondicion[j].dias + ' ';
544 } 545 }
545 cabecera = 'Ingreso manual ' + plazosConcat.trim(); 546 cabecera = 'Ingreso manual ' + plazosConcat.trim();
546 } 547 }
547 $scope.articulosTabla = []; 548 $scope.articulosTabla = [];
548 addCabecera('Precios y condiciones:', cabecera); 549 addCabecera('Precios y condiciones:', cabecera);
549 }, function() { 550 }, function() {
550 551
551 } 552 }
552 ); 553 );
553 }; 554 };
554 555
555 $scope.abrirModalFlete = function() { 556 $scope.abrirModalFlete = function() {
556 var modalInstance = $uibModal.open( 557 var modalInstance = $uibModal.open(
557 { 558 {
558 ariaLabelledBy: 'Busqueda de Flete', 559 ariaLabelledBy: 'Busqueda de Flete',
559 templateUrl: 'modal-flete.html', 560 templateUrl: 'modal-flete.html',
560 controller: 'focaModalFleteController', 561 controller: 'focaModalFleteController',
561 size: 'lg', 562 size: 'lg',
562 resolve: { 563 resolve: {
563 parametrosFlete: 564 parametrosFlete:
564 function() { 565 function() {
565 return { 566 return {
566 flete: $scope.notaPedido.flete ? '1' : 567 flete: $scope.notaPedido.flete ? '1' :
567 ($scope.notaPedido.fob ? 'FOB' : 568 ($scope.notaPedido.fob ? 'FOB' :
568 ($scope.notaPedido.flete === undefined ? null : '0')), 569 ($scope.notaPedido.flete === undefined ? null : '0')),
569 bomba: $scope.notaPedido.bomba ? '1' : 570 bomba: $scope.notaPedido.bomba ? '1' :
570 ($scope.notaPedido.bomba === undefined ? null : '0'), 571 ($scope.notaPedido.bomba === undefined ? null : '0'),
571 kilometros: $scope.notaPedido.kilometros 572 kilometros: $scope.notaPedido.kilometros
572 }; 573 };
573 } 574 }
574 } 575 }
575 } 576 }
576 ); 577 );
577 modalInstance.result.then( 578 modalInstance.result.then(
578 function(datos) { 579 function(datos) {
579 $scope.notaPedido.flete = datos.flete; 580 $scope.notaPedido.flete = datos.flete;
580 $scope.notaPedido.fob = datos.FOB; 581 $scope.notaPedido.fob = datos.FOB;
581 $scope.notaPedido.bomba = datos.bomba; 582 $scope.notaPedido.bomba = datos.bomba;
582 $scope.notaPedido.kilometros = datos.kilometros; 583 $scope.notaPedido.kilometros = datos.kilometros;
583 584
584 addCabecera('Flete:', datos.flete ? 'Si' : 585 addCabecera('Flete:', datos.flete ? 'Si' :
585 ($scope.notaPedido.fob ? 'FOB' : 'No')); 586 ($scope.notaPedido.fob ? 'FOB' : 'No'));
586 if(datos.flete) { 587 if(datos.flete) {
587 addCabecera('Bomba:', datos.bomba ? 'Si' : 'No'); 588 addCabecera('Bomba:', datos.bomba ? 'Si' : 'No');
588 addCabecera('Kilometros:', datos.kilometros); 589 addCabecera('Kilometros:', datos.kilometros);
589 } else { 590 } else {
590 removeCabecera('Bomba:'); 591 removeCabecera('Bomba:');
591 removeCabecera('Kilometros:'); 592 removeCabecera('Kilometros:');
592 $scope.notaPedido.fob = false; 593 $scope.notaPedido.fob = false;
593 $scope.notaPedido.bomba = false; 594 $scope.notaPedido.bomba = false;
594 $scope.notaPedido.kilometros = null; 595 $scope.notaPedido.kilometros = null;
595 } 596 }
596 }, function() { 597 }, function() {
597 598
598 } 599 }
599 ); 600 );
600 }; 601 };
601 602
602 $scope.abrirModalMoneda = function() { 603 $scope.abrirModalMoneda = function() {
603 var modalInstance = $uibModal.open( 604 var modalInstance = $uibModal.open(
604 { 605 {
605 ariaLabelledBy: 'Busqueda de Moneda', 606 ariaLabelledBy: 'Busqueda de Moneda',
606 templateUrl: 'modal-moneda.html', 607 templateUrl: 'modal-moneda.html',
607 controller: 'focaModalMonedaController', 608 controller: 'focaModalMonedaController',
608 size: 'lg' 609 size: 'lg'
609 } 610 }
610 ); 611 );
611 modalInstance.result.then( 612 modalInstance.result.then(
612 function(moneda) { 613 function(moneda) {
613 $scope.abrirModalCotizacion(moneda); 614 $scope.abrirModalCotizacion(moneda);
614 }, function() { 615 }, function() {
615 616
616 } 617 }
617 ); 618 );
618 }; 619 };
619 620
620 $scope.abrirModalCotizacion = function(moneda) { 621 $scope.abrirModalCotizacion = function(moneda) {
621 var modalInstance = $uibModal.open( 622 var modalInstance = $uibModal.open(
622 { 623 {
623 ariaLabelledBy: 'Busqueda de Cotización', 624 ariaLabelledBy: 'Busqueda de Cotización',
624 templateUrl: 'modal-cotizacion.html', 625 templateUrl: 'modal-cotizacion.html',
625 controller: 'focaModalCotizacionController', 626 controller: 'focaModalCotizacionController',
626 size: 'lg', 627 size: 'lg',
627 resolve: {idMoneda: function() {return moneda.ID;}} 628 resolve: {idMoneda: function() {return moneda.ID;}}
628 } 629 }
629 ); 630 );
630 modalInstance.result.then( 631 modalInstance.result.then(
631 function(cotizacion) { 632 function(cotizacion) {
632 var articulosTablaTemp = $scope.articulosTabla; 633 var articulosTablaTemp = $scope.articulosTabla;
633 for(var i = 0; i < articulosTablaTemp.length; i++) { 634 for(var i = 0; i < articulosTablaTemp.length; i++) {
634 articulosTablaTemp[i].precio = articulosTablaTemp[i].precio * 635 articulosTablaTemp[i].precio = articulosTablaTemp[i].precio *
635 $scope.notaPedido.cotizacion.VENDEDOR; 636 $scope.notaPedido.cotizacion.VENDEDOR;
636 articulosTablaTemp[i].precio = articulosTablaTemp[i].precio / 637 articulosTablaTemp[i].precio = articulosTablaTemp[i].precio /
637 cotizacion.VENDEDOR; 638 cotizacion.VENDEDOR;
638 } 639 }
639 $scope.articulosTabla = articulosTablaTemp; 640 $scope.articulosTabla = articulosTablaTemp;
640 $scope.notaPedido.moneda = moneda; 641 $scope.notaPedido.moneda = moneda;
641 $scope.notaPedido.cotizacion = cotizacion; 642 $scope.notaPedido.cotizacion = cotizacion;
642 addCabecera('Moneda:', moneda.DETALLE); 643 addCabecera('Moneda:', moneda.DETALLE);
643 addCabecera( 644 addCabecera(
644 'Fecha cotizacion:', 645 'Fecha cotizacion:',
645 $filter('date')(cotizacion.FECHA, 'dd/MM/yyyy') 646 $filter('date')(cotizacion.FECHA, 'dd/MM/yyyy')
646 ); 647 );
647 addCabecera('Cotizacion:', cotizacion.VENDEDOR); 648 addCabecera('Cotizacion:', cotizacion.VENDEDOR);
648 }, function() { 649 }, function() {
649 650
650 } 651 }
651 ); 652 );
652 }; 653 };
653 654
654 $scope.agregarATabla = function(key) { 655 $scope.agregarATabla = function(key) {
655 if(key === 13) { 656 if(key === 13) {
656 if($scope.articuloACargar.cantidad === undefined || 657 if($scope.articuloACargar.cantidad === undefined ||
657 $scope.articuloACargar.cantidad === 0 || 658 $scope.articuloACargar.cantidad === 0 ||
658 $scope.articuloACargar.cantidad === null ) { 659 $scope.articuloACargar.cantidad === null ) {
659 focaModalService.alert('El valor debe ser al menos 1'); 660 focaModalService.alert('El valor debe ser al menos 1');
660 return; 661 return;
661 } 662 }
662 delete $scope.articuloACargar.sectorCodigo; 663 delete $scope.articuloACargar.sectorCodigo;
663 $scope.articulosTabla.push($scope.articuloACargar); 664 $scope.articulosTabla.push($scope.articuloACargar);
664 $scope.cargando = true; 665 $scope.cargando = true;
665 } 666 }
666 }; 667 };
667 668
668 $scope.quitarArticulo = function(key) { 669 $scope.quitarArticulo = function(key) {
669 $scope.articulosTabla.splice(key, 1); 670 $scope.articulosTabla.splice(key, 1);
670 }; 671 };
671 672
672 $scope.editarArticulo = function(key, articulo) { 673 $scope.editarArticulo = function(key, articulo) {
673 if(key === 13) { 674 if(key === 13) {
674 if(articulo.cantidad === null || articulo.cantidad === 0 || 675 if(articulo.cantidad === null || articulo.cantidad === 0 ||
675 articulo.cantidad === undefined) { 676 articulo.cantidad === undefined) {
676 focaModalService.alert('El valor debe ser al menos 1'); 677 focaModalService.alert('El valor debe ser al menos 1');
677 return; 678 return;
678 } 679 }
679 articulo.editCantidad = false; 680 articulo.editCantidad = false;
680 articulo.editPrecio = false; 681 articulo.editPrecio = false;
681 } 682 }
682 }; 683 };
683 684
684 $scope.cambioEdit = function(articulo, propiedad) { 685 $scope.cambioEdit = function(articulo, propiedad) {
685 if(propiedad === 'cantidad') { 686 if(propiedad === 'cantidad') {
686 articulo.editCantidad = true; 687 articulo.editCantidad = true;
687 } else if(propiedad === 'precio') { 688 } else if(propiedad === 'precio') {
688 articulo.editPrecio = true; 689 articulo.editPrecio = true;
689 } 690 }
690 }; 691 };
691 692
692 $scope.limpiarFlete = function() { 693 $scope.limpiarFlete = function() {
693 $scope.notaPedido.fleteNombre = ''; 694 $scope.notaPedido.fleteNombre = '';
694 $scope.notaPedido.chofer = ''; 695 $scope.notaPedido.chofer = '';
695 $scope.notaPedido.vehiculo = ''; 696 $scope.notaPedido.vehiculo = '';
696 $scope.notaPedido.kilometros = ''; 697 $scope.notaPedido.kilometros = '';
697 $scope.notaPedido.costoUnitarioKmFlete = ''; 698 $scope.notaPedido.costoUnitarioKmFlete = '';
698 $scope.choferes = ''; 699 $scope.choferes = '';
699 $scope.vehiculos = ''; 700 $scope.vehiculos = '';
700 }; 701 };
701 702
702 $scope.limpiarPantalla = function() { 703 $scope.limpiarPantalla = function() {
703 $scope.limpiarFlete(); 704 $scope.limpiarFlete();
704 $scope.notaPedido.flete = '0'; 705 $scope.notaPedido.flete = '0';
705 $scope.notaPedido.bomba = '0'; 706 $scope.notaPedido.bomba = '0';
706 $scope.notaPedido.precioCondicion = ''; 707 $scope.notaPedido.precioCondicion = '';
707 $scope.articulosTabla = []; 708 $scope.articulosTabla = [];
708 $scope.notaPedido.vendedor.nombre = ''; 709 $scope.notaPedido.vendedor.nombre = '';
709 $scope.notaPedido.cliente = {nombre: ''}; 710 $scope.notaPedido.cliente = {nombre: ''};
710 $scope.notaPedido.domicilio = {dom: ''}; 711 $scope.notaPedido.domicilio = {dom: ''};
711 $scope.domiciliosCliente = []; 712 $scope.domiciliosCliente = [];
712 }; 713 };
713 714
714 $scope.resetFilter = function() { 715 $scope.resetFilter = function() {
715 $scope.articuloACargar = {}; 716 $scope.articuloACargar = {};
716 $scope.cargando = true; 717 $scope.cargando = true;
717 }; 718 };
718 //Recibe aviso si el teclado está en uso 719 //Recibe aviso si el teclado está en uso
719 $rootScope.$on('usarTeclado', function(event, data) { 720 $rootScope.$on('usarTeclado', function(event, data) {
720 if(data) { 721 if(data) {
721 $scope.mostrarTeclado = true; 722 $scope.mostrarTeclado = true;
722 return; 723 return;
723 } 724 }
724 $scope.mostrarTeclado = false; 725 $scope.mostrarTeclado = false;
725 }); 726 });
726 727
727 $scope.selectFocus = function($event) { 728 $scope.selectFocus = function($event) {
728 // Si el teclado esta en uso no selecciona el valor 729 // Si el teclado esta en uso no selecciona el valor
729 if($scope.mostrarTeclado) { 730 if($scope.mostrarTeclado) {
730 return; 731 return;
731 } 732 }
732 $event.target.select(); 733 $event.target.select();
733 }; 734 };
734 735
735 $scope.salir = function() { 736 $scope.salir = function() {
736 $location.path('/'); 737 $location.path('/');
737 }; 738 };
738 739
739 $scope.parsearATexto = function(articulo) { 740 $scope.parsearATexto = function(articulo) {
740 articulo.cantidad = parseFloat(articulo.cantidad); 741 articulo.cantidad = parseFloat(articulo.cantidad);
741 articulo.precio = parseFloat(articulo.precio); 742 articulo.precio = parseFloat(articulo.precio);
742 }; 743 };
743 744
744 function addArrayCabecera(array) { 745 function addArrayCabecera(array) {
745 for(var i = 0; i < array.length; i++) { 746 for(var i = 0; i < array.length; i++) {
746 addCabecera(array[i].label, array[i].valor); 747 addCabecera(array[i].label, array[i].valor);
747 } 748 }
748 } 749 }
749 750
750 function addCabecera(label, valor) { 751 function addCabecera(label, valor) {
751 var propiedad = $filter('filter')($scope.cabecera, {label: label}, true); 752 var propiedad = $filter('filter')($scope.cabecera, {label: label}, true);
752 if(propiedad.length === 1) { 753 if(propiedad.length === 1) {
753 propiedad[0].valor = valor; 754 propiedad[0].valor = valor;
754 } else { 755 } else {
755 $scope.cabecera.push({label: label, valor: valor}); 756 $scope.cabecera.push({label: label, valor: valor});
756 } 757 }
757 } 758 }
758 759
759 function removeCabecera(label) { 760 function removeCabecera(label) {
760 var propiedad = $filter('filter')($scope.cabecera, {label: label}, true); 761 var propiedad = $filter('filter')($scope.cabecera, {label: label}, true);
761 if(propiedad.length === 1) { 762 if(propiedad.length === 1) {
762 $scope.cabecera.splice($scope.cabecera.indexOf(propiedad[0]), 1); 763 $scope.cabecera.splice($scope.cabecera.indexOf(propiedad[0]), 1);
763 } 764 }
764 } 765 }
765 766
766 function rellenar(relleno, longitud) { 767 function rellenar(relleno, longitud) {
767 relleno = '' + relleno; 768 relleno = '' + relleno;
768 while (relleno.length < longitud) { 769 while (relleno.length < longitud) {
769 relleno = '0' + relleno; 770 relleno = '0' + relleno;
770 } 771 }
771 772
772 return relleno; 773 return relleno;
773 } 774 }
774 775
775 function validarNotaRemitada(funcion) { 776 function validarNotaRemitada(funcion) {
776 if($scope.notaPedido.idRemito) { 777 if($scope.notaPedido.idRemito) {
777 focaModalService.alert('No se puede editar una nota de pedido remitada'); 778 focaModalService.alert('No se puede editar una nota de pedido remitada');
778 } 779 }
779 else { 780 else {
780 funcion(); 781 funcion();
781 } 782 }
782 } 783 }
783 } 784 }
784 ] 785 ]
785 ) 786 )
786 .controller('notaPedidoListaCtrl', [ 787 .controller('notaPedidoListaCtrl', [
787 '$scope', 788 '$scope',
788 'crearNotaPedidoService', 789 'crearNotaPedidoService',
789 '$location', 790 '$location',
790 function($scope, crearNotaPedidoService, $location) { 791 function($scope, crearNotaPedidoService, $location) {
791 crearNotaPedidoService.obtenerNotaPedido().then(function(datos) { 792 crearNotaPedidoService.obtenerNotaPedido().then(function(datos) {
792 $scope.notaPedidos = datos.data; 793 $scope.notaPedidos = datos.data;
793 }); 794 });
794 $scope.editar = function(notaPedido) { 795 $scope.editar = function(notaPedido) {
795 crearNotaPedidoService.setNotaPedido(notaPedido); 796 crearNotaPedidoService.setNotaPedido(notaPedido);
796 $location.path('/venta-nota-pedido/abm/'); 797 $location.path('/venta-nota-pedido/abm/');
797 }; 798 };
798 $scope.crearPedido = function() { 799 $scope.crearPedido = function() {
799 crearNotaPedidoService.clearNotaPedido(); 800 crearNotaPedidoService.clearNotaPedido();
800 $location.path('/venta-nota-pedido/abm/'); 801 $location.path('/venta-nota-pedido/abm/');
801 }; 802 };
802 } 803 }
803 ]) 804 ])
804 .controller('focaCrearNotaPedidoFichaClienteController', [ 805 .controller('focaCrearNotaPedidoFichaClienteController', [
805 '$scope', 806 '$scope',
806 'crearNotaPedidoService', 807 'crearNotaPedidoService',
807 '$location', 808 '$location',
808 function($scope, crearNotaPedidoService, $location) { 809 function($scope, crearNotaPedidoService, $location) {
809 crearNotaPedidoService.obtenerNotaPedido().then(function(datos) { 810 crearNotaPedidoService.obtenerNotaPedido().then(function(datos) {
810 $scope.notaPedidos = datos.data; 811 $scope.notaPedidos = datos.data;
811 }); 812 });
812 $scope.editar = function(notaPedido) { 813 $scope.editar = function(notaPedido) {
813 crearNotaPedidoService.setNotaPedido(notaPedido); 814 crearNotaPedidoService.setNotaPedido(notaPedido);
814 $location.path('/venta-nota-pedido/abm/'); 815 $location.path('/venta-nota-pedido/abm/');
815 }; 816 };
816 $scope.crearPedido = function() { 817 $scope.crearPedido = function() {
817 crearNotaPedidoService.clearNotaPedido(); 818 crearNotaPedidoService.clearNotaPedido();
818 $location.path('/venta-nota-pedido/abm/'); 819 $location.path('/venta-nota-pedido/abm/');
819 }; 820 };
820 } 821 }
821 ]); 822 ]);
822 823
src/views/nota-pedido.html
1 <div class="crear-nota-pedido"> 1 <div class="crear-nota-pedido">
2 <form name="formCrearNota" ng-submit="crearNotaPedido()" class="mb-0"> 2 <form name="formCrearNota" ng-submit="crearNotaPedido()" class="mb-0">
3 <div class="row"> 3 <div class="row">
4 <div class="col-md-10 offset-md-1 col-lg-8 offset-lg-2"> 4 <div class="col-md-10 offset-md-1 col-lg-8 offset-lg-2">
5 <div class="row p-1 panel-informativo"> 5 <div class="row p-1 panel-informativo">
6 <div class="col-12"> 6 <div class="col-12">
7 <div class="row"> 7 <div class="row">
8 <div class="col-12 col-sm-4 nota-pedido"> 8 <div class="col-12 col-sm-4 nota-pedido">
9 <h5>NOTA DE PEDIDO</h5> 9 <h5>NOTA DE PEDIDO</h5>
10 </div> 10 </div>
11 <div class="col-5 col-sm-4 numero-pedido" 11 <div class="col-5 col-sm-4 numero-pedido"
12 >Nº {{puntoVenta}}-{{comprobante}} 12 >Nº {{puntoVenta}}-{{comprobante}}
13 <button 13 <button
14 class="btn btn-xs btn-outline-dark" 14 class="btn btn-xs btn-outline-dark"
15 type="button" 15 type="button"
16 ng-click="seleccionarNotaPedido()" 16 ng-click="seleccionarNotaPedido()"
17 > 17 >
18 <i class="fa fa-search"></i> 18 <i class="fa fa-search"></i>
19 </button> 19 </button>
20 </div> 20 </div>
21 <div class="col-7 col-sm-4 text-right"> 21 <div class="col-7 col-sm-4 text-right">
22 Fecha: 22 Fecha:
23 <span 23 <span
24 ng-show="!datepickerAbierto" 24 ng-show="!datepickerAbierto"
25 ng-bind="now | date:'dd/MM/yyyy HH:mm'" 25 ng-bind="now | date:'dd/MM/yyyy HH:mm'"
26 ng-click="datepickerAbierto = true" 26 ng-click="datepickerAbierto = true"
27 > 27 >
28 </span> 28 </span>
29 <input 29 <input
30 ng-show="datepickerAbierto" 30 ng-show="datepickerAbierto"
31 type="date" 31 type="date"
32 ng-model="now" 32 ng-model="now"
33 ng-change="datepickerAbierto = false" 33 ng-change="datepickerAbierto = false"
34 ng-blur="datepickerAbierto = false" 34 ng-blur="datepickerAbierto = false"
35 class="form-control form-control-sm col-8 float-right" 35 class="form-control form-control-sm col-8 float-right"
36 foca-focus="datepickerAbierto" 36 foca-focus="datepickerAbierto"
37 hasta-hoy 37 hasta-hoy
38 /> 38 />
39 </div> 39 </div>
40 </div> 40 </div>
41 <div class="row"> 41 <div class="row">
42 <div class="col-auto" ng-repeat="cab in cabecera" ng-show="showCabecera"> 42 <div class="col-auto" ng-repeat="cab in cabecera" ng-show="showCabecera">
43 <span class="label" ng-bind="cab.label"></span> 43 <span class="label" ng-bind="cab.label"></span>
44 <span class="valor" ng-bind="cab.valor"></span> 44 <span class="valor" ng-bind="cab.valor"></span>
45 </div> 45 </div>
46 <a 46 <a
47 class="btn col-12 btn-secondary d-sm-none" 47 class="btn col-12 btn-secondary d-sm-none"
48 ng-show="cabecera.length > 0" 48 ng-show="cabecera.length > 0"
49 ng-click="showCabecera = !showCabecera" 49 ng-click="showCabecera = !showCabecera"
50 > 50 >
51 <i 51 <i
52 class="fa fa-chevron-down" 52 class="fa fa-chevron-down"
53 ng-hide="showCabecera" 53 ng-hide="showCabecera"
54 aria-hidden="true" 54 aria-hidden="true"
55 > 55 >
56 </i> 56 </i>
57 <i 57 <i
58 class="fa fa-chevron-up" 58 class="fa fa-chevron-up"
59 ng-show="showCabecera" 59 ng-show="showCabecera"
60 aria-hidden="true"> 60 aria-hidden="true">
61 </i> 61 </i>
62 </a> 62 </a>
63 </div> 63 </div>
64 </div> 64 </div>
65 </div> 65 </div>
66 <div class="row p-1 botonera-secundaria"> 66 <div class="row p-1 botonera-secundaria">
67 <div class="col-12"> 67 <div class="col-12">
68 <div class="row"> 68 <div class="row">
69 <div class="col-6 col-sm-3 px-0 py-0" ng-repeat="boton in botonera"> 69 <div class="col-6 col-sm-3 px-0 py-0" ng-repeat="boton in botonera">
70 <button 70 <button
71 type="button" 71 type="button"
72 class="btn btn-default btn-block btn-xs text-left py-2" 72 class="btn btn-default btn-block btn-xs text-left py-2"
73 ng-click="boton.accion()" 73 ng-click="boton.accion()"
74 ng-class="{'d-none d-sm-block': boton.texto == ''}" 74 ng-class="{'d-none d-sm-block': boton.texto == ''}"
75 > 75 >
76 <i 76 <i
77 class="fa fa-arrow-circle-right" 77 class="fa fa-arrow-circle-right"
78 ng-show="boton.texto != ''" 78 ng-show="boton.texto != ''"
79 ></i> 79 ></i>
80 &nbsp; 80 &nbsp;
81 {{boton.texto}} 81 {{boton.texto}}
82 </button> 82 </button>
83 </div> 83 </div>
84 </div> 84 </div>
85 </div> 85 </div>
86 </div> 86 </div>
87 </div> 87 </div>
88 </div> 88 </div>
89 </form> 89 </form>
90 <div class="row"> 90 <div class="row">
91 <div class="col-12 col-md-10 col-lg-8 offset-md-1 offset-lg-2"> 91 <div class="col-12 col-md-10 col-lg-8 offset-md-1 offset-lg-2">
92 <!-- PC --> 92 <!-- PC -->
93 <div class="row grilla-articulo align-items-end d-none d-sm-flex"> 93 <div class="row grilla-articulo align-items-end d-none d-sm-flex">
94 <table class="table tabla-articulo table-striped table-sm table-dark"> 94 <table class="table tabla-articulo table-striped table-sm table-dark">
95 <thead> 95 <thead>
96 <tr class="d-flex"> 96 <tr class="d-flex">
97 <th class="">#</th> 97 <th class="">#</th>
98 <th class="col">Código</th> 98 <th class="col">Código</th>
99 <th class="col-4">Descripción</th> 99 <th class="col-4">Descripción</th>
100 <th class="col text-right">Cantidad</th> 100 <th class="col text-right">Cantidad</th>
101 <th class="col text-right">Precio Unitario</th> 101 <th class="col text-right">Precio Unitario</th>
102 <th class="col text-right">SubTotal</th> 102 <th class="col text-right">SubTotal</th>
103 <th class="text-right"> 103 <th class="text-right">
104 <button 104 <button
105 class="btn btn-outline-secondary selectable" 105 class="btn btn-outline-secondary selectable"
106 ng-click="show = !show; masMenos()" 106 ng-click="show = !show; masMenos()"
107 > 107 >
108 <i 108 <i
109 class="fa fa-chevron-down" 109 class="fa fa-chevron-down"
110 ng-show="show" 110 ng-show="show"
111 aria-hidden="true" 111 aria-hidden="true"
112 > 112 >
113 </i> 113 </i>
114 <i 114 <i
115 class="fa fa-chevron-up" 115 class="fa fa-chevron-up"
116 ng-hide="show" 116 ng-hide="show"
117 aria-hidden="true"> 117 aria-hidden="true">
118 </i> 118 </i>
119 </button> 119 </button>
120 </th> 120 </th>
121 </tr> 121 </tr>
122 </thead> 122 </thead>
123 <tbody class="tabla-articulo-body"> 123 <tbody class="tabla-articulo-body">
124 <tr 124 <tr
125 ng-repeat="(key, articulo) in articulosTabla" 125 ng-repeat="(key, articulo) in articulosTabla"
126 ng-show="show || key == (articulosTabla.length - 1)" 126 ng-show="show || key == (articulosTabla.length - 1)"
127 class="d-flex" 127 class="d-flex"
128 > 128 >
129 <td ng-bind="key + 1"></td> 129 <td ng-bind="key + 1"></td>
130 <td 130 <td
131 class="col" 131 class="col"
132 ng-bind="articulo.sector + '-' + articulo.codigo" 132 ng-bind="articulo.sector + '-' + articulo.codigo"
133 ></td> 133 ></td>
134 <td 134 <td
135 class="col-4" 135 class="col-4"
136 ng-bind="articulo.descripcion" 136 ng-bind="articulo.descripcion"
137 ></td> 137 ></td>
138 <td class="col text-right"> 138 <td class="col text-right">
139 <input 139 <input
140 ng-show="articulo.editCantidad" 140 ng-show="articulo.editCantidad"
141 ng-model="articulo.cantidad" 141 ng-model="articulo.cantidad"
142 class="form-control" 142 class="form-control"
143 foca-tipo-input 143 foca-tipo-input
144 min="1" 144 min="1"
145 step="0.001" 145 step="0.001"
146 foca-focus="articulo.editCantidad" 146 foca-focus="articulo.editCantidad"
147 ng-keypress="editarArticulo($event.keyCode, articulo)" 147 ng-keypress="editarArticulo($event.keyCode, articulo)"
148 ng-focus="selectFocus($event)" 148 ng-focus="selectFocus($event)"
149 teclado-virtual 149 teclado-virtual
150 > 150 >
151 <i 151 <i
152 class="selectable" 152 class="selectable"
153 ng-click="cambioEdit(articulo, 'cantidad')" 153 ng-click="cambioEdit(articulo, 'cantidad')"
154 ng-hide="articulo.editCantidad" 154 ng-hide="articulo.editCantidad"
155 ng-bind="articulo.cantidad"> 155 ng-bind="articulo.cantidad">
156 </i> 156 </i>
157 </td> 157 </td>
158 <td class="col text-right"> 158 <td class="col text-right">
159 <input 159 <input
160 ng-show="articulo.editPrecio" 160 ng-show="articulo.editPrecio"
161 ng-model="articulo.precio" 161 ng-model="articulo.precio"
162 class="form-control" 162 class="form-control"
163 foca-tipo-input 163 foca-tipo-input
164 min="0" 164 min="0"
165 step="0.0001" 165 step="0.0001"
166 foca-focus="articulo.editPrecio" 166 foca-focus="articulo.editPrecio"
167 ng-keypress="editarArticulo($event.keyCode, articulo)" 167 ng-keypress="editarArticulo($event.keyCode, articulo)"
168 ng-focus="selectFocus($event)" 168 ng-focus="selectFocus($event)"
169 teclado-virtual 169 teclado-virtual
170 > 170 >
171 <i 171 <i
172 class="selectable" 172 class="selectable"
173 ng-click="idLista == -1 && cambioEdit(articulo, 'precio')" 173 ng-click="idLista == -1 && cambioEdit(articulo, 'precio')"
174 ng-hide="articulo.editPrecio" 174 ng-hide="articulo.editPrecio"
175 ng-bind="articulo.precio | currency: notaPedido.moneda.simbolo : 4"> 175 ng-bind="articulo.precio |
176 currency: notaPedido.moneda.SIMBOLO : 4">
176 </i> 177 </i>
177 </td> 178 </td>
178 <td 179 <td
179 class="col text-right" 180 class="col text-right"
180 ng-bind="(articulo.precio * articulo.cantidad) | currency: notaPedido.moneda.simbolo"> 181 ng-bind="(articulo.precio * articulo.cantidad) |
182 currency: notaPedido.moneda.SIMBOLO">
181 </td> 183 </td>
182 <td class="text-center"> 184 <td class="text-center">
183 <button 185 <button
184 ng-show="articulo.editCantidad || articulo.editPrecio" 186 ng-show="articulo.editCantidad || articulo.editPrecio"
185 class="btn btn-outline-secondary" 187 class="btn btn-outline-secondary"
186 ng-click="editarArticulo(13, articulo)" 188 ng-click="editarArticulo(13, articulo)"
187 > 189 >
188 <i class="fa fa-save"></i> 190 <i class="fa fa-save"></i>
189 </button> 191 </button>
190 <button 192 <button
191 class="btn btn-outline-secondary" 193 class="btn btn-outline-secondary"
192 ng-click="quitarArticulo(key)" 194 ng-click="quitarArticulo(key)"
193 > 195 >
194 <i class="fa fa-trash"></i> 196 <i class="fa fa-trash"></i>
195 </button> 197 </button>
196 </td> 198 </td>
197 </tr> 199 </tr>
198 </tbody> 200 </tbody>
199 <tfoot> 201 <tfoot>
200 <tr ng-show="!cargando" class="d-flex"> 202 <tr ng-show="!cargando" class="d-flex">
201 <td 203 <td
202 class="align-middle" 204 class="align-middle"
203 ng-bind="articulosTabla.length + 1" 205 ng-bind="articulosTabla.length + 1"
204 ></td> 206 ></td>
205 <td class="col"> 207 <td class="col">
206 <input 208 <input
207 class="form-control" 209 class="form-control"
208 ng-model="articuloACargar.sectorCodigo" 210 ng-model="articuloACargar.sectorCodigo"
209 readonly 211 readonly
210 > 212 >
211 </td> 213 </td>
212 <td class="col-4 tabla-articulo-descripcion"> 214 <td class="col-4 tabla-articulo-descripcion">
213 <input 215 <input
214 class="form-control" 216 class="form-control"
215 ng-model="articuloACargar.descripcion" 217 ng-model="articuloACargar.descripcion"
216 readonly 218 readonly
217 > 219 >
218 </td> 220 </td>
219 <td class="col text-right"> 221 <td class="col text-right">
220 <input 222 <input
221 class="form-control" 223 class="form-control"
222 foca-tipo-input 224 foca-tipo-input
223 min="1" 225 min="1"
224 step="0.001" 226 step="0.001"
225 ng-model="articuloACargar.cantidad" 227 ng-model="articuloACargar.cantidad"
226 foca-focus="!cargando" 228 foca-focus="!cargando"
227 esc-key="resetFilter()" 229 esc-key="resetFilter()"
228 ng-keypress="agregarATabla($event.keyCode)" 230 ng-keypress="agregarATabla($event.keyCode)"
229 teclado-virtual 231 teclado-virtual
230 > 232 >
231 </td> 233 </td>
232 <td class="col text-right"> 234 <td class="col text-right">
233 <input 235 <input
234 class="form-control" 236 class="form-control"
235 ng-value="articuloACargar.precio | currency: notaPedido.moneda.simbolo : 4" 237 ng-value="articuloACargar.precio |
238 currency: notaPedido.moneda.SIMBOLO : 4"
236 ng-show="idLista != -1" 239 ng-show="idLista != -1"
237 readonly 240 readonly
238 > 241 >
239 <input 242 <input
240 class="form-control" 243 class="form-control"
241 foca-tipo-input 244 foca-tipo-input
242 min="0" 245 min="0"
243 step="0.0001" 246 step="0.0001"
244 ng-model="articuloACargar.precio" 247 ng-model="articuloACargar.precio"
245 esc-key="resetFilter()" 248 esc-key="resetFilter()"
246 ng-keypress="agregarATabla($event.keyCode)" 249 ng-keypress="agregarATabla($event.keyCode)"
247 ng-show="idLista == -1" 250 ng-show="idLista == -1"
248 teclado-virtual 251 teclado-virtual
249 > 252 >
250 </td> 253 </td>
251 <td class="col text-right"> 254 <td class="col text-right">
252 <input 255 <input
253 class="form-control" 256 class="form-control"
254 ng-value="getSubTotal() | currency: notaPedido.moneda.simbolo" 257 ng-value="getSubTotal() | currency: notaPedido.moneda.SIMBOLO"
255 readonly 258 readonly
256 ></td> 259 ></td>
257 <td class="text-center align-middle"> 260 <td class="text-center align-middle">
258 <button 261 <button
259 class="btn btn-outline-secondary" 262 class="btn btn-outline-secondary"
260 ng-click="agregarATabla(13)" 263 ng-click="agregarATabla(13)"
261 > 264 >
262 <i class="fa fa-save"></i> 265 <i class="fa fa-save"></i>
263 </button> 266 </button>
264 </td> 267 </td>
265 </tr> 268 </tr>
266 <tr ng-show="cargando" class="d-flex"> 269 <tr ng-show="cargando" class="d-flex">
267 <td colspan="7" class="col-12"> 270 <td colspan="7" class="col-12">
268 <input 271 <input
269 placeholder="Seleccione Articulo" 272 placeholder="Seleccione Articulo"
270 class="form-control form-control-sm" 273 class="form-control form-control-sm"
271 readonly 274 readonly
272 ng-click="seleccionarArticulo()" 275 ng-click="seleccionarArticulo()"
273 /> 276 />
274 </td> 277 </td>
275 </tr> 278 </tr>
276 <tr class="d-flex"> 279 <tr class="d-flex">
277 <td colspan="4" class="no-border-top"> 280 <td colspan="4" class="no-border-top">
278 <strong>Items:</strong> 281 <strong>Items:</strong>
279 <a ng-bind="articulosTabla.length"></a> 282 <a ng-bind="articulosTabla.length"></a>
280 </td> 283 </td>
281 <td class="text-right ml-auto table-celda-total no-border-top"> 284 <td class="text-right ml-auto table-celda-total no-border-top">
282 <h3>Total:</h3> 285 <h3>Total:</h3>
283 </td> 286 </td>
284 <td class="table-celda-total text-right no-border-top" colspan="1"> 287 <td class="table-celda-total text-right no-border-top" colspan="1">
285 <h3>{{getTotal() | currency: notaPedido.moneda.simbolo}}</h3> 288 <h3>{{getTotal() | currency: notaPedido.moneda.SIMBOLO}}</h3>
286 </td> 289 </td>
287 <td class="text-right no-border-top"> 290 <td class="text-right no-border-top">
288 <button 291 <button
289 type="button" 292 type="button"
290 class="btn btn-default btn-sm" 293 class="btn btn-default btn-sm"
291 > 294 >
292 Totales 295 Totales
293 </button> 296 </button>
294 </td> 297 </td>
295 </tr> 298 </tr>
296 </tfoot> 299 </tfoot>
297 </table> 300 </table>
298 </div> 301 </div>
299 302
300 <!-- MOBILE --> 303 <!-- MOBILE -->
301 <div class="row d-sm-none"> 304 <div class="row d-sm-none">
302 <table class="table table-sm table-striped table-dark margin-bottom-mobile"> 305 <table class="table table-sm table-striped table-dark margin-bottom-mobile">
303 <thead> 306 <thead>
304 <tr class="d-flex"> 307 <tr class="d-flex">
305 <th class="">#</th> 308 <th class="">#</th>
306 <th class="col px-0"> 309 <th class="col px-0">
307 <div class="d-flex"> 310 <div class="d-flex">
308 <div class="col-4 px-1">Código</div> 311 <div class="col-4 px-1">Código</div>
309 <div class="col-8 px-1">Descripción</div> 312 <div class="col-8 px-1">Descripción</div>
310 </div> 313 </div>
311 <div class="d-flex"> 314 <div class="d-flex">
312 <div class="col-3 px-1">Cantidad</div> 315 <div class="col-3 px-1">Cantidad</div>
313 <div class="col px-1 text-right">P. Uni.</div> 316 <div class="col px-1 text-right">P. Uni.</div>
314 <div class="col px-1 text-right">Subtotal</div> 317 <div class="col px-1 text-right">Subtotal</div>
315 </div> 318 </div>
316 </th> 319 </th>
317 <th class="text-center tamaño-boton"> 320 <th class="text-center tamaño-boton">
318 &nbsp; 321 &nbsp;
319 </th> 322 </th>
320 </tr> 323 </tr>
321 </thead> 324 </thead>
322 <tbody> 325 <tbody>
323 <tr 326 <tr
324 ng-repeat="(key, articulo) in articulosTabla" 327 ng-repeat="(key, articulo) in articulosTabla"
325 ng-show="show || key == articulosTabla.length - 1" 328 ng-show="show || key == articulosTabla.length - 1"
326 > 329 >
327 <td class="w-100 align-middle d-flex p-0"> 330 <td class="w-100 align-middle d-flex p-0">
328 <div class="align-middle p-1"> 331 <div class="align-middle p-1">
329 <span ng-bind="key+1" class="align-middle"></span> 332 <span ng-bind="key+1" class="align-middle"></span>
330 </div> 333 </div>
331 <div class="col px-0"> 334 <div class="col px-0">
332 <div class="d-flex"> 335 <div class="d-flex">
333 <div class="col-4 px-1"> 336 <div class="col-4 px-1">
334 <span 337 <span
335 ng-bind="articulo.sector + '-' + articulo.codigo" 338 ng-bind="articulo.sector + '-' + articulo.codigo"
336 ></span> 339 ></span>
337 </div> 340 </div>
338 <div class="col-8 px-1"> 341 <div class="col-8 px-1">
339 <span ng-bind="articulo.descripcion"></span> 342 <span ng-bind="articulo.descripcion"></span>
340 </div> 343 </div>
341 </div> 344 </div>
342 <div class="d-flex"> 345 <div class="d-flex">
343 <div class="col-3 px-1"> 346 <div class="col-3 px-1">
344 <span ng-bind="'x' + articulo.cantidad"></span> 347 <span ng-bind="'x' + articulo.cantidad"></span>
345 </div> 348 </div>
346 <div class="col-3 px-1 text-right"> 349 <div class="col-3 px-1 text-right">
347 <span ng-bind="articulo.precio | currency: notaPedido.moneda.simbolo : 4"></span> 350 <span
351 ng-bind="articulo.precio |
352 currency: notaPedido.moneda.SIMBOLO : 4"
353 ></span>
348 </div> 354 </div>
349 <div class="col px-1 text-right"> 355 <div class="col px-1 text-right">
350 <span 356 <span
351 ng-bind="(articulo.precio * articulo.cantidad) | currency: notaPedido.moneda.simbolo" 357 ng-bind="(articulo.precio * articulo.cantidad) |
358 currency: notaPedido.moneda.SIMBOLO"
352 > 359 >
353 </span> 360 </span>
354 </div> 361 </div>
355 </div> 362 </div>
356 </div> 363 </div>
357 <div class="align-middle p-1"> 364 <div class="align-middle p-1">
358 <button 365 <button
359 class="btn btn-outline-secondary" 366 class="btn btn-outline-secondary"
360 ng-click="quitarArticulo(key)" 367 ng-click="quitarArticulo(key)"
361 > 368 >
362 <i class="fa fa-trash"></i> 369 <i class="fa fa-trash"></i>
363 </button> 370 </button>
364 </div> 371 </div>
365 </td> 372 </td>
366 </tr> 373 </tr>
367 </tbody> 374 </tbody>
368 <tfoot> 375 <tfoot>
369 <!-- CARGANDO ITEM --> 376 <!-- CARGANDO ITEM -->
370 <tr ng-show="!cargando" class="d-flex"> 377 <tr ng-show="!cargando" class="d-flex">
371 <td 378 <td
372 class="align-middle p-1" 379 class="align-middle p-1"
373 ng-bind="articulosTabla.length + 1" 380 ng-bind="articulosTabla.length + 1"
374 ></td> 381 ></td>
375 <td class="col p-0"> 382 <td class="col p-0">
376 <div class="d-flex"> 383 <div class="d-flex">
377 <div class="col-4 px-1"> 384 <div class="col-4 px-1">
378 <span 385 <span
379 ng-bind="articuloACargar.sectorCodigo" 386 ng-bind="articuloACargar.sectorCodigo"
380 ></span> 387 ></span>
381 </div> 388 </div>
382 <div class="col-8 px-1"> 389 <div class="col-8 px-1">
383 <span ng-bind="articuloACargar.descripcion"></span> 390 <span ng-bind="articuloACargar.descripcion"></span>
384 </div> 391 </div>
385 </div> 392 </div>
386 <div class="d-flex"> 393 <div class="d-flex">
387 <div class="col-3 px-1 m-1"> 394 <div class="col-3 px-1 m-1">
388 <input 395 <input
389 class="form-control p-1" 396 class="form-control p-1"
390 foca-tipo-input 397 foca-tipo-input
391 min="1" 398 min="1"
392 ng-model="articuloACargar.cantidad" 399 ng-model="articuloACargar.cantidad"
393 foca-focus="!cargando" 400 foca-focus="!cargando"
394 ng-keypress="agregarATabla($event.keyCode)" 401 ng-keypress="agregarATabla($event.keyCode)"
395 style="height: auto; line-height: 1.1em" 402 style="height: auto; line-height: 1.1em"
396 > 403 >
397 </div> 404 </div>
398 <div class="col-3 px-1 text-right"> 405 <div class="col-3 px-1 text-right">
399 <span ng-bind="articuloACargar.precio | currency: notaPedido.moneda.simbolo : 4"></span> 406 <span ng-bind="articuloACargar.precio |
407 currency: notaPedido.moneda.SIMBOLO : 4"></span>
400 </div> 408 </div>
401 <div class="col px-1 text-right"> 409 <div class="col px-1 text-right">
402 <span 410 <span
403 ng-bind="getSubTotal() | currency: notaPedido.moneda.simbolo" 411 ng-bind="getSubTotal() |
412 currency: notaPedido.moneda.SIMBOLO"
404 > 413 >
405 </span> 414 </span>
406 </div> 415 </div>
407 </div> 416 </div>
408 </td> 417 </td>
409 <td class="text-center align-middle"> 418 <td class="text-center align-middle">
410 <button 419 <button
411 class="btn btn-outline-secondary" 420 class="btn btn-outline-secondary"
412 ng-click="agregarATabla(13)" 421 ng-click="agregarATabla(13)"
413 > 422 >
414 <i class="fa fa-save"></i> 423 <i class="fa fa-save"></i>
415 </button> 424 </button>
416 </td> 425 </td>
417 </tr> 426 </tr>
418 <!-- SELECCIONAR PRODUCTO --> 427 <!-- SELECCIONAR PRODUCTO -->
419 <tr ng-show="cargando" class="d-flex"> 428 <tr ng-show="cargando" class="d-flex">
420 <td class="col-12"> 429 <td class="col-12">
421 <input 430 <input
422 placeholder="Seleccione Articulo" 431 placeholder="Seleccione Articulo"
423 class="form-control form-control-sm" 432 class="form-control form-control-sm"
424 readonly 433 readonly
425 ng-click="seleccionarArticulo()" 434 ng-click="seleccionarArticulo()"
426 /> 435 />
427 </td> 436 </td>
428 </tr> 437 </tr>
429 <!-- TOOGLE EXPANDIR --> 438 <!-- TOOGLE EXPANDIR -->
430 <tr> 439 <tr>
431 <td class="col"> 440 <td class="col">
432 <button 441 <button
433 class="btn btn-outline-secondary selectable w-100" 442 class="btn btn-outline-secondary selectable w-100"
434 ng-click="show = !show; masMenos()" 443 ng-click="show = !show; masMenos()"
435 ng-show="articulosTabla.length > 0" 444 ng-show="articulosTabla.length > 0"
436 > 445 >
437 <i 446 <i
438 class="fa fa-chevron-down" 447 class="fa fa-chevron-down"
439 ng-hide="show" 448 ng-hide="show"
440 aria-hidden="true" 449 aria-hidden="true"
441 > 450 >
442 </i> 451 </i>
443 <i 452 <i
444 class="fa fa-chevron-up" 453 class="fa fa-chevron-up"
445 ng-show="show" 454 ng-show="show"
446 aria-hidden="true"> 455 aria-hidden="true">
447 </i> 456 </i>
448 </button> 457 </button>
449 </td> 458 </td>
450 </tr> 459 </tr>
451 <!-- FOOTER --> 460 <!-- FOOTER -->
452 <tr class="d-flex"> 461 <tr class="d-flex">
453 <td class="align-middle no-border-top" colspan="2"> 462 <td class="align-middle no-border-top" colspan="2">
454 <strong>Cantidad Items:</strong> 463 <strong>Cantidad Items:</strong>
455 <a ng-bind="articulosTabla.length"></a> 464 <a ng-bind="articulosTabla.length"></a>
456 </td> 465 </td>
457 <td class="text-right ml-auto table-celda-total no-border-top"> 466 <td class="text-right ml-auto table-celda-total no-border-top">
458 <h3>Total:</h3> 467 <h3>Total:</h3>
459 </td> 468 </td>
460 <td class="table-celda-total text-right no-border-top"> 469 <td class="table-celda-total text-right no-border-top">
461 <h3>{{getTotal() | currency: notaPedido.moneda.simbolo}}</h3> 470 <h3>{{getTotal() | currency: notaPedido.moneda.SIMBOLO}}</h3>
462 </td> 471 </td>
463 </tr> 472 </tr>
464 </tfoot> 473 </tfoot>
465 </table> 474 </table>
466 </div> 475 </div>
467 </div> 476 </div>
468 <div class="col-auto my-2 col-lg-2 botonera-lateral d-none d-md-block"> 477 <div class="col-auto my-2 col-lg-2 botonera-lateral d-none d-md-block">
469 <div class="row align-items-end"> 478 <div class="row align-items-end">
470 <div class="col-12"> 479 <div class="col-12">
471 <button 480 <button
472 ng-click="crearNotaPedido()" 481 ng-click="crearNotaPedido()"
473 type="submit" 482 type="submit"
474 title="Crear nota pedido" 483 title="Crear nota pedido"
475 class="btn btn-default btn-block mb-2"> 484 class="btn btn-default btn-block mb-2">
476 Guardar 485 Guardar
477 </button> 486 </button>
478 <button 487 <button
479 ng-click="salir()" 488 ng-click="salir()"
480 type="button" 489 type="button"
481 title="Salir" 490 title="Salir"
482 class="btn btn-default btn-block"> 491 class="btn btn-default btn-block">
483 Salir 492 Salir
484 </button> 493 </button>
485 </div> 494 </div>
486 </div> 495 </div>
487 </div> 496 </div>
488 </div> 497 </div>
489 <div class="row d-md-none fixed-bottom"> 498 <div class="row d-md-none fixed-bottom">
490 <div class="w-100 bg-dark d-flex px-3 acciones-mobile"> 499 <div class="w-100 bg-dark d-flex px-3 acciones-mobile">
491 <span class="ml-3 text-muted" ng-click="salir()">Salir</span> 500 <span class="ml-3 text-muted" ng-click="salir()">Salir</span>
492 <span class="mr-3 ml-auto" ng-click="crearNotaPedido()">Guardar</span> 501 <span class="mr-3 ml-auto" ng-click="crearNotaPedido()">Guardar</span>
493 </div> 502 </div>
494 </div> 503 </div>
495 </div> 504 </div>
496 505