D365F&O - X++ - Add query in batch job for filtering records.

 Add the following code in Contract class.

/// <summary>
/// Contract class for <c>ItemExportBatch</c> class
/// </summary>
[DataContractAttribute]
class ItemExportContract
{

    ConfigId ConfigId;
    str packedQuery;

    /// <summary>
    /// Config Id parameter
    /// </summary>
    /// <param name = "_ConfigId">ConfigId</param>
    /// <returns>Config Id</returns>
    [DataMember,
    SysOperationLabel(literalStr("@SYS2653"))]
    public ConfigId parmConfigId(ConfigId _ConfigId = ConfigId)
    {
        ConfigId = _ConfigId;
        return ConfigId;
    }

    /// <summary>
    /// query parameter
    /// </summary>
    /// <param name = "_packedQuery">packedQuery</param>
    /// <returns>str</returns>
    [DataMember,AifQueryTypeAttribute('_packedQuery',queryStr(ItemExport))]
    public str parmQuery(str _packedQuery = packedQuery)
    {
        packedQuery = _packedQuery;
        return packedQuery;
    }

    /// <summary>
    /// get query value
    /// </summary>
    /// <returns>Query</returns>
    public Query getQuery()
    {
        return new Query(SysOperationHelper::base64Decode(packedQuery));
    }

    /// <summary>
    /// set query value
    /// </summary>
    /// <param name = "_query">query</param>
    public void setQuery(Query _query)
    {
        packedQuery = SysOperationHelper::base64Encode(_query.pack());
    }
}

2- Add the following code in your Controller class.

/// <summary>
/// Controller class for <c>ItemExportBatch</c> class
/// </summary>
class ItemExportController extends SysOperationServiceController
{    
   
    /// <summary>
    /// Default class contsructor
    /// </summary>
    protected void new()
    {
        super(classStr(ItemExportBatch),
               methodStr(ItemExportBatch, process),
                SysOperationExecutionMode::Synchronous);
    }

    /// <summary>
    /// Contruct method
    /// </summary>
    /// <param name = "_executionMode"> execution mode of batch job class</param>
    /// <returns><c>ItemExportController</c> class instance</returns>
    public static ItemExportController construct(SysOperationExecutionMode
         _executionMode = SysOperationExecutionMode::Synchronous)
    {
        ItemExportController controller;
        controller = new ItemExportController();
        controller.parmExecutionMode(_executionMode);
        return controller;
    }

    /// <summary>
    /// A class entry point
    /// </summary>
    /// <param name = "_args">An instance of <c>Args</c> which
    /// contains calling arguments</param>
    public static void main(Args _args)
    {
        str caption;
        ItemExportController   controller;
        controller = ItemExportController::construct();
        ItemExportContract contract = controller.getDataContractObject();
        contract.parmitemExportSystem(_args.parmEnum());

        switch (_args.parmEnum())
        {
            case MJItemExportSystem::GSI :
                caption = literalStr("@SYS3192");
                break;
            case MJItemExportSystem::Demandware :
            default :
                caption = literalStr("@SYS3193");
                break;
        }
        controller.parmDialogCaption(caption);
        controller.parmArgs(_args);
        controller.startOperation();
    }

}

3- Add the following code in your batch service class.

class ItemExportBatch extends SysOperationServiceBase
{
    /// Entry point for <c>ItemExportBatch</c> class
    /// </summary>
    /// <param name = "_contract">contract class parameter</param>
    public void process(ItemExportContract _contract)
    {  
        queryRun = new queryRun(_contract.getQuery());
        ConfigId = _contract.parmConfigId();
   
        if (ConfigId)
        {
            // your logic here
        }
       
    }
}




Comments

Popular posts from this blog

D365F&O - X++ - Best Practice Warning BP Rule: [BPErrorUnknownLabel]: Path:

D365F&O - X++ - How to Enable/Disable button on form based on a condition in D365F&O using Event handlers.

D365FO - X++ - Generate CAR (Customized Analysis Report) report of custom model