AC ACCOUNT
Материал из GedeminWiki
(Различия между версиями)
SYSDBA (обсуждение | вклад) (Новая страница: «<syntaxhighlight lang="SQL"> /* * * Активность счета * A - (active) активный * P - (passive) пассивный * B - (both) акти…») |
SYSDBA (обсуждение | вклад) |
||
| Строка 71: | Строка 71: | ||
reserved dinteger | reserved dinteger | ||
); | ); | ||
| + | </syntaxhighlight> | ||
| + | |||
| + | ====Поиск субсчетов, для которых неверно указан родитель==== | ||
| + | |||
| + | <syntaxhighlight lang="SQL"> | ||
| + | SELECT | ||
| + | p.id, p.alias, a.parent, a.alias, a.accounttype | ||
| + | FROM | ||
| + | ac_account p JOIN ac_account a | ||
| + | ON a.alias LIKE p.alias || '._%' | ||
| + | AND NOT a.alias LIKE p.alias || '.%._%' | ||
| + | JOIN ac_account a_root | ||
| + | ON a_root.lb < a.lb AND a_root.rb >= a.rb | ||
| + | AND a_root.parent IS NULL | ||
| + | JOIN ac_account p_root | ||
| + | ON p_root.lb < p.lb AND p_root.rb >= p.rb | ||
| + | AND p_root.parent IS NULL | ||
| + | WHERE | ||
| + | (a.ID <> p.id) | ||
| + | AND | ||
| + | (a_root.id = p_root.id) | ||
| + | AND | ||
| + | ( | ||
| + | a.parent <> p.id | ||
| + | OR | ||
| + | a.accounttype <> 'S' | ||
| + | ) | ||
</syntaxhighlight> | </syntaxhighlight> | ||
[[Category:База данных]] | [[Category:База данных]] | ||
Текущая версия на 20:08, 3 июля 2016
/* * * Активность счета * A - (active) активный * P - (passive) пассивный * B - (both) активно-пассивный * * Пустое значение - для групп счетов, планов счетов * */ CREATE DOMAIN daccountactivity AS VARCHAR(1) CHECK ((VALUE IS NULL) OR (VALUE = 'A') OR (VALUE = 'P') OR (VALUE = 'B')); /* * * Часть плана счетов * C - (chart of account) план счетов * F - (folder) папка (группа) счетов * A - (account) счет * S - (subaccount) субсчет * */ CREATE DOMAIN dchartofaccountpart AS VARCHAR(1) CHECK ((VALUE = 'C') OR (VALUE = 'F') OR (VALUE = 'A') OR (VALUE = 'S')); /* * * Список планов бухгалтерских счетов, состоящих * из групп счетов, счетов и субсчетов * */ CREATE TABLE ac_account ( id dintkey, /* Идентификатор */ parent dparent, /* Родительская ветка */ lb dlb, /* Левая граница */ rb drb, /* Правая граница */ name dtext180, /* Наименование счета */ alias daccountalias, /* Код счета */ analyticalfield dforeignkey, /* аналитическое поле для активно-пассивных счетов */ activity daccountactivity, /* Активность счета */ accounttype dchartofaccountpart, /* Часть плана счетов */ multycurr dboolean DEFAULT 0, /* Является ли счет валютным */ offbalance dboolean DEFAULT 0, /* Забалансовый счет */ afull dsecurity, /* Дескрипторы безопасности */ achag dsecurity, aview dsecurity, fullname COMPUTED BY (CASE WHEN ALIAS IS NULL THEN '' ELSE ALIAS || ' ' END || CASE WHEN NAME IS NULL THEN '' ELSE NAME END), description dblobtext80_1251, disabled dboolean DEFAULT 0, reserved dinteger );
[править] Поиск субсчетов, для которых неверно указан родитель
SELECT p.id, p.alias, a.parent, a.alias, a.accounttype FROM ac_account p JOIN ac_account a ON a.alias LIKE p.alias || '._%' AND NOT a.alias LIKE p.alias || '.%._%' JOIN ac_account a_root ON a_root.lb < a.lb AND a_root.rb >= a.rb AND a_root.parent IS NULL JOIN ac_account p_root ON p_root.lb < p.lb AND p_root.rb >= p.rb AND p_root.parent IS NULL WHERE (a.ID <> p.id) AND (a_root.id = p_root.id) AND ( a.parent <> p.id OR a.accounttype <> 'S' )