Wednesday, 26 April 2017

party payable report


DP Class

[SRSReportQueryAttribute(queryStr(PartyPayable)),
    SRSReportParameterAttribute(classStr(PartyPayableContract))]
class PartyPayableDP extends SRSReportDataProviderBase
{
    PartyPayableTmp       partyPayableTmp;
    TmpSysQuery                 tmpSysQuery;

    #define.chargeCode('Charge code')
}


[SRSReportDataSetAttribute(tableStr(PartyPayableTmp))]
public PartyPayableTmp    getPartyPayableTmp()
{
    select partyPayableTmp;
    return partyPayableTmp;
}


[SRSReportDataSetAttribute(tableStr(TmpSysQuery))]
public TmpSysQuery getTmpSysQuery()
{
    select tmpSysQuery;
    return tmpSysQuery;
}






[SysEntryPointAttribute]
public void processReport()
{
    PartyPayableContract                                contract;
    ProjInvoiceJour                                     projInvoiceJour;
    ProjInvoiceItem                                     projInvoiceItem;
    ProjTable                                           projTable;
    MarkupTrans                                         markupTrans;
    ProjInvoiceItemDetail                               projInvoiceItemDetail;
    AEGOlapDefaultDimensionFramework                    defaultDimensionView;
    AEGChannelView                                      channelView;
    str                                                 chargeCodeParm;

    List                                                chargeCode;
    ListIterator                                        chargeCodeIterator;

    Query                                               query;
    QueryRun                                            queryRun;
    QueryBuildDataSource                                qbdMarkupTrans;
    QueryBuildRange                                     qbrMarkupTrans;

     contract                         = this.parmDataContract() as PartyPayableContract;
    chargeCode                                          = contract.parmChargeCode();
    chargeCodeIterator                                  = new ListIterator(chargeCode);

    query                                               = this.parmQuery();
    qbdMarkupTrans                             = query.dataSourceTable(tableNum(MarkupTrans));

    while(chargeCodeIterator.more())
    {
  qbrMarkupTrans                  = qbdMarkupTrans.addRange(fieldNum(MarkupTrans, MarkupCode));
        qbrMarkupTrans.value(chargeCodeIterator.value());
        qbrMarkupTrans.status(RangeStatus::Hidden);

        chargeCodeParm                                  += ((chargeCodeParm != '' ? ';' : '') + chargeCodeIterator.value());

        chargeCodeIterator.next();
    }

    queryRun                                            = new QueryRun(query);

    tmpSysQuery                  = SRSDynamicQuery::rangesToTmpSysQuery(this.parmQuery());

    tmpSysQuery.clear();
    tmpSysQuery.FieldLabel                              = #chargeCode;
    tmpSysQuery.RangeValue                              = chargeCodeParm;
    tmpSysQuery.insert();

    while(queryRun.next())
    {
        projInvoiceJour                             = queryRun.get(tableNum(ProjInvoiceJour));
        projInvoiceItem                             = queryRun.get(tableNum(ProjInvoiceItem));
        projTable                                   = queryRun.get(tableNum(ProjTable));
        markupTrans                                 = queryRun.get(tableNum(MarkupTrans));
        projInvoiceItemDetail                 = queryRun.get(tableNum(ProjInvoiceItemDetail));

        partyPayableTmp.clear();

        partyPayableTmp.InvoiceAccount                  = projInvoiceJour.InvoiceAccount;
        partyPayableTmp.CustomerName                    = projInvoiceJour.DeliveryName;
        partyPayableTmp.ProjInvoiceId                   = projInvoiceJour.ProjInvoiceId;
        partyPayableTmp.InvoiceDate                     = projInvoiceJour.InvoiceDate;
        partyPayableTmp.CurrencyId                      = projInvoiceJour.CurrencyId;
        partyPayableTmp.ProjId                          = projInvoiceItem.ProjId;
        partyPayableTmp.CampaignProjId                  = projTable.AEGCampaignProjId;

        //Note:- substring is taken taken from 1 to strLen-1,
        //because some project name string are containing 'GS' (group seperator) special character....
        partyPayableTmp.Name                     = char2num(projTable.Name, strLen(projTable.Name)) > 31 ? projTable.Name : subStr(projTable.Name, 1, strLen(projTable.Name)-1);

        select firstOnly maxOf(ChannelKey) from defaultDimensionView
         where   defaultDimensionView.defaultDimension   == projInvoiceItem.DefaultDimension;

        if(defaultDimensionView.ChannelKey != 0)
        {
            select firstOnly Value, Description from channelView
                where   channelView.RecId               == defaultDimensionView.ChannelKey;

            partyPayableTmp.ChannelName                 = channelView.Description;
            partyPayableTmp.ChannelId                   = channelView.Value;
        }

        partyPayableTmp.PartyPayableVendorId            = projTable.aegAgencyPayable;
  partyPayableTmp.PartyPayableVendorName = VendTable::find(projTable.AEGAgencyPayable).name();

        partyPayableTmp.PartyPayablePercentage          = markupTrans.Value;

partyPayableTmp.TransactionCurrencyGross  = (projInvoiceItem.Qty * projInvoiceItemDetail.SalesPrice);
        partyPayableTmp.TransactionCurrencyNet          = projInvoiceItemDetail.LineAmount;
        partyPayableTmp.AccountingCurrencyGross         = (partyPayableTmp.TransactionCurrencyGross * (projInvoiceJour.ExchRate/100));
        partyPayableTmp.AccountingCurrencyNet           = (partyPayableTmp.TransactionCurrencyNet * (projInvoiceJour.ExchRate/100));

        partyPayableTmp.TransactionPartyPayableAmount   = markupTrans.CalculatedAmount;

        partyPayableTmp.AccountingPartyPayableAmount    = (partyPayableTmp.TransactionPartyPayableAmount * (projInvoiceJour.ExchRate/100));

        partyPayableTmp.insert();
    }
}




