Search in sources :

Example 36 with AxelorException

use of com.axelor.exception.AxelorException in project axelor-open-suite by axelor.

the class StockLocationLineServiceImpl method checkStockMax.

protected void checkStockMax(Product product, BigDecimal qty, StockLocationLine stockLocationLine, int type, BigDecimal baseQty) throws AxelorException {
    StockLocation stockLocation = stockLocationLine.getStockLocation();
    StockRules stockRules = stockRulesService.getStockRules(product, stockLocation, type, StockRulesRepository.USE_CASE_STOCK_CONTROL);
    if (stockRules == null || !stockRules.getUseMaxQty()) {
        return;
    }
    if (baseQty.add(qty).compareTo(stockRules.getMaxQty()) > 0) {
        throw new AxelorException(stockLocationLine, TraceBackRepository.CATEGORY_CONFIGURATION_ERROR, I18n.get(IExceptionMessage.LOCATION_LINE_3), stockLocationLine.getProduct().getName(), stockLocationLine.getProduct().getCode());
    }
}
Also used : AxelorException(com.axelor.exception.AxelorException) StockLocation(com.axelor.apps.stock.db.StockLocation) StockRules(com.axelor.apps.stock.db.StockRules)

Example 37 with AxelorException

use of com.axelor.exception.AxelorException in project axelor-open-suite by axelor.

the class InventoryManagementRepository method save.

@Override
public Inventory save(Inventory entity) {
    Inventory inventory = super.save(entity);
    SequenceService sequenceService = Beans.get(SequenceService.class);
    try {
        if (Strings.isNullOrEmpty(inventory.getInventorySeq())) {
            inventory.setInventorySeq(sequenceService.getDraftSequenceNumber(inventory));
        }
    } catch (AxelorException e) {
        TraceBackService.traceExceptionFromSaveMethod(e);
        throw new PersistenceException(e.getMessage(), e);
    }
    entity.setInventoryTitle(Beans.get(InventoryService.class).computeTitle(entity));
    return inventory;
}
Also used : AxelorException(com.axelor.exception.AxelorException) PersistenceException(javax.persistence.PersistenceException) SequenceService(com.axelor.apps.base.service.administration.SequenceService) Inventory(com.axelor.apps.stock.db.Inventory)

Example 38 with AxelorException

use of com.axelor.exception.AxelorException in project axelor-open-suite by axelor.

the class LogisticalFormStockRepository method save.

@Override
public LogisticalForm save(LogisticalForm logisticalForm) {
    try {
        Company company = logisticalForm.getCompany();
        if (company != null) {
            if (Strings.isNullOrEmpty(logisticalForm.getDeliveryNumberSeq())) {
                String sequenceNumber = Beans.get(SequenceService.class).getSequenceNumber("logisticalForm", logisticalForm.getCompany());
                if (Strings.isNullOrEmpty(sequenceNumber)) {
                    throw new AxelorException(Sequence.class, TraceBackRepository.CATEGORY_NO_VALUE, I18n.get(IExceptionMessage.LOGISTICAL_FORM_MISSING_SEQUENCE), logisticalForm.getCompany().getName());
                }
                logisticalForm.setDeliveryNumberSeq(sequenceNumber);
            }
            if (!logisticalForm.getIsEmailSent()) {
                StockConfig stockConfig = Beans.get(StockConfigService.class).getStockConfig(company);
                if (stockConfig.getLogisticalFormAutomaticEmail()) {
                    Template template = stockConfig.getLogisticalFormMessageTemplate();
                    if (template == null) {
                        throw new AxelorException(TraceBackRepository.CATEGORY_CONFIGURATION_ERROR, I18n.get(IExceptionMessage.LOGISTICAL_FORM_MISSING_TEMPLATE), logisticalForm);
                    }
                    Beans.get(TemplateMessageService.class).generateAndSendMessage(logisticalForm, template);
                    logisticalForm.setIsEmailSent(true);
                }
            }
        }
        return super.save(logisticalForm);
    } catch (Exception e) {
        TraceBackService.traceExceptionFromSaveMethod(e);
        throw new PersistenceException(e.getMessage(), e);
    }
}
Also used : AxelorException(com.axelor.exception.AxelorException) Company(com.axelor.apps.base.db.Company) StockConfig(com.axelor.apps.stock.db.StockConfig) TemplateMessageService(com.axelor.apps.message.service.TemplateMessageService) PersistenceException(javax.persistence.PersistenceException) SequenceService(com.axelor.apps.base.service.administration.SequenceService) StockConfigService(com.axelor.apps.stock.service.config.StockConfigService) AxelorException(com.axelor.exception.AxelorException) PersistenceException(javax.persistence.PersistenceException) Template(com.axelor.apps.message.db.Template)

