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.efaps.esjp.accounting.report.TrialBalanceDS_Base.java

License:Apache License

@Override
public void init(final JasperReport _jasperReport, final Parameter _parameter, final JRDataSource _parentSource,
        final Map<String, Object> _jrParameters) throws EFapsException {
    super.init(_jasperReport, _parameter, _parentSource, _jrParameters);

    final Map<Instance, DataBean> mapping = new HashMap<>();
    final List<Instance> instances = new ArrayList<>();

    final DateTime dateFrom = new DateTime(
            _parameter.getParameterValue(CIFormAccounting.Accounting_PReportTrialBalanceForm.dateFrom.name));
    final DateTime dateTo = new DateTime(
            _parameter.getParameterValue(CIFormAccounting.Accounting_PReportTrialBalanceForm.dateTo.name));
    final boolean includeInit = Boolean.parseBoolean(
            _parameter.getParameterValue(CIFormAccounting.Accounting_PReportTrialBalanceForm.includeInit.name));
    int level = 2;
    final String levelStr = _parameter
            .getParameterValue(CIFormAccounting.Accounting_PReportTrialBalanceForm.level.name);
    if (levelStr != null && !levelStr.isEmpty()) {
        level = Integer.parseInt(levelStr);
    }//www .  ja v  a 2s . c o m

    _jrParameters.put("IncludeInit", includeInit);
    _jrParameters.put("DateFrom", dateFrom);
    _jrParameters.put("DateTo", dateTo);

    final String[] oids = (String[]) Context.getThreadContext().getSessionAttribute("selectedOIDs");
    for (final String oid : oids) {
        final Instance instancetmp = Instance.get(oid);
        if (instancetmp.isValid()) {
            instances.addAll(getAccountInst(_parameter, instancetmp, false));
        }
    }

    final QueryBuilder attrQueryBldr = new QueryBuilder(CIAccounting.TransactionAbstract);
    attrQueryBldr.addWhereAttrLessValue(CIAccounting.TransactionAbstract.Date, dateTo.plusDays(1));
    if (!includeInit) {
        attrQueryBldr.addWhereAttrGreaterValue(CIAccounting.TransactionAbstract.Date, dateFrom.minusSeconds(1));
    }
    final QueryBuilder queryBldr = new QueryBuilder(CIAccounting.TransactionPositionAbstract);
    queryBldr.addWhereAttrInQuery(CIAccounting.TransactionPositionAbstract.TransactionLink,
            attrQueryBldr.getAttributeQuery(CIAccounting.TransactionAbstract.ID));
    queryBldr.addWhereAttrEqValue(CIAccounting.TransactionPositionAbstract.AccountLink, instances.toArray());
    final MultiPrintQuery multi = queryBldr.getPrint();
    final SelectBuilder selTrans = SelectBuilder.get()
            .linkto(CIAccounting.TransactionPositionAbstract.TransactionLink);
    final SelectBuilder selTransDate = new SelectBuilder(selTrans)
            .attribute(CIAccounting.TransactionAbstract.Date);
    final SelectBuilder selAcc = SelectBuilder.get()
            .linkto(CIAccounting.TransactionPositionAbstract.AccountLink);
    final SelectBuilder selAccInst = new SelectBuilder(selAcc).instance();
    final SelectBuilder selAccName = new SelectBuilder(selAcc).attribute(CIAccounting.AccountAbstract.Name);
    final SelectBuilder selAccDescr = new SelectBuilder(selAcc)
            .attribute(CIAccounting.AccountAbstract.Description);
    multi.addSelect(selTransDate, selAccInst, selAccName, selAccDescr);
    multi.addAttribute(CIAccounting.TransactionPositionAbstract.Amount);
    multi.execute();
    while (multi.next()) {
        final DateTime date = multi.<DateTime>getSelect(selTransDate);
        final BigDecimal amount = multi
                .<BigDecimal>getAttribute(CIAccounting.TransactionPositionAbstract.Amount);
        final Instance accInst = multi.getSelect(selAccInst);
        DataBean bean;
        if (mapping.containsKey(accInst)) {
            bean = mapping.get(accInst);
        } else {
            bean = new DataBean();
            mapping.put(accInst, bean);
            bean.setAccName(multi.<String>getSelect(selAccName));
            bean.setAccDescr(multi.<String>getSelect(selAccDescr));
        }
        if (multi.getCurrentInstance().getType().isKindOf(CIAccounting.TransactionPositionDebit.getType())) {
            if (includeInit && date.isBefore(dateFrom.plusSeconds(1))) {
                bean.addInitDebit(amount);
            } else {
                bean.addDebit(amount);
            }
        } else {
            if (includeInit && date.isBefore(dateFrom.plusSeconds(1))) {
                bean.addInitCredit(amount);
            } else {
                bean.addCredit(amount);
            }
        }
    }
    final List<DataBean> values;
    if (level > 0) {
        values = new ArrayList<>();
        final Map<Instance, Leveler> accMap = new HashMap<>();
        for (final Entry<Instance, DataBean> entry : mapping.entrySet()) {
            final Leveler accInfo = getLeveler(_parameter).setInstance(entry.getKey()).setLevel(level);
            if (accMap.containsKey(accInfo.getInstance())) {
                accMap.get(accInfo.getInstance()).addBean(entry.getValue());
            } else {
                accInfo.addBean(entry.getValue());
                accMap.put(accInfo.getInstance(), accInfo);
            }
        }
        for (final Leveler leveler : accMap.values()) {
            values.add(leveler.getDataBean());
        }
    } else {
        values = new ArrayList<>(mapping.values());
    }

    final ComparatorChain<DataBean> chain = new ComparatorChain<>();
    chain.addComparator(new Comparator<DataBean>() {

        @Override
        public int compare(final DataBean _arg0, final DataBean _arg1) {
            return _arg0.getAccName().compareTo(_arg1.getAccName());
        }
    });
    Collections.sort(values, chain);
    setData(values);
}

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

