]> wagnertech.de Git - mfinanz.git/blob - sql/Pg-upgrade2/reclamations.sql
Merge branch 'master' of http://wagnertech.de/git/mfinanz
[mfinanz.git] / sql / Pg-upgrade2 / reclamations.sql
1 -- @tag: reclamations
2 -- @description: Add reclamations, reclamation_items and reclamation_reasons
3 -- @depends: release_3_5_7
4 -- @ignore: 0
5
6 CREATE TABLE reclamation_reasons (
7   id                       SERIAL                      PRIMARY KEY,
8   name                     TEXT                        NOT NULL,
9   description              TEXT                        NOT NULL,
10   position                 INTEGER                     NOT NULL,
11   itime                    TIMESTAMP without time zone DEFAULT now(),
12   mtime                    TIMESTAMP without time zone,
13   valid_for_sales          BOOLEAN                     NOT NULL DEFAULT false,
14   valid_for_purchase       BOOLEAN                     NOT NULL DEFAULT false
15 );
16 CREATE TRIGGER mtime_reclamation_reasons
17   BEFORE UPDATE ON reclamation_reasons
18   FOR EACH ROW EXECUTE PROCEDURE set_mtime();
19
20 CREATE TABLE reclamations (
21 --basic
22   id                      INTEGER                     NOT NULL DEFAULT nextval('id'),
23   record_number           TEXT                        NOT NULL,
24   transdate               DATE                        DEFAULT now(),
25   itime                   TIMESTAMP without time zone DEFAULT now(),
26   mtime                   TIMESTAMP without time zone,
27   delivered               BOOLEAN                     NOT NULL DEFAULT false,
28   closed                  BOOLEAN                     NOT NULL DEFAULT false,
29 --header
30   employee_id             INTEGER                     NOT NULL REFERENCES employee(id),
31   globalproject_id        INTEGER                     REFERENCES project(id),
32   delivery_term_id        INTEGER                     REFERENCES delivery_terms(id),
33   shipto_id               INTEGER                     REFERENCES shipto(shipto_id),
34   department_id           INTEGER                     REFERENCES department(id),
35   contact_id              INTEGER                     REFERENCES contacts(cp_id),
36   shipvia                 TEXT,
37   transaction_description TEXT,
38   shippingpoint           TEXT,
39   cv_record_number        TEXT,
40   reqdate                 DATE,
41 --money/summery
42   amount                  NUMERIC(15,5),
43   netamount               NUMERIC(15,5),
44   payment_id              INTEGER                     REFERENCES payment_terms(id),
45   currency_id             INTEGER                     NOT NULL REFERENCES currencies(id),
46   taxincluded             BOOLEAN                     NOT NULL,
47   tax_point               DATE,
48   exchangerate            NUMERIC(15,5),
49   taxzone_id              INTEGER                     NOT NULL REFERENCES tax_zones(id),
50 --other
51   notes                   TEXT,
52   intnotes                TEXT,
53   language_id             INTEGER                     REFERENCES language(id),
54
55   salesman_id             INTEGER                     REFERENCES employee(id),
56   customer_id             INTEGER                     REFERENCES customer(id),
57
58   vendor_id               INTEGER                     REFERENCES vendor(id),
59
60   CONSTRAINT reclamations_customervendor_check CHECK (
61        (customer_id IS NOT NULL AND vendor_id   IS NULL)
62     OR (vendor_id   IS NOT NULL AND customer_id IS NULL)
63   ),
64
65   PRIMARY KEY (id)
66 );
67 CREATE TRIGGER mtime_reclamations BEFORE UPDATE ON reclamations FOR EACH ROW EXECUTE PROCEDURE set_mtime();
68
69 CREATE INDEX reclamations_record_number_key ON reclamations (record_number);
70 CREATE INDEX reclamations_customer_id_key ON reclamations (customer_id);
71 CREATE INDEX reclamations_vendor_id_key ON reclamations (vendor_id);
72
73
74 ALTER TABLE defaults ADD COLUMN p_reclamation_record_number TEXT NOT NULL DEFAULT 0;
75 ALTER TABLE defaults ADD COLUMN s_reclamation_record_number TEXT NOT NULL DEFAULT 0;
76
77 CREATE TABLE reclamation_items (
78 --base
79   id                         SERIAL                      PRIMARY KEY,
80   reclamation_id             INTEGER                     NOT NULL REFERENCES reclamations(id) ON DELETE CASCADE,
81   reason_id                  INTEGER                     NOT NULL REFERENCES reclamation_reasons(id),
82   reason_description_ext     TEXT,
83   reason_description_int     TEXT,
84   position                   INTEGER                     NOT NULL CHECK(position > 0),
85   itime                      TIMESTAMP without time zone DEFAULT now(),
86   mtime                      TIMESTAMP without time zone,
87 --header
88   project_id                 INTEGER                     REFERENCES project(id) ON DELETE SET NULL,
89 --part description
90   parts_id                   INTEGER                     NOT NULL REFERENCES parts(id),
91   description                TEXT,
92   longdescription            TEXT,
93   serialnumber               TEXT,
94   base_qty                   REAL,
95   qty                        REAL,
96   unit                       character varying(20)       REFERENCES units(name),
97 --money
98   sellprice                  NUMERIC(15,5),
99   lastcost                   NUMERIC(15,5),
100   discount                   REAL,
101   pricegroup_id              INTEGER                     REFERENCES pricegroup(id),
102   price_factor_id            INTEGER                     REFERENCES price_factors(id),
103   price_factor               NUMERIC(15,5)               DEFAULT 1,
104   active_price_source        TEXT                        NOT NULL DEFAULT ''::text,
105   active_discount_source     TEXT                        NOT NULL DEFAULT ''::text,
106 --other
107   reqdate                    DATE
108 );
109 CREATE TRIGGER mtime_reclamation_items BEFORE UPDATE ON reclamation_items FOR EACH ROW EXECUTE PROCEDURE set_mtime();