Commit 87c3fa91fdeb44f3226553cc3d9e896e9cc735bf

Authored by Eric Fernandez
Exists in master

Merge branch 'master' into 'develop'

Master

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