Search in sources :

Example 6 with AccountingBatch

use of com.axelor.apps.account.db.AccountingBatch in project axelor-open-suite by axelor.

the class AccountingBatchController method actionDirectDebit.

/**
 * Lancer le batch de prélèvement
 *
 * @param request
 * @param response
 */
public void actionDirectDebit(ActionRequest request, ActionResponse response) {
    try {
        AccountingBatch accountingBatch = request.getContext().asType(AccountingBatch.class);
        accountingBatch = Beans.get(AccountingBatchRepository.class).find(accountingBatch.getId());
        Batch batch = Beans.get(AccountingBatchService.class).directDebit(accountingBatch);
        response.setFlash(batch.getComments());
    } catch (Exception e) {
        TraceBackService.trace(response, e);
    } finally {
        response.setReload(true);
    }
}
Also used : Batch(com.axelor.apps.base.db.Batch) AccountingBatch(com.axelor.apps.account.db.AccountingBatch) AccountingBatch(com.axelor.apps.account.db.AccountingBatch) AxelorException(com.axelor.exception.AxelorException) AccountingBatchService(com.axelor.apps.account.service.batch.AccountingBatchService)

Example 7 with AccountingBatch

use of com.axelor.apps.account.db.AccountingBatch in project axelor-open-suite by axelor.

the class BatchDirectDebitCustomerInvoice method process.

@Override
protected void process() {
    AccountingBatch accountingBatch = batch.getAccountingBatch();
    List<String> filterList = new ArrayList<>();
    List<Pair<String, Object>> bindingList = new ArrayList<>();
    filterList.add("self.operationTypeSelect = :operationTypeSelect");
    bindingList.add(Pair.of("operationTypeSelect", (Object) InvoiceRepository.OPERATION_TYPE_CLIENT_SALE));
    filterList.add("self.statusSelect = :statusSelect");
    bindingList.add(Pair.of("statusSelect", (Object) InvoiceRepository.STATUS_VENTILATED));
    filterList.add("self.amountRemaining > 0");
    filterList.add("self.hasPendingPayments = FALSE");
    LocalDate dueDate = accountingBatch.getDueDate() != null ? accountingBatch.getDueDate() : Beans.get(AppBaseService.class).getTodayDate(accountingBatch.getCompany());
    filterList.add("self.dueDate <= :dueDate");
    bindingList.add(Pair.of("dueDate", (Object) dueDate));
    if (accountingBatch.getCompany() != null) {
        filterList.add("self.company = :company");
        bindingList.add(Pair.of("company", (Object) accountingBatch.getCompany()));
    }
    filterList.add("self.partner.id NOT IN (SELECT DISTINCT partner.id FROM Partner partner LEFT JOIN partner.blockingList blocking WHERE blocking.blockingSelect = :blockingSelect AND blocking.blockingToDate >= :blockingToDate)");
    bindingList.add(Pair.of("blockingSelect", BlockingRepository.DEBIT_BLOCKING));
    bindingList.add(Pair.of("blockingToDate", Beans.get(AppBaseService.class).getTodayDate(accountingBatch.getCompany())));
    if (accountingBatch.getBankDetails() != null) {
        Set<BankDetails> bankDetailsSet = Sets.newHashSet(accountingBatch.getBankDetails());
        if (accountingBatch.getIncludeOtherBankAccounts() && appBaseService.getAppBase().getManageMultiBanks()) {
            bankDetailsSet.addAll(accountingBatch.getCompany().getBankDetailsList());
        }
        filterList.add("self.companyBankDetails IN (:bankDetailsSet)");
        bindingList.add(Pair.of("bankDetailsSet", (Object) bankDetailsSet));
    }
    if (accountingBatch.getPaymentMode() != null) {
        filterList.add("self.paymentMode = :paymentMode");
        bindingList.add(Pair.of("paymentMode", (Object) accountingBatch.getPaymentMode()));
    }
    List<InvoicePayment> invoicePaymentList = processQuery(filterList, bindingList);
    if (!invoicePaymentList.isEmpty()) {
        try {
            final BankOrder bankOrder = Beans.get(BankOrderMergeService.class).mergeFromInvoicePayments(invoicePaymentList);
            findBatch().setBankOrder(bankOrder);
        } catch (AxelorException e) {
            TraceBackService.trace(e, ExceptionOriginRepository.DIRECT_DEBIT, batch.getId());
            LOG.error(e.getMessage());
        }
    }
}
Also used : InvoicePayment(com.axelor.apps.account.db.InvoicePayment) AxelorException(com.axelor.exception.AxelorException) BankDetails(com.axelor.apps.base.db.BankDetails) ArrayList(java.util.ArrayList) LocalDate(java.time.LocalDate) AppBaseService(com.axelor.apps.base.service.app.AppBaseService) BankOrderMergeService(com.axelor.apps.bankpayment.service.bankorder.BankOrderMergeService) AccountingBatch(com.axelor.apps.account.db.AccountingBatch) BankOrder(com.axelor.apps.bankpayment.db.BankOrder) Pair(org.apache.commons.lang3.tuple.Pair)

