zz
Rejestracja: 2008-03-10, 14:01 Posty: 593
|
Wyciągnięcie dnia i miesiąca z daty dokumentu
Witam.
Problem jak w temacie (muszę ograniczyć możliwość wystawiania dokumentów do kilku dni wstecz).
Jak wyciągnąć dzień i miesiąc z daty (bieżącej i wystawianego dokumentu)?
_________________ zz
|
Autor |
Wiadomość |
Mix-soft.pl
|
|
|
wrob
Ekspert
Rejestracja: 2008-04-18, 18:52 Posty: 5169 Pomógł: 59
|
A w jakim programie? :)
|
2009-11-19, 15:07 |
|
|
zz
Rejestracja: 2008-03-10, 14:01 Posty: 593
|
HMF 2010
sorry, nie napisałem
_________________ zz
|
2009-11-19, 15:08 |
|
|
rafal
Ekspert
Rejestracja: 2007-11-16, 15:08 Posty: 4000 Pomógł: 448
|
Kod: //"procsp.sc","Procedury dokumentu sprzedaży","\Procedury\",0,1.0.0,SYSTEM
dispatch msg,xMessages xMessages = xFactory.NewObject("XMessage")
int Sub OnBeforeInsert(long lId) dispatch xDk = xFactory.NewObject("BDokumentSp") xDk.Load((using "id=%l", lId))
date dateDok date dateDzis
dateDzis.Today() dateDok.FromStr(xDk.DataWystawienia) if dateDok.DaysUntil(dateDzis) >= 3 then msg = xMessages.AddNew() msg.tresc = "Data dokumentu odbiega w czasie więcej niż 3 dni." msg.status = 0x01 ShowINFOs("Kontrola poprawności danych dokumentu", "Dane dokumentu mogą być niepoprawne.", 255, 0, xMessages) OnBeforeInsert = -6000 else OnBeforeInsert = 0 endif
EndSub
Przy próbie wystawienia dokumentu powinien pojawić się komunikat:
[center] [/center]
|
2009-11-19, 21:26 |
|
|
zz
Rejestracja: 2008-03-10, 14:01 Posty: 593
|
Wielkie dzięki.
Ale precyzując pytanie:
potrzebuję tego mechanizmu, żeby zablokować wystawianie dokumentów po 5-tym dniu miesiąca z datą z poprzedniego miesiąca.
Czyli np. 20-go można byłoby wystawić dokument z datą 5-go, ale 6-go żeby już nie można było wystawić dok. z poprzedniego miesiąca.
_________________ zz
|
2009-11-23, 09:09 |
|
|
krzysiek
Ekspert
Rejestracja: 2007-12-11, 23:18 Posty: 1942 Pomógł: 49
|
Doprecyzowanie ok ale ten przykład... ? chcesz by 5-go w miesiącu X mozna było wystawić dokument z datą w miesiącu X-1 a 6-go juz nie.
W tym co wkleił RAFAŁ masz całą gotową procedurę, wystarczy zmienić tylko warunek w niej tak by pasował do tego co chcesz.
|
2009-11-23, 09:34 |
|
|
zz
Rejestracja: 2008-03-10, 14:01 Posty: 593
|
OK, mam sposób na sprawdzenie ilości dni wstecz (tak jak błędnie napisałem w temacie).
Ale jak mam sprawdzić miesiąc?
Próbuję analogicznie jak DaysUntil (czyli MonthsUntil) i nic
_________________ zz
|
2009-11-24, 09:52 |
|
|
wrob
Ekspert
Rejestracja: 2008-04-18, 18:52 Posty: 5169 Pomógł: 59
|
MontUntil - to nie ma - ale pokombinuj mozesz zawsze rozbic date jako string i pobrac z niej miesiac (czy tez rok) - a dalej to juz kwestia techniki :)
|
2009-11-24, 12:02 |
|
|
Notos
Rejestracja: 2008-09-23, 08:30 Posty: 149 Pomógł: 2
|
Można zrobić na dwóch datach SetLastDayOfMonth() i później Compare()
|
2009-11-24, 13:06 |
|
|
Jarek75
Ekspert
Rejestracja: 2009-03-07, 11:13 Posty: 597 Pomógł: 34
|
W helpie chyba rzeczywiście brakuje tej informacji. Spróbuj GetYear(), GetMonth(), GetDay(). Nie wiem tylko, czy trzeba użyć rekordu Date czy DateExt.
|
2009-11-27, 10:25 |
|
|
zz
Rejestracja: 2008-03-10, 14:01 Posty: 593
|
Trochę czasu minęło, ale dopiero teraz chcoałem zastosować ten mechanizm i mam dwa problemy:
1. dodają mi się komunikaty (jak w zał)
2. jeśli w procedurze dok. sprzedaży odwołam wywołanie tego sprawdzania, i tak ono działa do czasu przelogowania
Jak to poprawić?
Załączniki:
komunikaty.JPG [ 35.02 KiB | Przeglądany 4405 razy ]
_________________ zz
|
2010-04-29, 14:45 |
|
|
rafal
Ekspert
Rejestracja: 2007-11-16, 15:08 Posty: 4000 Pomógł: 448
|
|
2010-04-29, 15:46 |
|
|