Example usage for org.joda.time DateTime plusDays

List of usage examples for org.joda.time DateTime plusDays

Introduction

In this page you can find the example usage for org.joda.time DateTime plusDays.

Prototype

public DateTime plusDays(int days) 

Source Link

Document

Returns a copy of this datetime plus the specified number of days.

Usage

From source file:org.cast.cwm.admin.EventLog.java

License:Open Source License

protected Date midnightEnd(Date olddate) {
    DateTime dateTime = new DateTime(olddate);
    DateTime adjustedDateTime = dateTime.plusDays(1).withTimeAtStartOfDay();
    return adjustedDateTime.toDate();
}

From source file:org.ecocean.Shepherd.java

License:Open Source License

public ArrayList<Encounter> getEncounterArrayWithShortDate(String sd) {
    sd = sd.replace("/", "-");
    sd = sd.replace(".", "-");
    sd = sd.trim();// www .  j a v  a2 s .  c  o m
    DateFormat fm = new SimpleDateFormat("yyyy-MM-dd");
    Date d = null;
    try {
        d = (Date) fm.parse(sd);
    } catch (ParseException pe) {
        pe.printStackTrace();
    }
    DateTime dt = new DateTime(d);
    DateTime nextDay = dt.plusDays(1).toDateTime();
    // Since the query involves a date but no time, we need to get the millis of the next day at 12:00AM as well and find all encounters that occurred in between.
    String milliString = String.valueOf(dt.getMillis());
    String millisNext = String.valueOf(nextDay.getMillis());
    System.out.println("Trying to get encounter with date in Millis : " + milliString);
    String keywordQueryString = "SELECT FROM org.ecocean.Encounter WHERE dateInMilliseconds >= " + milliString
            + " && dateInMilliseconds <= " + millisNext + "";
    Collection col = null;
    Query encQuery = null;
    try {
        encQuery = pm.newQuery(keywordQueryString);
        if (encQuery.execute() != null) {
            col = (Collection) encQuery.execute();
        }
    } catch (Exception e) {
        e.printStackTrace();
        System.out.println("Exception on query : " + keywordQueryString);
        return null;
    }
    ArrayList<Encounter> encs = new ArrayList<Encounter>(col);
    encQuery.closeAll();
    if (encs != null) {
        return encs;
    } else {
        return null;
    }
}

From source file:org.efaps.esjp.accounting.Period_Base.java

License:Apache License

/**
 * Called from a tree menu command to present the documents related with
 * stock movement that are not connected with the period and therefor
 * must be worked on still.//from  w w w .j a v a2  s. c o m
 *
 * @param _parameter Paremeter
 * @return List if Instances
 * @throws EFapsException on error
 */
public Return getStockToBook(final Parameter _parameter) throws EFapsException {
    final Return ret = new Return();
    final Instance instance = _parameter.getInstance();
    final PrintQuery print = new PrintQuery(instance);
    print.addAttribute(CIAccounting.Period.FromDate);
    print.addAttribute(CIAccounting.Period.ToDate);
    print.execute();
    final DateTime from = print.<DateTime>getAttribute(CIAccounting.Period.FromDate);
    final DateTime to = print.<DateTime>getAttribute(CIAccounting.Period.ToDate);

    final QueryBuilder attrQueryBldr = new QueryBuilder(CIAccounting.Transaction2SalesDocument);
    final AttributeQuery attrQuery = attrQueryBldr
            .getAttributeQuery(CIAccounting.Transaction2SalesDocument.ToLink);

    final QueryBuilder queryBldr = new QueryBuilder(CISales.DocumentStockAbstract);
    queryBldr.addWhereAttrEqValue(CISales.DocumentStockAbstract.StatusAbstract,
            Status.find(CISales.DeliveryNoteStatus.Closed), Status.find(CISales.ReturnSlipStatus.Closed));
    queryBldr.addWhereAttrGreaterValue(CISales.DocumentStockAbstract.Date, from.minusMinutes(1));
    queryBldr.addWhereAttrLessValue(CISales.DocumentStockAbstract.Date, to.plusDays(1));
    queryBldr.addWhereAttrNotInQuery(CISales.DocumentStockAbstract.ID, attrQuery);

    final IFilterList filterlist = (IFilterList) _parameter.get(ParameterValues.OTHERS);
    final DocMulti multi = new DocMulti();
    multi.analyzeTable(_parameter, filterlist, queryBldr, CISales.DocumentStockAbstract.getType());

    final InstanceQuery query = queryBldr.getQuery();
    final List<Instance> instances = query.execute();
    ret.put(ReturnValues.VALUES, instances);
    return ret;
}