Contract Class




[
DataContractAttribute,
    SysOperationContractProcessingAttribute(classStr(PartyPayableUIBuilder))
]
class AEI3rdPartyPayableContract implements SysOperationValidatable
{
    List        chargeCode;
}




[
    DataMemberAttribute('chargeCode'),
    AifCollectionTypeAttribute('chargeCode', Types::String),
    SysOperationLabelAttribute(literalstr("@AEG694"))
]
public List parmChargeCode(List _chargeCode = chargeCode)
{
    chargeCode  = _chargeCode;
    return      chargeCode;
}


public boolean validate()
{
    boolean isValid = true;

    if(chargeCode.empty())
    {
        isValid     = checkFailed('Charge code cannot be blank');
    }

    return isValid;
}




UIBuilder Class



class PartyPayableUIBuilder extends SrsReportDataContractUIBuilder
{
    DialogField     dialogFieldChargeCode;
}


public void build()
{
    PartyPayableContract      contract;

    contract                        = this.dataContractObject() as PartyPayableContract;

    dialogFieldChargeCode           = this.addDialogField(methodStr(PartyPayableContract, parmChargeCode), contract);
}


public void lookupChargeCode(FormStringControl    _control)
{
    Query       query = new Query(queryStr(PartyPayableChargeCodeParm));
    container   cnt;

    SysLookupMultiSelectGrid::lookup(query, _control, _control, cnt);
}


public void postBuild()
{
    PartyPayableContract  contract;

    super();

    contract                    = this.dataContractObject() as PartyPayableContract;

    dialogFieldChargeCode       = this.bindInfo().getDialogField(contract,
                                                                    methodStr(PartyPayableContract, parmChargeCode));

    dialogFieldChargeCode.registerOverrideMethod(methodStr(FormStringControl, lookup),
                                            methodStr(PartyPayableUIBuilder, lookupChargeCode), this);

    if (dialogFieldChargeCode)
    {
        dialogFieldChargeCode.lookupButton(2);
    }
}


public void postRun()
{
    //super();
}


No comments:

Post a Comment