Se arregla la logica al establecer la fecha de vencimiento de los recibos segun los dias de pago del cliente para que si se asigna el dia de pago 31 no falle en el caso de meses que tengan solo 30 dias

git-svn-id: https://192.168.0.254/svn/Proyectos.Acana_FactuGES2/trunk@387 f4e31baf-9722-1c47-927c-6f952f962d4b
This commit is contained in:
roberto 2009-01-12 18:55:41 +00:00
parent 4b77aae684
commit 9fcd4dba91
2 changed files with 34 additions and 2 deletions

View File

@ -1140,6 +1140,7 @@ var
i: Integer;
ADiaVencimiento: Integer;
ADiasMas: Integer;
BSemaforo: Boolean;
begin
if not Assigned(AFactura) then
@ -1195,6 +1196,7 @@ begin
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
@ -1205,7 +1207,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);

View File

@ -1124,6 +1124,7 @@ var
i: Integer;
ADiaVencimiento: Integer;
ADiasMas: Integer;
BSemaforo: Boolean;
begin
if not Assigned(AFactura) then
@ -1172,6 +1173,7 @@ begin
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
@ -1182,7 +1184,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);