From source file:org.efaps.esjp.accounting.report.AccountDataSource_Base.java

License:Apache License

/**
 * @see org.efaps.esjp.common.jasperreport.EFapsDataSource_Base#init(net.sf.jasperreports.engine.JasperReport)
 * @param _jasperReport JasperReport/*from  w  w  w .j  av a 2 s.c  om*/
 * @param _parameter Parameter
 * @param _parentSource JRDataSource
 * @param _jrParameters map that contains the report parameters
 * @throws EFapsException on error
 */
@Override
public void init(final JasperReport _jasperReport, final Parameter _parameter, final JRDataSource _parentSource,
        final Map<String, Object> _jrParameters) throws EFapsException {
    final List<Instance> instances = new ArrayList<>();
    if (_parameter.getInstance() != null && _parameter.getInstance().isValid()
            && _parameter.getInstance().getType().isKindOf(CIAccounting.AccountAbstract.getType())) {
        instances.add(_parameter.getInstance());
        final PrintQuery printRep = new PrintQuery(_parameter.getInstance());
        printRep.addAttribute(CIAccounting.AccountAbstract.Name);
        printRep.execute();
        final String name = printRep.<String>getAttribute(CIAccounting.ReportAbstract.Name).replaceAll(" ",
                "_");
        _jrParameters.put("FileName", name);
    } else {
        final String[] oids = (String[]) Context.getThreadContext().getSessionAttribute("selectedOIDs");
        final Set<Instance> instSet = new LinkedHashSet<>();
        for (final String oid : oids) {
            final Instance instancetmp = Instance.get(oid);
            if (instancetmp.isValid()) {
                instSet.addAll(getAccountInstances(_parameter, instancetmp));
            }
        }
        instances.addAll(instSet);
    }
    final List<Instance> posInstances = new ArrayList<>();
    final DateTime dateFrom = new DateTime(_parameter.getParameterValue("dateFrom"));
    final DateTime dateTo = new DateTime(_parameter.getParameterValue("dateTo"));
    final Map<DateTime, BigDecimal> rates = new HashMap<>();
    _jrParameters.put("Rates", rates);
    if ("true".equalsIgnoreCase(_parameter.getParameterValue("filterActive"))) {
        final Instance curr = Instance.get(CIERP.Currency.getType(),
                Long.valueOf(_parameter.getParameterValue("currency")));
        if (curr.isValid()) {
            final CurrencyInst curInst = new CurrencyInst(curr);
            _jrParameters.put("TargetCurrencyId", curr.getId());
            _jrParameters.put("TargetCurrencyLabel", curInst.getName());

            rates.putAll(getRates4DateRange(_parameter, curInst.getInstance(), dateFrom, dateTo));
        }
    } else {
        _jrParameters.put("TargetCurrencyId", null);
    }
    for (final Instance accInst : instances) {
        final QueryBuilder attrQueryBldr = new QueryBuilder(CIAccounting.TransactionAbstract);
        attrQueryBldr.addWhereAttrLessValue(CIAccounting.TransactionAbstract.Date, dateTo.plusDays(1));
        attrQueryBldr.addWhereAttrGreaterValue(CIAccounting.TransactionAbstract.Date, dateFrom.minusSeconds(1));

        final AttributeQuery attrQuery = attrQueryBldr.getAttributeQuery(CIAccounting.TransactionAbstract.ID);

        final QueryBuilder queryBldr = new QueryBuilder(CIAccounting.TransactionPositionAbstract);
        queryBldr.addWhereAttrEqValue(CIAccounting.TransactionPositionAbstract.AccountLink, accInst.getId());
        queryBldr.addWhereAttrInQuery(CIAccounting.TransactionPositionAbstract.TransactionLink, attrQuery);
        final InstanceQuery query = queryBldr.getQuery();
        posInstances.addAll(query.execute());
    }

    if (posInstances.size() > 0) {
        final MultiPrintQuery multi = new MultiPrintQuery(posInstances);
        for (final JRField field : _jasperReport.getMainDataset().getFields()) {
            final String select = field.getPropertiesMap().getProperty("Select");
            if (select != null) {
                multi.addSelect(select);
            }
        }
        multi.setEnforceSorted(true);
        multi.execute();
        setPrint(multi);
    }

    final SystemConfiguration config = ERP.getSysConfig();
    if (config != null) {
        final String companyName = ERP.COMPANY_NAME.get();
        final String companyTaxNumb = ERP.COMPANY_TAX.get();

        if (companyName != null && companyTaxNumb != null && !companyName.isEmpty()
                && !companyTaxNumb.isEmpty()) {
            _jrParameters.put("CompanyName", companyName);
            _jrParameters.put("CompanyTaxNum", companyTaxNumb);
        }
    }
}

