diff --git a/modules/axelor-open-suite/axelor-supplier-management/src/main/java/com/axelor/apps/suppliermanagement/service/PurchaseOrderSupplierLineService.java b/modules/axelor-open-suite/axelor-supplier-management/src/main/java/com/axelor/apps/suppliermanagement/service/PurchaseOrderSupplierLineService.java index 0686c80..d1af0c6 100644 --- a/modules/axelor-open-suite/axelor-supplier-management/src/main/java/com/axelor/apps/suppliermanagement/service/PurchaseOrderSupplierLineService.java +++ b/modules/axelor-open-suite/axelor-supplier-management/src/main/java/com/axelor/apps/suppliermanagement/service/PurchaseOrderSupplierLineService.java @@ -30,15 +30,22 @@ import com.axelor.apps.suppliermanagement.db.repo.PurchaseOrderSupplierLineRepos import com.axelor.auth.AuthUtils; import com.axelor.exception.AxelorException; import com.axelor.exception.db.repo.TraceBackRepository; +import com.axelor.exception.service.TraceBackService; import com.axelor.i18n.I18n; import com.axelor.inject.Beans; +import com.axelor.rpc.Context; import com.google.inject.Inject; import com.google.inject.persist.Transactional; +import com.itextpdf.text.pdf.PdfStructTreeController.returnType; + import java.math.BigDecimal; import com.axelor.apps.purchase.db.PurchaseOrder; import com.axelor.apps.purchase.db.repo.PurchaseOrderLineRepository; import com.axelor.apps.purchase.service.PurchaseOrderLineService; + +import java.util.HashMap; import java.util.List; +import java.util.Map; import java.math.RoundingMode; import com.axelor.apps.base.service.app.AppBaseService; @@ -173,4 +180,27 @@ public class PurchaseOrderSupplierLineService { } } + + + public Map compute(PurchaseOrderSupplierLine line) { + + HashMap map = new HashMap<>(); + if (line == null + || line.getPrice() == null + || line.getTaxLine() == null) { + return map; + } + + + BigDecimal exTaxTotal = line.getPrice().multiply(line.getAvailableQty()) ; + BigDecimal taxRate = line.getTaxLine().getValue(); + BigDecimal taxTotal = exTaxTotal.multiply(taxRate); + BigDecimal inTaxTotal = exTaxTotal.add(taxTotal); + map.put("exTaxTotal", exTaxTotal); + map.put("taxTotal", taxTotal); + map.put("inTaxTotal", inTaxTotal); + return map; + + } + } diff --git a/modules/axelor-open-suite/axelor-supplier-management/src/main/java/com/axelor/apps/suppliermanagement/web/PurchaseOrderSupplierLineController.java b/modules/axelor-open-suite/axelor-supplier-management/src/main/java/com/axelor/apps/suppliermanagement/web/PurchaseOrderSupplierLineController.java index afa4a68..7091b35 100644 --- a/modules/axelor-open-suite/axelor-supplier-management/src/main/java/com/axelor/apps/suppliermanagement/web/PurchaseOrderSupplierLineController.java +++ b/modules/axelor-open-suite/axelor-supplier-management/src/main/java/com/axelor/apps/suppliermanagement/web/PurchaseOrderSupplierLineController.java @@ -27,13 +27,18 @@ import com.axelor.apps.purchase.service.app.AppPurchaseService; import com.axelor.apps.suppliermanagement.db.PurchaseOrderSupplierLine; import com.axelor.apps.suppliermanagement.db.repo.PurchaseOrderSupplierLineRepository; import com.axelor.apps.suppliermanagement.service.PurchaseOrderSupplierLineService; +import com.axelor.apps.suppliermanagement.service.PurchaseOrderSupplierService; import com.axelor.apps.purchase.service.PurchaseOrderService; import com.axelor.exception.service.TraceBackService; import com.axelor.inject.Beans; import com.axelor.rpc.ActionRequest; import com.axelor.rpc.ActionResponse; +import com.axelor.rpc.Context; import com.google.common.base.Strings; import com.google.inject.Singleton; + +import java.util.HashMap; +import java.util.Map; import java.util.stream.Collectors; import com.axelor.meta.schema.actions.ActionView; import java.math.BigDecimal; @@ -171,4 +176,21 @@ public class PurchaseOrderSupplierLineController { } } + + public void compute(ActionRequest request, ActionResponse response) { + + + try { + Context context = request.getContext(); + PurchaseOrderSupplierLine line = context.asType(PurchaseOrderSupplierLine.class); + + Map map = Beans.get(PurchaseOrderSupplierLineService.class).compute(line); + response.setValues(map); + + response.setValues(map); + } catch (Exception e) { + TraceBackService.trace(response, e); + } + } + }