typo
[freeside.git] / README.1.5.7
1 NOTE: Version numbering has been simplified.  1.5.7 is the version after
2 1.5.0pre6.  It is still a development version - releases with odd numbered 
3 middle parts (NN in x.NN.x) are development versions, like Perl or Linux.
4
5 install DBIx::DBSchema 0.26
6
7 CREATE TABLE rate (
8     ratenum serial NOT NULL,
9     ratename varchar(80) NOT NULL,
10     PRIMARY KEY (ratenum)
11 );
12
13 CREATE TABLE rate_detail (
14     ratedetailnum serial NOT NULL,
15     ratenum int NOT NULL,
16     orig_regionnum int NULL,
17     dest_regionnum int NOT NULL,
18     min_included int NOT NULL,
19     min_charge decimal(10,2) NOT NULL,
20     sec_granularity int NOT NULL
21 );
22 CREATE UNIQUE INDEX rate_detail1 ON rate_detail ( ratenum, orig_regionnum, dest_regionnum );
23
24 CREATE TABLE rate_region (
25     regionnum serial NOT NULL,
26     regionname varchar(80) NOT NULL,
27     PRIMARY KEY (regionnum)
28 );
29
30 CREATE TABLE rate_prefix (
31     prefixnum serial NOT NULL,
32     regionnum int NOT NULL, 
33     countrycode varchar(3) NOT NULL,
34     npa varchar(6) NULL,
35     nxx varchar(3) NULL,
36     PRIMARY KEY (prefixnum)
37 );
38 CREATE INDEX rate_prefix1 ON rate_prefix ( countrycode );
39 CREATE INDEX rate_prefix2 ON rate_prefix ( regionnum );
40
41 CREATE TABLE reg_code (
42     codenum serial NOT NULL,
43     code varchar(80) NOT NULL,
44     agentnum int NOT NULL,
45     PRIMARY KEY (codenum)
46 );
47 CREATE UNIQUE INDEX reg_code1 ON reg_code ( agentnum, code );
48 CREATE INDEX reg_code2 ON reg_code ( agentnum );
49
50 CREATE TABLE reg_code_pkg (
51     codepkgnum serial,
52     codenum int NOT NULL,
53     pkgpart int NOT NULL,
54     PRIMARY KEY (codepkgnum)
55 );
56 CREATE UNIQUE INDEX reg_code_pkg1 ON reg_code_pkg ( codenum, pkgpart );
57 CREATE INDEX reg_code_pkg2 ON reg_code_pkg ( codenum );
58
59 CREATE TABLE clientapi_session (
60     sessionnum serial NOT NULL,
61     sessionid varchar(80) NOT NULL,
62     namespace varchar(80) NOT NULL,
63     PRIMARY KEY (sessionnum)
64 );
65 CREATE UNIQUE INDEX clientapi_session1 ON clientapi_session ( sessionid, namespace );
66
67 CREATE TABLE clientapi_session_field (
68     fieldnum serial NOT NULL,
69     sessionnum int NOT NULL,
70     fieldname varchar(80) NOT NULL,
71     fieldvalue text NULL,
72     PRIMARY KEY (fieldnum)
73 );
74 CREATE UNIQUE INDEX clientapi_session_field1 ON clientapi_session_field ( sessionnum, fieldname );
75
76 ALTER TABLE part_pkg ADD promo_code varchar(80) NULL;
77 ALTER TABLE h_part_pkg ADD promo_code varchar(80) NULL;
78 CREATE INDEX part_pkg2 ON part_pkg ( promo_code );
79 CREATE INDEX h_part_pkg2 ON h_part_pkg ( promo_code );
80
81 ALTER TABLE cust_main ALTER COLUMN zip DROP NOT NULL;
82 ALTER TABLE h_cust_main ALTER COLUMN zip DROP NOT NULL;
83
84 ALTER TABLE prepay_credit ADD agentnum integer NULL;
85 ALTER TABLE h_prepay_credit ADD agentnum integer NULL;
86
87 On current (7.3? definitely 7.4+) Pg:
88
89   ALTER TABLE type_pkgs ADD typepkgnum int;
90   ALTER TABLE type_pkgs ALTER COLUMN typepkgnum SET DEFAULT nextval('public.type_pkgs_typepkgnum_seq'::text);
91   CREATE SEQUENCE type_pkgs_typepkgnum_seq;
92   UPDATE type_pkgs SET typepkgnum = nextval('public.type_pkgs_typepkgnum_seq'::text) WHERE typepkgnum IS NULL;
93   ALTER TABLE type_pkgs ALTER typepkgnum SET NOT NULL;
94   ALTER TABLE type_pkgs ADD PRIMARY KEY (typepkgnum);
95   ALTER TABLE h_type_pkgs ADD typepkgnum int;
96
97   ALTER TABLE cust_bill_pkg ADD billpkgnum int;
98   ALTER TABLE cust_bill_pkg ALTER COLUMN billpkgnum SET DEFAULT nextval('public.cust_bill_pkg_billpkgnum_seq'::text);
99   CREATE SEQUENCE cust_bill_pkg_billpkgnum_seq;
100   UPDATE cust_bill_pkg SET billpkgnum = nextval('public.cust_bill_pkg_billpkgnum_seq'::text) WHERE billpkgnum IS NULL;
101   ALTER TABLE cust_bill_pkg ALTER billpkgnum SET NOT NULL;
102   ALTER TABLE cust_bill_pkg ADD PRIMARY KEY (billpkgnum);
103   ALTER TABLE h_cust_bill_pkg ADD billpkgnum int;
104   
105   ALTER TABLE pkg_svc ADD pkgsvcnum int;
106   ALTER TABLE pkg_svc ALTER COLUMN pkgsvcnum SET DEFAULT nextval('public.pkg_svc_pkgsvcnum_seq'::text);
107   CREATE SEQUENCE pkg_svc_pkgsvcnum_seq;
108   UPDATE pkg_svc SET pkgsvcnum = nextval('public.pkg_svc_pkgsvcnum_seq'::text) WHERE pkgsvcnum IS NULL;
109   ALTER TABLE pkg_svc ALTER pkgsvcnum SET NOT NULL;
110   ALTER TABLE pkg_svc ADD PRIMARY KEY (pkgsvcnum);
111   ALTER TABLE h_pkg_svc ADD pkgsvcnum int;
112   
113   ALTER TABLE part_svc_router ADD svcrouternum int;
114   ALTER TABLE part_svc_router ALTER COLUMN svcrouternum SET DEFAULT nextval('public.part_svc_router_svcrouternum_seq'::text);
115   CREATE SEQUENCE part_svc_router_svcrouternum_seq;
116   UPDATE part_svc_router SET svcrouternum = nextval('public.part_svc_router_svcrouternum_seq'::text) WHERE svcrouternum IS NULL;
117   ALTER TABLE part_svc_router ALTER svcrouternum SET NOT NULL;
118   ALTER TABLE part_svc_router ADD PRIMARY KEY (svcrouternum);
119   ALTER TABLE h_part_svc_router ADD svcrouternum int;
120
121 Or on very old Pg (7.2 and earlier (eek), 7.3?):
122
123   ALTER TABLE type_pkgs ADD typepkgnum int;
124   ALTER TABLE type_pkgs ALTER COLUMN typepkgnum SET DEFAULT nextval('type_pkgs_typepkgnum_seq'::text);
125   CREATE SEQUENCE type_pkgs_typepkgnum_seq;
126   UPDATE type_pkgs SET typepkgnum = nextval('type_pkgs_typepkgnum_seq'::text) WHERE typepkgnum IS NULL;
127   UPDATE pg_attribute SET attnotnull = TRUE WHERE attname = 'typepkgnum' AND attrelid = ( SELECT oid FROM pg_class WHERE relname = 'type_pkgs');
128   ALTER TABLE type_pkgs ADD PRIMARY KEY (typepkgnum);
129   ALTER TABLE h_type_pkgs ADD typepkgnum int;
130
131   ALTER TABLE cust_bill_pkg ADD billpkgnum int;
132   ALTER TABLE cust_bill_pkg ALTER COLUMN billpkgnum SET DEFAULT nextval('cust_bill_pkg_billpkgnum_seq'::text);
133   CREATE SEQUENCE cust_bill_pkg_billpkgnum_seq;
134   UPDATE cust_bill_pkg SET billpkgnum = nextval('cust_bill_pkg_billpkgnum_seq'::text) WHERE billpkgnum IS NULL;
135   UPDATE pg_attribute SET attnotnull = TRUE WHERE attname = 'billpkgnum' AND attrelid = ( SELECT oid FROM pg_class WHERE relname = 'cust_bill_pkg');
136   ALTER TABLE cust_bill_pkg ADD PRIMARY KEY (billpkgnum);
137   ALTER TABLE h_cust_bill_pkg ADD billpkgnum int;
138   
139   ALTER TABLE pkg_svc ADD pkgsvcnum int;
140   ALTER TABLE pkg_svc ALTER COLUMN pkgsvcnum SET DEFAULT nextval('pkg_svc_pkgsvcnum_seq'::text);
141   CREATE SEQUENCE pkg_svc_pkgsvcnum_seq;
142   UPDATE pkg_svc SET pkgsvcnum = nextval('pkg_svc_pkgsvcnum_seq'::text) WHERE pkgsvcnum IS NULL;
143   UPDATE pg_attribute SET attnotnull = TRUE WHERE attname = 'pkgsvcnum' AND attrelid = ( SELECT oid FROM pg_class WHERE relname = 'pkg_svc');
144   ALTER TABLE pkg_svc ADD PRIMARY KEY (pkgsvcnum);
145   ALTER TABLE h_pkg_svc ADD pkgsvcnum int;
146   
147   ALTER TABLE part_svc_router ADD svcrouternum int;
148   ALTER TABLE part_svc_router ALTER COLUMN svcrouternum SET DEFAULT nextval('part_svc_router_svcrouternum_seq'::text);
149   CREATE SEQUENCE part_svc_router_svcrouternum_seq;
150   UPDATE part_svc_router SET svcrouternum = nextval('part_svc_router_svcrouternum_seq'::text) WHERE svcrouternum IS NULL;
151   UPDATE pg_attribute SET attnotnull = TRUE WHERE attname = 'svcrouternum' AND attrelid = ( SELECT oid FROM pg_class WHERE relname = 'part_svc_router');
152   ALTER TABLE part_svc_router ADD PRIMARY KEY (svcrouternum);
153   ALTER TABLE h_part_svc_router ADD svcrouternum int;
154
155 Installs w/integrated RT:
156   CREATE SEQUENCE attributes_id_seq;
157
158   CREATE TABLE Attributes (
159     id INTEGER DEFAULT nextval('attributes_id_seq'),
160     Name varchar(255) NOT NULL  ,
161     Description varchar(255) NULL  ,
162     Content text,
163     ContentType varchar(16),
164     ObjectType varchar(64),
165     ObjectId integer, -- foreign key to anything
166     Creator integer NOT NULL DEFAULT 0  ,
167     Created TIMESTAMP NULL  ,
168     LastUpdatedBy integer NOT NULL DEFAULT 0  ,
169     LastUpdated TIMESTAMP NULL  ,
170     PRIMARY KEY (id)
171   
172   );
173   
174   CREATE INDEX Attributes1 on Attributes(Name);
175   CREATE INDEX Attributes2 on Attributes(ObjectType, ObjectId);
176
177   Add these lines to /opt/rt3/etc/RT_SiteConfig.pm (before the "1;"):
178     $RT::URI::freeside::IntegrationType = 'Internal';
179     $RT::URI::freeside::URL = 'http://path/to/your/freeside/';
180     Set($DatabaseHost   , '');
181
182 (End of Installs w/integrated RT)
183
184
185 (make sure you have upgraded DBIx::DBSchema to 0.26)
186 dbdef-create username 
187 create-history-tables username rate rate_detail rate_region rate_prefix reg_code reg_code_pkg
188 dbdef-create username
189
190 install Text::CSV_XS, Spreadsheet::WriteExcel, IO-stringy (IO::Scalar),
191 Frontier::RPC (Frontier::RPC2), MIME::Entity (MIME-tools) and IPC::Run3
192
193 afterwords (for installs w/integrated RT):
194 install HTML::Scrubber, Text::Quoted and Tree::Simple
195 make configure-rt
196 make deploy
197 /opt/rt3/sbin/rt-setup-database --action insert --datadir etc/upgrade/3.1.15
198 /opt/rt3/sbin/rt-setup-database --action insert --datadir etc/upgrade/3.1.17
199