Двойная бюстгалтерия* глазами программиста

в 13:42, , рубрики: Алгоритмы, биллинг, биллинговые системы, бухгалтерия, план счетов, Разработка под e-commerce

Двойная бюстгалтерия* глазами программиста - 1

Большинство из нас сталкивались с бухгалтерами. Многим их терминология кажется китайской грамотой, как для гуманитария обратная польская запись. Однако разобравшись, понимаешь насколько это удобный и мощный инструмент.

Статья не академическая, а отражает сугубо мой упрощенный взгляд, и для тех кто уже осилил академические статьи — будет неинтересной. Тех же кому интересно понять такой простой и мощный инструмент как «двойная запись» — прошу под кат.

Давайте представим себе некую структуру ведущую деятельность, имеющую взаимоотношения с окружающим миром, владеющую некоей собственностью. Не важно что это за структура. Это может быть фирма, домохозяйство, веб-сайт или простой гражданин. Допустим это будет интернет-стартап. Скажем мы сделаем площадку по торговле слонами. Назовем этот проект «Слономаркет».

Мы не будем регистрировать никакие юрлица, ИП/ФОП и прочие юридические действия. Представим себе что просто несколько друзей договорились запустить подобный стартап, и ведут свою деятельность «в гараже».

Баланс

Для того чтобы понимать общую картину финансов в нашем Слономаркете, мы заводим табличку, в которой пишем что у нас есть, что нам должны, что мы должны и т.п. Назовем эту табличку "баланс", а строчки в нашей табличке "счетами баланса".

Очевидно что не все йогурты одинаково полезны существует большая разница между счетами отражающими деньги в «кассе» от того сколько мы должны денег поставщикам. Соответственно мы разделяем нашу табличку на две. В одной будут так называемые "активные счета", отражающие то что у нас есть, чем мы можем распоряжаться и т.п., во вторую половину мы занесем "пассивные счета", где мы будем отражать наши долги перед кредиторами, поставщиками и т.п.

На самом деле активы и пассивы (Ржевский молчать!) это не совсем собственность и долги, но для начала предлагаю такое определение, чтобы не запутываться. Для запоминания можно использовать такую ассоциацию — активами мы можем активно распоряжаться. Отдать деньги случайному знакомому или потратить. Простить долг клиента (долг клиента перед нами — актив, наш долг перед поставщиком — пассив), разломать станок или отдать автомобиль на металлолом. Все зависит только от нас. А с пассивами возможны только пассивные операции. Мы не можем взять и отдать случайному бомжу наш долг перед поставщиком. Нужно согласие как бомжа так и поставщика.

Пример баланса Слономаркета:

Активы:

  • ЯндексДеньги: 1000руб
  • Пейпел: 500руб
  • Наличка у Феди: 1000руб
  • Слоны на складе: 600руб (из них уже проданных но не отгруженных — 500руб)
  • Сайт Слономаркета: 400руб
  • Хостинг на год: 1000руб
  • Задолженность клиентов за слонов: 1000руб
  • Не покрытые убытки (от кражи слонов): 500руб

Пассивы:

  • Уставной капитал (то что внесли учредители): 2000руб
  • Не распределенная прибыль (от продажи слонов): 1000руб
  • Кредит в вебмани: 1000руб
  • Проданные но не поставленные клиенту слоны: 500руб
  • Долг перед поставщиком Васей: 500руб
  • Долг перед программистом Федей: 500руб
  • Начисленные и не выплаченные дивиденды: 500руб

Некоторые счета вызывают удивления, например не понятно почему прибыль в пассивах а убытки в активах. Это нормально, я объясню чуть ниже.

Хочу обратить ваше внимание на тот факт что сумма пассивных счетов равна сумме активных счетов. Это свойство баланса является фундаментальным. Отсюда происходит и само название — баланс. Если бухгалтер говорит что у него не сходится баланс, то обычно он имеет ввиду именно то, что у него активы и пассивы не равны, что является первым признаком ошибки.

Еще один взгляд на то какой счет будет пассивным или активным:

Активы это то что у нас есть, на что мы потратили деньги, а пассивы это то откуда эти деньги взялись.

С этой точки зрения мы не можем отразить прибыль в активах, ведь по сути она уже там есть — либо в виде денег в кассе, либо в виде долга клиента либо еще в какой форме. Даже если клиент рассчитался и мы сразу эти деньги потратили на покупку слонов на склад — прибыль будет лежать в виде новых слонов, но она у нас уже отражена в активах. Но откуда она у нас взялась? Ее происхождение мы записываем в пассивах — прибыль.

