HSAdmin Backend Domains, E-Mail, Datenbanken
Peter Hormanns
2014-10-14 91bafeadabf7604e703cfa9d9fcee4d436583b95
hsarback/database/database_update.sql
@@ -1,93 +1,89 @@
-- INSERT INTO domain__domain_option
--    SELECT domain_option_id, domain_id FROM domain
--       JOIN unixuser on ( domain.domain_owner = unixuser.unixuser_id )
--       JOIN packet on ( unixuser.packet_id = packet.packet_id )
--       JOIN basepacket on ( packet.bp_id = basepacket.basepacket_id ), domain_option
--       WHERE basepacket.basepacket_code = 'PAC/DW'
--          AND domain_option.domain_option_name = 'php' ;
-- DELETE FROM domain__domain_option
--    USING domain_option, domain
--       JOIN unixuser on ( domain.domain_owner = unixuser.unixuser_id )
--       JOIN packet on ( unixuser.packet_id = packet.packet_id )
--       JOIN basepacket on ( packet.bp_id = basepacket.basepacket_id )
--       WHERE basepacket.basepacket_code != 'PAC/DW'
--          AND domain__domain_option.domain_option_id = domain_option.domain_option_id
--          AND domain_option.domain_option_name = 'php' ;
CREATE SEQUENCE sepa_mandat_id_seq
    INCREMENT BY 1
    NO MAXVALUE
    NO MINVALUE
    CACHE 1;
--- Updates related to HSBilling
UPDATE bank_account SET autodebit_ar = false WHERE autodebit_ar IS NULL;
ALTER TABLE bank_account ALTER COLUMN autodebit_ar SET NOT NULL;
UPDATE bank_account SET autodebit_ga = false WHERE autodebit_ga IS NULL;
ALTER TABLE bank_account ALTER COLUMN autodebit_ga SET NOT NULL;
UPDATE bank_account SET autodebit_op = false WHERE autodebit_op IS NULL;
ALTER TABLE bank_account ALTER COLUMN autodebit_op SET NOT NULL;
ALTER TABLE business_partner ADD COLUMN free boolean NOT NULL DEFAULT false;
ALTER TABLE business_partner ADD COLUMN indicator_vat character varying(20) NOT NULL DEFAULT 'GROSS';
ALTER TABLE business_partner ADD COLUMN exempt_vat boolean NOT NULL DEFAULT false;
ALTER TABLE business_partner ADD UNIQUE(bp_id);
DROP TABLE billdata CASCADE;
ALTER TABLE basepacket ADD COLUMN article_number integer NOT NULL DEFAULT 0;
ALTER TABLE basepacket ALTER COLUMN article_number DROP DEFAULT;
ALTER TABLE component ADD COLUMN article_number integer NOT NULL DEFAULT 0;
ALTER TABLE component ALTER COLUMN article_number DROP DEFAULT;
ALTER TABLE component DROP CONSTRAINT ckt_component;
ALTER TABLE component
   ADD CONSTRAINT ckt_component CHECK (
       (0 <= min_quantity) AND
       (min_quantity <= default_quantity) AND
       (default_quantity <= max_quantity) AND
       (include_quantity <= default_quantity) AND
       (0 <= include_quantity) AND
       (mod(min_quantity, increment_quantity) = 0) AND
       (mod(max_quantity, increment_quantity) = 0) AND
       (mod(default_quantity, increment_quantity) = 0) AND
       (mod(include_quantity, increment_quantity) = 0)
    );