License:Apache License

/**
 * Called from a tree menu command to present the documents that are not
 * included in accounting yet./*  w  w w.ja  v  a 2 s  .c  o  m*/
 *
 * @param _parameter Paremeter
 * @return List if Instances
 * @throws EFapsException on error
 */
public Return getDocuments(final Parameter _parameter) throws EFapsException {
    final MultiPrint multi = new MultiPrint() {
        @Override
        protected void add2QueryBldr(final Parameter _parameter, final QueryBuilder _queryBldr)
                throws EFapsException {
            final Instance instance = _parameter.getInstance();
            final PrintQuery print = new CachedPrintQuery(instance, SubPeriod_Base.CACHEKEY);
            print.addAttribute(CIAccounting.SubPeriod.FromDate);
            print.addAttribute(CIAccounting.SubPeriod.ToDate);
            print.execute();
            final DateTime from = print.<DateTime>getAttribute(CIAccounting.SubPeriod.FromDate);
            final DateTime to = print.<DateTime>getAttribute(CIAccounting.SubPeriod.ToDate);

            final QueryBuilder attrQueryBldr = new QueryBuilder(CIAccounting.Transaction2SalesDocument);
            final AttributeQuery attrQuery = attrQueryBldr
                    .getAttributeQuery(CIAccounting.Transaction2SalesDocument.ToLink);
            _queryBldr.addWhereAttrGreaterValue(CISales.DocumentSumAbstract.Date, from.minusMinutes(1));
            _queryBldr.addWhereAttrLessValue(CISales.DocumentSumAbstract.Date, to.plusDays(1));
            _queryBldr.addWhereAttrNotInQuery(CISales.DocumentSumAbstract.ID, attrQuery);
        }
    };
    return multi.execute(_parameter);
}

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

License:Apache License

/**
 * Called from a tree menu command to present the documents that are with status
 * booked and therefor must be worked on still.
 *
 * @param _parameter Paremeter//ww w.  j  a v  a 2s .  c o m
 * @return List if Instances
 * @throws EFapsException on error
 */
public Return getExternals(final Parameter _parameter) throws EFapsException {
    final MultiPrint multi = new MultiPrint() {
        @Override
        protected void add2QueryBldr(final Parameter _parameter, final QueryBuilder _queryBldr)
                throws EFapsException {
            final Instance instance = _parameter.getInstance();
            final PrintQuery print = new CachedPrintQuery(instance, SubPeriod_Base.CACHEKEY);
            print.addAttribute(CIAccounting.SubPeriod.FromDate);
            print.addAttribute(CIAccounting.SubPeriod.ToDate);
            print.execute();
            final DateTime from = print.<DateTime>getAttribute(CIAccounting.SubPeriod.FromDate);
            final DateTime to = print.<DateTime>getAttribute(CIAccounting.SubPeriod.ToDate);

            final QueryBuilder attrQueryBldr = new QueryBuilder(CIAccounting.Transaction2SalesDocument);
            final AttributeQuery attrQuery = attrQueryBldr
                    .getAttributeQuery(CIAccounting.Transaction2SalesDocument.ToLink);
            _queryBldr.addWhereAttrGreaterValue(CISales.DocumentSumAbstract.Date, from.minusMinutes(1));
            _queryBldr.addWhereAttrLessValue(CISales.DocumentSumAbstract.Date, to.plusDays(1));
            _queryBldr.addWhereAttrNotInQuery(CISales.DocumentSumAbstract.ID, attrQuery);
        }
    };
    return multi.execute(_parameter);
}

From source file:org.efaps.esjp.accounting.transaction.Action_Base.java

License:Apache License

/**
 * Eval action def4 incoming./*from   ww  w.j  ava2 s . com*/
 *
 * @param _parameter Parameter as passed by the eFaps API
 * @param _actionRelInst relation Instance
 * @return the incoming action def
 * @throws EFapsException on error
 */
