Commit 4e3e2e1f26c321b7c47877c39dedd850a79645a9

Authored by Nicolás Guarnieri
Exists in master

Merge branch 'master' into 'master'

Master

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