Аналогично с убытками. Если у нас произошли убытки, например у нас украли слонов, то происхождение этих слонов у нас уже отражено в пассивах. Если это были те слоны которых мы уже продали но не отгрузили, то они видны в оплаченных но не отгруженных слонах. Если мы купили их из денег учредителей, то в уставном капитале, если нам дали их под реализацию или с отсрочкой, то в виде долга перед поставщиком. Но куда эти деньги(слоны) ушли? Это наш убыток от кражи.

С точки зрения возможности распоряжаться этими убытками, и того что они у нас «есть» тут тоже нет противоречия — мы можем простить вору. Мы можем «повесить долг» на охранника который проворонил воров, и высчитывать из его зарплаты. Мы можем обменять эти убытки на страховую выплату (если была страховка). Ну или банально «покрыть» убыток из прибыли, уменьшив прибыль и убыток на одну сумму.

Почему уставной капитал/собственный капитал отражается в пассивах?

По происхождению — мы получили деньги от учредителя, значит мы как-бы «должны» эти деньги ему. Также по функциям — мы можем распределить прибыль например на дивиденды, или на увеличение уставного капитала. Дивиденды подразумевают что учредитель их заберет у фирмы (в виде активов, деньгами или продукцией или еще как), а если мы увеличим из прибыли уставной капитал, то это будет будто учредитель отдал часть причитающейся ему прибыли на увеличение активов стартапа.

Если же у нас нет «лишней» прибыли, но есть убытки, и мы хотим покрыть эти убытки, то нам ничего не останется как уменьшить капитал. Это примерно соответствует «поскольку у фирмы денег нет, то я прощаю ей часть долга». Т.е. если наш Слономаркет заработал прибыль, то он становится должен учредителю больше денег, а если потерял денег, то становится должен меньше.

Зачем такие сложности? Потому что у нас должен быть баланс. Обе стороны баланса должны быть равны, так что просто так взять и выкинуть некоторые статьи баланса (счета) мы не можем.

Шпаргалка по тому что куда относится:
Имущество, то чем мы можем распоряжаться — активные счета
Обязательства перед нами, то что нам должны — активные счета
Наши обязательства, то что мы должны — пассивные счета
Прибыль — пассивные счета
Убытки — активные счета
Доходы — пассивные счета
Расходы — активные счета
Капитал, т.е. вложения учредителей, уставной капитал и т.п. — пассивные счета

Проводки

Здесь мы плавно подошли ко второму фундаментальному свойству баланса — любые изменения у нас касаются минимум двух счетов. Данное утверждение является прямым следствием из основного свойства баланса — обе стороны баланса (активы и пассивы) в сумме должны быть равны. Соответственно если мы уменьшаем или увеличиваем одну сторону, то должны изменить аналогично и другую сторону. Или должны изменить другой счет того же типа (активный или пассивный) но с другим знаком (т.е. если мы увеличили какой-то актив, и не изменили пассивы, то должны уменьшить какой-то другой актив… аналогично с пассивами).

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

Допустим у нас появился товар на складе. Но он не может появиться просто так. Либо мы его купили, и тогда у нас уменьшились какие-то активы (деньги в кассе, деньги на счету и т.п.), либо нам его дали в долг (с отсрочкой платежа, под реализацию и т.п.) и тогда у нас появился новый пассив на ту же сумму. У нас украли деньги? Уменьшились деньги, возросли расход убытки. Мы отдали кредит? Мы не можем отдать кредит, не уменьшив наши активы или не увеличив другие пассивы. Ведь мы что-то отдали. Это или деньги, или что-то одолженное в другом месте (например у учредителя) или в счет долга дали какой-то товар (тогда уменьшились запасы на складе) или мы вернули товар взятый под реализацию (уменьшили колво товара, уменьшили долг перед поставщиком за этот товар). Всегда изменяется два счета.

Так мы подошли ко второму фундаментальному понятию — проводка.

Проводка это «атомарная» операция изменения двух счетов на одну и туже сумму. В бумажном учете используют большие книги в которых записывают различные счета и операции с ними. Каждую проводку нам нужно записать дважды — у первого счета и у второго. Это называется двойной записью, и дало название методу учета являющемуся базой для любого учета в наше время.

Любая операция в которой затрагивается только один счет — ошибочна (да, я знаю про забалансовые счета, но это рудимент регламентированного учета являющийся следствием того что бухгалтера не программисты и в этой статье я их не рассматриваю, как и активно-пассивные). Если вы хотите сделать одиночную запись, то либо вам ее не нужно делать, либо вы где-то потеряли ее вторую половинку, либо вам нужно делать запись не в тот баланс (например когда люди начинают смешивать деньги бизнеса и личные деньги, что характерно для людей у которых в бизнесе нет других учредителей и нет хорошего понимания учета).

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

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

