Commit 1a18026adceaef9afb9cca8d8c98a1efe840d0f9

Authored by Nicolás Guarnieri
1 parent 4e3e2e1f26
Exists in master

mejora inicializacion y salir

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