private BigDecimal multiply(final BigDecimal value, final BigDecimal factor) { if (value == null || factor == null) { return BigDecimal.ZERO; } return numberService.setScaleWithDefaultMathContext(value.multiply(factor, numberService.getMathContext())); }
@Override public String getColumnValue(Entity operationProduct) { return String.valueOf(numberService.format(numberService.setScaleWithDefaultMathContext(operationProduct .getDecimalField(OperationProductInComponentFields.QUANTITY)))); }
@Override public void calculateTotalProductsCost(final Entity entity, final String sourceOfMaterialCosts) { Map<Entity, BigDecimal> listProductWithCost = calculateListProductsCostForPlannedQuantity(entity, sourceOfMaterialCosts); BigDecimal result = BigDecimal.ZERO; for (Entry<Entity, BigDecimal> productWithCost : listProductWithCost.entrySet()) { result = result.add(productWithCost.getValue(), numberService.getMathContext()); } entity.setField("totalMaterialCosts", numberService.setScaleWithDefaultMathContext(result)); }
private BigDecimal price(Entity deliveredProduct, Entity currency) { BigDecimal exRate = currency.getDecimalField(CurrencyFields.EXCHANGE_RATE); Optional<BigDecimal> pricePerUnit = Optional.fromNullable(deliveredProduct .getDecimalField(DeliveredProductFields.PRICE_PER_UNIT)); if (!pricePerUnit.isPresent()) { return null; } return exRateExists(exRate) ? numberService.setScaleWithDefaultMathContext(pricePerUnit.get().multiply(exRate, numberService.getMathContext())) : pricePerUnit.get(); }
private Entity createOfferProduct(final Entity requestForQuotationProduct) { Entity offerProduct = supplyNegotiationsService.getOfferProductDD().create(); offerProduct.setField(PRODUCT, requestForQuotationProduct.getBelongsToField(PRODUCT)); offerProduct.setField(QUANTITY, numberService.setScaleWithDefaultMathContext(requestForQuotationProduct.getDecimalField(ORDERED_QUANTITY))); offerProduct.setField(TOTAL_PRICE, numberService.setScaleWithDefaultMathContext(BigDecimal.ZERO)); offerProduct.setField(PRICE_PER_UNIT, numberService.setScaleWithDefaultMathContext(BigDecimal.ZERO)); return offerProduct; }
@Override public String getColumnValue(Entity operationProduct) { List<Entity> orders = operationProduct.getBelongsToField(OperationProductInComponentFields.OPERATION_COMPONENT) .getBelongsToField(TechnologyOperationComponentFields.TECHNOLOGY).getHasManyField(TechnologyFieldsO.ORDERS); BigDecimal quantity = operationProduct.getDecimalField(OperationProductInComponentFields.QUANTITY); if (orders.isEmpty() || quantity == null) { return StringUtils.EMPTY; } return String.valueOf(numberService.format(numberService.setScaleWithDefaultMathContext(quantity.divide( orders.get(0).getDecimalField(OrderFields.PLANNED_QUANTITY), RoundingMode.HALF_UP)))); }
private BigDecimal calculateQuantityInAdditionalUnit(Entity resource, String unit) { BigDecimal conversion = resource.getDecimalField(ResourceFields.CONVERSION); BigDecimal quantity = resource.getDecimalField(ResourceFields.QUANTITY); boolean isInteger = dictionaryService.checkIfUnitIsInteger(unit); BigDecimal value = quantity.multiply(conversion, numberService.getMathContext()); if (isInteger) { return numberService.setScaleWithDefaultMathContext(value, 0); } else { return value; } }
@Override public Entity createBasicProductionCounting(final Entity order, final Entity product) { Entity basicProductionCounting = getBasicProductionCountingDD().create(); basicProductionCounting.setField(BasicProductionCountingFields.ORDER, order); basicProductionCounting.setField(BasicProductionCountingFields.PRODUCT, product); basicProductionCounting.setField(BasicProductionCountingFields.PRODUCED_QUANTITY, numberService.setScaleWithDefaultMathContext(BigDecimal.ZERO)); basicProductionCounting.setField(BasicProductionCountingFields.USED_QUANTITY, numberService.setScaleWithDefaultMathContext(BigDecimal.ZERO)); basicProductionCounting = basicProductionCounting.getDataDefinition().save(basicProductionCounting); return basicProductionCounting; }
private String extractQuantity(Resource resource) { if (Objects.isNull(resource.getQuantity())) { return ""; } else if (isIntegerValue(resource.getQuantity())) { return numberService.formatWithMinimumFractionDigits(resource.getQuantity(), 0); } else { return numberService.formatWithMinimumFractionDigits( numberService.setScaleWithDefaultMathContext(resource.getQuantity(), 1), 1); } }
private String extractQuantityInAdditionalUnit(Resource resource) { if (Objects.isNull(resource.getQuantityInAdditionalUnit())) { return ""; } else if (isIntegerValue(resource.getQuantityInAdditionalUnit())) { return numberService.formatWithMinimumFractionDigits(resource.getQuantityInAdditionalUnit(), 0); } else { return numberService.formatWithMinimumFractionDigits( numberService.setScaleWithDefaultMathContext(resource.getQuantityInAdditionalUnit(), 1), 1); } }
private void addCoverageProductForOrder(final Map<Long, Entity> productAndCoverageProducts, final Entity product, String productType, final Entity coverageProductLogging) { Entity coverageProduct = orderSuppliesService.getCoverageProductDD().create(); coverageProduct.setField(CoverageProductFields.PRODUCT, product); coverageProduct.setField("productType", productType); coverageProduct.setField("allProductsType", productType); coverageProduct.setField(CoverageProductFields.DEMAND_QUANTITY, numberService .setScaleWithDefaultMathContext(coverageProductLogging.getDecimalField(CoverageProductLoggingFields.CHANGES))); coverageProduct.setField(CoverageProductFields.COVERAGE_PRODUCT_LOGGINGS, Lists.newArrayList(coverageProductLogging)); productAndCoverageProducts.put(product.getId(), coverageProduct); }
private void addCoverageProductForDelivery(final Map<Long, Entity> productAndCoverageProducts, final Entity product, final Entity coverageProductLogging) { Entity coverageProduct = getCoverageProductDD().create(); coverageProduct.setField(CoverageProductFields.PRODUCT, product); coverageProduct.setField(CoverageProductFields.DELIVERED_QUANTITY, numberService.setScaleWithDefaultMathContext( coverageProductLogging.getDecimalField(CoverageProductLoggingFields.CHANGES))); coverageProduct.setField(CoverageProductFields.STATE, CoverageProductState.COVERED.getStringValue()); coverageProduct.setField(CoverageProductFields.COVERAGE_PRODUCT_LOGGINGS, Lists.newArrayList(coverageProductLogging)); productAndCoverageProducts.put(product.getId(), coverageProduct); }
private void calculatePriceUsingTotalCost(final ViewDefinitionState view, FieldComponent quantityField, FieldComponent totalPriceField) { FieldComponent pricePerUnitField = (FieldComponent) view.getComponentByReference(L_PRICE_PER_UNIT); Locale locale = view.getLocale(); BigDecimal quantity = getBigDecimalFromField(quantityField, locale); BigDecimal totalPrice = getBigDecimalFromField(totalPriceField, locale); BigDecimal pricePerUnit = numberService.setScaleWithDefaultMathContext(totalPrice.divide(quantity, numberService.getMathContext())); pricePerUnitField.setFieldValue(numberService.format(pricePerUnit)); pricePerUnitField.requestComponentUpdateState(); }
private void calculatePriceUsingPricePerUnit(final ViewDefinitionState view, FieldComponent quantityField, FieldComponent pricePerUnitField) { FieldComponent totalPriceField = (FieldComponent) view.getComponentByReference(L_TOTAL_PRICE); Locale locale = view.getLocale(); BigDecimal pricePerUnit = getBigDecimalFromField(pricePerUnitField, locale); BigDecimal quantity = getBigDecimalFromField(quantityField, locale); BigDecimal totalPrice = numberService.setScaleWithDefaultMathContext(pricePerUnit.multiply(quantity, numberService.getMathContext())); totalPriceField.setFieldValue(numberService.format(totalPrice)); totalPriceField.requestComponentUpdateState(); }
private Entity createRequestForQuotationProduct(final Entity negotiationProduct) { Entity requestForQuotationProduct = supplyNegotiationsService.getRequestForQuotationProductDD().create(); Entity product = negotiationProduct.getBelongsToField(PRODUCT); BigDecimal leftQuantity = negotiationProduct.getDecimalField(LEFT_QUANTITY); requestForQuotationProduct.setField(PRODUCT, product); requestForQuotationProduct.setField(ORDERED_QUANTITY, numberService.setScaleWithDefaultMathContext(leftQuantity)); return requestForQuotationProduct; }
private Entity createMaterialAvailabilityEntity(final DataDefinition orderMaterialAvailabilityDD, final Entity product, final Entity order, final BigDecimal value, final Entity location) { Entity materialAvailability = orderMaterialAvailabilityDD.create(); materialAvailability.setField(MaterialAvailabilityFields.ORDER, order); materialAvailability.setField(MaterialAvailabilityFields.PRODUCT, product); materialAvailability.setField(MaterialAvailabilityFields.UNIT, product.getField(ProductFields.UNIT)); materialAvailability.setField(MaterialAvailabilityFields.REQUIRED_QUANTITY, numberService.setScaleWithDefaultMathContext(value, REQUIRED_QUANTITY_SCALE)); materialAvailability.setField(MaterialAvailabilityFields.LOCATION, location); return materialAvailability; }
private Entity createCoverageProductLoggingForLocations(final Entity warehouse, final Date actualDate, final BigDecimal locationsQuantity) { Entity coverageProductLogging = orderSuppliesService.getCoverageProductLoggingDD().create(); coverageProductLogging.setField(CoverageProductLoggingFields.DATE, actualDate); coverageProductLogging.setField(CoverageProductLoggingFields.RESERVE_MISSING_QUANTITY, numberService.setScaleWithDefaultMathContext(locationsQuantity)); coverageProductLogging.setField(CoverageProductLoggingFields.EVENT_TYPE, CoverageProductLoggingEventType.WAREHOUSE_STATE.getStringValue()); coverageProductLogging.setField(CoverageProductLoggingFields.WAREHOUSE_NUMBER, warehouse.getStringField(LocationFields.NUMBER)); return coverageProductLogging; }
private void createOperationProductInComponent(final Entity technologyOperationComponent, final Entity product, final BigDecimal quantity, final String itemNumberInTheExplodedView) { Entity operationProductInComponent = dataDefinitionService.get(TechnologiesConstants.PLUGIN_IDENTIFIER, TechnologiesConstants.MODEL_OPERATION_PRODUCT_IN_COMPONENT).create(); operationProductInComponent.setField(OperationProductInComponentFields.OPERATION_COMPONENT, technologyOperationComponent); operationProductInComponent.setField(OperationProductInComponentFields.PRODUCT, product); operationProductInComponent.setField(OperationProductInComponentFields.QUANTITY, numberService.setScaleWithDefaultMathContext(quantity)); operationProductInComponent.setField(OperationProductInComponentFields.ITEM_NUMBER_IN_THE_EXPLODED_VIEW, itemNumberInTheExplodedView); operationProductInComponent.getDataDefinition().save(operationProductInComponent); }
private void addRightAlignedAmountCell(PdfPTable table, Object reportData) { BigDecimal reportValue = numberService.setScaleWithDefaultMathContext((BigDecimal) reportData, 2); PdfPCell cell = new PdfPCell(new Phrase((reportData == null ? "" : format(reportValue)) + " " + currencyService.getCurrencyAlphabeticCode(), FontUtils.getDejavuRegular10Dark())); cell.setHorizontalAlignment(Element.ALIGN_RIGHT); cell.setBorder(Rectangle.NO_BORDER); table.addCell(cell); }
private Entity createCoverageProductLoggingForDelivery(final CoverageProductForDelivery coverageProductForDelivery) { Entity coverageProductLogging = orderSuppliesService.getCoverageProductLoggingDD().create(); coverageProductLogging.setField(CoverageProductLoggingFields.DATE, coverageProductForDelivery.getCoverageDate()); coverageProductLogging.setField(CoverageProductLoggingFields.DELIVERY, coverageProductForDelivery.getDelivery()); coverageProductLogging.setField(CoverageProductLoggingFields.CHANGES, numberService.setScaleWithDefaultMathContext(coverageProductForDelivery.getQuantity())); coverageProductLogging.setField(CoverageProductLoggingFields.EVENT_TYPE, CoverageProductLoggingEventType.DELIVERY.getStringValue()); coverageProductLogging.setField(CoverageProductLoggingFields.STATE, CoverageProductLoggingState.COVERED.getStringValue()); return coverageProductLogging; }