protected IncomingActionDef evalActionDef4Incoming(final Parameter _parameter, final Instance _actionRelInst)
        throws EFapsException {
    final IncomingActionDef ret = getIncomingActionDef(_parameter);

    final PrintQuery print = new PrintQuery(_actionRelInst);
    final SelectBuilder selActionInst = SelectBuilder.get()
            .linkto(CIERP.ActionDefinition2DocumentAbstract.FromLinkAbstract).instance();
    final SelectBuilder selDocInst = SelectBuilder.get()
            .linkto(CIERP.ActionDefinition2DocumentAbstract.ToLinkAbstract).instance();
    final SelectBuilder selDocTypeInst = SelectBuilder.get()
            .linkto(CIERP.ActionDefinition2DocumentAbstract.ToLinkAbstract)
            .linkfrom(CIERP.Document2DocumentTypeAbstract.DocumentLinkAbstract)
            .linkto(CIERP.Document2DocumentTypeAbstract.DocumentTypeLinkAbstract).instance();
    final SelectBuilder selDocDate = SelectBuilder.get()
            .linkto(CIERP.ActionDefinition2DocumentAbstract.ToLinkAbstract)
            .attribute(CIERP.DocumentAbstract.Date);
    print.addSelect(selActionInst, selDocInst, selDocTypeInst, selDocDate);
    print.addAttribute(CIERP.ActionDefinition2DocumentAbstract.Date);
    print.execute();

    final DateTime acdDate = print.getAttribute(CIERP.ActionDefinition2DocumentAbstract.Date);
    if (acdDate != null) {
        ParameterUtil.setParameterValues(ret.getParameter(), "date", acdDate.toString());
    }
    ret.setActionInst(print.<Instance>getSelect(selActionInst));
    ret.setDocInst(print.<Instance>getSelect(selDocInst));
    ret.setDocTypeInst(print.<Instance>getSelect(selDocTypeInst));

    final QueryBuilder queryBldr = new QueryBuilder(CIAccounting.ActionDefinition2Case4IncomingAbstract);
    queryBldr.addWhereAttrEqValue(CIAccounting.ActionDefinition2Case4IncomingAbstract.FromLinkAbstract,
            ret.getActionInst());
    final MultiPrintQuery multi = queryBldr.getPrint();
    final SelectBuilder selCaseInst = SelectBuilder.get()
            .linkto(CIAccounting.ActionDefinition2Case4IncomingAbstract.ToLinkAbstract).instance();

    final SelectBuilder selLabelInst = SelectBuilder.get()
            .linkto(CIAccounting.ActionDefinition2Case4IncomingAbstract.LabelLink).instance();
    multi.addSelect(selCaseInst, selLabelInst);
    multi.addAttribute(CIAccounting.ActionDefinition2Case4IncomingAbstract.Config);
    multi.execute();
    while (multi.next()) {
        final List<ActDef2Case4IncomingConfig> configs = multi
                .getAttribute(CIAccounting.ActionDefinition2Case4IncomingAbstract.Config);
        if (configs != null) {

            final Instance caseInst = multi.getSelect(selCaseInst);
            DateTime periodDate = null;
            if (multi.getInstanceList().size() > 1) {
                if (configs.contains(ActDef2Case4DocConfig.PERIOD4ACTIONDATE)) {
                    periodDate = acdDate == null ? new DateTime() : acdDate;
                } else if (configs.contains(ActDef2Case4DocConfig.PERIOD4DOCDATE)) {
                    periodDate = print.getSelect(selDocDate);
                }
            }
            final Instance periodInst = evalSelectedPeriod(_parameter, caseInst, periodDate);
            if (InstanceUtils.isValid(periodInst)) {
                boolean execute = true;
                // for pettyCash receipt evaluation if legal document or not
                if (ret.getDocInst().getType().isKindOf(CISales.PettyCashReceipt)) {
                    if (ret.getDocTypeInst() == null) {
                        execute = configs.contains(ActDef2Case4IncomingConfig.WITHOUTDOC);
                    } else {
                        execute = !configs.contains(ActDef2Case4IncomingConfig.WITHOUTDOC);
                    }
                } else if (ret.getDocInst().getType().isKindOf(CISales.FundsToBeSettledReceipt)) {
                    if (ret.getDocTypeInst() == null) {
                        execute = configs.contains(ActDef2Case4IncomingConfig.WITHOUTDOC);
                    } else {
                        execute = !configs.contains(ActDef2Case4IncomingConfig.WITHOUTDOC);
                    }
                }
                if (execute) {
                    final Instance labelInst = multi.getSelect(selLabelInst);
                    if (labelInst != null && labelInst.isValid()) {
                        final List<Instance> labels = new Label().getLabelInst4Documents(_parameter,
                                ret.getDocInst());
                        if (labels.contains(labelInst)) {
                            ret.setConfigs(configs);
                            ret.setCaseInst(caseInst);
                            break;
                        }
                    } else {
                        ret.setConfigs(configs);
                        ret.setCaseInst(caseInst);
                    }
                    break;
                }
            }
        }
    }

    if (ret.getCaseInst() != null && ret.getCaseInst().isValid()) {
        ret.setExecute(true);
        if (ret.getConfigs().contains(ActDef2Case4IncomingConfig.PURCHASERECORD)) {
            final DateTime date = new DateTime();
            final QueryBuilder prQueryBldr = new QueryBuilder(CIAccounting.PurchaseRecord);
            prQueryBldr.addWhereAttrLessValue(CIAccounting.PurchaseRecord.Date, date.plusDays(1));
            prQueryBldr.addWhereAttrGreaterValue(CIAccounting.PurchaseRecord.DueDate, date.minusDays(1));
            prQueryBldr.addWhereAttrEqValue(CIAccounting.PurchaseRecord.Status,
                    Status.find(CIAccounting.PurchaseRecordStatus.Open));
            final InstanceQuery prQuery = prQueryBldr.getQuery();
            prQuery.execute();
            if (prQuery.next()) {
                ParameterUtil.setParameterValues(ret.getParameter(), "purchaseRecord",
                        prQuery.getCurrentValue().getOid());
            }
        }
        if (ret.getConfigs().contains(ActDef2Case4IncomingConfig.TRANSACTION)) {
            ParameterUtil.setParameterValues(ret.getParameter(), "case", ret.getCaseInst().getOid());
            ParameterUtil.setParameterValues(ret.getParameter(), "document", ret.getDocInst().getOid());
            if (ret.getConfigs().contains(ActDef2Case4IncomingConfig.SUBJOURNAL)) {
                final QueryBuilder sjQueryBldr = new QueryBuilder(CIAccounting.Report2Case);
                sjQueryBldr.addWhereAttrEqValue(CIAccounting.Report2Case.ToLink, ret.getCaseInst());
                final MultiPrintQuery sjMulti = sjQueryBldr.getPrint();
                final SelectBuilder sel = new SelectBuilder().linkto(CIAccounting.Report2Case.FromLink).oid();
                sjMulti.addSelect(sel);
                sjMulti.execute();
                if (sjMulti.next()) {
                    ParameterUtil.setParameterValues(ret.getParameter(), "subJournal",
                            sjMulti.<String>getSelect(sel));
                }
            }
            if (ret.getConfigs().contains(ActDef2Case4IncomingConfig.SETSTATUS)) {
                ParameterUtil.setParameterValues(ret.getParameter(), "archiveConfig",
                        Integer.toString(ArchiveConfig.ARCHIVED.getInt()));
            }
        }
    }
    return ret;
}