From source file:org.efaps.esjp.accounting.report.AccountDataSource_Base.java

License:Apache License

protected Map<DateTime, BigDecimal> getRates4DateRange(final Parameter _parameter, final Instance _curInst,
        final DateTime _from, final DateTime _to) throws EFapsException {
    final Map<DateTime, BigDecimal> map = new HashMap<>();
    DateTime fromAux = _from;
    final Currency currency = getCurrency(_parameter);

    while (fromAux.isBefore(_to)) {
        final RateInfo rateInfo = currency.evaluateRateInfo(_parameter, fromAux, _curInst);
        final BigDecimal rate = RateInfo.getRate(_parameter, rateInfo, AccountDataSource.class.getName());
        map.put(fromAux, rate);/* ww w . ja v  a2  s .  co  m*/
        fromAux = fromAux.plusDays(1);
    }
    return map;
}

From source file:org.efaps.esjp.accounting.report.DocTransactionsSource_Base.java

License:Apache License

/**
 * @see org.efaps.esjp.common.jasperreport.EFapsDataSource_Base#init(net.sf.jasperreports.engine.JasperReport)
 * @param _jasperReport  JasperReport//from  w  w w.  j av a 2 s.c om
 * @param _parameter Parameter
 * @param _parentSource JRDataSource
 * @param _jrParameters map that contains the report parameters
 * @throws EFapsException on error
 */
