ОК, я немного опоздал на вечеринку, но здесь есть несколько интересных ответов, и я подумал, что должен добавить свой дубль.
Чтобы ответить на вопрос: следует ли хранить значения в виде положительных сумм и пометить их какдебет или кредит?
Краткий ответ: вам не нужно добавлять флаг, потому что любая система автоматически применяет флаг «дебет» или «кредит», когда вы сохраняете номер в его правильной подписанной форме.Это знак «-».Стоит ли хранить значения в одном из двух столбцов, дебет или кредит?Точно нет !Зачем сохранять пустое поле для каждой транзакции в системе?Управлять отдельным столбцом с правильным значением со знаком гораздо проще.
Чем длиннее ответ на вопрос: «Учет и дизайн базы данных, хранение дебетовых и кредитных сумм».
Это совершенно просто и надежнодо тех пор, пока вы понимаете двойной учет бухгалтерского учета.Когда вы публикуете журнал в именной книге, вы предлагаете пользователю поле дебета и поле кредита для каждой строки в журнале.В вашем приложении вы разрешаете только одному из полей иметь значение (на строку), и оно должно быть положительным значением без знака.Когда вы пишете транзакцию, если у вас есть дебет, вы просто пишете как есть.Если у вас есть значение в поле кредита, вы переворачиваете его и пишете как отрицательное число.База данных видит только одно значение со знаком в одном столбце на строку (запись).Как скажет любой бухгалтер, запись в журнале должна быть сбалансированной, поэтому записи базы данных для строк транзакции журнала будут равны нулю.Код приложения должен гарантировать, что журнал должен быть сбалансирован.
Теперь рассмотрим счет-фактуру покупки, которую пользователь добавляет в систему.Допустим, у нас есть этот (маловероятный) счет-фактура для компании Widget:
£ 500 за стальной стержень
£ 100 за коробку с конвертами
£ 10000 за токарный станок
£ 2120 налог на покупку
£ 12720 общая сумма счета
Приложение записывает одну запись в таблицу документов.Он имеет ссылки «один ко многим» на таблицу транзакций.Для трехстрочного счета-фактуры приложение записывает 5 строк транзакции.
£ 500, связанных с себестоимостью продаж, счетом главной книги.Дебетовое сальдо = расход, когда в p & l
£ 100 связан с канцелярскими товарами, счетом главной книги p & l.Дебетовое сальдо = расходы, когда в p & l
£ 10000, связанном с Machinery, счет главной бухгалтерской книги.Дебетовое сальдо = актив, когда он указан в бс.
£ 2120 и связан с «Возмещаемым входным налогом», счетом в бс глДебетовое сальдо = актив, задолженность по налогам у налоговика
- 12720 фунтов стерлингов, привязанного к Creditors Control, счету bs gl.Кредитный баланс = обязательство, мы должны это поставщику
£ 0,00 общей стоимостью 5 записей, записанных в таблицу транзакций.
Теперь рассмотрим счет на продажу, который пользовательдобавляет:
£ 250 для премиум-виджетов
£ 250 для стандартных виджетов
£ 100 налог с продаж
£ 600 общая сумма счета
Снова одна запись записывается в таблицу документов.Для двухстрочного счета-фактуры записывается 4 строки транзакции.Поскольку это накладная на продажу, приложение должно изменить значения за кулисами.Строки накладных по продажам представляют собой кредиты для бухгалтерского учета, но пользователь не должен добавлять их в качестве отрицательных значений.
£ 250 - связано с Премиум продаж виджетов, аккаунтом p & l gl.Кредитный баланс = доход / прибыль, когда в p & l
£ 250 - связан со стандартным виджетом продаж, счетом p & l gl.Кредитный баланс = доход / прибыль, когда в p & l
£ 100 - связан с выплаченным налогом на прибыль, счет bs gl.Кредитный баланс = пассив в БС.Мы должны эти деньги налоговому управляющему.
£ 600, связанный с контролем дебиторов, аккаунтом bs gl.Дебетовое сальдо = актив, задолженность перед клиентом.
£ 0,00 общая стоимость 4 записей, записанных в таблицу транзакций.
Отличнохорошо, чтобы добавить отрицательные строки в счет-фактуру, если вы хотите отдать должное за что-то возвращено.Они просто поменялись местами со всеми остальными строками перед записью транзакций.Чаще всего вы выпускаете кредит-ноту, в которой строки записываются как дебеты в доход от продаж, уменьшая стоимость продаж в p & l.
Если система выполняет управление запасами, в транзакцию записываются количества.линии, и они связаны с таблицей Product.
Банковские записи часто выявляют не хранителей книг.Говорят, мы вкладываем деньги в наш банк, поэтому зачислили на счет.Думайте о банке как о человеке, внешнем по отношению к бизнесу.Когда вы передаете свои деньги на хранение, он становится должником и должен вернуть ваши деньги по требованию.Таким образом, поступления в банк отражаются как дебеты, а выплаты - как кредиты.Когда мы получаем платеж от клиента, мы пишем две строки транзакции:
£ 600, связанные с банковским счетом, счетом bs gl.Дебетовое сальдо = увеличивает стоимость актива, у нас больше денег.
£ 600 - связано с контролем должников, аккаунтом bs gl.Кредитный баланс = уменьшает стоимость актива, мы должны меньше денег.
£ 0,00 общая стоимость 2 записей, записанных в таблицу транзакций.
Если вы следуетев результате вы увидите, что в систему контроля должников записано 600 фунтов стерлингов при выставлении счета-фактуры, и 600 фунтов стерлингов при получении платежа.Чистый баланс = 0,00 фунтов стерлингов - вот что должен наш клиент.
Таким образом, при правильном дизайне, отношениях и индексах вся отчетность составляется на основе комбинации документов и транзакций.
И это все.Каждый раз, когда вы суммируете таблицу транзакций, она всегда должна возвращать ноль.Там нет необходимости поддерживать две колонки.Прикладная программа должна сделать две вещи, она должна быть закодирована так, чтобы она применяла правильную подпись к различным типам транзакций, и она должна представить транзакцию в одном из двух столбцов в зависимости от того, является ли она> 0 или <0.Таким образом, вы можете иметь свой пробный баланс, ваши бухгалтерские книги клиентов и поставщиков, банковские и кассовые счета, а также общую бухгалтерскую книгу, которые будут хорошо отформатированы в столбцы дебет и кредит. </p>
Создание системы, в которой обе стороны двойной записи записываются водна сделка привлекательна.В случае сбоя одной транзакции это не приводит к дисбалансу счетов.У вас все равно будет только один столбец для значения со знаком.Вы должны записать два внешних ключа gl для каждой транзакции, один для значения записанного вами, которое может быть положительным или отрицательным значением для представления дебета или кредита, и другой внешний ключ gl для записи учетной записи, которую вы публикуете.противоположное («двойная запись») значение для.Вам также может понадобиться записать gl fk для двух учетных записей налогового контроля, одного для контрольного счета выходного налога и одного для контрольного счета входного налога.Таким образом, вы можете в конечном итоге связать строку транзакции с четырьмя учетными записями gl вместо одной (плюс ссылки на таблицы клиентов, поставщиков и продуктов, которые применяются к обоим методам).Контрольные счета будут иметь очень большой объем транзакций, связанных с ними.С 10-строчным счетом будет связано 10 транзакций, а не одна на документ.Вам нужно будет рассчитать налоговый элемент для каждой строки счета-фактуры отдельно, а не как итог для документа (вы можете сделать это в любом случае).Наконец, вам потребуется специальное соглашение для документа записи журнала, которое может включать 10 строк в качестве дебетов, все смещаются на одну строку в качестве кредита, поэтому подход с одной транзакцией здесь не работает.