Проблема с порядковым номером счета-фактуры в соответствии с датой счета-фактуры с использованием JEE, EJB Schedule

Я пытаюсь сгенерировать номер счета в правильной последовательности в зависимости от даты финансовой транзакции. Но последовательность прерывается. Например, см. Номер счета, выделенный КРАСНЫМ цветом ниже.

Ниже приведена логика

  1. Получить записи в порядке возрастания даты выставления счета.

Select p from Payment p where p.invoiceDate IS NOT NULL order by p.invoiceDate asc

  1. Другой стол InvoiceSummaryведется подсчет количества счетов за финансовый год. Этот счет увеличивается на 1 после присвоения номера счета.
@TransactionAttribute(TransactionAttributeType.REQUIRED)
private void generateInvoiceNumber(List<Payment> payments)
{
if (payments != null && payments.size() > 0)
        {
            for (Payment payment : payments)
            {
                if (payment.getInvoiceNumber() == null)
                {
                    FiscalDate fiscal = new FiscalDate(payment.getInvoiceNumber());
                    int year = fiscal.getFiscalYear();
                    String financialYear = year + "-" + (year + 1);

                    InvoiceSummary summary = invoiceSummaryDao.findByFinancialYear(financialYear);

                    if (summary != null)
                    {
                        if (summary.getInvoiceCounter() != null)
                        {
                            int counter = summary.getInvoiceCounter();
                            StringBuilder invoiceNumber = new StringBuilder();
                            revisedInvoiceNumber.append(TextHelper.splitFinancialYear(financialYear, "-"));
                            revisedInvoiceNumber.append("/");
                            revisedInvoiceNumber.append("ABP");
                            revisedInvoiceNumber.append("/");
                            revisedInvoiceNumber.append("G");
                            revisedInvoiceNumber.append(counter);
                            payment.setInvoiceNumber(invoiceNumber.toString());
                            payment = paymentDao.merge(payment);

                            int incremented = counter + 1;
                            summary.setInvoiceCounter(incremented);
                            summary = invoiceSummaryDao.merge(summary);
                        }
                    }
                }
            }
        }

        log.info("Ending of generating invoice NUMBER");
    }

Не могли бы вы посоветовать, в чем может быть проблема? Это запланированное задание запускается ежедневно в 22:00.

0 ответов

Другие вопросы по тегам