Commit ee02aca22f8998d597546151d968a36893295353

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

Merge branch 'master' into 'develop'

Master

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