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();
}