package org.netevolved.reporting.orders; import java.util.Iterator; import org.openedit.data.Searcher; import org.openedit.hittracker.HitTracker; import org.openedit.hittracker.SearchQuery; import org.openedit.store.CreditCardType; import org.openedit.store.Store; public class ProfitReport extends AllTransactionTypesReport { public void generateGroups() { HitTracker hits = getHitTracker(); Searcher searcher = hits.getSearcher(); SearchQuery query = hits.getSearchQuery(); Store store = getStore(); //all credit card types Iterator itr = store.getCreditCardTypes().iterator(); while(itr.hasNext()){ CreditCardType type = (CreditCardType) itr.next(); SearchQuery copy = query.copy(); copy.addMatches("orderstatus","authorized"); copy.addMatches("paymentmethod", "creditcard"); copy.addMatches("cardtype", type.getId()); copy.addExact("hasprofitshare","true"); copy.addSortBy("dateDown"); HitTracker subset = searcher.search(copy); PaymentMethodGroup group = new PaymentMethodGroup(); group.setHitTracker(subset); group.setLabel(type.getName()+" Payments"); getReportGroups().add(group); if (isIncludeRefunds()){ PaymentMethodGroup refunds = new PaymentMethodGroup(); refunds.setHitTracker(subset); refunds.setRefund(true); refunds.setLabel(type.getName()+" Refunds"); getReportGroups().add(refunds); } } //vouchers SearchQuery copy = query.copy(); copy.addMatches("orderstatus","authorized"); copy.addMatches("paymentmethod", "prepaidcode"); copy.addExact("hasprofitshare","true"); copy.addSortBy("dateDown"); HitTracker subset = searcher.search(copy); PaymentMethodGroup group = new PaymentMethodGroup(); group.setHitTracker(subset); group.setLabel("Voucher Payments"); group.setVoucher(true); getReportGroups().add(group); if (isIncludeRefunds()){ PaymentMethodGroup refunds = new PaymentMethodGroup(); refunds.setHitTracker(subset); refunds.setRefund(true); refunds.setVoucher(true); refunds.setLabel("Voucher Refunds"); getReportGroups().add(refunds); } } }