@SuppressWarnings("unchecked")
@Override
public void init(final JasperReport _jasperReport, final Parameter _parameter, final JRDataSource _parentSource,
        final Map<String, Object> _jrParameters) throws EFapsException {
    final Instance instance = _parameter.getInstance();

    final DateTime dateFrom = new DateTime(
            _parameter.getParameterValue(CIFormAccounting.Accounting_DocTransactionsForm.dateFrom.name));
    final DateTime dateTo = new DateTime(
            _parameter.getParameterValue(CIFormAccounting.Accounting_DocTransactionsForm.dateTo.name));
    _jrParameters.put("FromDate", dateFrom.toDate());
    _jrParameters.put("ToDate", dateTo.toDate());
    _jrParameters.put("Mime", _parameter.getParameterValue("mime"));

    final boolean filter = "true".equalsIgnoreCase(
            _parameter.getParameterValue(CIFormAccounting.Accounting_DocTransactionsForm.filterActive.name));

    final Instance contactInst = Instance
            .get(_parameter.getParameterValue(CIFormAccounting.Accounting_DocTransactionsForm.contact.name));

    final String[] creditAccount = _parameter
            .getParameterValues(CIFormAccounting.Accounting_DocTransactionsForm.creditAccount.name);
    final String[] debitAccount = _parameter
            .getParameterValues(CIFormAccounting.Accounting_DocTransactionsForm.debitAccount.name);

    // filter the documents by the given dates
    final QueryBuilder docAttrQueryBldr = new QueryBuilder(CIERP.DocumentAbstract);
    docAttrQueryBldr.addWhereAttrLessValue(CIERP.DocumentAbstract.Date, dateTo.plusDays(1));
    docAttrQueryBldr.addWhereAttrGreaterValue(CIERP.DocumentAbstract.Date, dateFrom.minusSeconds(1));
    if (filter && contactInst.isValid() && contactInst.getType().isKindOf(CIContacts.Contact.getType())) {
        docAttrQueryBldr.addWhereAttrEqValue(CIERP.DocumentAbstract.Contact, contactInst.getId());
    }

    final AttributeQuery docAttrQuery = docAttrQueryBldr.getAttributeQuery(CIERP.DocumentAbstract.ID);

    final QueryBuilder attrQuerBldr = new QueryBuilder(CIAccounting.Transaction2SalesDocument);
    attrQuerBldr.addWhereAttrInQuery(CIAccounting.Transaction2SalesDocument.ToLink, docAttrQuery);
    final AttributeQuery attrQuery = attrQuerBldr
            .getAttributeQuery(CIAccounting.Transaction2SalesDocument.FromLink);

    final QueryBuilder queryBuilder = new QueryBuilder(CIAccounting.Transaction);
    queryBuilder.addWhereAttrInQuery(CIAccounting.Transaction.ID, attrQuery);
    queryBuilder.addWhereAttrEqValue(CIAccounting.Transaction.PeriodLink, instance.getId());

    final MultiPrintQuery multi = queryBuilder.getPrint();
    final SelectBuilder selDoc = new SelectBuilder()
            .linkfrom(CIAccounting.Transaction2SalesDocument, CIAccounting.Transaction2SalesDocument.FromLink)
            .linkto(CIAccounting.Transaction2SalesDocument.ToLink);
    final SelectBuilder selDocName = new SelectBuilder(selDoc).attribute(CIERP.DocumentAbstract.Name);
    final SelectBuilder selDocDate = new SelectBuilder(selDoc).attribute(CIERP.DocumentAbstract.Date);
    final SelectBuilder selDocType = new SelectBuilder(selDoc).type().label();
    final SelectBuilder selDocContactName = new SelectBuilder(selDoc).linkto(CIERP.DocumentAbstract.Contact)
            .attribute(CIContacts.Contact.Name);
    final SelectBuilder selDocContactTaxNumber = new SelectBuilder(selDoc)
            .linkto(CIERP.DocumentAbstract.Contact).clazz(CIContacts.ClassOrganisation)
            .attribute(CIContacts.ClassOrganisation.TaxNumber);
    multi.addSelect(selDocName, selDocContactName, selDocContactTaxNumber, selDocType, selDocDate);
    multi.addAttribute(CIAccounting.Transaction.Date, CIAccounting.Transaction.Description,
            CIAccounting.Transaction.Name);
    multi.execute();
    while (multi.next()) {
        final String docType = multi.<String>getSelect(selDocType);
        final String docName = multi.<String>getSelect(selDocName);
        final DateTime docDate = multi.<DateTime>getSelect(selDocDate);
        final String contactName = multi.<String>getSelect(selDocContactName);
        final String taxNumber = multi.<String>getSelect(selDocContactTaxNumber);
        final DateTime transDate = multi.<DateTime>getAttribute(CIAccounting.Transaction.Date);
        final String transDescr = multi.<String>getAttribute(CIAccounting.Transaction.Description);
        final String transOID = multi.getCurrentInstance().getOid();
        final String transName = multi.<String>getAttribute(CIAccounting.Transaction.Name);

        final QueryBuilder posQueryBldr = new QueryBuilder(CIAccounting.TransactionPositionAbstract);
        posQueryBldr.addWhereAttrEqValue(CIAccounting.TransactionPositionAbstract.TransactionLink,
                multi.getCurrentInstance().getId());
        final MultiPrintQuery posMulti = posQueryBldr.getPrint();
        final SelectBuilder selAcc = new SelectBuilder()
                .linkto(CIAccounting.TransactionPositionAbstract.AccountLink);
        final SelectBuilder selAccName = new SelectBuilder(selAcc).attribute(CIAccounting.AccountAbstract.Name);
        final SelectBuilder selAccDesc = new SelectBuilder(selAcc)
                .attribute(CIAccounting.AccountAbstract.Description);
        posMulti.addSelect(selAccName, selAccDesc);
        posMulti.addAttribute(CIAccounting.TransactionPositionAbstract.Amount);
        posMulti.execute();
        while (posMulti.next()) {
            final String accName = posMulti.<String>getSelect(selAccName);
            if (!filter || (filter && add(accName,
                    posMulti.getCurrentInstance().getType()
                            .isKindOf(CIAccounting.TransactionPositionCredit.getType()) ? creditAccount
                                    : debitAccount))) {
                final Map<String, Object> row = new HashMap<>();
                row.put("docName", docName);
                row.put("docType", docType);
                row.put("docDate", docDate);
                row.put("contactName", contactName);
                row.put("taxNumber", taxNumber);
                row.put("transOID", transOID);
                row.put("transDate", transDate);
                row.put("transName", transName);
                row.put("transDescr", transDescr);
                row.put("amount", posMulti.getAttribute(CIAccounting.TransactionPositionAbstract.Amount));
                row.put("accName", accName);
                row.put("accDescr", posMulti.getSelect(selAccDesc));
                getValues().add(row);
            }
        }
    }
    final ComparatorChain chain = new ComparatorChain();
    chain.addComparator(new Comparator<Map<String, Object>>() {

        @Override
        public int compare(final Map<String, Object> _arg0, final Map<String, Object> _arg1) {
            return String.valueOf(_arg0.get("taxNumber")).compareTo(String.valueOf(_arg1.get("taxNumber")));
        }
    });
    chain.addComparator(new Comparator<Map<String, Object>>() {

        @Override
        public int compare(final Map<String, Object> _arg0, final Map<String, Object> _arg1) {
            return String.valueOf(_arg0.get("docName")).compareTo(String.valueOf(_arg1.get("docName")));
        }
    });
    chain.addComparator(new Comparator<Map<String, Object>>() {

        @Override
        public int compare(final Map<String, Object> _arg0, final Map<String, Object> _arg1) {
            return ((DateTime) _arg0.get("transDate")).compareTo((DateTime) _arg1.get("transDate"));
        }
    });
    chain.addComparator(new Comparator<Map<String, Object>>() {

        @Override
        public int compare(final Map<String, Object> _arg0, final Map<String, Object> _arg1) {
            return String.valueOf(_arg0.get("transOID")).compareTo(String.valueOf(_arg1.get("transOID")));
        }
    });
    chain.addComparator(new Comparator<Map<String, Object>>() {

        @Override
        public int compare(final Map<String, Object> _arg0, final Map<String, Object> _arg1) {
            return String.valueOf(_arg0.get("accName")).compareTo(String.valueOf(_arg1.get("accName")));
        }
    });
    Collections.sort(getValues(), chain);

    final SystemConfiguration config = ERP.getSysConfig();
    if (config != null) {
        final String companyName = ERP.COMPANY_NAME.get();
        final String companyTaxNumb = ERP.COMPANY_TAX.get();

        if (companyName != null && companyTaxNumb != null && !companyName.isEmpty()
                && !companyTaxNumb.isEmpty()) {
            _jrParameters.put("CompanyName", companyName);
            _jrParameters.put("CompanyTaxNum", companyTaxNumb);
        }
    }
}

