4 install DBD::Pg 1.32 (or, if you're using a Perl version before 5.6, you could try installing DBD::Pg 1.22 with <a href="http://420.am/~ivan/DBD-Pg-1.22-fixvercmp.patch">this patch</a> and commenting out the "use DBD::Pg 1.32" at the top of DBIx/DBSchema/DBD/Pg.pm)
5 install DBIx::DBSchema 0.23
7 - If using Apache::ASP, add PerlSetVar RequestBinaryRead Off and PerlSetVar IncludesDir /your/freeside/document/root/ to your Apache configuration and make sure you are using Apache::ASP minimum version 2.55.
8 - In httpd.conf, change <Files ~ \.cgi> to <Files ~ (\.cgi|\.html)>
9 - In httpd.conf, change <b>AddHandler perl-script .cgi</b> or <b>SetHandler perl-script</b> to <b>AddHandler perl-script .cgi .html</b>
11 install NetAddr::IP, Chart::Base, IPC::ShareLite and Locale::SubCountry
13 INSERT INTO msgcat ( msgnum, msgcode, locale, msg ) VALUES ( 20, 'svc_external-id', 'en_US', 'External ID' );
14 INSERT INTO msgcat ( msgnum, msgcode, locale, msg ) VALUES ( 21, 'svc_external-title', 'en_US', 'Title' );
16 CREATE TABLE cust_bill_pkg_detail (
21 PRIMARY KEY (detailnum)
23 CREATE INDEX cust_bill_pkg_detail1 ON cust_bill_pkg_detail ( pkgnum, invnum );
25 CREATE TABLE part_virtual_field (
26 vfieldpart int NOT NULL,
27 dbtable varchar(32) NOT NULL,
28 name varchar(32) NOT NULL,
33 PRIMARY KEY (vfieldpart)
36 CREATE TABLE virtual_field (
37 recnum integer NOT NULL,
38 vfieldpart integer NOT NULL,
39 value varchar(128) NOT NULL,
40 PRIMARY KEY (vfieldpart, recnum)
45 routername varchar(80),
47 PRIMARY KEY (routernum)
50 CREATE TABLE part_svc_router (
52 routernum int NOT NULL
55 CREATE TABLE addr_block (
57 routernum int NOT NULL,
58 ip_gateway varchar(15) NOT NULL,
59 ip_netmask int NOT NULL,
60 PRIMARY KEY (blocknum)
62 CREATE UNIQUE INDEX addr_block1 ON addr_block ( blocknum, routernum );
64 CREATE TABLE svc_broadband (
66 blocknum int NOT NULL,
67 speed_up int NOT NULL,
68 speed_down int NOT NULL,
73 CREATE TABLE acct_snarf (
76 machine varchar(255) NULL,
77 protocol varchar(80) NULL,
78 username varchar(80) NULL,
79 _password varchar(80) NULL,
80 PRIMARY KEY (snarfnum)
82 CREATE INDEX acct_snarf1 ON acct_snarf ( svcnum );
84 CREATE TABLE svc_external (
91 CREATE TABLE part_pkg_temp (
92 pkgpart serial NOT NULL,
93 pkg varchar(80) NOT NULL,
94 "comment" varchar(80) NOT NULL,
96 freq varchar(80) NOT NULL,
98 setuptax char(1) NULL,
99 recurtax char(1) NULL,
100 plan varchar(80) NULL,
102 disabled char(1) NULL,
103 taxclass varchar(80) NULL,
104 PRIMARY KEY (pkgpart)
106 INSERT INTO part_pkg_temp SELECT * from part_pkg;
108 ALTER TABLE part_pkg_temp RENAME TO part_pkg;
109 CREATE INDEX part_pkg1 ON part_pkg(disabled);
112 ALTER TABLE part_pkg DROP CONSTRAINT part_pkg_temp_pkey;
113 ALTER TABLE part_pkg ADD PRIMARY KEY (pkgpart);
114 select setval('public.part_pkg_temp_pkgpart_seq', ( select max(pkgpart) from part_pkg) );
116 Or on Pg versions that don't support DROP CONSTRAINT and ADD PRIMARY KEY (tested on 7.1 and 7.2 so far):
117 DROP INDEX part_pkg_temp_pkey;
118 CREATE UNIQUE INDEX part_pkg_pkey ON part_pkg (pkgpart);
119 probably this one?: select setval('part_pkg_temp_pkgpart_seq', ( select max(pkgpart) from part_pkg) );
120 probably not this one?: select setval('part_pkg_pkgpart_seq', ( select max(pkgpart) from part_pkg) );
122 CREATE TABLE h_part_pkg_temp (
123 historynum serial NOT NULL,
125 history_user varchar(80) NOT NULL,
126 history_action varchar(80) NOT NULL,
127 pkgpart int NOT NULL,
128 pkg varchar(80) NOT NULL,
129 "comment" varchar(80) NOT NULL,
131 freq varchar(80) NOT NULL,
133 setuptax char(1) NULL,
134 recurtax char(1) NULL,
135 plan varchar(80) NULL,
137 disabled char(1) NULL,
138 taxclass varchar(80) NULL,
139 PRIMARY KEY (historynum)
141 INSERT INTO h_part_pkg_temp SELECT * from h_part_pkg;
142 DROP TABLE h_part_pkg;
143 ALTER TABLE h_part_pkg_temp RENAME TO h_part_pkg;
144 CREATE INDEX h_part_pkg1 ON h_part_pkg(disabled);
147 ALTER TABLE h_part_pkg DROP CONSTRAINT h_part_pkg_temp_pkey;
148 ALTER TABLE h_part_pkg ADD PRIMARY KEY (historynum);
149 select setval('public.h_part_pkg_temp_historynum_seq', ( select max(historynum) from h_part_pkg) );
151 Or on Pg versions that don't support DROP CONSTRAINT and ADD PRIMARY KEY (tested on 7.1 and 7.2 so far):
152 DROP INDEX h_part_pkg_temp_pkey;
153 CREATE UNIQUE INDEX h_part_pkg_pkey ON h_part_pkg (historynum);
154 probably this one?: select setval('h_part_pkg_temp_historynum_seq', ( select max(historynum) from h_part_pkg) );
155 probably not this one?: select setval('h_part_pkg_historynum_seq', ( select max(historynum) from h_part_pkg) );
157 CREATE TABLE cust_pay_refund (
158 payrefundnum serial NOT NULL,
160 refundnum int NOT NULL,
162 amount decimal(10,2) NOT NULL,
163 PRIMARY KEY (payrefundnum)
165 CREATE INDEX cust_pay_refund1 ON cust_pay_refund(paynum);
166 CREATE INDEX cust_pay_refund2 ON cust_pay_refund(refundnum);
168 CREATE TABLE cust_pay_void (
170 custnum int NOT NULL,
171 paid decimal(10,2) NOT NULL,
173 payby char(4) NOT NULL,
175 paybatch varchar(80),
179 otaker varchar(32) NOT NULL,
182 CREATE INDEX cust_pay_void1 ON cust_pay_void(custnum);
184 CREATE TABLE part_pkg_option (
185 optionnum int primary key,
186 pkgpart int not null,
187 optionname varchar(80) not null,
188 optionvalue text NULL
190 CREATE INDEX part_pkg_option1 ON part_export_option ( pkgpart );
191 CREATE INDEX part_pkg_option2 ON part_export_option ( optionname );
193 DROP INDEX cust_bill_pkg1;
195 ALTER TABLE cust_bill_pkg ADD itemdesc varchar(80) NULL;
196 ALTER TABLE h_cust_bill_pkg ADD itemdesc varchar(80) NULL;
197 ALTER TABLE cust_main_county ADD taxname varchar(80) NULL;
198 ALTER TABLE h_cust_main_county ADD taxname varchar(80) NULL;
199 ALTER TABLE cust_main_county ADD setuptax char(1) NULL;
200 ALTER TABLE h_cust_main_county ADD setuptax char(1) NULL;
201 ALTER TABLE cust_main_county ADD recurtax char(1) NULL;
202 ALTER TABLE h_cust_main_county ADD recurtax char(1) NULL;
203 ALTER TABLE cust_pkg ADD last_bill int NULL;
204 ALTER TABLE h_cust_pkg ADD last_bill int NULL;
205 ALTER TABLE agent ADD disabled char(1) NULL;
206 ALTER TABLE h_agent ADD disabled char(1) NULL;
207 ALTER TABLE agent ADD username varchar(80) NULL;
208 ALTER TABLE h_agent ADD username varchar(80) NULL;
209 ALTER TABLE agent ADD _password varchar(80) NULL;
210 ALTER TABLE h_agent ADD _password varchar(80) NULL;
211 ALTER TABLE cust_main ADD paycvv varchar(4) NULL;
212 ALTER TABLE h_cust_main ADD paycvv varchar(4) NULL;
213 ALTER TABLE part_referral ADD disabled char(1) NULL;
214 ALTER TABLE h_part_referral ADD disabled char(1) NULL;
215 CREATE INDEX part_referral1 ON part_referral ( disabled );
216 ALTER TABLE pkg_svc ADD primary_svc char(1) NULL;
217 ALTER TABLE h_pkg_svc ADD primary_svc char(1) NULL;
218 ALTER TABLE svc_forward ADD src varchar(255) NULL;
219 ALTER TABLE h_svc_forward ADD src varchar(255) NULL;
221 On recent Pg versions:
223 ALTER TABLE svc_forward ALTER COLUMN srcsvc DROP NOT NULL;
224 ALTER TABLE h_svc_forward ALTER COLUMN srcsvc DROP NOT NULL;
225 ALTER TABLE svc_forward ALTER COLUMN dstsvc DROP NOT NULL;
226 ALTER TABLE h_svc_forward ALTER COLUMN dstsvc DROP NOT NULL;
228 Or on Pg versions that don't support DROP NOT NULL (tested on 7.1 and 7.2 so far):
229 UPDATE pg_attribute SET attnotnull = FALSE WHERE ( attname = 'srcsvc' OR attname = 'dstsvc' ) AND ( attrelid = ( SELECT oid FROM pg_class WHERE relname = 'svc_forward' ) OR attrelid = ( SELECT oid FROM pg_class WHERE relname = 'h_svc_forward' ) );
231 If you created your database with a version before 1.4.2, dump database, edit:
232 - cust_main and h_cust_main: increase otaker from 8 to 32
233 - cust_main and h_cust_main: change ss from char(11) to varchar(11) ( "character(11)" to "character varying(11)" )
234 - cust_credit and h_cust_credit: increase otaker from 8 to 32
235 - cust_pkg and h_cust_pkg: increase otaker from 8 to 32
236 - cust_refund and h_cust_refund: increase otaker from 8 to 32
237 - domain_record and h_domain_record: increase reczone from 80 to 255
238 - domain_record and h_domain_record: change rectype from char to varchar ( "character(5)" to "character varying(5)" )
239 - domain_record and h_domain_record: increase recdata from 80 to 255
244 CREATE INDEX cust_main6 ON cust_main ( daytime );
245 CREATE INDEX cust_main7 ON cust_main ( night );
246 CREATE INDEX cust_main8 ON cust_main ( fax );
247 CREATE INDEX cust_main9 ON cust_main ( ship_daytime );
248 CREATE INDEX cust_main10 ON cust_main ( ship_night );
249 CREATE INDEX cust_main11 ON cust_main ( ship_fax );
250 CREATE INDEX agent2 ON agent ( disabled );
251 CREATE INDEX part_bill_event2 ON part_bill_event ( disabled );
252 CREATE INDEX cust_pay4 ON cust_pay (_date);
258 dbdef-create username
259 create-history-tables username cust_bill_pkg_detail router part_svc_router addr_block svc_broadband acct_snarf svc_external cust_pay_refund cust_pay_void
260 dbdef-create username
262 apache - fix <Files> sections to include .html also