Commit ae2741f890cc3b1bc0e008c0a81a120e49418a72

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

Merge branch 'master' into 'develop'

Master

See merge request !53
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 cobrador: function() { return null; }
399 }, 400 },
400 size: 'lg' 401 size: 'lg'
401 } 402 }
402 ); 403 );
403 modalInstance.result.then( 404 modalInstance.result.then(
404 function(cliente) { 405 function(cliente) {
405 $scope.abrirModalDomicilios(cliente); 406 $scope.abrirModalDomicilios(cliente);
406 $scope.cliente = cliente; 407 $scope.cliente = cliente;
407 }, function() { 408 }, function() {
408 if (APP !== 'distribuidor') $scope.seleccionarCliente(); 409 if (APP !== 'distribuidor') $scope.seleccionarCliente();
409 } 410 }
410 ); 411 );
411 } 412 }
412 }, ocultarVendedor); 413 }, ocultarVendedor);
413 }; 414 };
414 415
415 $scope.seleccionarProveedor = function() { 416 $scope.seleccionarProveedor = function() {
416 if(validarNotaRemitada()) { 417 if(validarNotaRemitada()) {
417 var parametrosModal = { 418 var parametrosModal = {
418 titulo: 'Búsqueda de Proveedor', 419 titulo: 'Búsqueda de Proveedor',
419 query: '/proveedor', 420 query: '/proveedor',
420 columnas: [ 421 columnas: [
421 { 422 {
422 nombre: 'Código', 423 nombre: 'Código',
423 propiedad: 'COD', 424 propiedad: 'COD',
424 filtro: { 425 filtro: {
425 nombre: 'rellenarDigitos', 426 nombre: 'rellenarDigitos',
426 parametro: 5 427 parametro: 5
427 } 428 }
428 }, 429 },
429 { 430 {
430 nombre: 'Nombre', 431 nombre: 'Nombre',
431 propiedad: 'NOM' 432 propiedad: 'NOM'
432 }, 433 },
433 { 434 {
434 nombre: 'CUIT', 435 nombre: 'CUIT',
435 propiedad: 'CUIT' 436 propiedad: 'CUIT'
436 } 437 }
437 ], 438 ],
438 tipo: 'POST', 439 tipo: 'POST',
439 json: {razonCuitCod: ''} 440 json: {razonCuitCod: ''}
440 }; 441 };
441 focaModalService.modal(parametrosModal).then( 442 focaModalService.modal(parametrosModal).then(
442 function(proveedor) { 443 function(proveedor) {
443 $scope.notaPedido.proveedor = proveedor; 444 $scope.notaPedido.proveedor = proveedor;
444 $scope.$broadcast('addCabecera', { 445 $scope.$broadcast('addCabecera', {
445 label: 'Proveedor:', 446 label: 'Proveedor:',
446 valor: $filter('rellenarDigitos')(proveedor.COD, 5) + ' - ' + 447 valor: $filter('rellenarDigitos')(proveedor.COD, 5) + ' - ' +
447 proveedor.NOM 448 proveedor.NOM
448 }); 449 });
449 }, function() { 450 }, function() {
450 451
451 } 452 }
452 ); 453 );
453 } 454 }
454 }; 455 };
455 456
456 $scope.abrirModalDomicilios = function(cliente) { 457 $scope.abrirModalDomicilios = function(cliente) {
457 var modalInstanceDomicilio = $uibModal.open( 458 var modalInstanceDomicilio = $uibModal.open(
458 { 459 {
459 ariaLabelledBy: 'Busqueda de Domicilios', 460 ariaLabelledBy: 'Busqueda de Domicilios',
460 templateUrl: 'modal-domicilio.html', 461 templateUrl: 'modal-domicilio.html',
461 controller: 'focaModalDomicilioController', 462 controller: 'focaModalDomicilioController',
462 resolve: { 463 resolve: {
463 idCliente: function() { return cliente.cod; }, 464 idCliente: function() { return cliente.cod; },
464 esNuevo: function() { return cliente.esNuevo; } 465 esNuevo: function() { return cliente.esNuevo; }
465 }, 466 },
466 size: 'lg', 467 size: 'lg',
467 } 468 }
468 ); 469 );
469 modalInstanceDomicilio.result.then( 470 modalInstanceDomicilio.result.then(
470 function(domicilio) { 471 function(domicilio) {
471 $scope.notaPedido.domicilio = domicilio; 472 $scope.notaPedido.domicilio = domicilio;
472 $scope.notaPedido.cliente = { 473 $scope.notaPedido.cliente = {
473 COD: cliente.cod, 474 COD: cliente.cod,
474 CUIT: cliente.cuit, 475 CUIT: cliente.cuit,
475 NOM: cliente.nom 476 NOM: cliente.nom
476 }; 477 };
477 var domicilioStamp = 478 var domicilioStamp =
478 domicilio.Calle + ' ' + domicilio.Numero + ', ' + 479 domicilio.Calle + ' ' + domicilio.Numero + ', ' +
479 domicilio.Localidad + ', ' + domicilio.Provincia; 480 domicilio.Localidad + ', ' + domicilio.Provincia;
480 $scope.notaPedido.domicilioStamp = domicilioStamp; 481 $scope.notaPedido.domicilioStamp = domicilioStamp;
481 482
482 $scope.notaPedido.notaPedidoPuntoDescarga = domicilio.puntosDescarga; 483 $scope.notaPedido.notaPedidoPuntoDescarga = domicilio.puntosDescarga;
483 484
484 $scope.$broadcast('addCabecera', { 485 $scope.$broadcast('addCabecera', {
485 label: 'Cliente:', 486 label: 'Cliente:',
486 valor: $filter('rellenarDigitos')(cliente.cod, 5) + ' - ' + cliente.nom 487 valor: $filter('rellenarDigitos')(cliente.cod, 5) + ' - ' + cliente.nom
487 }); 488 });
488 $scope.$broadcast('addCabecera', { 489 $scope.$broadcast('addCabecera', {
489 label: 'Domicilio:', 490 label: 'Domicilio:',
490 valor: domicilioStamp 491 valor: domicilioStamp
491 }); 492 });
492 if (domicilio.verPuntos) { 493 if (domicilio.verPuntos) {
493 delete $scope.notaPedido.domicilio.verPuntos; 494 delete $scope.notaPedido.domicilio.verPuntos;
494 $scope.seleccionarPuntosDeDescarga(); 495 $scope.seleccionarPuntosDeDescarga();
495 } else { 496 } else {
496 crearNotaPedidoService 497 crearNotaPedidoService
497 .getPuntosDescargaByClienDom(domicilio.id, cliente.cod) 498 .getPuntosDescargaByClienDom(domicilio.id, cliente.cod)
498 .then(function(res) { 499 .then(function(res) {
499 if(res.data.length) $scope.seleccionarPuntosDeDescarga(); 500 if(res.data.length) $scope.seleccionarPuntosDeDescarga();
500 }); 501 });
501 } 502 }
502 }, function() { 503 }, function() {
503 $scope.seleccionarCliente(true); 504 $scope.seleccionarCliente(true);
504 return; 505 return;
505 } 506 }
506 ); 507 );
507 }; 508 };
508 509
509 $scope.getTotal = function() { 510 $scope.getTotal = function() {
510 var total = 0; 511 var total = 0;
511 if ($scope.notaPedido.articulosNotaPedido) { 512 if ($scope.notaPedido.articulosNotaPedido) {
512 var arrayTempArticulos = $scope.notaPedido.articulosNotaPedido; 513 var arrayTempArticulos = $scope.notaPedido.articulosNotaPedido;
513 for (var i = 0; i < arrayTempArticulos.length; i++) { 514 for (var i = 0; i < arrayTempArticulos.length; i++) {
514 total += arrayTempArticulos[i].precio * arrayTempArticulos[i].cantidad; 515 total += arrayTempArticulos[i].precio * arrayTempArticulos[i].cantidad;
515 } 516 }
516 } 517 }
517 518
518 return parseFloat(total.toFixed(2)); 519 return parseFloat(total.toFixed(2));
519 }; 520 };
520 521
521 $scope.getSubTotal = function() { 522 $scope.getSubTotal = function() {
522 if($scope.articuloACargar) { 523 if($scope.articuloACargar) {
523 return $scope.articuloACargar.precio * $scope.articuloACargar.cantidad; 524 return $scope.articuloACargar.precio * $scope.articuloACargar.cantidad;
524 } 525 }
525 }; 526 };
526 527
527 $scope.seleccionarPreciosYCondiciones = function() { 528 $scope.seleccionarPreciosYCondiciones = function() {
528 if(validarNotaRemitada()) { 529 if(validarNotaRemitada()) {
529 var modalInstance = $uibModal.open( 530 var modalInstance = $uibModal.open(
530 { 531 {
531 ariaLabelledBy: 'Busqueda de Precio Condición', 532 ariaLabelledBy: 'Busqueda de Precio Condición',
532 templateUrl: 'modal-precio-condicion.html', 533 templateUrl: 'modal-precio-condicion.html',
533 controller: 'focaModalPrecioCondicionController', 534 controller: 'focaModalPrecioCondicionController',
534 size: 'lg' 535 size: 'lg'
535 } 536 }
536 ); 537 );
537 modalInstance.result.then( 538 modalInstance.result.then(
538 function(precioCondicion) { 539 function(precioCondicion) {
539 var cabecera = ''; 540 var cabecera = '';
540 var plazosConcat = ''; 541 var plazosConcat = '';
541 if(!Array.isArray(precioCondicion)) { 542 if(!Array.isArray(precioCondicion)) {
542 $scope.notaPedido.notaPedidoPlazo = precioCondicion.plazoPago; 543 $scope.notaPedido.notaPedidoPlazo = precioCondicion.plazoPago;
543 $scope.notaPedido.precioCondicion = precioCondicion; 544 $scope.notaPedido.precioCondicion = precioCondicion;
544 $scope.notaPedido.idPrecioCondicion = precioCondicion.id; 545 $scope.notaPedido.idPrecioCondicion = precioCondicion.id;
545 $scope.idLista = precioCondicion.idListaPrecio; 546 $scope.idLista = precioCondicion.idListaPrecio;
546 for(var i = 0; i < precioCondicion.plazoPago.length; i++) { 547 for(var i = 0; i < precioCondicion.plazoPago.length; i++) {
547 plazosConcat += precioCondicion.plazoPago[i].dias + ' '; 548 plazosConcat += precioCondicion.plazoPago[i].dias + ' ';
548 } 549 }
549 cabecera = $filter('rellenarDigitos')(precioCondicion.id, 4) + 550 cabecera = $filter('rellenarDigitos')(precioCondicion.id, 4) +
550 ' - ' + precioCondicion.nombre + ' ' + plazosConcat.trim(); 551 ' - ' + precioCondicion.nombre + ' ' + plazosConcat.trim();
551 } else { //Cuando se ingresan los plazos manualmente 552 } else { //Cuando se ingresan los plazos manualmente
552 $scope.notaPedido.idPrecioCondicion = 0; 553 $scope.notaPedido.idPrecioCondicion = 0;
553 //-1, el modal productos busca todos los productos 554 //-1, el modal productos busca todos los productos
554 $scope.idLista = -1; 555 $scope.idLista = -1;
555 $scope.notaPedido.notaPedidoPlazo = precioCondicion; 556 $scope.notaPedido.notaPedidoPlazo = precioCondicion;
556 for(var j = 0; j < precioCondicion.length; j++) { 557 for(var j = 0; j < precioCondicion.length; j++) {
557 plazosConcat += precioCondicion[j].dias + ' '; 558 plazosConcat += precioCondicion[j].dias + ' ';
558 } 559 }
559 cabecera = 'Ingreso manual ' + plazosConcat.trim(); 560 cabecera = 'Ingreso manual ' + plazosConcat.trim();
560 } 561 }
561 $scope.notaPedido.articulosNotaPedido = []; 562 $scope.notaPedido.articulosNotaPedido = [];
562 $scope.$broadcast('addCabecera', { 563 $scope.$broadcast('addCabecera', {
563 label: 'Precios y condiciones:', 564 label: 'Precios y condiciones:',
564 valor: cabecera 565 valor: cabecera
565 }); 566 });
566 }, function() { 567 }, function() {
567 568
568 } 569 }
569 ); 570 );
570 } 571 }
571 }; 572 };
572 573
573 $scope.seleccionarFlete = function() { 574 $scope.seleccionarFlete = function() {
574 if(validarNotaRemitada()) { 575 if(validarNotaRemitada()) {
575 var modalInstance = $uibModal.open( 576 var modalInstance = $uibModal.open(
576 { 577 {
577 ariaLabelledBy: 'Busqueda de Flete', 578 ariaLabelledBy: 'Busqueda de Flete',
578 templateUrl: 'modal-flete.html', 579 templateUrl: 'modal-flete.html',
579 controller: 'focaModalFleteController', 580 controller: 'focaModalFleteController',
580 size: 'lg', 581 size: 'lg',
581 resolve: { 582 resolve: {
582 parametrosFlete: 583 parametrosFlete:
583 function() { 584 function() {
584 return { 585 return {
585 flete: $scope.notaPedido.fob ? 'FOB' : 586 flete: $scope.notaPedido.fob ? 'FOB' :
586 ( $scope.notaPedido.flete ? '1' : 587 ( $scope.notaPedido.flete ? '1' :
587 ($scope.notaPedido.flete === undefined ? 588 ($scope.notaPedido.flete === undefined ?
588 null : '0')), 589 null : '0')),
589 bomba: $scope.notaPedido.bomba ? '1' : 590 bomba: $scope.notaPedido.bomba ? '1' :
590 ($scope.notaPedido.bomba === undefined ? 591 ($scope.notaPedido.bomba === undefined ?
591 null : '0'), 592 null : '0'),
592 kilometros: $scope.notaPedido.kilometros 593 kilometros: $scope.notaPedido.kilometros
593 }; 594 };
594 } 595 }
595 } 596 }
596 } 597 }
597 ); 598 );
598 modalInstance.result.then( 599 modalInstance.result.then(
599 function(datos) { 600 function(datos) {
600 $scope.notaPedido.flete = datos.flete; 601 $scope.notaPedido.flete = datos.flete;
601 $scope.notaPedido.fob = datos.FOB; 602 $scope.notaPedido.fob = datos.FOB;
602 $scope.notaPedido.bomba = datos.bomba; 603 $scope.notaPedido.bomba = datos.bomba;
603 $scope.notaPedido.kilometros = datos.kilometros; 604 $scope.notaPedido.kilometros = datos.kilometros;
604 $scope.$broadcast('addCabecera', { 605 $scope.$broadcast('addCabecera', {
605 label: 'Flete:', 606 label: 'Flete:',
606 valor: datos.FOB ? 'FOB' : (datos.flete ? 'Si' : 'No') 607 valor: datos.FOB ? 'FOB' : (datos.flete ? 'Si' : 'No')
607 }); 608 });
608 if(datos.flete) { 609 if(datos.flete) {
609 $scope.$broadcast('addCabecera', { 610 $scope.$broadcast('addCabecera', {
610 label: 'Bomba:', 611 label: 'Bomba:',
611 valor: datos.bomba ? 'Si' : 'No' 612 valor: datos.bomba ? 'Si' : 'No'
612 }); 613 });
613 $scope.$broadcast('addCabecera', { 614 $scope.$broadcast('addCabecera', {
614 label: 'Kilometros:', 615 label: 'Kilometros:',
615 valor: datos.kilometros 616 valor: datos.kilometros
616 }); 617 });
617 } else { 618 } else {
618 $scope.$broadcast('removeCabecera', 'Bomba:'); 619 $scope.$broadcast('removeCabecera', 'Bomba:');
619 $scope.$broadcast('removeCabecera', 'Kilometros:'); 620 $scope.$broadcast('removeCabecera', 'Kilometros:');
620 $scope.notaPedido.bomba = false; 621 $scope.notaPedido.bomba = false;
621 $scope.notaPedido.kilometros = null; 622 $scope.notaPedido.kilometros = null;
622 } 623 }
623 }, function() { 624 }, function() {
624 625
625 } 626 }
626 ); 627 );
627 } 628 }
628 }; 629 };
629 630
630 $scope.seleccionarMoneda = function() { 631 $scope.seleccionarMoneda = function() {
631 if(validarNotaRemitada()) { 632 if(validarNotaRemitada()) {
632 var parametrosModal = { 633 var parametrosModal = {
633 titulo: 'Búsqueda de monedas', 634 titulo: 'Búsqueda de monedas',
634 query: '/moneda', 635 query: '/moneda',
635 columnas: [ 636 columnas: [
636 { 637 {
637 propiedad: 'DETALLE', 638 propiedad: 'DETALLE',
638 nombre: 'Nombre' 639 nombre: 'Nombre'
639 }, 640 },
640 { 641 {
641 propiedad: 'SIMBOLO', 642 propiedad: 'SIMBOLO',
642 nombre: 'Símbolo' 643 nombre: 'Símbolo'
643 } 644 }
644 ], 645 ],
645 size: 'md' 646 size: 'md'
646 }; 647 };
647 focaModalService.modal(parametrosModal).then( 648 focaModalService.modal(parametrosModal).then(
648 function(moneda) { 649 function(moneda) {
649 $scope.abrirModalCotizacion(moneda); 650 $scope.abrirModalCotizacion(moneda);
650 }, function() { 651 }, function() {
651 652
652 } 653 }
653 ); 654 );
654 } 655 }
655 }; 656 };
656 657
657 $scope.seleccionarObservaciones = function() { 658 $scope.seleccionarObservaciones = function() {
658 focaModalService 659 focaModalService
659 .prompt({ 660 .prompt({
660 titulo: 'Ingrese observaciones', 661 titulo: 'Ingrese observaciones',
661 value: $scope.notaPedido.observaciones, 662 value: $scope.notaPedido.observaciones,
662 textarea: true 663 textarea: true
663 }) 664 })
664 .then(function(observaciones) { 665 .then(function(observaciones) {
665 $scope.notaPedido.observaciones = observaciones; 666 $scope.notaPedido.observaciones = observaciones;
666 }); 667 });
667 }; 668 };
668 669
669 $scope.abrirModalCotizacion = function(moneda) { 670 $scope.abrirModalCotizacion = function(moneda) {
670 var modalInstance = $uibModal.open( 671 var modalInstance = $uibModal.open(
671 { 672 {
672 ariaLabelledBy: 'Busqueda de Cotización', 673 ariaLabelledBy: 'Busqueda de Cotización',
673 templateUrl: 'modal-cotizacion.html', 674 templateUrl: 'modal-cotizacion.html',
674 controller: 'focaModalCotizacionController', 675 controller: 'focaModalCotizacionController',
675 size: 'lg', 676 size: 'lg',
676 resolve: { 677 resolve: {
677 idMoneda: function() { 678 idMoneda: function() {
678 return moneda.ID; 679 return moneda.ID;
679 } 680 }
680 } 681 }
681 } 682 }
682 ); 683 );
683 modalInstance.result.then( 684 modalInstance.result.then(
684 function(cotizacion) { 685 function(cotizacion) {
685 var articulosTablaTemp = $scope.notaPedido.articulosNotaPedido || []; 686 var articulosTablaTemp = $scope.notaPedido.articulosNotaPedido || [];
686 for(var i = 0; i < articulosTablaTemp.length; i++) { 687 for(var i = 0; i < articulosTablaTemp.length; i++) {
687 articulosTablaTemp[i].precio = articulosTablaTemp[i].precio * 688 articulosTablaTemp[i].precio = articulosTablaTemp[i].precio *
688 $scope.notaPedido.cotizacion.VENDEDOR; 689 $scope.notaPedido.cotizacion.VENDEDOR;
689 articulosTablaTemp[i].precio = articulosTablaTemp[i].precio / 690 articulosTablaTemp[i].precio = articulosTablaTemp[i].precio /
690 cotizacion.VENDEDOR; 691 cotizacion.VENDEDOR;
691 } 692 }
692 $scope.notaPedido.articulosNotaPedido = articulosTablaTemp; 693 $scope.notaPedido.articulosNotaPedido = articulosTablaTemp;
693 $scope.notaPedido.cotizacion = cotizacion; 694 $scope.notaPedido.cotizacion = cotizacion;
694 $scope.notaPedido.cotizacion.moneda = moneda; 695 $scope.notaPedido.cotizacion.moneda = moneda;
695 if(moneda.DETALLE === 'PESOS ARGENTINOS') { 696 if(moneda.DETALLE === 'PESOS ARGENTINOS') {
696 $scope.$broadcast('removeCabecera', 'Moneda:'); 697 $scope.$broadcast('removeCabecera', 'Moneda:');
697 $scope.$broadcast('removeCabecera', 'Fecha cotizacion:'); 698 $scope.$broadcast('removeCabecera', 'Fecha cotizacion:');
698 $scope.$broadcast('removeCabecera', 'Cotizacion:'); 699 $scope.$broadcast('removeCabecera', 'Cotizacion:');
699 } else { 700 } else {
700 $scope.$broadcast('addCabecera', { 701 $scope.$broadcast('addCabecera', {
701 label: 'Moneda:', 702 label: 'Moneda:',
702 valor: moneda.DETALLE 703 valor: moneda.DETALLE
703 }); 704 });
704 $scope.$broadcast('addCabecera', { 705 $scope.$broadcast('addCabecera', {
705 label: 'Fecha cotizacion:', 706 label: 'Fecha cotizacion:',
706 valor: $filter('date')(cotizacion.FECHA, 'dd/MM/yyyy') 707 valor: $filter('date')(cotizacion.FECHA, 'dd/MM/yyyy')
707 }); 708 });
708 $scope.$broadcast('addCabecera', { 709 $scope.$broadcast('addCabecera', {
709 label: 'Cotizacion:', 710 label: 'Cotizacion:',
710 valor: $filter('number')(cotizacion.VENDEDOR, '2') 711 valor: $filter('number')(cotizacion.VENDEDOR, '2')
711 }); 712 });
712 } 713 }
713 }, function() { 714 }, function() {
714 715
715 } 716 }
716 ); 717 );
717 }; 718 };
718 719
719 $scope.agregarATabla = function(key) { 720 $scope.agregarATabla = function(key) {
720 if(key === 13) { 721 if(key === 13) {
721 if($scope.articuloACargar.cantidad === undefined || 722 if($scope.articuloACargar.cantidad === undefined ||
722 $scope.articuloACargar.cantidad === 0 || 723 $scope.articuloACargar.cantidad === 0 ||
723 $scope.articuloACargar.cantidad === null ) { 724 $scope.articuloACargar.cantidad === null ) {
724 focaModalService.alert('El valor debe ser al menos 1'); 725 focaModalService.alert('El valor debe ser al menos 1');
725 return; 726 return;
726 } 727 }
727 delete $scope.articuloACargar.sectorCodigo; 728 delete $scope.articuloACargar.sectorCodigo;
728 $scope.notaPedido.articulosNotaPedido.push($scope.articuloACargar); 729 $scope.notaPedido.articulosNotaPedido.push($scope.articuloACargar);
729 $scope.cargando = true; 730 $scope.cargando = true;
730 } 731 }
731 }; 732 };
732 733
733 $scope.quitarArticulo = function(key) { 734 $scope.quitarArticulo = function(key) {
734 $scope.notaPedido.articulosNotaPedido.splice(key, 1); 735 $scope.notaPedido.articulosNotaPedido.splice(key, 1);
735 }; 736 };
736 737
737 $scope.editarArticulo = function(key, articulo) { 738 $scope.editarArticulo = function(key, articulo) {
738 if(key === 13) { 739 if(key === 13) {
739 if(articulo.cantidad === null || articulo.cantidad === 0 || 740 if(articulo.cantidad === null || articulo.cantidad === 0 ||
740 articulo.cantidad === undefined) { 741 articulo.cantidad === undefined) {
741 focaModalService.alert('El valor debe ser al menos 1'); 742 focaModalService.alert('El valor debe ser al menos 1');
742 return; 743 return;
743 } 744 }
744 articulo.editCantidad = false; 745 articulo.editCantidad = false;
745 articulo.editPrecio = false; 746 articulo.editPrecio = false;
746 } 747 }
747 }; 748 };
748 749
749 $scope.cambioEdit = function(articulo, propiedad) { 750 $scope.cambioEdit = function(articulo, propiedad) {
750 if(propiedad === 'cantidad') { 751 if(propiedad === 'cantidad') {
751 articulo.editCantidad = true; 752 articulo.editCantidad = true;
752 } else if(propiedad === 'precio') { 753 } else if(propiedad === 'precio') {
753 articulo.editPrecio = true; 754 articulo.editPrecio = true;
754 } 755 }
755 }; 756 };
756 757
757 $scope.resetFilter = function() { 758 $scope.resetFilter = function() {
758 $scope.articuloACargar = {}; 759 $scope.articuloACargar = {};
759 $scope.cargando = true; 760 $scope.cargando = true;
760 }; 761 };
761 //Recibe aviso si el teclado está en uso 762 //Recibe aviso si el teclado está en uso
762 $rootScope.$on('usarTeclado', function(event, data) { 763 $rootScope.$on('usarTeclado', function(event, data) {
763 if(data) { 764 if(data) {
764 $scope.mostrarTeclado = true; 765 $scope.mostrarTeclado = true;
765 return; 766 return;
766 } 767 }
767 $scope.mostrarTeclado = false; 768 $scope.mostrarTeclado = false;
768 }); 769 });
769 770
770 $scope.selectFocus = function($event) { 771 $scope.selectFocus = function($event) {
771 // Si el teclado esta en uso no selecciona el valor 772 // Si el teclado esta en uso no selecciona el valor
772 if($scope.mostrarTeclado) { 773 if($scope.mostrarTeclado) {
773 return; 774 return;
774 } 775 }
775 $event.target.select(); 776 $event.target.select();
776 }; 777 };
777 778
778 $scope.salir = function() { 779 $scope.salir = function() {
779 $location.path('/'); 780 $location.path('/');
780 }; 781 };
781 782
782 $scope.parsearATexto = function(articulo) { 783 $scope.parsearATexto = function(articulo) {
783 articulo.cantidad = parseFloat(articulo.cantidad); 784 articulo.cantidad = parseFloat(articulo.cantidad);
784 articulo.precio = parseFloat(articulo.precio); 785 articulo.precio = parseFloat(articulo.precio);
785 }; 786 };
786 787
787 function setearNotaPedido(notaPedido) { 788 function setearNotaPedido(notaPedido) {
788 //añado cabeceras 789 //añado cabeceras
789 $scope.notaPedido = notaPedido; 790 $scope.notaPedido = notaPedido;
790 $scope.$broadcast('removeCabecera', 'Bomba:'); 791 $scope.$broadcast('removeCabecera', 'Bomba:');
791 $scope.$broadcast('removeCabecera', 'Kilometros:'); 792 $scope.$broadcast('removeCabecera', 'Kilometros:');
792 793
793 var cabeceras = []; 794 var cabeceras = [];
794 795
795 if (notaPedido.cotizacion) { 796 if (notaPedido.cotizacion) {
796 cabeceras.push({ 797 cabeceras.push({
797 label: 'Moneda:', 798 label: 'Moneda:',
798 valor: notaPedido.cotizacion.moneda.DETALLE 799 valor: notaPedido.cotizacion.moneda.DETALLE
799 }); 800 });
800 cabeceras.push({ 801 cabeceras.push({
801 label: 'Fecha cotizacion:', 802 label: 'Fecha cotizacion:',
802 valor: $filter('date')(notaPedido.cotizacion.FECHA, 803 valor: $filter('date')(notaPedido.cotizacion.FECHA,
803 'dd/MM/yyyy') 804 'dd/MM/yyyy')
804 }); 805 });
805 cabeceras.push({ 806 cabeceras.push({
806 label: 'Cotizacion:', 807 label: 'Cotizacion:',
807 valor: $filter('number')(notaPedido.cotizacion.VENDEDOR, 808 valor: $filter('number')(notaPedido.cotizacion.VENDEDOR,
808 '2') 809 '2')
809 }); 810 });
810 } 811 }
811 if (notaPedido.cliente.COD) { 812 if (notaPedido.cliente.COD) {
812 cabeceras.push({ 813 cabeceras.push({
813 label: 'Cliente:', 814 label: 'Cliente:',
814 valor: notaPedido.cliente.NOM 815 valor: notaPedido.cliente.NOM
815 }); 816 });
816 cabeceras.push({ 817 cabeceras.push({
817 label: 'Domicilio:', 818 label: 'Domicilio:',
818 valor: notaPedido.domicilioStamp 819 valor: notaPedido.domicilioStamp
819 }); 820 });
820 } 821 }
821 if (notaPedido.vendedor.NUM) { 822 if (notaPedido.vendedor.NUM) {
822 cabeceras.push({ 823 cabeceras.push({
823 label: 'Vendedor:', 824 label: 'Vendedor:',
824 valor: $filter('rellenarDigitos')(notaPedido.vendedor.NUM, 3) + 825 valor: $filter('rellenarDigitos')(notaPedido.vendedor.NUM, 3) +
825 ' - ' + notaPedido.vendedor.NOM 826 ' - ' + notaPedido.vendedor.NOM
826 }); 827 });
827 } 828 }
828 if (notaPedido.proveedor.COD) { 829 if (notaPedido.proveedor.COD) {
829 cabeceras.push({ 830 cabeceras.push({
830 label: 'Proveedor:', 831 label: 'Proveedor:',
831 valor: $filter('rellenarDigitos')(notaPedido.proveedor.COD, 5) + 832 valor: $filter('rellenarDigitos')(notaPedido.proveedor.COD, 5) +
832 ' - ' + notaPedido.proveedor.NOM 833 ' - ' + notaPedido.proveedor.NOM
833 }); 834 });
834 } 835 }
835 if (notaPedido.notaPedidoPlazo.length) { 836 if (notaPedido.notaPedidoPlazo.length) {
836 cabeceras.push({ 837 cabeceras.push({
837 label: 'Precios y condiciones:', 838 label: 'Precios y condiciones:',
838 valor: valorPrecioCondicion() + ' ' + 839 valor: valorPrecioCondicion() + ' ' +
839 notaPedidoBusinessService 840 notaPedidoBusinessService
840 .plazoToString(notaPedido.notaPedidoPlazo) 841 .plazoToString(notaPedido.notaPedidoPlazo)
841 }); 842 });
842 } 843 }
843 if (notaPedido.flete !== undefined) { 844 if (notaPedido.flete !== undefined) {
844 cabeceras.push({ 845 cabeceras.push({
845 label: 'Flete:', 846 label: 'Flete:',
846 valor: notaPedido.fob === 1 ? 'FOB' : ( 847 valor: notaPedido.fob === 1 ? 'FOB' : (
847 notaPedido.flete === 1 ? 'Si' : 'No') 848 notaPedido.flete === 1 ? 'Si' : 'No')
848 }); 849 });
849 } 850 }
850 851
851 852
852 function valorPrecioCondicion() { 853 function valorPrecioCondicion() {
853 if (notaPedido.idPrecioCondicion > 0) { 854 if (notaPedido.idPrecioCondicion > 0) {
854 return notaPedido.precioCondicion.nombre; 855 return notaPedido.precioCondicion.nombre;
855 } else { 856 } else {
856 return 'Ingreso Manual'; 857 return 'Ingreso Manual';
857 } 858 }
858 } 859 }
859 860
860 if (notaPedido.flete === 1) { 861 if (notaPedido.flete === 1) {
861 var cabeceraBomba = { 862 var cabeceraBomba = {
862 label: 'Bomba:', 863 label: 'Bomba:',
863 valor: notaPedido.bomba === 1 ? 'Si' : 'No' 864 valor: notaPedido.bomba === 1 ? 'Si' : 'No'
864 }; 865 };
865 if (notaPedido.kilometros) { 866 if (notaPedido.kilometros) {
866 var cabeceraKilometros = { 867 var cabeceraKilometros = {
867 label: 'Kilometros:', 868 label: 'Kilometros:',
868 valor: notaPedido.kilometros 869 valor: notaPedido.kilometros
869 }; 870 };
870 cabeceras.push(cabeceraKilometros); 871 cabeceras.push(cabeceraKilometros);
871 } 872 }
872 cabeceras.push(cabeceraBomba); 873 cabeceras.push(cabeceraBomba);
873 } 874 }
874 875
875 notaPedidoBusinessService.calcularArticulos($scope.notaPedido.articulosNotaPedido, 876 notaPedidoBusinessService.calcularArticulos($scope.notaPedido.articulosNotaPedido,
876 notaPedido.cotizacion.VENDEDOR); 877 notaPedido.cotizacion.VENDEDOR);
877 878
878 if (notaPedido.idPrecioCondicion > 0) { 879 if (notaPedido.idPrecioCondicion > 0) {
879 $scope.idLista = notaPedido.precioCondicion.idListaPrecio; 880 $scope.idLista = notaPedido.precioCondicion.idListaPrecio;
880 } else { 881 } else {
881 $scope.idLista = -1; 882 $scope.idLista = -1;
882 } 883 }
883 884
884 $scope.puntoVenta = $filter('rellenarDigitos')( 885 $scope.puntoVenta = $filter('rellenarDigitos')(
885 notaPedido.sucursal, 4 886 notaPedido.sucursal, 4
886 ); 887 );
887 888
888 $scope.comprobante = $filter('rellenarDigitos')( 889 $scope.comprobante = $filter('rellenarDigitos')(
889 notaPedido.numeroNotaPedido, 8 890 notaPedido.numeroNotaPedido, 8
890 ); 891 );
891 892
892 $scope.notaPedido.notaPedidoPuntoDescarga = 893 $scope.notaPedido.notaPedidoPuntoDescarga =
893 formatearPuntosDescarga(notaPedido.notaPedidoPuntoDescarga || []); 894 formatearPuntosDescarga(notaPedido.notaPedidoPuntoDescarga || []);
894 addArrayCabecera(cabeceras); 895 addArrayCabecera(cabeceras);
895 } 896 }
896 897
897 function addArrayCabecera(array) { 898 function addArrayCabecera(array) {
898 for(var i = 0; i < array.length; i++) { 899 for(var i = 0; i < array.length; i++) {
899 $scope.$broadcast('addCabecera', { 900 $scope.$broadcast('addCabecera', {
900 label: array[i].label, 901 label: array[i].label,
901 valor: array[i].valor 902 valor: array[i].valor
902 }); 903 });
903 } 904 }
904 } 905 }
905 906
906 function validarNotaRemitada() { 907 function validarNotaRemitada() {
907 if(!$scope.notaPedido.idRemito) { 908 if(!$scope.notaPedido.idRemito) {
908 return true; 909 return true;
909 }else{ 910 }else{
910 focaModalService.alert('No se puede editar una nota de pedido remitada'); 911 focaModalService.alert('No se puede editar una nota de pedido remitada');
911 return false; 912 return false;
912 } 913 }
913 } 914 }
914 915
915 function formatearPuntosDescarga(puntosDescarga) { 916 function formatearPuntosDescarga(puntosDescarga) {
916 var result = []; 917 var result = [];
917 918
918 puntosDescarga.forEach(function(el) { 919 puntosDescarga.forEach(function(el) {
919 var puntoDescarga = result.filter(function(resultPunto) { 920 var puntoDescarga = result.filter(function(resultPunto) {
920 return resultPunto.id === el.idPuntoDescarga; 921 return resultPunto.id === el.idPuntoDescarga;
921 }); 922 });
922 923
923 if (puntoDescarga.length) { 924 if (puntoDescarga.length) {
924 puntoDescarga[0].articulosAgregados.push({ 925 puntoDescarga[0].articulosAgregados.push({
925 cantidad: el.cantidad, 926 cantidad: el.cantidad,
926 descripcion: el.producto.descripcion, 927 descripcion: el.producto.descripcion,
927 id: el.producto.id 928 id: el.producto.id
928 }); 929 });
929 } else { 930 } else {
930 result.push({ 931 result.push({
931 id: el.puntoDescarga.id, 932 id: el.puntoDescarga.id,
932 id_cliente: el.puntoDescarga.id_cliente, 933 id_cliente: el.puntoDescarga.id_cliente,
933 id_da_config_0: el.puntoDescarga.id_da_config_0, 934 id_da_config_0: el.puntoDescarga.id_da_config_0,
934 latitud: el.puntoDescarga.latitud, 935 latitud: el.puntoDescarga.latitud,
935 longitud: el.puntoDescarga.longitud, 936 longitud: el.puntoDescarga.longitud,
936 descripcion: el.puntoDescarga.descripcion, 937 descripcion: el.puntoDescarga.descripcion,
937 articulosAgregados: [ 938 articulosAgregados: [
938 { 939 {
939 cantidad: el.cantidad, 940 cantidad: el.cantidad,
940 descripcion: el.producto.descripcion, 941 descripcion: el.producto.descripcion,
941 id: el.producto.id 942 id: el.producto.id
942 } 943 }
943 ] 944 ]
944 }); 945 });
945 } 946 }
946 }); 947 });
947 return result; 948 return result;
948 } 949 }
949 950
950 function salir() { 951 function salir() {
951 var confirmacion = false; 952 var confirmacion = false;
952 953
953 if (!angular.equals($scope.notaPedido, $scope.inicial)) { 954 if (!angular.equals($scope.notaPedido, $scope.inicial)) {
954 confirmacion = true; 955 confirmacion = true;
955 } 956 }
956 957
957 if (confirmacion) { 958 if (confirmacion) {
958 focaModalService.confirm( 959 focaModalService.confirm(
959 '¿Está seguro de que desea salir? Se perderán todos los datos cargados.' 960 '¿Está seguro de que desea salir? Se perderán todos los datos cargados.'
960 ).then(function(data) { 961 ).then(function(data) {
961 if (data) { 962 if (data) {
962 $location.path('/'); 963 $location.path('/');
963 } 964 }
964 }); 965 });
965 } else { 966 } else {
966 $location.path('/'); 967 $location.path('/');
967 } 968 }
968 } 969 }
969 970
970 function getLSNotaPedido() { 971 function getLSNotaPedido() {
971 var notaPedido = JSON.parse($localStorage.notaPedido || null); 972 var notaPedido = JSON.parse($localStorage.notaPedido || null);
972 if (notaPedido) { 973 if (notaPedido) {
973 setearNotaPedido(notaPedido); 974 setearNotaPedido(notaPedido);
974 delete $localStorage.notaPedido; 975 delete $localStorage.notaPedido;
975 } 976 }
976 } 977 }
977 978
978 function deleteCliente() { 979 function deleteCliente() {
979 delete $scope.notaPedido.domicilioStamp; 980 delete $scope.notaPedido.domicilioStamp;
980 delete $scope.notaPedido.notaPedidoPuntoDescarga; 981 delete $scope.notaPedido.notaPedidoPuntoDescarga;
981 $scope.notaPedido.domicilio = {dom: ''}; 982 $scope.notaPedido.domicilio = {dom: ''};
982 $scope.notaPedido.cliente = {}; 983 $scope.notaPedido.cliente = {};
983 $scope.$broadcast('removeCabecera', 'Cliente:'); 984 $scope.$broadcast('removeCabecera', 'Cliente:');
984 $scope.$broadcast('removeCabecera', 'Domicilio:'); 985 $scope.$broadcast('removeCabecera', 'Domicilio:');
985 $scope.$broadcast('removeCabecera', 'Puntos de descarga:'); 986 $scope.$broadcast('removeCabecera', 'Puntos de descarga:');
986 } 987 }
987 } 988 }
988 ]); 989 ]);
989 990