Nov 16, 2012

Validation on FromDate and ToDate


public boolean validateWrite()
{
    boolean ret;
    SS_CategoryTradeAgreement      categoryTradeAgreement;
    ;

    ret = super();

    if(this.ToDate < this.FromDate)
        ret = checkFailed("Todate should be greater than or equal to Fromdate");

    while select categoryTradeAgreement where  categoryTradeAgreement.Category == this.Category
                                            && categoryTradeAgreement.Vendor == this.Vendor
                                            && categoryTradeAgreement.RecId != this.RecId
                                            && (( categoryTradeAgreement.FromDate <= this.FromDate && categoryTradeAgreement.ToDate >= this.FromDate)
                                                       ||(categoryTradeAgreement.FromDate <= this.ToDate   && categoryTradeAgreement.ToDate >= this.ToDate))
    {
    ret = checkfailed(strfmt("Duplicate Entries are not allowed - Same record is there for Vendor - %1 with Category %2 of period %3 - %4" ,
                         categoryTradeAgreement.Vendor,categoryTradeAgreement.Category,categoryTradeAgreement.FromDate,categoryTradeAgreement.ToDate));
    break;
    }


    return ret;
}

Join by Query

static void CustTableSales(Args _args)
{
    Query                             query;
    QueryRun                       queryrun;
    QueryBuildDataSource     qbds1;
    QueryBuildDataSource     qbds2;
    QueryBuildRange             qbr1;
    QueryBuildRange             qbr2;
    CustTable                        custTable;
    ;
    query     = new query();
    qbds1    =   query.addDataSource(tablenum(CustTable));
    qbds1.addSortField(fieldnum(custTable,AccountNum),Sortorder::Descending);
    qbr1    = qbds1.addRange(fieldnum(custTable,custGroup));
    qbr1.value(queryvalue('10'));

    qbr2     =  qbds1.addRange(fieldnum(custTable,Blocked));
    qbr2.value(queryvalue(CustVendorBlocked::No));
    qbds2   = qbds1.addDataSource(tablenum(SalesTable));
    qbds2.relations(false);
    qbds2.joinMode(joinmode::ExistsJoin);
    qbds2.addLink(fieldnum(CustTable,AccountNum),fieldnum(SalesTable,CustAccount));
    queryrun    = new queryrun(query);

    while(queryrun.next())
    {
    custTable   = queryrun.get(tablenum(custTable));
    info(strfmt("%1 - %2",custtable.AccountNum,custTable.Name));
    }
}

Oct 30, 2012

How to get caller form name ?


This is an example for enabling and disabling of button1 and button2  on basis of caller form

Public void buttonEnable()
{
    UserGroupList           userGroupList,userGroupList1;
    ProjParameters          projParameters;
    formRun                    caller;
    ;
    caller = element.args().caller(); // caller form

    if(caller.args().name() == formStr(ProjTable)) // caller form name
    {
        projParameters = ProjParameters::find();
        
       // Checking that the CurUserId() is there of one particular group or not

        Select userGroupList where userGroupList.UserId == curUserId()
                                   && userGroupList.groupId == projParameters.SalesAcceptanceChangeOrder;
        if(userGroupList)
        {
            Button1.enabled(true);
        }
        else
        {
            Button1.enabled(false);
        }
        Select userGroupList1 where userGroupList1.UserId == curUserId()
                                   && userGroupList1.groupId == projParameters.CommercialAcceptanceChangeOrder;
        if(userGroupList1)
        {
            Button2.enabled(true);
        }
        else
        {
            Button2.enabled(false);
        }
    }
    if(caller.args().name() == formStr(ProjQuoteTable))
    {
        projParameters = ProjParameters::find();

        Select userGroupList where userGroupList.UserId == curUserId()
                                   && userGroupList.groupId == projParameters.SalesAcceptanceQtn;
        if(userGroupList)
        {
            Button1.enabled(true);
        }
        else
        {
            Button1.enabled(false);
        }
        Select userGroupList1 where userGroupList1.UserId == curUserId()
                                   && userGroupList1.groupId == projParameters.CommercialAcceptanceQtn;
        if(userGroupList1)
        {
            Button2.enabled(true);
        }
        else
        {
            Button2.enabled(false);
        }
    }

}