Проблема с порядковым номером счета-фактуры в соответствии с датой счета-фактуры с использованием JEE, EJB Schedule
Я пытаюсь сгенерировать номер счета в правильной последовательности в зависимости от даты финансовой транзакции. Но последовательность прерывается. Например, см. Номер счета, выделенный КРАСНЫМ цветом ниже.
Ниже приведена логика
- Получить записи в порядке возрастания даты выставления счета.
Select p from Payment p where p.invoiceDate IS NOT NULL order by p.invoiceDate asc
- Другой стол
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.