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.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;
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -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());
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user