[MERGE] base: raise an exception if the format of the bank account is wrong
[odoo/odoo.git] / openerp / addons / base / base.sql
1 -------------------------------------------------------------------------
2 -- Pure SQL
3 -------------------------------------------------------------------------
4
5 -------------------------------------------------------------------------
6 -- IR dictionary
7 -------------------------------------------------------------------------
8
9 create table ir_values
10 (
11     id serial,
12     name varchar(128) not null,
13     key varchar(128) not null,
14     key2 varchar(256) not null,
15     model varchar(128) not null,
16     value text,
17     meta text default NULL,
18     res_id integer default null,
19     primary key (id)
20 );
21
22 -------------------------------------------------------------------------
23 -- Modules Description
24 -------------------------------------------------------------------------
25
26 CREATE TABLE ir_model (
27   id serial,
28   model varchar(64) DEFAULT ''::varchar NOT NULL,
29   name varchar(64),
30   state varchar(16),
31   info text,
32   primary key(id)
33 );
34
35 CREATE TABLE ir_model_fields (
36   id serial,
37   model varchar(64) DEFAULT ''::varchar NOT NULL,
38   model_id int references ir_model on delete cascade,
39   name varchar(64) DEFAULT ''::varchar NOT NULL,
40   relation varchar(64),
41   select_level varchar(4),
42   field_description varchar(256),
43   ttype varchar(64),
44   state varchar(64) default 'base',
45   view_load boolean,
46   relate boolean default False,
47   relation_field varchar(128),
48   translate boolean default False,
49   primary key(id)
50 );
51
52 ALTER TABLE ir_model_fields ADD column serialization_field_id int references ir_model_fields on delete cascade;
53
54
55 -------------------------------------------------------------------------
56 -- Actions
57 -------------------------------------------------------------------------
58
59 CREATE TABLE ir_actions (
60     id serial NOT NULL,
61     name varchar(64) DEFAULT ''::varchar NOT NULL,
62     "type" varchar(32) NOT NULL,
63     usage varchar(32) DEFAULT null,
64     primary key(id)
65 );
66
67 CREATE TABLE ir_act_window (
68     view_id integer,
69     res_model varchar(64),
70     view_type varchar(16),
71     "domain" varchar(250),
72     primary key(id)
73 )
74 INHERITS (ir_actions);
75
76 CREATE TABLE ir_act_report_xml (
77     model varchar(64) NOT NULL,
78     report_name varchar(64) NOT NULL,
79     report_xsl varchar(256),
80     report_xml varchar(256),
81     auto boolean default true,
82     primary key(id)
83 )
84 INHERITS (ir_actions);
85
86 create table ir_act_report_custom (
87     report_id int,
88 --  report_id int references ir_report_custom
89     primary key(id)
90 )
91 INHERITS (ir_actions);
92
93 CREATE TABLE ir_act_wizard (
94     wiz_name varchar(64) NOT NULL,
95     primary key(id)
96 )
97 INHERITS (ir_actions);
98
99 CREATE TABLE ir_act_url (
100     url text NOT NULL,
101     target varchar(64) NOT NULL,
102     primary key(id)
103 )
104 INHERITS (ir_actions);
105
106 CREATE TABLE ir_act_server (
107     primary key(id)
108 )
109 INHERITS (ir_actions);
110
111 CREATE TABLE ir_act_client (
112     primary key(id)
113 )
114 INHERITS (ir_actions);
115
116
117 CREATE TABLE ir_ui_view (
118     id serial NOT NULL,
119     name varchar(64) DEFAULT ''::varchar NOT NULL,
120     model varchar(64) DEFAULT ''::varchar NOT NULL,
121     "type" varchar(64) DEFAULT 'form'::varchar NOT NULL,
122     arch text NOT NULL,
123     field_parent varchar(64),
124     priority integer DEFAULT 5 NOT NULL,
125     primary key(id)
126 );
127
128 CREATE TABLE ir_ui_menu (
129     id serial NOT NULL,
130     parent_id int references ir_ui_menu on delete set null,
131     name varchar(64) DEFAULT ''::varchar NOT NULL,
132     icon varchar(64) DEFAULT ''::varchar,
133     primary key (id)
134 );
135
136 select setval('ir_ui_menu_id_seq', 2);
137
138 ---------------------------------
139 -- Res users
140 ---------------------------------
141
142 -- level:
143 --   0  RESTRICT TO USER
144 --   1  RESTRICT TO GROUP
145 --   2  PUBLIC
146
147 CREATE TABLE res_users (
148     id serial NOT NULL,
149     active boolean default True,
150     login varchar(64) NOT NULL UNIQUE,
151     password varchar(64) default null,
152     tz varchar(64) default null,
153     lang varchar(64) default '',
154     -- No FK references below, will be added later by ORM
155     -- (when the destination rows exist)
156     company_id int,
157     partner_id int,
158     primary key(id)
159 );
160 alter table res_users add constraint res_users_login_uniq unique (login);
161
162 CREATE TABLE res_groups (
163     id serial NOT NULL,
164     name varchar(64) NOT NULL,
165     primary key(id)
166 );
167
168 CREATE TABLE res_groups_users_rel (
169     uid integer NOT NULL references res_users on delete cascade,
170     gid integer NOT NULL references res_groups on delete cascade,
171     UNIQUE("uid","gid")
172 );
173
174 create index res_groups_users_rel_uid_idx on res_groups_users_rel (uid);
175 create index res_groups_users_rel_gid_idx on res_groups_users_rel (gid);
176
177
178 ---------------------------------
179 -- Workflows
180 ---------------------------------
181
182 create table wkf
183 (
184     id serial,
185     name varchar(64),
186     osv varchar(64),
187     on_create bool default False,
188     primary key(id)
189 );
190
191 create table wkf_activity
192 (
193     id serial,
194     wkf_id int references wkf on delete cascade,
195     subflow_id int references wkf on delete set null,
196     split_mode varchar(3) default 'XOR',
197     join_mode varchar(3) default 'XOR',
198     kind varchar(16) not null default 'dummy',
199     name varchar(64),
200     signal_send varchar(32) default null,
201     flow_start boolean default False,
202     flow_stop boolean default False,
203     action text default null,
204     primary key(id)
205 );
206
207 create table wkf_transition
208 (
209     id serial,
210     act_from int references wkf_activity on delete cascade,
211     act_to int references wkf_activity on delete cascade,
212     condition varchar(128) default NULL,
213
214     trigger_type varchar(128) default NULL,
215     trigger_expr_id varchar(128) default NULL,
216
217     signal varchar(64) default null,
218     group_id int references res_groups on delete set null,
219
220     primary key(id)
221 );
222
223 create table wkf_instance
224 (
225     id serial,
226     wkf_id int references wkf on delete restrict,
227     uid int default null,
228     res_id int not null,
229     res_type varchar(64) not null,
230     state varchar(32) not null default 'active',
231     primary key(id)
232 );
233
234 create table wkf_workitem
235 (
236     id serial,
237     act_id int not null references wkf_activity on delete cascade,
238     inst_id int not null references wkf_instance on delete cascade,
239     subflow_id int references wkf_instance on delete cascade,
240     state varchar(64) default 'blocked',
241     primary key(id)
242 );
243
244 create table wkf_witm_trans
245 (
246     trans_id int not null references wkf_transition on delete cascade,
247     inst_id int not null references wkf_instance on delete cascade
248 );
249
250 create index wkf_witm_trans_inst_idx on wkf_witm_trans (inst_id);
251
252 create table wkf_logs
253 (
254     id serial,
255     res_type varchar(128) not null,
256     res_id int not null,
257     uid int references res_users on delete set null,
258     act_id int references wkf_activity on delete set null,
259     time time not null,
260     info varchar(128) default NULL,
261     primary key(id)
262 );
263
264 ---------------------------------
265 -- Modules
266 ---------------------------------
267
268 CREATE TABLE ir_module_category (
269     id serial NOT NULL,
270     create_uid integer references res_users on delete set null,
271     create_date timestamp without time zone,
272     write_date timestamp without time zone,
273     write_uid integer references res_users on delete set null,
274     parent_id integer REFERENCES ir_module_category ON DELETE SET NULL,
275     name character varying(128) NOT NULL,
276     primary key(id)
277 );
278
279
280 CREATE TABLE ir_module_module (
281     id serial NOT NULL,
282     create_uid integer references res_users on delete set null,
283     create_date timestamp without time zone,
284     write_date timestamp without time zone,
285     write_uid integer references res_users on delete set null,
286     website character varying(256),
287     summary character varying(256),
288     name character varying(128) NOT NULL,
289     author character varying(128),
290     url character varying(128),
291     icon character varying(64),
292     state character varying(16),
293     latest_version character varying(64),
294     shortdesc character varying(256),
295     complexity character varying(32),
296     category_id integer REFERENCES ir_module_category ON DELETE SET NULL,
297     certificate character varying(64),
298     description text,
299     application boolean default False,
300     demo boolean default False,
301     web boolean DEFAULT FALSE,
302     license character varying(32),
303     sequence integer DEFAULT 100,
304     auto_install boolean default False,
305     primary key(id)
306 );
307 ALTER TABLE ir_module_module add constraint name_uniq unique (name);
308
309 CREATE TABLE ir_module_module_dependency (
310     id serial NOT NULL,
311     create_uid integer references res_users on delete set null,
312     create_date timestamp without time zone,
313     write_date timestamp without time zone,
314     write_uid integer references res_users on delete set null,
315     name character varying(128),
316     version_pattern character varying(128) default NULL,
317     module_id integer REFERENCES ir_module_module ON DELETE cascade,
318     primary key(id)
319 );
320
321 CREATE TABLE res_company (
322     id serial NOT NULL,
323     name character varying(64) not null,
324     parent_id integer references res_company on delete set null,
325     primary key(id)
326 );
327
328 CREATE TABLE res_lang (
329     id serial PRIMARY KEY,
330     name VARCHAR(64) NOT NULL UNIQUE,
331     code VARCHAR(16) NOT NULL UNIQUE
332 );
333
334 CREATE TABLE ir_model_data (
335     id serial NOT NULL,
336     create_uid integer,
337     create_date timestamp without time zone,
338     write_date timestamp without time zone,
339     write_uid integer,
340     noupdate boolean,
341     name character varying(128) NOT NULL,
342     date_init timestamp without time zone,
343     date_update timestamp without time zone,
344     module character varying(64) NOT NULL,
345     model character varying(64) NOT NULL,
346     res_id integer, primary key(id)
347 );
348
349 -- Records foreign keys and constraints installed by a module (so they can be
350 -- removed when the module is uninstalled):
351 --   - for a foreign key: type is 'f',
352 --   - for a constraint: type is 'u' (this is the convention PostgreSQL uses).
353 CREATE TABLE ir_model_constraint (
354     id serial NOT NULL,
355     create_uid integer,
356     create_date timestamp without time zone,
357     write_date timestamp without time zone,
358     write_uid integer,
359     date_init timestamp without time zone,
360     date_update timestamp without time zone,
361     module integer NOT NULL references ir_module_module on delete restrict,
362     model integer NOT NULL references ir_model on delete restrict,
363     type character varying(1) NOT NULL,
364     name character varying(128) NOT NULL
365 );
366
367 -- Records relation tables (i.e. implementing many2many) installed by a module
368 -- (so they can be removed when the module is uninstalled).
369 CREATE TABLE ir_model_relation (
370     id serial NOT NULL,
371     create_uid integer,
372     create_date timestamp without time zone,
373     write_date timestamp without time zone,
374     write_uid integer,
375     date_init timestamp without time zone,
376     date_update timestamp without time zone,
377     module integer NOT NULL references ir_module_module on delete restrict,
378     model integer NOT NULL references ir_model on delete restrict,
379     name character varying(128) NOT NULL
380 );
381
382 ---------------------------------
383 -- Users
384 ---------------------------------
385
386 insert into res_users (id,login,password,active,company_id,partner_id,lang) values (1,'admin','admin',True,1,1,'en_US');
387 insert into ir_model_data (name,module,model,noupdate,res_id) values ('user_root','base','res.users',True,1);
388
389 -- Compatibility purpose, to remove V6.0
390 insert into ir_model_data (name,module,model,noupdate,res_id) values ('user_admin','base','res.users',True,1);
391
392 select setval('res_users_id_seq', 2);