-- function check_department create function check_department() returns trigger as ' declare dpt_id int; begin if new.department_id = 0 then delete from dpt_trans where trans_id = new.id; return NULL; end if; select into dpt_id trans_id from dpt_trans where trans_id = new.id; if dpt_id > 0 then update dpt_trans set department_id = new.department_id where trans_id = dpt_id; else insert into dpt_trans (trans_id, department_id) values (new.id, new.department_id); end if; return NULL; end; ' language 'plpgsql'; -- end function -- department transaction table create table dpt_trans (trans_id int, department_id int); -- function del_department create function del_department() returns trigger as ' begin delete from dpt_trans where trans_id = old.id; return NULL; end; ' language 'plpgsql'; -- end function -- triggers -- create trigger check_department after insert or update on ar for each row execute procedure check_department(); -- end trigger create trigger check_department after insert or update on ap for each row execute procedure check_department(); -- end trigger create trigger check_department after insert or update on gl for each row execute procedure check_department(); -- end trigger create trigger check_department after insert or update on oe for each row execute procedure check_department(); -- end trigger -- -- create trigger del_department after delete on ar for each row execute procedure del_department(); -- end trigger create trigger del_department after delete on ap for each row execute procedure del_department(); -- end trigger create trigger del_department after delete on gl for each row execute procedure del_department(); -- end trigger create trigger del_department after delete on oe for each row execute procedure del_department(); -- end trigger -- -- business table create table business (id int default nextval('id'), description text, discount float4); -- -- SIC create table sic (code text, sictype char(1), description text); -- alter table vendor add column gifi_accno text; alter table vendor add column business_id int; alter table vendor add column taxnumber text; alter table vendor add column sic_code text; -- alter table customer add column business_id int; alter table customer add column taxnumber text; alter table customer add column sic_code text; -- create function del_customer() returns trigger as ' begin delete from shipto where trans_id = old.id; delete from customertax where customer_id = old.id; return NULL; end; ' language 'plpgsql'; -- end function -- create function del_vendor() returns trigger as ' begin delete from shipto where trans_id = old.id; delete from vendortax where vendor_id = old.id; return NULL; end; ' language 'plpgsql'; -- end function -- create trigger del_customer after delete on customer for each row execute procedure del_customer(); -- end trigger create trigger del_vendor after delete on vendor for each row execute procedure del_vendor(); -- end trigger -- alter table acc_trans add column memo text; -- alter table employee add column sales bool; alter table employee alter column sales set default 't'; -- alter table vendor add discount float4; alter table vendor add creditlimit float; -- -- function del_exchangerate create function del_exchangerate() returns trigger as ' declare t_transdate date; t_curr char(3); t_id int; d_curr text; begin select into d_curr substr(curr,1,3) from defaults; if TG_RELNAME = ''ar'' then select into t_curr, t_transdate curr, transdate from ar where id = old.id; end if; if TG_RELNAME = ''ap'' then select into t_curr, t_transdate curr, transdate from ap where id = old.id; end if; if TG_RELNAME = ''oe'' then select into t_curr, t_transdate curr, transdate from oe where id = old.id; end if; if d_curr != t_curr then select into t_id a.id from acc_trans ac join ar a on (a.id = ac.trans_id) where a.curr = t_curr and ac.transdate = t_transdate except select a.id from ar a where a.id = old.id union select a.id from acc_trans ac join ap a on (a.id = ac.trans_id) where a.curr = t_curr and ac.transdate = t_transdate except select a.id from ap a where a.id = old.id union select o.id from oe o where o.curr = t_curr and o.transdate = t_transdate except select o.id from oe o where o.id = old.id; if not found then delete from exchangerate where curr = t_curr and transdate = t_transdate; end if; end if; return old; end; ' language 'plpgsql'; -- end function -- -- triggers -- create trigger del_exchangerate before delete on ar for each row execute procedure del_exchangerate(); -- end trigger -- create trigger del_exchangerate before delete on ap for each row execute procedure del_exchangerate(); -- end trigger -- create trigger del_exchangerate before delete on oe for each row execute procedure del_exchangerate(); -- end trigger -- -- alter table orderitems add ship float4; alter table orderitems add serialnumber text; -- -- create sequence orderitemsid maxvalue 100000 cycle; -- add id to orderitems, fill in id alter table orderitems add id int default nextval('orderitemsid'); -- create table warehouse (id int default nextval('id'), description text); -- create table inventory (warehouse_id int, parts_id int, oe_id int, orderitems_id int, qty float4, shippingdate date); -- create index orderitems_id_key on orderitems (id); -- alter table ar add shipvia text; alter table ap add shipvia text; alter table oe add shipvia text; -- -- alter table inventory add employee_id int; -- -- create function check_inventory() returns trigger as ' declare itemid int; row_data inventory%rowtype; begin if not old.quotation then for row_data in select * from inventory where oe_id = old.id loop select into itemid id from orderitems where trans_id = old.id and id = row_data.orderitems_id; if itemid is null then delete from inventory where oe_id = old.id and orderitems_id = row_data.orderitems_id; end if; end loop; end if; return old; end; ' language 'plpgsql'; -- end function -- create trigger check_inventory after update on oe for each row execute procedure check_inventory(); -- end trigger -- -- create table yearend ( trans_id int, transdate date ); -- -- function del_yearend create function del_yearend() returns trigger as ' begin delete from yearend where trans_id = old.id; return NULL; end; ' language 'plpgsql'; -- end function -- triggers -- create trigger del_yearend after delete on gl for each row execute procedure del_yearend(); -- end trigger -- -- create table temp ( id int default nextval('id'), name varchar(64), addr1 varchar(64), addr2 varchar(64), addr3 varchar(64), addr4 varchar(64), contact varchar(64), phone varchar(20), fax varchar(20), email text, notes text, discount float4, taxincluded bool, creditlimit float default 0, terms int2 default 0, customernumber varchar(64), cc text, bcc text, business_id int, taxnumber varchar(64), sic_code varchar(6), iban varchar(34), bic varchar(11) ); insert into temp (id, name, addr1, addr2, addr3, addr4, contact, phone, fax, email, notes, discount, taxincluded, creditlimit, terms, customernumber, cc, bcc, business_id, taxnumber, sic_code) select id, name, addr1, addr2, addr3, addr4, contact, phone, fax, email, notes, discount, taxincluded, creditlimit, terms, customernumber, cc, bcc, business_id, taxnumber, sic_code from customer; -- drop table customer; -- alter table temp rename to customer; -- create index customer_id_key on customer (id); create index customer_customernumber_key on customer (customernumber); create index customer_name_key on customer (name); create index customer_contact_key on customer (contact); -- create trigger del_customer after delete on customer for each row execute procedure del_customer(); -- end trigger -- create table temp ( id int default nextval('id'), name varchar(64), addr1 varchar(64), addr2 varchar(64), addr3 varchar(64), addr4 varchar(64), contact varchar(64), phone varchar(20), fax varchar(20), email text, notes text, terms int2 default 0, taxincluded bool, vendornumber varchar(64), cc text, bcc text, gifi_accno varchar(30), business_id int, taxnumber varchar(64), sic_code varchar(6), discount float4, creditlimit float default 0, iban varchar(34), bic varchar(11) ); insert into temp (id, name, addr1, addr2, addr3, addr4, contact, phone, fax, email, notes, discount, taxincluded, creditlimit, terms, vendornumber, cc, bcc, business_id, taxnumber, sic_code) select id, name, addr1, addr2, addr3, addr4, contact, phone, fax, email, notes, discount, taxincluded, creditlimit, terms, vendornumber, cc, bcc, business_id, taxnumber, sic_code from vendor; -- drop table vendor; -- alter table temp rename to vendor; -- create index vendor_id_key on vendor (id); create index vendor_name_key on vendor (name); create index vendor_vendornumber_key on vendor (vendornumber); create index vendor_contact_key on vendor (contact); -- create trigger del_vendor after delete on vendor for each row execute procedure del_vendor(); -- end trigger -- create table temp ( code varchar(6), sictype char(1), description text ); insert into temp (code, sictype, description) select code, sictype, description from sic; drop table sic; alter table temp rename to sic; -- create table temp ( trans_id int, shiptoname varchar(64), shiptoaddr1 varchar(64), shiptoaddr2 varchar(64), shiptoaddr3 varchar(64), shiptoaddr4 varchar(64), shiptocontact varchar(64), shiptophone varchar(20), shiptofax varchar(20), shiptoemail text ); insert into temp (trans_id, shiptoname, shiptoaddr1, shiptoaddr2, shiptoaddr3, shiptoaddr4, shiptocontact, shiptophone, shiptofax, shiptoemail) select trans_id, shiptoname, shiptoaddr1, shiptoaddr2, shiptoaddr3, shiptoaddr4, shiptocontact, shiptophone, shiptofax, shiptoemail from shipto; drop table shipto; alter table temp rename to shipto; create index shipto_trans_id_key on shipto (trans_id); -- -- create table temp ( id int default nextval('id'), login text, name varchar(64), addr1 varchar(64), addr2 varchar(64), addr3 varchar(64), addr4 varchar(64), workphone varchar(20), homephone varchar(20), startdate date default current_date, enddate date, notes text, role varchar(20), sales bool, email text, sin varchar(20), iban varchar(34), bic varchar(11) ); insert into temp (id,login,name,addr1,addr2,addr3,addr4,workphone,homephone,startdate,enddate,notes,role,sales) select id,login,name,addr1,addr2,addr3,addr4,workphone,homephone,startdate,enddate,notes,role,sales from employee; -- drop table employee; alter table temp rename to employee; -- create index employee_id_key on employee (id); create unique index employee_login_key on employee (login); create index employee_name_key on employee (name); -- update defaults set version = '2.3.1';