From source file:org.efaps.esjp.accounting.transaction.FieldValue_Base.java

License:Apache License

/**
 * @param _parameter Parameter as passed from the eFaps API
 * @return values for dropdown/*w  w  w .j  av a 2  s .  co m*/
 * @throws EFapsException on error
 */
public Return getPurchaseRecordFieldValue(final Parameter _parameter) throws EFapsException {
    final Field field = new Field() {

        @Override
        protected void add2QueryBuilder4List(final Parameter _parameter, final QueryBuilder _queryBldr)
                throws EFapsException {
            final DateTime[] dates = getDateMaxMin(_parameter);
            _queryBldr.addWhereAttrGreaterValue(CIAccounting.PurchaseRecord.Date, dates[0].minusDays(1));
        }

        @Override
        protected void updatePositionList(final Parameter _parameter, final List<DropDownPosition> _values)
                throws EFapsException {
            super.updatePositionList(_parameter, _values);
            boolean select = true;
            final List<Instance> docInsts = getSelectedDocInst(_parameter);
            if (!docInsts.isEmpty()) {
                final QueryBuilder dtQueryBldr = new QueryBuilder(CISales.Document2DocumentType);
                dtQueryBldr.addWhereAttrEqValue(CISales.Document2DocumentType.DocumentLink, docInsts.toArray());
                final MultiPrintQuery multi = dtQueryBldr.getPrint();
                final SelectBuilder docTypeSel = new SelectBuilder()
                        .linkto(CISales.Document2DocumentType.DocumentTypeLink)
                        .attribute(CIERP.DocumentType.Configuration);
                multi.addSelect(docTypeSel);
                multi.executeWithoutAccessCheck();
                while (multi.next()) {
                    final List<DocTypeConfiguration> configs = multi.getSelect(docTypeSel);
                    if (configs == null
                            || configs != null && !configs.contains(DocTypeConfiguration.PURCHASERECORD)) {
                        select = false;
                        break;
                    }
                }
            }
            if (select) {
                final DateTime date = new DateTime();
                final QueryBuilder queryBldr = new QueryBuilder(CIAccounting.PurchaseRecord);
                queryBldr.addWhereAttrLessValue(CIAccounting.PurchaseRecord.Date, date.plusDays(1));
                queryBldr.addWhereAttrGreaterValue(CIAccounting.PurchaseRecord.DueDate, date.minusDays(1));
                queryBldr.addOrderByAttributeAsc(CIAccounting.PurchaseRecord.Date);
                final InstanceQuery query = queryBldr.getQuery();
                boolean selected = false;
                for (final Instance inst : query.executeWithoutAccessCheck()) {
                    for (final DropDownPosition dd : _values) {
                        if (inst.getOid().equals(dd.getValue())) {
                            dd.setSelected(true);
                            selected = true;
                            break;
                        }
                    }
                    if (selected) {
                        break;
                    }
                }
            }
        }
    };
    return field.getOptionListFieldValue(_parameter);
}

