|
|
|
Организация настраиваемого учета
|
|||
|---|---|---|---|
|
#18+
В системе нужно сделать учет по принципу бухгалтерского. 1с не могу использовать ввиду очень большого потока транзакций. Требуется только учет денег по счетам. Идея учета следующая - каждой операции соответствует свой набор проводок. Операции должны выполняться транзакционно - либо все проводки провелись, либо все откатились. В БД есть механизм, который по разным финансовым событиям, складывает мне информацию о том по какому клиенту это событие произошло, тип события (приход средств, продажа услуги и т.д.), и идентификатор самого события в таблице, сумма. В зависимости от типа события я знаю в какой таблице будет лежать "первичная" запись о событии и могу найти по заданному идентификатору. Хочется сделать учет в виде таблице, где по каждому событию будет указано какие проводки нужно сделать. Проблема в том, что некоторые проводки должны идти по иерархии клиентов и я не понимаю, как это указать в таблице. Пока без учета иерархических движений структура получается следующая. объект тип операции ид операции сумма счет тип движения (дебет/кредит) С суммой тоже есть вопросы. Например у меня есть операция приход средств. По некоторым клиентам эта операция облагается комиссией. Сейчас это отдельное движение, но по хорошему они должны идти в одной транзакции. Та же ситуация с продажей услуги, в зависимости от услуги начисляются бонусы по иерархии клиентов, получается что это также должно быть в той же транзакции что и продажа. Можно сделать буфер и там накапливать движения, которые относятся к одной операции, но в случае с услугой кол-во проводок по начислению бонусов будет зависеть от того насколько глубоко клиент расположен по иерархии. Как быть в этой ситуации мне пока не ясно. Подскажите, пожалуйста, как обычно реализуются подобные задачи. Писать код под каждую операцию очень не хочется, получится длинным и сложным в поддержке. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.02.2015, 09:48 |
|
||
|
Организация настраиваемого учета
|
|||
|---|---|---|---|
|
#18+
Сейчас это отдельное движение, но по хорошему они должны идти в одной транзакции.И в чем проблема ? Делайте кучу атомарных проводок(записей в журнале) в одной транзакции. Нужно иметь шаблон проводок (с учетом бух.даты, т.к. проводка может быть разных в разных периодах, н-р новый налог). В шаблоне для одной транзакции будет неск. строк настроек, которые создадут в журнале такое же число строк атомарных проводок (по разным счетам), принадлежащих одной транзакции. зы: немного сумбурно написано и с неоднозначностью смыслов понятия проводка. :(. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.02.2015, 10:18 |
|
||
|
Организация настраиваемого учета
|
|||
|---|---|---|---|
|
#18+
LSV, Извините за сумбур, в голове не уложилось до конца. Мне не понятно как сделать настройки для разных типов транзакций. То есть вот например у меня есть движение приход средств. Для него будет настройка для типа операции: Приход средств 1)сумма счет: А средства клиента в системе тип движения: дебет 2) сумма счет: Б собственные средства клиента тип движения: кредит На этом варианте вроде бы получается, но если рассматривать более сложные, например, написление бонусов, то мне не понятно как записать это в атомарных проводках для типа операции: Продажа услуги У часть про начисление бонусов 1) сумма бонуса для клиента 5 счет:Х зачисления бонусов тип движения: кредит 2) сумма бонуса для клиента 4 счет:Х зачисления бонусов тип движения кредит и так далее по иерархии Как это записать и как увязать, чтобы это было в единой транзакции с продажей услуги? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.02.2015, 11:34 |
|
||
|
Организация настраиваемого учета
|
|||
|---|---|---|---|
|
#18+
NimuaНа этом варианте вроде бы получается, но если рассматривать более сложные, например, написление бонусов, то мне не понятно как записать это в атомарных проводках для типа операции: Продажа услуги У часть про начисление бонусов 1) сумма бонуса для клиента 5 счет:Х зачисления бонусов тип движения: кредит 2) сумма бонуса для клиента 4 счет:Х зачисления бонусов тип движения кредит Совсем просто это сделать не получится. Например, можно для любого поля в шаблоне "сумма", "счет", etc. хранить либо константу, либо имя вычисляющей функции. Если имя вычисляющей функции задано - вызываете ее, передавая ID операции и она возвращает значение (например, для Вашего примера с бонусами - смотрит, какой клиент проводит операцию и какой ему положен бонус). Это не очень просто и не очень прозрачно - но зато универсально, как Вы хотели. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.02.2015, 11:46 |
|
||
|
Организация настраиваемого учета
|
|||
|---|---|---|---|
|
#18+
Большое спасибо за идею с функцией! Мне очень нравится! А как в настройках отразить что это должно пройти по всей иерархии? Ввести отдельный признак? Или в самой функции уже проводить всю цепочку? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.02.2015, 12:15 |
|
||
|
Организация настраиваемого учета
|
|||
|---|---|---|---|
|
#18+
NimuaА как в настройках отразить что это должно пройти по всей иерархии? Ввести отдельный признак? Или в самой функции уже проводить всю цепочку? Ну можно, например, предусмотреть чтобы функция была табличной, могла возвращать не одно значение, а несколько - и тогда один шаблон может "разваливаться" на много проводок. Тогда функция "счет клиента" вернет список счетов всех клиентов в иерархии, функция "сумма" - соответственно, суммы для каждого. В самих функциях я бы ничего не проводил - они только вычисляют значения, ничего не меняя в базе. А универсальный механизм генерации проводок берет шаблон, вызывает функции, получает итоговый резалтсет проводок и пишет их в базу - тогда вся генерация проводок у Вас сосредоточена в одном месте, она ничего не знает и никак не меняется от изменения бизнес-правил проведения документов (за это отвечают функции), функции, в свою очередь, ничего не знают о механизме проводок (и сопутствующих ему логировании, проверке прав, etc.) - они только реализуют бизнес-правила. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.02.2015, 12:30 |
|
||
|
Организация настраиваемого учета
|
|||
|---|---|---|---|
|
#18+
NimuaПодскажите, пожалуйста, как обычно реализуются подобные задачи. Писать код под каждую операцию очень не хочется, получится длинным и сложным в поддержке. как раз наоборот. Гораздо более сложным получится реализация всякого рода настроек и шаблонов. Если сделать бизнес логику не в Бд а на каком нибудь скриптовом языке - гораздо проще будет как споровождать так и отлаживать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.02.2015, 13:00 |
|
||
|
Организация настраиваемого учета
|
|||
|---|---|---|---|
|
#18+
Если сделать бизнес логику не в Бд а на каком нибудь скриптовом языке - гораздо проще будет как споровождать так и отлаживать. Спорное утверждение. Я бы максимально старался делать логику на SQL и настроечных таблицах. Для таких задач СУБД самодостаточна. Зачем ей сторонние скрипты для расчетов на клиенте ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.02.2015, 13:59 |
|
||
|
Организация настраиваемого учета
|
|||
|---|---|---|---|
|
#18+
LSVЕсли сделать бизнес логику не в Бд а на каком нибудь скриптовом языке - гораздо проще будет как споровождать так и отлаживать. Спорное утверждение. Я бы максимально старался делать логику на SQL и настроечных таблицах. Оно не то чтобы спорное, оно в определённом смысле естественное. Есть такой антипаттерн, который я называю "однозвенное мышление". В этом случае человек, хорошо владеющий одним инструментом, проектирует систему так, чтобы именно этот инструмент решал все задачи, а остальные звенья присутствуют в технически-декоративной роли. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.02.2015, 14:10 |
|
||
|
Организация настраиваемого учета
|
|||
|---|---|---|---|
|
#18+
Разве тот же PL/SQL - не скриптовый язык?.. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.02.2015, 14:14 |
|
||
|
Организация настраиваемого учета
|
|||
|---|---|---|---|
|
#18+
В текущей системе основные расчеты и логика сделана внутри БД. Поэтому соответственно эта часть тоже будет в ней же. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.02.2015, 14:18 |
|
||
|
Организация настраиваемого учета
|
|||
|---|---|---|---|
|
#18+
Кот Матроскин, LSV Спасибо за идеи, вроде бы стало понятнее :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.02.2015, 14:19 |
|
||
|
Организация настраиваемого учета
|
|||
|---|---|---|---|
|
#18+
Dimitry SibiryakovРазве тот же PL/SQL - не скриптовый язык?.. Нет. Вопрос, конечно, как Вы определяете "скриптовый язык", но чтобы загнать туда PL/SQL, придётся принимать довольно экстравагантные определения. Другой вопрос, что его возможности позволяют неплохо реализовывать "скриптовые" фичи. Но с тем же успехом и Java можно назвать скриптовым языком. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.02.2015, 14:26 |
|
||
|
Организация настраиваемого учета
|
|||
|---|---|---|---|
|
#18+
softwarerНет. Вопрос, конечно, как Вы определяете "скриптовый язык", но чтобы загнать туда PL/SQL, придётся принимать довольно экстравагантные определения. Я определяю это как "любой интерпретируемый язык" и PL/SQL туда отлично падает. Есть другое мнение? Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.02.2015, 14:46 |
|
||
|
Организация настраиваемого учета
|
|||
|---|---|---|---|
|
#18+
Dimitry SibiryakovsoftwarerНет. Вопрос, конечно, как Вы определяете "скриптовый язык", но чтобы загнать туда PL/SQL, придётся принимать довольно экстравагантные определения. Я определяю это как "любой интерпретируемый язык" и PL/SQL туда отлично падает. Вместе с Паскалем, Явой, Шарпом и так далее. Dimitry Sibiryakov Есть другое мнение? Зачем? Как я сказал, потребуется экстравагантное определение, и Вы такое дали. Особенно доставляет тот факт, что любой "нескриптовый" язык в произвольный момент времени может стать скриптовым. Например, я встречал интерпретатор C++, соответственно, это тоже скриптовый язык. Вообще, если подумать, на нынешних процессорах даже ассемблер интпретируется микрокодом. Так что это тоже скриптовый язык. Ну и разумеется, благодаря этому, всё, что на этих процессорах выполняется. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.02.2015, 14:52 |
|
||
|
|

start [/forum/topic.php?fid=32&fpage=22&tid=1540630]: |
0ms |
get settings: |
8ms |
get forum list: |
11ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
29ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
66ms |
get tp. blocked users: |
2ms |
| others: | 10ms |
| total: | 143ms |

| 0 / 0 |

Извините, этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
... ля, ля, ля ...