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

Материал из GedeminWiki
Перейти к: навигация, поиск
  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
Персональные инструменты
Пространства имён

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