From source file:org.efaps.esjp.accounting.report.ExpenseReport_Base.java

License:Apache License

/**
 * Gets the instances.// ww  w  . jav a2  s.co  m
 *
 * @param _parameter Parameter as passed by the eFaps API
 * @param _from the from
 * @param _to the to
 * @return the instances
 * @throws EFapsException on error
 */
protected List<Instance> getInstances(final Parameter _parameter, final DateTime _from, final DateTime _to)
        throws EFapsException {
    final QueryBuilder attrQuerBldr = new QueryBuilder(CIAccounting.Transaction2SalesDocument);
    final AttributeQuery attrQuery = attrQuerBldr
            .getAttributeQuery(CIAccounting.Transaction2SalesDocument.FromLink);

    final QueryBuilder queryBldr = new QueryBuilder(CIAccounting.TransactionAbstract);
    queryBldr.addWhereAttrInQuery(CIAccounting.TransactionAbstract.ID, attrQuery);
    queryBldr.addWhereAttrGreaterValue(CIERP.DocumentAbstract.Date, _from.minusMinutes(1));
    queryBldr.addWhereAttrLessValue(CIERP.DocumentAbstract.Date, _to.plusDays(1));
    queryBldr.addWhereAttrEqValue(CIAccounting.TransactionAbstract.PeriodLink,
            _parameter.getInstance().getId());
    final InstanceQuery query = queryBldr.getQuery();
    query.execute();
    return query.getValues();
}