Example 39 with AxelorException

use of com.axelor.exception.AxelorException in project axelor-open-suite by axelor.

the class SaleOrderPrintServiceImpl method prepareReportSettings.

@Override
public ReportSettings prepareReportSettings(SaleOrder saleOrder, boolean proforma, String format) throws AxelorException {
    if (saleOrder.getPrintingSettings() == null) {
        if (saleOrder.getCompany().getPrintingSettings() != null) {
            saleOrder.setPrintingSettings(saleOrder.getCompany().getPrintingSettings());
        } else {
            throw new AxelorException(TraceBackRepository.CATEGORY_MISSING_FIELD, String.format(I18n.get(IExceptionMessage.SALE_ORDER_MISSING_PRINTING_SETTINGS), saleOrder.getSaleOrderSeq()), saleOrder);
        }
    }
    String locale = ReportSettings.getPrintingLocale(saleOrder.getClientPartner());
    String title = saleOrderService.getFileName(saleOrder);
    ReportSettings reportSetting = ReportFactory.createReport(IReport.SALES_ORDER, title + " - ${date}");
    return reportSetting.addParam("SaleOrderId", saleOrder.getId()).addParam("Timezone", saleOrder.getCompany() != null ? saleOrder.getCompany().getTimezone() : null).addParam("Locale", locale).addParam("ProformaInvoice", proforma).addParam("HeaderHeight", saleOrder.getPrintingSettings().getPdfHeaderHeight()).addParam("FooterHeight", saleOrder.getPrintingSettings().getPdfFooterHeight()).addFormat(format);
}
Also used : AxelorException(com.axelor.exception.AxelorException) ReportSettings(com.axelor.apps.report.engine.ReportSettings)

Example 40 with AxelorException

use of com.axelor.exception.AxelorException in project axelor-open-suite by axelor.

the class InvoiceGenerator method createInvoiceHeader.

