Commit 2bc44e6eae2ab387655c295ed124f84a1e37f385

Authored by Nicolás Guarnieri
Exists in master

Merge branch 'master' into 'master'

Master(efernandez)

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