Yellow Bike Project Hours and Transaction Database for Community Bike Shops
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

165 lines
8.8 KiB

-- This is probably the first documentation ever created for this project!
-- (adjusted while developing, usually at the docker instance - https://github.com/fspc/ybdb )
-- Add shop_locations and shop_types
DELETE FROM shop_locations;
INSERT INTO shop_locations (shop_location_id, date_established, active) VALUES
("Positive Spin", "2005-11-09",1),
("Plan B", "2000-01-01", 1),
("Third Hand", "2003-01-01", 1),
("Austin Yellow Bike Project", "1997-01-01", 1);
-- Mechanic Operation Shop & Volunteer Run Shop are both special types of shops for shop_log.php
-- The are hardwired in MySQL Views and are used for METRIC Statistics
DELETE FROM shop_types;
INSERT INTO shop_types (shop_type_id, list_order) VALUES
("Open Shop", 1),
("Bike Education", 4),
("Volunteer Only", 2),
("Meeting", 3 ),
("Mechanic Operation Shop", 5),
("Volunteer Run Shop", 6),
("Other", 7);
-- Add shop user roles to shop_user_roles
-- sales == 1 if you want a role to be able to do sales
-- volunteer == 1 if you want to keep track of volunteer hours
-- paid == 1 if you want to track staff/employee and stats
--
-- default select value for shop user may be set in Connections/database_functions.php,
-- a shop_type_id with the same name needs to exist in order for this to work.
DELETE FROM shop_user_roles;
INSERT INTO shop_user_roles (
shop_user_role_id, hours_rank, volunteer, sales, paid
) VALUES
("Coordinator",0,0,1,0),
("Personal",0,0,0,0),
("Volunteer",0,1,0,0),
("Greeter",0,0,1,0),
10 years ago
("Staff",0,0,1,1),
("Student Volunteer",0,0,0,0),
("Shopping",0,0,0,0);
-- Add some projects to projects
DELETE FROM projects;
INSERT INTO projects (project_id, date_established, active, public) VALUES
("","",1,1),
("Bike Building", "2014-12-13", 1, 1),
("Computers", "2014-12-13", 1, 1),
("Inventory", "2014-12-13", 1, 1),
("Organization", "2014-12-13", 1, 1),
("Website", "2014-12-13", 1, 1),
("Toy Give-Away", "2014-12-13", 1, 1);
-- (not a requirement) Add some people to contacts
-- easy solution -
-- select GROUP_CONCAT(COLUMN_NAME) from information_schema.COLUMNS where TABLE_NAME='contacts'
-- Then take that output and find the values ..
-- SELECT CONCAT_WS('","', col1, col2, ..., coln) FROM my_table;
DELETE FROM shop_hours;
DELETE FROM contacts;
ALTER TABLE contacts AUTO_INCREMENT = 1;
INSERT INTO contacts (
contact_id, first_name, middle_initial, last_name, email, phone, address1,
address2, city, state, country, receive_newsletter, date_created,
invited_newsletter, DOB, pass, zip, hidden, location_name, location_type
) VALUES
(1,"Jonathan","","Rosenbaum","info@positivespin.org","","","","Morgantown","WV","","1","2014-12-12 18:19:35",0,"2005-11-09","test","26501","0","",NULL);
-- Set-up transaction types
-- This is object orienteed like :)
--
-- TEXT FIELDS (some presentation logic that is in the business logic, rather than kept cleanly separated from it)
-- Although, there are some advantages to this approach.
-- NOTE - (:colon is appended by default:)
--
-- fieldname_date: text field for the day the transaction transpires, e.g. "Sale Date"
-- fieldname_soldby: text field for the sales person (see shop_user_roles table) who performs the sale
-- message_transaction_id: text field after transaction_id .. seems pointless
-- fieldname_soldto: text field for person being sold to, e.g. "Sold To"
-- show_soldto_location: while not a presentation, without it, previous field is useless. (Also, see discussion about location)
-- fieldname_description: text field for description text area, e.g. "Description"
--
-- DISCUSSION ABOUT LOCATIONS in transaction_log.php
-- show_soldto_location is now used to show patrons. The history of this name is
-- that YBP was using it to keep track of donation locations. However, there is an
-- option in transaction_log.php that would show current shop users that was
-- commented out. Not sure what the usefullness of location_add_edit_select.php is yet.
-- With that thought, need more than 1 shop with its own accounting? Run a different instance of YBDB.
--
-- USELESS or RESERVED FIELDS
-- show_soldto and show_soldby currently do not do anything,
-- and not what you think they would do either :)
--
-- METRICS - Transaction Types (built-in names) to add to make Metrics work properly:
-- MySQL Views have these built-in.
-- "Metrics - Completed Mechanic Operation Bike" (quantity must be 1)
-- "Metrics - Completed Mechanic Operation Wheel"
-- "Metrics - New Parts on a Completed Bike"
-- "Sale - Used Parts"
-- "Sale - New Parts"
-- "Sale - Complete Bike"
--
-- Note: good news, default select value for transaction types may be set in Connections/database_functions.php
--
-- Sales Tax Report - Hardwired Caveat: The same value used for accounting_group
-- needs to be defined in Connections/database_functions.php - ACCOUNTING_GROUP
--
-- STORAGE TRANSACTION
-- show_startdate - is used by transactions where an item (usually a bicycle) is stored for
-- a defined period before it is purchased. If this is set,
-- the behavior is to hide price (show_amount) and payment types (show_payment)
-- until a date (label defined by fieldname_date) is entered.
--
-- Storage period may be defined in Connections/database_functions.php - STORAGE_PERIOD
--
-- DEPOSITS
-- Deposit (transaction_type_id) is a special transaction type that behaves differently in the log
-- for a good reason.
ALTER TABLE transaction_types ADD show_payment tinyint(1) NOT NULL DEFAULT '1';
INSERT INTO transaction_types
(transaction_type_id, rank,
active, community_bike, show_transaction_id, show_type, show_startdate,
show_amount, show_description, show_soldto, show_soldby,
fieldname_date, fieldname_soldby, message_transaction_id,
fieldname_soldto, show_soldto_location, fieldname_description,
accounting_group, show_payment
) VALUES
("Build Your Own Bike", 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, "Sale Date", "Sold By"," ", "Sold To", 1, "Description", "Sales", 1),
("Bicycles", 2, 1, 1, 1, 1, 0, 1, 1, 1, 1, "Sale Date", "Sold By"," ", "Sold To", 1, "Description", "Sales", 1),
("Non-inventory Parts", 3, 1, 1, 1, 1, 0, 1, 1, 1, 1, "Sale Date", "Sold By"," ", "Sold To", 1, "Description", "Sales", 1),
("Trade-ups/Ins", 4, 1, 1, 1, 1, 0, 1, 1, 1, 1, "Sale Date", "Sold By"," ", "Sold To", 1, "Description", "Sales", 1),
("Helmets", 5, 1, 1, 1, 1, 0, 1, 1, 1, 1, "Sale Date", "Sold By"," ", "Sold To", 1, "Description", "Sales", 1),
("Donations", 6, 1, 0, 1, 1, 0, 1, 1, 1, 1, "Sale Date", "Sold By"," ", "Sold To", 1, "Description", "Sales", 1),
("Memberships", 7, 1, 1, 1, 1, 0, 1, 1, 1, 1, "Sale Date", "Sold By"," ", "Sold To", 1, "Description", "Sales", 1),
("Inventory Parts", 8, 1, 1, 1, 1, 0, 1, 1, 1, 1, "Sale Date", "Sold By"," ", "Sold To", 1, "Description", "Sales", 1),
("Cargo Related", 9, 1, 1, 1, 1, 0, 1, 1, 1, 1, "Sale Date", "Sold By"," ", "Sold To", 1, "Description", "Sales", 1),
("Car Racks", 10, 1, 1, 1, 1, 0, 1, 1, 1, 1, "Sale Date", "Sold By"," ", "Sold To", 1, "Description", "Sales", 1),
("DIY Repairs", 11, 1, 1, 1, 1, 0, 1, 1, 1, 1, "Sale Date", "Sold By"," ", "Sold To", 1, "Description", "Sales", 1),
("Accounts Receivable Invoice", 12, 1, 1, 1, 1, 0, 1, 1, 1, 1, "Sale Date", "Sold By"," ", "Sold To", 1, "Description", "Sales", 0),
("Accounts Receivable Payment", 13, 1, 1, 1, 1, 0, 1, 1, 1, 1, "Sale Date", "Sold By"," ", "Sold To", 1, "Description", "Sales", 1),
("Deposit", 14, 1, 0, 1, 1, 0, 1, 1, 1, 1, "Deposit Date", "Deposited By"," ", "", 0, "Description", "Sales", 0),
("Metrics - Completed Mechanic Operation Bike", 15, 1, 0, 1, 1, 0, 1, 1, 1, 1, "Sale Date", "Sold By"," ", "Sold To", 1, "Description", "Sales", 1),
("Metrics - Completed Mechanic Operation Wheel", 16, 1, 1, 1, 1, 0, 1, 1, 1, 1, "Sale Date", "Sold By"," ", "Sold To", 1, "Description", "Sales", 1),
10 years ago
("Metrics - New Parts on a Completed Bike", 17, 1, 1, 1, 1, 0, 1, 1, 1, 1, "Sale Date", "Sold By"," ", "Sold To", 1, "Description", "Sales", 1),
("Sale - Used Parts", 18, 1, 1, 1, 1, 0, 1, 1, 1, 1, "Sale Date", "Sold By"," ", "Sold To", 1, "Description", "Sales", 1),
("Sale - New Parts", 19, 1, 1, 1, 1, 0, 1, 1, 1, 1, "Sale Date", "Sold By"," ", "Sold To", 1, "Description", "Sales", 1),
("Sale - Complete Bike", 20, 1, 0, 1, 1, 0, 1, 1, 1, 1, "Sale Date", "Sold By"," ", "Sold To", 1, "Description", "Sales", 1),
("Giveaway", 21, 1, 0, 1, 1, 0, 0, 1, 1, 1, "Sale Date", "Given By"," ", "Given To", 1, "Description", "Sales", 0);
-- transaction_log - added paid or not
-- - added payment_type (cash, check or cc)
-- - added check_number (Check#)
-- transaction_id, date_startstorage, date,transaction_type, amount,
-- description, sold_to, sold_by, quantity, shop_id, paid
ALTER TABLE transaction_log ADD paid tinyint(1) NOT NULL DEFAULT '0';
ALTER TABLE transaction_log ADD payment_type varchar(6) DEFAULT NULL;
ALTER TABLE transaction_log ADD check_number int(10) unsigned DEFAULT NULL;