Monday, November 17, 2025

Sys operation d365fno

 Control class 

============== 

class TRUpdateAssetBookController extends SysOperationServiceController 

{ 

           protected void new() 

        { 

            super(classStr(TRupdateAssetBookService), methodStr(TRupdateAssetBookServiceassetBookService), SysOperationExecutionMode::Synchronous); 

        } 

  

        /// <summary> 

        /// To construct LocationRecordsController class 

        /// </summary> 

        public static TRUpdateAssetBookController construct(SysOperationExecutionMode _executionMode = SysOperationExecutionMode::Synchronous) 

        { 

            TRUpdateAssetBookController controller; 

            controller = new TRUpdateAssetBookController(); 

            controller.parmExecutionMode(_executionMode); 

            return controller; 

        } 

  

        /// <summary> 

        /// Main method of LocationRecordsController class 

        /// </summary> 

        public static void main(Args _args) 

        { 

            TRUpdateAssetBookController controller; 

            controller = TRUpdateAssetBookController::construct(); 

            controller.parmArgs(_args); 

            controller.startOperation(); 

        } 

  

        /// <summary> 

        /// To set caption of a batch job 

        /// </summary> 

        public ClassDescription defaultCaption() 

        { 

            return "update Asset Book"; 

        } 

  

} 

 

Contract class 

=========== 

[DataContract, 

SysOperationContractProcessing(classStr(TRAssetBookUIBuilder))] 

public class TRupdateAssetBookContract implements SysOperationValidatable 

  

{ 

    List  BookList; 

    List  AssetId; 

  

    [ 

        DataMemberAttribute("BookId"), 

        AifCollectionTypeAttribute('return', Types::String), 

        SysOperationLabelAttribute(literalstr("Book Id")), 

        SysOperationHelpTextAttribute(literalstr("Book Id")), 

         SysOperationDisplayOrderAttribute('2') 

        ] 

    public List parmAssetBookId(List _BookList = BookList) 

    { 

        BookList = _BookList; 

        return BookList; 

    } 

  

    [ 

        DataMemberAttribute("AssetId"), 

        AifCollectionTypeAttribute('return', Types::String), 

        SysOperationLabelAttribute(literalstr("Asset ID")), 

        SysOperationHelpTextAttribute(literalstr("AssetId")), 

         SysOperationDisplayOrderAttribute('1') 

        ] 

    public List parmAssetId(List  _AssetIdAssetId) 

    { 

        AssetId = _AssetId; 

        return AssetId; 

    } 

  

    public boolean validate() 

    { 

        boolean ok=true; 

        if(this.parmAssetBookId().empty()) 

        { 

            ok = checkFailed("Select Book Id"); 

        } 

  

        if(this.parmAssetId().empty()) 

        { 

            ok = checkFailed("Select Asset Id"); 

        } 

  

        return ok; 

             

    } 

  

} 

 

Service Class 

======== 

class TRupdateAssetBookService extends SysOperationServiceBase 

{ 

    

    /// <summary> 

    ///  

    /// </summary> 

    public void assetBookService(TRupdateAssetBookContract _Contract) 

    { 

        AssetBook  AssetBookLoc; 

        DimensionAttributeValueSetStorage  dimStorage; 

        DimensionValue businessUnit, property; 

        ListIterator   bookIterator,AssetIdIterator; 

        List  booklist = _Contract.parmAssetBookId(); 

        List  AssetId = _Contract.parmAssetId(); 

  

        AssetIdIterator = new ListIterator(AssetId); 

         

        while(AssetIdIterator .more()) 

        { 

            bookIterator = new ListIterator(booklist); 

            while(bookIterator .more()) 

            { 

        

                while select forupdate AssetBookLoc 

                where  AssetBookLoc.AssetId == AssetIdIterator.value() && AssetBookLoc.BookId ==  bookIterator.value() 

                { 

                    ttsbegin; 

                    dimStorage = DimensionAttributeValueSetStorage::find(AssetBookLoc.DefaultDimension); 

                    businessUnit = DimStorage.getDisplayValueByDimensionAttribute(DimensionAttribute::findByName("businessunit").RecId); 

                    property    = DimStorage.getDisplayValueByDimensionAttribute(DimensionAttribute::findByName("Property").RecId); 

  

                    if(AssetBookLoc.TRBusinessUnit != businessUnit || AssetBookLoc.TRProperty != property ) 

                    { 

                        AssetBookLoc.TRBusinessUnit = businessUnit; 

                        AssetBookLoc.TRProperty =property; 

                        AssetBookLoc.update(); 

                    } 

                    ttscommit; 

                } 

                bookIterator.next(); 

            } 

                AssetIdIterator.next(); 

             

  

        } 

 

 

UI Builder 

======== 

Public class TRAssetBookUIBuilder extends SysOperationAutomaticUIBuilder 

{ 

    DialogField bookField; 

    DialogField AssetID; 

    TRupdateAssetBookContract contract;// = new TRupdateAssetBookContract(); 

    container                con; 

  

  

    public void build() 

  

    { 

        contract    =   this.datacontractobject() as trupdateassetbookcontract; 

        bookfield = this.adddialogfield(methodstr(trupdateassetbookcontract,parmassetbookid), contract); 

        AssetID = this.adddialogfield(methodstr(trupdateassetbookcontract,parmAssetId), contract); 

    } 

  

   public void postbuild() 

    { 

        super(); 

        bookfield = this.bindinfo().getdialogfield(this.datacontractobject(),methodstr(trupdateassetbookcontract,parmassetbookid)); 

        bookfield.registeroverridemethod(methodstr(formstringcontrol,lookup),methodstr(trassetbookuibuilder,booklookup),this); 

        AssetID = this.bindinfo().getdialogfield(this.datacontractobject(),methodstr(trupdateassetbookcontract,parmAssetId)); 

        AssetID.registeroverridemethod(methodstr(formstringcontrol,lookup),methodstr(trassetbookuibuilder,AssetIdlookup),this); 

       // bookfield.registeroverridemethod(methodstr(formstringcontrol, validate),methodstr(trassetbookuibuilderbookvalidate), this); 

    } 

  

    public void postrun() 

    { 

        //super(); 

    } 

  

    private void booklookup(formstringcontrol _control) 

    { 

        query                   query = new query(); 

        querybuilddatasource    bookqbd; 

  

        bookqbd = query.adddatasource(tablenum(assetbooktable)); 

        bookqbd.addselectionfield(fieldnum(assetbooktable,bookid )); 

  

        syslookupmultiselectgrid::lookup(query, 

                                         _control, 

                                         _control, 

                                         _control, 

                                         con); 

    } 

  

    private void AssetIdlookup(formstringcontrol _control) 

    { 

        query                   query = new query(); 

        querybuilddatasource    bookqbd; 

  

        bookqbd = query.adddatasource(tablenum(Assettable)); 

        bookqbd.addselectionfield(fieldnum(Assettable,AssetId )); 

  

        syslookupmultiselectgrid::lookup(query, 

                                         _control, 

                                         _control, 

                                         _control, 

                                         con); 

    } 

  

} 

No comments:

Post a Comment