From source file:org.efaps.esjp.accounting.report.JournalDataSource_Base.java

License:Apache License

@Override
protected void analyze() throws EFapsException {
    if (isSubDataSource()) {
        super.analyze();
    } else {//from  ww w  .  j a  v  a2  s .  c  o m
        final DateTime dateFrom = new DateTime(getParameter().getParameterValue("dateFrom"));
        final DateTime dateTo = new DateTime(getParameter().getParameterValue("dateTo"));

        final Map<?, ?> props = (Map<?, ?>) getParameter().get(ParameterValues.PROPERTIES);
        final QueryBuilder queryBuilder = new QueryBuilder(CIAccounting.TransactionAbstract);
        if (getParameter().getInstance().isValid()
                && getParameter().getInstance().getType().isKindOf(CIAccounting.ReportSubJournal.getType())) {
            final QueryBuilder attrQueryBldr = new QueryBuilder(CIAccounting.Report2Transaction);
            attrQueryBldr.addWhereAttrEqValue(CIAccounting.Report2Transaction.FromLinkAbstract,
                    getParameter().getInstance().getId());
            final AttributeQuery attrQuery = attrQueryBldr
                    .getAttributeQuery(CIAccounting.Report2Transaction.ToLinkAbstract);
            queryBuilder.addWhereAttrInQuery(CIAccounting.TransactionAbstract.ID, attrQuery);

            final QueryBuilder attrQueryBldr2 = new QueryBuilder(CIAccounting.ReportSubJournal);
            attrQueryBldr2.addWhereAttrEqValue(CIAccounting.ReportSubJournal.ID, getInstance());
            final AttributeQuery attrQuery2 = attrQueryBldr2
                    .getAttributeQuery(CIAccounting.ReportSubJournal.PeriodLink);
            queryBuilder.addWhereAttrInQuery(CIAccounting.TransactionAbstract.PeriodLink, attrQuery2);
        } else {
            queryBuilder.addWhereAttrEqValue(CIAccounting.TransactionAbstract.PeriodLink, getInstance());
        }
        queryBuilder.addWhereAttrLessValue(CIAccounting.TransactionAbstract.Date, dateTo.plusDays(1));
        queryBuilder.addWhereAttrGreaterValue(CIAccounting.TransactionAbstract.Date, dateFrom.minusSeconds(1));
        queryBuilder.addOrderByAttributeAsc(CIAccounting.TransactionAbstract.Date);
        queryBuilder.addOrderByAttributeAsc(CIAccounting.TransactionAbstract.Name);
        queryBuilder.addOrderByAttributeAsc(CIAccounting.TransactionAbstract.Description);

        if (props.containsKey("Classifications")) {
            final String classStr = (String) props.get("Classifications");
            final String[] clazzes = classStr.split(";");
            for (final String clazz : clazzes) {
                final Classification classif = (Classification) Type.get(clazz);
                if (classif != null) {
                    queryBuilder.addWhereClassification(classif);
                }
            }
        }
        setPrint(queryBuilder.getPrint());
        getPrint().setEnforceSorted(true);
        if (getJasperReport().getMainDataset().getFields() != null) {
            for (final JRField field : getJasperReport().getMainDataset().getFields()) {
                final String select = field.getPropertiesMap().getProperty("Select");
                if (select != null) {
                    getPrint().addSelect(select);
                    getSelects().add(select);
                }
            }
        }
        getPrint().execute();
    }
}

From source file:org.efaps.esjp.accounting.report.ReportAccountDataSource_Base.java

License:Apache License

/**
 * Recursive method to get the Debit and Credit Amount of all Transactions
 * of the given account and the accounts children.
 *
 * @param _accInst  Instance of the Account
 * @param _dateFrom dateFrom//from   w  w  w  .ja  v a2s. c  o  m
 * @param _dateTo   date To
 * @return Array of BigDecimal { Debit Amount, Credit Amount}
 * @throws EFapsException on error
 */