From source file:org.efaps.esjp.accounting.transaction.Recalculate_Base.java

License:Apache License

/**
 * @param _parameter Parameter as passed by the eFasp API
 * @return new Return/*from   w  ww . ja  va2 s .c  o  m*/
 * @throws EFapsException on error
 */
public Return createGainLoss4SimpleAccount(final Parameter _parameter) throws EFapsException {
    final PrintQuery printPer = new PrintQuery(_parameter.getInstance());
    final SelectBuilder selCurrInst = SelectBuilder.get().linkto(CIAccounting.Period.CurrencyLink).instance();
    printPer.addSelect(selCurrInst);
    printPer.addAttribute(CIAccounting.Period.FromDate, CIAccounting.Period.CurrencyLink);
    printPer.execute();
    final DateTime dateFrom = printPer.<DateTime>getAttribute(CIAccounting.Period.FromDate);
    final Instance currencyInst = printPer.<Instance>getSelect(selCurrInst);

    final String[] relOIDs = (String[]) Context.getThreadContext()
            .getSessionAttribute(CIFormAccounting.Accounting_GainLoss4SimpleAccountForm.config2period.name);
    final DateTime dateTo = new DateTime(_parameter
            .getParameterValue(CIFormAccounting.Accounting_GainLoss4SimpleAccountForm.transactionDate.name));
    final DateTime dateEx = new DateTime(_parameter
            .getParameterValue(CIFormAccounting.Accounting_GainLoss4SimpleAccountForm.exchangeDate.name));
    Insert insert = null;
    BigDecimal totalSum = BigDecimal.ZERO;

    for (final String oid : relOIDs) {
        Instance tarCurInst = null;
        final Instance relInst = Instance.get(oid);
        final PrintQuery print = new PrintQuery(relInst);
        final SelectBuilder selAccount = new SelectBuilder()
                .linkto(CIAccounting.AccountConfigSimple2Period.FromLink).oid();
        print.addSelect(selAccount);
        print.addAttribute(CIAccounting.AccountConfigSimple2Period.IsSale);
        if (print.execute()) {
            final Instance instAcc = Instance.get(print.<String>getSelect(selAccount));
            final boolean isSale = print.<Boolean>getAttribute(CIAccounting.AccountConfigSimple2Period.IsSale);
            final QueryBuilder attrQuerBldr = new QueryBuilder(CIAccounting.Transaction);
            attrQuerBldr.addWhereAttrEqValue(CIAccounting.Transaction.PeriodLink, _parameter.getInstance());
            attrQuerBldr.addWhereAttrGreaterValue(CIAccounting.Transaction.Date, dateFrom.minusMinutes(1));
            attrQuerBldr.addWhereAttrLessValue(CIAccounting.Transaction.Date, dateTo.plusDays(1));
            final AttributeQuery attrQuery = attrQuerBldr.getAttributeQuery(CIAccounting.Transaction.ID);

            final QueryBuilder queryBldr = new QueryBuilder(CIAccounting.TransactionPositionAbstract);
            queryBldr.addWhereAttrEqValue(CIAccounting.TransactionPositionAbstract.AccountLink, instAcc);
            queryBldr.addWhereAttrInQuery(CIAccounting.TransactionPositionAbstract.TransactionLink, attrQuery);
            final MultiPrintQuery multi = queryBldr.getPrint();
            final SelectBuilder selTRInst = SelectBuilder.get()
                    .linkto(CIAccounting.TransactionPositionAbstract.RateCurrencyLink).instance();
            multi.addSelect(selTRInst);
            multi.addAttribute(CIAccounting.TransactionPositionAbstract.Amount,
                    CIAccounting.TransactionPositionAbstract.RateAmount);
            BigDecimal gainlossSum = BigDecimal.ZERO;
            multi.execute();
            while (multi.next()) {
                final BigDecimal oldRateAmount = multi
                        .<BigDecimal>getAttribute(CIAccounting.TransactionPositionAbstract.RateAmount);
                final BigDecimal oldAmount = multi
                        .<BigDecimal>getAttribute(CIAccounting.TransactionPositionAbstract.Amount);
                final Instance targetCurrInst = multi.<Instance>getSelect(selTRInst);
                final BigDecimal rate = evaluateRate(_parameter, dateEx, currencyInst, targetCurrInst, isSale);
                final BigDecimal newAmount = oldRateAmount.divide(rate, BigDecimal.ROUND_HALF_UP);

                BigDecimal gainloss = BigDecimal.ZERO;
                if (!currencyInst.equals(targetCurrInst)) {
                    gainloss = newAmount.subtract(oldAmount);
                    tarCurInst = targetCurrInst;
                } else {
                    gainloss = newAmount;
                }
                gainlossSum = gainlossSum.add(gainloss);
            }
            totalSum = totalSum.add(gainlossSum);

            final Map<String, String[]> map = validateInfo(_parameter, gainlossSum);
            final String[] accs = map.get("accs");
            final String[] check = map.get("check");

            if (checkAccounts(accs, 0, check).length() > 0) {
                if (gainlossSum.compareTo(BigDecimal.ZERO) != 0) {
                    final String[] accOids = map.get("accountOids");
                    if (insert == null) {
                        final String descr = DBProperties.getFormatedDBProperty(
                                Recalculate.class.getName() + ".gainLoss4SimpleAccountTransDesc",
                                dateTo.toDate());
                        insert = new Insert(CIAccounting.Transaction);
                        insert.add(CIAccounting.Transaction.Description, descr);
                        insert.add(CIAccounting.Transaction.Date, dateTo);
                        insert.add(CIAccounting.Transaction.PeriodLink, _parameter.getInstance());
                        insert.add(CIAccounting.Transaction.Status,
                                Status.find(CIAccounting.TransactionStatus.Open));
                        insert.execute();
                    }

                    Insert insertPos = new Insert(CIAccounting.TransactionPositionDebit);
                    insertPos.add(CIAccounting.TransactionPositionDebit.TransactionLink, insert.getInstance());
                    if (gainlossSum.signum() > 0) {
                        insertPos.add(CIAccounting.TransactionPositionDebit.AccountLink,
                                Instance.get(accOids[0]));
                    } else {
                        insertPos.add(CIAccounting.TransactionPositionDebit.AccountLink, instAcc);
                    }
                    insertPos.add(CIAccounting.TransactionPositionDebit.Amount, gainlossSum.abs().negate());
                    insertPos.add(CIAccounting.TransactionPositionDebit.RateAmount, BigDecimal.ZERO);
                    insertPos.add(CIAccounting.TransactionPositionDebit.CurrencyLink, currencyInst);
                    insertPos.add(CIAccounting.TransactionPositionDebit.RateCurrencyLink, tarCurInst);
                    insertPos.add(CIAccounting.TransactionPositionDebit.Rate,
                            new Object[] { BigDecimal.ONE, BigDecimal.ONE });
                    insertPos.execute();

                    insertPos = new Insert(CIAccounting.TransactionPositionCredit);
                    insertPos.add(CIAccounting.TransactionPositionCredit.TransactionLink, insert.getInstance());
                    if (gainlossSum.signum() > 0) {
                        insertPos.add(CIAccounting.TransactionPositionCredit.AccountLink, instAcc);
                    } else {
                        insertPos.add(CIAccounting.TransactionPositionCredit.AccountLink,
                                Instance.get(accOids[0]));
                    }
                    insertPos.add(CIAccounting.TransactionPositionCredit.Amount, gainlossSum.abs());
                    insertPos.add(CIAccounting.TransactionPositionCredit.RateAmount, BigDecimal.ZERO);
                    insertPos.add(CIAccounting.TransactionPositionCredit.CurrencyLink, currencyInst);
                    insertPos.add(CIAccounting.TransactionPositionCredit.RateCurrencyLink, tarCurInst);
                    insertPos.add(CIAccounting.TransactionPositionCredit.Rate,
                            new Object[] { BigDecimal.ONE, BigDecimal.ONE });
                    insertPos.execute();
                }
            }
        }
    }
    if (insert != null) {
        final Instance instance = insert.getInstance();
        // create classifications
        final Classification classification1 = (Classification) CIAccounting.TransactionClass.getType();
        final Insert relInsert1 = new Insert(classification1.getClassifyRelationType());
        relInsert1.add(classification1.getRelLinkAttributeName(), instance);
        relInsert1.add(classification1.getRelTypeAttributeName(), classification1.getId());
        relInsert1.execute();

        final Insert classInsert1 = new Insert(classification1);
        classInsert1.add(classification1.getLinkAttributeName(), instance);
        classInsert1.execute();

        final Classification classification = (Classification) CIAccounting.TransactionClassGainLoss.getType();
        final Insert relInsert = new Insert(classification.getClassifyRelationType());
        relInsert.add(classification.getRelLinkAttributeName(), instance);
        relInsert.add(classification.getRelTypeAttributeName(), classification.getId());
        relInsert.execute();

        final Insert classInsert = new Insert(classification);
        classInsert.add(classification.getLinkAttributeName(), instance);
        classInsert.add(CIAccounting.TransactionClassGainLoss.Amount, totalSum);
        classInsert.add(CIAccounting.TransactionClassGainLoss.RateAmount, totalSum);
        classInsert.add(CIAccounting.TransactionClassGainLoss.CurrencyLink, currencyInst);
        classInsert.add(CIAccounting.TransactionClassGainLoss.RateCurrencyLink, currencyInst);
        classInsert.add(CIAccounting.TransactionClassGainLoss.Rate,
                new Object[] { BigDecimal.ONE, BigDecimal.ONE });
        classInsert.execute();
    }
    // clean up
    Context.getThreadContext()
            .removeSessionAttribute(CIFormAccounting.Accounting_GainLoss4SimpleAccountForm.config2period.name);
    return new Return();
}

