Faturalama yaklasimi

Firebird ve Interbase veritabanları ve SQL komutlarıyla ilgli sorularınızı sorabilirsiniz. Delphi tarafındaki sorularınızı lütfen Programlama forumunda sorunuz.
Cevapla
mrtblt
Üye
Mesajlar: 222
Kayıt: 02 Tem 2007 05:13

Faturalama yaklasimi

Mesaj gönderen mrtblt »

Merhaba

Faturalarimi kaydetmek icin iki tablo kullaniyorum

1 - fatura basliklari tablosu

Kod: Tümünü seç

CREATE TABLE INV_HEADER (
    ID          INTEGER,
    INV_NO      VARCHAR(10),
    CLIENT_ID   INTEGER,
    INV_DATE    DATE,
    INV_TYPE    INTEGER,
    NET_SUM     DECIMAL(9,2),
    VAT_SUM     DECIMAL(9,2),
    DISC_PRCNT  INTEGER,
    DISC_VAL    DECIMAL(9,2),
    GRAND_SUM   DECIMAL(9,2),
    INV_EXP     BLOB SUB_TYPE 1 SEGMENT SIZE 80,
    EXCH_RATE   DECIMAL(7,4),
    CARPAN      INTEGER DEFAULT '1',
    OZEL        VARCHAR(40),
    MFLAG2      INTEGER,
    NIR_TARIHI  DATE,
    NIR         INTEGER,
    VADE        INTEGER,
    PROJECT_ID  INTEGER
);
2 - fatura satirlari tablosu

Kod: Tümünü seç

CREATE TABLE INV_LINES (
    ID          INTEGER,
    FAT_ID      INTEGER,
    CODE_ID     INTEGER,
    ADET        INTEGER,
    UNIT_PRICE  DECIMAL(9,2),
    LINE_NET    DECIMAL(9,2),
    LINE_VAT    DECIMAL(9,2),
    KDV         INTEGER,
    LINE_GRAND  DECIMAL(9,2),
    CRN         VARCHAR(3),
    MFLAG       INTEGER
);
Burada fatura basliklari tablosu (INV_HEADER ), fatura satirlari tablosu (INV_LINES) icin Master gorevi goruyor.

iliskilendirmede su sekilde
FAT_ID -> ID

INV_HEADER--ID alani autoincrement ve trigger ile olusturuluyor (BEFORE INSERT)

Kod: Tümünü seç

CREATE OR ALTER TRIGGER INV_HEADER_BI FOR INV_HEADER
ACTIVE BEFORE INSERT POSITION 0
as
begin
  if (new.id is null) then
    new.id = gen_id(gen_inv_header_id,1);
end
Bu durumda Yeni fatura girisi yaparken INV_HEADER post edilmediginden bir fatura ID sine sahip degiliz. Bu durumda fatura satirlari post edilirken INV_LINES tablosundaki FAT_ID alanini nasil doldurmaliyiz.

Bu bircok sekilde yapilabilinir ama Amerikayi yeniden kesfetmeye gerek yok. Emini bunu etkili ve kisa bicimde yapabilen arkadaslar vardir. Ve bende onlardan gorus bekliyorum

Saygilar...
Kullanıcı avatarı
Lost Soul
Üye
Mesajlar: 1064
Kayıt: 01 Nis 2007 02:55
Konum: mekan ANKARA toprak ELAZIĞ
İletişim:

Re: Faturalama yaklasimi

Mesaj gönderen Lost Soul »

insert into mastertable (.....) values (....) returning ID

Kod: Tümünü seç

insert into detailtable (... MASTERID..... ) values (...... :pMASTERID......) 

Kod: Tümünü seç

parambyname('pMASTERID').Asinteger := qmastertable.Fieldbyname('ID').asinteger;
Cevapla