/resources/schema.sql

https://gitlab.com/MichelZuniga/neoinvoice · SQL · 303 lines · 277 code · 23 blank · 3 comment · 0 complexity · 3908515a4c0f39112705872c7d21bad5 MD5 · raw file

  1. --
  2. -- NeoInvoice Database
  3. --
  4. DROP DATABASE IF EXISTS neoinvoice;
  5. CREATE DATABASE neoinvoice;
  6. USE neoinvoice;
  7. CREATE TABLE `affiliate` (
  8. `id` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,
  9. `name` VARCHAR(63) NOT NULL,
  10. `email` VARCHAR(63) NOT NULL,
  11. `phone` VARCHAR(15) NOT NULL,
  12. `commission` DECIMAL(3,2) NOT NULL DEFAULT '0.00',
  13. PRIMARY KEY (`id`),
  14. UNIQUE KEY (`email`)
  15. ) ENGINE=INNODB DEFAULT CHARSET=latin1;
  16. CREATE TABLE `ci_sessions` (
  17. `session_id` VARCHAR(40) NOT NULL DEFAULT '0',
  18. `ip_address` VARCHAR(16) NOT NULL DEFAULT '0',
  19. `user_agent` VARCHAR(50) NOT NULL,
  20. `last_activity` INT(10) UNSIGNED NOT NULL DEFAULT '0',
  21. `user_data` VARCHAR(512) NOT NULL,
  22. PRIMARY KEY (`session_id`)
  23. ) ENGINE=MEMORY DEFAULT CHARSET=latin1;
  24. CREATE TABLE `client` (
  25. `id` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,
  26. `company_id` INT(10) UNSIGNED NOT NULL,
  27. `active` TINYINT(3) UNSIGNED NOT NULL DEFAULT '1',
  28. `name` VARCHAR(64) NOT NULL,
  29. `email` VARCHAR(64) NOT NULL,
  30. `phone` VARCHAR(16) NOT NULL,
  31. `address` VARCHAR(64) NOT NULL,
  32. `created` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
  33. `modified` TIMESTAMP NOT NULL DEFAULT '0000-00-00 00:00:00',
  34. PRIMARY KEY (`id`),
  35. KEY `company_id` (`company_id`,`created`,`modified`),
  36. KEY `active` (`active`)
  37. ) ENGINE=INNODB DEFAULT CHARSET=latin1;
  38. CREATE TABLE `company` (
  39. `id` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,
  40. `name` VARCHAR(127) NOT NULL,
  41. `service_id` INT(10) UNSIGNED NOT NULL DEFAULT '1',
  42. `coupon_id` INT(10) UNSIGNED,
  43. `created` TIMESTAMP NOT NULL DEFAULT NOW(),
  44. `modified` TIMESTAMP NOT NULL DEFAULT '0000-00-00 00:00:00',
  45. `service_expire` TIMESTAMP,
  46. `delete_date` DATE,
  47. `preferences` TEXT NOT NULL,
  48. `invoice_address` VARCHAR(512) NOT NULL,
  49. PRIMARY KEY (`id`),
  50. KEY `owner_id` (`service_id`),
  51. KEY `service_expire` (`service_expire`),
  52. KEY `coupon_id` (`coupon_id`),
  53. KEY `delete_date` (`delete_date`)
  54. ) ENGINE=INNODB DEFAULT CHARSET=latin1;
  55. CREATE TABLE `coupon` (
  56. `id` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,
  57. `name` VARCHAR(16) NOT NULL,
  58. `price` DECIMAL(5,2) NOT NULL,
  59. `default_service_id` INT(10) UNSIGNED NOT NULL DEFAULT '0',
  60. `default_service_expire` MEDIUMINT(8) UNSIGNED NOT NULL DEFAULT '0',
  61. `affiliate_id` INT(10) UNSIGNED,
  62. PRIMARY KEY (`id`),
  63. UNIQUE KEY (`name`),
  64. KEY `default_service_id` (`default_service_id`),
  65. KEY `affiliate_id` (`affiliate_id`)
  66. ) ENGINE=INNODB DEFAULT CHARSET=latin1;
  67. CREATE TABLE `emailsent` (
  68. `id` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,
  69. `company_id` INT(10) UNSIGNED NOT NULL,
  70. `invoice_id` INT(10) UNSIGNED,
  71. `email` VARCHAR(63) NOT NULL,
  72. `created` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
  73. PRIMARY KEY (`id`),
  74. KEY `invoice_id` (`invoice_id`),
  75. KEY `company_id` (`company_id`)
  76. ) ENGINE=INNODB DEFAULT CHARSET=latin1;
  77. CREATE TABLE `expense` (
  78. `id` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,
  79. `company_id` INT(10) UNSIGNED NOT NULL,
  80. `project_id` INT(10) UNSIGNED NOT NULL,
  81. `invoice_id` INT(10) UNSIGNED,
  82. `expensetype_id` INT(10) UNSIGNED NOT NULL,
  83. `billable` TINYINT(3) UNSIGNED NOT NULL DEFAULT '1',
  84. `amount` DECIMAL(8,2) NOT NULL DEFAULT '0.00',
  85. `date` DATE NOT NULL DEFAULT '0000-00-00',
  86. `content` TEXT NOT NULL,
  87. PRIMARY KEY (`id`),
  88. KEY `project_id` (`project_id`,`billable`,`date`),
  89. KEY `invoice_id` (`invoice_id`),
  90. KEY `company_id` (`company_id`),
  91. KEY `expensetype_id` (`expensetype_id`)
  92. ) ENGINE=INNODB DEFAULT CHARSET=latin1;
  93. CREATE TABLE `expensetype` (
  94. `id` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,
  95. `company_id` INT(10) UNSIGNED NOT NULL,
  96. `name` VARCHAR(64) NOT NULL,
  97. `content` TEXT NOT NULL,
  98. `taxable` INT(2) NOT NULL,
  99. PRIMARY KEY (`id`),
  100. KEY `company_id` (`company_id`)
  101. ) ENGINE=InnoDB DEFAULT CHARSET=latin1;
  102. CREATE TABLE `invoice` (
  103. `id` int(10) unsigned not null auto_increment,
  104. `company_id` int(10) unsigned not null,
  105. `client_id` int(10) unsigned not null,
  106. `name` varchar(127) not null,
  107. `paid` tinyint(3) unsigned not null default '0',
  108. `sent` tinyint(3) unsigned not null default '0',
  109. `remind` tinyint(4) not null default '0',
  110. `duedate` date not null default '0000-00-00',
  111. `paiddate` date not null default '0000-00-00',
  112. `itemize` tinyint(3) unsigned not null default '0',
  113. `amount` decimal(8,2) unsigned not null,
  114. `content` text not null,
  115. `created` timestamp not null default CURRENT_TIMESTAMP,
  116. `modified` timestamp not null default '0000-00-00 00:00:00',
  117. PRIMARY KEY (`id`),
  118. KEY `project_id` (`paid`,`duedate`,`amount`,`created`,`modified`),
  119. KEY `company_id` (`company_id`),
  120. KEY `sent` (`sent`),
  121. KEY `client_id` (`client_id`),
  122. KEY `remind` (`remind`)
  123. ) ENGINE=InnoDB DEFAULT CHARSET=latin1;
  124. CREATE TABLE `language` (
  125. `id` int(10) unsigned not null auto_increment,
  126. `name` varchar(63) not null,
  127. `filename` varchar(63) not null,
  128. `code` char(2) not null,
  129. PRIMARY KEY (`id`),
  130. UNIQUE KEY (`code`)
  131. ) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=3;
  132. INSERT INTO `language` (`id`, `name`, `filename`, `code`) VALUES
  133. ('1', 'English', 'english', 'en'),
  134. ('2', 'Deutsch', 'german', 'de');
  135. CREATE TABLE `payment` (
  136. `id` int(10) unsigned not null auto_increment,
  137. `company_id` int(10) unsigned not null,
  138. `invoice_id` int(10) unsigned not null,
  139. `amount` decimal(8,2) not null,
  140. `content` text not null,
  141. `date_received` date not null,
  142. PRIMARY KEY (`id`),
  143. KEY `company_id` (`company_id`),
  144. KEY `invoice_id` (`invoice_id`),
  145. KEY `date_received` (`date_received`)
  146. ) ENGINE=InnoDB DEFAULT CHARSET=latin1;
  147. CREATE TABLE `project` (
  148. `id` int(10) unsigned not null auto_increment,
  149. `company_id` int(10) unsigned not null,
  150. `client_id` int(10) unsigned not null,
  151. `active` tinyint(3) unsigned not null default '1',
  152. `name` varchar(127) not null,
  153. `content` text not null,
  154. `created` timestamp not null default CURRENT_TIMESTAMP,
  155. `modified` timestamp not null default '0000-00-00 00:00:00',
  156. PRIMARY KEY (`id`),
  157. KEY `company_id` (`company_id`),
  158. KEY `client_id` (`client_id`),
  159. KEY `active` (`active`)
  160. ) ENGINE=InnoDB DEFAULT CHARSET=latin1;
  161. CREATE TABLE `segment` (
  162. `id` int(10) unsigned not null auto_increment,
  163. `company_id` INT(10) UNSIGNED NOT NULL,
  164. `project_id` INT(10) UNSIGNED NOT NULL,
  165. `user_id` INT(10) UNSIGNED NOT NULL,
  166. `worktype_id` INT(10) UNSIGNED NOT NULL,
  167. `invoice_id` INT(10) UNSIGNED,
  168. `ticket_id` INT(10) UNSIGNED,
  169. `billable` TINYINT(3) UNSIGNED NOT NULL DEFAULT '1',
  170. `date` DATE NOT NULL DEFAULT '0000-00-00',
  171. `time_start` TIME NOT NULL DEFAULT '00:00:00',
  172. `duration` TIME NOT NULL DEFAULT '00:00:00',
  173. `content` TEXT NOT NULL,
  174. PRIMARY KEY (`id`),
  175. KEY `project_id` (`project_id`,`user_id`,`worktype_id`,`billable`,`date`,`time_start`),
  176. KEY `invoice_id` (`invoice_id`),
  177. KEY `company_id` (`company_id`),
  178. KEY `user_id` (`user_id`),
  179. KEY `worktype_id` (`worktype_id`),
  180. KEY `ticket_id` (`ticket_id`)
  181. ) ENGINE=INNODB DEFAULT CHARSET=latin1;
  182. CREATE TABLE `service` (
  183. `id` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,
  184. `name` VARCHAR(127) NOT NULL,
  185. `price` DECIMAL(6,2) UNSIGNED NOT NULL DEFAULT '0.00',
  186. `pref_max_user` MEDIUMINT(9) UNSIGNED NOT NULL,
  187. `pref_max_email` MEDIUMINT(8) UNSIGNED NOT NULL DEFAULT '0',
  188. `pref_custom_logo` TINYINT(4) NOT NULL DEFAULT '0',
  189. `pref_custom_motd` TINYINT(4) NOT NULL DEFAULT '0',
  190. PRIMARY KEY (`id`)
  191. ) ENGINE=INNODB DEFAULT CHARSET=latin1 AUTO_INCREMENT=4;
  192. INSERT INTO `service` (`id`, `name`, `price`, `pref_max_user`, `pref_max_email`, `pref_custom_logo`, `pref_custom_motd`) VALUES
  193. ('1', 'Free', '0.00', '10', '100', '1', '0'),
  194. ('2', 'Agency', '9.99', '100', '250', '1', '0'),
  195. ('3', 'Corporation', '49.99', '1000', '1500', '1', '1');
  196. CREATE TABLE `ticket` (
  197. `id` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,
  198. `company_id` INT(10) UNSIGNED NOT NULL,
  199. `project_id` INT(10) UNSIGNED NOT NULL,
  200. `assigned_user_id` INT(10) UNSIGNED,
  201. `assigned_usergroup_id` INT(10) UNSIGNED,
  202. `created_user_id` INT(10) UNSIGNED,
  203. `ticket_stage_id` INT(10) UNSIGNED,
  204. `ticket_category_id` INT(10) UNSIGNED,
  205. `name` VARCHAR(127) NOT NULL,
  206. `description` TEXT NOT NULL,
  207. `due` DATE,
  208. `created` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
  209. `modified` TIMESTAMP NOT NULL DEFAULT '0000-00-00 00:00:00',
  210. `closed` TIMESTAMP,
  211. PRIMARY KEY (`id`),
  212. KEY `company_id` (`company_id`),
  213. KEY `project_id` (`project_id`),
  214. KEY `assigned_user_id` (`assigned_user_id`),
  215. KEY `assigned_usergroup_id` (`assigned_usergroup_id`),
  216. KEY `created_user_id` (`created_user_id`),
  217. KEY `ticket_stage_id` (`ticket_stage_id`),
  218. KEY `ticket_category_id` (`ticket_category_id`)
  219. ) ENGINE=INNODB DEFAULT CHARSET=latin1;
  220. CREATE TABLE `ticket_category` (
  221. `id` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,
  222. `company_id` INT(10) UNSIGNED NOT NULL,
  223. `name` VARCHAR(127) NOT NULL,
  224. `description` TEXT NOT NULL,
  225. PRIMARY KEY (`id`),
  226. UNIQUE KEY `company_id_name`(`company_id`,`name`),
  227. KEY `company_id` (`company_id`)
  228. ) ENGINE=INNODB DEFAULT CHARSET=latin1;
  229. CREATE TABLE `ticket_stage` (
  230. `id` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,
  231. `company_id` INT(10) UNSIGNED NOT NULL,
  232. `ticket_category_id` INT(10) UNSIGNED NOT NULL,
  233. `name` VARCHAR(127) NOT NULL,
  234. `closed` TINYINT(1) NOT NULL DEFAULT '0',
  235. `description` TEXT NOT NULL,
  236. PRIMARY KEY (`id`),
  237. UNIQUE KEY (`ticket_category_id`,`name`),
  238. KEY `company_id` (`company_id`,`ticket_category_id`),
  239. KEY `closed` (`closed`)
  240. ) ENGINE=INNODB DEFAULT CHARSET=latin1;
  241. CREATE TABLE `user` (
  242. `id` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,
  243. `company_id` INT(10) UNSIGNED NOT NULL,
  244. `usergroup_id` INT(10) UNSIGNED,
  245. `active` TINYINT(3) UNSIGNED NOT NULL DEFAULT '1',
  246. `username` VARCHAR(32) NOT NULL,
  247. `password` VARCHAR(40) NOT NULL,
  248. `lost_password` VARCHAR(40) NOT NULL,
  249. `name` VARCHAR(64) NOT NULL,
  250. `permissions` TEXT NOT NULL,
  251. `preferences` TEXT NOT NULL,
  252. `email` VARCHAR(64) NOT NULL,
  253. `warning` INT(10) UNSIGNED NOT NULL DEFAULT '0',
  254. `created` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
  255. `modified` TIMESTAMP NOT NULL DEFAULT '0000-00-00 00:00:00',
  256. PRIMARY KEY (`id`),
  257. UNIQUE KEY (`username`,`email`),
  258. KEY `company_id` (`company_id`),
  259. KEY `active` (`active`),
  260. KEY `usergroup_id` (`usergroup_id`)
  261. ) ENGINE=INNODB DEFAULT CHARSET=latin1;
  262. CREATE TABLE `usergroup` (
  263. `id` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,
  264. `company_id` INT(11) UNSIGNED NOT NULL,
  265. `name` VARCHAR(127) NOT NULL,
  266. `content` TEXT NOT NULL,
  267. `permissions` TEXT NOT NULL,
  268. PRIMARY KEY (`id`),
  269. UNIQUE KEY `company_id_name` (`company_id`,`name`),
  270. KEY `company_id` (`company_id`)
  271. ) ENGINE=INNODB DEFAULT CHARSET=latin1;
  272. CREATE TABLE `worktype` (
  273. `id` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,
  274. `company_id` INT(10) UNSIGNED NOT NULL,
  275. `name` VARCHAR(64) NOT NULL,
  276. `content` TEXT NOT NULL,
  277. `hourlyrate` DOUBLE(6,2) NOT NULL,
  278. PRIMARY KEY (`id`),
  279. KEY `company_id` (`company_id`)
  280. ) ENGINE=INNODB DEFAULT CHARSET=latin1;