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:
element.sumCiro(CustTrans.AccountNum, CustTrans.OrderAccount, CustTrans.ETGSalesResponsible , CustTrans.ETGSalesUnitId);
Metodumuz şöyle:
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; } }
Selamlar.