From 96c436f1d9953cc9f09674ce4e56f201dc424b8a Mon Sep 17 00:00:00 2001 From: roberto Date: Mon, 12 Jan 2009 18:58:14 +0000 Subject: [PATCH] =?UTF-8?q?SE=20arregla=20la=20logica=20de=20asignar=20fec?= =?UTF-8?q?has=20de=20vencimiento=20a=20los=20recibos=20de=20la=20factura?= =?UTF-8?q?=20segun=20los=20dias=20de=20pago=20asignados=20al=20cliente=20?= =?UTF-8?q?(por=20ejemplo=20si=20se=20le=20asigna=20el=20dia=2031=20no=20d?= =?UTF-8?q?ebe=20fallar=20cuando=20el=20mes=20solo=20tenga=2030=20d=C3=ADa?= =?UTF-8?q?s=20,=20en=20tal=20caso=20hemos=20optado=20por=20no=20tener=20e?= =?UTF-8?q?n=20cuenta=20los=20d=C3=ADas=20de=20pago=20para=20establecer=20?= =?UTF-8?q?la=20fecha=20de=20vencimiento=20del=20recibo?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: https://192.168.0.254/svn/Proyectos.LuisLeon_FactuGES/trunk@308 c93665c3-c93d-084d-9b98-7d5f4a9c3376 --- .../Controller/uFacturasClienteController.pas | 18 +++++++++++++++++- .../uFacturasProveedorController.pas | 18 +++++++++++++++++- 2 files changed, 34 insertions(+), 2 deletions(-) diff --git a/Source/Modulos/Facturas de cliente/Controller/uFacturasClienteController.pas b/Source/Modulos/Facturas de cliente/Controller/uFacturasClienteController.pas index d580204f..5afd29ca 100644 --- a/Source/Modulos/Facturas de cliente/Controller/uFacturasClienteController.pas +++ b/Source/Modulos/Facturas de cliente/Controller/uFacturasClienteController.pas @@ -1218,6 +1218,7 @@ var i: Integer; ADiaVencimiento: Integer; ADiasMas: Integer; + BSemaforo: Boolean; begin if not Assigned(AFactura) then @@ -1253,6 +1254,7 @@ begin AFechaVencimiento := AFactura.FECHA_FACTURA + AFormaPago.Plazos.NUM_DIAS; ADiasMas := 0; + BSemaforo := False; if (AFactura.Cliente.VENCIMIENTO_FACTURAS_1 <> 0) or (AFactura.Cliente.VENCIMIENTO_FACTURAS_2 <> 0) or (AFactura.Cliente.VENCIMIENTO_FACTURAS_3 <> 0) then @@ -1263,7 +1265,21 @@ begin and (ADiaVencimiento <> AFactura.Cliente.VENCIMIENTO_FACTURAS_3) do begin if ADiaVencimiento = DaysInMonth(AFechaVencimiento) then - ADiaVencimiento := 1 + begin + ADiaVencimiento := 1; + + //Controlamos con una variable semaforo que no nos quedemos en un bucle infinito + //intentando encontrar el dia de pago establecido para el cliente (es el caso de tener + //asignado el dia de pago 30 y llegar febrero en el que no se encuentra dicho dia, o + //tener como dia de pago los días 31 y en el caso de meses de 30 dias no encontrarlo. + if BSemaforo then + begin + ADiasMas := 0; + Break + end + else + BSemaforo := True; + end else Inc(ADiaVencimiento); Inc(ADiasMas); diff --git a/Source/Modulos/Facturas de proveedor/Controller/uFacturasProveedorController.pas b/Source/Modulos/Facturas de proveedor/Controller/uFacturasProveedorController.pas index 1a4c64fc..b87415ec 100644 --- a/Source/Modulos/Facturas de proveedor/Controller/uFacturasProveedorController.pas +++ b/Source/Modulos/Facturas de proveedor/Controller/uFacturasProveedorController.pas @@ -1222,6 +1222,7 @@ var i: Integer; ADiaVencimiento: Integer; ADiasMas: Integer; + BSemaforo: Boolean; begin @@ -1257,6 +1258,7 @@ begin AFechaVencimiento := AFactura.FECHA_FACTURA + AFormaPago.Plazos.NUM_DIAS; ADiasMas := 0; + BSemaforo := False; if (AFactura.Proveedor.VENCIMIENTO_FACTURAS_1 <> 0) or (AFactura.Proveedor.VENCIMIENTO_FACTURAS_2 <> 0) or (AFactura.Proveedor.VENCIMIENTO_FACTURAS_3 <> 0) then @@ -1267,7 +1269,21 @@ begin and (ADiaVencimiento <> AFactura.Proveedor.VENCIMIENTO_FACTURAS_3) do begin if ADiaVencimiento = DaysInMonth(AFechaVencimiento) then - ADiaVencimiento := 1 + begin + ADiaVencimiento := 1; + + //Controlamos con una variable semaforo que no nos quedemos en un bucle infinito + //intentando encontrar el dia de pago establecido para el cliente (es el caso de tener + //asignado el dia de pago 30 y llegar febrero en el que no se encuentra dicho dia, o + //tener como dia de pago los días 31 y en el caso de meses de 30 dias no encontrarlo. + if BSemaforo then + begin + ADiasMas := 0; + Break + end + else + BSemaforo := True; + end else Inc(ADiaVencimiento); Inc(ADiasMas);