From source file:org.efaps.esjp.bpm.listener.PotentialOwnerListener_Base.java

License:Apache License

@Override
public Return execute(final Parameter _parameter) throws EFapsException {
    final Return ret = new Return();
    final List<?> owners = (List<?>) _parameter.get(ParameterValues.BPM_VALUES);
    if (!owners.isEmpty()) {
        final List<String> uuids = new ArrayList<String>();
        final List<AbstractUserObject> newOwners = new ArrayList<AbstractUserObject>();
        for (final Object owner : owners) {
            newOwners.add((AbstractUserObject) owner);
            uuids.add(((AbstractUserObject) owner).getUUID().toString());
        }//from  www.j  av  a 2  s . co m
        final DateTime date = new DateMidnight().toDateTime();

        final QueryBuilder queryBldr = new QueryBuilder(CIBPM.DelegateAutomaticAbstract);
        queryBldr.addWhereAttrEqValue(CIBPM.DelegateAutomaticAbstract.FromUserUUID, uuids.toArray());
        queryBldr.addWhereAttrGreaterValue(CIBPM.DelegateAutomaticAbstract.ValidFrom,
                date.minusDays(1).minusSeconds(1));
        queryBldr.addWhereAttrLessValue(CIBPM.DelegateAutomaticAbstract.ValidUntil,
                date.plusDays(1).plusSeconds(1));
        final CachedMultiPrintQuery multi = queryBldr.getCachedPrint(BPM.CACHEKEY4DELEGATE).setLifespan(8)
                .setLifespanUnit(TimeUnit.HOURS);
        multi.addAttribute(CIBPM.DelegateAutomaticAbstract.ToUserUUID,
                CIBPM.DelegateAutomaticAbstract.ValidFrom, CIBPM.DelegateAutomaticAbstract.ValidUntil);
        multi.executeWithoutAccessCheck();
        while (multi.next()) {
            final DateTime validFrom = multi.<DateTime>getAttribute(CIBPM.DelegateAutomaticAbstract.ValidFrom);
            final DateTime validUntil = multi
                    .<DateTime>getAttribute(CIBPM.DelegateAutomaticAbstract.ValidUntil);
            if (validFrom.toLocalDateTime().isBefore(new LocalDateTime())
                    && validUntil.toLocalDateTime().isAfter(new LocalDateTime())) {
                final String tuUserUUID = multi
                        .<String>getAttribute(CIBPM.DelegateAutomaticAbstract.ToUserUUID);
                newOwners.add(AbstractUserObject.getUserObject(UUID.fromString(tuUserUUID)));
            }
        }
        ret.put(ReturnValues.VALUES, newOwners);
    }
    return ret;
}

