Customer aging in D365fo x++
Customer aging in D365fo x++
//call
container con0To5 = this.calculateAging(monthToDate - 5, monthToDate, hcmworker.PersonnelNumber, salestable.InventSiteId, DefaultDimensionView.DisplayValue);
container con6To15 = this.calculateAging(monthToDate - 15, monthToDate - 6, hcmworker.PersonnelNumber, salestable.InventSiteId, DefaultDimensionView.DisplayValue);
container con15To31 = this.calculateAging(monthToDate - 30, monthToDate - 16, hcmworker.PersonnelNumber, salestable.InventSiteId, DefaultDimensionView.DisplayValue);
container con31To60 = this.calculateAging(monthToDate - 60, monthToDate - 31, hcmworker.PersonnelNumber, salestable.InventSiteId, DefaultDimensionView.DisplayValue);
container con61To90 = this.calculateAging(monthToDate - 90, monthToDate - 61, hcmworker.PersonnelNumber, salestable.InventSiteId, DefaultDimensionView.DisplayValue);
container con95ToAbov = this.calculateAging(dateMax() ,monthToDate - 90, hcmworker.PersonnelNumber, salestable.InventSiteId, DefaultDimensionView.DisplayValue);
public container calculateAging(TransDate _fromDate, TransDate _toDate, str _empId, inventSiteId _inventSite, str _division)
{
CustTrans custtrans;
HcmWorker HcmWorker;
SalesTable salesTable;
CustInvoiceJour CustInvoiceJour;
CustPaymModeTable CustPaymModeTable;
CustSettlement CustSettlement;
DefaultDimensionView DefaultDimensionView;
real customerSettleAmount, customerAmount, balance;
int customer;
select count(RecId) , sum(REPORTINGCURRENCYAMOUNT)
from custtrans
WHERE (custtrans.TRANSDATE >= _fromDate && custtrans.TRANSDATE <= _toDate)
exists join custinvoicejour
where custinvoicejour.LedgerVoucher == custtrans.voucher
&& custinvoicejour.InvoiceAccount == custtrans.AccountNum
&& custinvoicejour.InvoiceId == custtrans.Invoice
&& custinvoicejour.InvoiceDate == custtrans.TransDate
exists join salesTable
where salesTable.SalesId == CustInvoiceJour.salesid
&& salesTable.InventSiteId == _inventSite
exists join DefaultDimensionView
where DefaultDimensionView.DefaultDimension == salesTable.DefaultDimension
&& DefaultDimensionView.Name == 'Division'
&& DefaultDimensionView.DisplayValue == _division
exists join HcmWorker
group by custtrans.AccountNum
where HcmWorker.RecId == salesTable.WorkerSalesResponsible
&& HcmWorker.PersonnelNumber == _empId;
customerAmount = custtrans.REPORTINGCURRENCYAMOUNT;
customer = custtrans.RecId;
custtrans.clear();
HcmWorker.clear();
salesTable.clear();
CustInvoiceJour.clear();
CustPaymModeTable.clear();
CustSettlement.clear();
DefaultDimensionView.clear();
SELECT SUM(SETTLEAMOUNTMST)
FROM CustSettlement
where (CustSettlement.TRANSDATE >= _fromDate && CustSettlement.TRANSDATE <= _toDate)
join sum(REPORTINGCURRENCYAMOUNT)
from custtrans
WHERE CustSettlement.TRANSRECID == custtrans.RecId
exists join custinvoicejour
where custinvoicejour.LedgerVoucher == custtrans.voucher
&& custinvoicejour.InvoiceAccount == custtrans.AccountNum
&& custinvoicejour.InvoiceId == custtrans.Invoice
&& custinvoicejour.InvoiceDate == custtrans.TransDate
exists join salesTable
where salesTable.SalesId == CustInvoiceJour.salesid
&& salesTable.InventSiteId == _inventSite
exists join DefaultDimensionView
where DefaultDimensionView.DefaultDimension == salesTable.DefaultDimension
&& DefaultDimensionView.Name == 'Division'
&& DefaultDimensionView.DisplayValue == _division
exists join HcmWorker
where HcmWorker.RecId == salesTable.WorkerSalesResponsible
&& HcmWorker.PersonnelNumber == _empId;
customerSettleAmount = CustSettlement.SettleAmountMST;
balance = customerAmount - customerSettleAmount;
return [balance, customer];
}
Comments
Post a Comment