КОНЕЧНО! это была основная идея этой системы, и во всех подобных системах ее не следует изменять, так как если вы допустили ошибку, вам следует добавить транзакцию COUNTER, чтобы исправить ошибку. Даже если мы закрыли старые годы и работали только в текущем году, мы должны позволить пользователю изменять, как того требует тип его бизнеса, и только за один год многое нужно вычислить, а пользователю нужно то, что он называет БОГ-РЕЖИМ активен, чтобы изменить что-либо в любое время .. WTH.

твует действительно серьезная проблема в системах двойного учета с нумерацией страниц, я думаю, что это распространено, но я до сих пор не нашел решения для своей проблемы.

Вы можете использовать эту ссылку, чтобы прочитать опростые системы двойного учета так же, как тот, который я сделал сLaravel а такжеAngularJS.

В этой системе ожидаемый результат (например) примерно такой:

ID      In       Out    Balance
1      100.00    0.00   100.00
2       10.00    0.00   110.00
3        0.00   70.00    40.00
4        5.00    0.00    45.00
5        0.00   60.00   -15.00
6       20.00    0.00     5.00

Отслеживать баланс внутри накопительной функции очень легко, если вы отображали все транзакции на одной странице, а остаток в последней транзакции - это ваш текущий баланс на конец дня.

Например, для определенного диапазона дат$fromDate->$toDateнам нравится:

$balanceYesterday = DB::table('journal')->where('date', '<', $fromDate)
        ->join('transactions','transactions.journal_id','journal.id')->where('transactions.type', "=", 0) /* 0 means the account of the company */
        ->select(DB::raw('SUM(amount) as total_balance'))
        ->first()->total_balance;

Теперь у нас есть баланс со вчерашнего дня, мы зависим от него, чтобы рассчитать баланс после этого в накопительном цикле до конца процесса, достигая$toDate;

$currentBalance = $currentBalance + $currentTransaction->amount;
$currentTransactionBalance = $currentBalance;

Теперь настоящая проблема начинается, когда у вас есть большое количество транзакций, и вам нужно разбить их на страницы$journal = $journal->paginate(100);скажем, 100 транзакций на страницу, система будет работать, как и ожидалось, для первой страницы, так как мы уже можем рассчитать$balanceYesterday и зависит от него, чтобы рассчитать новый баланс после каждой транзакции до конца 100 транзакций на первой странице.

Следующая страница будет иметь проблему что он не знает, каким был последний баланс в предыдущей транзакции на первой странице, поэтому он начнется снова с$balanceYesterday, заставляя всю таблицу иметь неправильные вычисления.

То, что я сделал первым, чтобы исправить, была передача последней транзакцииamount (в начале) перейти к следующей странице в качестве параметра и использовать ее в качестве начальной суммы для повторного расчета, и это было лучшее решение, которое у меня было, поскольку я использовал только<< ПРЕД а такжеСЛЕДУЮЩАЯ >> кнопки, так что это было очень легко исправить.

Но в последнее время я обнаружил, что этот обходной путь не будет работать, если у меня есть нумерация страниц с номерами страниц, поскольку пользователь хотел бы просматривать страницы, чтобы изучить журнал, теперь невозможно узнать последний баланс на конкретной странице и Система покажет неверные расчеты.

Что я пытаюсь сделать находит способрассчитать остаток по конкретной транзакции, если это был кредит или дебет, я ищу способ узнать, сколько было сальдо после выполнения определенной транзакции в конкретную дату, я не хочу добавлять новую колонку баланса и сохранять баланс внутри ОНО, ПОЛЬЗОВАТЕЛЬ ДЕЛАЕТ МНОГО МОДИФИКАЦИЙ И РЕДАКТИРОВАТЬ СДЕЛКИ ИЗ ВРЕМЕНИ И ВРЕМЯ, КОТОРЫЕ ПОЛНОСТЬЮ ИЗМЕНЯЕТ МАЛЕНЬКУЮ МОДИФИКАЦИЮ ПОСЛЕ ЭТОГО, Я НЕ МОГУ зависеть от идентификаторов транзакций в любом методе, поскольку транзакции может иметь разные случайные даты, поэтому не будет упорядочения по идентификатору, но может быть упорядочение по другим полям, таким как дата или владелец аккаунта или тип или что-то еще ..

Я ломал голову над этим около 4 месяцев, я искал в Интернете и не нашел решений, надеюсь, после этого длинного объяснения, что моя проблема ясна, и я надеюсь, что кто-нибудь может помочь мне с решением, пожалуйста ..

Спасибо.

Ответы на вопрос(2)

Ваш ответ на вопрос