add auto generate importation folder for purchase order

This commit is contained in:
2022-08-31 09:38:50 +01:00
parent 853d481e2c
commit fbc54031aa
3 changed files with 84 additions and 2 deletions

View File

@@ -22,6 +22,7 @@ import com.axelor.apps.base.db.Currency;
import com.axelor.apps.base.db.Partner;
import com.axelor.apps.base.db.PriceList;
import com.axelor.apps.base.db.TradingName;
import com.axelor.apps.purchase.db.ImportationFolder;
import com.axelor.apps.purchase.db.PurchaseOrder;
import com.axelor.auth.db.User;
import com.axelor.exception.AxelorException;
@@ -114,4 +115,6 @@ public interface PurchaseOrderService {
public void cancelPurchaseOrder(PurchaseOrder purchaseOrder);
public void cancelReasonPurchaseOrder(PurchaseOrder purchaseOrder, CancelReason cancelReason, String cancelReasonStr);
public void calculateSum(List<PurchaseOrder> purchaseOrders,ImportationFolder importationFolder) throws AxelorException;
}

View File

@@ -85,7 +85,7 @@ public class PurchaseOrderServiceImpl implements PurchaseOrderService {
@Inject protected AppPurchaseService appPurchaseService;
@Inject protected PurchaseOrderRepository purchaseOrderRepo;
@Inject protected ImportationFolderRepository importationFolderRepository;
@Inject protected ImportationFolderRepository importationFolderRepo;
@Override
public PurchaseOrder _computePurchaseOrderLines(PurchaseOrder purchaseOrder)
@@ -529,7 +529,7 @@ public class PurchaseOrderServiceImpl implements PurchaseOrderService {
importationFolder.setTaxAmount(taxAmount);
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;
}
}

View File

@@ -33,12 +33,15 @@ import com.axelor.apps.base.service.BankDetailsService;
import com.axelor.apps.base.service.BlockingService;
import com.axelor.apps.base.service.PartnerPriceListService;
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.PurchaseRequest;
import com.axelor.apps.purchase.db.repo.ImportationFolderRepository;
import com.axelor.apps.purchase.db.repo.PurchaseOrderRepository;
import com.axelor.apps.purchase.db.repo.PurchaseRequestRepository;
import com.axelor.apps.purchase.exception.IExceptionMessage;
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.report.engine.ReportSettings;
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());
}
}
}