Example 8 with AccountingBatch

use of com.axelor.apps.account.db.AccountingBatch in project axelor-open-suite by axelor.

the class BatchDirectDebitPaymentSchedule method processPaymentScheduleLines.

protected void processPaymentScheduleLines(int paymentScheduleType) {
    AccountingBatch accountingBatch = batch.getAccountingBatch();
    if (generateBankOrderFlag) {
        Preconditions.checkNotNull(accountingBatch.getCompany(), I18n.get("Company is missing."));
        Preconditions.checkNotNull(accountingBatch.getPaymentMode(), I18n.get("Payment method is missing."));
        BankDetails companyBankDetails = getCompanyBankDetails(accountingBatch);
        AccountManagement accountManagement = Beans.get(PaymentModeService.class).getAccountManagement(accountingBatch.getPaymentMode(), accountingBatch.getCompany(), companyBankDetails);
        Preconditions.checkNotNull(accountManagement, I18n.get("Account management is missing."));
        Preconditions.checkNotNull(accountManagement.getBankDetails(), I18n.get("Bank details in account management is missing."));
        Preconditions.checkNotNull(companyBankDetails.getCurrency(), I18n.get("Currency in company bank details is missing."));
        String bankOrderExportPath = accountingBatch.getPaymentMode().getBankOrderExportFolderPath();
        String dataExpotDir;
        try {
            dataExpotDir = appBaseService.getDataExportDir();
            BankPaymentConfigService bankPaymentConfigService = Beans.get(BankPaymentConfigService.class);
            BankPaymentConfig bankPaymentConfig = bankPaymentConfigService.getBankPaymentConfig(accountingBatch.getCompany());
            bankPaymentConfigService.getIcsNumber(bankPaymentConfig);
        } catch (AxelorException e) {
            throw new RuntimeException(e);
        }
        Preconditions.checkArgument(bankOrderExportPath != null && new File(dataExpotDir + bankOrderExportPath).exists(), String.format(I18n.get("Bank order export folder does not exist: %s"), dataExpotDir + bankOrderExportPath));
    }
    QueryBuilder<PaymentScheduleLine> queryBuilder = QueryBuilder.of(PaymentScheduleLine.class);
    queryBuilder.add("self.paymentSchedule.statusSelect = :paymentScheduleStatusSelect");
    queryBuilder.bind("paymentScheduleStatusSelect", PaymentScheduleRepository.STATUS_CONFIRMED);
    queryBuilder.add("self.paymentSchedule.typeSelect = :paymentScheduleTypeSelect");
    queryBuilder.bind("paymentScheduleTypeSelect", paymentScheduleType);
    queryBuilder.add("self.statusSelect = :statusSelect");
    queryBuilder.bind("statusSelect", PaymentScheduleLineRepository.STATUS_IN_PROGRESS);
    LocalDate dueDate = accountingBatch.getDueDate() != null ? accountingBatch.getDueDate() : Beans.get(AppBaseService.class).getTodayDate(accountingBatch.getCompany());
    queryBuilder.add("self.scheduleDate <= :dueDate");
    queryBuilder.bind("dueDate", dueDate);
    if (accountingBatch.getCompany() != null) {
        queryBuilder.add("self.paymentSchedule.company IS NULL OR self.paymentSchedule.company = :company");
        queryBuilder.bind("company", accountingBatch.getCompany());
    }
    queryBuilder.add("self.paymentSchedule.partner.id NOT IN (SELECT DISTINCT partner.id FROM Partner partner LEFT JOIN partner.blockingList blocking WHERE blocking.blockingSelect = :blockingSelect AND blocking.blockingToDate >= :blockingToDate)");
    queryBuilder.bind("blockingSelect", BlockingRepository.DEBIT_BLOCKING);
    queryBuilder.bind("blockingToDate", Beans.get(AppBaseService.class).getTodayDate(accountingBatch.getCompany()));
    if (accountingBatch.getBankDetails() != null) {
        Set<BankDetails> bankDetailsSet = Sets.newHashSet(accountingBatch.getBankDetails());
        if (accountingBatch.getIncludeOtherBankAccounts() && appBaseService.getAppBase().getManageMultiBanks()) {
            bankDetailsSet.addAll(accountingBatch.getCompany().getBankDetailsList());
        }
        queryBuilder.add("self.paymentSchedule.companyBankDetails IS NULL OR self.paymentSchedule.companyBankDetails IN (:bankDetailsSet)");
        queryBuilder.bind("bankDetailsSet", bankDetailsSet);
    }
    if (accountingBatch.getPaymentMode() != null) {
        queryBuilder.add("self.paymentSchedule.paymentMode IS NULL OR self.paymentSchedule.paymentMode = :paymentMode");
        queryBuilder.bind("paymentMode", accountingBatch.getPaymentMode());
    }
    queryBuilder.add(":batch NOT MEMBER OF self.batchSet");
    queryBuilder.bind("batch", batch);
    processQuery(queryBuilder);
}
Also used : AxelorException(com.axelor.exception.AxelorException) PaymentModeService(com.axelor.apps.account.service.payment.PaymentModeService) PaymentScheduleLine(com.axelor.apps.account.db.PaymentScheduleLine) BankDetails(com.axelor.apps.base.db.BankDetails) LocalDate(java.time.LocalDate) BankPaymentConfig(com.axelor.apps.bankpayment.db.BankPaymentConfig) AccountingBatch(com.axelor.apps.account.db.AccountingBatch) BankPaymentConfigService(com.axelor.apps.bankpayment.service.config.BankPaymentConfigService) File(java.io.File) AccountManagement(com.axelor.apps.account.db.AccountManagement)

