Müşteri cirosunu hesaplayan bir query örneği

Merhaba
Müşteri adatandırma adıyla yaptığım bir raporda kullandığım müşterinin belli kriterlere göre cirosunu hesaplayan query’ i paylaşıyorum. Burda Query kullanmamın asıl  sebebi range olarak verilecek olan değerlerin bazen boşta gelebiliyor olması. Boş olma durumununda hesaplanması için query de if le kontroller yapmak zorunda kaldım.
Metodu çağıran kod şöyle:
[sourcecode language=”csharp”]
element.sumCiro(CustTrans.AccountNum, CustTrans.OrderAccount,
CustTrans.ETGSalesResponsible , CustTrans.ETGSalesUnitId);
[/sourcecode]
Metodumuz şöyle:
[sourcecode language=”csharp”]
void sumCiro(AccountNum _accountNum , CustAccount _custAccount , EmplId _emplId , smmSalesUnitId _unitId)
{
CustTrans   custTrans;
Query                   q;
QueryRun                qRun;
QueryBuildDataSource    qbdsCustTrans;
QueryBuildRange         qbrEmplID;
QueryBuildRange         qbrCustAccount;
QueryBuildRange         qbrAccountNum;
QueryBuildRange         qbrUnitId;
;
Ciro = 0;
q   = new query();
qbdsCustTrans = q.addDataSource(tableNum(CustTrans));
qbdsCustTrans.addSelectionField(fieldNum(CustTrans, AmountMst), SelectionField::Sum);
if(printAccountNum)
{
qbrAccountNum = qbdsCustTrans.addRange(fieldNum(CustTrans, AccountNum));
qbrAccountNum.value(sysQuery::value(_accountNum));
}
if(printOrderAccount)
{
qbrCustAccount = qbdsCustTrans.addRange(fieldNum(CustTrans, OrderAccount));
qbrCustAccount.value(sysQuery::value(_custAccount));
}
if(printSalesRes)
{
qbrEmplID = qbdsCustTrans.addRange(fieldNum(CustTrans, ETGSalesResponsible));
qbrEmplID.value(sysQuery::value(_emplId));
}
if(printUnitID)
{
qbrUnitId = qbdsCustTrans.addRange(fieldNum(CustTrans, ETGSalesUnitId));
qbrUnitId.value(sysQuery::value(_unitId));
}
qbdsCustTrans.addRange(fieldNum(CustTrans, ETGReversed)).value(sysQuery::value( ETGReverseType::No));
qbdsCustTrans.addRange(fieldNum(CustTrans,
TransType)).value(sysQuery::valueNot( LedgerTransType::Settlement));
qbdsCustTrans.addRange(fieldnum(CustTrans, TransDate)).value(sysquery::range(startDate , endDate));
qbdsCustTrans.addRange(fieldnum(CustTrans, AmountMST)).value(‘( AmountMST > 0 )’);
qRun = new QueryRun(q);
while(qRun.next())
{
custTrans = qRun.get(tableNum(CustTrans));
Ciro = CustTrans.AmountMST;
}
}
[/sourcecode]
Selamlar.

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Dijital Dönüşümünüzü AI İle Hızlandırın

Dynamics 365 ve AI destekli çözümlerle iş süreçlerinizi optimize edin, verinizi anlamlı içgörülere dönüştürün ve büyümenizi sürdürülebilir hale getirin.

AI-Ready Enterprise Partner

Microsoft Dynamics 365 ve yapay zekâ çözümleriyle kurumsal sistemlerinizi güçlendirir, operasyonel karmaşıklığı azaltır ve geleceğe hazır bir mimari tasarlarız.

DMR Göztepe Merkez Ofis

Eğitim Mah. Hızırbey Cad. No:118/5 D:1 Kadıköy İstanbul

Marmara Üniversitesi Göztepe Kampüsü Teknopark

Tel: +90 216 470 79 49

E-posta: info@dmrbt.com

DMR Başıbüyük Ofis

Başıbüyük Mahallesi Süreyyapaşa Başıbüyük Yolu Sk. No: 4/7 Maltepe İstanbul

Marmara Üniversitesi Başıbüyük Kampüsü Teknopark

Tel: +90 216 470 79 49

E-posta: info@dmrbt.com