19 Eylül 2018 Çarşamba

Dynamics Ax displayOption Kulanımı

displayOption


displayOption formdaki satırları istenilen sarta göre renklendirir. kodu datasource'unda bulunan tablonun displayOption methodsuna yazarak bu işlemi yapıyorsunuz. Aşağıdaki örnekte tarihle ilgili bir şart yazıldı ve buna göre bir renkendirme tercih edildi.
public void displayOption(Common _common, FormRowDisplayOption _options)
{
    PurchLine              purchLineLocal;

    int backColor = WinAPI::RGB2int(161,161,255); // buradaki renkleri kendinize göre ayarlayabilirsiniz.
    int textColor = WinAPI::RGB2int(255, 255, 255);
    int backColorRed = WinAPI::RGB2int(255, 50, 50);
    int textColorWhite = WinAPI::RGB2int(255, 255, 255);
    ;

    purchLineLocal = _common;

         if(EtgExImpPurchLineTrans::findLastETA(purchLineLocal.InventTransId) > purchLineLocal.DeliveryDate)
        {
            _options.backColor(backColorRed);
            _options.textColor(textColorWhite);
        }

        else
        {
            _options.clearBackColor();
            _options.clearTextColor();
        }

    super(_common,_options);
}
Renk çeşitlerini aşağıdaki siteden inceleyebilirsiniz.
Renk çeşitleri
 
 
Farklı bir kullanım örneği;
 
public void displayOption(Common _common, FormRowDisplayOption _options)
{
    ETGCollateralTable   collateralTableLocal;
    ;
    collateralTableLocal = _common;
 if(collateralTableLocal.DueDate && (collateralTableLocal.DueDate - systemDateGet()) <= 7)
    {
        _options.backColor(backColor);
        _options.textColor(textColor);
    }
    else
    {
        _options.clearBackColor();
        _options.clearTextColor();
    }

    super(_common,_options);
}
 

SQL case when kullanımı

Aslında yapmak istediğimiz aşağıdaki tarihlere göre excelde bir sutun açıp karşısına uygun yazıyı yazdırmak.






CASE WHEN DATEPHYSICAL BETWEEN '1900 - 01 - 01 00:00:00' AND '1900 - 01 - 01  00:00:00' THEN 'BO' WHEN DATEPHYSICAL BETWEEN '1900 - 01 - 01 00:00:00' AND '2018 - 05 - 01  00:00:00' THEN 'DO' WHEN DATEPHYSICAL BETWEEN '2018 - 05 - 01 00:00:00' AND '2054 - 01 - 01  00:00:00' THEN 'OD' END

Lookup'ta tarih filtresi vermek

Lookup QueryBuildRange


TransDate startDate, EndDate; 

startDate = mkDate(1,9,2017);

endtDate = mkDate(1,10,2017);

queryBuildRange.value(queryRange(StartDate, EndDate));

(ya da)

queryBuildRange.value(queryRange(mkDate(1,9,2017), mkDate(1,10,2017)));

Başka bir örnek;
public void lookup()
{
    Query query = new Query();
    QueryBuildDataSource queryBuildDataSource;
    QueryBuildRange queryBuildRange;
     QueryBuildRange queryBuildRange2;
     QueryBuildRange queryBuildRange3;

    SysTableLookup sysTableLookup = SysTableLookup::newParameters(tableNum(SalesTable), this);

    if(DateFrom.dateValue() && DateTo.dateValue())
    {
        sysTableLookup.addLookupfield(fieldNum(SalesTable, CustAccount));

        queryBuildDataSource = query.addDataSource(tableNum(SalesTable));

        queryBuildDataSource.addGroupByField(fieldNum(SalesTable, CustAccount));

        queryBuildRange = queryBuildDataSource.addRange(fieldNum(SalesTable, createdDateTime));
        queryBuildRange.value(SysQuery::range(this.dboConvertDateToDateTime(DateFrom.DateValue()), dateNull()));

        queryBuildRange = queryBuildDataSource.addRange(fieldNum(SalesTable, createdDateTime));
        queryBuildRange.value(SysQuery::range(dateNull(), this.dboConvertDateToDateTime(DateTo.dateValue())));

        queryBuildRange = queryBuildDataSource.addRange(fieldNum(SalesTable, InventSiteId));
        queryBuildRange.value(editInventSiteId.text());

        sysTableLookup.parmQuery(query);

        sysTableLookup.performFormLookup();

    }

Total ciro

static void MAA_SalesTableTotal(Args _args) { SalesTable SalesTable; utcDateTime dateTime; dateTime ...