Commit 50c46ce291d03c510a79aeece681bd8752323794

Authored by Eric Fernandez
1 parent 1c8e1eff30
Exists in master

codigos en cabecera

Showing 1 changed file with 10 additions and 4 deletions   Show diff stats
src/js/controller.js
1 angular.module('focaCrearCobranza') .controller('cobranzaController', 1 angular.module('focaCrearCobranza') .controller('cobranzaController',
2 [ 2 [
3 '$scope', 3 '$scope',
4 '$rootScope', 4 '$rootScope',
5 '$timeout', 5 '$timeout',
6 '$uibModal', 6 '$uibModal',
7 '$location', 7 '$location',
8 'focaCrearCobranzaService', 8 'focaCrearCobranzaService',
9 'focaModalService', 9 'focaModalService',
10 '$filter', 10 '$filter',
11 'focaSeguimientoService', 11 'focaSeguimientoService',
12 'focaBotoneraLateralService', 12 'focaBotoneraLateralService',
13 'APP', 13 'APP',
14 'focaLoginService', 14 'focaLoginService',
15 function($scope, $rootScope, $timeout, $uibModal, $location, focaCrearCobranzaService, 15 function($scope, $rootScope, $timeout, $uibModal, $location, focaCrearCobranzaService,
16 focaModalService, $filter, focaSeguimientoService, focaBotoneraLateralService, 16 focaModalService, $filter, focaSeguimientoService, focaBotoneraLateralService,
17 APP, loginService) 17 APP, loginService)
18 { 18 {
19 19
20 if(APP === 'cobranza') { 20 if(APP === 'cobranza') {
21 var idCobrador = loginService.getLoginData().vendedorCobrador; 21 var idCobrador = loginService.getLoginData().vendedorCobrador;
22 $scope.botonera = focaCrearCobranzaService.getBotonera(idCobrador); 22 $scope.botonera = focaCrearCobranzaService.getBotonera(idCobrador);
23 focaCrearCobranzaService.getCobradorById(idCobrador).then( 23 focaCrearCobranzaService.getCobradorById(idCobrador).then(
24 function(res) { 24 function(res) {
25 var cobrador = res.data; 25 var cobrador = res.data;
26 $scope.$broadcast('addCabecera', { 26 $scope.$broadcast('addCabecera', {
27 label: 'Cobrador:', 27 label: 'Cobrador:',
28 valor: cobrador.NomVen 28 valor: $filter('rellenarDigitos')(cobrador.CodVen) + ' - ' +
29 cobrador.NomVen
29 }); 30 });
30 $scope.cobranza.cobrador = cobrador; 31 $scope.cobranza.cobrador = cobrador;
31 } 32 }
32 ); 33 );
33 }else { 34 }else {
34 $scope.botonera = focaCrearCobranzaService.getBotonera(); 35 $scope.botonera = focaCrearCobranzaService.getBotonera();
35 } 36 }
36 $scope.datepickerAbierto = false; 37 $scope.datepickerAbierto = false;
37 $scope.cobroDeuda = true; 38 $scope.cobroDeuda = true;
38 $scope.show = false; 39 $scope.show = false;
39 $scope.cargando = true; 40 $scope.cargando = true;
40 $scope.dateOptions = { 41 $scope.dateOptions = {
41 maxDate: new Date(), 42 maxDate: new Date(),
42 minDate: new Date(2010, 0, 1) 43 minDate: new Date(2010, 0, 1)
43 }; 44 };
44 45
45 $scope.cobranza = {}; 46 $scope.cobranza = {};
46 47
47 $scope.fecha = new Date(); 48 $scope.fecha = new Date();
48 $scope.puntoVenta = '0000'; 49 $scope.puntoVenta = '0000';
49 $scope.comprobante = '00000000'; 50 $scope.comprobante = '00000000';
50 $scope.facturaTabla = []; 51 $scope.facturaTabla = [];
51 $scope.cobrosTabla = []; 52 $scope.cobrosTabla = [];
52 53
53 $timeout(function() { 54 $timeout(function() {
54 focaBotoneraLateralService.showSalir(false); 55 focaBotoneraLateralService.showSalir(false);
55 focaBotoneraLateralService.showPausar(true); 56 focaBotoneraLateralService.showPausar(true);
56 focaBotoneraLateralService.showGuardar(true, $scope.crearCobranza); 57 focaBotoneraLateralService.showGuardar(true, $scope.crearCobranza);
57 focaBotoneraLateralService.addCustomButton('Salir', salir); 58 focaBotoneraLateralService.addCustomButton('Salir', salir);
58 }); 59 });
59 60
60 $scope.crearCobranza = function() { 61 $scope.crearCobranza = function() {
61 if(!$scope.cobranza.cliente) { 62 if(!$scope.cobranza.cliente) {
62 focaModalService.alert('Ingrese Cliente'); 63 focaModalService.alert('Ingrese Cliente');
63 return; 64 return;
64 } 65 }
65 if(!$scope.cobranza.cobrador) { 66 if(!$scope.cobranza.cobrador) {
66 focaModalService.alert('Ingrese Cobrador'); 67 focaModalService.alert('Ingrese Cobrador');
67 return; 68 return;
68 } 69 }
69 if($scope.facturaTabla.length < 1) { 70 if($scope.facturaTabla.length < 1) {
70 focaModalService.alert('Ingrese al menos una factura'); 71 focaModalService.alert('Ingrese al menos una factura');
71 return; 72 return;
72 } 73 }
73 if($scope.getTotalCobrado() + $scope.getTotalDeuda() !== 0) { 74 if($scope.getTotalCobrado() + $scope.getTotalDeuda() !== 0) {
74 focaModalService.alert('La diferencia debe ser ' + 75 focaModalService.alert('La diferencia debe ser ' +
75 $scope.cobranza.moneda.SIMBOLO + '0,00'); 76 $scope.cobranza.moneda.SIMBOLO + '0,00');
76 return; 77 return;
77 } 78 }
78 var cobranza = {}; 79 var cobranza = {};
79 var cheques = []; 80 var cheques = [];
80 var cuerpos = []; 81 var cuerpos = [];
81 //TODO: habilitar edición 82 //TODO: habilitar edición
82 $scope.editando = false; 83 $scope.editando = false;
83 focaBotoneraLateralService.startGuardar(); 84 focaBotoneraLateralService.startGuardar();
84 $scope.saveLoading = true; 85 $scope.saveLoading = true;
85 for(var i = 0; i < $scope.facturaTabla.length; i++) { 86 for(var i = 0; i < $scope.facturaTabla.length; i++) {
86 var cuerpoFactura = { 87 var cuerpoFactura = {
87 CYV: 'V', 88 CYV: 'V',
88 TIP: 'C', 89 TIP: 'C',
89 TCO: 'RC', 90 TCO: 'RC',
90 PVE: $scope.puntoVenta, 91 PVE: $scope.puntoVenta,
91 NCO: $scope.comprobante, 92 NCO: $scope.comprobante,
92 LOP: 'L', 93 LOP: 'L',
93 TIL: $scope.facturaTabla[i].TCO, 94 TIL: $scope.facturaTabla[i].TCO,
94 COM: $scope.facturaTabla[i].numeroFactura + '-' + 95 COM: $scope.facturaTabla[i].numeroFactura + '-' +
95 $scope.rellenar($scope.facturaTabla[i].NCU,2), 96 $scope.rellenar($scope.facturaTabla[i].NCU,2),
96 FEC: $scope.fecha.toISOString().slice(0, 19).replace('T', ' '), 97 FEC: $scope.fecha.toISOString().slice(0, 19).replace('T', ' '),
97 IMP: Math.abs($scope.facturaTabla[i].IPA), 98 IMP: Math.abs($scope.facturaTabla[i].IPA),
98 RES: 0,//caja de tesorería 99 RES: 0,//caja de tesorería
99 SUBM: 0 100 SUBM: 0
100 }; 101 };
101 cuerpos.push(cuerpoFactura); 102 cuerpos.push(cuerpoFactura);
102 } 103 }
103 104
104 for (var j = 0; j < $scope.cobrosTabla.length; j++) { 105 for (var j = 0; j < $scope.cobrosTabla.length; j++) {
105 106
106 var efectivo = $scope.cobrosTabla[j].tipo === 'Efectivo' ? true : false; 107 var efectivo = $scope.cobrosTabla[j].tipo === 'Efectivo' ? true : false;
107 108
108 var cuerpoCobros = { 109 var cuerpoCobros = {
109 CYV: 'V', 110 CYV: 'V',
110 TIP: 'C', 111 TIP: 'C',
111 TCO: 'RC', 112 TCO: 'RC',
112 PVE: $scope.puntoVenta, 113 PVE: $scope.puntoVenta,
113 NCO: $scope.comprobante, 114 NCO: $scope.comprobante,
114 LOP: 'P', 115 LOP: 'P',
115 TIL: 'EF', 116 TIL: 'EF',
116 COM: efectivo ? 'ef(COBRO EN EFECTIVO)' : 'ch(' + 117 COM: efectivo ? 'ef(COBRO EN EFECTIVO)' : 'ch(' +
117 $scope.cobrosTabla[j].numero + ')' + $scope.cobrosTabla[j].banco.desbco, 118 $scope.cobrosTabla[j].numero + ')' + $scope.cobrosTabla[j].banco.desbco,
118 FEC: efectivo ? 119 FEC: efectivo ?
119 $scope.cobrosTabla[j].fecha 120 $scope.cobrosTabla[j].fecha
120 .toISOString().slice(0, 19).replace('T', ' ') : 121 .toISOString().slice(0, 19).replace('T', ' ') :
121 $scope.cobrosTabla[j].fechaPresentacion 122 $scope.cobrosTabla[j].fechaPresentacion
122 .toISOString().slice(0, 19).replace('T', ' '), 123 .toISOString().slice(0, 19).replace('T', ' '),
123 IMP: Math.abs($scope.cobrosTabla[j].importe), 124 IMP: Math.abs($scope.cobrosTabla[j].importe),
124 RES: 0,//caja de tesorería 125 RES: 0,//caja de tesorería
125 SUBM: 0 126 SUBM: 0
126 }; 127 };
127 cuerpos.push(cuerpoCobros); 128 cuerpos.push(cuerpoCobros);
128 129
129 if(!efectivo) { 130 if(!efectivo) {
130 var cheque = { 131 var cheque = {
131 BCO: $scope.cobrosTabla[j].banco.ID, 132 BCO: $scope.cobrosTabla[j].banco.ID,
132 NUM: $scope.comprobante, 133 NUM: $scope.comprobante,
133 FEP: $scope.cobrosTabla[j].fechaPresentacion 134 FEP: $scope.cobrosTabla[j].fechaPresentacion
134 .toISOString().slice(0, 19).replace('T', ' '), 135 .toISOString().slice(0, 19).replace('T', ' '),
135 FEE: $scope.cobrosTabla[j].fechaEmision 136 FEE: $scope.cobrosTabla[j].fechaEmision
136 .toISOString().slice(0, 19).replace('T', ' '), 137 .toISOString().slice(0, 19).replace('T', ' '),
137 LUG: $scope.cobrosTabla[j].localidad.NOMBRE, 138 LUG: $scope.cobrosTabla[j].localidad.NOMBRE,
138 IMP: $scope.cobrosTabla[j].importe, 139 IMP: $scope.cobrosTabla[j].importe,
139 LIB: $scope.cobrosTabla[j].librador, 140 LIB: $scope.cobrosTabla[j].librador,
140 EST: 'C',//'D' depositado, 'E' entregado, 'C' en cartera 141 EST: 'C',//'D' depositado, 'E' entregado, 'C' en cartera
141 PCI: $scope.cobrosTabla[j].provincia.ID, 142 PCI: $scope.cobrosTabla[j].provincia.ID,
142 LPLA: 0, 143 LPLA: 0,
143 PLA: 0, 144 PLA: 0,
144 VEN: $scope.cobranza.cobrador.CodVen,//Id vendedor 145 VEN: $scope.cobranza.cobrador.CodVen,//Id vendedor
145 CCLIE: $scope.cobranza.cliente.COD,//Id cliente 146 CCLIE: $scope.cobranza.cliente.COD,//Id cliente
146 REN: 0, 147 REN: 0,
147 PVEC: $scope.puntoVenta, 148 PVEC: $scope.puntoVenta,
148 NCOC: $scope.comprobante, 149 NCOC: $scope.comprobante,
149 OBSE: $scope.cobrosTabla[j].observaciones, 150 OBSE: $scope.cobrosTabla[j].observaciones,
150 LUV: 0, 151 LUV: 0,
151 ORI: 've', 152 ORI: 've',
152 FER: '', 153 FER: '',
153 BIMP: 0, 154 BIMP: 0,
154 COMP: 'C ' +'RC ' + $scope.puntoVenta + '-' + $scope.comprobante, 155 COMP: 'C ' +'RC ' + $scope.puntoVenta + '-' + $scope.comprobante,
155 VAL_E: '',//Cuando egresa por ingresos y egresos en el numero de egreso 156 VAL_E: '',//Cuando egresa por ingresos y egresos en el numero de egreso
156 VAL_I: '',//Cuando Ingresa por ingresos y egresos en el numero ingreso 157 VAL_I: '',//Cuando Ingresa por ingresos y egresos en el numero ingreso
157 REC_CAJ: 'D', 158 REC_CAJ: 'D',
158 TIPO_C: 0,//?? 159 TIPO_C: 0,//??
159 SALDO_CAJ: 'S', 160 SALDO_CAJ: 'S',
160 FECHA_INGRESO: $scope.fecha 161 FECHA_INGRESO: $scope.fecha
161 .toISOString().slice(0, 19).replace('T', ' '), 162 .toISOString().slice(0, 19).replace('T', ' '),
162 Vendedor_valor: 0, 163 Vendedor_valor: 0,
163 FAMILIA: 0, 164 FAMILIA: 0,
164 CUIT_LIB: '', 165 CUIT_LIB: '',
165 COD_LUG: $scope.cobrosTabla[j].localidad.ID,//código lugar 166 COD_LUG: $scope.cobrosTabla[j].localidad.ID,//código lugar
166 SEN: '', 167 SEN: '',
167 NRC: 0, 168 NRC: 0,
168 COD_LARGO: '', 169 COD_LARGO: '',
169 VN: 0, 170 VN: 0,
170 ID_LECTOR: 0, 171 ID_LECTOR: 0,
171 NATHB: '' 172 NATHB: ''
172 }; 173 };
173 cheques.push(cheque); 174 cheques.push(cheque);
174 } 175 }
175 } 176 }
176 177
177 cobranza = { 178 cobranza = {
178 recibo: { 179 recibo: {
179 CYV: 'V', 180 CYV: 'V',
180 TIP: 'C', 181 TIP: 'C',
181 TCO: 'RC', 182 TCO: 'RC',
182 PVE: $scope.puntoVenta, //Sucursar, punto de venta 183 PVE: $scope.puntoVenta, //Sucursar, punto de venta
183 NCO: $scope.comprobante, //Numero de comprobante 184 NCO: $scope.comprobante, //Numero de comprobante
184 FEC: $scope.fecha.toISOString().slice(0, 19).replace('T', ' '), 185 FEC: $scope.fecha.toISOString().slice(0, 19).replace('T', ' '),
185 CLI: $scope.cobranza.cliente.COD, 186 CLI: $scope.cobranza.cliente.COD,
186 ATO: 0, //número de asiento 187 ATO: 0, //número de asiento
187 CFE: $scope.cobranza.cobrador.NomVen, 188 CFE: $scope.cobranza.cobrador.NomVen,
188 PLA: '',//Numero de planilla, sin uso 189 PLA: '',//Numero de planilla, sin uso
189 ID_MONEDA: $scope.cobranza.moneda.ID, 190 ID_MONEDA: $scope.cobranza.moneda.ID,
190 COTIZACION: $scope.cobranza.cotizacion.VENDEDOR, 191 COTIZACION: $scope.cobranza.cotizacion.VENDEDOR,
191 idCobrador: $scope.cobranza.cobrador.CodVen 192 idCobrador: $scope.cobranza.cobrador.CodVen
192 }, 193 },
193 cuerpo: cuerpos, 194 cuerpo: cuerpos,
194 cheques: cheques, 195 cheques: cheques,
195 acobypag: { 196 acobypag: {
196 CYV: 'V', 197 CYV: 'V',
197 COD: $scope.cobranza.cliente.COD, 198 COD: $scope.cobranza.cliente.COD,
198 FEP: $scope.fecha.toISOString().slice(0, 19).replace('T', ' '), 199 FEP: $scope.fecha.toISOString().slice(0, 19).replace('T', ' '),
199 TIP: 'C', 200 TIP: 'C',
200 TCO: 'RC', 201 TCO: 'RC',
201 SUC: $scope.puntoVenta, 202 SUC: $scope.puntoVenta,
202 NCO: $scope.comprobante, 203 NCO: $scope.comprobante,
203 IPA: $scope.getTotalCobrado(), 204 IPA: $scope.getTotalCobrado(),
204 SAL: '',//?? 205 SAL: '',//??
205 TCA: 1, 206 TCA: 1,
206 ZONA: 1, 207 ZONA: 1,
207 FPA: 2,//Forma de pago 208 FPA: 2,//Forma de pago
208 REC: 0, 209 REC: 0,
209 REP: 0, 210 REP: 0,
210 FER: null, 211 FER: null,
211 REM: 0, 212 REM: 0,
212 FRE: null,//?? 213 FRE: null,//??
213 PRO: 'N', 214 PRO: 'N',
214 FEV: $scope.fecha.toISOString().slice(0, 19).replace('T', ' ') 215 FEV: $scope.fecha.toISOString().slice(0, 19).replace('T', ' ')
215 }, 216 },
216 datosCobrador: { 217 datosCobrador: {
217 COD: $scope.cobranza.cobrador.CodVen, 218 COD: $scope.cobranza.cobrador.CodVen,
218 PVE: $scope.puntoVenta, 219 PVE: $scope.puntoVenta,
219 NUM: $scope.comprobante, 220 NUM: $scope.comprobante,
220 EST: 'C', 221 EST: 'C',
221 OBS: 'RC: ' + $scope.comprobante + '-' + $scope.fecha.toLocaleDateString(), 222 OBS: 'RC: ' + $scope.comprobante + '-' + $scope.fecha.toLocaleDateString(),
222 DAT1: 'C', 223 DAT1: 'C',
223 CLI: $scope.cobranza.cliente.COD 224 CLI: $scope.cobranza.cliente.COD
224 } 225 }
225 }; 226 };
226 focaCrearCobranzaService.guardarCobranza(cobranza).then( 227 focaCrearCobranzaService.guardarCobranza(cobranza).then(
227 function(result) { 228 function(result) {
228 focaBotoneraLateralService.endGuardar(true); 229 focaBotoneraLateralService.endGuardar(true);
229 $scope.saveLoading = false; 230 $scope.saveLoading = false;
230 focaModalService.alert('Cobranza guardada con éxito'); 231 focaModalService.alert('Cobranza guardada con éxito');
231 232
232 focaSeguimientoService.guardarPosicion( 233 focaSeguimientoService.guardarPosicion(
233 'Cobranza', 234 'Cobranza',
234 result.data, 235 result.data,
235 '' 236 ''
236 ); 237 );
237 //TODO: si esta en mobile no perder el cobrador 238 //TODO: si esta en mobile no perder el cobrador
238 $scope.cobranza = { 239 $scope.cobranza = {
239 fecha: new Date() 240 fecha: new Date()
240 }; 241 };
241 setearMonedaPorDefecto(); 242 setearMonedaPorDefecto();
242 obtenerNumeroComprobante(); 243 obtenerNumeroComprobante();
243 //TODO: si esta en mobile no perder el cobrador 244 //TODO: si esta en mobile no perder el cobrador
244 $scope.$broadcast('cleanCabecera'); 245 $scope.$broadcast('cleanCabecera');
245 $scope.fecha = new Date(); 246 $scope.fecha = new Date();
246 $scope.facturaTabla = []; 247 $scope.facturaTabla = [];
247 $scope.cobrosTabla = []; 248 $scope.cobrosTabla = [];
248 }, function(error) { 249 }, function(error) {
249 focaModalService.alert('Hubo un problema al cargar la cobranza'); 250 focaModalService.alert('Hubo un problema al cargar la cobranza');
250 focaBotoneraLateralService.endGuardar(); 251 focaBotoneraLateralService.endGuardar();
251 $scope.saveLoading = false; 252 $scope.saveLoading = false;
252 console.info(error); 253 console.info(error);
253 } 254 }
254 ); 255 );
255 }; 256 };
256 257
257 $scope.seleccionarCobros = function() { 258 $scope.seleccionarCobros = function() {
258 $scope.cobroDeuda = false; 259 $scope.cobroDeuda = false;
259 }; 260 };
260 261
261 $scope.seleccionarComprobantes = function() { 262 $scope.seleccionarComprobantes = function() {
262 $scope.cobroDeuda = true; 263 $scope.cobroDeuda = true;
263 }; 264 };
264 265
265 $scope.seleccionarCobranza = function() { 266 $scope.seleccionarCobranza = function() {
266 267
267 var modalInstance = $uibModal.open( 268 var modalInstance = $uibModal.open(
268 { 269 {
269 ariaLabelledBy: 'Busqueda de Cobranzas', 270 ariaLabelledBy: 'Busqueda de Cobranzas',
270 templateUrl: 'foca-modal-cobranza.html', 271 templateUrl: 'foca-modal-cobranza.html',
271 controller: 'focaModalCobranzaController', 272 controller: 'focaModalCobranzaController',
272 size: 'lg' 273 size: 'lg'
273 } 274 }
274 ); 275 );
275 modalInstance.result.then(function(cobranza) { 276 modalInstance.result.then(function(cobranza) {
276 $scope.editando = true; 277 $scope.editando = true;
277 $scope.facturaTabla = []; 278 $scope.facturaTabla = [];
278 $scope.cobrosTabla = []; 279 $scope.cobrosTabla = [];
279 $scope.$broadcast('cleanCabecera'); 280 $scope.$broadcast('cleanCabecera');
280 281
281 $scope.fecha = new Date(cobranza.fecha); 282 $scope.fecha = new Date(cobranza.fecha);
282 283
283 $scope.$broadcast('addCabecera', { 284 $scope.$broadcast('addCabecera', {
284 label: 'Cliente:', 285 label: 'Cliente:',
285 valor: cobranza.cliente.NOM 286 valor: $filter('rellenarDigitos')(cobranza.cliente.COD, 5) + ' - ' +
287 cobranza.cliente.NOM
286 }); 288 });
287 $scope.$broadcast('addCabecera', { 289 $scope.$broadcast('addCabecera', {
288 label: 'Cobrador:', 290 label: 'Cobrador:',
289 valor: cobranza.cobrador 291 valor: cobranza.cobrador
292 //TODO: hacer la relación y traer el cobrador para poner su código
293 // valor: $filter('rellenarDigitos')(cobranza.cobrador.CodVen, 5) + ' - ' +
294 // cobranza.cobrador
290 }); 295 });
291 296
292 $scope.facturaTabla = cobranza.facturas; 297 $scope.facturaTabla = cobranza.facturas;
293 $scope.cobrosTabla = cobranza.cobros; 298 $scope.cobrosTabla = cobranza.cobros;
294 }); 299 });
295 }; 300 };
296 301
297 $scope.seleccionarCliente = function() { 302 $scope.seleccionarCliente = function() {
298 var modalInstance = $uibModal.open( 303 var modalInstance = $uibModal.open(
299 { 304 {
300 ariaLabelledBy: 'Busqueda de Cliente', 305 ariaLabelledBy: 'Busqueda de Cliente',
301 templateUrl: 'foca-busqueda-cliente-modal.html', 306 templateUrl: 'foca-busqueda-cliente-modal.html',
302 controller: 'focaBusquedaClienteModalController', 307 controller: 'focaBusquedaClienteModalController',
303 size: 'lg', 308 size: 'lg',
304 resolve: { 309 resolve: {
305 vendedor: function(){ return null; } 310 vendedor: function(){ return null; }
306 } 311 }
307 } 312 }
308 ); 313 );
309 modalInstance.result.then( 314 modalInstance.result.then(
310 function(cliente) { 315 function(cliente) {
311 $scope.$broadcast('addCabecera', { 316 $scope.$broadcast('addCabecera', {
312 label: 'Cliente:', 317 label: 'Cliente:',
313 valor: cliente.nom 318 valor: $filter('rellenarDigitos')(cliente.cod, 5) + ' - ' + cliente.nom
314 }); 319 });
315 $scope.cobranza.cliente = { 320 $scope.cobranza.cliente = {
316 COD: cliente.cod, 321 COD: cliente.cod,
317 CUIT: cliente.cuit, 322 CUIT: cliente.cuit,
318 NOM: cliente.nom 323 NOM: cliente.nom
319 }; 324 };
320 }, function() { 325 }, function() {
321 326
322 } 327 }
323 ); 328 );
324 }; 329 };
325 330
326 $scope.seleccionarFactura = function() { 331 $scope.seleccionarFactura = function() {
327 if(!$scope.cobranza.cliente) { 332 if(!$scope.cobranza.cliente) {
328 focaModalService.alert('Seleccione primero un cliente'); 333 focaModalService.alert('Seleccione primero un cliente');
329 return; 334 return;
330 } 335 }
331 var modalInstance = $uibModal.open( 336 var modalInstance = $uibModal.open(
332 { 337 {
333 ariaLabelledBy: 'Busqueda de Facturas', 338 ariaLabelledBy: 'Busqueda de Facturas',
334 templateUrl: 'foca-modal-factura.html', 339 templateUrl: 'foca-modal-factura.html',
335 controller: 'focaModalFacturaController', 340 controller: 'focaModalFacturaController',
336 size: 'lg', 341 size: 'lg',
337 resolve: { 342 resolve: {
338 parametrosFactura: function() { 343 parametrosFactura: function() {
339 return { 344 return {
340 cliente: $scope.cobranza.cliente, 345 cliente: $scope.cobranza.cliente,
341 simbolo: $scope.cobranza.moneda.SIMBOLO, 346 simbolo: $scope.cobranza.moneda.SIMBOLO,
342 cotizacion: $scope.cobranza.cotizacion.VENDEDOR, 347 cotizacion: $scope.cobranza.cotizacion.VENDEDOR,
343 moneda: $scope.cobranza.moneda.ID 348 moneda: $scope.cobranza.moneda.ID
344 }; 349 };
345 } 350 }
346 } 351 }
347 } 352 }
348 ); 353 );
349 modalInstance.result.then( 354 modalInstance.result.then(
350 function(facturas) { 355 function(facturas) {
351 $scope.facturaTabla = $scope.facturaTabla.concat(facturas); 356 $scope.facturaTabla = $scope.facturaTabla.concat(facturas);
352 }, function() { 357 }, function() {
353 358
354 } 359 }
355 ); 360 );
356 }; 361 };
357 362
358 $scope.seleccionarCheque = function() { 363 $scope.seleccionarCheque = function() {
359 var modalInstance = $uibModal.open( 364 var modalInstance = $uibModal.open(
360 { 365 {
361 ariaLabelledBy: 'Carga de cheques', 366 ariaLabelledBy: 'Carga de cheques',
362 templateUrl: 'modal-cheque.html', 367 templateUrl: 'modal-cheque.html',
363 controller: 'focaModalChequeController', 368 controller: 'focaModalChequeController',
364 size: 'lg', 369 size: 'lg',
365 resolve: { 370 resolve: {
366 sugerido: function() { 371 sugerido: function() {
367 var sugerido = $scope.getTotalDeuda() + $scope.getTotalCobrado(); 372 var sugerido = $scope.getTotalDeuda() + $scope.getTotalCobrado();
368 return sugerido < 0 ? sugerido : null; 373 return sugerido < 0 ? sugerido : null;
369 } 374 }
370 } 375 }
371 } 376 }
372 ); 377 );
373 modalInstance.result.then( 378 modalInstance.result.then(
374 function(cheque) { 379 function(cheque) {
375 var cobro = { 380 var cobro = {
376 tipo: 'Ch' + '(' + cheque.numero + ')' + ' ' + cheque.banco.desbco, 381 tipo: 'Ch' + '(' + cheque.numero + ')' + ' ' + cheque.banco.desbco,
377 numero: cheque.numero, 382 numero: cheque.numero,
378 banco: cheque.banco, 383 banco: cheque.banco,
379 fecha: cheque.fechaEmision.toLocaleDateString() + '-' + 384 fecha: cheque.fechaEmision.toLocaleDateString() + '-' +
380 cheque.fechaPresentacion.toLocaleDateString(), 385 cheque.fechaPresentacion.toLocaleDateString(),
381 fechaPresentacion: cheque.fechaPresentacion, 386 fechaPresentacion: cheque.fechaPresentacion,
382 fechaEmision: cheque.fechaEmision, 387 fechaEmision: cheque.fechaEmision,
383 importe: cheque.importe * $scope.cobranza.cotizacion.VENDEDOR, 388 importe: cheque.importe * $scope.cobranza.cotizacion.VENDEDOR,
384 localidad: cheque.localidad, 389 localidad: cheque.localidad,
385 librador: cheque.librador, 390 librador: cheque.librador,
386 provincia: cheque.provincia, 391 provincia: cheque.provincia,
387 observaciones: cheque.observaciones 392 observaciones: cheque.observaciones
388 }; 393 };
389 $scope.cobrosTabla.push(cobro); 394 $scope.cobrosTabla.push(cobro);
390 }, function() { 395 }, function() {
391 396
392 } 397 }
393 ); 398 );
394 }; 399 };
395 400
396 $scope.seleccionarEfectivo = function() { 401 $scope.seleccionarEfectivo = function() {
397 var modalInstance = $uibModal.open( 402 var modalInstance = $uibModal.open(
398 { 403 {
399 ariaLabelledBy: 'Carga de cheques', 404 ariaLabelledBy: 'Carga de cheques',
400 templateUrl: 'modal-efectivo.html', 405 templateUrl: 'modal-efectivo.html',
401 controller: 'focaModalEfectivoController', 406 controller: 'focaModalEfectivoController',
402 size: 'sm', 407 size: 'sm',
403 resolve: { 408 resolve: {
404 sugerido: function() { 409 sugerido: function() {
405 var sugerido = $scope.getTotalDeuda() + $scope.getTotalCobrado(); 410 var sugerido = $scope.getTotalDeuda() + $scope.getTotalCobrado();
406 return sugerido < 0 ? sugerido : null; 411 return sugerido < 0 ? sugerido : null;
407 } 412 }
408 } 413 }
409 } 414 }
410 ); 415 );
411 modalInstance.result.then( 416 modalInstance.result.then(
412 function(efectivo) { 417 function(efectivo) {
413 var cobro = { 418 var cobro = {
414 tipo: 'Efectivo', 419 tipo: 'Efectivo',
415 fecha: new Date(), 420 fecha: new Date(),
416 importe: efectivo * $scope.cobranza.cotizacion.VENDEDOR 421 importe: efectivo * $scope.cobranza.cotizacion.VENDEDOR
417 }; 422 };
418 $scope.cobrosTabla = $scope.cobrosTabla.filter(function(a) { 423 $scope.cobrosTabla = $scope.cobrosTabla.filter(function(a) {
419 return a.tipo !== 'Efectivo'; 424 return a.tipo !== 'Efectivo';
420 }); 425 });
421 $scope.cobrosTabla.push(cobro); 426 $scope.cobrosTabla.push(cobro);
422 }, function() { 427 }, function() {
423 428
424 } 429 }
425 ); 430 );
426 }; 431 };
427 432
428 $scope.seleccionarMoneda = function() { 433 $scope.seleccionarMoneda = function() {
429 var parametrosModal = { 434 var parametrosModal = {
430 titulo: 'Búsqueda de monedas', 435 titulo: 'Búsqueda de monedas',
431 query: '/moneda', 436 query: '/moneda',
432 columnas: [ 437 columnas: [
433 { 438 {
434 propiedad: 'DETALLE', 439 propiedad: 'DETALLE',
435 nombre: 'Nombre' 440 nombre: 'Nombre'
436 }, 441 },
437 { 442 {
438 propiedad: 'SIMBOLO', 443 propiedad: 'SIMBOLO',
439 nombre: 'Símbolo' 444 nombre: 'Símbolo'
440 } 445 }
441 ], 446 ],
442 size: 'md' 447 size: 'md'
443 }; 448 };
444 focaModalService.modal(parametrosModal).then( 449 focaModalService.modal(parametrosModal).then(
445 function(moneda) { 450 function(moneda) {
446 $scope.seleccionarCotizacion(moneda); 451 $scope.seleccionarCotizacion(moneda);
447 }, function() { 452 }, function() {
448 453
449 } 454 }
450 ); 455 );
451 }; 456 };
452 457
453 $scope.seleccionarCotizacion = function(moneda) { 458 $scope.seleccionarCotizacion = function(moneda) {
454 var modalInstance = $uibModal.open( 459 var modalInstance = $uibModal.open(
455 { 460 {
456 ariaLabelledBy: 'Busqueda de Cotización', 461 ariaLabelledBy: 'Busqueda de Cotización',
457 templateUrl: 'modal-cotizacion.html', 462 templateUrl: 'modal-cotizacion.html',
458 controller: 'focaModalCotizacionController', 463 controller: 'focaModalCotizacionController',
459 size: 'lg', 464 size: 'lg',
460 resolve: {idMoneda: function() {return moneda.ID;}} 465 resolve: {idMoneda: function() {return moneda.ID;}}
461 } 466 }
462 ); 467 );
463 modalInstance.result.then( 468 modalInstance.result.then(
464 function(cotizacion) { 469 function(cotizacion) {
465 $scope.cobranza.moneda = moneda; 470 $scope.cobranza.moneda = moneda;
466 $scope.cobranza.cotizacion = cotizacion; 471 $scope.cobranza.cotizacion = cotizacion;
467 if(moneda.DETALLE === 'PESOS ARGENTINOS') { 472 if(moneda.DETALLE === 'PESOS ARGENTINOS') {
468 $scope.$broadcast('removeCabecera', 'Moneda:'); 473 $scope.$broadcast('removeCabecera', 'Moneda:');
469 $scope.$broadcast('removeCabecera', 'Fecha cotizacion:'); 474 $scope.$broadcast('removeCabecera', 'Fecha cotizacion:');
470 $scope.$broadcast('removeCabecera', 'Cotizacion:'); 475 $scope.$broadcast('removeCabecera', 'Cotizacion:');
471 }else { 476 }else {
472 $scope.$broadcast('addCabecera', { 477 $scope.$broadcast('addCabecera', {
473 label: 'Moneda:', 478 label: 'Moneda:',
474 valor: moneda.DETALLE 479 valor: moneda.DETALLE
475 }); 480 });
476 $scope.$broadcast('addCabecera', { 481 $scope.$broadcast('addCabecera', {
477 label: 'Fecha cotizacion:', 482 label: 'Fecha cotizacion:',
478 valor: $filter('date')(cotizacion.FECHA, 'dd/MM/yyyy') 483 valor: $filter('date')(cotizacion.FECHA, 'dd/MM/yyyy')
479 }); 484 });
480 $scope.$broadcast('addCabecera', { 485 $scope.$broadcast('addCabecera', {
481 label: 'Cotizacion:', 486 label: 'Cotizacion:',
482 valor: $filter('number')(cotizacion.VENDEDOR, '2') 487 valor: $filter('number')(cotizacion.VENDEDOR, '2')
483 }); 488 });
484 } 489 }
485 }, function() { 490 }, function() {
486 491
487 } 492 }
488 ); 493 );
489 }; 494 };
490 495
491 $scope.seleccionarCobrador = function() { 496 $scope.seleccionarCobrador = function() {
492 var parametrosModal = { 497 var parametrosModal = {
493 query: '/cobrador', 498 query: '/cobrador',
494 columnas: [ 499 columnas: [
495 { 500 {
496 propiedad: 'CodVen', 501 propiedad: 'CodVen',
497 nombre: 'Codigo', 502 nombre: 'Codigo',
498 filtro: { 503 filtro: {
499 nombre: 'rellenarDigitos', 504 nombre: 'rellenarDigitos',
500 parametro: 3} 505 parametro: 3}
501 }, 506 },
502 { 507 {
503 propiedad: 'NomVen', 508 propiedad: 'NomVen',
504 nombre: 'Nombre' 509 nombre: 'Nombre'
505 } 510 }
506 ], 511 ],
507 titulo:'Búsqueda de cobradores' 512 titulo:'Búsqueda de cobradores'
508 }; 513 };
509 focaModalService.modal(parametrosModal).then( 514 focaModalService.modal(parametrosModal).then(
510 function(cobrador) { 515 function(cobrador) {
511 $scope.$broadcast('addCabecera', { 516 $scope.$broadcast('addCabecera', {
512 label: 'Cobrador:', 517 label: 'Cobrador:',
513 valor: cobrador.NomVen 518 valor: $filter('rellenarDigitos')(cobrador.CodVen) + ' - ' +
519 cobrador.NomVen
514 }); 520 });
515 $scope.cobranza.cobrador = cobrador; 521 $scope.cobranza.cobrador = cobrador;
516 }, function() { 522 }, function() {
517 523
518 } 524 }
519 ); 525 );
520 }; 526 };
521 527
522 $scope.getTotalDeuda = function() { 528 $scope.getTotalDeuda = function() {
523 var total = 0; 529 var total = 0;
524 for (var i = 0; i < $scope.facturaTabla.length; i++) { 530 for (var i = 0; i < $scope.facturaTabla.length; i++) {
525 total += $scope.facturaTabla[i].IPA; 531 total += $scope.facturaTabla[i].IPA;
526 } 532 }
527 return parseFloat(total.toFixed(2)); 533 return parseFloat(total.toFixed(2));
528 }; 534 };
529 535
530 $scope.getTotalCobrado = function() { 536 $scope.getTotalCobrado = function() {
531 var total = 0; 537 var total = 0;
532 for (var i = 0; i < $scope.cobrosTabla.length; i++) { 538 for (var i = 0; i < $scope.cobrosTabla.length; i++) {
533 total += $scope.cobrosTabla[i].importe; 539 total += $scope.cobrosTabla[i].importe;
534 } 540 }
535 return parseFloat(total.toFixed(2)); 541 return parseFloat(total.toFixed(2));
536 }; 542 };
537 543
538 $scope.getSubTotal = function() { 544 $scope.getSubTotal = function() {
539 if($scope.articuloACargar) { 545 if($scope.articuloACargar) {
540 return $scope.articuloACargar.precio * $scope.articuloACargar.cantidad; 546 return $scope.articuloACargar.precio * $scope.articuloACargar.cantidad;
541 } 547 }
542 }; 548 };
543 //Recibe aviso si el teclado está en uso 549 //Recibe aviso si el teclado está en uso
544 // $rootScope.$on('usarTeclado', function(event, data) { 550 // $rootScope.$on('usarTeclado', function(event, data) {
545 // if(data) { 551 // if(data) {
546 // $scope.mostrarTeclado = true; 552 // $scope.mostrarTeclado = true;
547 // return; 553 // return;
548 // } 554 // }
549 // $scope.mostrarTeclado = false; 555 // $scope.mostrarTeclado = false;
550 // }) 556 // })
551 $scope.selectFocus = function($event) { 557 $scope.selectFocus = function($event) {
552 //Si el teclado esta en uso no selecciona el valor 558 //Si el teclado esta en uso no selecciona el valor
553 // if($scope.mostrarTeclado) { 559 // if($scope.mostrarTeclado) {
554 // return; 560 // return;
555 // } 561 // }
556 $event.target.select(); 562 $event.target.select();
557 }; 563 };
558 564
559 $scope.salir = function() { 565 $scope.salir = function() {
560 $location.path('/'); 566 $location.path('/');
561 }; 567 };
562 568
563 $scope.parsearATexto = function(articulo) { 569 $scope.parsearATexto = function(articulo) {
564 articulo.cantidad = parseFloat(articulo.cantidad); 570 articulo.cantidad = parseFloat(articulo.cantidad);
565 articulo.precio = parseFloat(articulo.precio); 571 articulo.precio = parseFloat(articulo.precio);
566 }; 572 };
567 573
568 $scope.rellenar = function(relleno, longitud) { 574 $scope.rellenar = function(relleno, longitud) {
569 relleno = '' + relleno; 575 relleno = '' + relleno;
570 while (relleno.length < longitud) { 576 while (relleno.length < longitud) {
571 relleno = '0' + relleno; 577 relleno = '0' + relleno;
572 } 578 }
573 579
574 return relleno; 580 return relleno;
575 }; 581 };
576 582
577 $scope.quitarFactura = function(key) { 583 $scope.quitarFactura = function(key) {
578 $scope.facturaTabla.splice(key, 1); 584 $scope.facturaTabla.splice(key, 1);
579 }; 585 };
580 586
581 $scope.quitarCobro = function(key) { 587 $scope.quitarCobro = function(key) {
582 $scope.cobrosTabla.splice(key, 1); 588 $scope.cobrosTabla.splice(key, 1);
583 }; 589 };
584 590
585 function setearMonedaPorDefecto() { 591 function setearMonedaPorDefecto() {
586 var monedaPorDefecto; 592 var monedaPorDefecto;
587 //Trabajo con la cotización más reciente, por eso uso siempre la primera '[0]' 593 //Trabajo con la cotización más reciente, por eso uso siempre la primera '[0]'
588 focaCrearCobranzaService.getCotizacionByIdMoneda(1).then(function(res) { 594 focaCrearCobranzaService.getCotizacionByIdMoneda(1).then(function(res) {
589 monedaPorDefecto = res.data[0]; 595 monedaPorDefecto = res.data[0];
590 $scope.cobranza.moneda = monedaPorDefecto; 596 $scope.cobranza.moneda = monedaPorDefecto;
591 $scope.cobranza.cotizacion = monedaPorDefecto.cotizaciones[0]; 597 $scope.cobranza.cotizacion = monedaPorDefecto.cotizaciones[0];
592 }); 598 });
593 } 599 }
594 600
595 function obtenerNumeroComprobante() { 601 function obtenerNumeroComprobante() {
596 focaCrearCobranzaService.getNumeroRecibo().then( 602 focaCrearCobranzaService.getNumeroRecibo().then(
597 function(res) { 603 function(res) {
598 $scope.puntoVenta = $scope.rellenar(res.data.sucursal, 4); 604 $scope.puntoVenta = $scope.rellenar(res.data.sucursal, 4);
599 $scope.comprobante = $scope.rellenar(res.data.numeroRecibo, 8); 605 $scope.comprobante = $scope.rellenar(res.data.numeroRecibo, 8);
600 }, 606 },
601 function(err) { 607 function(err) {
602 focaModalService.alert('La terminal no esta configurada correctamente'); 608 focaModalService.alert('La terminal no esta configurada correctamente');
603 console.info(err); 609 console.info(err);
604 } 610 }
605 ); 611 );
606 } 612 }
607 613
608 function salir() { 614 function salir() {
609 var cobranza = { 615 var cobranza = {
610 moneda: $scope.cobranza.moneda, 616 moneda: $scope.cobranza.moneda,
611 cotizacion: $scope.cobranza.cotizacion 617 cotizacion: $scope.cobranza.cotizacion
612 }; 618 };
613 if(JSON.stringify($scope.cobranza) !== JSON.stringify(cobranza)) { 619 if(JSON.stringify($scope.cobranza) !== JSON.stringify(cobranza)) {
614 focaModalService 620 focaModalService
615 .confirm('¿Esta seguro de que desea salir? ' + 621 .confirm('¿Esta seguro de que desea salir? ' +
616 'Se perderán todos los datos cargados.') 622 'Se perderán todos los datos cargados.')
617 .then(function(data) { 623 .then(function(data) {
618 if(data) $location.path('/'); 624 if(data) $location.path('/');
619 }); 625 });
620 }else { 626 }else {
621 $location.path('/'); 627 $location.path('/');
622 } 628 }
623 } 629 }
624 obtenerNumeroComprobante(); 630 obtenerNumeroComprobante();
625 setearMonedaPorDefecto(); 631 setearMonedaPorDefecto();
626 } 632 }
627 ]); 633 ]);
628 634