Thursday, November 7, 2024

Basic SSRS Report to call from form current record

Controller


/// <summary>

/// RAF controller

/// </summary>

internal final class LSRafLabelController extends SrsReportRunController

{

    /// <summary>

    /// Main class of RAF lebel

    /// </summary>

    /// <param name = "_args">_args</param>

    public static void main(Args _args)

    {

        LSRafLabelController rafLabelController = new  LSRafLabelController();


        rafLabelController.parmReportName(ssrsReportStr(LSRAFLabel, Report));

        rafLabelController.parmDialogCaption("@LS_HISOL_GD:RAFLabel");

        rafLabelController.parmShowDialog(false);

        rafLabelController.parmArgs(_args);


        rafLabelController.startOperation();

    }


    /// <summary>

    /// prePromptModifyContract

    /// </summary>

    protected void prePromptModifyContract()

    {

        if(this.parmArgs())

        {

            LSRafLabelContract contract;

            ProdJournalProd prodJournalProd;

            contract = this.parmReportContract().parmRdpContract();


            prodJournalProd = this.parmArgs().record();

            contract.parmRecid(prodJournalProd.RecId);

        }


        super();

    }


}





Contract


/// <summary>

/// Contract class of RAF label

/// </summary>

[DataContractAttribute]

internal final class LSRafLabelContract

{

    RefRecid lineRecid;




    /// <summary>

    /// Parm contract

    /// </summary>

    /// <param name = "_recid">_recid</param>

    /// <returns>RefRecid</returns>

    [DataMemberAttribute('Recid')]

    public RefRecid parmRecid(RefRecid _recid = lineRecid)

    {

        lineRecid = _recid;

        return lineRecid;

    }


}





DP


/// <summary>

/// DP class for RAF report

/// </summary>

[SRSReportParameterAttribute(classStr(LSRafLabelContract))]

class LSRafLabelDP extends SRSReportDataProviderBase

{


    LSRafLabelTmp rafTmp;


   

    [SRSReportDataSetAttribute(tableStr(LSRafLabelTmp))]

    public LSRafLabelTmp getLSRafLabelTmp()

    {

        select rafTmp;

        return rafTmp;

    }


    /// <summary>

    /// Process report

    /// </summary>

    public void processReport()

    {


        ProdJournalProd prodJournalProd;

        InventDim       inventDim;

        LSRafLabelContract rafLabelContract;


        rafLabelContract = this.parmDataContract();


        select firstonly ItemId,QtyGood from prodJournalProd

            where prodJournalProd.RecId == rafLabelContract.parmRecid()

            join InventLocationId,inventBatchId,wMSLocationId from inventDim

            where prodJournalProd.InventDimId == inventDim.inventDimId;


        rafTmp.Warehouse        = inventDim.InventLocationId;

        rafTmp.ItemId           = prodJournalProd.ItemId;

        rafTmp.ProductName      = InventTable::find(prodJournalProd.ItemId).productName(SystemParameters::getSystemLanguageId());

        rafTmp.InventBatchId    = inventDim.inventBatchId;

        rafTmp.WMSLocationId    = inventDim.wMSLocationId;

        rafTmp.ManufacturingDate = InventBatch::find(inventDim.inventBatchId,prodJournalProd.ItemId).prodDate;

        rafTmp.Qty              = prodJournalProd.QtyGood;

        rafTmp.QtyBX            = this.convertedVal(prodJournalProd.ItemId,prodJournalProd.QtyGood,InventTableModule::find(prodJournalProd.ItemId,ModuleInventPurchSales::Invent).UnitId,'BX');

        rafTmp.ExpiryDate       =  InventBatch::find(inventDim.inventBatchId,prodJournalProd.ItemId).expDate;

       

        rafTmp.insert();

    }


    /// <summary>

    /// Converted value

    /// </summary>

    /// <param name = "_itemid">_itemid</param>

    /// <param name = "_qty">_qty</param>

    /// <param name = "_fromUnit">_fromUnit</param>

    /// <param name = "_toUnit">_toUnit</param>

    /// <returns>Qty</returns>

    public  Qty convertedVal(ItemId _itemid, Qty _qty, UnitOfMeasureSymbol _fromUnit, UnitOfMeasureSymbol _toUnit )

    {

        try

        {


            UnitOfMeasureConverter_Product unitConverter  = UnitOfMeasureConverter_Product::construct();

            unitConverter.parmProduct(InventTable::find(_itemid,true).Product);

            unitConverter.parmFromUnitOfMeasure(UnitOfMeasure::unitOfMeasureIdBySymbol(_fromUnit));

            unitConverter.parmToUnitOfMeasure(UnitOfMeasure::unitOfMeasureIdBySymbol(_toUnit));

            unitConverter.parmRoundAbsoluteValue(NoYes::No);

            unitConverter.parmApplyRounding(NoYes::No);

            return unitConverter.convertValue(_qty);

        }

        catch

        {

            warning("@DMF:DMFNoTimezone");


            return 0;

        }

    }


}