Wednesday, 26 April 2017

Vendor Invoice Statues Report


DP Class

[
    SRSReportQueryAttribute (queryStr (Vendor Invoice)),
    SRSReportParameterAttribute (classStr (VendorInvoiceContract))
]
class VendorInvoiceDP extends SRSReportDataProviderBase
{
    VendorInvoiceTmp         vendorInvoiceTmp;
    TmpSysQuery                 tmpSysQuery;
    VendorInvoiceContract    contract;
    boolean                     PO;
    boolean                     SO;
    boolean                     MO;
}




[SRSReportDataSetAttribute(tableStr(VendorInvoiceTmp))]
public VendorInvoiceTmp getVendorInvoiceTmp()
{
    select vendorInvoiceTmp;
    return vendorInvoiceTmp;
}




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



[SysEntryPointAttribute]
Public void processReport ()
{
    Query                   query;
    QueryRun                queryRun;

    VendInvoiceJour         vendInvoiceJour;
    VendInvoiceTrans        vendInvoiceTrans;
    ProjTable               projTable;
    ProjInvoiceItem         projInvoiceItem;
    ProjInvoiceJour         projInvoiceJour;
    AegOlapClient           olapClient;
    VendTrans               vendTrans;
    PurchLine               purchLine;

    Contract                = this.parmDataContract ();

    PO                      = contract.parmPO();
    SO                      = contract.parmSO();
    MO                      = contract.parmMO();

    Query                   = this.parmQuery();
    QueryRun                = new QueryRun (query);

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

    while(queryRun. Next())
    {
        VendInvoiceJour                             =   queryRun.get(tableNum (VendInvoiceJour));
        vendInvoiceTrans                            = queryRun.get(tableNum(VendInvoiceTrans));
        projInvoiceItem                             = queryRun.get(tableNum(ProjInvoiceItem));
        projTable                                   = queryRun.get(tableNum(ProjTable));
        olapClient                                  = queryRun.get(tableNum(AegOlapClient));
        projInvoiceJour                             = queryRun.get(tableNum(ProjInvoiceJour));
        vendTrans                                   = queryRun.get(tableNum(VendTrans));
        purchLine                                   = queryRun.get(tableNum(PurchLine));

        vendorInvoiceTmp.clear();
        vendorInvoiceTmp.VendorId                   = vendInvoiceJour.InvoiceAccount;
        vendorInvoiceTmp.VendorName                 = VendTable::find(vendInvoiceJour.InvoiceAccount).name();
        vendorInvoiceTmp.PurchInvoiceDate           = vendInvoiceJour.InvoiceDate;
        vendorInvoiceTmp.PurchDocumentDate          = vendInvoiceJour.DocumentDate;
        vendorInvoiceTmp.PurchInvoiceId             = vendInvoiceJour.InvoiceId;
        vendorInvoiceTmp.aegMediaTitle              = AEGTHHierarchy::getNameByComponentAndType (projInvoiceItem.aegthHierarchyNodePurchRecId, ProjParameters::find().aegthComponentTypeName);

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

        //Voucher number PCNV* indicates credit note transactions....
        if(vendInvoiceJour.InvoiceAmount < 0)
        {
            vendorInvoiceTmp.CreditNoteAmount       = vendTrans.AmountMST;
        }
        else
        {
            vendorInvoiceTmp.PurchInvoiceAmountMST  = vendInvoiceTrans.LineAmountMST;
        }

        vendorInvoiceTmp.SalesInvoiceId             = projInvoiceItem.ProjInvoiceId;
        vendorInvoiceTmp.SalesInvoiceAmountMST      = projInvoiceItem.aegTotalAmountMST();
        vendorInvoiceTmp.CustomerId                 = projInvoiceJour.InvoiceAccount;
        vendorInvoiceTmp.SalesInvoiceDate           = projInvoiceItem.InvoiceDate;
        vendorInvoiceTmp.CustomerName               = CustTable::find(projInvoiceJour.InvoiceAccount).name();
        vendorInvoiceTmp.ClientId                   = olapClient.AccountNum;
        vendorInvoiceTmp.ClientName                 = olapClient.ClientName;

        vendorInvoiceTmp.PurchaseOrderId            = purchLine.PurchId;
        vendorInvoiceTmp.SalesOrderId               = purchLine.InventRefId;
        vendorInvoiceTmp.ProjectId                  = projTable.ProjId;
        vendorInvoiceTmp.CampaignId                 = projTable.AEGCampaignProjId;
        vendorInvoiceTmp.AEGMediaOrderId            = PurchTable::find(purchLine.PurchId).AEGMediaOrderId;
        vendorInvoiceTmp.Voucher                    = vendTrans.Voucher;

        if(vendorInvoiceTmp.ClientName)
        {
            vendorInvoiceTmp.insert();
        }
    }








Contract Class




[DataContractAttribute]
class VendorInvoiceContract
{
    boolean PO;
    boolean SO;
    boolean MO;
}

[
    DataMemberAttribute('Media order'),
    SysOperationLabelAttribute(literalStr ("@AEG1193")),
    SysOperationDisplayOrderAttribute('3')
]
public boolean parmMO(boolean _MO = MO)
{
    MO = _MO;
    Return MO;
}

[
    DataMemberAttribute('Purchase order'),
    SysOperationLabelAttribute (literalStr ("@SYS25545")),
    SysOperationDisplayOrderAttribute ('1')
]
Public boolean parmPO(boolean _PO = PO)
{
    PO = _PO;
    return PO;
}


[
    DataMemberAttribute('Sales order'),
    SysOperationLabelAttribute (literalStr ("@SYS80119")),
    SysOperationDisplayOrderAttribute('2')
]
Public boolean parmSO(boolean _SO = SO)
{
    SO  = _SO;
    return SO;
}

No comments:

Post a Comment