Документ

Для большего практического применения добавим еще одну сущность — документ.
Документ это некая сущность отражающая события реального мира. Перемещение товара, заказ, выплату дивидендов и т.п. Т.е. реальная операция и связанный с ней документ.
С каждым документом связана одна или несколько проводок (с тем документом который влияет на баланс). По сути документ это набор проводок связанных единым смыслом, единым событием (плюс информация описывающая само событие но для баланса нам она не нужна).
Проводки одного документа должны находиться в одной транзакции СУБД, и если одна проводка не прошла, то не прошел и весь документ, т.е. у документа присутствует атомарность.
Например типичный документ это накладная.

Допустим, мы получили партию слонов. Сибирских слонов на 100рублей, африканских на 400рублей и американских на 500рублей. В результате у нас появилось несколько проводок:
1) увеличение долга перед поставщиком на 100рублей (пассив), увеличение сибирских слонов на складе на 100рублей (актив)
2) увеличение долга на 400 рублей, увеличение на ту же сумму африканских слонов на складе
3) увеличение долга на 500 рублей и аналогичное увеличение американских слонов на складе
4) уменьшение долга поставщика за предоплату 500рублей, и уменьшение на ту же сумму нашего долга поставщику (в идеале такие вещи делаются отдельным служебным документом, и да я знаю что счет взаимоотношения с контрагентами активно-пассивный, но пусть будет тут)
Все эти проводки привязаны к одному документу, и связанны с одним событием, а именно получением товара от поставщика.

Дебет и кредит

Давайте рассмотрим какие у нас бывают проводки.
1) Увеличение активного счета, увеличение пассивного (А+П+)
2) Уменьшение активного счета, уменьшение пассивного (А-П-)
3) Уменьшение и увеличение двух активных счетов (А+А-)
4) Уменьшение и увеличение двух пассивных счетов (П+П-)

Получается четыре вида проводок. Остальные не удовлетворяют требованию сохранения баланса. Можем ли мы это упростить?

Поскольку мы пока не вкладывали никакого смысла в порядок счетов, то запишем их в другом порядке:

А+П+
П-А-
А+А-
П-П+

Что мы можем заметить общего в тих проводках?

1) Если на первом месте находится активный счет, то он увеличивается, если пассивный, то он уменьшается
2) Если на втором месте находится активный счет, то он уменьшается, если на втором месте находится пассивный счет, то он увеличивается
Т.о. у нас получается один вид проводки, в которой указывается два счета, назовем их дебетуемый счет, и кредитуемый счет, и суммы проводки.
Ну и соответственно записываем наши правила действия проводки:
1) Если дебит активного счета, то он увеличивается, если пассивного, то он уменьшается
2) Если кредит активного счета, то он уменьшается, если пассивного счета, то он увеличивается

На этом именно бухгалтерская форма ведения баланса заканчивается.

Еще немного нормализуем

Давайте попробуем еще упростить.

Давайте будем записывать значение активного счета положительным числом, а пассивного отрицательным. Упрощенно структура таблицы баланса будет выглядеть так:
ИД,
Название,
Тип (пассив/актив),
Значение
А структура таблицы проводок соответственно:
ИД,
Дебет (ид дебетуемого счета),
Кредит (ид кредитуемого счета,
Сумма

Проверка целостности баланса у нас становится еще проще — сумма всех счетов должна быть равна нулю.
Правила выполнения проводок тоже просты:
1) Прибавляем сумму проводки к дебетуемому счету
2) Если счет пассивный, то проверяем не стал ли он положительным, если да, то прерываем операцию и откатываем транзакцию
3) вычитаем сумму из кредитуемого счета.
4) Если счет активный, то проверяем не стал ли он отрицательным, и если да, то прерываем операцию и откатываем транзакцию.

Всё. Все основные свойства учета у нас уже есть.
Конечно в реальной базе у нас добавятся различные поля связанные с предметной областью, например у проводок нужна дата/время и связь с документом породившим проводку. У счетов нужна информация о том что то за счет такой, и связи на другие связанные с ним объекты (контрагентов, товары и т.п.), но это уже другая история.

Пожалуй на этом пока закончим, если будет интересно, то дальше расскажу как по максимуму извлекать информацию из баланса, разберу немного примеров операций и т.п.

Автор: Mendel

Источник

Поделиться

* - обязательные к заполнению поля