Типовая схема биллинга исправленная и дополненная
В предыдущей публикации обсуждение прошло весьма и весьма плодотворно. Это потребовало изменений в схеме, а так же переработки терминологии. Так же дополнительно я добавил реализацию НДС/VAT. И выложил схему в формате Power Architect, а также DDL для PostgreSQL на github. Кому интересна в первую очередь эта часть ее можно посмотреть тут.
Но а теперь вернемся к изменениям в схеме. Я добавил следующие новые таблицы:
- bill.ledgertype - используемая сторона учета (дебит, кредит, оба)
- bill.vat - первичный документ НДС
- bill.vatrate - Ставка налога на добавленную стоимость
- bill.saldo - Сальдо (обороты) за отчетный период
Первая таблица была добавлена для упрощения обработки первичных документов и упрощения логики. Следующие две касаются поддержки в схеме выставления НДС, а таблица bill.saldo
позволяет проще проводить аналитику по клиентам.
Так же добавил следующие связи с bill.ledgertype
:
- Связь таблицы
bill.ledgertype
сbill.trxtype
- указывает на используемую по умолчанию сторону учета для типа первичного документа - Связь таблицы
bill.ledgertype
сbill.trx
- указывает на использованную в проводке сторону учета - Связь таблицы
bill.ledgertype
сbill.remain
- указывает на использованную в первичном документе остатка сторону учета. Это позволяет использовать одну таблицу для переносимых остатков. Какая из сторон будет использована выбирается при проведении документа
Это позволит упростить многие операции в том числе при начислении и анализе необходимости и корректности их проведения в отчетном периоде. О НДС и почему так, а не иначе я расскажу далее, а пока перейдем к изменениям в терминологии.
В первую очередь это касается таблиц bill.trx
и таблиц уточняющих операции bill.payment
, bill.charge
и т.п. Таблица bill.trx
все так же отображает проводимые операции, но в бухгалтерии есть более корректный термин проводки. Таким образом bill.trx
- это журнал проводок. Добавление в bill.trx
типа стороны учета в том числе добавлялось и для этого. Все таблицы уточняющих операций становятся таблицами первичных документов. Остальную терминологию я изменять не стал так-как с ней проблем как раз таки не возникло. И так раз по терминологии прошлись, то теперь перейдем к НДС.
НДС никак не вписывался в первичный документ начислений во всех случаях. Как итог, я добавил его как дополнительный первичный документ и в проводках по начислениям НДС в принципе нет. Для решения проблем в случаях когда НДС все входит в начисление за услугу, а это требуется в случае если у нас Россия и клиент физическое лицо был добавлен флаг vatincluded
. В этом случае сумма начисления в первичном документе начисления включает НДС. Это решает проблему с начислением НДС, но есть еще пара не решенных вопросов. Это:
- Надо ли добавлять в
bill.price
(цену) еще и стоимость с НДС, сейчас подразумевается что она без НДС - Куда добавлять признак когда НДС требуется, а когда нет. Логика подсказывает, что надо еще вводить сущность клиент и далее у него указывать форму налогообложения, но эта сущность не может входить в схему bill. Так-как к начислениям он имеет опосредованное отношение. Возможно будет хорошим вариантом указывать этот признак на договоре, а далее изменять его в зависимости от состояния у клиента.
Ну и по завершению слайды:
blog comments powered by Disqus