protected BigDecimal[] getDebitCredit(final Parameter _parameter, final Instance _accInst,
        final DateTime _dateFrom, final DateTime _dateTo) throws EFapsException {
    final boolean active = Boolean.parseBoolean(_parameter.getParameterValue("filterActive"));
    final String currency = _parameter.getParameterValue("currency");
    final Instance curBase = Currency.getBaseCurrency();

    BigDecimal debit = BigDecimal.ZERO;
    BigDecimal credit = BigDecimal.ZERO;
    // get the transactions fot the given account instance
    final QueryBuilder attrQueryBldr = new QueryBuilder(CIAccounting.TransactionAbstract);
    attrQueryBldr.addWhereAttrLessValue(CIAccounting.TransactionAbstract.Date, _dateTo.plusDays(1));
    attrQueryBldr.addWhereAttrGreaterValue(CIAccounting.TransactionAbstract.Date, _dateFrom.minusSeconds(1));
    final AttributeQuery attrQuery = attrQueryBldr.getAttributeQuery(CIAccounting.TransactionAbstract.ID);

    final QueryBuilder queryBldr = new QueryBuilder(CIAccounting.TransactionPositionAbstract);
    queryBldr.addWhereAttrEqValue(CIAccounting.TransactionPositionAbstract.AccountLink, _accInst.getId());
    queryBldr.addWhereAttrInQuery(CIAccounting.TransactionPositionAbstract.TransactionLink, attrQuery);
    final MultiPrintQuery multi = queryBldr.getPrint();
    multi.addAttribute(CIAccounting.TransactionPositionAbstract.Amount,
            CIAccounting.TransactionPositionAbstract.RateAmount);
    final SelectBuilder selRateCur = new SelectBuilder()
            .linkto(CIAccounting.TransactionPositionAbstract.RateCurrencyLink).instance();
    final SelectBuilder selTxnDate = new SelectBuilder()
            .linkto(CIAccounting.TransactionPositionAbstract.TransactionLink)
            .attribute(CIAccounting.TransactionAbstract.Date);
    multi.addSelect(selRateCur, selTxnDate);
    multi.execute();
    while (multi.next()) {
        final CurrencyInst curInstTxnPos = new CurrencyInst(multi.<Instance>getSelect(selRateCur));
        final DateTime date = multi.<DateTime>getSelect(selTxnDate);

        BigDecimal amount = BigDecimal.ZERO;
        if (active) {
            final Long rateCurType = Long.parseLong(_parameter.getParameterValue("rateCurrencyType"));
            final CurrencyInst curInst = new CurrencyInst(Instance.get(CIERP.Currency.getType(), currency));
            if (curInstTxnPos.getInstance().getId() != curInst.getInstance().getId()) {
                if (curInstTxnPos.getInstance().getId() != curBase.getId()) {
                    RateInfo rateInfo = getCurrency(_parameter).evaluateRateInfo(_parameter, date,
                            curInstTxnPos.getInstance());
                    BigDecimal rate = RateInfo.getRate(_parameter, rateInfo,
                            ReportAccountDataSource.class.getName());
                    final BigDecimal amountTmp = multi
                            .<BigDecimal>getAttribute(CIAccounting.TransactionPositionAbstract.RateAmount)
                            .divide(rate, BigDecimal.ROUND_HALF_UP);

                    rateInfo = getCurrency(_parameter).evaluateRateInfo(_parameter, date,
                            curInst.getInstance());
                    rate = RateInfo.getRate(_parameter, rateInfo, Report.class.getName());
                    amount = amountTmp.divide(rate, BigDecimal.ROUND_HALF_UP);
                } else {
                    final RateInfo rateInfo = getCurrency(_parameter).evaluateRateInfo(_parameter, date,
                            curInst.getInstance());
                    final BigDecimal rate = RateInfo.getRate(_parameter, rateInfo, Report.class.getName());
                    amount = multi.<BigDecimal>getAttribute(CIAccounting.TransactionPositionAbstract.RateAmount)
                            .divide(rate, BigDecimal.ROUND_HALF_UP);
                }

            } else {
                amount = multi.<BigDecimal>getAttribute(CIAccounting.TransactionPositionAbstract.RateAmount);
            }
        } else {
            amount = multi.<BigDecimal>getAttribute(CIAccounting.TransactionPositionAbstract.Amount);
        }

        if (multi.getCurrentInstance().getType().equals(CIAccounting.TransactionPositionCredit.getType())) {
            credit = credit.add(amount);
        } else {
            debit = debit.add(amount);
        }
    }
    // get the child accounts, andd the amounts by calling recursive
    final QueryBuilder accQueryBldr = new QueryBuilder(CIAccounting.AccountAbstract);
    accQueryBldr.addWhereAttrEqValue(CIAccounting.AccountAbstract.ParentLink, _accInst.getId());
    final InstanceQuery accQuery = accQueryBldr.getQuery();
    accQuery.execute();
    while (accQuery.next()) {
        final BigDecimal[] amounts = getDebitCredit(_parameter, accQuery.getCurrentValue(), _dateFrom, _dateTo);
        debit = debit.add(amounts[0]);
        credit = credit.add(amounts[1]);
    }
    return new BigDecimal[] { debit, credit };
}

