Commit d48b31fbad1bdbe4a8b05c579909b5997df3145e

Authored by Luigi
1 parent bda155f607
Exists in master and in 1 other branch develop

Observaciones en la cabecera

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