From source file:org.efaps.esjp.common.uiform.Field_Base.java

License:Apache License

/**
 * Method to get a Datevalue for a field on create to set a more "intelligent"
 * value like "monday of current week" etc.
 * Properties://from   w ww . j a  v  a  2 s . c o m
 * <table>
 *  <tr><th>Property</th><th>Value</th><th>Description</th></tr>
 *  <tr><td>withDayOfWeek</td><td>1,2,3,4,5,6,7</td>
 *      <td>the Integer represents on of the weekdays starting with Monday, Tuesday...</td></tr>
 *  <tr><td>withDayOfMonth</td><td>Integer</td><td>day of month</td></tr>
 *  <tr><td>minusDays</td><td>Integer</td><td>days to subtract</td></tr>
 *  <tr><td>plusDays</td><td>Integer</td><td>days to add</td></tr>
 *  <tr><td>minusWeeks</td><td>Integer</td><td>weeks to subtract</td></tr>
 *  <tr><td>plusWeeks</td><td>Integer</td><td>weeks to add</td></tr>
 * </table>
 *
 * @param _parameter Parameter as passed by the eFaps API
 * @return ReturnValue containing the date
 * @throws EFapsException on error
 */
public Return getDefault4DateFieldValue(final Parameter _parameter) throws EFapsException {
    final Return ret = new Return();
    final TargetMode mode = (TargetMode) _parameter.get(ParameterValues.ACCESSMODE);
    final Collection<TargetMode> modes = new ArrayList<>();
    for (final String aMode : analyseProperty(_parameter, "TargetMode").values()) {
        modes.add(EnumUtils.getEnum(TargetMode.class, aMode.toUpperCase()));
    }
    if ((TargetMode.CREATE.equals(mode) || TargetMode.EDIT.equals(mode))
            && (modes.isEmpty() || modes.contains(mode))) {
        DateTime date = new DateTime();
        if (containsProperty(_parameter, "withDayOfWeek")) {
            final int dayOfWeek = Integer.parseInt(getProperty(_parameter, "withDayOfWeek"));
            date = date.withDayOfWeek(dayOfWeek);
        }
        if (containsProperty(_parameter, "withDayOfMonth")) {
            final int dayOfMonth = Integer.parseInt(getProperty(_parameter, "withDayOfMonth"));
            date = date.withDayOfMonth(dayOfMonth);
        }
        if (containsProperty(_parameter, "days")) {
            final int days = Integer.parseInt(getProperty(_parameter, "days"));
            date = date.plusDays(days);
        }
        if (containsProperty(_parameter, "weeks")) {
            final int weeks = Integer.parseInt(getProperty(_parameter, "weeks"));
            date = date.plusWeeks(weeks);
        }
        if (containsProperty(_parameter, "months")) {
            final int months = Integer.parseInt(getProperty(_parameter, "months"));
            date = date.plusMonths(months);
        }
        if (containsProperty(_parameter, "years")) {
            final int years = Integer.parseInt(getProperty(_parameter, "years"));
            date = date.plusYears(years);
        }
        ret.put(ReturnValues.VALUES, date);
    }
    return ret;
}

