/*
 * Author       : zchelp
 * Generated on : 24-Nov-2009 13:28:59
 * Version      : 3.0
 */
application "Paid Time Off"
{
    type = public
    date format = "dd-MMM-yyyy"
    time zone = "America/Los_Angeles"
    section Home
    {
        form  Employee_form
        {
            displayname  =  "Employee form"
            
            Name
            (
                type  =  text
            )

            EmpNo
            (
                type  =  number
                width  =  20
            )

            DaysEligible
            (
                type  =  decimal
                width  =  20
            )

            actions
            {
                on add
                {
                    Submit
                    (
                        type  =  submit
                        displayname  =  "Submit"
                    )
                    Reset
                    (
                        type  =  reset
                        displayname  =  "Reset"
                    )
                }
                on edit
                {
                    Update
                    (
                        type  =  submit
                        displayname  =  "Update"
                    )
                    Cancel
                    (
                        type  =  cancel
                        displayname  =  "Cancel"
                    )
                }
            }
        }

        list  Employee_form_View
        {
            displayname = "Employee form  View"
            show  all  rows  from  Employee_form 
            (
                Name
                EmpNo
                DaysEligible
            )
            options
            (
                display rows = 100
            )
        }

        form  TimeOff
        {
            
            Emp_No
            (
                type  =  picklist
                values  =  Employee_form.EmpNo
            )

            Start_Date
            (
                displayname  =  "Start Date"
                type  =  datetime
            )

            End_Date
            (
                displayname  =  "End Date"
                type  =  datetime
            )

            days
            (
                type  =  formula
                value  =  (((End_Date - Start_Date)  /  (1000  *  60  *  60  *  24))).toLong()
            )

            temp
            (
                type  =  decimal
                width  =  20
            )

            actions
            {
                on add
                {
                    on load
                    {
                        hide temp;
                        disable Start_Date;
                        input.Start_Date = zoho.currenttime;
                    }
                    Submit
                    (
                        type  =  submit
                        displayname  =  "Submit"
                        on validate
                        {
                            r  =  Employee_form  [EmpNo == input.Emp_No];
                            if ((r.DaysEligible  -  input.days)  <=  0)
                            {
                                alert "Balance leave available is only" + r.DaysEligible + " Leave availed is" + input.days;
                                cancel submit;
                            }
                        }
                        on success
                        {
                            r1  =  Employee_form  [EmpNo == input.Emp_No];
                            r1.DaysEligible = (r1.DaysEligible  -  input.days);
                        }
                    )
                    Reset
                    (
                        type  =  reset
                        displayname  =  "Reset"
                    )
                }
                on edit
                {
                    on load
                    {
                        hide temp;
                    }
                    Update
                    (
                        type  =  submit
                        displayname  =  "Update"
                        on validate
                        {
                            input.temp = old.days;
                            r2  =  Employee_form  [EmpNo == input.Emp_No];
                            if ((r2.DaysEligible  +  input.temp  -  input.days)  <=  0)
                            {
                                alert "Balance leave available is only" + (r2.DaysEligible  +  input.temp) + " Leave availed is" + input.days;
                                cancel submit;
                            }
                        }
                        on success
                        {
                            r3  =  Employee_form  [EmpNo == input.Emp_No];
                            r3.DaysEligible = (r3.DaysEligible  +  input.temp);
                            r3.DaysEligible = (r3.DaysEligible  -  input.days);
                        }
                    )
                    Cancel
                    (
                        type  =  cancel
                        displayname  =  "Cancel"
                    )
                }
            }
        }

        list  TimeOff_View
        {
            displayname = "TimeOff View"
            show  all  rows  from  TimeOff 
            (
                Start_Date as "Start Date"
                End_Date as "End Date"
                Emp_No
                days
            )
            filters 
            (
                Emp_No
            )
            options
            (
                display rows = 100
            )
        }

    }

}