From source file:org.efaps.esjp.accounting.report.ReportJournalDataSource_Base.java

License:Apache License

@Override
protected void analyze() throws EFapsException {
    if (isSubDataSource()) {
        super.analyze();
    } else {/*w w  w  .jav  a  2 s  .c om*/
        final Instance instance = getParameter().getInstance();
        final DateTime dateFrom = new DateTime(getParameter().getParameterValue("dateFrom"));
        final DateTime dateTo = new DateTime(getParameter().getParameterValue("dateTo"));
        this.jrParameters.put("FromDate", dateFrom.toDate());
        this.jrParameters.put("ToDate", dateTo.toDate());
        this.jrParameters.put("Mime", getParameter().getParameterValue("mime"));

        final PrintQuery printRep = new PrintQuery(instance);
        printRep.addAttribute(CIAccounting.ReportAbstract.Name);
        printRep.execute();
        final String name = printRep.<String>getAttribute(CIAccounting.ReportAbstract.Name).replaceAll(" ",
                "_");
        this.jrParameters.put("FileName", name);

        // get the root node, only the first one will be used
        final QueryBuilder queryBldr = new QueryBuilder(CIAccounting.ReportNodeRoot);
        queryBldr.addWhereAttrEqValue(CIAccounting.ReportNodeRoot.ReportLink, instance.getId());
        final InstanceQuery query = queryBldr.getQuery();
        query.execute();
        if (query.next()) {
            // only the ReportAccounts will be evaluated
            final QueryBuilder accQueryBldr = new QueryBuilder(CIAccounting.ReportNodeAccount);
            accQueryBldr.addWhereAttrEqValue(CIAccounting.ReportNodeAccount.ParentLink,
                    query.getCurrentValue().getId());
            final AttributeQuery attrQuery = accQueryBldr
                    .getAttributeQuery(CIAccounting.ReportNodeAccount.AccountLink);
            final QueryBuilder tpQueryBldr = new QueryBuilder(CIAccounting.TransactionPositionAbstract);
            tpQueryBldr.addWhereAttrInQuery(CIAccounting.TransactionPositionAbstract.AccountLink, attrQuery);
            final AttributeQuery tpAttrQuery = tpQueryBldr
                    .getAttributeQuery(CIAccounting.TransactionPositionAbstract.TransactionLink);

            final QueryBuilder queryBuilder = new QueryBuilder(CIAccounting.TransactionAbstract);
            queryBuilder.addWhereAttrLessValue(CIAccounting.TransactionAbstract.Date, dateTo.plusDays(1));
            queryBuilder.addWhereAttrGreaterValue(CIAccounting.TransactionAbstract.Date,
                    dateFrom.minusSeconds(1));
            queryBuilder.addOrderByAttributeAsc(CIAccounting.TransactionAbstract.Date);
            queryBuilder.addWhereAttrInQuery(CIAccounting.TransactionAbstract.ID, tpAttrQuery);
            setPrint(queryBuilder.getPrint());
            getPrint().setEnforceSorted(true);
            if (getJasperReport().getMainDataset().getFields() != null) {
                for (final JRField field : getJasperReport().getMainDataset().getFields()) {
                    final String select = field.getPropertiesMap().getProperty("Select");
                    if (select != null) {
                        getPrint().addSelect(select);
                        getSelects().add(select);
                    }
                }
            }
            getPrint().execute();
        }
    }
}