-- -- Database 'property_manager' -- REVISIT : 20090511 -- Perhaps "Rent Master" instead of "Rent Manager" ? -- Perhaps "Property Master" ? -- Perhaps better to market under several names: -- "Self Storage Master", "Apartment Master", etc. -- AP: -- Originally authored for MySQL. -- However, requirements to consider / keep in mind: -- PostgreSQL: Don't want to be tied to ONLY MySQL. -- SQLite: Will likely require a standalone option. -- REVISIT : 20090511 -- I would like timestamps to note when things change, but -- I don't think we can rely on the magic of MySQL to update -- them, since we may be required to use other engines. -- At the moment, I'll keep the MySQL statements, but we -- may have to move this logic into the application :-/ DROP DATABASE IF EXISTS `property_manager`; CREATE DATABASE `property_manager`; USE `property_manager`; -- ###################################################################### -- ###################################################################### -- ###################################################################### -- ###################################################################### -- ###################################################################### -- ###################################################################### -- ###################################################################### -- ###################################################################### -- ###################################################################### -- ## -- ## SOFTWARE CONFIGURATION -- ## -- ---------------------------------------------------------------------- -- ---------------------------------------------------------------------- -- TABLE pmgr_config_system DROP TABLE IF EXISTS `pmgr_config_system`; CREATE TABLE `pmgr_config_system` ( `config_version_id` INT(10) UNSIGNED NOT NULL ) ENGINE=MyISAM DEFAULT CHARSET=utf8; LOCK TABLES `pmgr_config_system` WRITE; INSERT INTO `pmgr_config_system` (`config_version_id`) VALUES (1); UNLOCK TABLES; -- ---------------------------------------------------------------------- -- ---------------------------------------------------------------------- -- TABLE pmgr_config_versions DROP TABLE IF EXISTS `pmgr_config_versions`; CREATE TABLE `pmgr_config_versions` ( `id` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT, `schema` INT UNSIGNED NOT NULL DEFAULT 1, -- DB REVISION `major` INT UNSIGNED NOT NULL, `minor` INT UNSIGNED NOT NULL, `bugfix` INT UNSIGNED NOT NULL DEFAULT 0, -- REVISIT : 20090511 -- Should we just use the 'notes' table instead? `comment` VARCHAR(255) DEFAULT NULL, `stamp` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8; LOCK TABLES `pmgr_config_versions` WRITE; INSERT INTO `pmgr_config_versions` (`id`, `schema`, `major`, `minor`, `bugfix`, `stamp`, `comment`) VALUES (1, 1, 0, 1, 0, '2009-05-11 06:00', 'First revision'); UNLOCK TABLES; -- ---------------------------------------------------------------------- -- ---------------------------------------------------------------------- -- TABLE pmgr_config_options DROP TABLE IF EXISTS `pmgr_config_options`; CREATE TABLE `pmgr_config_options` ( `name` VARCHAR(50) NOT NULL, `value` VARCHAR(255) NOT NULL, `comment` VARCHAR(255) DEFAULT NULL, PRIMARY KEY (`name`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8; -- ###################################################################### -- ###################################################################### -- ###################################################################### -- ###################################################################### -- ###################################################################### -- ###################################################################### -- ###################################################################### -- ###################################################################### -- ###################################################################### -- ## -- ## CONTACTS (PEOPLE and COMPANIES) -- ## -- ---------------------------------------------------------------------- -- ---------------------------------------------------------------------- -- TABLE pmgr_contacts DROP TABLE IF EXISTS `pmgr_contacts`; CREATE TABLE `pmgr_contacts` ( `id` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT, `first_name` VARCHAR(255) DEFAULT NULL, `middle_name` VARCHAR(255) DEFAULT NULL, `last_name` VARCHAR(255) DEFAULT NULL, `company_name` VARCHAR(255) DEFAULT NULL, `display_name` VARCHAR(512) DEFAULT NULL, -- FEDERAL ID, e.g. SSN or EIN `id_federal` VARCHAR(16) DEFAULT NULL, -- STATE ID, e.g. drivers license `id_num` VARCHAR(16) DEFAULT NULL, `id_state` CHAR(2) DEFAULT NULL, `id_exp` DATE DEFAULT NULL, `comment` VARCHAR(255) DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8; -- ---------------------------------------------------------------------- -- ---------------------------------------------------------------------- -- TABLE pmgr_contact_addresses DROP TABLE IF EXISTS `pmgr_contact_addresses`; CREATE TABLE `pmgr_contact_addresses` ( `id` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT, `address` VARCHAR(255) DEFAULT NULL, `city` VARCHAR(255) DEFAULT NULL, `state` CHAR(2) DEFAULT NULL, -- REVISIT : Convert to ENUM `postcode` VARCHAR(12) DEFAULT NULL, `country` VARCHAR(128) DEFAULT NULL, -- REVISIT : Convert to ENUM `comment` VARCHAR(255) DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8; -- ---------------------------------------------------------------------- -- ---------------------------------------------------------------------- -- TABLE pmgr_contact_phones DROP TABLE IF EXISTS `pmgr_contact_phones`; CREATE TABLE `pmgr_contact_phones` ( `id` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT, `type` ENUM('LANDLINE', 'MOBILE', 'VIRTUAL', 'PAGER', 'FAX') NOT NULL DEFAULT 'LANDLINE', `phone` VARCHAR(18) NOT NULL, `ext` VARCHAR(6) DEFAULT NULL, `comment` VARCHAR(255) DEFAULT NULL, KEY `number_key` (`phone`), PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8; -- ---------------------------------------------------------------------- -- ---------------------------------------------------------------------- -- TABLE pmgr_contact_emails DROP TABLE IF EXISTS `pmgr_contact_emails`; CREATE TABLE `pmgr_contact_emails` ( `id` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT, `email` VARCHAR(128) NOT NULL, `comment` VARCHAR(255) DEFAULT NULL, KEY `email_key` (`email`), PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8; -- ---------------------------------------------------------------------- -- ---------------------------------------------------------------------- -- TABLE pmgr_contacts_methods DROP TABLE IF EXISTS `pmgr_contacts_methods`; CREATE TABLE `pmgr_contacts_methods` ( `contact_id` INT(10) UNSIGNED NOT NULL, `method` ENUM('POST', 'PHONE', 'EMAIL') NOT NULL, `method_id` INT(10) UNSIGNED NOT NULL, `type` ENUM('MAIN', 'HOME', 'BUSINESS', 'OTHER') NOT NULL DEFAULT 'MAIN', `preference` ENUM('PRIMARY', 'WORK', 'ALTERNATE', 'EMERGENCY') NOT NULL DEFAULT 'PRIMARY', -- `position` TINYINT UNSIGNED NOT NULL DEFAULT 1, `comment` VARCHAR(255) DEFAULT NULL, PRIMARY KEY (`contact_id`, `method`, `method_id`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8; -- ###################################################################### -- ###################################################################### -- ###################################################################### -- ###################################################################### -- ###################################################################### -- ###################################################################### -- ###################################################################### -- ###################################################################### -- ###################################################################### -- ## -- ## GROUPS -- ## -- ---------------------------------------------------------------------- -- ---------------------------------------------------------------------- -- TABLE pmgr_groups DROP TABLE IF EXISTS `pmgr_groups`; CREATE TABLE `pmgr_groups` ( `id` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT, -- REVISIT : 20090511 -- code may not be userful `code` VARCHAR(12) NOT NULL, -- User style "id" `name` VARCHAR(80) NOT NULL, `comment` VARCHAR(255) DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8; -- ---------------------------------------------------------------------- -- ---------------------------------------------------------------------- -- TABLE pmgr_group_options DROP TABLE IF EXISTS `pmgr_group_options`; CREATE TABLE `pmgr_group_options` ( `group_id` INT(10) UNSIGNED NOT NULL, `name` VARCHAR(50) NOT NULL, `value` VARCHAR(255) NOT NULL, `comment` VARCHAR(255) DEFAULT NULL, PRIMARY KEY (`group_id`, `name`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8; -- ---------------------------------------------------------------------- -- ---------------------------------------------------------------------- -- TABLE pmgr_group_permissions DROP TABLE IF EXISTS `pmgr_group_permissions`; CREATE TABLE `pmgr_group_permissions` ( `group_id` INT(10) UNSIGNED NOT NULL, `name` CHAR(30) NOT NULL, `access` ENUM('ALLOWED', 'DENIED', 'FORCED') NOT NULL DEFAULT 'ALLOWED', `comment` VARCHAR(255) DEFAULT NULL, PRIMARY KEY (`group_id`, `name`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8; -- ###################################################################### -- ###################################################################### -- ###################################################################### -- ###################################################################### -- ###################################################################### -- ###################################################################### -- ###################################################################### -- ###################################################################### -- ###################################################################### -- ## -- ## USERS -- ## -- ---------------------------------------------------------------------- -- ---------------------------------------------------------------------- -- TABLE pmgr_users DROP TABLE IF EXISTS `pmgr_users`; CREATE TABLE `pmgr_users` ( `id` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT, `code` VARCHAR(12) NOT NULL, -- User style "id" -- Login details. Passwords are not yet used (and so NULL). `login` VARCHAR(30) NOT NULL, `salt` CHAR(12) DEFAULT NULL, `passhash` VARCHAR(255) DEFAULT NULL, -- Contact information for this user `contact_id` INT(10) UNSIGNED NOT NULL, -- Specific comments `comment` VARCHAR(255) DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8; -- ---------------------------------------------------------------------- -- ---------------------------------------------------------------------- -- TABLE pmgr_user_options DROP TABLE IF EXISTS `pmgr_user_options`; CREATE TABLE `pmgr_user_options` ( `user_id` INT(10) UNSIGNED NOT NULL, `name` VARCHAR(50) NOT NULL, `value` VARCHAR(255) NOT NULL, `comment` VARCHAR(255) DEFAULT NULL, PRIMARY KEY (`user_id`, `name`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8; -- ###################################################################### -- ###################################################################### -- ###################################################################### -- ###################################################################### -- ###################################################################### -- ###################################################################### -- ###################################################################### -- ###################################################################### -- ###################################################################### -- ## -- ## SITES -- ## -- ---------------------------------------------------------------------- -- ---------------------------------------------------------------------- -- TABLE pmgr_sites DROP TABLE IF EXISTS `pmgr_sites`; CREATE TABLE `pmgr_sites` ( `id` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT, `code` VARCHAR(12) NOT NULL, -- User style "id" `name` VARCHAR(80) NOT NULL, `comment` VARCHAR(255) DEFAULT NULL, UNIQUE KEY `site_code` (`code`), PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8; -- ---------------------------------------------------------------------- -- ---------------------------------------------------------------------- -- TABLE pmgr_site_options DROP TABLE IF EXISTS `pmgr_site_options`; CREATE TABLE `pmgr_site_options` ( `site_id` INT(10) UNSIGNED NOT NULL, `name` VARCHAR(50) NOT NULL, `value` VARCHAR(255) NOT NULL, `comment` VARCHAR(255) DEFAULT NULL, PRIMARY KEY (`site_id`, `name`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8; -- ---------------------------------------------------------------------- -- ---------------------------------------------------------------------- -- TABLE pmgr_site_memberships -- -- Which users are allowed to access which sites, -- and under which set of group permissions (possibly multiple) -- SELECT U.id, P.name, MAX(P.access) -- FROM pmgr_users U -- LEFT JOIN pmgr_site_membership M ON M.user_id = U.id -- LEFT JOIN pmgr_groups G ON G.id = M.group_id -- LEFT JOIN pmgr_group_permissions P ON P.group_id = G.id -- GROUP BY U.id, P.name DROP TABLE IF EXISTS `pmgr_site_memberships`; CREATE TABLE `pmgr_site_memberships` ( `site_id` INT(10) UNSIGNED NOT NULL, `user_id` INT(10) UNSIGNED NOT NULL, `group_id` INT(10) UNSIGNED NOT NULL, `comment` VARCHAR(255) DEFAULT NULL, PRIMARY KEY (`site_id`, `user_id`, `group_id`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8; -- ---------------------------------------------------------------------- -- ---------------------------------------------------------------------- -- TABLE pmgr_site_areas DROP TABLE IF EXISTS `pmgr_site_areas`; CREATE TABLE `pmgr_site_areas` ( `id` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT, `site_id` INT(10) UNSIGNED NOT NULL, `code` VARCHAR(12) NOT NULL, -- User style "id" `name` VARCHAR(80) NOT NULL, `comment` VARCHAR(255) DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8; -- ###################################################################### -- ###################################################################### -- ###################################################################### -- ###################################################################### -- ###################################################################### -- ###################################################################### -- ###################################################################### -- ###################################################################### -- ###################################################################### -- ## -- ## UNITS -- ## -- ---------------------------------------------------------------------- -- ---------------------------------------------------------------------- -- TABLE pmgr_unit_types DROP TABLE IF EXISTS `pmgr_unit_types`; CREATE TABLE `pmgr_unit_types` ( `id` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT, `code` VARCHAR(12) NOT NULL, -- User style "id" `name` VARCHAR(80) NOT NULL, `comment` VARCHAR(255) DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8; -- ---------------------------------------------------------------------- -- ---------------------------------------------------------------------- -- TABLE pmgr_unit_sizes DROP TABLE IF EXISTS `pmgr_unit_sizes`; CREATE TABLE `pmgr_unit_sizes` ( `id` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT, `unit_type_id` INT(10) UNSIGNED NOT NULL, `code` VARCHAR(12) NOT NULL, -- User style "id" `name` VARCHAR(80) NOT NULL, `width` SMALLINT UNSIGNED NOT NULL, -- inches `depth` SMALLINT UNSIGNED NOT NULL, -- inches `height` SMALLINT UNSIGNED DEFAULT NULL, -- inches `comment` VARCHAR(255) DEFAULT NULL, `deposit` FLOAT(12,2) DEFAULT NULL, `amount` FLOAT(12,2) DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8; -- ---------------------------------------------------------------------- -- ---------------------------------------------------------------------- -- TABLE pmgr_units DROP TABLE IF EXISTS `pmgr_units`; CREATE TABLE `pmgr_units` ( `id` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT, `unit_size_id` INT(10) UNSIGNED NOT NULL, `code` VARCHAR(12) NOT NULL, -- User style "id" `name` VARCHAR(80) NOT NULL, `status` ENUM('DELETED', 'DAMAGED', 'COMPANY', 'UNAVAILABLE', 'RESERVED', 'DIRTY', 'VACANT', 'OCCUPIED', 'LATE', -- NOT SURE 'LOCKED', 'LIENED') NOT NULL DEFAULT 'VACANT', `sort_order` MEDIUMINT UNSIGNED NOT NULL, `walk_order` MEDIUMINT UNSIGNED NOT NULL, `deposit` FLOAT(12,2) DEFAULT NULL, `amount` FLOAT(12,2) DEFAULT NULL, `comment` VARCHAR(255) DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8; -- ###################################################################### -- ###################################################################### -- ###################################################################### -- ###################################################################### -- ###################################################################### -- ###################################################################### -- ###################################################################### -- ###################################################################### -- ###################################################################### -- ## -- ## ACTIONS -- ## -- ---------------------------------------------------------------------- -- ---------------------------------------------------------------------- -- TABLE pmgr_actions DROP TABLE IF EXISTS `pmgr_actions`; CREATE TABLE `pmgr_actions` ( `id` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT, `action` ENUM('LETTER', 'GATELOCK', 'OVERLOCK', 'LIEN', 'AUCTION') NOT NULL, -- Which letter, or other specific action? -- REVISIT : Are there other specific actions? `item_id` INT(10) UNSIGNED DEFAULT NULL, `name` VARCHAR(80) NOT NULL, `comment` VARCHAR(255) DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8; -- ---------------------------------------------------------------------- -- ---------------------------------------------------------------------- -- TABLE pmgr_late_schedules DROP TABLE IF EXISTS `pmgr_late_schedules`; CREATE TABLE `pmgr_late_schedules` ( `id` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT, `code` VARCHAR(12) NOT NULL, -- User style "id" `name` VARCHAR(80) NOT NULL, `comment` VARCHAR(255) DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8; -- ---------------------------------------------------------------------- -- ---------------------------------------------------------------------- -- TABLE pmgr_actions_late_schedules DROP TABLE IF EXISTS `pmgr_actions_late_schedules`; CREATE TABLE `pmgr_actions_late_schedules` ( `id` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT, `late_schedule_id` INT(10) UNSIGNED DEFAULT NULL, `days_past_due` SMALLINT NOT NULL, `recurring` TINYINT DEFAULT 0, `action_id` INT(10) UNSIGNED DEFAULT NULL, -- REVISIT : 20090513 -- Should we have a specific fee list, or just use account -- `fee_id` INT(10) UNSIGNED DEFAULT NULL, `account_id` INT(10) UNSIGNED DEFAULT NULL, `amount` FLOAT(12,2) DEFAULT NULL, `tax` FLOAT(12,2) DEFAULT NULL, `name` VARCHAR(80) NOT NULL, `comment` VARCHAR(255) DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8; -- ###################################################################### -- ###################################################################### -- ###################################################################### -- ###################################################################### -- ###################################################################### -- ###################################################################### -- ###################################################################### -- ###################################################################### -- ###################################################################### -- ## -- ## LEASES -- ## -- ---------------------------------------------------------------------- -- ---------------------------------------------------------------------- -- TABLE pmgr_lease_types DROP TABLE IF EXISTS `pmgr_lease_types`; CREATE TABLE `pmgr_lease_types` ( `id` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT, `code` VARCHAR(12) NOT NULL, -- User style "id" `name` VARCHAR(80) NOT NULL, `comment` VARCHAR(255) DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8; -- ---------------------------------------------------------------------- -- ---------------------------------------------------------------------- -- TABLE pmgr_leases DROP TABLE IF EXISTS `pmgr_leases`; CREATE TABLE `pmgr_leases` ( `id` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT, -- Allow user to specify their own lease numbers -- If NULL, `id` will be used `number` VARCHAR(20) DEFAULT NULL, `lease_type_id` INT(10) UNSIGNED NOT NULL, `unit_id` INT(10) UNSIGNED NOT NULL, `late_schedule_id` INT(10) UNSIGNED DEFAULT NULL, `lease_date` DATE NOT NULL, `movein_planed_date` DATE DEFAULT NULL, `movein_date` DATE DEFAULT NULL, `moveout_date` DATE DEFAULT NULL, `moveout_planed_date` DATE DEFAULT NULL, `notice_given_date` DATE DEFAULT NULL, `notice_received_date` DATE DEFAULT NULL, `close_date` DATE DEFAULT NULL, `deposit` FLOAT(12,2) DEFAULT NULL, `amount` FLOAT(12,2) DEFAULT NULL, `next_amount` FLOAT(12,2) DEFAULT NULL, `next_amount_date` DATE DEFAULT NULL, `comment` VARCHAR(255) DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8; -- ---------------------------------------------------------------------- -- ---------------------------------------------------------------------- -- TABLE pmgr_contacts_leases DROP TABLE IF EXISTS `pmgr_contacts_leases`; CREATE TABLE `pmgr_contacts_leases` ( `lease_id` INT(10) UNSIGNED NOT NULL, `contact_id` INT(10) UNSIGNED NOT NULL, -- What type of contact is this for the lease? `type` ENUM('TENANT', -- PRIMARY TENANT 'COTENANT', -- ADDITIONAL TENANT 'ALTERNATE') -- ALTERNATE CONTACT ONLY NOT NULL DEFAULT 'TENANT', -- If the tenant is removed as part of the lease `active` TINYINT DEFAULT 1, `comment` VARCHAR(255) DEFAULT NULL, PRIMARY KEY (`lease_id`, `contact_id`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8; -- ###################################################################### -- ###################################################################### -- ###################################################################### -- ###################################################################### -- ###################################################################### -- ###################################################################### -- ###################################################################### -- ###################################################################### -- ###################################################################### -- ## -- ## FINANCIAL ACCOUNTS -- ## -- ---------------------------------------------------------------------- -- ---------------------------------------------------------------------- -- TABLE pmgr_accounts DROP TABLE IF EXISTS `pmgr_accounts`; CREATE TABLE `pmgr_accounts` ( `id` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT, `name` VARCHAR(80) NOT NULL, `external_name` VARCHAR(80) NOT NULL, `comment` VARCHAR(255) DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8; -- ###################################################################### -- ###################################################################### -- ###################################################################### -- ###################################################################### -- ###################################################################### -- ###################################################################### -- ###################################################################### -- ###################################################################### -- ###################################################################### -- ## -- ## CHARGES -- ## -- ---------------------------------------------------------------------- -- ---------------------------------------------------------------------- -- TABLE pmgr_charge_types DROP TABLE IF EXISTS `pmgr_charge_types`; CREATE TABLE `pmgr_charge_types` ( `id` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT, `name` VARCHAR(80) NOT NULL, `comment` VARCHAR(255) DEFAULT NULL, `account_id` INT(10) UNSIGNED NOT NULL, -- quickbooks tracking PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8; LOCK TABLES `pmgr_charge_types` WRITE; INSERT INTO `pmgr_charge_types` (`id`, `name`, `account_id`) VALUES (1, 'Security Deposit', 0), (2, 'Rent', 0), (3, 'Late Charge', 0); UNLOCK TABLES; -- ---------------------------------------------------------------------- -- ---------------------------------------------------------------------- -- TABLE pmgr_charges DROP TABLE IF EXISTS `pmgr_charges`; CREATE TABLE `pmgr_charges` ( `id` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT, `charge_type_id` INT(10) UNSIGNED NOT NULL, `lease_id` INT(10) UNSIGNED NOT NULL, `charge_date` DATE NOT NULL, `charge_to_date` DATE DEFAULT NULL, `due_date` DATE DEFAULT NULL, `amount` FLOAT(12,2) NOT NULL, `tax` FLOAT(12,2) NOT NULL, `total` FLOAT(12,2) NOT NULL, `comment` VARCHAR(255) DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8; -- ###################################################################### -- ###################################################################### -- ###################################################################### -- ###################################################################### -- ###################################################################### -- ###################################################################### -- ###################################################################### -- ###################################################################### -- ###################################################################### -- ## -- ## PAYMENTS -- ## -- ---------------------------------------------------------------------- -- ---------------------------------------------------------------------- -- TABLE pmgr_payment_types DROP TABLE IF EXISTS `pmgr_payment_types`; CREATE TABLE `pmgr_payment_types` ( `id` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT, `name` VARCHAR(80) NOT NULL, `comment` VARCHAR(255) DEFAULT NULL, `tillable` TINYINT(1) NOT NULL DEFAULT 1, -- Does manager collect by hand? PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8; LOCK TABLES `pmgr_payment_types` WRITE; INSERT INTO `pmgr_payment_types` (`id`, `name`, `tillable`) VALUES (1, 'Cash', 1), (2, 'Check', 1), (3, 'Money Order', 1), (4, 'ACH', 0), (5, 'Debit Card', 0), (6, 'Credit Card', 0), (7, 'Other Tillable', 1), (8, 'Other Non-Tillable', 0); UNLOCK TABLES; -- ---------------------------------------------------------------------- -- ---------------------------------------------------------------------- -- TABLE pmgr_payments DROP TABLE IF EXISTS `pmgr_payments`; CREATE TABLE `pmgr_payments` ( `id` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT, `receipt_id` INT(10) UNSIGNED NOT NULL, `payment_type_id` INT(10) UNSIGNED NOT NULL, `amount` FLOAT(12,2) NOT NULL, `comment` VARCHAR(255) DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8; -- ###################################################################### -- ###################################################################### -- ###################################################################### -- ###################################################################### -- ###################################################################### -- ###################################################################### -- ###################################################################### -- ###################################################################### -- ###################################################################### -- ## -- ## RECEIPTS -- ## -- # Charge -- # - Issued against customer lease -- # - associated with account (i.e. QuickBooks account / category) -- # Receipt -- # - Collections of payments paid at one time -- # Payment -- # - Credited towards customer (or lease?) -- # - may be more than customer owes -- # - cash/check/charge/ach/etc -- # Reconciliation -- # - Associates a payment with the charge -- # - Indicates amount of credit towards charge -- # - Payments may cover several charges -- # - Several payments may cover the same charge -- Which charges haven not been paid? -- SELECT C.id AS cid, C.total AS total, COALESCE(SUM(R.amount),0) AS paid -- FROM pmgr_charges C -- LEFT JOIN pmgr_charges_receipts R ON R.charge_id = C.id -- GROUP BY C.id -- HAVING paid < C.total -- SELECT ChL.lid AS lid, U.name, C.display_name, -- SUM(ChL.total) AS total, SUM(ChL.paid) AS paid, -- SUM(ChL.total) - SUM(ChL.paid) AS owing -- FROM (SELECT Ch.lease_id AS lid, Ch.total AS total, COALESCE(SUM(R.amount),0) AS paid -- FROM pmgr_charges Ch -- LEFT JOIN pmgr_charges_receipts R ON R.charge_id = Ch.id -- WHERE Ch.due_date < NOW() -- GROUP BY Ch.id -- HAVING paid < Ch.total) ChL -- LEFT JOIN pmgr_leases L ON L.id = ChL.lid -- LEFT JOIN pmgr_lease_contacts Lc ON Lc.lease_id = L.id AND Lc.type = 'TENANT' -- LEFT JOIN pmgr_contacts C ON C.id = Lc.contact_id -- LEFT JOIN pmgr_units U ON U.id = L.unit_id -- ---------------------------------------------------------------------- -- ---------------------------------------------------------------------- -- TABLE pmgr_receipts DROP TABLE IF EXISTS `pmgr_receipts`; CREATE TABLE `pmgr_receipts` ( `id` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT, `stamp` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, `comment` VARCHAR(255) DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8; -- ---------------------------------------------------------------------- -- ---------------------------------------------------------------------- -- TABLE pmgr_charges_receipts DROP TABLE IF EXISTS `pmgr_charges_receipts`; CREATE TABLE `pmgr_charges_receipts` ( `id` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT, `charge_id` INT(10) UNSIGNED NOT NULL, -- REVISIT : 20090514 -- THIS SHOULD BE RECEIPT_ID, NOT PAYMENT_ID, RIGHT?? `receipt_id` INT(10) UNSIGNED NOT NULL, `amount` FLOAT(12,2) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8; -- ###################################################################### -- ###################################################################### -- ###################################################################### -- ###################################################################### -- ###################################################################### -- ###################################################################### -- ###################################################################### -- ###################################################################### -- ###################################################################### -- ## -- ## SITE MAPS -- ## -- ---------------------------------------------------------------------- -- ---------------------------------------------------------------------- -- TABLE pmgr_maps DROP TABLE IF EXISTS `pmgr_maps`; CREATE TABLE `pmgr_maps` ( `id` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT, `site_area_id` INT(10) UNSIGNED NOT NULL, `name` VARCHAR(80) DEFAULT NULL, `comment` VARCHAR(255) DEFAULT NULL, `width` SMALLINT UNSIGNED NOT NULL, -- inches `depth` SMALLINT UNSIGNED NOT NULL, -- inches PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8; -- ---------------------------------------------------------------------- -- ---------------------------------------------------------------------- -- TABLE pmgr_maps_units DROP TABLE IF EXISTS `pmgr_maps_units`; CREATE TABLE `pmgr_maps_units` ( `id` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT, `map_id` INT(10) UNSIGNED NOT NULL, `unit_id` INT(10) UNSIGNED NOT NULL, `pt_top` SMALLINT UNSIGNED NOT NULL, -- inches `pt_left` SMALLINT UNSIGNED NOT NULL, -- inches -- `pt_bottom` SMALLINT UNSIGNED NOT NULL, -- inches -- `pt_right` SMALLINT UNSIGNED NOT NULL, -- inches `transpose` SMALLINT UNSIGNED NOT NULL, PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8; -- ###################################################################### -- ###################################################################### -- ###################################################################### -- ###################################################################### -- ###################################################################### -- ###################################################################### -- ###################################################################### -- ###################################################################### -- ###################################################################### -- ## -- ## NOTES -- ## -- ---------------------------------------------------------------------- -- ---------------------------------------------------------------------- -- TABLE pmgr_notes DROP TABLE IF EXISTS `pmgr_notes`; CREATE TABLE `pmgr_notes` ( `id` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT, -- HISTORY is a note created by the system, when the -- user changes a setting or field that has been -- flagged for tracking. -- USER is a manually entered note. `type` ENUM('HISTORY', 'USER') NOT NULL DEFAULT 'USER', -- `item` references the object type, and `item_id` denotes -- the specific object to which this note is attached `item_id` INT(10) UNSIGNED NOT NULL, `item` ENUM('OPTION', 'UNIT_TYPE', 'UNIT_SIZE', 'UNIT', 'CUSTOMER', 'SITE', 'SITE_AREA', 'USER') -- etc, etc NOT NULL, -- Text of the recorded note `note` TEXT, -- User that made this note, or if HISTORY, made the change `user_id` INT(10) UNSIGNED NOT NULL, `stamp` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8;