From source file:org.efaps.esjp.common.uitable.MultiPrint_Base.java

License:Apache License

/**
 * @param _field Field the date is wanted for
 * @return datetime array/*  www  . jav a 2 s.co m*/
 * @throws EFapsException on error
 */
protected Object[] getFilter(final Field _field) throws EFapsException {
    Object[] ret = null;
    final String filter = _field.getFilter().getDefaultValue();
    if (filter != null) {
        final String[] parts = filter.split(":");
        final String range = parts[0];
        final int fromSub = parts.length > 1 ? Integer.parseInt(parts[1]) : 0;
        final int rangeCount = parts.length > 2 ? Integer.parseInt(parts[2]) : 1;
        DateTime dateFrom = new DateTime();
        DateTime dateTo = new DateTime();
        if (range != null) {
            final FilterDefault def = FilterDefault.valueOf(range.toUpperCase());
            // to get a timezone dependent DateTim
            DateTime tmp = DateTimeUtil.translateFromUI(new DateTime()).withTimeAtStartOfDay();
            switch (def) {
            case TODAY:
                dateFrom = tmp.toDateTime().minusDays(fromSub).minusMinutes(1);
                dateTo = dateFrom.plusDays(rangeCount).plusSeconds(1);
                ret = new DateTime[] { dateFrom, dateTo };
                break;
            case WEEK:
                // the first of the current week
                tmp = tmp.minusDays(tmp.getDayOfWeek() - 1);
                dateFrom = tmp.minusWeeks(fromSub).minusMinutes(1);
                dateTo = tmp.plusWeeks(rangeCount);
                ret = new DateTime[] { dateFrom, dateTo };
                break;
            case MONTH:
                // the first of the current month
                tmp = tmp.minusDays(tmp.getDayOfMonth() - 1);
                // substract the month and a minute before
                dateFrom = tmp.minusMonths(fromSub).minusMinutes(1);
                // add the month
                dateTo = tmp.plusMonths(rangeCount);
                ret = new DateTime[] { dateFrom, dateTo };
                break;
            case YEAR:
                tmp = tmp.minusDays(tmp.getDayOfYear() - 1);
                dateFrom = tmp.minusYears(fromSub).minusMinutes(1);
                dateTo = tmp.plusYears(rangeCount);
                ret = new DateTime[] { dateFrom, dateTo };
                break;
            case ALL:
                ret = new String[] { "*" };
                break;
            case NONE:
                break;
            default:
                ret = new String[] { range + "*" };
                break;
            }
        }
    }
    return ret;
}

From source file:org.egov.collection.service.ReceiptHeaderService.java

License:Open Source License

/**
 * This method persists the given <code>ReceiptPayeeDetails</code> entity. If the receipt number for all of the receipts is
 * generated, if not already present.//  w w  w . jav a 2s.c om
 */

@Transactional
public ReceiptHeader persistChallan(final ReceiptHeader receiptHeader, final Position position,
        final String actionName, final String approvalRemarks) {
    final Integer validUpto = Integer
            .valueOf(collectionsUtil.getAppConfigValue(CollectionConstants.MODULE_NAME_COLLECTIONS_CONFIG,
                    CollectionConstants.APPCONFIG_VALUE_CHALLANVALIDUPTO));
    final Challan challan = receiptHeader.getChallan();
    DateTime date = new DateTime(challan.getChallanDate());
    date = date.plusDays(validUpto);
    challan.setValidUpto(date.toDate());
    if (challan.getChallanNumber() == null)
        setChallanNumber(challan);

    challan.setReceiptHeader(receiptHeader);
    receiptHeader.setChallan(challan);
    super.persist(receiptHeader);
    LOGGER.info("Persisting challan with challan number " + challan.getChallanNumber());
    challanService.workflowtransition(receiptHeader.getChallan(), position, actionName, approvalRemarks);
    return receiptHeader;
}