Новые проводки (постановка)

Материал из GedeminWiki
(Различия между версиями)
Перейти к: навигация, поиск
(Новая страница: « <syntaxhighlight lang="sql"> CREATE TABLE a2_entry ( id dintkey, companykey dintkey, entrydate dtimestamp_notnull, dt dforeig…»)
 
 
(не показаны 8 промежуточных версий 1 участника)
Строка 2: Строка 2:
 
<syntaxhighlight lang="sql">
 
<syntaxhighlight lang="sql">
 
   CREATE TABLE a2_entry (
 
   CREATE TABLE a2_entry (
     id         dintkey,
+
     id             dintkey,
     companykey dintkey,
+
 
     entrydate dtimestamp_notnull,
+
     /*
     dt        dforeignkey,
+
     Для сложных проводок мы имеем обязательно одну главную запись
     ct        dforeignkey,
+
    и несколько дополнительных дебетов или кредитов.  
     dtncu
+
     */
     dtcurr
+
    masterentrykey dforeignkey,
     dtcurrkey
+
 
     dteq
+
     companykey    dintkey,  
     ctncu
+
 
     ctcurr
+
     dtkey          dintkey,
     ctcurrkey
+
     ctkey          dintkey, 
     cteq
+
 
     doctypekey
+
     /*
     dockey
+
     Фиксируем не только дату, но и время проводки.
     bpseq
+
     Там, где не принципиально или время не известно будем
     prevkey
+
     использовать 00:00.
     firstkey
+
     */
     creationdate
+
     entrydate      dtimestamp_notnull,
     creatorkey
+
 
     editiondate
+
    /* тип документа */   
     editorkey 
+
     doctypekey     dintkey,
     aview
+
 
     achag
+
     /* ИД записи в таблице документа */
     afull
+
    docid          dintkey,
 +
 
 +
    /* ИД шага из бизнес-процесса */
 +
     bpseq         dintkey,
 +
 +
     /*
 +
     Предыдущая операция (проводка), если
 +
     имеем дело с последовательностью операций.
 +
     */
 +
     prevkey        dforeignkey,
 +
 
 +
 
 +
     FOREIGN KEY a2_fk_entry_masterentrykey (masterentrykey)
 +
      REFERENCES a2_entry (id)
 +
      ON DELETE CASCADE
 +
      ON UPDATE CASCADE,
 +
     FOREIGN KEY a2_fk_entry_companykey (companykey)
 +
      REFERENCES gd_ourcompany (companykey)
 +
      ON DELETE NO ACTION
 +
      ON UPDATE CASCADE,
 +
     FOREIGN KEY a2_fk_entry_dtkey (dtkey)
 +
      REFERENCES ac_account (id)
 +
      ON DELETE NO ACTION
 +
      ON UPDATE CASCADE,
 +
     FOREIGN KEY a2_fk_entry_ctkey (ctkey)
 +
      REFERENCES ac_account (id)
 +
      ON DELETE NO ACTION
 +
      ON UPDATE CASCADE,
 +
    FOREIGN KEY a2_fk_entry_prevkey (prevkey)
 +
      REFERENCES a2_entry (id)
 +
      ON DELETE NO ACTION
 +
      ON UPDATE CASCADE
 
   );
 
   );
  
 
   CREATE TABLE a2_some_doc (
 
   CREATE TABLE a2_some_doc (
 
     id        dintkey,
 
     id        dintkey,
     docnumber  ddocnumber,
+
 
 +
     /*
 +
    Мы больше не ограничиваем структуру двумя уровнями вложенности
 +
    шапка-позиция. Документ может быть сложным с неограниченным количеством
 +
    уровней вложенности. upkey -- ссылка на таблицу верхнего уровня.
 +
    */
 +
    masterkey      dforeignkey,
 +
 
 +
    /*
 +
    Следующие поля необязательны. Разработчик сам решает будут они
 +
    присутствовать в конкретном документе или нет.
 +
    */
 +
    [docnumber  ddocnumber,]
 +
    [docorder  dinteger,]
 +
 
 +
    [creationdate dcreationdate,]
 +
    [creatorkey  dcreatorkey,]
 +
    [editiondate  deditiondate,]
 +
    [editorkey    deditorkey,]
 +
    [aview        dsecurity,]
 +
    [achag        dsecurity,]
 +
    [afull        dsecurity,]
 +
 
 +
    /*
 +
    Поля документа, содержащие объект, признаки, значения.
 +
    */
 
     [attr1]
 
     [attr1]
 
     ...
 
     ...
 
     [attrn]
 
     [attrn]
 
   );
 
   );
 +
</syntaxhighlight>
  
 +
==Пример использования==
  
   CREATE TABLE a2_some_doc_line (
+
<syntaxhighlight lang="sql">
    id        dintkey,
+
   CREATE TABLE  
   
+
  );
+
 
</syntaxhighlight>
 
</syntaxhighlight>
 
  
 
[[Category:Постановка]]
 
[[Category:Постановка]]

Текущая версия на 14:20, 23 ноября 2016

  CREATE TABLE a2_entry (
    id             dintkey,
 
    /*
    Для сложных проводок мы имеем обязательно одну главную запись
    и несколько дополнительных дебетов или кредитов.  
    */
    masterentrykey dforeignkey,
 
    companykey     dintkey, 
 
    dtkey          dintkey,
    ctkey          dintkey,  
 
    /*
    Фиксируем не только дату, но и время проводки.
    Там, где не принципиально или время не известно будем
    использовать 00:00.
    */ 
    entrydate      dtimestamp_notnull,
 
    /* тип документа */     
    doctypekey     dintkey,
 
    /* ИД записи в таблице документа */
    docid          dintkey,
 
    /* ИД шага из бизнес-процесса */
    bpseq          dintkey,
 
    /* 
    Предыдущая операция (проводка), если
    имеем дело с последовательностью операций.
    */
    prevkey        dforeignkey,
 
 
    FOREIGN KEY a2_fk_entry_masterentrykey (masterentrykey)
      REFERENCES a2_entry (id)
      ON DELETE CASCADE
      ON UPDATE CASCADE, 
    FOREIGN KEY a2_fk_entry_companykey (companykey)
      REFERENCES gd_ourcompany (companykey)
      ON DELETE NO ACTION
      ON UPDATE CASCADE, 
    FOREIGN KEY a2_fk_entry_dtkey (dtkey)
      REFERENCES ac_account (id)
      ON DELETE NO ACTION
      ON UPDATE CASCADE, 
    FOREIGN KEY a2_fk_entry_ctkey (ctkey)
      REFERENCES ac_account (id)
      ON DELETE NO ACTION
      ON UPDATE CASCADE, 
    FOREIGN KEY a2_fk_entry_prevkey (prevkey)
      REFERENCES a2_entry (id)
      ON DELETE NO ACTION
      ON UPDATE CASCADE 
  );
 
  CREATE TABLE a2_some_doc (
    id         dintkey,
 
    /*
    Мы больше не ограничиваем структуру двумя уровнями вложенности
    шапка-позиция. Документ может быть сложным с неограниченным количеством
    уровней вложенности. upkey -- ссылка на таблицу верхнего уровня.
    */
    masterkey      dforeignkey, 
 
    /*
    Следующие поля необязательны. Разработчик сам решает будут они 
    присутствовать в конкретном документе или нет.
    */
    [docnumber  ddocnumber,]
    [docorder   dinteger,] 
 
    [creationdate dcreationdate,]
    [creatorkey   dcreatorkey,]
    [editiondate  deditiondate,]
    [editorkey    deditorkey,]
    [aview        dsecurity,]
    [achag        dsecurity,]
    [afull        dsecurity,]
 
    /*
    Поля документа, содержащие объект, признаки, значения.
    */ 
    [attr1]
    ...
    [attrn]
  );

[править] Пример использования

  CREATE TABLE
Персональные инструменты
Пространства имён

Варианты
Действия
Навигация
Инструменты