Projekt

Allgemein

Profil

Herunterladen (5,3 KB) Statistiken
| Zweig: | Markierung: | Revision:
-- @tag: reclamations
-- @description: Add reclamations, reclamation_items and reclamation_reasons
-- @depends: release_3_5_7
-- @ignore: 0

CREATE TABLE reclamation_reasons (
id SERIAL PRIMARY KEY,
name TEXT NOT NULL,
description TEXT NOT NULL,
position INTEGER NOT NULL,
itime TIMESTAMP without time zone DEFAULT now(),
mtime TIMESTAMP without time zone,
valid_for_sales BOOLEAN NOT NULL DEFAULT false,
valid_for_purchase BOOLEAN NOT NULL DEFAULT false
);
CREATE TRIGGER mtime_reclamation_reasons
BEFORE UPDATE ON reclamation_reasons
FOR EACH ROW EXECUTE PROCEDURE set_mtime();

CREATE TABLE reclamations (
--basic
id INTEGER NOT NULL DEFAULT nextval('id'),
record_number TEXT NOT NULL,
transdate DATE DEFAULT now(),
itime TIMESTAMP without time zone DEFAULT now(),
mtime TIMESTAMP without time zone,
delivered BOOLEAN NOT NULL DEFAULT false,
closed BOOLEAN NOT NULL DEFAULT false,
--header
employee_id INTEGER NOT NULL REFERENCES employee(id),
globalproject_id INTEGER REFERENCES project(id),
delivery_term_id INTEGER REFERENCES delivery_terms(id),
shipto_id INTEGER REFERENCES shipto(shipto_id),
department_id INTEGER REFERENCES department(id),
contact_id INTEGER REFERENCES contacts(cp_id),
shipvia TEXT,
transaction_description TEXT,
shippingpoint TEXT,
cv_record_number TEXT,
reqdate DATE,
--money/summery
amount NUMERIC(15,5),
netamount NUMERIC(15,5),
payment_id INTEGER REFERENCES payment_terms(id),
currency_id INTEGER NOT NULL REFERENCES currencies(id),
taxincluded BOOLEAN NOT NULL,
tax_point DATE,
exchangerate NUMERIC(15,5),
taxzone_id INTEGER NOT NULL REFERENCES tax_zones(id),
--other
notes TEXT,
intnotes TEXT,
language_id INTEGER REFERENCES language(id),

salesman_id INTEGER REFERENCES employee(id),
customer_id INTEGER REFERENCES customer(id),

vendor_id INTEGER REFERENCES vendor(id),

CONSTRAINT reclamations_customervendor_check CHECK (
(customer_id IS NOT NULL AND vendor_id IS NULL)
OR (vendor_id IS NOT NULL AND customer_id IS NULL)
),

PRIMARY KEY (id)
);
CREATE TRIGGER mtime_reclamations BEFORE UPDATE ON reclamations FOR EACH ROW EXECUTE PROCEDURE set_mtime();

CREATE INDEX reclamations_record_number_key ON reclamations (record_number);
CREATE INDEX reclamations_customer_id_key ON reclamations (customer_id);
CREATE INDEX reclamations_vendor_id_key ON reclamations (vendor_id);


ALTER TABLE defaults ADD COLUMN p_reclamation_record_number TEXT NOT NULL DEFAULT 0;
ALTER TABLE defaults ADD COLUMN s_reclamation_record_number TEXT NOT NULL DEFAULT 0;

CREATE TABLE reclamation_items (
--base
id SERIAL PRIMARY KEY,
reclamation_id INTEGER NOT NULL REFERENCES reclamations(id) ON DELETE CASCADE,
reason_id INTEGER NOT NULL REFERENCES reclamation_reasons(id),
reason_description_ext TEXT,
reason_description_int TEXT,
position INTEGER NOT NULL CHECK(position > 0),
itime TIMESTAMP without time zone DEFAULT now(),
mtime TIMESTAMP without time zone,
--header
project_id INTEGER REFERENCES project(id) ON DELETE SET NULL,
--part description
parts_id INTEGER NOT NULL REFERENCES parts(id),
description TEXT,
longdescription TEXT,
serialnumber TEXT,
base_qty REAL,
qty REAL,
unit character varying(20) REFERENCES units(name),
--money
sellprice NUMERIC(15,5),
lastcost NUMERIC(15,5),
discount REAL,
pricegroup_id INTEGER REFERENCES pricegroup(id),
price_factor_id INTEGER REFERENCES price_factors(id),
price_factor NUMERIC(15,5) DEFAULT 1,
active_price_source TEXT NOT NULL DEFAULT ''::text,
active_discount_source TEXT NOT NULL DEFAULT ''::text,
--other
reqdate DATE
);
CREATE TRIGGER mtime_reclamation_items BEFORE UPDATE ON reclamation_items FOR EACH ROW EXECUTE PROCEDURE set_mtime();
(487-487/663)