add auto compute calculation to TCO

This commit is contained in:
2023-02-20 08:39:43 +01:00
parent fa72c20f04
commit 9433ae3fb3
2 changed files with 52 additions and 0 deletions

View File

@@ -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<String, BigDecimal> compute(PurchaseOrderSupplierLine line) {
HashMap<String, BigDecimal> 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;
}
}

View File

@@ -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<String, BigDecimal> map = Beans.get(PurchaseOrderSupplierLineService.class).compute(line);
response.setValues(map);
response.setValues(map);
} catch (Exception e) {
TraceBackService.trace(response, e);
}
}
}