protected Invoice createInvoiceHeader() throws AxelorException {
    Invoice invoice = new Invoice();
    invoice.setCompany(company);
    invoice.setOperationTypeSelect(operationType);
    if (partner == null) {
        throw new AxelorException(TraceBackRepository.CATEGORY_MISSING_FIELD, I18n.get(IExceptionMessage.INVOICE_GENERATOR_2), I18n.get(com.axelor.apps.base.exceptions.IExceptionMessage.EXCEPTION));
    }
    if (Beans.get(BlockingService.class).getBlocking(partner, company, BlockingRepository.INVOICING_BLOCKING) != null) {
        throw new AxelorException(TraceBackRepository.CATEGORY_INCONSISTENCY, I18n.get(IExceptionMessage.INVOICE_VALIDATE_BLOCKING));
    }
    invoice.setPartner(partner);
    AccountingSituation accountingSituation = Beans.get(AccountingSituationService.class).getAccountingSituation(partner, company);
    if (accountingSituation != null) {
        invoice.setInvoiceAutomaticMail(accountingSituation.getInvoiceAutomaticMail());
        invoice.setInvoiceMessageTemplate(accountingSituation.getInvoiceMessageTemplate());
        invoice.setPfpValidatorUser(accountingSituation.getPfpValidatorUser());
    }
    if (paymentCondition == null) {
        paymentCondition = InvoiceToolService.getPaymentCondition(invoice);
    }
    invoice.setPaymentCondition(paymentCondition);
    if (paymentMode == null) {
        paymentMode = InvoiceToolService.getPaymentMode(invoice);
    }
    invoice.setPaymentMode(paymentMode);
    if (mainInvoicingAddress == null) {
        mainInvoicingAddress = Beans.get(PartnerService.class).getInvoicingAddress(partner);
    }
    invoice.setAddress(mainInvoicingAddress);
    invoice.setAddressStr(Beans.get(AddressService.class).computeAddressStr(invoice.getAddress()));
    invoice.setContactPartner(contactPartner);
    if (currency == null) {
        currency = partner.getCurrency();
    }
    if (currency == null) {
        throw new AxelorException(TraceBackRepository.CATEGORY_MISSING_FIELD, I18n.get(IExceptionMessage.INVOICE_GENERATOR_6), I18n.get(com.axelor.apps.base.exceptions.IExceptionMessage.EXCEPTION));
    }
    invoice.setCurrency(currency);
    invoice.setStatusSelect(InvoiceRepository.STATUS_DRAFT);
    invoice.setPriceList(priceList);
    invoice.setInternalReference(internalReference);
    invoice.setExternalReference(externalReference);
    invoice.setPrintingSettings(Beans.get(TradingNameService.class).getDefaultPrintingSettings(null, company));
    invoice.setTradingName(tradingName);
    if (groupProductsOnPrintings == null) {
        groupProductsOnPrintings = partner.getGroupProductsOnPrintings();
    }
    invoice.setGroupProductsOnPrintings(groupProductsOnPrintings);
    // Set ATI mode on invoice
    AccountConfigService accountConfigService = Beans.get(AccountConfigService.class);
    AccountConfig accountConfig = accountConfigService.getAccountConfig(company);
    int atiChoice = accountConfig.getInvoiceInAtiSelect();
    if (inAti == null) {
        invoice.setInAti(accountConfigService.getInvoiceInAti(accountConfig));
    } else if (atiChoice == AccountConfigRepository.INVOICE_ATI_DEFAULT || atiChoice == AccountConfigRepository.INVOICE_WT_DEFAULT) {
        invoice.setInAti(inAti);
    } else if (atiChoice == AccountConfigRepository.INVOICE_ATI_ALWAYS) {
        invoice.setInAti(true);
    } else {
        invoice.setInAti(false);
    }
    if (partner.getFactorizedCustomer() && accountConfig.getFactorPartner() != null) {
        List<BankDetails> bankDetailsList = accountConfig.getFactorPartner().getBankDetailsList();
        companyBankDetails = bankDetailsList.stream().filter(bankDetails -> bankDetails.getIsDefault()).findFirst().orElse(null);
    } else if (accountingSituation != null) {
        if (paymentMode != null) {
            if (paymentMode.equals(partner.getOutPaymentMode())) {
                companyBankDetails = accountingSituation.getCompanyOutBankDetails();
            } else if (paymentMode.equals(partner.getInPaymentMode())) {
                companyBankDetails = accountingSituation.getCompanyInBankDetails();
            }
        }
    }
    if (companyBankDetails == null) {
        companyBankDetails = company.getDefaultBankDetails();
        List<BankDetails> allowedBDs = Beans.get(PaymentModeService.class).getCompatibleBankDetailsList(paymentMode, company);
        if (!allowedBDs.contains(companyBankDetails)) {
            companyBankDetails = null;
        }
    }
    invoice.setCompanyBankDetails(companyBankDetails);
    if (partner.getBankDetailsList() != null && invoice.getBankDetails() == null) {
        invoice.setBankDetails(partner.getBankDetailsList().stream().filter(b -> b.getActive() && b.getIsDefault()).findFirst().orElse(null));
    }
    if (partner != null && !Strings.isNullOrEmpty(partner.getInvoiceComments())) {
        invoice.setNote(partner.getInvoiceComments());
    }
    invoice.setInvoicesCopySelect(getInvoiceCopy());
    initCollections(invoice);
    return invoice;
}
Also used : Company(com.axelor.apps.base.db.Company) AppAccountService(com.axelor.apps.account.service.app.AppAccountService) AccountConfig(com.axelor.apps.account.db.AccountConfig) PartnerService(com.axelor.apps.base.service.PartnerService) LoggerFactory(org.slf4j.LoggerFactory) PaymentCondition(com.axelor.apps.account.db.PaymentCondition) PaymentModeService(com.axelor.apps.account.service.payment.PaymentModeService) AddressService(com.axelor.apps.base.service.AddressService) ArrayList(java.util.ArrayList) InvoiceLineTax(com.axelor.apps.account.db.InvoiceLineTax) IExceptionMessage(com.axelor.apps.account.exception.IExceptionMessage) Strings(com.google.common.base.Strings) BigDecimal(java.math.BigDecimal) AccountingSituation(com.axelor.apps.account.db.AccountingSituation) AxelorException(com.axelor.exception.AxelorException) InvoiceLine(com.axelor.apps.account.db.InvoiceLine) BlockingService(com.axelor.apps.base.service.BlockingService) ContextEntity(com.axelor.rpc.ContextEntity) I18n(com.axelor.i18n.I18n) AccountConfigRepository(com.axelor.apps.account.db.repo.AccountConfigRepository) TradingName(com.axelor.apps.base.db.TradingName) Logger(org.slf4j.Logger) TraceBackRepository(com.axelor.exception.db.repo.TraceBackRepository) InvoiceLineRepository(com.axelor.apps.account.db.repo.InvoiceLineRepository) MethodHandles(java.lang.invoke.MethodHandles) Invoice(com.axelor.apps.account.db.Invoice) TradingNameService(com.axelor.apps.base.service.TradingNameService) Currency(com.axelor.apps.base.db.Currency) InvoiceToolService(com.axelor.apps.account.service.invoice.InvoiceToolService) BlockingRepository(com.axelor.apps.base.db.repo.BlockingRepository) List(java.util.List) InvoiceRepository(com.axelor.apps.account.db.repo.InvoiceRepository) Beans(com.axelor.inject.Beans) AccountConfigService(com.axelor.apps.account.service.config.AccountConfigService) LocalDate(java.time.LocalDate) PriceList(com.axelor.apps.base.db.PriceList) PaymentMode(com.axelor.apps.account.db.PaymentMode) AccountingSituationService(com.axelor.apps.account.service.AccountingSituationService) Address(com.axelor.apps.base.db.Address) Partner(com.axelor.apps.base.db.Partner) BankDetails(com.axelor.apps.base.db.BankDetails) TaxInvoiceLine(com.axelor.apps.account.service.invoice.generator.tax.TaxInvoiceLine) AxelorException(com.axelor.exception.AxelorException) PaymentModeService(com.axelor.apps.account.service.payment.PaymentModeService) Invoice(com.axelor.apps.account.db.Invoice) BankDetails(com.axelor.apps.base.db.BankDetails) AccountingSituation(com.axelor.apps.account.db.AccountingSituation) AccountConfigService(com.axelor.apps.account.service.config.AccountConfigService) AccountingSituationService(com.axelor.apps.account.service.AccountingSituationService) AccountConfig(com.axelor.apps.account.db.AccountConfig)

Aggregations

AxelorException (com.axelor.exception.AxelorException)546 Transactional (com.google.inject.persist.Transactional)126 BigDecimal (java.math.BigDecimal)118 ArrayList (java.util.ArrayList)84 IOException (java.io.IOException)73 Product (com.axelor.apps.base.db.Product)64 Company (com.axelor.apps.base.db.Company)63 LocalDate (java.time.LocalDate)58 Partner (com.axelor.apps.base.db.Partner)48 List (java.util.List)45 StockMoveLine (com.axelor.apps.stock.db.StockMoveLine)40 HashMap (java.util.HashMap)38 Invoice (com.axelor.apps.account.db.Invoice)33 StockMove (com.axelor.apps.stock.db.StockMove)32 Map (java.util.Map)31 Beans (com.axelor.inject.Beans)30 I18n (com.axelor.i18n.I18n)28 Inject (com.google.inject.Inject)28 MoveLine (com.axelor.apps.account.db.MoveLine)27 Context (com.axelor.rpc.Context)27