AC ACCOUNT
Материал из GedeminWiki
/* * * Активность счета * 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' )