Dienstag, 18. November 2014

AX2012
Klasse mit Query im Dialog


CLASS syncVendDlvTime Extends   RunBaseBatch
   
    METHODS
      SOURCE classDeclaration
        public class syncVendDlvTime extends RunBaseBatch
        {
            DialogRunbase   dialog;
       
            DialogField     dialogLocationspezific; //STandortspezifische Auftragseinstellungen
            DialogField     dialogItem; //Artikeldeckung
       
            NoYesId          Locationspecific;
            NoYesId         Item;
       
            QueryRun        QueryRun;
            Query                   query;
       
            DEFINE.CurrentVersion(1)
            LOCALMACRO.CurrentList
                Locationspecific,
                Item
            ENDMACRO
        }
      ENDSOURCE
      SOURCE dialog
        protected Object dialog()
        {
            Object ret;
            ;
            dialog = super();
            //ret = super();
       
            dialogLocationspezific = dialog.addFieldValue(extendedTypeStr(NoYesId),Locationspecific,"");
            dialogItem = dialog.addFieldValue(extendedTypeStr(NoYesId),Item,"");
            return dialog;
        }
      ENDSOURCE
      SOURCE getFromDialog
        public boolean getFromDialog()
        {
            boolean ret;
            ;
       
            ret = super();
            Locationspecific = dialogLocationspezific.value();
            Item = dialogItem.value();
       
            return ret;
        }
      ENDSOURCE
      SOURCE initQuery
    
        protected void initQuery()
        {          
            QueryBuildDataSource    qbds2;
       
            QueryBuildRange         qr_Item;
            QueryBuildRange         qr_vend;
            ;
            query = new Query();
            qbds2 = query.addDataSource(tableNum(VendTable));

            qbds2 = qbds2.addDataSource(tableNum(InventTable));
            qbds2.relations(false);
            qbds2.addLink(fieldNum(VendTable,AccountNum),fieldNum(InventTable,PrimaryVEndorId));
            queryRun = new QueryRun(query);
        }
      ENDSOURCE
      SOURCE queryRun
   
        QueryRun queryRun()
        {
            queryRun = new QueryRun(query);
            return queryRun;
        }
      ENDSOURCE
      SOURCE run
        public void run()
        {
            InventTable InventTable;
            VendTable   VendTable;
            InventItemPurchSetup    InventItemPurchSetup;
            ReqItemTable        ReqItemTable;
            ;
            ttsBegin;
            while(QueryRun.next())
            {
                InventTAble = QueryRun.get(tableNum(InventTable));
                VendTable = QueryRun.get(tableNum(VendTable));
       
                //Sync Standardauftragseinstellungen
                inventItemPurchSetup = InventItemPurchSetup::findDefault(InventTable.ItemId,true);
                InventItemPurchSetup.LeadTime = VendTable.DlvdaysPurch;
                InventItemPurchSetup.CalendarDays = VendTable.Workingdays;
                InventItemPurchSetup.update();
                //sync STandortspezifische Auftragseinstellungen
                if(Locationspecific == NoYes::Yes)
                {
                    while select forUpdate * from InventItemPurchSetup
                        where InventItemPurchSetup.ItemId == InventTable.ItemId
                    {
                        InventItemPurchSetup.LeadTime = VendTable.DlvdaysPurch;
                        InventItemPurchSetup.CalendarDays = VendTable.Workingdays;
                        InventItemPurchSetup.update();
                    }
                }
                //Sync Artikeldeckung
                if(Item == NoYes::Yes)
                {
                    while select forupdate * from ReqItemTable
                        where ReqItemTable.ItemCovFieldsActive == NoYes::Yes
                        && ReqItemTable.VendId == VendTable.AccountNum
                        && ReqItemTable.LeadTimePurchaseActive == NoYes::Yes
                    {
                        ReqItemTable.LeadTimePurchase = VendTable.DlvdaysPurch;
                        ReqItemTable.CalendarDaysPurchase = VendTable.Workingdays;
                        ReqItemTable.update();
                    }
                }
                info(literalStr(""));
       
            }
            ttsCommit;
        }
      ENDSOURCE
      SOURCE showQueryValues
   
        boolean showQueryValues()
        {
            return true;
        }
      ENDSOURCE
      SOURCE main
        public static void main(Args args)
        {
                syncVendDlvTime syncVendDlvTime;
            ;
            syncVendDlvTime = new syncVendDlvTime();
            syncVendDlvTime.initQuery();
       
            if(syncVendDlvTime.prompt())
            {
                syncVendDlvTime.run();
            }
        }
      ENDSOURCE
    ENDMETHODS
  ENDCLASS

Keine Kommentare:

Kommentar veröffentlichen