How to calculate withholding tax value before posting the journal through x++ code

Dear All ,

I need to know how to calculate withholding tax value before posting the journal through x++ code in AX 2012 R3.

I need the withholding tax value in form “LedgerJournalTransDaily” in GJ journal through display method.

Thanks …

Mintu

static void WithHoldTaxSample(Args _args)
{
PurchLine PurchLine;
Map mapOfTaxesToCalculate = new Map(Types::Container, Types::Real);
TaxWithholdOnItem_TH taxWithholdOnItem_TH;
TaxWithholdGroupData taxWithholdGroupData;
TaxWithholdBase taxWithholdBase;
container key;
MapEnumerator mapEnumerator;
TaxWithholdCode taxWithholdCode;
TaxWithholdTable taxWithholdTable;
TaxWithholdData taxWithholdData;
TmpTaxWithhold tmpTaxWithhold;
AmountMST taxBaseAmount;

while select LineAmount
, TaxWithholdItemGroupHeading_TH
, TaxWithholdGroup_TH
from PurchLine
where PurchLine.PurchId == “PO-123456”
{
while select TaxWithholdCode
from taxWithholdOnItem_TH
where taxWithholdOnItem_TH.TaxWithholdItemGroupHeading_TH == PurchLine.TaxWithholdItemGroupHeading_TH
join TaxWithholdGroup from taxWithholdGroupData
where taxWithholdGroupData.TaxWithholdGroup == PurchLine.TaxWithholdGroup_TH
&& taxWithholdOnItem_TH.TaxWithholdCode == taxWithholdGroupData.TaxWithholdCode
{
key = [taxWithholdGroupData.TaxWithholdGroup, taxWithholdOnItem_TH.TaxWithholdCode];

if (!mapOfTaxesToCalculate.exists(key))
{
mapOfTaxesToCalculate.insert(key, PurchLine.LineAmount);
}
else
{
taxWithholdBase = mapOfTaxesToCalculate.lookup(key);
taxWithholdBase += PurchLine.LineAmount;

mapOfTaxesToCalculate.insert(key, taxWithholdBase);
}
}
}

mapEnumerator = mapOfTaxesToCalculate.getEnumerator();

while (mapEnumerator.moveNext())
{
taxWithholdCode = conPeek(mapEnumerator.currentKey(), 2);
taxBaseAmount = mapEnumerator.currentValue();

taxWithholdTable = TaxWithholdTable::find(taxWithholdCode);

taxWithholdData = TaxWithholdData::find(taxWithholdTable.TaxWithholdCode,
today(),
taxBaseAmount);
if(taxWithholdData)
{
tmpTaxWithhold.TaxWithholdCode = taxWithholdTable.TaxWithholdCode;
tmpTaxWithhold.TaxWithholdValue = taxWithholdData.TaxWithholdValue;
tmpTaxWithhold.TaxWithholdBase = taxBaseAmount;
tmpTaxWithhold.TaxWithholdAmount = taxBaseAmount * tmpTaxWithhold.TaxWithholdValue / 100;
//tmpTaxWithhold.TaxWithholdTransId = _custVendTrans.RecId;

tmpTaxWithhold.insert();
}
}

while select tmpTaxWithhold
{
info(strFmt(“Code: %1, Aliquot: %1, Base amount: %3, Tax Amount: %4”,
tmpTaxWithhold.TaxWithholdCode,
tmpTaxWithhold.TaxWithholdValue,
tmpTaxWithhold.TaxWithholdBase,
tmpTaxWithhold.TaxWithholdAmount));
}
}

Hope it Helps