Example 9 with AccountingBatch

use of com.axelor.apps.account.db.AccountingBatch in project axelor-open-suite by axelor.

the class AccountingBatchBankPaymentService method run.

@Override
public Batch run(Model batchModel) throws AxelorException {
    Batch batch;
    AccountingBatch accountingBatch = (AccountingBatch) batchModel;
    if (!Beans.get(AppBankPaymentService.class).isApp("bank-payment")) {
        return super.run(accountingBatch);
    }
    switch(accountingBatch.getActionSelect()) {
        case AccountingBatchRepository.ACTION_DIRECT_DEBIT:
            batch = directDebit(accountingBatch);
            break;
        default:
            batch = super.run(accountingBatch);
    }
    return batch;
}
Also used : Batch(com.axelor.apps.base.db.Batch) AccountingBatch(com.axelor.apps.account.db.AccountingBatch) AccountingBatch(com.axelor.apps.account.db.AccountingBatch)

Example 10 with AccountingBatch

use of com.axelor.apps.account.db.AccountingBatch in project axelor-open-suite by axelor.

the class AccountingBatchController method actionRealizeFixedAssetLines.

public void actionRealizeFixedAssetLines(ActionRequest request, ActionResponse response) {
    AccountingBatch accountingBatch = request.getContext().asType(AccountingBatch.class);
    accountingBatch = Beans.get(AccountingBatchRepository.class).find(accountingBatch.getId());
    Batch batch = Beans.get(AccountingBatchService.class).realizeFixedAssetLines(accountingBatch);
    if (batch != null)
        response.setFlash(batch.getComments());
    response.setReload(true);
}
Also used : Batch(com.axelor.apps.base.db.Batch) AccountingBatch(com.axelor.apps.account.db.AccountingBatch) AccountingBatch(com.axelor.apps.account.db.AccountingBatch) AccountingBatchService(com.axelor.apps.account.service.batch.AccountingBatchService)

Aggregations

AccountingBatch (com.axelor.apps.account.db.AccountingBatch)21 Batch (com.axelor.apps.base.db.Batch)11 AxelorException (com.axelor.exception.AxelorException)9 AccountingBatchRepository (com.axelor.apps.account.db.repo.AccountingBatchRepository)5 AccountingBatchService (com.axelor.apps.account.service.batch.AccountingBatchService)5 BankDetails (com.axelor.apps.base.db.BankDetails)5 LocalDate (java.time.LocalDate)4 Partner (com.axelor.apps.base.db.Partner)3 ArrayList (java.util.ArrayList)3 InvoicePayment (com.axelor.apps.account.db.InvoicePayment)2 PaymentScheduleLine (com.axelor.apps.account.db.PaymentScheduleLine)2 Reimbursement (com.axelor.apps.account.db.Reimbursement)2 BankOrder (com.axelor.apps.bankpayment.db.BankOrder)2 Company (com.axelor.apps.base.db.Company)2 IOException (java.io.IOException)2 JAXBException (javax.xml.bind.JAXBException)2 DatatypeConfigurationException (javax.xml.datatype.DatatypeConfigurationException)2 Pair (org.apache.commons.lang3.tuple.Pair)2 Account (com.axelor.apps.account.db.Account)1 AccountManagement (com.axelor.apps.account.db.AccountManagement)1