add auto generate importation folder for purchase order
This commit is contained in:
@@ -22,6 +22,7 @@ import com.axelor.apps.base.db.Currency;
|
|||||||
import com.axelor.apps.base.db.Partner;
|
import com.axelor.apps.base.db.Partner;
|
||||||
import com.axelor.apps.base.db.PriceList;
|
import com.axelor.apps.base.db.PriceList;
|
||||||
import com.axelor.apps.base.db.TradingName;
|
import com.axelor.apps.base.db.TradingName;
|
||||||
|
import com.axelor.apps.purchase.db.ImportationFolder;
|
||||||
import com.axelor.apps.purchase.db.PurchaseOrder;
|
import com.axelor.apps.purchase.db.PurchaseOrder;
|
||||||
import com.axelor.auth.db.User;
|
import com.axelor.auth.db.User;
|
||||||
import com.axelor.exception.AxelorException;
|
import com.axelor.exception.AxelorException;
|
||||||
@@ -114,4 +115,6 @@ public interface PurchaseOrderService {
|
|||||||
public void cancelPurchaseOrder(PurchaseOrder purchaseOrder);
|
public void cancelPurchaseOrder(PurchaseOrder purchaseOrder);
|
||||||
|
|
||||||
public void cancelReasonPurchaseOrder(PurchaseOrder purchaseOrder, CancelReason cancelReason, String cancelReasonStr);
|
public void cancelReasonPurchaseOrder(PurchaseOrder purchaseOrder, CancelReason cancelReason, String cancelReasonStr);
|
||||||
|
|
||||||
|
public void calculateSum(List<PurchaseOrder> purchaseOrders,ImportationFolder importationFolder) throws AxelorException;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -85,7 +85,7 @@ public class PurchaseOrderServiceImpl implements PurchaseOrderService {
|
|||||||
@Inject protected AppPurchaseService appPurchaseService;
|
@Inject protected AppPurchaseService appPurchaseService;
|
||||||
|
|
||||||
@Inject protected PurchaseOrderRepository purchaseOrderRepo;
|
@Inject protected PurchaseOrderRepository purchaseOrderRepo;
|
||||||
@Inject protected ImportationFolderRepository importationFolderRepository;
|
@Inject protected ImportationFolderRepository importationFolderRepo;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public PurchaseOrder _computePurchaseOrderLines(PurchaseOrder purchaseOrder)
|
public PurchaseOrder _computePurchaseOrderLines(PurchaseOrder purchaseOrder)
|
||||||
@@ -529,7 +529,7 @@ public class PurchaseOrderServiceImpl implements PurchaseOrderService {
|
|||||||
importationFolder.setTaxAmount(taxAmount);
|
importationFolder.setTaxAmount(taxAmount);
|
||||||
importationFolder.setTotalAmount(totalAmount);
|
importationFolder.setTotalAmount(totalAmount);
|
||||||
|
|
||||||
importationFolderRepository.save(importationFolder);
|
importationFolderRepo.save(importationFolder);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -598,4 +598,55 @@ public class PurchaseOrderServiceImpl implements PurchaseOrderService {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@Transactional
|
||||||
|
public ImportationFolder generateImportationFolder(PurchaseOrder purchaseOrder) throws AxelorException {
|
||||||
|
ImportationFolder importationFolder = new ImportationFolder();
|
||||||
|
List<PurchaseOrder> purchaseOrders = new ArrayList<PurchaseOrder>();
|
||||||
|
purchaseOrders.add(purchaseOrder);
|
||||||
|
importationFolder.setPurchaseOrderList(purchaseOrders);
|
||||||
|
importationFolder.setCurrency(purchaseOrder.getCurrency());
|
||||||
|
importationFolder.setProgress(10);
|
||||||
|
|
||||||
|
|
||||||
|
BigDecimal amount = BigDecimal.ZERO;
|
||||||
|
BigDecimal taxAmount = BigDecimal.ZERO;
|
||||||
|
BigDecimal totalAmount = BigDecimal.ZERO;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
if(purchaseOrder.getCurrency().getId() == 148 || purchaseOrder.getCurrency().getId() == 46){
|
||||||
|
Currency currency = Beans.get(CurrencyRepository.class).find(purchaseOrder.getCurrency().getId());
|
||||||
|
Currency currencyDzd = Beans.get(CurrencyRepository.class).findByCode("DZD");
|
||||||
|
BigDecimal currencyAmount = Beans.get(CurrencyService.class).getCurrencyConversionRate(currency, currencyDzd);
|
||||||
|
|
||||||
|
currencyAmount = currencyAmount.setScale(2, BigDecimal.ROUND_HALF_EVEN);
|
||||||
|
|
||||||
|
BigDecimal finalAmount = purchaseOrder.getExTaxTotal().multiply(currencyAmount);
|
||||||
|
BigDecimal finalTaxAmount = purchaseOrder.getTaxTotal().multiply(currencyAmount);
|
||||||
|
BigDecimal finalTotalAmount = purchaseOrder.getInTaxTotal().multiply(currencyAmount);
|
||||||
|
|
||||||
|
amount = amount.add(finalAmount).setScale(2, BigDecimal.ROUND_HALF_EVEN);
|
||||||
|
taxAmount = taxAmount.add(finalTaxAmount).setScale(2, BigDecimal.ROUND_HALF_EVEN);
|
||||||
|
totalAmount = totalAmount.add(finalTotalAmount).setScale(2, BigDecimal.ROUND_HALF_EVEN);
|
||||||
|
|
||||||
|
}else{
|
||||||
|
amount = amount.add(purchaseOrder.getExTaxTotal());
|
||||||
|
taxAmount = taxAmount.add(purchaseOrder.getTaxTotal());
|
||||||
|
totalAmount = totalAmount.add(purchaseOrder.getInTaxTotal());
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
importationFolder.setAmount(amount);
|
||||||
|
importationFolder.setTaxAmount(taxAmount);
|
||||||
|
importationFolder.setTotalAmount(totalAmount);
|
||||||
|
|
||||||
|
ImportationFolder imp = importationFolderRepo.save(importationFolder);
|
||||||
|
purchaseOrder.setImportationFolder(imp);
|
||||||
|
purchaseOrderRepo.save(purchaseOrder);
|
||||||
|
|
||||||
|
return importationFolder;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -33,12 +33,15 @@ import com.axelor.apps.base.service.BankDetailsService;
|
|||||||
import com.axelor.apps.base.service.BlockingService;
|
import com.axelor.apps.base.service.BlockingService;
|
||||||
import com.axelor.apps.base.service.PartnerPriceListService;
|
import com.axelor.apps.base.service.PartnerPriceListService;
|
||||||
import com.axelor.apps.base.service.TradingNameService;
|
import com.axelor.apps.base.service.TradingNameService;
|
||||||
|
import com.axelor.apps.purchase.db.ImportationFolder;
|
||||||
import com.axelor.apps.purchase.db.PurchaseOrder;
|
import com.axelor.apps.purchase.db.PurchaseOrder;
|
||||||
import com.axelor.apps.purchase.db.PurchaseRequest;
|
import com.axelor.apps.purchase.db.PurchaseRequest;
|
||||||
|
import com.axelor.apps.purchase.db.repo.ImportationFolderRepository;
|
||||||
import com.axelor.apps.purchase.db.repo.PurchaseOrderRepository;
|
import com.axelor.apps.purchase.db.repo.PurchaseOrderRepository;
|
||||||
import com.axelor.apps.purchase.db.repo.PurchaseRequestRepository;
|
import com.axelor.apps.purchase.db.repo.PurchaseRequestRepository;
|
||||||
import com.axelor.apps.purchase.exception.IExceptionMessage;
|
import com.axelor.apps.purchase.exception.IExceptionMessage;
|
||||||
import com.axelor.apps.purchase.service.PurchaseOrderService;
|
import com.axelor.apps.purchase.service.PurchaseOrderService;
|
||||||
|
import com.axelor.apps.purchase.service.PurchaseOrderServiceImpl;
|
||||||
import com.axelor.apps.purchase.service.print.PurchaseOrderPrintService;
|
import com.axelor.apps.purchase.service.print.PurchaseOrderPrintService;
|
||||||
import com.axelor.apps.report.engine.ReportSettings;
|
import com.axelor.apps.report.engine.ReportSettings;
|
||||||
import com.axelor.apps.tool.StringTool;
|
import com.axelor.apps.tool.StringTool;
|
||||||
@@ -594,4 +597,29 @@ public class PurchaseOrderController {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public void generateImportationFolder(ActionRequest request,ActionResponse response) throws AxelorException {
|
||||||
|
|
||||||
|
PurchaseOrder purchaseOrder = Beans.get(PurchaseOrderRepository.class).find(request.getContext().asType(PurchaseOrder.class).getId());
|
||||||
|
|
||||||
|
if(purchaseOrder.getImportationType() == 2){
|
||||||
|
|
||||||
|
ImportationFolder importationFolder = Beans.get(PurchaseOrderServiceImpl.class).generateImportationFolder(purchaseOrder);
|
||||||
|
|
||||||
|
purchaseOrder.setImportationFolder(importationFolder);
|
||||||
|
|
||||||
|
// Beans.get(PurchaseOrderRepository.class).save(purchaseOrder);
|
||||||
|
|
||||||
|
response.setView(
|
||||||
|
ActionView.define("Importation folder")
|
||||||
|
.model(ImportationFolder.class.getName())
|
||||||
|
.add("grid", "importation-folder-grid")
|
||||||
|
.add("form", "importation-folder-form")
|
||||||
|
.param("forceEdit", "true")
|
||||||
|
.domain("self.id = " + importationFolder.getId())
|
||||||
|
.map());
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user