@Override public int diff(final Item it, final Collation coll, final InputInfo ii) throws QueryException { final ADate d = (ADate) (it instanceof ADate ? it : type.cast(it, null, null, ii)); final BigDecimal d1 = seconds().add(days().multiply(DAYSECONDS)); final BigDecimal d2 = d.seconds().add(d.days().multiply(DAYSECONDS)); return d1.compareTo(d2); }
public String expandBody(MssCFGenContext genContext) { final String S_ProcName = "CFDbTestMssCFBindReqMinMaxValueTestUInt64.expandBody() "; if (genContext == null) { throw CFLib.getDefaultExceptionFactory() .newNullArgumentException(getClass(), "expandBody", 1, "genContext"); } ICFLibAnyObj genDef = genContext.getGenDef(); if (genDef == null) { throw CFLib.getDefaultExceptionFactory() .newNullArgumentException(getClass(), "expandBody", 1, "genContext.getGenDef()"); } String ret; if (genDef instanceof ICFDbTestReqMinMaxValueObj) { BigDecimal testUInt64 = ((ICFDbTestReqMinMaxValueObj) genDef).getRequiredTestUInt64(); if (testUInt64 == null) { throw CFLib.getDefaultExceptionFactory() .newNullArgumentException(getClass(), "expandBody", 0, "Value"); } ret = testUInt64.toString(); } else { throw CFLib.getDefaultExceptionFactory() .newUnsupportedClassException( getClass(), "expandBody", "genContext.getGenDef()", genDef, "ICFDbTestReqMinMaxValueObj"); } return (ret); }
/** * Returns a day count for the specified years, months and days. All values must be specified in * their internal representation (undefined values are supported, too). Algorithm is derived from * J R Stockton (http://www.merlyn.demon.co.uk/daycount.htm). * * @param year year * @param month month * @param day days * @return days */ private static BigDecimal days(final long year, final int month, final int day) { final long y = year - (month < 2 ? 1 : 0); final int m = month + (month < 2 ? 13 : 1); final int d = day + 1; return BD365 .multiply(BigDecimal.valueOf(y)) .add(BigDecimal.valueOf(y / 4 - y / 100 + y / 400 - 92 + d + (153 * m - 2) / 5)); }
/** Calculate Performance Goal as multiplier */ public void setGoalPerformance() { BigDecimal MeasureTarget = getMeasureTarget(); BigDecimal MeasureActual = getMeasureActual(); BigDecimal GoalPerformance = Env.ZERO; if (MeasureTarget.signum() != 0) GoalPerformance = MeasureActual.divide(MeasureTarget, 6, BigDecimal.ROUND_HALF_UP); super.setGoalPerformance(GoalPerformance); } // setGoalPerformance
public BigDecimal getTotalPayments() { BigDecimal totalPayments = this.loanCalculator .getCumulativePrincipal() .add(this.loanCalculator.getCumulativeInterest()); totalPayments = totalPayments.setScale(2, BigDecimal.ROUND_HALF_UP); return totalPayments; }
public BigDecimal getSumLiqLots() { BigDecimal sumLiqLots = BigDecimal.ZERO; for (Iterator<RelationOrder> iterator = this._outstandingOrders.values().iterator(); iterator.hasNext(); ) { RelationOrder relationOrder = iterator.next(); if (relationOrder.get_IsSelected() && relationOrder.get_LiqLot() != null) { sumLiqLots = sumLiqLots.add(relationOrder.get_LiqLot()); } } return sumLiqLots; }
public BigDecimal getTotalCloseLotOfFullClose() { BigDecimal sumLiqLots = BigDecimal.ZERO; for (Iterator<RelationOrder> iterator = this._outstandingOrders.values().iterator(); iterator.hasNext(); ) { RelationOrder relationOrder = iterator.next(); if (relationOrder.isFullClose()) { sumLiqLots = sumLiqLots.add(relationOrder.get_LiqLot()); } } return sumLiqLots; }
public BigDecimal getQuoteLotForDirectLiq(boolean isSpotTrade, Boolean isMakeLimitOrder) { BigDecimal quoteLot = BigDecimal.ZERO; for (Iterator<RelationOrder> iterator = this._outstandingOrders.values().iterator(); iterator.hasNext(); ) { RelationOrder relationOrder = iterator.next(); quoteLot = quoteLot.add( relationOrder.get_OpenOrder().getAvailableLotBanlance(isSpotTrade, isMakeLimitOrder)); } return quoteLot; }
@Override public BigDecimal evaluate(QueryEval eval) { Object firstValue = multiplyExprs[0].evaluate(eval); BigDecimal result = new BigDecimal(firstValue.toString()); for (int i = 1; i < multiplyExprs.length; i++) { Object nextValue = multiplyExprs[i].evaluate(eval); BigDecimal operand = new BigDecimal(nextValue.toString()); result = operators.get(i - 1) ? result.add(operand) : result.subtract(operand); } return result; }
public BigDecimal getMonthlyPayment() { /*if (this.paymentSchedule == null) { this.paymentSchedule = loanCalculator.calculatePaymentSchedule(); }*/ Iterator payments = this.paymentSchedule.getPayments(); BigDecimal monthlyPayment = null; if (payments.hasNext()) { Payment payment = (Payment) payments.next(); monthlyPayment = payment.getPrincipal().add(payment.getInterest()); monthlyPayment = monthlyPayment.setScale(2, BigDecimal.ROUND_HALF_UP); } return monthlyPayment; }
public int compare(MakeOrderAccount left, MakeOrderAccount right) { int leftHasClose = left.isOpen() ? 1 : 0; int rightHasClose = right.isOpen() ? 1 : 0; int result = leftHasClose - rightHasClose; if (result != 0) return result; BigDecimal leftLot = left._isBuyForCurrent ? left._buyLot : left._sellLot; BigDecimal rightLot = right._isBuyForCurrent ? right._buyLot : right._sellLot; result = leftLot.compareTo(rightLot); if (result != 0) return -result; return left._account.get_Code().compareTo(right._account.get_Code()); }
public BigDecimal getFinalPayment() { /*if (this.paymentSchedule == null) { this.paymentSchedule = loanCalculator.calculatePaymentSchedule(); }*/ Iterator payments = this.paymentSchedule.getPayments(); Payment payment = null; while (payments.hasNext()) { payment = (Payment) payments.next(); } BigDecimal finalPayment = payment.getPrincipal().add(payment.getInterest()); ; finalPayment = finalPayment.setScale(2, BigDecimal.ROUND_HALF_UP); return finalPayment; }
public static ArrayList<Symbol> toSymbols(String expression) { ArrayList<Symbol> symbols = new ArrayList<>(); for (int i = 0; i < expression.length(); i++) { char c = expression.charAt(i); if (isBracket(c)) { // bracket symbols.add(new Symbol(c)); } else if (c == ',') { symbols.add(new Symbol(c)); } else if (isOperator(c)) { if (c == '-') { if (i == 0) { // must be first +/-, so add 0 symbols.add(new Symbol(BigDecimal.valueOf(0))); symbols.add(new Symbol(c)); } else { char previous = expression.charAt(i - 1); if ((previous == ')') || isNumber(String.valueOf(previous))) { // must be "minus" // e.g. sin(3)-5, 100-5, symbols.add(new Symbol(c)); } else if ((previous == '(') || (previous == ',')) { // must be "negative" // e.g. (-3+5)/2 symbols.add(new Symbol(BigDecimal.valueOf(0))); symbols.add(new Symbol(c)); } else if ((previous == '*') || (previous == '/') || (previous == '^')) { int end = Symbol.getNumberEndAt(i + 1, expression); symbols.add(new Symbol(new BigDecimal(expression.substring(i, end)))); i = end - 1; } } } else { symbols.add(new Symbol(c)); } } else if (Character.isLetter(c)) { // function int end = Symbol.getFunctionEndAt(i, expression); symbols.add(new Symbol(expression.substring(i, end))); i = end - 1; } else if (Character.isDigit(c)) { int end = Symbol.getNumberEndAt(i, expression); String number = expression.substring(i, end); symbols.add(new Symbol(new BigDecimal(number))); i = end - 1; } } return symbols; }
public static void main(String args[]) { Scanner scan = new Scanner(System.in); while (scan.hasNext()) { BigDecimal m = scan.nextBigDecimal(); ; int i, n; n = scan.nextInt(); m = m.pow(n); String ans = m.toPlainString(); int st = 0, ed = ans.length() - 1; while (ans.charAt(st) == '0') st++; while (ans.charAt(ed) == '0') ed--; if (ans.charAt(ed) == '.') ed--; for (i = st; i <= ed; i++) System.out.print(ans.charAt(i)); System.out.println(); } }
public boolean isAcceptLot(boolean isBuy, BigDecimal lot, boolean isHasMakeNewOrder) { // if (!Parameter.isNewOrderAcceptedHedging) // { // return true; // } if (this._instrument.get_Code().substring(0, 1).equals("#")) { GetSumLotBSForOpenOrderWithFlagResult getSumLotBSForOpenOrderWithFlagResult = this.getSumLotBSForOpenOrderWithFlag(isBuy); BigDecimal sumBuyLots = getSumLotBSForOpenOrderWithFlagResult.sumBuyLots; BigDecimal sumSellLots = getSumLotBSForOpenOrderWithFlagResult.sumSellLots; if (isHasMakeNewOrder || getSumLotBSForOpenOrderWithFlagResult.isExistsUnconfirmedOrder) { return (isBuy && (sumSellLots.subtract(sumBuyLots).compareTo(lot) >= 0) || (!isBuy && (sumBuyLots.subtract(sumSellLots).compareTo(lot) >= 0))); } } return true; }
/** * Returns the date in seconds. * * @return seconds */ final BigDecimal seconds() { int z = tz; if (z == Short.MAX_VALUE) { // [CG] XQuery, DateTime: may be removed final long n = System.currentTimeMillis(); z = Calendar.getInstance().getTimeZone().getOffset(n) / 60000; } return (sec == null ? BigDecimal.ZERO : sec) .add(BigDecimal.valueOf(Math.max(0, hou) * 3600 + Math.max(0, min) * 60 - z * 60)); }
public BigDecimal closeAll() { BigDecimal totalLiqLot = BigDecimal.ZERO; for (Iterator<RelationOrder> iterator = this._outstandingOrders.values().iterator(); iterator.hasNext(); ) { RelationOrder relationOrder = iterator.next(); if (this._isBuyForCurrent != relationOrder.get_IsBuy() || (this._isForDelivery && relationOrder.get_IsBuy())) { totalLiqLot = totalLiqLot.add(relationOrder.get_LiqLot()); } } TradePolicyDetail tradePolicyDetail = this._settingsManager.getTradePolicyDetail( this._account.get_TradePolicyId(), this._instrument.get_Id()); totalLiqLot = this._isForDelivery ? AppToolkit.fixDeliveryLot(totalLiqLot, tradePolicyDetail) : totalLiqLot; // AppToolkit.fixLot(totalLiqLot, false, tradePolicyDetail, this); BigDecimal totalLiqLot2 = totalLiqLot; for (Iterator<RelationOrder> iterator = this._outstandingOrders.values().iterator(); iterator.hasNext(); ) { RelationOrder relationOrder = iterator.next(); if (this._isBuyForCurrent != relationOrder.get_IsBuy() || (this._isForDelivery && relationOrder.get_IsBuy())) { BigDecimal liqLot = relationOrder.get_LiqLot(); liqLot = totalLiqLot.compareTo(liqLot) > 0 ? liqLot : totalLiqLot; relationOrder.set_LiqLot(liqLot); totalLiqLot = totalLiqLot.subtract(liqLot); relationOrder.set_IsSelected(true); relationOrder.update(this._outstandingKey); if (totalLiqLot.compareTo(BigDecimal.ZERO) <= 0) break; } } if (this._isBuyForCurrent) { this._buyLot = totalLiqLot2; } else { this._sellLot = totalLiqLot2; } return totalLiqLot2; }
// Used by Limit,MOO,MOC,MKT,OCO for mapOrder private void setOutstandingOrders( Order mapOrder, Boolean isSpot, Boolean isMakeLimitOrder, boolean isDelivery) { /*if (this._outstandingOrders.size() > 0 || this._account.get_Type() == AccountType.Agent) { Iterator<RelationOrder> relationOrders = this._outstandingOrders.values().iterator(); while(relationOrders.hasNext()) { relationOrders.next().set_IsMakeLimitOrder(isMakeLimitOrder); } return; }*/ this._outstandingOrders.clear(); Guid orderId = mapOrder.get_Id(); RelationOrder outstandingOrder = new RelationOrder( this._tradingConsole, this._settingsManager, mapOrder, isSpot, isMakeLimitOrder, isDelivery); BigDecimal avaiableCloseLot = outstandingOrder.get_LiqLot(); if (avaiableCloseLot.compareTo(BigDecimal.ZERO) > 0) { TradePolicyDetail tradePolicyDetail = this.getTradePolicyDetail(); BigDecimal lot = isDelivery ? AppToolkit.fixDeliveryLot(avaiableCloseLot, tradePolicyDetail) : AppToolkit.fixCloseLot( avaiableCloseLot, avaiableCloseLot, tradePolicyDetail, this._account); if (avaiableCloseLot.compareTo(lot) >= 0) { outstandingOrder.set_LiqLot(lot); if (!isDelivery) outstandingOrder.set_IsMakeLimitOrder(isMakeLimitOrder); this._outstandingOrders.put(orderId, outstandingOrder); } } }
/** * Adjusts the timezone. * * @param zone timezone * @param spec indicates if zone has been specified (may be {@code null}) * @param ii input info * @throws QueryException query exception */ void tz(final DTDur zone, final boolean spec, final InputInfo ii) throws QueryException { final short t; if (spec && zone == null) { t = Short.MAX_VALUE; } else { if (zone == null) { final Calendar c = Calendar.getInstance(); t = (short) ((c.get(Calendar.ZONE_OFFSET) + c.get(Calendar.DST_OFFSET)) / 60000); } else { t = (short) (zone.min() + zone.hou() * 60); if (zone.sec().signum() != 0) throw ZONESEC_X.get(ii, zone); if (Math.abs(t) > 60 * 14 || zone.day() != 0) throw INVALZONE_X.get(ii, zone); } // change time if two competing time zones exist if (tz != Short.MAX_VALUE) add(BigDecimal.valueOf(60L * (t - tz))); } tz = t; }
/** * Adds the specified dayTime duration. * * @param add value to be added */ private void add(final BigDecimal add) { // normalized modulo: sc % 60 vs. (-sc + sc % 60 + 60 + sc) % 60 final BigDecimal sc = sec().add(add); sec = sc.signum() >= 0 ? sc.remainder(BD60) : sc.negate().add(sc.remainder(BD60)).add(BD60).add(sc).remainder(BD60); final long mn = Math.max(min(), 0) + div(sc.longValue(), 60); min = (byte) mod(mn, 60); final long ho = Math.max(hou, 0) + div(mn, 60); hou = (byte) mod(ho, 24); final long da = div(ho, 24); final long[] ymd = ymd(days().add(BigDecimal.valueOf(da))); yea = ymd[0]; mon = (byte) ymd[1]; day = (byte) ymd[2]; }
/** * Get Goal Performance in Percent * * @return performance in percent */ public int getPercent() { BigDecimal bd = getGoalPerformance().multiply(Env.ONEHUNDRED); return bd.intValue(); } // getPercent
/** * Get Goal Performance as Double * * @return performance as multipier */ public double getGoalPerformanceDouble() { BigDecimal bd = getGoalPerformance(); return bd.doubleValue(); } // getGoalPerformanceDouble
/** * Type converts values to other classes. For example an Integer can be converted to a Long. * * @param <T> Data Type. * @param value The value to be converted. * @param to The class to be converted to. Must be one of the Java types corresponding to the * DataTypes. * @return The converted value. * @throws TypeMismatchException Thrown desired class is incompatible with the source class. * @throws OverflowException Thrown only on narrowing value conversions, e.g from a BigInteger to * an Integer. */ @Nullable public static <T> T convert(Object value, Class<?> to) throws TypeMismatchException, OverflowException { final Object result; if (value == null || value.getClass() == to) { result = value; } else { final Class<?> from = value.getClass(); try { if (from == Integer.class) { // Integer -> ... if (to == Long.class) { result = new Long(((Number) value).longValue()); } else if (to == BigInteger.class) { result = BigInteger.valueOf(((Number) value).intValue()); } else if (to == Float.class) { result = new Float(((Number) value).floatValue()); } else if (to == Double.class) { result = new Double(((Number) value).doubleValue()); } else if (to == BigDecimal.class) { // Use intValue() to avoid precision errors result = new BigDecimal(((Number) value).intValue()); } else { throw new TypeMismatchException(value.getClass(), to); } } else if (from == Long.class) { // Long -> ... if (to == Integer.class) { final long l = ((Long) value).longValue(); if (l < Integer.MIN_VALUE || l > Integer.MAX_VALUE) { throw new OverflowException((Number) value, to); } result = new Integer((int) l); } else if (to == BigInteger.class) { result = BigInteger.valueOf(((Number) value).longValue()); } else if (to == Float.class) { result = new Float(((Number) value).floatValue()); } else if (to == Double.class) { result = new Double(((Number) value).doubleValue()); } else if (to == BigDecimal.class) { // Use longValue() to avoid precision errors result = new BigDecimal(((Number) value).longValue()); } else { throw new TypeMismatchException(value.getClass(), to); } } else if (from == BigInteger.class) { // BigInteger -> ... final BigInteger bi = (BigInteger) value; if (to == Integer.class) { result = new Integer(bi.intValueExact()); } else if (to == Long.class) { result = new Long(bi.longValueExact()); } else if (to == Float.class) { final float f1 = bi.floatValue(); if (f1 == Float.NEGATIVE_INFINITY || f1 == Float.POSITIVE_INFINITY) { throw new OverflowException(bi, to); } result = new Float(f1); } else if (to == Double.class) { final double d = bi.doubleValue(); if (d == Double.NEGATIVE_INFINITY || d == Double.POSITIVE_INFINITY) { throw new OverflowException(bi, to); } result = new Double(d); } else if (to == BigDecimal.class) { result = new BigDecimal(bi); } else { throw new TypeMismatchException(value.getClass(), to); } } else if (from == Float.class) { // Float -> ... final float fl = ((Float) value).floatValue(); if (to == Integer.class) { if (fl < Integer.MIN_VALUE || fl > Integer.MAX_VALUE | fl % 1 > 0) { throw new OverflowException((Number) value, to); } result = new Integer((int) fl); } else if (to == Long.class) { if (fl < Long.MIN_VALUE || fl > Long.MAX_VALUE | fl % 1 > 0) { throw new OverflowException((Number) value, to); } result = new Long((long) fl); } else if (to == BigInteger.class) { if (fl % 1 > 0) { throw new OverflowException((Number) value, to); } final BigDecimal bd = BigDecimal.valueOf(fl); result = bd.toBigInteger(); } else if (to == Double.class) { result = new Double(((Number) value).doubleValue()); } else if (to == BigDecimal.class) { result = BigDecimal.valueOf(fl); } else { throw new TypeMismatchException(value.getClass(), to); } } else if (from == Double.class) { // Double -> ... final double d = ((Double) value).doubleValue(); if (to == Integer.class) { if (d < Integer.MIN_VALUE || d > Integer.MAX_VALUE || d % 1 > 0) { throw new OverflowException((Number) value, to); } result = new Integer((int) d); } else if (to == Long.class) { // OK if (d < Long.MIN_VALUE || d > Long.MAX_VALUE || d % 1 > 0) { throw new OverflowException((Number) value, to); } result = new Long((int) d); } else if (to == BigInteger.class) { // OK if (d % 1 > 0) { throw new OverflowException((Number) value, to); } final BigDecimal bd = BigDecimal.valueOf(d); result = bd.toBigInteger(); } else if (to == Float.class) { // OK if (d < -Float.MAX_VALUE || d > Float.MAX_VALUE) { throw new OverflowException((Number) value, to); } result = new Float((float) d); } else if (to == BigDecimal.class) { // OK result = BigDecimal.valueOf(d); } else { throw new TypeMismatchException(value.getClass(), to); } } else if (from == BigDecimal.class) { // BigDecimal -> ... final BigDecimal bd = (BigDecimal) value; if (to == Integer.class) { // OK result = new Integer(bd.intValueExact()); } else if (to == Long.class) { // OK result = new Long(bd.longValueExact()); } else if (to == BigInteger.class) { // OK // BigDecimal modulus final BigDecimal remainder = bd.remainder(BigDecimal.ONE); if (!remainder.equals(BigDecimal.ZERO)) { throw new OverflowException(bd, to); } result = bd.toBigInteger(); } else if (to == Float.class) { // OK if (bd.compareTo(BigDecimal_MIN_FLOAT) < 0 || bd.compareTo(BigDecimal_MAX_FLOAT) > 0) { throw new OverflowException(bd, to); } result = new Float(bd.floatValue()); } else if (to == Double.class) { // OK if (bd.compareTo(BigDecimal_MIN_DOUBLE) < 0 || bd.compareTo(BigDecimal_MAX_DOUBLE) > 0) { throw new OverflowException(bd, to); } result = new Double(bd.doubleValue()); } else { throw new TypeMismatchException(value.getClass(), to); } } else { throw new UnexpectedException("convert: " + from.getName()); } } catch (final ArithmeticException e) { // Thrown by intValueExact() etc. throw new OverflowException((Number) value, to); } } @SuppressWarnings("unchecked") final T t = (T) result; return t; }
public BigDecimal combine(BigDecimal x, BigDecimal y) { return x.add(y); }
public BigDecimal function(BigDecimal x) { return x.ulp(); }
/** * Converts a day count into year, month and day components. Algorithm is derived from J R * Stockton (http://www.merlyn.demon.co.uk/daycount.htm). * * @param days day count * @return result array */ private static long[] ymd(final BigDecimal days) { BigDecimal d = days; BigDecimal t = d.add(BD36525).multiply(BD4).divideToIntegralValue(BD146097).subtract(BigDecimal.ONE); BigDecimal y = BD100.multiply(t); d = d.subtract(BD36524.multiply(t).add(t.divideToIntegralValue(BD4))); t = d.add(BD366).multiply(BD4).divideToIntegralValue(BD1461).subtract(BigDecimal.ONE); y = y.add(t); d = d.subtract(BD365.multiply(t).add(t.divideToIntegralValue(BD4))); final BigDecimal m = BD5.multiply(d).add(BD2).divideToIntegralValue(BD153); d = d.subtract(BD153.multiply(m).add(BD2).divideToIntegralValue(BD5)); long mm = m.longValue(); if (mm > 9) { mm -= 12; y = y.add(BigDecimal.ONE); } return new long[] {y.subtract(BigDecimal.valueOf(ADD_NEG)).longValue(), mm + 2, d.longValue()}; }
// exclude make Liquidation order and make Limit,MOO,MOC,MKT,OCO for mapOrder..... private void setOutstandingOrders( BuySellType buySellType, Boolean isSpot, Boolean isMakeLimitOrder, boolean isDelivery) { /*if (this._outstandingOrders.size() > 0 || this._account.get_Type() == AccountType.Agent) { Iterator<RelationOrder> relationOrders = this._outstandingOrders.values().iterator(); while(relationOrders.hasNext()) { relationOrders.next().set_IsMakeLimitOrder(isMakeLimitOrder); } return; }*/ this._outstandingOrders.clear(); HashMap<Guid, Transaction> accountInstrumentTransactions = this.getAccountInstrumentTransactions(); for (Iterator<Transaction> iterator = accountInstrumentTransactions.values().iterator(); iterator.hasNext(); ) { Transaction transaction = iterator.next(); if (transaction.get_Phase().equals(Phase.Executed)) { for (Iterator<Order> iterator2 = transaction.get_Orders().values().iterator(); iterator2.hasNext(); ) { Order order = iterator2.next(); if (order.get_Phase() != Phase.Executed) continue; if (order.get_Transaction().get_Account().get_Type() == AccountType.Agent || order.get_Transaction().get_Account().get_Type() == AccountType.Transit) continue; BigDecimal availableLotBanlance = BigDecimal.ZERO; if (isDelivery) { if (order.canDelivery()) { availableLotBanlance = order.getAvailableDeliveryLot(); if (availableLotBanlance.compareTo(BigDecimal.ZERO) > 0) { Guid orderId = order.get_Id(); RelationOrder outstandingOrder = new RelationOrder( this._tradingConsole, this._settingsManager, order, false, null, true); this._outstandingOrders.put(orderId, outstandingOrder); } } } else { if (order.canClose()) { availableLotBanlance = order.get_LotBalance(); if (isSpot != null) availableLotBanlance = order.getAvailableLotBanlance(isSpot, isMakeLimitOrder); if (availableLotBanlance.compareTo(BigDecimal.ZERO) > 0) { Guid orderId = order.get_Id(); RelationOrder outstandingOrder = new RelationOrder(this._tradingConsole, this._settingsManager, order); outstandingOrder.set_IsMakeLimitOrder(isMakeLimitOrder); if (buySellType.equals(BuySellType.Both)) { this._outstandingOrders.put(orderId, outstandingOrder); } else if (order.get_IsBuy() && (buySellType.equals(BuySellType.Buy))) { this._outstandingOrders.put(orderId, outstandingOrder); } else if (!order.get_IsBuy() && (buySellType.equals(BuySellType.Sell))) { this._outstandingOrders.put(orderId, outstandingOrder); } } } } } } } }
/** Business logic to execute. */ public VOListResponse loadSupplierPriceItems( GridParams pars, String serverLanguageId, String username, ArrayList customizedFields) throws Throwable { PreparedStatement pstmt = null; Connection conn = null; try { if (this.conn == null) conn = getConn(); else conn = this.conn; BigDecimal rootProgressiveHIE01 = (BigDecimal) pars.getOtherGridParams().get(ApplicationConsts.ROOT_PROGRESSIVE_HIE01); BigDecimal progressiveHIE01 = (BigDecimal) pars.getOtherGridParams().get(ApplicationConsts.PROGRESSIVE_HIE01); BigDecimal progressiveHIE02 = (BigDecimal) pars.getOtherGridParams().get(ApplicationConsts.PROGRESSIVE_HIE02); BigDecimal progressiveREG04 = (BigDecimal) pars.getOtherGridParams().get(ApplicationConsts.PROGRESSIVE_REG04); String companyCodeSYS01 = (String) pars.getOtherGridParams().get(ApplicationConsts.COMPANY_CODE_SYS01); String pricelistCodePUR03 = (String) pars.getOtherGridParams().get(ApplicationConsts.PRICELIST); CompanyHierarchyLevelVO vo = (CompanyHierarchyLevelVO) pars.getOtherGridParams().get(ApplicationConsts.TREE_FILTER); if (vo != null) { progressiveHIE01 = vo.getProgressiveHIE01(); progressiveHIE02 = vo.getProgressiveHie02HIE01(); } String sql = "select PUR02_SUPPLIER_ITEMS.COMPANY_CODE_SYS01,PUR02_SUPPLIER_ITEMS.ITEM_CODE_ITM01,PUR02_SUPPLIER_ITEMS.SUPPLIER_ITEM_CODE,PUR02_SUPPLIER_ITEMS.PROGRESSIVE_REG04," + "PUR02_SUPPLIER_ITEMS.PROGRESSIVE_HIE02,PUR02_SUPPLIER_ITEMS.PROGRESSIVE_HIE01,PUR02_SUPPLIER_ITEMS.MIN_PURCHASE_QTY,PUR02_SUPPLIER_ITEMS.MULTIPLE_QTY," + "PUR02_SUPPLIER_ITEMS.UM_CODE_REG02,PUR02_SUPPLIER_ITEMS.ENABLED,SYS10_COMPANY_TRANSLATIONS.DESCRIPTION,REG02_MEASURE_UNITS.DECIMALS," + "ITM01_ITEMS.VAT_CODE_REG01,SYS10_VAT.DESCRIPTION,REG01_VATS.DEDUCTIBLE,REG01_VATS.VALUE," + "PUR04_SUPPLIER_PRICES.VALUE,PUR04_SUPPLIER_PRICES.START_DATE,PUR04_SUPPLIER_PRICES.END_DATE," + "ITM01_ITEMS.USE_VARIANT_1,ITM01_ITEMS.USE_VARIANT_2,ITM01_ITEMS.USE_VARIANT_3,ITM01_ITEMS.USE_VARIANT_4,ITM01_ITEMS.USE_VARIANT_5, " + "ITM01_ITEMS.NO_WAREHOUSE_MOV " + " from PUR02_SUPPLIER_ITEMS,SYS10_COMPANY_TRANSLATIONS,ITM01_ITEMS,REG02_MEASURE_UNITS,SYS10_TRANSLATIONS SYS10_VAT,REG01_VATS,PUR04_SUPPLIER_PRICES where " + "PUR02_SUPPLIER_ITEMS.PROGRESSIVE_HIE02=? and " + "PUR02_SUPPLIER_ITEMS.UM_CODE_REG02=REG02_MEASURE_UNITS.UM_CODE and " + "PUR02_SUPPLIER_ITEMS.COMPANY_CODE_SYS01=ITM01_ITEMS.COMPANY_CODE_SYS01 and " + "PUR02_SUPPLIER_ITEMS.ITEM_CODE_ITM01=ITM01_ITEMS.ITEM_CODE and " + "ITM01_ITEMS.COMPANY_CODE_SYS01=SYS10_COMPANY_TRANSLATIONS.COMPANY_CODE_SYS01 and " + "ITM01_ITEMS.PROGRESSIVE_SYS10=SYS10_COMPANY_TRANSLATIONS.PROGRESSIVE and " + "SYS10_COMPANY_TRANSLATIONS.LANGUAGE_CODE=? and " + "PUR02_SUPPLIER_ITEMS.COMPANY_CODE_SYS01 = ? and " + "PUR02_SUPPLIER_ITEMS.PROGRESSIVE_REG04=? and " + "PUR02_SUPPLIER_ITEMS.ENABLED='Y' and " + "ITM01_ITEMS.VAT_CODE_REG01=REG01_VATS.VAT_CODE and " + "REG01_VATS.PROGRESSIVE_SYS10=SYS10_VAT.PROGRESSIVE and " + "SYS10_VAT.LANGUAGE_CODE=? and " + "PUR02_SUPPLIER_ITEMS.COMPANY_CODE_SYS01=PUR04_SUPPLIER_PRICES.COMPANY_CODE_SYS01 and " + "PUR02_SUPPLIER_ITEMS.PROGRESSIVE_REG04=PUR04_SUPPLIER_PRICES.PROGRESSIVE_REG04 and " + "PUR02_SUPPLIER_ITEMS.ITEM_CODE_ITM01=PUR04_SUPPLIER_PRICES.ITEM_CODE_ITM01 and " + "PUR04_SUPPLIER_PRICES.PRICELIST_CODE_PUR03=? and " + "PUR04_SUPPLIER_PRICES.START_DATE<=? and " + "PUR04_SUPPLIER_PRICES.END_DATE>? "; if (rootProgressiveHIE01 == null || !rootProgressiveHIE01.equals(progressiveHIE01)) { // retrieve all subnodes of the specified node... pstmt = conn.prepareStatement( "select HIE01_COMPANY_LEVELS.PROGRESSIVE,HIE01_COMPANY_LEVELS.PROGRESSIVE_HIE01,HIE01_COMPANY_LEVELS.LEV from HIE01_COMPANY_LEVELS " + "where COMPANY_CODE_SYS01='" + companyCodeSYS01 + "' and ENABLED='Y' and PROGRESSIVE_HIE02=? and PROGRESSIVE>=? " + "order by LEV,PROGRESSIVE_HIE01,PROGRESSIVE"); pstmt.setBigDecimal(1, progressiveHIE02); pstmt.setBigDecimal(2, progressiveHIE01); ResultSet rset = pstmt.executeQuery(); HashSet currentLevelNodes = new HashSet(); HashSet newLevelNodes = new HashSet(); String nodes = ""; int currentLevel = -1; while (rset.next()) { if (currentLevel != rset.getInt(3)) { // next level... currentLevel = rset.getInt(3); currentLevelNodes = newLevelNodes; newLevelNodes = new HashSet(); } if (rset.getBigDecimal(1).equals(progressiveHIE01)) { newLevelNodes.add(rset.getBigDecimal(1)); nodes += rset.getBigDecimal(1) + ","; } else if (currentLevelNodes.contains(rset.getBigDecimal(2))) { newLevelNodes.add(rset.getBigDecimal(1)); nodes += rset.getBigDecimal(1) + ","; } } rset.close(); pstmt.close(); if (nodes.length() > 0) nodes = nodes.substring(0, nodes.length() - 1); if (rootProgressiveHIE01 != null || nodes.length() > 0) sql += " and PUR02_SUPPLIER_ITEMS.PROGRESSIVE_HIE01 in (" + nodes + ")"; } Map attribute2dbField = new HashMap(); attribute2dbField.put("companyCodeSys01PUR02", "PUR02_SUPPLIER_ITEMS.COMPANY_CODE_SYS01"); attribute2dbField.put("itemCodeItm01PUR02", "PUR02_SUPPLIER_ITEMS.ITEM_CODE_ITM01"); attribute2dbField.put("supplierItemCodePUR02", "PUR02_SUPPLIER_ITEMS.SUPPLIER_ITEM_CODE"); attribute2dbField.put("progressiveReg04PUR02", "PUR02_SUPPLIER_ITEMS.PROGRESSIVE_REG04"); attribute2dbField.put("progressiveHie02PUR02", "PUR02_SUPPLIER_ITEMS.PROGRESSIVE_HIE02"); attribute2dbField.put("progressiveHie01PUR02", "PUR02_SUPPLIER_ITEMS.PROGRESSIVE_HIE01"); attribute2dbField.put("minPurchaseQtyPUR02", "PUR02_SUPPLIER_ITEMS.MIN_PURCHASE_QTY"); attribute2dbField.put("multipleQtyPUR02", "PUR02_SUPPLIER_ITEMS.MULTIPLE_QTY"); attribute2dbField.put("umCodeReg02PUR02", "PUR02_SUPPLIER_ITEMS.UM_CODE_REG02"); attribute2dbField.put("enabledPUR02", "PUR02_SUPPLIER_ITEMS.ENABLED"); attribute2dbField.put("descriptionSYS10", "SYS10_COMPANY_TRANSLATIONS.DESCRIPTION"); attribute2dbField.put("decimalsREG02", "REG02_MEASURE_UNITS.DECIMALS"); attribute2dbField.put("vatCodeReg01ITM01", "ITM01_ITEMS.VAT_CODE_REG01"); attribute2dbField.put("vatDescriptionSYS10", "SYS10_VAT.DESCRIPTION"); attribute2dbField.put("deductibleREG01", "REG01_VATS.DEDUCTIBLE"); attribute2dbField.put("valueREG01", "REG01_VATS.VALUE"); attribute2dbField.put("valuePUR04", "PUR04_SUPPLIER_PRICES.VALUE"); attribute2dbField.put("startDatePUR04", "PUR04_SUPPLIER_PRICES.START_DATE"); attribute2dbField.put("endDatePUR04", "PUR04_SUPPLIER_PRICES.END_DATE"); attribute2dbField.put("useVariant1ITM01", "ITM01_ITEMS.USE_VARIANT_1"); attribute2dbField.put("useVariant2ITM01", "ITM01_ITEMS.USE_VARIANT_2"); attribute2dbField.put("useVariant3ITM01", "ITM01_ITEMS.USE_VARIANT_3"); attribute2dbField.put("useVariant4ITM01", "ITM01_ITEMS.USE_VARIANT_4"); attribute2dbField.put("useVariant5ITM01", "ITM01_ITEMS.USE_VARIANT_5"); attribute2dbField.put("noWarehouseMovITM01", "ITM01_ITEMS.NO_WAREHOUSE_MOV"); ArrayList values = new ArrayList(); values.add(progressiveHIE02); values.add(serverLanguageId); values.add(companyCodeSYS01); values.add(progressiveREG04); values.add(serverLanguageId); values.add(pricelistCodePUR03); values.add(new java.sql.Date(System.currentTimeMillis())); values.add(new java.sql.Date(System.currentTimeMillis())); // read from PUR02 table... Response answer = CustomizeQueryUtil.getQuery( conn, new UserSessionParameters(username), sql, values, attribute2dbField, SupplierPriceItemVO.class, "Y", "N", null, pars, 50, true, customizedFields); if (answer.isError()) throw new Exception(answer.getErrorMessage()); else return (VOListResponse) answer; } catch (Throwable ex) { Logger.error( username, this.getClass().getName(), "executeCommand", "Error while fetching supplier items list", ex); throw new Exception(ex.getMessage()); } finally { try { pstmt.close(); } catch (Exception exx) { } try { if (this.conn == null && conn != null) { // close only local connection conn.commit(); conn.close(); } } catch (Exception exx) { } } }