add auto compute calculation to TCO
This commit is contained in:
@@ -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;
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user