diff --git a/modules/axelor-open-suite/axelor-base/src/main/java/com/axelor/apps/base/service/PriceListService.java b/modules/axelor-open-suite/axelor-base/src/main/java/com/axelor/apps/base/service/PriceListService.java
index eb4523d..bf6a46f 100644
--- a/modules/axelor-open-suite/axelor-base/src/main/java/com/axelor/apps/base/service/PriceListService.java
+++ b/modules/axelor-open-suite/axelor-base/src/main/java/com/axelor/apps/base/service/PriceListService.java
@@ -160,13 +160,13 @@ public class PriceListService {
if (discountTypeSelect == PriceListLineRepository.AMOUNT_TYPE_FIXED) {
return unitPrice
.subtract(discountAmount)
- .setScale(5, RoundingMode.HALF_UP);
+ .setScale(appBaseService.getNbDecimalDigitForSalePrice(), RoundingMode.HALF_UP);
} else if (discountTypeSelect == PriceListLineRepository.AMOUNT_TYPE_PERCENT) {
return unitPrice
.multiply(new BigDecimal(100).subtract(discountAmount))
.divide(
new BigDecimal(100),
- 5,
+ appBaseService.getNbDecimalDigitForSalePrice(),
RoundingMode.HALF_UP);
}
diff --git a/modules/axelor-open-suite/axelor-base/src/main/java/com/axelor/apps/base/service/app/AppBaseService.java b/modules/axelor-open-suite/axelor-base/src/main/java/com/axelor/apps/base/service/app/AppBaseService.java
index 7fd16af..1ff8786 100644
--- a/modules/axelor-open-suite/axelor-base/src/main/java/com/axelor/apps/base/service/app/AppBaseService.java
+++ b/modules/axelor-open-suite/axelor-base/src/main/java/com/axelor/apps/base/service/app/AppBaseService.java
@@ -74,4 +74,6 @@ public interface AppBaseService extends AppService {
* @param manageMultiBanks the new value for the manageMultiBanks boolean
*/
void setManageMultiBanks(boolean manageMultiBanks);
+
+ public int getNbDecimalDigitForSalePrice();
}
diff --git a/modules/axelor-open-suite/axelor-base/src/main/java/com/axelor/apps/base/service/app/AppBaseServiceImpl.java b/modules/axelor-open-suite/axelor-base/src/main/java/com/axelor/apps/base/service/app/AppBaseServiceImpl.java
index 3677f82..8c841ec 100644
--- a/modules/axelor-open-suite/axelor-base/src/main/java/com/axelor/apps/base/service/app/AppBaseServiceImpl.java
+++ b/modules/axelor-open-suite/axelor-base/src/main/java/com/axelor/apps/base/service/app/AppBaseServiceImpl.java
@@ -104,6 +104,18 @@ public class AppBaseServiceImpl extends AppServiceImpl implements AppBaseService
return DEFAULT_NB_DECIMAL_DIGITS;
}
+ @Override
+ public int getNbDecimalDigitForSalePrice() {
+
+ AppBase appBase = getAppBase();
+
+ if (appBase != null) {
+ return appBase.getNbDecimalDigitForSalePrice();
+ }
+
+ return DEFAULT_NB_DECIMAL_DIGITS;
+ }
+
@Override
public String getDefaultPartnerLanguageCode() {
diff --git a/modules/axelor-open-suite/axelor-base/src/main/resources/domains/AppBase.xml b/modules/axelor-open-suite/axelor-base/src/main/resources/domains/AppBase.xml
index adeab7d..8c45bc9 100644
--- a/modules/axelor-open-suite/axelor-base/src/main/resources/domains/AppBase.xml
+++ b/modules/axelor-open-suite/axelor-base/src/main/resources/domains/AppBase.xml
@@ -35,6 +35,7 @@
+
diff --git a/modules/axelor-open-suite/axelor-sale/src/main/java/com/axelor/apps/sale/service/saleorder/SaleOrderLineServiceImpl.java b/modules/axelor-open-suite/axelor-sale/src/main/java/com/axelor/apps/sale/service/saleorder/SaleOrderLineServiceImpl.java
index 85baf10..fe4b58f 100644
--- a/modules/axelor-open-suite/axelor-sale/src/main/java/com/axelor/apps/sale/service/saleorder/SaleOrderLineServiceImpl.java
+++ b/modules/axelor-open-suite/axelor-sale/src/main/java/com/axelor/apps/sale/service/saleorder/SaleOrderLineServiceImpl.java
@@ -30,6 +30,8 @@ import com.axelor.apps.base.db.repo.ProductRepository;
import com.axelor.apps.base.service.CurrencyService;
import com.axelor.apps.base.service.PriceListService;
import com.axelor.apps.base.service.ProductMultipleQtyService;
+import com.axelor.apps.base.service.app.AppBaseService;
+import com.axelor.apps.base.service.app.AppService;
import com.axelor.apps.base.service.tax.AccountManagementService;
import com.axelor.apps.base.service.tax.FiscalPositionService;
import com.axelor.apps.sale.db.PackLine;
@@ -438,8 +440,10 @@ public class SaleOrderLineServiceImpl implements SaleOrderLineService {
BigDecimal price = inAti ? saleOrderLine.getInTaxPrice() : saleOrderLine.getPrice();
+ int scale = Beans.get(AppBaseService.class).getNbDecimalDigitForSalePrice();
+
return priceListService.computeDiscount(
- price, saleOrderLine.getDiscountTypeSelect(), saleOrderLine.getDiscountAmount());
+ price, saleOrderLine.getDiscountTypeSelect(), saleOrderLine.getDiscountAmount()).setScale(scale);
}
@Override
diff --git a/modules/axelor-open-suite/axelor-sale/src/main/java/com/axelor/apps/sale/web/SaleOrderLineController.java b/modules/axelor-open-suite/axelor-sale/src/main/java/com/axelor/apps/sale/web/SaleOrderLineController.java
index 7d434af..a0206ae 100644
--- a/modules/axelor-open-suite/axelor-sale/src/main/java/com/axelor/apps/sale/web/SaleOrderLineController.java
+++ b/modules/axelor-open-suite/axelor-sale/src/main/java/com/axelor/apps/sale/web/SaleOrderLineController.java
@@ -21,6 +21,7 @@ import com.axelor.apps.account.db.TaxLine;
import com.axelor.apps.base.db.Product;
import com.axelor.apps.base.db.repo.PriceListLineRepository;
import com.axelor.apps.base.db.repo.ProductRepository;
+import com.axelor.apps.base.service.app.AppBaseService;
import com.axelor.apps.base.service.tax.FiscalPositionService;
import com.axelor.apps.sale.db.SaleOrder;
import com.axelor.apps.sale.db.SaleOrderLine;
@@ -390,13 +391,15 @@ public class SaleOrderLineController {
Context context = request.getContext();
SaleOrderLine saleOrderLine = context.asType(SaleOrderLine.class);
+ int scale = Beans.get(AppBaseService.class).getNbDecimalDigitForSalePrice();
+
BigDecimal qtyUg = saleOrderLine.getProduct().getUg();
BigDecimal qty = saleOrderLine.getQty();
BigDecimal totalQty = qty.add(qty.multiply(qtyUg).divide(new BigDecimal(100), 4,RoundingMode.HALF_EVEN));
Product product = saleOrderLine.getProduct();
if(product.getUg() != null && product.getUg().compareTo(BigDecimal.ZERO) > 0){
- BigDecimal ug = saleOrderLine.getProduct().getUg().divide(new BigDecimal(100), 10, RoundingMode.HALF_EVEN);
- BigDecimal ugAmount = ug.divide(ug.add(BigDecimal.ONE),10, RoundingMode.HALF_EVEN).multiply(new BigDecimal(100));
+ BigDecimal ug = saleOrderLine.getProduct().getUg().divide(new BigDecimal(100), scale, RoundingMode.HALF_EVEN);
+ BigDecimal ugAmount = ug.divide(ug.add(BigDecimal.ONE),scale, RoundingMode.HALF_EVEN).multiply(new BigDecimal(100));
response.setValue("discountTypeSelect", 1);
response.setValue("discountAmount", ugAmount);
response.setValue("qty", totalQty);
diff --git a/modules/axelor-open-suite/axelor-stock/src/main/java/com/axelor/apps/stock/service/StockMoveLineServiceImpl.java b/modules/axelor-open-suite/axelor-stock/src/main/java/com/axelor/apps/stock/service/StockMoveLineServiceImpl.java
index 9853562..0d7f1c0 100644
--- a/modules/axelor-open-suite/axelor-stock/src/main/java/com/axelor/apps/stock/service/StockMoveLineServiceImpl.java
+++ b/modules/axelor-open-suite/axelor-stock/src/main/java/com/axelor/apps/stock/service/StockMoveLineServiceImpl.java
@@ -164,19 +164,19 @@ public class StockMoveLineServiceImpl implements StockMoveLineService {
BigDecimal unitPriceTaxed;
if (taxed) {
unitPriceTaxed =
- unitPrice.setScale(appBaseService.getNbDecimalDigitForUnitPrice(), RoundingMode.HALF_UP);
+ unitPrice.setScale(appBaseService.getNbDecimalDigitForSalePrice(), RoundingMode.HALF_UP);
unitPriceUntaxed =
unitPrice.divide(
taxRate.add(BigDecimal.ONE),
- appBaseService.getNbDecimalDigitForUnitPrice(),
+ appBaseService.getNbDecimalDigitForSalePrice(),
RoundingMode.HALF_UP);
} else {
unitPriceUntaxed =
- unitPrice.setScale(appBaseService.getNbDecimalDigitForUnitPrice(), RoundingMode.HALF_UP);
+ unitPrice.setScale(appBaseService.getNbDecimalDigitForSalePrice(), RoundingMode.HALF_UP);
unitPriceTaxed =
unitPrice
.multiply(taxRate.add(BigDecimal.ONE))
- .setScale(appBaseService.getNbDecimalDigitForUnitPrice(), RoundingMode.HALF_UP);
+ .setScale(appBaseService.getNbDecimalDigitForSalePrice(), RoundingMode.HALF_UP);
}
return this.createStockMoveLine(
product,
@@ -536,7 +536,7 @@ public class StockMoveLineServiceImpl implements StockMoveLineService {
sum = sum.add(newPrice.multiply(newQty));
BigDecimal denominator = oldQty.add(newQty);
if (denominator.compareTo(BigDecimal.ZERO) != 0) {
- int scale = appBaseService.getNbDecimalDigitForUnitPrice();
+ int scale = appBaseService.getNbDecimalDigitForSalePrice();
newAvgPrice = sum.divide(denominator, scale, RoundingMode.HALF_UP);
} else {
newAvgPrice = oldAvgPrice;
@@ -991,6 +991,7 @@ public class StockMoveLineServiceImpl implements StockMoveLineService {
if (stockMove != null && !checkMassesRequired(stockMove, stockMoveLine)) {
return product.getNetMass();
}
+
throw new AxelorException(
TraceBackRepository.CATEGORY_CONFIGURATION_ERROR,
@@ -1201,4 +1202,5 @@ public class StockMoveLineServiceImpl implements StockMoveLineService {
stockLocationLineOpt.ifPresent(
stockLocationLine -> stockMoveLine.setWapPrice(stockLocationLine.getAvgPrice()));
}
+
}
diff --git a/modules/axelor-open-suite/axelor-supplychain/src/main/java/com/axelor/apps/supplychain/service/SaleOrderStockServiceImpl.java b/modules/axelor-open-suite/axelor-supplychain/src/main/java/com/axelor/apps/supplychain/service/SaleOrderStockServiceImpl.java
index 174cf62..9f716ce 100644
--- a/modules/axelor-open-suite/axelor-supplychain/src/main/java/com/axelor/apps/supplychain/service/SaleOrderStockServiceImpl.java
+++ b/modules/axelor-open-suite/axelor-supplychain/src/main/java/com/axelor/apps/supplychain/service/SaleOrderStockServiceImpl.java
@@ -358,6 +358,7 @@ public class SaleOrderStockServiceImpl implements SaleOrderStockService {
@Override
public StockMoveLine createStockMoveLine(
StockMove stockMove, SaleOrderLine saleOrderLine, BigDecimal qty) throws AxelorException {
+ int scale = Beans.get(AppBaseService.class).getNbDecimalDigitForSalePrice();
if (this.isStockMoveProduct(saleOrderLine)) {
@@ -376,7 +377,7 @@ public class SaleOrderStockServiceImpl implements SaleOrderStockService {
unit,
saleOrderLine.getUnit(),
priceDiscounted,
- 5,
+ scale,
saleOrderLine.getProduct());
requestedReservedQty =
unitConversionService.convert(
@@ -398,7 +399,7 @@ public class SaleOrderStockServiceImpl implements SaleOrderStockService {
.getCompanyExTaxTotal()
.divide(
saleOrderLine.getQty(),
- 5,
+ scale,
RoundingMode.HALF_EVEN);
}
diff --git a/modules/axelor-open-suite/axelor-supplychain/src/main/java/com/axelor/apps/supplychain/service/StockMoveLineServiceSupplychainImpl.java b/modules/axelor-open-suite/axelor-supplychain/src/main/java/com/axelor/apps/supplychain/service/StockMoveLineServiceSupplychainImpl.java
index 9d00631..3539cc3 100644
--- a/modules/axelor-open-suite/axelor-supplychain/src/main/java/com/axelor/apps/supplychain/service/StockMoveLineServiceSupplychainImpl.java
+++ b/modules/axelor-open-suite/axelor-supplychain/src/main/java/com/axelor/apps/supplychain/service/StockMoveLineServiceSupplychainImpl.java
@@ -118,7 +118,7 @@ public class StockMoveLineServiceSupplychainImpl extends StockMoveLineServiceImp
stockMove,
taxed,
taxRate);
- stockMoveLine.setRequestedReservedQty(requestedReservedQty);
+ stockMoveLine.setRequestedReservedQty(BigDecimal.ZERO);
stockMoveLine.setSaleOrderLine(saleOrderLine);
stockMoveLine.setPurchaseOrderLine(purchaseOrderLine);
TrackingNumberConfiguration trackingNumberConfiguration =
@@ -219,14 +219,14 @@ public class StockMoveLineServiceSupplychainImpl extends StockMoveLineServiceImp
fromUnit,
toUnit,
stockMoveLine.getUnitPriceUntaxed(),
- appBaseService.getNbDecimalDigitForUnitPrice(),
+ appBaseService.getNbDecimalDigitForSalePrice(),
null);
BigDecimal unitPriceTaxed =
unitConversionService.convert(
fromUnit,
toUnit,
stockMoveLine.getUnitPriceTaxed(),
- appBaseService.getNbDecimalDigitForUnitPrice(),
+ appBaseService.getNbDecimalDigitForSalePrice(),
null);
stockMoveLine.setUnitPriceUntaxed(unitPriceUntaxed);
stockMoveLine.setUnitPriceTaxed(unitPriceTaxed);
diff --git a/modules/axelor-open-suite/axelor-supplychain/src/main/java/com/axelor/apps/supplychain/service/invoice/generator/InvoiceLineGeneratorSupplyChain.java b/modules/axelor-open-suite/axelor-supplychain/src/main/java/com/axelor/apps/supplychain/service/invoice/generator/InvoiceLineGeneratorSupplyChain.java
index b2f7436..3539b78 100644
--- a/modules/axelor-open-suite/axelor-supplychain/src/main/java/com/axelor/apps/supplychain/service/invoice/generator/InvoiceLineGeneratorSupplyChain.java
+++ b/modules/axelor-open-suite/axelor-supplychain/src/main/java/com/axelor/apps/supplychain/service/invoice/generator/InvoiceLineGeneratorSupplyChain.java
@@ -183,7 +183,7 @@ public abstract class InvoiceLineGeneratorSupplyChain extends InvoiceLineGenerat
this.unit,
saleOrPurchaseUnit,
this.priceDiscounted,
- appBaseService.getNbDecimalDigitForUnitPrice(),
+ appBaseService.getNbDecimalDigitForSalePrice(),
product);
this.unit = saleOrPurchaseUnit;
}
@@ -276,7 +276,9 @@ public abstract class InvoiceLineGeneratorSupplyChain extends InvoiceLineGenerat
invoiceLine.setPrice(price);
invoiceLine.setInTaxPrice(inTaxPrice);
-
+ // sophal
+ invoiceLine.setTrackingNumber(stockMoveLine.getTrackingNumber());
+
analyticMoveLineList =
invoiceLineService.getAndComputeAnalyticDistribution(invoiceLine, invoice);
analyticMoveLineList.stream().forEach(invoiceLine::addAnalyticMoveLineListItem);