ALTER TABLE packet DROP COLUMN order_number;
ALTER TABLE packet DROP COLUMN webserver_group;
<<<<<<< HEAD
ALTER TABLE packet ADD COLUMN free boolean NOT NULL DEFAULT false;
=======
>>>>>>> branch 'master' of ssh://hsh04-source@hsh04.hostsharing.net/home/doms/source.hostsharing.net/source/hsadmin.git
ALTER TABLE domain DROP COLUMN domain_status;
ALTER TABLE domain DROP COLUMN domain_status_changed;
ALTER TABLE domain DROP COLUMN domain_filed;
ALTER TABLE domain DROP COLUMN domain_until;
ALTER TABLE domain DROP COLUMN domain_reminder;
ALTER TABLE domain DROP COLUMN domain_free;
ALTER TABLE domain DROP COLUMN domain_template;
CREATE TABLE price_list (
  id serial PRIMARY KEY,
  name varchar(20)
);
INSERT INTO price_list (name) VALUES ('Default Price List');
CREATE TABLE customer_price_list_mapping (
   customer integer REFERENCES business_partner(bp_id),
   price_list integer REFERENCES price_list(id),
   PRIMARY KEY (customer, price_list)
CREATE TABLE sepa_mandat (
    sepa_mandat_id integer DEFAULT nextval(('"sepa_mandat_id_seq"'::text)::regclass) NOT NULL,
    bp_id integer NOT NULL,
    bank_customer character varying(50) NOT NULL,
    bank_name character varying(50),
    bank_iban character varying(40) NOT NULL,
    bank_bic character varying(40) NOT NULL,
    mandat_ref character varying(40) NOT NULL,
    mandat_signed date NOT NULL,
    mandat_since date NOT NULL,
    mandat_used date,
    mandat_until date
);
INSERT INTO customer_price_list_mapping
   (SELECT bp_id, (SELECT id FROM price_list WHERE name LIKE 'Default%') FROM business_partner);
CREATE TABLE price (
   id serial PRIMARY KEY,
   article_number integer NOT NULL,
   price decimal(10, 2) NOT NULL,
   vat decimal(4,2) NOT NULL,
   price_list integer REFERENCES price_list(id)
INSERT INTO sepa_mandat (bp_id, bank_customer, bank_name, bank_iban, bank_bic, mandat_ref, mandat_signed, mandat_since, mandat_used, mandat_until)
   (SELECT bp_id, bank_customer, bank_name, bank_iban, bank_bic, mandat_ref, mandat_signed, mandat_since, mandat_used, mandat_until FROM bank_account);
ALTER TABLE ONLY sepa_mandat
    ADD CONSTRAINT pk_sepa_mandat PRIMARY KEY (sepa_mandat_id);
ALTER TABLE ONLY sepa_mandat
    ADD CONSTRAINT dateschk1 CHECK (mandat_signed <= mandat_since AND mandat_since <= mandat_until);
ALTER TABLE ONLY sepa_mandat
    ADD CONSTRAINT dateschk2 CHECK (mandat_since <= mandat_until AND mandat_since <= mandat_used AND mandat_used <= mandat_until);
ALTER TABLE ONLY sepa_mandat
    ADD CONSTRAINT fk_bank_acc_reference_business FOREIGN KEY (bp_id) REFERENCES business_partner(bp_id) ON UPDATE RESTRICT ON DELETE RESTRICT;
DROP TABLE bank_account;
ALTER TABLE price_list
   ADD CONSTRAINT price_list_uniq_name UNIQUE (name);
CREATE TABLE pricelist_ref (
    bp_id integer NOT NULL,
    price_list character varying(40) NOT NULL
);
INSERT INTO price (article_number, price, vat, price_list)
   VALUES (0, 0, 0, (SELECT id FROM price_list WHERE name LIKE 'Default%'));
INSERT INTO pricelist_ref (bp_id, price_list)
   ( SELECT customer, name FROM customer_price_list_mapping, price_list WHERE id = price_list );
ALTER TABLE ONLY pricelist_ref
    ADD CONSTRAINT fk_pricelist_ref_bp FOREIGN KEY (bp_id) REFERENCES business_partner(bp_id) ON UPDATE RESTRICT ON DELETE CASCADE;
ALTER TABLE ONLY pricelist_ref
    ADD CONSTRAINT fk_pricelist_ref_pricelist FOREIGN KEY (price_list) REFERENCES price_list(name) ON UPDATE RESTRICT ON DELETE CASCADE;
DROP TABLE customer_price_list_mapping;
ALTER TABLE contact DROP COLUMN business_contact;
ALTER TABLE contact DROP COLUMN technical_contact;
CREATE TABLE contactrole_ref (
    contact_id integer NOT NULL,
    role character varying(40) NOT NULL
);
ALTER TABLE ONLY contactrole_ref
    ADD CONSTRAINT pk_contactrole_ref PRIMARY KEY (contact_id, role);
CREATE TABLE role (
    role_name character varying(40) NOT NULL
);
ALTER TABLE ONLY role
    ADD CONSTRAINT pk_role PRIMARY KEY (role_name);
INSERT INTO role VALUES ('billing'), ('operations');
ALTER TABLE ONLY contactrole_ref
    ADD CONSTRAINT fk_contactrole_ref_role FOREIGN KEY (role) REFERENCES role(role_name);
ALTER TABLE ONLY contactrole_ref
    ADD CONSTRAINT fk_contactrole_ref_contact FOREIGN KEY (contact_id) REFERENCES contact(contact_id);
INSERT INTO contactrole_ref (contact_id, role)
   ( SELECT contact_id, 'billing' FROM contact );
INSERT INTO contactrole_ref (contact_id, role)
   ( SELECT contact_id, 'operations' FROM contact );