Se arregla fallo al buscar dia de pago al generar los recibos da las Facturas (en los casos de establecer como dia de pago el 31 para que no fallen en los meses que son 30 dias)

git-svn-id: https://192.168.0.254/svn/Proyectos.Tecsitel_FactuGES2/trunk@836 0c75b7a4-871f-7646-8a2f-f78d34cc349f
This commit is contained in:
roberto 2009-01-12 18:40:25 +00:00
parent e938266017
commit 0ea1ccb0a4
2 changed files with 34 additions and 2 deletions

View File

@ -1099,6 +1099,7 @@ var
i: Integer; i: Integer;
ADiaVencimiento: Integer; ADiaVencimiento: Integer;
ADiasMas: Integer; ADiasMas: Integer;
BSemaforo: Boolean;
begin begin
if not Assigned(AFactura) then if not Assigned(AFactura) then
@ -1139,6 +1140,7 @@ begin
begin begin
AFechaVencimiento := AFactura.FECHA_FACTURA + AFormaPago.Plazos.NUM_DIAS; AFechaVencimiento := AFactura.FECHA_FACTURA + AFormaPago.Plazos.NUM_DIAS;
ADiasMas := 0; ADiasMas := 0;
BSemaforo := False;
if (AFactura.Cliente.VENCIMIENTO_FACTURAS_1 <> 0) if (AFactura.Cliente.VENCIMIENTO_FACTURAS_1 <> 0)
or (AFactura.Cliente.VENCIMIENTO_FACTURAS_2 <> 0) or (AFactura.Cliente.VENCIMIENTO_FACTURAS_2 <> 0)
or (AFactura.Cliente.VENCIMIENTO_FACTURAS_3 <> 0) then or (AFactura.Cliente.VENCIMIENTO_FACTURAS_3 <> 0) then
@ -1149,7 +1151,21 @@ begin
and (ADiaVencimiento <> AFactura.Cliente.VENCIMIENTO_FACTURAS_3) do and (ADiaVencimiento <> AFactura.Cliente.VENCIMIENTO_FACTURAS_3) do
begin begin
if ADiaVencimiento = DaysInMonth(AFechaVencimiento) then 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 else
Inc(ADiaVencimiento); Inc(ADiaVencimiento);
Inc(ADiasMas); Inc(ADiasMas);

View File

@ -909,6 +909,7 @@ var
i: Integer; i: Integer;
ADiaVencimiento: Integer; ADiaVencimiento: Integer;
ADiasMas: Integer; ADiasMas: Integer;
BSemaforo: Boolean;
begin begin
@ -949,6 +950,7 @@ begin
begin begin
AFechaVencimiento := AFactura.FECHA_FACTURA + AFormaPago.Plazos.NUM_DIAS; AFechaVencimiento := AFactura.FECHA_FACTURA + AFormaPago.Plazos.NUM_DIAS;
ADiasMas := 0; ADiasMas := 0;
BSemaforo := False;
if (AFactura.Proveedor.VENCIMIENTO_FACTURAS_1 <> 0) if (AFactura.Proveedor.VENCIMIENTO_FACTURAS_1 <> 0)
or (AFactura.Proveedor.VENCIMIENTO_FACTURAS_2 <> 0) or (AFactura.Proveedor.VENCIMIENTO_FACTURAS_2 <> 0)
or (AFactura.Proveedor.VENCIMIENTO_FACTURAS_3 <> 0) then or (AFactura.Proveedor.VENCIMIENTO_FACTURAS_3 <> 0) then
@ -959,7 +961,21 @@ begin
and (ADiaVencimiento <> AFactura.Proveedor.VENCIMIENTO_FACTURAS_3) do and (ADiaVencimiento <> AFactura.Proveedor.VENCIMIENTO_FACTURAS_3) do
begin begin
if ADiaVencimiento = DaysInMonth(AFechaVencimiento) then 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 else
Inc(ADiaVencimiento); Inc(ADiaVencimiento);
Inc(ADiasMas); Inc(ADiasMas);