Witam kolegów.
Mózg mi wysechł od myślenia i kombinowania jak to zrobić. Mianowicie chodzi o stworzenie procedury sprawdzającej poprawność zależności pomiędzy datami sprzedaży towaru a wystawienia faktury zgodnie z przepisami. Stworzyłem coś takiego i klops. Działa jak chce. Wiem, że nie ma warunku sprawdzenia ostatniego wpisu z rejestru sprzedaży, ale mimo tego żyje to własnym życiem. Ktoś pomoże?
Treść procedury
procedure TForm2.SprawdzDatySprzedazyIFaktury(Sender : TObject);
var
MinDataFaktury, MaxDataFaktury: TDate;
MinDataSprzedazy, MaxDataSprzedazy: TDate;
begin
// Obliczenia zależności daty faktury względem daty sprzedaży
MinDataFaktury := DateTimePicker1.Date - 60; // Faktura maksymalnie 60 dni przed sprzedażą
MaxDataFaktury := EndOfTheMonth(DateTimePicker1.Date) + 15; // Faktura maksymalnie do 15. dnia następnego miesiąca
// Obliczenia zależności daty sprzedaży względem daty faktury
MinDataSprzedazy := DateTimePicker2.Date; // Sprzedaż najwcześniej w dniu wystawienia faktury
MaxDataSprzedazy := DateTimePicker2.Date + 60; // Sprzedaż maksymalnie 60 dni po wystawieniu faktury
// Sprawdzanie, czy DataFaktury mieści się w zakresie określonym przez datę sprzedaży
if (DateTimePicker1.Date < MinDataFaktury) then
begin
ShowMessage('Data wystawienia faktury jest za wczesna. Możliwa data faktury to minimum ' +
DateToStr(MinDataFaktury) + ' (do 60 dni przed sprzedażą).');
DateTimePicker2.Date := MinDataFaktury;
Exit;
end
else if (DateTimePicker2.Date > MaxDataFaktury) then
begin
ShowMessage('Data wystawienia faktury jest za późna. Maksymalna data faktury to ' +
DateToStr(MaxDataFaktury) + ' (do 15. dnia następnego miesiąca po sprzedaży).');
DateTimePicker2.Date := MaxDataFaktury;
Exit;
end;
// Sprawdzanie, czy DataSprzedazy mieści się w zakresie określonym przez datę faktury
if (DateTimePicker1.Date < MinDataSprzedazy) then
begin
ShowMessage('Data sprzedaży jest za wczesna. Musi być co najmniej równa dacie faktury: ' +
DateToStr(MinDataSprzedazy) + '.');
DateTimePicker1.Date := MinDataSprzedazy;
Exit;
end
else if (DateTimePicker1.Date > MaxDataSprzedazy) then
begin
ShowMessage('Data sprzedaży jest za późna. Możliwa data sprzedaży to maksimum ' +
DateToStr(MaxDataSprzedazy) + ' (do 60 dni po dacie faktury).');
DateTimePicker1.Date := MaxDataSprzedazy;
Exit;
end;
Przepraszam, za bałagan w kodzie o wszechobecne okna z wiadomościami, ale już sam nie wiem jak to ugryźć.
Z góry dzięki za rozwiązania.