Commit 57b88ae8ad89fdd3610fd4a285a4f67f515f162c

Authored by Eric Fernandez
Exists in master and in 1 other branch develop

Merge branch 'master' into 'develop'

Arreglo en nota pedido no mostraba la cabecera elegida al dar pausa.

See merge request !70
src/js/controller.js
1 angular.module('focaCrearNotaPedido') .controller('notaPedidoCtrl', 1 angular.module('focaCrearNotaPedido') .controller('notaPedidoCtrl',
2 [ 2 [
3 '$scope', 3 '$scope',
4 '$uibModal', 4 '$uibModal',
5 '$location', 5 '$location',
6 '$filter', 6 '$filter',
7 '$timeout', 7 '$timeout',
8 'crearNotaPedidoService', 8 'crearNotaPedidoService',
9 'focaBotoneraLateralService', 9 'focaBotoneraLateralService',
10 'focaModalService', 10 'focaModalService',
11 'notaPedidoBusinessService', 11 'notaPedidoBusinessService',
12 '$rootScope', 12 '$rootScope',
13 'focaSeguimientoService', 13 'focaSeguimientoService',
14 'APP', 14 'APP',
15 'focaLoginService', 15 'focaLoginService',
16 '$localStorage', 16 '$localStorage',
17 function( 17 function(
18 $scope, $uibModal, $location, $filter, $timeout, crearNotaPedidoService, 18 $scope, $uibModal, $location, $filter, $timeout, crearNotaPedidoService,
19 focaBotoneraLateralService, focaModalService, notaPedidoBusinessService, 19 focaBotoneraLateralService, focaModalService, notaPedidoBusinessService,
20 $rootScope, focaSeguimientoService, APP, focaLoginService, $localStorage) 20 $rootScope, focaSeguimientoService, APP, focaLoginService, $localStorage)
21 { 21 {
22 config(); 22 config();
23 23
24 function config() { 24 function config() {
25 // PARAMETROS INICIALES PARA FUNCIONAMIENTO DEL PROGRAMA 25 // PARAMETROS INICIALES PARA FUNCIONAMIENTO DEL PROGRAMA
26 $scope.notaPedido = {}; 26 $scope.notaPedido = {};
27 $scope.isNumber = angular.isNumber; 27 $scope.isNumber = angular.isNumber;
28 $scope.datepickerAbierto = false; 28 $scope.datepickerAbierto = false;
29 $scope.show = false; 29 $scope.show = false;
30 $scope.cargando = true; 30 $scope.cargando = true;
31 $scope.botonera = crearNotaPedidoService.getBotonera(); 31 $scope.botonera = crearNotaPedidoService.getBotonera();
32 $scope.puntoVenta = $filter('rellenarDigitos')(0, 4); 32 $scope.puntoVenta = $filter('rellenarDigitos')(0, 4);
33 $scope.comprobante = $filter('rellenarDigitos')(0, 8); 33 $scope.comprobante = $filter('rellenarDigitos')(0, 8);
34 $scope.dateOptions = { 34 $scope.dateOptions = {
35 maxDate: new Date(), 35 maxDate: new Date(),
36 minDate: new Date(2010, 0, 1) 36 minDate: new Date(2010, 0, 1)
37 }; 37 };
38 38
39 //SETEO BOTONERA LATERAL 39 //SETEO BOTONERA LATERAL
40 $timeout(function() { 40 $timeout(function() {
41 focaBotoneraLateralService.showSalir(false); 41 focaBotoneraLateralService.showSalir(false);
42 focaBotoneraLateralService.showPausar(true); 42 focaBotoneraLateralService.showPausar(true);
43 focaBotoneraLateralService.showGuardar(true, $scope.crearNotaPedido); 43 focaBotoneraLateralService.showGuardar(true, $scope.crearNotaPedido);
44 focaBotoneraLateralService.addCustomButton('Salir', salir); 44 focaBotoneraLateralService.addCustomButton('Salir', salir);
45 }); 45 });
46 46
47 // SETEA BOTONERA DE FACTURADOR TENIENDO EN CUENTA SI ESTA SETEADO EL VENDEDOR 47 // SETEA BOTONERA DE FACTURADOR TENIENDO EN CUENTA SI ESTA SETEADO EL VENDEDOR
48 if (APP === 'distribuidor') { 48 if (APP === 'distribuidor') {
49 $scope.idVendedor = focaLoginService.getLoginData().vendedorCobrador; 49 $scope.idVendedor = focaLoginService.getLoginData().vendedorCobrador;
50 } 50 }
51 51
52 //Trabajo con la cotización más reciente, por eso uso siempre la primera '[0]' 52 //Trabajo con la cotización más reciente, por eso uso siempre la primera '[0]'
53 crearNotaPedidoService.getCotizacionByIdMoneda(1).then(function(res) { 53 crearNotaPedidoService.getCotizacionByIdMoneda(1).then(function(res) {
54 var monedaPorDefecto = res.data[0]; 54 var monedaPorDefecto = res.data[0];
55 $scope.notaPedido.cotizacion = Object.assign( 55 $scope.notaPedido.cotizacion = Object.assign(
56 {moneda: monedaPorDefecto}, 56 {moneda: monedaPorDefecto},
57 monedaPorDefecto.cotizaciones[0] 57 monedaPorDefecto.cotizaciones[0]
58 ); 58 );
59 $scope.inicial.cotizacion = $scope.notaPedido.cotizacion; 59 $scope.inicial.cotizacion = $scope.notaPedido.cotizacion;
60 $timeout(function() {getLSNotaPedido();}); 60 $timeout(function() {getLSNotaPedido();});
61 }); 61 });
62 62
63 init(); 63 init();
64 64
65 } 65 }
66 66
67 function init() { 67 function init() {
68 $scope.$broadcast('cleanCabecera'); 68 $scope.$broadcast('cleanCabecera');
69 69
70 $scope.notaPedido = { 70 $scope.notaPedido = {
71 id: 0, 71 id: 0,
72 cliente: {}, 72 cliente: {},
73 proveedor: {}, 73 proveedor: {},
74 domicilio: {dom: ''}, 74 domicilio: {dom: ''},
75 vendedor: {}, 75 vendedor: {},
76 fechaCarga: new Date(), 76 fechaCarga: new Date(),
77 cotizacion: {}, 77 cotizacion: {},
78 articulosNotaPedido: [], 78 articulosNotaPedido: [],
79 notaPedidoPlazo: [] 79 notaPedidoPlazo: []
80 }; 80 };
81 $scope.idLista = undefined; 81 $scope.idLista = undefined;
82 82
83 crearNotaPedidoService.getNumeroNotaPedido().then( 83 crearNotaPedidoService.getNumeroNotaPedido().then(
84 function(res) { 84 function(res) {
85 $scope.puntoVenta = $filter('rellenarDigitos')( 85 $scope.puntoVenta = $filter('rellenarDigitos')(
86 res.data.sucursal, 4 86 res.data.sucursal, 4
87 ); 87 );
88 88
89 $scope.comprobante = $filter('rellenarDigitos')( 89 $scope.comprobante = $filter('rellenarDigitos')(
90 res.data.numeroNotaPedido, 8 90 res.data.numeroNotaPedido, 8
91 ); 91 );
92 }, 92 },
93 function(err) { 93 function(err) {
94 focaModalService.alert('La terminal no esta configurada correctamente'); 94 focaModalService.alert('La terminal no esta configurada correctamente');
95 console.info(err); 95 console.info(err);
96 } 96 }
97 ); 97 );
98 98
99 if (APP === 'distribuidor') { 99 if (APP === 'distribuidor') {
100 crearNotaPedidoService.getVendedorById($scope.idVendedor).then( 100 crearNotaPedidoService.getVendedorById($scope.idVendedor).then(
101 function(res) { 101 function(res) {
102 var vendedor = res.data; 102 var vendedor = res.data;
103 $scope.$broadcast('addCabecera', { 103 $scope.$broadcast('addCabecera', {
104 label: 'Vendedor:', 104 label: 'Vendedor:',
105 valor: $filter('rellenarDigitos')(vendedor.NUM, 3) + ' - ' + 105 valor: $filter('rellenarDigitos')(vendedor.NUM, 3) + ' - ' +
106 vendedor.NOM 106 vendedor.NOM
107 }); 107 });
108 108
109 $scope.notaPedido.vendedor = vendedor; 109 $scope.notaPedido.vendedor = vendedor;
110 } 110 }
111 ); 111 );
112 } 112 }
113 113
114 $scope.inicial = angular.copy($scope.notaPedido); 114 $scope.inicial = angular.copy($scope.notaPedido);
115 } 115 }
116 116
117 $scope.$watch('notaPedido', function(newValue) { 117 $scope.$watch('notaPedido', function(newValue) {
118 focaBotoneraLateralService.setPausarData({ 118 focaBotoneraLateralService.setPausarData({
119 label: 'notaPedido', 119 label: 'notaPedido',
120 val: newValue 120 val: newValue
121 }); 121 });
122 }, true); 122 }, true);
123 123
124 $scope.crearNotaPedido = function() { 124 $scope.crearNotaPedido = function() {
125 if (!$scope.notaPedido.cliente.COD) { 125 if (!$scope.notaPedido.cliente.COD) {
126 focaModalService.alert('Ingrese Cliente'); 126 focaModalService.alert('Ingrese Cliente');
127 return; 127 return;
128 } else if (!$scope.notaPedido.proveedor.COD) { 128 } else if (!$scope.notaPedido.proveedor.COD) {
129 focaModalService.alert('Ingrese Proveedor'); 129 focaModalService.alert('Ingrese Proveedor');
130 return; 130 return;
131 } else if (!$scope.notaPedido.cotizacion.ID) { 131 } else if (!$scope.notaPedido.cotizacion.ID) {
132 focaModalService.alert('Ingrese Cotización'); 132 focaModalService.alert('Ingrese Cotización');
133 return; 133 return;
134 } else if (!$scope.notaPedido.cotizacion.moneda.ID) { 134 } else if (!$scope.notaPedido.cotizacion.moneda.ID) {
135 focaModalService.alert('Ingrese Moneda'); 135 focaModalService.alert('Ingrese Moneda');
136 return; 136 return;
137 } else if (!$scope.notaPedido.notaPedidoPlazo) { 137 } else if (!$scope.notaPedido.notaPedidoPlazo) {
138 focaModalService.alert('Ingrese Precios y Condiciones'); 138 focaModalService.alert('Ingrese Precios y Condiciones');
139 return; 139 return;
140 } else if ( 140 } else if (
141 $scope.notaPedido.flete === undefined || $scope.notaPedido.flete === null) 141 $scope.notaPedido.flete === undefined || $scope.notaPedido.flete === null)
142 { 142 {
143 focaModalService.alert('Ingrese Flete'); 143 focaModalService.alert('Ingrese Flete');
144 return; 144 return;
145 } else if (!$scope.notaPedido.domicilioStamp) {//TODO validar domicilio correcto 145 } else if (!$scope.notaPedido.domicilioStamp) {//TODO validar domicilio correcto
146 focaModalService.alert('Ingrese Domicilio'); 146 focaModalService.alert('Ingrese Domicilio');
147 return; 147 return;
148 } else if ($scope.notaPedido.articulosNotaPedido.length === 0) { 148 } else if ($scope.notaPedido.articulosNotaPedido.length === 0) {
149 focaModalService.alert('Debe cargar al menos un articulo'); 149 focaModalService.alert('Debe cargar al menos un articulo');
150 return; 150 return;
151 } 151 }
152 focaBotoneraLateralService.startGuardar(); 152 focaBotoneraLateralService.startGuardar();
153 $scope.saveLoading = true; 153 $scope.saveLoading = true;
154 var notaPedido = { 154 var notaPedido = {
155 id: $scope.notaPedido.id, 155 id: $scope.notaPedido.id,
156 fechaCarga: new Date($scope.notaPedido.fechaCarga) 156 fechaCarga: new Date($scope.notaPedido.fechaCarga)
157 .toISOString().slice(0, 19).replace('T', ' '), 157 .toISOString().slice(0, 19).replace('T', ' '),
158 idVendedor: $scope.notaPedido.vendedor.id, 158 idVendedor: $scope.notaPedido.vendedor.id,
159 idCliente: $scope.notaPedido.cliente.COD, 159 idCliente: $scope.notaPedido.cliente.COD,
160 nombreCliente: $scope.notaPedido.cliente.NOM, 160 nombreCliente: $scope.notaPedido.cliente.NOM,
161 cuitCliente: $scope.notaPedido.cliente.CUIT, 161 cuitCliente: $scope.notaPedido.cliente.CUIT,
162 idProveedor: $scope.notaPedido.proveedor.COD, 162 idProveedor: $scope.notaPedido.proveedor.COD,
163 idDomicilio: $scope.notaPedido.domicilio.id, 163 idDomicilio: $scope.notaPedido.domicilio.id,
164 idCotizacion: $scope.notaPedido.cotizacion.ID, 164 idCotizacion: $scope.notaPedido.cotizacion.ID,
165 idPrecioCondicion: $scope.notaPedido.idPrecioCondicion, 165 idPrecioCondicion: $scope.notaPedido.idPrecioCondicion,
166 cotizacion: $scope.notaPedido.cotizacion.VENDEDOR, 166 cotizacion: $scope.notaPedido.cotizacion.VENDEDOR,
167 flete: $scope.notaPedido.flete, 167 flete: $scope.notaPedido.flete,
168 fob: $scope.notaPedido.fob, 168 fob: $scope.notaPedido.fob,
169 bomba: $scope.notaPedido.bomba, 169 bomba: $scope.notaPedido.bomba,
170 kilometros: $scope.notaPedido.kilometros, 170 kilometros: $scope.notaPedido.kilometros,
171 domicilioStamp: $scope.notaPedido.domicilioStamp, 171 domicilioStamp: $scope.notaPedido.domicilioStamp,
172 observaciones: $scope.notaPedido.observaciones, 172 observaciones: $scope.notaPedido.observaciones,
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 //TODO: GUARDAR POSISIONAMIENTO AL EDITAR? 180 //TODO: GUARDAR POSISIONAMIENTO AL EDITAR?
181 focaSeguimientoService.guardarPosicion( 181 focaSeguimientoService.guardarPosicion(
182 'Nota de pedido', 182 'Nota de pedido',
183 data.data.id, 183 data.data.id,
184 '' 184 ''
185 ); 185 );
186 notaPedidoBusinessService.addArticulos( 186 notaPedidoBusinessService.addArticulos(
187 $scope.notaPedido.articulosNotaPedido, 187 $scope.notaPedido.articulosNotaPedido,
188 data.data.id, $scope.notaPedido.cotizacion.VENDEDOR); 188 data.data.id, $scope.notaPedido.cotizacion.VENDEDOR);
189 189
190 if ($scope.notaPedido.notaPedidoPuntoDescarga) { 190 if ($scope.notaPedido.notaPedidoPuntoDescarga) {
191 notaPedidoBusinessService.addPuntosDescarga(data.data.id, 191 notaPedidoBusinessService.addPuntosDescarga(data.data.id,
192 $scope.notaPedido.notaPedidoPuntoDescarga); 192 $scope.notaPedido.notaPedidoPuntoDescarga);
193 } 193 }
194 194
195 var plazos = $scope.notaPedido.notaPedidoPlazo; 195 var plazos = $scope.notaPedido.notaPedidoPlazo;
196 var plazosACrear = []; 196 var plazosACrear = [];
197 plazos.forEach(function(plazo) { 197 plazos.forEach(function(plazo) {
198 plazosACrear.push({ 198 plazosACrear.push({
199 idNotaPedido: data.data.id, 199 idNotaPedido: data.data.id,
200 dias: plazo.dias 200 dias: plazo.dias
201 }); 201 });
202 }); 202 });
203 203
204 if (plazosACrear.length) { 204 if (plazosACrear.length) {
205 crearNotaPedidoService.crearPlazosParaNotaPedido(plazosACrear); 205 crearNotaPedidoService.crearPlazosParaNotaPedido(plazosACrear);
206 } 206 }
207 207
208 notaPedidoBusinessService.addEstado(data.data.id, 208 notaPedidoBusinessService.addEstado(data.data.id,
209 $scope.notaPedido.vendedor.id); 209 $scope.notaPedido.vendedor.id);
210 210
211 focaBotoneraLateralService.endGuardar(true); 211 focaBotoneraLateralService.endGuardar(true);
212 $scope.saveLoading = false; 212 $scope.saveLoading = false;
213 213
214 init(); 214 init();
215 }, function(error) { 215 }, function(error) {
216 focaModalService.alert('Hubo un error al crear la nota de pedido'); 216 focaModalService.alert('Hubo un error al crear la nota de pedido');
217 focaBotoneraLateralService.endGuardar(); 217 focaBotoneraLateralService.endGuardar();
218 $scope.saveLoading = false; 218 $scope.saveLoading = false;
219 console.info(error); 219 console.info(error);
220 } 220 }
221 ); 221 );
222 }; 222 };
223 223
224 $scope.seleccionarNotaPedido = function() { 224 $scope.seleccionarNotaPedido = function() {
225 var modalInstance = $uibModal.open( 225 var modalInstance = $uibModal.open(
226 { 226 {
227 ariaLabelledBy: 'Busqueda de Nota de Pedido', 227 ariaLabelledBy: 'Busqueda de Nota de Pedido',
228 templateUrl: 'foca-modal-nota-pedido.html', 228 templateUrl: 'foca-modal-nota-pedido.html',
229 controller: 'focaModalNotaPedidoController', 229 controller: 'focaModalNotaPedidoController',
230 size: 'lg', 230 size: 'lg',
231 resolve: { 231 resolve: {
232 usadoPor: function() {return 'notaPedido';}, 232 usadoPor: function() {return 'notaPedido';},
233 idVendedor: function() { 233 idVendedor: function() {
234 if (APP === 'distribuidor') 234 if (APP === 'distribuidor')
235 return $scope.notaPedido.vendedor.id; 235 return $scope.notaPedido.vendedor.id;
236 else 236 else
237 return null; 237 return null;
238 } 238 }
239 } 239 }
240 } 240 }
241 ); 241 );
242 modalInstance.result.then(setearNotaPedido); 242 modalInstance.result.then(setearNotaPedido);
243 }; 243 };
244 244
245 $scope.seleccionarProductos = function() { 245 $scope.seleccionarProductos = function() {
246 if ($scope.idLista === undefined) { 246 if ($scope.idLista === undefined) {
247 focaModalService.alert( 247 focaModalService.alert(
248 'Primero seleccione una lista de precio y condicion'); 248 'Primero seleccione una lista de precio y condicion');
249 return; 249 return;
250 } 250 }
251 var modalInstance = $uibModal.open( 251 var modalInstance = $uibModal.open(
252 { 252 {
253 ariaLabelledBy: 'Busqueda de Productos', 253 ariaLabelledBy: 'Busqueda de Productos',
254 templateUrl: 'modal-busqueda-productos.html', 254 templateUrl: 'modal-busqueda-productos.html',
255 controller: 'modalBusquedaProductosCtrl', 255 controller: 'modalBusquedaProductosCtrl',
256 resolve: { 256 resolve: {
257 parametroProducto: { 257 parametroProducto: {
258 idLista: $scope.idLista, 258 idLista: $scope.idLista,
259 cotizacion: $scope.notaPedido.cotizacion.VENDEDOR, 259 cotizacion: $scope.notaPedido.cotizacion.VENDEDOR,
260 simbolo: $scope.notaPedido.cotizacion.moneda.SIMBOLO 260 simbolo: $scope.notaPedido.cotizacion.moneda.SIMBOLO
261 } 261 }
262 }, 262 },
263 size: 'lg' 263 size: 'lg'
264 } 264 }
265 ); 265 );
266 modalInstance.result.then( 266 modalInstance.result.then(
267 function(producto) { 267 function(producto) {
268 var newArt = 268 var newArt =
269 { 269 {
270 id: 0, 270 id: 0,
271 codigo: producto.codigo, 271 codigo: producto.codigo,
272 sector: producto.sector, 272 sector: producto.sector,
273 sectorCodigo: producto.sector + '-' + producto.codigo, 273 sectorCodigo: producto.sector + '-' + producto.codigo,
274 descripcion: producto.descripcion, 274 descripcion: producto.descripcion,
275 item: $scope.notaPedido.articulosNotaPedido.length + 1, 275 item: $scope.notaPedido.articulosNotaPedido.length + 1,
276 nombre: producto.descripcion, 276 nombre: producto.descripcion,
277 precio: parseFloat(producto.precio.toFixed(4)), 277 precio: parseFloat(producto.precio.toFixed(4)),
278 costoUnitario: producto.costo, 278 costoUnitario: producto.costo,
279 editCantidad: false, 279 editCantidad: false,
280 editPrecio: false, 280 editPrecio: false,
281 rubro: producto.CodRub, 281 rubro: producto.CodRub,
282 exentoUnitario: producto.precio, 282 exentoUnitario: producto.precio,
283 ivaUnitario: producto.IMPIVA, 283 ivaUnitario: producto.IMPIVA,
284 impuestoInternoUnitario: producto.ImpInt, 284 impuestoInternoUnitario: producto.ImpInt,
285 impuestoInterno1Unitario: producto.ImpInt2, 285 impuestoInterno1Unitario: producto.ImpInt2,
286 impuestoInterno2Unitario: producto.ImpInt3, 286 impuestoInterno2Unitario: producto.ImpInt3,
287 precioLista: producto.precio, 287 precioLista: producto.precio,
288 combustible: 1, 288 combustible: 1,
289 facturado: 0, 289 facturado: 0,
290 idArticulo: producto.id 290 idArticulo: producto.id
291 }; 291 };
292 $scope.articuloACargar = newArt; 292 $scope.articuloACargar = newArt;
293 $scope.cargando = false; 293 $scope.cargando = false;
294 }, function() { 294 }, function() {
295 // funcion ejecutada cuando se cancela el modal 295 // funcion ejecutada cuando se cancela el modal
296 } 296 }
297 ); 297 );
298 }; 298 };
299 299
300 $scope.seleccionarPuntosDeDescarga = function() { 300 $scope.seleccionarPuntosDeDescarga = function() {
301 if (!$scope.notaPedido.cliente.COD || !$scope.notaPedido.domicilio.id) { 301 if (!$scope.notaPedido.cliente.COD || !$scope.notaPedido.domicilio.id) {
302 focaModalService.alert('Primero seleccione un cliente y un domicilio'); 302 focaModalService.alert('Primero seleccione un cliente y un domicilio');
303 return; 303 return;
304 } else { 304 } else {
305 var modalInstance = $uibModal.open( 305 var modalInstance = $uibModal.open(
306 { 306 {
307 ariaLabelledBy: 'Búsqueda de Puntos de descarga', 307 ariaLabelledBy: 'Búsqueda de Puntos de descarga',
308 templateUrl: 'modal-punto-descarga.html', 308 templateUrl: 'modal-punto-descarga.html',
309 controller: 'focaModalPuntoDescargaController', 309 controller: 'focaModalPuntoDescargaController',
310 size: 'lg', 310 size: 'lg',
311 resolve: { 311 resolve: {
312 filters: { 312 filters: {
313 idDomicilio: $scope.notaPedido.domicilio.id, 313 idDomicilio: $scope.notaPedido.domicilio.id,
314 idCliente: $scope.notaPedido.cliente.COD, 314 idCliente: $scope.notaPedido.cliente.COD,
315 articulos: $scope.notaPedido.articulosNotaPedido, 315 articulos: $scope.notaPedido.articulosNotaPedido,
316 puntosDescarga: $scope.notaPedido.notaPedidoPuntoDescarga, 316 puntosDescarga: $scope.notaPedido.notaPedidoPuntoDescarga,
317 domicilio: $scope.notaPedido.domicilio 317 domicilio: $scope.notaPedido.domicilio
318 } 318 }
319 } 319 }
320 } 320 }
321 ); 321 );
322 modalInstance.result.then( 322 modalInstance.result.then(
323 function(puntosDescarga) { 323 function(puntosDescarga) {
324 $scope.notaPedido.notaPedidoPuntoDescarga = puntosDescarga; 324 $scope.notaPedido.notaPedidoPuntoDescarga = puntosDescarga;
325 325
326 //AGREGO PUNTOS DE DESCARGA A CABECERA
327 var puntosStamp = '';
328 puntosDescarga.forEach(function(punto, idx, arr) {
329 puntosStamp += punto.descripcion;
330 if ((idx + 1) !== arr.length) puntosStamp += ', ';
331 });
332
333 $scope.$broadcast('addCabecera', { 326 $scope.$broadcast('addCabecera', {
334 label: 'Puntos de descarga:', 327 label: 'Puntos de descarga:',
335 valor: puntosStamp 328 valor: getCabeceraPuntoDescarga(puntosDescarga)
336 }); 329 });
337 }, function() { 330 }, function() {
338 $scope.abrirModalDomicilios($scope.cliente); 331 $scope.abrirModalDomicilios($scope.cliente);
339 } 332 }
340 ); 333 );
341 } 334 }
342 }; 335 };
343 336
344 $scope.seleccionarProveedor = function() { 337 $scope.seleccionarProveedor = function() {
345 $scope.abrirModalProveedores(function() { 338 $scope.abrirModalProveedores(function() {
346 if (validarNotaRemitada()) { 339 if (validarNotaRemitada()) {
347 var modalInstance = $uibModal.open( 340 var modalInstance = $uibModal.open(
348 { 341 {
349 ariaLabelledBy: 'Busqueda de Flete', 342 ariaLabelledBy: 'Busqueda de Flete',
350 templateUrl: 'modal-flete.html', 343 templateUrl: 'modal-flete.html',
351 controller: 'focaModalFleteController', 344 controller: 'focaModalFleteController',
352 size: 'lg', 345 size: 'lg',
353 resolve: { 346 resolve: {
354 parametrosFlete: 347 parametrosFlete:
355 function() { 348 function() {
356 return { 349 return {
357 flete: $scope.notaPedido.fob ? 'FOB' : 350 flete: $scope.notaPedido.fob ? 'FOB' :
358 ( $scope.notaPedido.flete ? '1' : 351 ( $scope.notaPedido.flete ? '1' :
359 ($scope.notaPedido.flete === undefined ? 352 ($scope.notaPedido.flete === undefined ?
360 null : '0')), 353 null : '0')),
361 bomba: $scope.notaPedido.bomba ? '1' : 354 bomba: $scope.notaPedido.bomba ? '1' :
362 ($scope.notaPedido.bomba === undefined ? 355 ($scope.notaPedido.bomba === undefined ?
363 null : '0'), 356 null : '0'),
364 kilometros: $scope.notaPedido.kilometros 357 kilometros: $scope.notaPedido.kilometros
365 }; 358 };
366 } 359 }
367 } 360 }
368 } 361 }
369 ); 362 );
370 modalInstance.result.then( 363 modalInstance.result.then(
371 function(datos) { 364 function(datos) {
372 $scope.notaPedido.flete = datos.flete; 365 $scope.notaPedido.flete = datos.flete;
373 $scope.notaPedido.fob = datos.FOB; 366 $scope.notaPedido.fob = datos.FOB;
374 $scope.notaPedido.bomba = datos.bomba; 367 $scope.notaPedido.bomba = datos.bomba;
375 $scope.notaPedido.kilometros = datos.kilometros; 368 $scope.notaPedido.kilometros = datos.kilometros;
376 $scope.$broadcast('addCabecera', { 369 $scope.$broadcast('addCabecera', {
377 label: 'Flete:', 370 label: 'Flete:',
378 valor: datos.FOB ? 'FOB' : (datos.flete ? 'Si' : 'No') 371 valor: datos.FOB ? 'FOB' : (datos.flete ? 'Si' : 'No')
379 }); 372 });
380 if (datos.flete) { 373 if (datos.flete) {
381 $scope.$broadcast('addCabecera', { 374 $scope.$broadcast('addCabecera', {
382 label: 'Bomba:', 375 label: 'Bomba:',
383 valor: datos.bomba ? 'Si' : 'No' 376 valor: datos.bomba ? 'Si' : 'No'
384 }); 377 });
385 $scope.$broadcast('addCabecera', { 378 $scope.$broadcast('addCabecera', {
386 label: 'Kilometros:', 379 label: 'Kilometros:',
387 valor: datos.kilometros 380 valor: datos.kilometros
388 }); 381 });
389 } else { 382 } else {
390 $scope.$broadcast('removeCabecera', 'Bomba:'); 383 $scope.$broadcast('removeCabecera', 'Bomba:');
391 $scope.$broadcast('removeCabecera', 'Kilometros:'); 384 $scope.$broadcast('removeCabecera', 'Kilometros:');
392 $scope.notaPedido.bomba = false; 385 $scope.notaPedido.bomba = false;
393 $scope.notaPedido.kilometros = null; 386 $scope.notaPedido.kilometros = null;
394 } 387 }
395 }, function() { 388 }, function() {
396 $scope.seleccionarTransportista(); 389 $scope.seleccionarTransportista();
397 } 390 }
398 ); 391 );
399 } 392 }
400 }); 393 });
401 }; 394 };
402 395
403 $scope.seleccionarVendedor = function(callback, ocultarVendedor) { 396 $scope.seleccionarVendedor = function(callback, ocultarVendedor) {
404 if (APP === 'distribuidor' || ocultarVendedor) { 397 if (APP === 'distribuidor' || ocultarVendedor) {
405 callback(); 398 callback();
406 return; 399 return;
407 } 400 }
408 401
409 if (validarNotaRemitada()) { 402 if (validarNotaRemitada()) {
410 var parametrosModal = { 403 var parametrosModal = {
411 titulo: 'Búsqueda vendedores', 404 titulo: 'Búsqueda vendedores',
412 query: '/vendedor', 405 query: '/vendedor',
413 columnas: [ 406 columnas: [
414 { 407 {
415 propiedad: 'NUM', 408 propiedad: 'NUM',
416 nombre: 'Código', 409 nombre: 'Código',
417 filtro: { 410 filtro: {
418 nombre: 'rellenarDigitos', 411 nombre: 'rellenarDigitos',
419 parametro: 3 412 parametro: 3
420 } 413 }
421 }, 414 },
422 { 415 {
423 propiedad: 'NOM', 416 propiedad: 'NOM',
424 nombre: 'Nombre' 417 nombre: 'Nombre'
425 } 418 }
426 ], 419 ],
427 size: 'md' 420 size: 'md'
428 }; 421 };
429 focaModalService.modal(parametrosModal).then( 422 focaModalService.modal(parametrosModal).then(
430 function(vendedor) { 423 function(vendedor) {
431 $scope.$broadcast('addCabecera', { 424 $scope.$broadcast('addCabecera', {
432 label: 'Vendedor:', 425 label: 'Vendedor:',
433 valor: $filter('rellenarDigitos')(vendedor.NUM, 3) + ' - ' + 426 valor: $filter('rellenarDigitos')(vendedor.NUM, 3) + ' - ' +
434 vendedor.NOM 427 vendedor.NOM
435 }); 428 });
436 $scope.notaPedido.vendedor = vendedor; 429 $scope.notaPedido.vendedor = vendedor;
437 deleteCliente(); 430 deleteCliente();
438 callback(); 431 callback();
439 }, function() {} 432 }, function() {}
440 ); 433 );
441 } 434 }
442 }; 435 };
443 436
444 $scope.seleccionarCliente = function(ocultarVendedor) { 437 $scope.seleccionarCliente = function(ocultarVendedor) {
445 $scope.seleccionarVendedor(function() { 438 $scope.seleccionarVendedor(function() {
446 if (validarNotaRemitada()) { 439 if (validarNotaRemitada()) {
447 var modalInstance = $uibModal.open( 440 var modalInstance = $uibModal.open(
448 { 441 {
449 ariaLabelledBy: 'Busqueda de Cliente', 442 ariaLabelledBy: 'Busqueda de Cliente',
450 templateUrl: 'foca-busqueda-cliente-modal.html', 443 templateUrl: 'foca-busqueda-cliente-modal.html',
451 controller: 'focaBusquedaClienteModalController', 444 controller: 'focaBusquedaClienteModalController',
452 resolve: { 445 resolve: {
453 vendedor: function() { return $scope.notaPedido.vendedor; }, 446 vendedor: function() { return $scope.notaPedido.vendedor; },
454 cobrador: function() { return null; } 447 cobrador: function() { return null; }
455 }, 448 },
456 size: 'lg' 449 size: 'lg'
457 } 450 }
458 ); 451 );
459 modalInstance.result.then( 452 modalInstance.result.then(
460 function(cliente) { 453 function(cliente) {
461 $scope.abrirModalDomicilios(cliente); 454 $scope.abrirModalDomicilios(cliente);
462 $scope.cliente = cliente; 455 $scope.cliente = cliente;
463 }, function() { 456 }, function() {
464 if (APP !== 'distribuidor') $scope.seleccionarCliente(); 457 if (APP !== 'distribuidor') $scope.seleccionarCliente();
465 } 458 }
466 ); 459 );
467 } 460 }
468 }, ocultarVendedor); 461 }, ocultarVendedor);
469 }; 462 };
470 463
471 $scope.abrirModalProveedores = function(callback) { 464 $scope.abrirModalProveedores = function(callback) {
472 if (validarNotaRemitada()) { 465 if (validarNotaRemitada()) {
473 var parametrosModal = { 466 var parametrosModal = {
474 titulo: 'Búsqueda de Proveedor', 467 titulo: 'Búsqueda de Proveedor',
475 query: '/proveedor', 468 query: '/proveedor',
476 columnas: [ 469 columnas: [
477 { 470 {
478 nombre: 'Código', 471 nombre: 'Código',
479 propiedad: 'COD', 472 propiedad: 'COD',
480 filtro: { 473 filtro: {
481 nombre: 'rellenarDigitos', 474 nombre: 'rellenarDigitos',
482 parametro: 5 475 parametro: 5
483 } 476 }
484 }, 477 },
485 { 478 {
486 nombre: 'Nombre', 479 nombre: 'Nombre',
487 propiedad: 'NOM' 480 propiedad: 'NOM'
488 }, 481 },
489 { 482 {
490 nombre: 'CUIT', 483 nombre: 'CUIT',
491 propiedad: 'CUIT' 484 propiedad: 'CUIT'
492 } 485 }
493 ], 486 ],
494 tipo: 'POST', 487 tipo: 'POST',
495 json: {razonCuitCod: ''} 488 json: {razonCuitCod: ''}
496 }; 489 };
497 focaModalService.modal(parametrosModal).then( 490 focaModalService.modal(parametrosModal).then(
498 function(proveedor) { 491 function(proveedor) {
499 $scope.notaPedido.proveedor = proveedor; 492 $scope.notaPedido.proveedor = proveedor;
500 $scope.$broadcast('addCabecera', { 493 $scope.$broadcast('addCabecera', {
501 label: 'Proveedor:', 494 label: 'Proveedor:',
502 valor: $filter('rellenarDigitos')(proveedor.COD, 5) + ' - ' + 495 valor: $filter('rellenarDigitos')(proveedor.COD, 5) + ' - ' +
503 proveedor.NOM 496 proveedor.NOM
504 }); 497 });
505 callback(); 498 callback();
506 }, function() { 499 }, function() {
507 500
508 } 501 }
509 ); 502 );
510 } 503 }
511 }; 504 };
512 505
513 $scope.abrirModalDomicilios = function(cliente) { 506 $scope.abrirModalDomicilios = function(cliente) {
514 var modalInstanceDomicilio = $uibModal.open( 507 var modalInstanceDomicilio = $uibModal.open(
515 { 508 {
516 ariaLabelledBy: 'Busqueda de Domicilios', 509 ariaLabelledBy: 'Busqueda de Domicilios',
517 templateUrl: 'modal-domicilio.html', 510 templateUrl: 'modal-domicilio.html',
518 controller: 'focaModalDomicilioController', 511 controller: 'focaModalDomicilioController',
519 resolve: { 512 resolve: {
520 idCliente: function() { return cliente.cod; }, 513 idCliente: function() { return cliente.cod; },
521 esNuevo: function() { return cliente.esNuevo; } 514 esNuevo: function() { return cliente.esNuevo; }
522 }, 515 },
523 size: 'lg', 516 size: 'lg',
524 } 517 }
525 ); 518 );
526 modalInstanceDomicilio.result.then( 519 modalInstanceDomicilio.result.then(
527 function(domicilio) { 520 function(domicilio) {
528 $scope.notaPedido.domicilio = domicilio; 521 $scope.notaPedido.domicilio = domicilio;
529 $scope.notaPedido.cliente = { 522 $scope.notaPedido.cliente = {
530 COD: cliente.cod, 523 COD: cliente.cod,
531 CUIT: cliente.cuit, 524 CUIT: cliente.cuit,
532 NOM: cliente.nom, 525 NOM: cliente.nom,
533 MOD: cliente.mod 526 MOD: cliente.mod
534 }; 527 };
535 var domicilioStamp = 528 var domicilioStamp =
536 domicilio.Calle + ' ' + domicilio.Numero + ', ' + 529 domicilio.Calle + ' ' + domicilio.Numero + ', ' +
537 domicilio.Localidad + ', ' + domicilio.Provincia; 530 domicilio.Localidad + ', ' + domicilio.Provincia;
538 $scope.notaPedido.domicilioStamp = domicilioStamp; 531 $scope.notaPedido.domicilioStamp = domicilioStamp;
539 532
540 $scope.notaPedido.notaPedidoPuntoDescarga = domicilio.puntosDescarga; 533 $scope.notaPedido.notaPedidoPuntoDescarga = domicilio.puntosDescarga;
541 534
542 $scope.$broadcast('addCabecera', { 535 $scope.$broadcast('addCabecera', {
543 label: 'Cliente:', 536 label: 'Cliente:',
544 valor: $filter('rellenarDigitos')(cliente.cod, 5) + ' - ' + cliente.nom 537 valor: $filter('rellenarDigitos')(cliente.cod, 5) + ' - ' + cliente.nom
545 }); 538 });
546 $scope.$broadcast('addCabecera', { 539 $scope.$broadcast('addCabecera', {
547 label: 'Domicilio:', 540 label: 'Domicilio:',
548 valor: domicilioStamp 541 valor: domicilioStamp
549 }); 542 });
550 if (domicilio.verPuntos) { 543 if (domicilio.verPuntos) {
551 delete $scope.notaPedido.domicilio.verPuntos; 544 delete $scope.notaPedido.domicilio.verPuntos;
552 $scope.seleccionarPuntosDeDescarga(); 545 $scope.seleccionarPuntosDeDescarga();
553 } else { 546 } else {
554 crearNotaPedidoService 547 crearNotaPedidoService
555 .getPuntosDescargaByClienDom(domicilio.id, cliente.cod) 548 .getPuntosDescargaByClienDom(domicilio.id, cliente.cod)
556 .then(function(res) { 549 .then(function(res) {
557 if (res.data.length) $scope.seleccionarPuntosDeDescarga(); 550 if (res.data.length) $scope.seleccionarPuntosDeDescarga();
558 }); 551 });
559 } 552 }
560 }, function() { 553 }, function() {
561 $scope.seleccionarCliente(true); 554 $scope.seleccionarCliente(true);
562 return; 555 return;
563 } 556 }
564 ); 557 );
565 }; 558 };
566 559
567 $scope.getTotal = function() { 560 $scope.getTotal = function() {
568 var total = 0; 561 var total = 0;
569 if ($scope.notaPedido.articulosNotaPedido) { 562 if ($scope.notaPedido.articulosNotaPedido) {
570 var arrayTempArticulos = $scope.notaPedido.articulosNotaPedido; 563 var arrayTempArticulos = $scope.notaPedido.articulosNotaPedido;
571 for (var i = 0; i < arrayTempArticulos.length; i++) { 564 for (var i = 0; i < arrayTempArticulos.length; i++) {
572 total += arrayTempArticulos[i].precio * arrayTempArticulos[i].cantidad; 565 total += arrayTempArticulos[i].precio * arrayTempArticulos[i].cantidad;
573 } 566 }
574 } 567 }
575 return parseFloat(total.toFixed(2)); 568 return parseFloat(total.toFixed(2));
576 }; 569 };
577 570
578 $scope.getSubTotal = function() { 571 $scope.getSubTotal = function() {
579 if ($scope.articuloACargar) { 572 if ($scope.articuloACargar) {
580 return $scope.articuloACargar.precio * $scope.articuloACargar.cantidad; 573 return $scope.articuloACargar.precio * $scope.articuloACargar.cantidad;
581 } 574 }
582 }; 575 };
583 576
584 $scope.seleccionarPreciosYCondiciones = function() { 577 $scope.seleccionarPreciosYCondiciones = function() {
585 if (!$scope.notaPedido.cliente.COD) { 578 if (!$scope.notaPedido.cliente.COD) {
586 focaModalService.alert('Primero seleccione un cliente'); 579 focaModalService.alert('Primero seleccione un cliente');
587 return; 580 return;
588 } 581 }
589 if (validarNotaRemitada()) { 582 if (validarNotaRemitada()) {
590 var modalInstance = $uibModal.open( 583 var modalInstance = $uibModal.open(
591 { 584 {
592 ariaLabelledBy: 'Busqueda de Precio Condición', 585 ariaLabelledBy: 'Busqueda de Precio Condición',
593 templateUrl: 'modal-precio-condicion.html', 586 templateUrl: 'modal-precio-condicion.html',
594 controller: 'focaModalPrecioCondicionController', 587 controller: 'focaModalPrecioCondicionController',
595 size: 'lg', 588 size: 'lg',
596 resolve: { 589 resolve: {
597 idListaPrecio: function() { 590 idListaPrecio: function() {
598 return $scope.notaPedido.cliente.MOD || null; 591 return $scope.notaPedido.cliente.MOD || null;
599 } 592 }
600 } 593 }
601 } 594 }
602 ); 595 );
603 modalInstance.result.then( 596 modalInstance.result.then(
604 function(precioCondicion) { 597 function(precioCondicion) {
605 var cabecera = ''; 598 var cabecera = '';
606 var plazosConcat = ''; 599 var plazosConcat = '';
607 if (!Array.isArray(precioCondicion)) { 600 if (!Array.isArray(precioCondicion)) {
608 $scope.notaPedido.notaPedidoPlazo = precioCondicion.plazoPago; 601 $scope.notaPedido.notaPedidoPlazo = precioCondicion.plazoPago;
609 $scope.notaPedido.precioCondicion = precioCondicion; 602 $scope.notaPedido.precioCondicion = precioCondicion;
610 $scope.notaPedido.idPrecioCondicion = precioCondicion.id; 603 $scope.notaPedido.idPrecioCondicion = precioCondicion.id;
611 $scope.idLista = precioCondicion.idListaPrecio; 604 $scope.idLista = precioCondicion.idListaPrecio;
612 for (var i = 0; i < precioCondicion.plazoPago.length; i++) { 605 for (var i = 0; i < precioCondicion.plazoPago.length; i++) {
613 plazosConcat += precioCondicion.plazoPago[i].dias + ' '; 606 plazosConcat += precioCondicion.plazoPago[i].dias + ' ';
614 } 607 }
615 cabecera = $filter('rellenarDigitos')(precioCondicion.id, 4) + 608 cabecera = $filter('rellenarDigitos')(precioCondicion.id, 4) +
616 ' - ' + precioCondicion.nombre + ' ' + plazosConcat.trim(); 609 ' - ' + precioCondicion.nombre + ' ' + plazosConcat.trim();
617 } else { //Cuando se ingresan los plazos manualmente 610 } else { //Cuando se ingresan los plazos manualmente
618 $scope.notaPedido.idPrecioCondicion = 0; 611 $scope.notaPedido.idPrecioCondicion = 0;
619 //-1, el modal productos busca todos los productos 612 //-1, el modal productos busca todos los productos
620 $scope.idLista = -1; 613 $scope.idLista = -1;
621 $scope.notaPedido.notaPedidoPlazo = precioCondicion; 614 $scope.notaPedido.notaPedidoPlazo = precioCondicion;
622 for (var j = 0; j < precioCondicion.length; j++) { 615 for (var j = 0; j < precioCondicion.length; j++) {
623 plazosConcat += precioCondicion[j].dias + ' '; 616 plazosConcat += precioCondicion[j].dias + ' ';
624 } 617 }
625 cabecera = 'Ingreso manual ' + plazosConcat.trim(); 618 cabecera = 'Ingreso manual ' + plazosConcat.trim();
626 } 619 }
627 $scope.notaPedido.articulosNotaPedido = []; 620 $scope.notaPedido.articulosNotaPedido = [];
628 $scope.$broadcast('addCabecera', { 621 $scope.$broadcast('addCabecera', {
629 label: 'Precios y condiciones:', 622 label: 'Precios y condiciones:',
630 valor: cabecera 623 valor: cabecera
631 }); 624 });
632 }, function() { 625 }, function() {
633 626
634 } 627 }
635 ); 628 );
636 } 629 }
637 }; 630 };
638 631
639 $scope.seleccionarMoneda = function() { 632 $scope.seleccionarMoneda = function() {
640 if (validarNotaRemitada()) { 633 if (validarNotaRemitada()) {
641 var parametrosModal = { 634 var parametrosModal = {
642 titulo: 'Búsqueda de monedas', 635 titulo: 'Búsqueda de monedas',
643 query: '/moneda', 636 query: '/moneda',
644 columnas: [ 637 columnas: [
645 { 638 {
646 propiedad: 'DETALLE', 639 propiedad: 'DETALLE',
647 nombre: 'Nombre' 640 nombre: 'Nombre'
648 }, 641 },
649 { 642 {
650 propiedad: 'SIMBOLO', 643 propiedad: 'SIMBOLO',
651 nombre: 'Símbolo' 644 nombre: 'Símbolo'
652 } 645 }
653 ], 646 ],
654 size: 'md' 647 size: 'md'
655 }; 648 };
656 focaModalService.modal(parametrosModal).then( 649 focaModalService.modal(parametrosModal).then(
657 function(moneda) { 650 function(moneda) {
658 $scope.abrirModalCotizacion(moneda); 651 $scope.abrirModalCotizacion(moneda);
659 }, function() { 652 }, function() {
660 653
661 } 654 }
662 ); 655 );
663 } 656 }
664 }; 657 };
665 658
666 $scope.seleccionarObservaciones = function() { 659 $scope.seleccionarObservaciones = function() {
667 var observacion = { 660 var observacion = {
668 titulo: 'Ingrese Observaciones', 661 titulo: 'Ingrese Observaciones',
669 value: $scope.notaPedido.observaciones, 662 value: $scope.notaPedido.observaciones,
670 maxlength: 155, 663 maxlength: 155,
671 textarea: true 664 textarea: true
672 }; 665 };
673 666
674 focaModalService 667 focaModalService
675 .prompt(observacion) 668 .prompt(observacion)
676 .then(function(observaciones) { 669 .then(function(observaciones) {
677 $scope.notaPedido.observaciones = observaciones; 670 $scope.notaPedido.observaciones = observaciones;
678 }); 671 });
679 }; 672 };
680 673
681 $scope.abrirModalCotizacion = function(moneda) { 674 $scope.abrirModalCotizacion = function(moneda) {
682 var modalInstance = $uibModal.open( 675 var modalInstance = $uibModal.open(
683 { 676 {
684 ariaLabelledBy: 'Busqueda de Cotización', 677 ariaLabelledBy: 'Busqueda de Cotización',
685 templateUrl: 'modal-cotizacion.html', 678 templateUrl: 'modal-cotizacion.html',
686 controller: 'focaModalCotizacionController', 679 controller: 'focaModalCotizacionController',
687 size: 'lg', 680 size: 'lg',
688 resolve: { 681 resolve: {
689 idMoneda: function() { 682 idMoneda: function() {
690 return moneda.ID; 683 return moneda.ID;
691 } 684 }
692 } 685 }
693 } 686 }
694 ); 687 );
695 modalInstance.result.then( 688 modalInstance.result.then(
696 function(cotizacion) { 689 function(cotizacion) {
697 var articulosTablaTemp = $scope.notaPedido.articulosNotaPedido || []; 690 var articulosTablaTemp = $scope.notaPedido.articulosNotaPedido || [];
698 for (var i = 0; i < articulosTablaTemp.length; i++) { 691 for (var i = 0; i < articulosTablaTemp.length; i++) {
699 articulosTablaTemp[i].precio = articulosTablaTemp[i].precio * 692 articulosTablaTemp[i].precio = articulosTablaTemp[i].precio *
700 $scope.notaPedido.cotizacion.VENDEDOR; 693 $scope.notaPedido.cotizacion.VENDEDOR;
701 articulosTablaTemp[i].precio = articulosTablaTemp[i].precio / 694 articulosTablaTemp[i].precio = articulosTablaTemp[i].precio /
702 cotizacion.VENDEDOR; 695 cotizacion.VENDEDOR;
703 } 696 }
704 $scope.notaPedido.articulosNotaPedido = articulosTablaTemp; 697 $scope.notaPedido.articulosNotaPedido = articulosTablaTemp;
705 $scope.notaPedido.cotizacion = cotizacion; 698 $scope.notaPedido.cotizacion = cotizacion;
706 $scope.notaPedido.cotizacion.moneda = moneda; 699 $scope.notaPedido.cotizacion.moneda = moneda;
707 if (moneda.DETALLE === 'PESOS ARGENTINOS') { 700 if (moneda.DETALLE === 'PESOS ARGENTINOS') {
708 $scope.$broadcast('removeCabecera', 'Moneda:'); 701 $scope.$broadcast('removeCabecera', 'Moneda:');
709 $scope.$broadcast('removeCabecera', 'Fecha cotizacion:'); 702 $scope.$broadcast('removeCabecera', 'Fecha cotizacion:');
710 $scope.$broadcast('removeCabecera', 'Cotizacion:'); 703 $scope.$broadcast('removeCabecera', 'Cotizacion:');
711 } else { 704 } else {
712 $scope.$broadcast('addCabecera', { 705 $scope.$broadcast('addCabecera', {
713 label: 'Moneda:', 706 label: 'Moneda:',
714 valor: moneda.DETALLE 707 valor: moneda.DETALLE
715 }); 708 });
716 $scope.$broadcast('addCabecera', { 709 $scope.$broadcast('addCabecera', {
717 label: 'Fecha cotizacion:', 710 label: 'Fecha cotizacion:',
718 valor: $filter('date')(cotizacion.FECHA, 'dd/MM/yyyy') 711 valor: $filter('date')(cotizacion.FECHA, 'dd/MM/yyyy')
719 }); 712 });
720 $scope.$broadcast('addCabecera', { 713 $scope.$broadcast('addCabecera', {
721 label: 'Cotizacion:', 714 label: 'Cotizacion:',
722 valor: $filter('number')(cotizacion.VENDEDOR, '2') 715 valor: $filter('number')(cotizacion.VENDEDOR, '2')
723 }); 716 });
724 } 717 }
725 }, function() { 718 }, function() {
726 719
727 } 720 }
728 ); 721 );
729 }; 722 };
730 723
731 $scope.agregarATabla = function(key) { 724 $scope.agregarATabla = function(key) {
732 if (key === 13) { 725 if (key === 13) {
733 if ($scope.articuloACargar.cantidad === undefined || 726 if ($scope.articuloACargar.cantidad === undefined ||
734 $scope.articuloACargar.cantidad === 0 || 727 $scope.articuloACargar.cantidad === 0 ||
735 $scope.articuloACargar.cantidad === null ) { 728 $scope.articuloACargar.cantidad === null ) {
736 focaModalService.alert('El valor debe ser al menos 1'); 729 focaModalService.alert('El valor debe ser al menos 1');
737 return; 730 return;
738 } 731 }
739 delete $scope.articuloACargar.sectorCodigo; 732 delete $scope.articuloACargar.sectorCodigo;
740 $scope.notaPedido.articulosNotaPedido.push($scope.articuloACargar); 733 $scope.notaPedido.articulosNotaPedido.push($scope.articuloACargar);
741 $scope.cargando = true; 734 $scope.cargando = true;
742 } 735 }
743 }; 736 };
744 737
745 $scope.quitarArticulo = function(key) { 738 $scope.quitarArticulo = function(key) {
746 $scope.notaPedido.articulosNotaPedido.splice(key, 1); 739 $scope.notaPedido.articulosNotaPedido.splice(key, 1);
747 }; 740 };
748 741
749 $scope.editarArticulo = function(key, articulo) { 742 $scope.editarArticulo = function(key, articulo) {
750 if (key === 13) { 743 if (key === 13) {
751 if (articulo.cantidad === null || articulo.cantidad === 0 || 744 if (articulo.cantidad === null || articulo.cantidad === 0 ||
752 articulo.cantidad === undefined) { 745 articulo.cantidad === undefined) {
753 focaModalService.alert('El valor debe ser al menos 1'); 746 focaModalService.alert('El valor debe ser al menos 1');
754 return; 747 return;
755 } 748 }
756 articulo.editCantidad = false; 749 articulo.editCantidad = false;
757 articulo.editPrecio = false; 750 articulo.editPrecio = false;
758 } 751 }
759 }; 752 };
760 753
761 $scope.cambioEdit = function(articulo, propiedad) { 754 $scope.cambioEdit = function(articulo, propiedad) {
762 if (propiedad === 'cantidad') { 755 if (propiedad === 'cantidad') {
763 articulo.editCantidad = true; 756 articulo.editCantidad = true;
764 } else if (propiedad === 'precio') { 757 } else if (propiedad === 'precio') {
765 articulo.editPrecio = true; 758 articulo.editPrecio = true;
766 } 759 }
767 }; 760 };
768 761
769 $scope.resetFilter = function() { 762 $scope.resetFilter = function() {
770 $scope.articuloACargar = {}; 763 $scope.articuloACargar = {};
771 $scope.cargando = true; 764 $scope.cargando = true;
772 }; 765 };
773 //Recibe aviso si el teclado está en uso 766 //Recibe aviso si el teclado está en uso
774 $rootScope.$on('usarTeclado', function(event, data) { 767 $rootScope.$on('usarTeclado', function(event, data) {
775 if (data) { 768 if (data) {
776 $scope.mostrarTeclado = true; 769 $scope.mostrarTeclado = true;
777 return; 770 return;
778 } 771 }
779 $scope.mostrarTeclado = false; 772 $scope.mostrarTeclado = false;
780 }); 773 });
781 774
782 $scope.selectFocus = function($event) { 775 $scope.selectFocus = function($event) {
783 // Si el teclado esta en uso no selecciona el valor 776 // Si el teclado esta en uso no selecciona el valor
784 if ($scope.mostrarTeclado) { 777 if ($scope.mostrarTeclado) {
785 return; 778 return;
786 } 779 }
787 $event.target.select(); 780 $event.target.select();
788 }; 781 };
789 782
790 $scope.salir = function() { 783 $scope.salir = function() {
791 $location.path('/'); 784 $location.path('/');
792 }; 785 };
793 786
794 $scope.parsearATexto = function(articulo) { 787 $scope.parsearATexto = function(articulo) {
795 articulo.cantidad = parseFloat(articulo.cantidad); 788 articulo.cantidad = parseFloat(articulo.cantidad);
796 articulo.precio = parseFloat(articulo.precio); 789 articulo.precio = parseFloat(articulo.precio);
797 }; 790 };
798 791
799 function setearNotaPedido(notaPedido) { 792 function setearNotaPedido(notaPedido) {
800 //añado cabeceras 793 //añado cabeceras
801 $scope.notaPedido = notaPedido; 794 $scope.notaPedido = notaPedido;
802 if (!$scope.notaPedido.domicilio) { 795 if (!$scope.notaPedido.domicilio) {
803 $scope.notaPedido.domicilio = { 796 $scope.notaPedido.domicilio = {
804 id: $scope.notaPedido.idDomicilio 797 id: $scope.notaPedido.idDomicilio
805 }; 798 };
806 } 799 }
807 $scope.$broadcast('removeCabecera', 'Bomba:'); 800 $scope.$broadcast('removeCabecera', 'Bomba:');
808 $scope.$broadcast('removeCabecera', 'Kilometros:'); 801 $scope.$broadcast('removeCabecera', 'Kilometros:');
809 $scope.$broadcast('cleanCabecera'); 802 $scope.$broadcast('cleanCabecera');
810 803
811 var cabeceras = []; 804 var cabeceras = [];
812 805
813 if (notaPedido.cotizacion.moneda.CODIGO_AFIP !== 'PES') { 806 if (notaPedido.cotizacion.moneda.CODIGO_AFIP !== 'PES') {
814 cabeceras.push({ 807 cabeceras.push({
815 label: 'Moneda:', 808 label: 'Moneda:',
816 valor: notaPedido.cotizacion.moneda.DETALLE 809 valor: notaPedido.cotizacion.moneda.DETALLE
817 }); 810 });
818 cabeceras.push({ 811 cabeceras.push({
819 label: 'Fecha cotizacion:', 812 label: 'Fecha cotizacion:',
820 valor: $filter('date')(notaPedido.cotizacion.FECHA, 813 valor: $filter('date')(notaPedido.cotizacion.FECHA,
821 'dd/MM/yyyy') 814 'dd/MM/yyyy')
822 }); 815 });
823 cabeceras.push({ 816 cabeceras.push({
824 label: 'Cotizacion:', 817 label: 'Cotizacion:',
825 valor: $filter('number')(notaPedido.cotizacion.VENDEDOR, 818 valor: $filter('number')(notaPedido.cotizacion.VENDEDOR,
826 '2') 819 '2')
827 }); 820 });
828 } 821 }
829 822
823 if (notaPedido.vendedor.NUM) {
824 cabeceras.push({
825 label: 'Vendedor:',
826 valor: $filter('rellenarDigitos')(notaPedido.vendedor.NUM, 3) +
827 ' - ' + notaPedido.vendedor.NOM
828 });
829 }
830
830 if (notaPedido.cliente.COD) { 831 if (notaPedido.cliente.COD) {
831 cabeceras.push({ 832 cabeceras.push({
832 label: 'Cliente:', 833 label: 'Cliente:',
833 valor: notaPedido.cliente.NOM 834 valor: notaPedido.cliente.NOM
834 }); 835 });
835 cabeceras.push({ 836 cabeceras.push({
836 label: 'Domicilio:', 837 label: 'Domicilio:',
837 valor: notaPedido.domicilioStamp 838 valor: notaPedido.domicilioStamp
838 }); 839 });
839 } 840 }
840 841
841 if (notaPedido.vendedor.NUM) {
842 cabeceras.push({
843 label: 'Vendedor:',
844 valor: $filter('rellenarDigitos')(notaPedido.vendedor.NUM, 3) +
845 ' - ' + notaPedido.vendedor.NOM
846 });
847 }
848
849 if (notaPedido.proveedor.COD) { 842 if (notaPedido.proveedor.COD) {
850 cabeceras.push({ 843 cabeceras.push({
851 label: 'Proveedor:', 844 label: 'Proveedor:',
852 valor: $filter('rellenarDigitos')(notaPedido.proveedor.COD, 5) + 845 valor: $filter('rellenarDigitos')(notaPedido.proveedor.COD, 5) +
853 ' - ' + notaPedido.proveedor.NOM 846 ' - ' + notaPedido.proveedor.NOM
854 }); 847 });
855 } 848 }
856 849
857 if (notaPedido.notaPedidoPlazo.length) { 850 if (notaPedido.notaPedidoPlazo.length) {
858 cabeceras.push({ 851 cabeceras.push({
859 label: 'Precios y condiciones:', 852 label: 'Precios y condiciones:',
860 valor: valorPrecioCondicion() + ' ' + 853 valor: valorPrecioCondicion() + ' ' +
861 notaPedidoBusinessService 854 notaPedidoBusinessService
862 .plazoToString(notaPedido.notaPedidoPlazo) 855 .plazoToString(notaPedido.notaPedidoPlazo)
863 }); 856 });
864 } 857 }
865 858
866 if (notaPedido.flete !== undefined) { 859 if (notaPedido.flete !== undefined) {
867 cabeceras.push({ 860 cabeceras.push({
868 label: 'Flete:', 861 label: 'Flete:',
869 valor: notaPedido.fob === 1 ? 'FOB' : ( 862 valor: notaPedido.fob === 1 ? 'FOB' : (
870 notaPedido.flete === 1 ? 'Si' : 'No') 863 notaPedido.flete === 1 ? 'Si' : 'No')
871 }); 864 });
872 } 865 }
873 866
874 function valorPrecioCondicion() { 867 function valorPrecioCondicion() {
875 if (notaPedido.idPrecioCondicion > 0) { 868 if (notaPedido.idPrecioCondicion > 0) {
876 return notaPedido.precioCondicion.nombre; 869 return notaPedido.precioCondicion.nombre;
877 } else { 870 } else {
878 return 'Ingreso Manual'; 871 return 'Ingreso Manual';
879 } 872 }
880 } 873 }
881 874
882 if (notaPedido.flete === 1) { 875 if (notaPedido.flete === 1) {
883 var cabeceraBomba = { 876 var cabeceraBomba = {
884 label: 'Bomba:', 877 label: 'Bomba:',
885 valor: notaPedido.bomba === 1 ? 'Si' : 'No' 878 valor: notaPedido.bomba === 1 ? 'Si' : 'No'
886 }; 879 };
887 if (notaPedido.kilometros) { 880 if (notaPedido.kilometros) {
888 var cabeceraKilometros = { 881 var cabeceraKilometros = {
889 label: 'Kilometros:', 882 label: 'Kilometros:',
890 valor: notaPedido.kilometros 883 valor: notaPedido.kilometros
891 }; 884 };
892 cabeceras.push(cabeceraKilometros); 885 cabeceras.push(cabeceraKilometros);
893 } 886 }
894 cabeceras.push(cabeceraBomba); 887 cabeceras.push(cabeceraBomba);
895 } 888 }
896 889
897 if (notaPedido.idPrecioCondicion > 0) { 890 if (notaPedido.idPrecioCondicion > 0) {
898 $scope.idLista = notaPedido.precioCondicion.idListaPrecio; 891 $scope.idLista = notaPedido.precioCondicion.idListaPrecio;
899 } else { 892 } else {
900 $scope.idLista = -1; 893 $scope.idLista = -1;
901 } 894 }
902 895
903 $scope.puntoVenta = $filter('rellenarDigitos')( 896 $scope.puntoVenta = $filter('rellenarDigitos')(
904 notaPedido.sucursal, 4 897 notaPedido.sucursal, 4
905 ); 898 );
906 899
907 $scope.comprobante = $filter('rellenarDigitos')( 900 $scope.comprobante = $filter('rellenarDigitos')(
908 notaPedido.numeroNotaPedido, 8 901 notaPedido.numeroNotaPedido, 8
909 ); 902 );
910 903
904 if (notaPedido.notaPedidoPuntoDescarga) {
905 var puntosDescarga = notaPedido.notaPedidoPuntoDescarga
906 cabeceras.push({
907 label: 'Puntos de descarga: ',
908 valor: $filter('rellenarDigitos')(getCabeceraPuntoDescarga(puntosDescarga))
909 });
910 }
911
911 addArrayCabecera(cabeceras); 912 addArrayCabecera(cabeceras);
912 } 913 }
913 914
915 function getCabeceraPuntoDescarga(puntosDescarga){
916 var puntosStamp = '';
917 puntosDescarga.forEach(function(punto, idx, arr) {
918 puntosStamp += punto.descripcion;
919 if ((idx + 1) !== arr.length) puntosStamp += ', ';
920 });
921 return puntosStamp;
922 }
923
914 function addArrayCabecera(array) { 924 function addArrayCabecera(array) {
915 for (var i = 0; i < array.length; i++) { 925 for (var i = 0; i < array.length; i++) {
916 $scope.$broadcast('addCabecera', { 926 $scope.$broadcast('addCabecera', {
917 label: array[i].label, 927 label: array[i].label,
918 valor: array[i].valor 928 valor: array[i].valor
919 }); 929 });
920 } 930 }
921 } 931 }
922 932
923 function validarNotaRemitada() { 933 function validarNotaRemitada() {
924 if (!$scope.notaPedido.idRemito) { 934 if (!$scope.notaPedido.idRemito) {
925 return true; 935 return true;
926 } else { 936 } else {
927 focaModalService.alert('No se puede editar una nota de pedido remitada'); 937 focaModalService.alert('No se puede editar una nota de pedido remitada');
928 return false; 938 return false;
929 } 939 }
930 } 940 }
931 941
932 function salir() { 942 function salir() {
933 var confirmacion = false; 943 var confirmacion = false;
934 944
935 if (!angular.equals($scope.notaPedido, $scope.inicial)) { 945 if (!angular.equals($scope.notaPedido, $scope.inicial)) {
936 confirmacion = true; 946 confirmacion = true;
937 } 947 }
938 948
939 if (confirmacion) { 949 if (confirmacion) {
940 focaModalService.confirm( 950 focaModalService.confirm(
941 '¿Está seguro de que desea salir? Se perderán todos los datos cargados.' 951 '¿Está seguro de que desea salir? Se perderán todos los datos cargados.'
942 ).then(function(data) { 952 ).then(function(data) {
943 if (data) { 953 if (data) {
944 $location.path('/'); 954 $location.path('/');
945 } 955 }
946 }); 956 });
947 } else { 957 } else {
948 $location.path('/'); 958 $location.path('/');
949 } 959 }
950 } 960 }
951 961
952 function getLSNotaPedido() { 962 function getLSNotaPedido() {
953 var notaPedido = JSON.parse($localStorage.notaPedido || null); 963 var notaPedido = JSON.parse($localStorage.notaPedido || null);
954 if (notaPedido) { 964 if (notaPedido) {
955 delete $localStorage.notaPedido; 965 delete $localStorage.notaPedido;
956 setearNotaPedido(notaPedido); 966 setearNotaPedido(notaPedido);