Get valid

User avatar
Otto
Posts: 4470
Joined: Fri Oct 07, 2005 7:07 pm
Contact:

Re: Get valid

Post by Otto »

Hello James,

>available rooms are added to an array

I also need the exact dates when the room is available.
Sometimes guests have to make a room transfer. Saturday to Wednesday in room 100 the rest of the week in 1010, etc. .
Best regards,
Otto
********************************************************************
mod harbour - Vamos a la conquista de la Web
modharbour.org

********************************************************************
User avatar
James Bott
Posts: 4654
Joined: Fri Nov 18, 2005 4:52 pm
Location: San Diego, California, USA
Contact:

Re: Get valid

Post by James Bott »

Otto,

Ah, yes, I also did a routine for that. First it looks for available rooms for the entire date range, if not found, then in looks for the next optimal ranges in two rooms (e.g. 4 days in one room and 1 day in another, then 3 days in one, 2 in another). If two rooms can't be found then it looks for 3 rooms. Then all the choices can be put into an array for browsing by the user. The user could then select any senario and all the needed reservations would be posted automatically. Quite complicated.

Back to your original example dialog, in many cases a single room number field would not be sufficent.

James
demont frank
Posts: 167
Joined: Thu Mar 22, 2007 11:24 am

Re: Get valid

Post by demont frank »

Otto wrote:Hello James,
thank you for your answer.
The valid is on the Zimmer-Nr: - field (engl. Room number).
If the room is occupied the valid returns false and you can’t navigate back to change the
“Anreise” or “Abreise” (arrival/departure) .
Best regards,
Otto
Image
Otto,

I have a solution (see code) .

Code: Select all

#include "FiveWin.ch"
# include "common.ch"

function Main()
   LOCAL oDlg, oGet[3]
   LOCAL cCad := "Testing    "
   LOCAL nNum := 0
   LOCAL dDat := Date(), lOk
     Local LastGet
   Set century On
   Set Date Ansi
   Set Date format "mm/dd/yyyy"

   SET _3DLOOK ON

   DEFINE DIALOG oDlg TITLE "TGet from " + FWDESCRIPTION

   @ 1,    2 SAY "Text..:" OF oDlg
   @ 1,    6 GET oGet[1] VAR cCad OF oDlg SIZE 60, 10 COLOR "W/G" PICTURE "@K"
   @ 1.8,  2 SAY "Number:" OF oDlg
   @ 2,    6 GET oGet[2] VAR nNum OF oDlg SIZE 60, 10 PICTURE "9999999.99"
   @ 2.6,  2 SAY "Date:" OF oDlg
   @ 3,    6 GET oGet[3] VAR dDat PICTURE "@E" OF oDlg SIZE 60, 10 VALID (lOk .OR. ! EMPTY(dDat))
   @ 3,    7 BUTTON "&Ok" OF oDlg SIZE 30, 12 ACTION oDlg:End()
   @ 3,   16 BUTTON "&Cancel" SIZE 30, 12 OF oDlg ACTION oDlg:End() CANCEL
     oGet[1]:bGotFocus := {||lOk := Test(oDlg,oGet[1],Lastget),Lastget:=oGet[1]}
     oGet[2]:bGotFocus := {||lOk := Test(oDlg,oGet[2],Lastget),Lastget:=oGet[2]}
     oGet[3]:bGotFocus := {||Test(oDlg,oGet[3],Lastget),Lastget:=oGet[3]}
   ACTIVATE DIALOG oDlg CENTERED ON INIT LastGet:= oGet[1]

return nil

FUNC Test(oDlg,oGet,Lastget)
LOCAL Obj , i , j , k

FOR EACH Obj IN oDlg:aControls
    i := Hb_EnumIndex()
    IF Obj==oGet
        j := i
    END
    IF Obj==Lastget
        k := i
    END
NEXT
IF k == 6  .AND. j < k       // or  ASCAN({2,4},j) > 0
    RETURN .T.
END
RETURN  .F. //(k<=j)

 
User avatar
Otto
Posts: 4470
Joined: Fri Oct 07, 2005 7:07 pm
Contact:

Re: Get valid

Post by Otto »

Thank you Frank.
Your sample code is working well.
After inserting some logfile calls and studying of your code I understand your code. Very sophisticated. I will try to implement your logic into my own code.
Thanks again for your valuable help.
Best regards,
Otto
********************************************************************
mod harbour - Vamos a la conquista de la Web
modharbour.org

********************************************************************
demont frank
Posts: 167
Joined: Thu Mar 22, 2007 11:24 am

Re: Get valid

Post by demont frank »

Otto,

I unterstood : When the user has selected a non available room , the user must have the possibilty to change the period. But when the user navigates to the periode dates , we have to check the availbilty from the room again. If not , which action ? . I think that a better aproach is to disable the OK button till the room is free in the choosen period.

Frank
User avatar
Otto
Posts: 4470
Joined: Fri Oct 07, 2005 7:07 pm
Contact:

Re: Get valid

Post by Otto »

Hello Frank,
Implementing your code will do the job. My input screen has much more controls as I posted for demonstrating my problem.
I have a OK = SAVE and a CANCEL button.

Code: Select all

REDEFINE BUTTON oBtnEnd ID 2 OF oDlg ACTION (oDlg:end()) CANCEL
If the popup screen does not show any vacancies the only way to go is to cancel the booking.
Thank you again for your help.
Best regards,
Otto
********************************************************************
mod harbour - Vamos a la conquista de la Web
modharbour.org

********************************************************************
Post Reply