From 2b70762b7a58c8f9254d18dc577f736ead6d74d6 Mon Sep 17 00:00:00 2001 From: jekkos Date: Wed, 20 Jan 2016 18:47:44 +0100 Subject: [PATCH] Use ubuntu trusty for Docker container + add startup scripts (#284) Add Grunt concatenate for sql scripts (migrate + db init) (#289) --- Dockerfile | 13 +- Gruntfile.js | 26 +- database/database.sql | 861 ++++++++++++++++++++++++++- database/migrate_phppos_dist.sql | 964 +++++++++++++++++++++++++++++++ database/phppos_migrate.sql | 3 - foreground.sh | 9 + start_container.sh | 1 + supervisor.conf | 147 +++++ supervisord.conf | 147 +++++ 9 files changed, 2146 insertions(+), 25 deletions(-) create mode 100644 database/migrate_phppos_dist.sql create mode 100644 foreground.sh create mode 100644 supervisor.conf create mode 100644 supervisord.conf diff --git a/Dockerfile b/Dockerfile index 07aa6ddec..7772184d5 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,16 +1,23 @@ -FROM jbfink/docker-lampstack +FROM ubuntu:trusty MAINTAINER jekkos +RUN apt-get update +RUN apt-get -y upgrade +RUN DEBIAN_FRONTEND=noninteractive apt-get -y install mysql-client mysql-server apache2 libapache2-mod-php5 pwgen python-setuptools vim-tiny php5-mysql +RUN easy_install supervisor +ADD ./foreground.sh /etc/apache2/foreground.sh +ADD ./supervisord.conf /etc/supervisord.conf +RUN chmod 755 /etc/apache2/foreground.sh # Install dependencies RUN apt-get install -y --no-install-recommends software-properties-common RUN apt-get install -y python git -RUN apt-get update # RUN add-apt-repository ppa:chris-lea/node.js +# RUN apt-get update && apt-get dist-upgrade # Get latest Ospos source from Git RUN git clone https://github.com/jekkos/opensourcepos.git /app # RUN cd app && npm install -RUN ln -fs /app/* /var/www +RUN ln -fs /app/* /var/www/html ADD ./start_container.sh /start_container.sh RUN chmod 755 /start_container.sh EXPOSE 80 3306 diff --git a/Gruntfile.js b/Gruntfile.js index e85a83789..4f8cf6877 100644 --- a/Gruntfile.js +++ b/Gruntfile.js @@ -3,14 +3,26 @@ module.exports = function(grunt) { grunt.initConfig({ pkg: grunt.file.readJSON('package.json'), concat: { - options: { - separator: ';' - }, - dist: { - src: ['js/jquery*', 'js/*.js'], - dest: 'dist/<%= pkg.name %>.js' - } + js: { + options: { + separator: ';' + }, + dist: { + src: ['js/jquery*', 'js/*.js'], + dest: 'dist/<%= pkg.name %>.js' + } + }, + sql: { + options: { + banner: '-->> This file is autogenerated from tables.sql and constraints.sql. Do not modify directly <<--' + }, + files: { + 'database/database.sql': ['database/tables.sql', 'database/constraints.sql'], + 'database/migrate_phppos_dist.sql': ['database/tables.sql', 'database/phppos_migrate.sql', 'database/constraints.sql'] + } + } }, + uglify: { options: { banner: '/*! <%= pkg.name %> <%= grunt.template.today("dd-mm-yyyy") %> */\n' diff --git a/database/database.sql b/database/database.sql index 4900e5153..d120b1fdb 100644 --- a/database/database.sql +++ b/database/database.sql @@ -1,15 +1,852 @@ --- phpMyAdmin SQL Dump --- version 3.3.9 --- http://www.phpmyadmin.net +-->> This file is autogenerated from tables.sql and constraints.sql. Do not modify directly <<-- -- --- Host: localhost --- Generation Time: Apr 08, 2011 at 04:27 PM --- Server version: 5.1.54 --- PHP Version: 5.3.3 - --- --- Database: `pos` +-- Table structure for table `ospos_app_config` -- -SOURCE tables.sql; -SOURCE constraints.sql; +CREATE TABLE `ospos_app_config` ( + `key` varchar(255) NOT NULL, + `value` varchar(255) NOT NULL, + PRIMARY KEY (`key`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; + +-- +-- Dumping data for table `ospos_app_config` +-- + +INSERT INTO `ospos_app_config` (`key`, `value`) VALUES +('address', '123 Nowhere street'), +('company', 'Open Source Point of Sale'), +('default_tax_rate', '8'), +('email', 'admin@pappastech.com'), +('fax', ''), +('phone', '555-555-5555'), +('return_policy', 'Test'), +('timezone', 'America/New_York'), +('website', ''), +('recv_invoice_format', '$CO'), +('sales_invoice_format', '$CO'), +('tax_included', '0'), +('invoice_default_comments', 'This is a default comment'), +('company_logo', ''), +('barcode_content', 'id'), +('barcode_type', 'Code39'), +('barcode_width', '250'), +('barcode_height', '50'), +('barcode_quality', '100'), +('barcode_font', 'Arial'), +('barcode_font_size', '10'), +('barcode_first_row', 'category'), +('barcode_second_row', 'item_code'), +('barcode_third_row', 'unit_price'), +('barcode_num_in_row', '2'), +('barcode_page_width', '100'), +('barcode_page_cellspacing', '20'), +('barcode_generate_if_empty', '0'), +('receipt_show_taxes', '0'), +('use_invoice_template', '1'), +('invoice_email_message', 'Dear $CU, In attachment the receipt for sale $INV'), +('print_silently', '1'), +('print_header', '0'), +('print_footer', '0'), +('print_top_margin', '0'), +('print_left_margin', '0'), +('print_bottom_margin', '0'), +('print_right_margin', '0'), +('default_sales_discount', '0'), +('lines_per_page', '25'), +('show_total_discount', '1'), +('dateformat', 'm/d/Y'), +('timeformat', 'H:i:s'), +('currency_symbol', '$'); + +-- -------------------------------------------------------- + +-- +-- Table structure for table `ospos_customers` +-- + +CREATE TABLE `ospos_customers` ( + `person_id` int(10) NOT NULL, + `company_name` varchar(255) DEFAULT NULL, + `account_number` varchar(255) DEFAULT NULL, + `taxable` int(1) NOT NULL DEFAULT '1', + `deleted` int(1) NOT NULL DEFAULT '0', + UNIQUE KEY `account_number` (`account_number`), + KEY `person_id` (`person_id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; + +-- +-- Dumping data for table `ospos_customers` +-- + + +-- -------------------------------------------------------- + +-- +-- Table structure for table `ospos_employees` +-- + +CREATE TABLE `ospos_employees` ( + `username` varchar(255) NOT NULL, + `password` varchar(255) NOT NULL, + `person_id` int(10) NOT NULL, + `deleted` int(1) NOT NULL DEFAULT '0', + UNIQUE KEY `username` (`username`), + KEY `person_id` (`person_id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; + +-- +-- Dumping data for table `ospos_employees` +-- + +INSERT INTO `ospos_employees` (`username`, `password`, `person_id`, `deleted`) VALUES +('admin', '439a6de57d475c1a0ba9bcb1c39f0af6', 1, 0); + +-- -------------------------------------------------------- + +-- +-- Table structure for table `ospos_giftcards` +-- + +CREATE TABLE `ospos_giftcards` ( + `record_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, + `giftcard_id` int(11) NOT NULL AUTO_INCREMENT, + `giftcard_number` int(10) NOT NULL, + `value` decimal(15,2) NOT NULL, + `deleted` int(1) NOT NULL DEFAULT '0', + `person_id` INT(10) DEFAULT NULL, + PRIMARY KEY (`giftcard_id`), + UNIQUE KEY `giftcard_number` (`giftcard_number`), + KEY `person_id` (`person_id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; + +-- +-- Dumping data for table `ospos_giftcards` +-- + + +-- -------------------------------------------------------- + +-- +-- Table structure for table `ospos_inventory` +-- + +CREATE TABLE `ospos_inventory` ( + `trans_id` int(11) NOT NULL AUTO_INCREMENT, + `trans_items` int(11) NOT NULL DEFAULT '0', + `trans_user` int(11) NOT NULL DEFAULT '0', + `trans_date` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, + `trans_comment` text NOT NULL, + `trans_location` int(11) NOT NULL, + `trans_inventory` int(11) NOT NULL DEFAULT '0', + PRIMARY KEY (`trans_id`), + KEY `trans_items` (`trans_items`), + KEY `trans_user` (`trans_user`), + KEY `trans_location` (`trans_location`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 ; + +-- +-- Dumping data for table `ospos_inventory` +-- + + +-- -------------------------------------------------------- + +-- +-- Table structure for table `ospos_items` +-- + +CREATE TABLE `ospos_items` ( + `name` varchar(255) NOT NULL, + `category` varchar(255) NOT NULL, + `supplier_id` int(11) DEFAULT NULL, + `item_number` varchar(255) DEFAULT NULL, + `description` varchar(255) NOT NULL, + `cost_price` decimal(15,2) NOT NULL, + `unit_price` decimal(15,2) NOT NULL, + `reorder_level` decimal(15,2) NOT NULL DEFAULT '0', + `receiving_quantity` int(11) NOT NULL DEFAULT '1', + `item_id` int(10) NOT NULL AUTO_INCREMENT, + `pic_id` int(10) DEFAULT NULL, + `allow_alt_description` tinyint(1) NOT NULL, + `is_serialized` tinyint(1) NOT NULL, + `deleted` int(1) NOT NULL DEFAULT '0', + `custom1` VARCHAR(25) NOT NULL, + `custom2` VARCHAR(25) NOT NULL, + `custom3` VARCHAR(25) NOT NULL, + `custom4` VARCHAR(25) NOT NULL, + `custom5` VARCHAR(25) NOT NULL, + `custom6` VARCHAR(25) NOT NULL, + `custom7` VARCHAR(25) NOT NULL, + `custom8` VARCHAR(25) NOT NULL, + `custom9` VARCHAR(25) NOT NULL, + `custom10` VARCHAR(25) NOT NULL, + PRIMARY KEY (`item_id`), + UNIQUE KEY `item_number` (`item_number`), + KEY `supplier_id` (`supplier_id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 ; + +-- +-- Dumping data for table `ospos_items` +-- + + +-- -------------------------------------------------------- + +-- +-- Table structure for table `ospos_items_taxes` +-- + +CREATE TABLE `ospos_items_taxes` ( + `item_id` int(10) NOT NULL, + `name` varchar(255) NOT NULL, + `percent` decimal(15,2) NOT NULL, + PRIMARY KEY (`item_id`,`name`,`percent`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; + +-- +-- Dumping data for table `ospos_items_taxes` +-- + + +-- -------------------------------------------------------- + +-- +-- Table structure for table `ospos_item_kits` +-- + +CREATE TABLE `ospos_item_kits` ( + `item_kit_id` int(11) NOT NULL AUTO_INCREMENT, + `name` varchar(255) NOT NULL, + `description` varchar(255) NOT NULL, + PRIMARY KEY (`item_kit_id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 ; + +-- +-- Dumping data for table `ospos_item_kits` +-- + + +-- -------------------------------------------------------- + +-- +-- Table structure for table `ospos_item_kit_items` +-- + +CREATE TABLE `ospos_item_kit_items` ( + `item_kit_id` int(11) NOT NULL, + `item_id` int(11) NOT NULL, + `quantity` decimal(15,2) NOT NULL, + PRIMARY KEY (`item_kit_id`,`item_id`,`quantity`), + KEY `ospos_item_kit_items_ibfk_2` (`item_id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; + +-- +-- Dumping data for table `ospos_item_kit_items` +-- + +-- -------------------------------------------------------- + +-- +-- Table structure for table `ospos_item_quantities` +-- + +CREATE TABLE IF NOT EXISTS `ospos_item_quantities` ( + `item_id` int(11) NOT NULL, + `location_id` int(11) NOT NULL, + `quantity` int(11) NOT NULL DEFAULT '0', + PRIMARY KEY (`item_id`,`location_id`), + KEY `item_id` (`item_id`), + KEY `location_id` (`location_id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 ; + +-- -------------------------------------------------------- + +-- +-- Table structure for table `ospos_modules` +-- + +CREATE TABLE `ospos_modules` ( + `name_lang_key` varchar(255) NOT NULL, + `desc_lang_key` varchar(255) NOT NULL, + `sort` int(10) NOT NULL, + `module_id` varchar(255) NOT NULL, + PRIMARY KEY (`module_id`), + UNIQUE KEY `desc_lang_key` (`desc_lang_key`), + UNIQUE KEY `name_lang_key` (`name_lang_key`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; + +-- +-- Dumping data for table `ospos_modules` +-- + +INSERT INTO `ospos_modules` (`name_lang_key`, `desc_lang_key`, `sort`, `module_id`) VALUES +('module_config', 'module_config_desc', 100, 'config'), +('module_customers', 'module_customers_desc', 10, 'customers'), +('module_employees', 'module_employees_desc', 80, 'employees'), +('module_giftcards', 'module_giftcards_desc', 90, 'giftcards'), +('module_items', 'module_items_desc', 20, 'items'), +('module_item_kits', 'module_item_kits_desc', 30, 'item_kits'), +('module_receivings', 'module_receivings_desc', 60, 'receivings'), +('module_reports', 'module_reports_desc', 50, 'reports'), +('module_sales', 'module_sales_desc', 70, 'sales'), +('module_suppliers', 'module_suppliers_desc', 40, 'suppliers'); + +-- -------------------------------------------------------- + +-- +-- Table structure for table `ospos_people` +-- + +CREATE TABLE `ospos_people` ( + `first_name` varchar(255) NOT NULL, + `last_name` varchar(255) NOT NULL, + `gender` int(1) DEFAULT NULL, + `phone_number` varchar(255) NOT NULL, + `email` varchar(255) NOT NULL, + `address_1` varchar(255) NOT NULL, + `address_2` varchar(255) NOT NULL, + `city` varchar(255) NOT NULL, + `state` varchar(255) NOT NULL, + `zip` varchar(255) NOT NULL, + `country` varchar(255) NOT NULL, + `comments` text NOT NULL, + `person_id` int(10) NOT NULL AUTO_INCREMENT, + PRIMARY KEY (`person_id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 ; + +-- +-- Dumping data for table `ospos_people` +-- + +INSERT INTO `ospos_people` (`first_name`, `last_name`, `phone_number`, `email`, `address_1`, `address_2`, `city`, `state`, `zip`, `country`, `comments`, `person_id`) VALUES +('John', 'Doe', '555-555-5555', 'admin@pappastech.com', 'Address 1', '', '', '', '', '', '', 1); + +-- -------------------------------------------------------- + +-- +-- Table structure for table `ospos_permissions` +-- + +CREATE TABLE `ospos_permissions` ( + `permission_id` varchar(255) NOT NULL, + `module_id` varchar(255) NOT NULL, + `location_id` int(10) DEFAULT NULL, + PRIMARY KEY (`permission_id`), + KEY `module_id` (`module_id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; + +-- +-- Dumping data for table `ospos_permissions` +-- + +INSERT INTO `ospos_permissions` (`permission_id`, `module_id`) VALUES +('reports_customers', 'reports'), +('reports_receivings', 'reports'), +('reports_items', 'reports'), +('reports_employees', 'reports'), +('reports_suppliers', 'reports'), +('reports_sales', 'reports'), +('reports_discounts', 'reports'), +('reports_taxes', 'reports'), +('reports_inventory', 'reports'), +('reports_categories', 'reports'), +('reports_payments', 'reports'), +('customers', 'customers'), +('employees', 'employees'), +('giftcards', 'giftcards'), +('items', 'items'), +('item_kits', 'item_kits'), +('receivings', 'receivings'), +('reports', 'reports'), +('sales', 'sales'), +('config', 'config'), +('suppliers', 'suppliers'); + +INSERT INTO `ospos_permissions` (`permission_id`, `module_id`, `location_id`) VALUES +('items_stock', 'items', 1), +('sales_stock', 'sales', 1), +('receivings_stock', 'receivings', 1); + +-- -------------------------------------------------------- + +-- +-- Table structure for table `ospos_grants` +-- + +CREATE TABLE `ospos_grants` ( + `permission_id` varchar(255) NOT NULL, + `person_id` int(10) NOT NULL, + PRIMARY KEY (`permission_id`,`person_id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; + +-- +-- Dumping data for table `ospos_grants` +-- +-- -------------------------------------------------------- + +INSERT INTO `ospos_grants` (`permission_id`, `person_id`) VALUES +('reports_customers', 1), +('reports_receivings', 1), +('reports_items', 1), +('reports_inventory', 1), +('reports_employees', 1), +('reports_suppliers', 1), +('reports_sales', 1), +('reports_discounts', 1), +('reports_taxes', 1), +('reports_categories', 1), +('reports_payments', 1), +('customers', 1), +('employees', 1), +('giftcards', 1), +('items', 1), +('item_kits', 1), +('receivings', 1), +('reports', 1), +('sales', 1), +('config', 1), +('items_stock', 1), +('sales_stock', 1), +('receivings_stock', 1), +('suppliers', 1); + +-- +-- Table structure for table `ospos_receivings` +-- + +CREATE TABLE `ospos_receivings` ( + `receiving_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, + `supplier_id` int(10) DEFAULT NULL, + `employee_id` int(10) NOT NULL DEFAULT '0', + `comment` text NOT NULL, + `receiving_id` int(10) NOT NULL AUTO_INCREMENT, + `payment_type` varchar(20) DEFAULT NULL, + `invoice_number` varchar(32) DEFAULT NULL, + PRIMARY KEY (`receiving_id`), + KEY `supplier_id` (`supplier_id`), + KEY `employee_id` (`employee_id`), + UNIQUE KEY `invoice_number` (`invoice_number`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 ; + +-- +-- Dumping data for table `ospos_receivings` +-- + + +-- -------------------------------------------------------- + +-- +-- Table structure for table `ospos_receivings_items` +-- + +CREATE TABLE `ospos_receivings_items` ( + `receiving_id` int(10) NOT NULL DEFAULT '0', + `item_id` int(10) NOT NULL DEFAULT '0', + `description` varchar(30) DEFAULT NULL, + `serialnumber` varchar(30) DEFAULT NULL, + `line` int(3) NOT NULL, + `quantity_purchased` decimal(15,2) NOT NULL DEFAULT '0', + `item_cost_price` decimal(15,2) NOT NULL, + `item_unit_price` decimal(15,2) NOT NULL, + `discount_percent` decimal(15,2) NOT NULL DEFAULT '0', + `item_location` int(11) NOT NULL, + `receiving_quantity` int(11) NOT NULL DEFAULT '1', + PRIMARY KEY (`receiving_id`,`item_id`,`line`), + KEY `item_id` (`item_id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; + +-- +-- Dumping data for table `ospos_receivings_items` +-- + + +-- -------------------------------------------------------- + +-- +-- Table structure for table `ospos_sales` +-- + +CREATE TABLE `ospos_sales` ( + `sale_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, + `customer_id` int(10) DEFAULT NULL, + `employee_id` int(10) NOT NULL DEFAULT '0', + `comment` text NOT NULL, + `invoice_number` varchar(32) DEFAULT NULL, + `sale_id` int(10) NOT NULL AUTO_INCREMENT, + PRIMARY KEY (`sale_id`), + KEY `customer_id` (`customer_id`), + KEY `employee_id` (`employee_id`), + KEY `sale_time` (`sale_time`), + UNIQUE KEY `invoice_number` (`invoice_number`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 ; + +-- +-- Dumping data for table `ospos_sales` +-- + + +-- -------------------------------------------------------- + +-- +-- Table structure for table `ospos_sales_items` +-- + +CREATE TABLE `ospos_sales_items` ( + `sale_id` int(10) NOT NULL DEFAULT '0', + `item_id` int(10) NOT NULL DEFAULT '0', + `description` varchar(30) DEFAULT NULL, + `serialnumber` varchar(30) DEFAULT NULL, + `line` int(3) NOT NULL DEFAULT '0', + `quantity_purchased` decimal(15,2) NOT NULL DEFAULT '0.00', + `item_cost_price` decimal(15,2) NOT NULL, + `item_unit_price` decimal(15,2) NOT NULL, + `discount_percent` decimal(15,2) NOT NULL DEFAULT '0', + `item_location` int(11) NOT NULL, + PRIMARY KEY (`sale_id`,`item_id`,`line`), + KEY `sale_id` (`sale_id`), + KEY `item_id` (`item_id`), + KEY `item_location` (`item_location`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; + +-- +-- Dumping data for table `ospos_sales_items` +-- + + +-- -------------------------------------------------------- + +-- +-- Table structure for table `ospos_sales_items_taxes` +-- + +CREATE TABLE `ospos_sales_items_taxes` ( + `sale_id` int(10) NOT NULL, + `item_id` int(10) NOT NULL, + `line` int(3) NOT NULL DEFAULT '0', + `name` varchar(255) NOT NULL, + `percent` decimal(15,2) NOT NULL, + PRIMARY KEY (`sale_id`,`item_id`,`line`,`name`,`percent`), + KEY `sale_id` (`sale_id`), + KEY `item_id` (`item_id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; + +-- +-- Dumping data for table `ospos_sales_items_taxes` +-- + + +-- -------------------------------------------------------- + +-- +-- Table structure for table `ospos_sales_payments` +-- + +CREATE TABLE `ospos_sales_payments` ( + `sale_id` int(10) NOT NULL, + `payment_type` varchar(40) NOT NULL, + `payment_amount` decimal(15,2) NOT NULL, + PRIMARY KEY (`sale_id`,`payment_type`), + KEY `sale_id` (`sale_id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; + +-- +-- Dumping data for table `ospos_sales_payments` +-- + + +-- -------------------------------------------------------- + +-- +-- Table structure for table `ospos_sales_suspended` +-- + +CREATE TABLE `ospos_sales_suspended` ( + `sale_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, + `customer_id` int(10) DEFAULT NULL, + `employee_id` int(10) NOT NULL DEFAULT '0', + `comment` text NOT NULL, + `invoice_number` varchar(32) DEFAULT NULL, + `sale_id` int(10) NOT NULL AUTO_INCREMENT, + PRIMARY KEY (`sale_id`), + KEY `customer_id` (`customer_id`), + KEY `employee_id` (`employee_id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 ; + +-- +-- Dumping data for table `ospos_sales_suspended` +-- + + +-- -------------------------------------------------------- + +-- +-- Table structure for table `ospos_sales_suspended_items` +-- + +CREATE TABLE `ospos_sales_suspended_items` ( + `sale_id` int(10) NOT NULL DEFAULT '0', + `item_id` int(10) NOT NULL DEFAULT '0', + `description` varchar(30) DEFAULT NULL, + `serialnumber` varchar(30) DEFAULT NULL, + `line` int(3) NOT NULL DEFAULT '0', + `quantity_purchased` decimal(15,2) NOT NULL DEFAULT '0.00', + `item_cost_price` decimal(15,2) NOT NULL, + `item_unit_price` decimal(15,2) NOT NULL, + `discount_percent` decimal(15,2) NOT NULL DEFAULT '0', + `item_location` int(11) NOT NULL, + PRIMARY KEY (`sale_id`,`item_id`,`line`), + KEY `sale_id` (`sale_id`), + KEY `item_id` (`item_id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; + +-- +-- Dumping data for table `ospos_sales_suspended_items` +-- + + +-- -------------------------------------------------------- + +-- +-- Table structure for table `ospos_sales_suspended_items_taxes` +-- + +CREATE TABLE `ospos_sales_suspended_items_taxes` ( + `sale_id` int(10) NOT NULL, + `item_id` int(10) NOT NULL, + `line` int(3) NOT NULL DEFAULT '0', + `name` varchar(255) NOT NULL, + `percent` decimal(15,2) NOT NULL, + PRIMARY KEY (`sale_id`,`item_id`,`line`,`name`,`percent`), + KEY `item_id` (`item_id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; + +-- +-- Dumping data for table `ospos_sales_suspended_items_taxes` +-- + + +-- -------------------------------------------------------- + +-- +-- Table structure for table `ospos_sales_suspended_payments` +-- + +CREATE TABLE `ospos_sales_suspended_payments` ( + `sale_id` int(10) NOT NULL, + `payment_type` varchar(40) NOT NULL, + `payment_amount` decimal(15,2) NOT NULL, + PRIMARY KEY (`sale_id`,`payment_type`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; + +-- +-- Dumping data for table `ospos_sales_suspended_payments` +-- + + +-- -------------------------------------------------------- + +-- +-- Table structure for table `ospos_sessions` +-- + +CREATE TABLE `ospos_sessions` ( + `session_id` varchar(40) NOT NULL DEFAULT '0', + `ip_address` varchar(45) NOT NULL DEFAULT '0', + `user_agent` varchar(120) NOT NULL, + `last_activity` int(10) unsigned NOT NULL DEFAULT '0', + `user_data` text, + PRIMARY KEY (`session_id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; + +-- +-- Dumping data for table `ospos_sessions` +-- + +-- -------------------------------------------------------- + +-- +-- Table structure for table `ospos_stock_locations` +-- + +CREATE TABLE `ospos_stock_locations` ( + `location_id` int(11) NOT NULL AUTO_INCREMENT, + `location_name` varchar(255) DEFAULT NULL, + `deleted` int(1) NOT NULL DEFAULT '0', + PRIMARY KEY (`location_id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 ; + +-- +-- Dumping data for table `ospos_stock_locations` +-- + +INSERT INTO `ospos_stock_locations` ( `deleted`, `location_name` ) VALUES ('0', 'stock'); + +-- -------------------------------------------------------- + +-- +-- Table structure for table `ospos_suppliers` +-- + +CREATE TABLE `ospos_suppliers` ( + `person_id` int(10) NOT NULL, + `company_name` varchar(255) NOT NULL, + `agency_name` varchar(255) NOT NULL, + `account_number` varchar(255) DEFAULT NULL, + `deleted` int(1) NOT NULL DEFAULT '0', + UNIQUE KEY `account_number` (`account_number`), + KEY `person_id` (`person_id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; + +-- +-- Dumping data for table `ospos_suppliers` +-- + + + +-- +-- Constraints for dumped tables +-- + +-- +-- Constraints for table `ospos_customers` +-- +ALTER TABLE `ospos_customers` + ADD CONSTRAINT `ospos_customers_ibfk_1` FOREIGN KEY (`person_id`) REFERENCES `ospos_people` (`person_id`); + +-- +-- Constraints for table `ospos_employees` +-- +ALTER TABLE `ospos_employees` + ADD CONSTRAINT `ospos_employees_ibfk_1` FOREIGN KEY (`person_id`) REFERENCES `ospos_people` (`person_id`); + +-- +-- Constraints for table `ospos_inventory` +-- +ALTER TABLE `ospos_inventory` + ADD CONSTRAINT `ospos_inventory_ibfk_1` FOREIGN KEY (`trans_items`) REFERENCES `ospos_items` (`item_id`), + ADD CONSTRAINT `ospos_inventory_ibfk_2` FOREIGN KEY (`trans_user`) REFERENCES `ospos_employees` (`person_id`), + ADD CONSTRAINT `ospos_inventory_ibfk_3` FOREIGN KEY (`trans_location`) REFERENCES `ospos_stock_locations` (`location_id`); + +-- +-- Constraints for table `ospos_items` +-- +ALTER TABLE `ospos_items` + ADD CONSTRAINT `ospos_items_ibfk_1` FOREIGN KEY (`supplier_id`) REFERENCES `ospos_suppliers` (`person_id`); + +-- +-- Constraints for table `ospos_items_taxes` +-- +ALTER TABLE `ospos_items_taxes` + ADD CONSTRAINT `ospos_items_taxes_ibfk_1` FOREIGN KEY (`item_id`) REFERENCES `ospos_items` (`item_id`) ON DELETE CASCADE; + +-- +-- Constraints for table `ospos_item_kit_items` +-- +ALTER TABLE `ospos_item_kit_items` + ADD CONSTRAINT `ospos_item_kit_items_ibfk_1` FOREIGN KEY (`item_kit_id`) REFERENCES `ospos_item_kits` (`item_kit_id`) ON DELETE CASCADE, + ADD CONSTRAINT `ospos_item_kit_items_ibfk_2` FOREIGN KEY (`item_id`) REFERENCES `ospos_items` (`item_id`) ON DELETE CASCADE; + +-- +-- Constraints for table `ospos_permissions` +-- +ALTER TABLE `ospos_permissions` + ADD CONSTRAINT `ospos_permissions_ibfk_1` FOREIGN KEY (`module_id`) REFERENCES `ospos_modules` (`module_id`) ON DELETE CASCADE, + ADD CONSTRAINT `ospos_permissions_ibfk_2` FOREIGN KEY (`location_id`) REFERENCES `ospos_stock_locations` (`location_id`) ON DELETE CASCADE; + +-- +-- Constraints for table `ospos_grants` +-- +ALTER TABLE `ospos_grants` + ADD CONSTRAINT `ospos_grants_ibfk_1` foreign key (`permission_id`) references `ospos_permissions` (`permission_id`) ON DELETE CASCADE, + ADD CONSTRAINT `ospos_grants_ibfk_2` foreign key (`person_id`) references `ospos_employees` (`person_id`) ON DELETE CASCADE; + +-- +-- Constraints for table `ospos_receivings` +-- +ALTER TABLE `ospos_receivings` + ADD CONSTRAINT `ospos_receivings_ibfk_1` FOREIGN KEY (`employee_id`) REFERENCES `ospos_employees` (`person_id`), + ADD CONSTRAINT `ospos_receivings_ibfk_2` FOREIGN KEY (`supplier_id`) REFERENCES `ospos_suppliers` (`person_id`); + +-- +-- Constraints for table `ospos_receivings_items` +-- +ALTER TABLE `ospos_receivings_items` + ADD CONSTRAINT `ospos_receivings_items_ibfk_1` FOREIGN KEY (`item_id`) REFERENCES `ospos_items` (`item_id`), + ADD CONSTRAINT `ospos_receivings_items_ibfk_2` FOREIGN KEY (`receiving_id`) REFERENCES `ospos_receivings` (`receiving_id`); + +-- +-- Constraints for table `ospos_sales` +-- +ALTER TABLE `ospos_sales` + ADD CONSTRAINT `ospos_sales_ibfk_1` FOREIGN KEY (`employee_id`) REFERENCES `ospos_employees` (`person_id`), + ADD CONSTRAINT `ospos_sales_ibfk_2` FOREIGN KEY (`customer_id`) REFERENCES `ospos_customers` (`person_id`); + +-- +-- Constraints for table `ospos_sales_items` +-- +ALTER TABLE `ospos_sales_items` + ADD CONSTRAINT `ospos_sales_items_ibfk_1` FOREIGN KEY (`item_id`) REFERENCES `ospos_items` (`item_id`), + ADD CONSTRAINT `ospos_sales_items_ibfk_2` FOREIGN KEY (`sale_id`) REFERENCES `ospos_sales` (`sale_id`), + ADD CONSTRAINT `ospos_sales_items_ibfk_3` FOREIGN KEY (`item_location`) REFERENCES `ospos_stock_locations` (`location_id`); + +-- +-- Constraints for table `ospos_sales_items_taxes` +-- +ALTER TABLE `ospos_sales_items_taxes` + ADD CONSTRAINT `ospos_sales_items_taxes_ibfk_1` FOREIGN KEY (`sale_id`) REFERENCES `ospos_sales_items` (`sale_id`), + ADD CONSTRAINT `ospos_sales_items_taxes_ibfk_2` FOREIGN KEY (`item_id`) REFERENCES `ospos_items` (`item_id`); + +-- +-- Constraints for table `ospos_sales_payments` +-- +ALTER TABLE `ospos_sales_payments` + ADD CONSTRAINT `ospos_sales_payments_ibfk_1` FOREIGN KEY (`sale_id`) REFERENCES `ospos_sales` (`sale_id`); + +-- +-- Constraints for table `ospos_sales_suspended` +-- +ALTER TABLE `ospos_sales_suspended` + ADD CONSTRAINT `ospos_sales_suspended_ibfk_1` FOREIGN KEY (`employee_id`) REFERENCES `ospos_employees` (`person_id`), + ADD CONSTRAINT `ospos_sales_suspended_ibfk_2` FOREIGN KEY (`customer_id`) REFERENCES `ospos_customers` (`person_id`); + +-- +-- Constraints for table `ospos_sales_suspended_items` +-- +ALTER TABLE `ospos_sales_suspended_items` + ADD CONSTRAINT `ospos_sales_suspended_items_ibfk_1` FOREIGN KEY (`item_id`) REFERENCES `ospos_items` (`item_id`), + ADD CONSTRAINT `ospos_sales_suspended_items_ibfk_2` FOREIGN KEY (`sale_id`) REFERENCES `ospos_sales_suspended` (`sale_id`), + ADD CONSTRAINT `ospos_sales_suspended_items_ibfk_3` FOREIGN KEY (`item_location`) REFERENCES `ospos_stock_locations` (`location_id`); + +-- +-- Constraints for table `ospos_sales_suspended_items_taxes` +-- +ALTER TABLE `ospos_sales_suspended_items_taxes` + ADD CONSTRAINT `ospos_sales_suspended_items_taxes_ibfk_1` FOREIGN KEY (`sale_id`) REFERENCES `ospos_sales_suspended_items` (`sale_id`), + ADD CONSTRAINT `ospos_sales_suspended_items_taxes_ibfk_2` FOREIGN KEY (`item_id`) REFERENCES `ospos_items` (`item_id`); + +-- +-- Constraints for table `ospos_sales_suspended_payments` +-- +ALTER TABLE `ospos_sales_suspended_payments` + ADD CONSTRAINT `ospos_sales_suspended_payments_ibfk_1` FOREIGN KEY (`sale_id`) REFERENCES `ospos_sales_suspended` (`sale_id`); + +-- +-- Constraints for table `ospos_item_quantities` +-- +ALTER TABLE `ospos_item_quantities` + ADD CONSTRAINT `ospos_item_quantities_ibfk_1` FOREIGN KEY (`item_id`) REFERENCES `ospos_items` (`item_id`), + ADD CONSTRAINT `ospos_item_quantities_ibfk_2` FOREIGN KEY (`location_id`) REFERENCES `ospos_stock_locations` (`location_id`); + +-- +-- Constraints for table `ospos_suppliers` +-- +ALTER TABLE `ospos_suppliers` + ADD CONSTRAINT `ospos_suppliers_ibfk_1` FOREIGN KEY (`person_id`) REFERENCES `ospos_people` (`person_id`); + +-- +-- Constraints for table `ospos_giftcards` +-- +ALTER TABLE `ospos_giftcards` + ADD CONSTRAINT `ospos_giftcards_ibfk_1` FOREIGN KEY (`person_id`) REFERENCES `ospos_people` (`person_id`); + diff --git a/database/migrate_phppos_dist.sql b/database/migrate_phppos_dist.sql new file mode 100644 index 000000000..63557eaff --- /dev/null +++ b/database/migrate_phppos_dist.sql @@ -0,0 +1,964 @@ +-->> This file is autogenerated from tables.sql and constraints.sql. Do not modify directly <<-- +-- +-- Table structure for table `ospos_app_config` +-- + +CREATE TABLE `ospos_app_config` ( + `key` varchar(255) NOT NULL, + `value` varchar(255) NOT NULL, + PRIMARY KEY (`key`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; + +-- +-- Dumping data for table `ospos_app_config` +-- + +INSERT INTO `ospos_app_config` (`key`, `value`) VALUES +('address', '123 Nowhere street'), +('company', 'Open Source Point of Sale'), +('default_tax_rate', '8'), +('email', 'admin@pappastech.com'), +('fax', ''), +('phone', '555-555-5555'), +('return_policy', 'Test'), +('timezone', 'America/New_York'), +('website', ''), +('recv_invoice_format', '$CO'), +('sales_invoice_format', '$CO'), +('tax_included', '0'), +('invoice_default_comments', 'This is a default comment'), +('company_logo', ''), +('barcode_content', 'id'), +('barcode_type', 'Code39'), +('barcode_width', '250'), +('barcode_height', '50'), +('barcode_quality', '100'), +('barcode_font', 'Arial'), +('barcode_font_size', '10'), +('barcode_first_row', 'category'), +('barcode_second_row', 'item_code'), +('barcode_third_row', 'unit_price'), +('barcode_num_in_row', '2'), +('barcode_page_width', '100'), +('barcode_page_cellspacing', '20'), +('barcode_generate_if_empty', '0'), +('receipt_show_taxes', '0'), +('use_invoice_template', '1'), +('invoice_email_message', 'Dear $CU, In attachment the receipt for sale $INV'), +('print_silently', '1'), +('print_header', '0'), +('print_footer', '0'), +('print_top_margin', '0'), +('print_left_margin', '0'), +('print_bottom_margin', '0'), +('print_right_margin', '0'), +('default_sales_discount', '0'), +('lines_per_page', '25'), +('show_total_discount', '1'), +('dateformat', 'm/d/Y'), +('timeformat', 'H:i:s'), +('currency_symbol', '$'); + +-- -------------------------------------------------------- + +-- +-- Table structure for table `ospos_customers` +-- + +CREATE TABLE `ospos_customers` ( + `person_id` int(10) NOT NULL, + `company_name` varchar(255) DEFAULT NULL, + `account_number` varchar(255) DEFAULT NULL, + `taxable` int(1) NOT NULL DEFAULT '1', + `deleted` int(1) NOT NULL DEFAULT '0', + UNIQUE KEY `account_number` (`account_number`), + KEY `person_id` (`person_id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; + +-- +-- Dumping data for table `ospos_customers` +-- + + +-- -------------------------------------------------------- + +-- +-- Table structure for table `ospos_employees` +-- + +CREATE TABLE `ospos_employees` ( + `username` varchar(255) NOT NULL, + `password` varchar(255) NOT NULL, + `person_id` int(10) NOT NULL, + `deleted` int(1) NOT NULL DEFAULT '0', + UNIQUE KEY `username` (`username`), + KEY `person_id` (`person_id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; + +-- +-- Dumping data for table `ospos_employees` +-- + +INSERT INTO `ospos_employees` (`username`, `password`, `person_id`, `deleted`) VALUES +('admin', '439a6de57d475c1a0ba9bcb1c39f0af6', 1, 0); + +-- -------------------------------------------------------- + +-- +-- Table structure for table `ospos_giftcards` +-- + +CREATE TABLE `ospos_giftcards` ( + `record_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, + `giftcard_id` int(11) NOT NULL AUTO_INCREMENT, + `giftcard_number` int(10) NOT NULL, + `value` decimal(15,2) NOT NULL, + `deleted` int(1) NOT NULL DEFAULT '0', + `person_id` INT(10) DEFAULT NULL, + PRIMARY KEY (`giftcard_id`), + UNIQUE KEY `giftcard_number` (`giftcard_number`), + KEY `person_id` (`person_id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; + +-- +-- Dumping data for table `ospos_giftcards` +-- + + +-- -------------------------------------------------------- + +-- +-- Table structure for table `ospos_inventory` +-- + +CREATE TABLE `ospos_inventory` ( + `trans_id` int(11) NOT NULL AUTO_INCREMENT, + `trans_items` int(11) NOT NULL DEFAULT '0', + `trans_user` int(11) NOT NULL DEFAULT '0', + `trans_date` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, + `trans_comment` text NOT NULL, + `trans_location` int(11) NOT NULL, + `trans_inventory` int(11) NOT NULL DEFAULT '0', + PRIMARY KEY (`trans_id`), + KEY `trans_items` (`trans_items`), + KEY `trans_user` (`trans_user`), + KEY `trans_location` (`trans_location`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 ; + +-- +-- Dumping data for table `ospos_inventory` +-- + + +-- -------------------------------------------------------- + +-- +-- Table structure for table `ospos_items` +-- + +CREATE TABLE `ospos_items` ( + `name` varchar(255) NOT NULL, + `category` varchar(255) NOT NULL, + `supplier_id` int(11) DEFAULT NULL, + `item_number` varchar(255) DEFAULT NULL, + `description` varchar(255) NOT NULL, + `cost_price` decimal(15,2) NOT NULL, + `unit_price` decimal(15,2) NOT NULL, + `reorder_level` decimal(15,2) NOT NULL DEFAULT '0', + `receiving_quantity` int(11) NOT NULL DEFAULT '1', + `item_id` int(10) NOT NULL AUTO_INCREMENT, + `pic_id` int(10) DEFAULT NULL, + `allow_alt_description` tinyint(1) NOT NULL, + `is_serialized` tinyint(1) NOT NULL, + `deleted` int(1) NOT NULL DEFAULT '0', + `custom1` VARCHAR(25) NOT NULL, + `custom2` VARCHAR(25) NOT NULL, + `custom3` VARCHAR(25) NOT NULL, + `custom4` VARCHAR(25) NOT NULL, + `custom5` VARCHAR(25) NOT NULL, + `custom6` VARCHAR(25) NOT NULL, + `custom7` VARCHAR(25) NOT NULL, + `custom8` VARCHAR(25) NOT NULL, + `custom9` VARCHAR(25) NOT NULL, + `custom10` VARCHAR(25) NOT NULL, + PRIMARY KEY (`item_id`), + UNIQUE KEY `item_number` (`item_number`), + KEY `supplier_id` (`supplier_id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 ; + +-- +-- Dumping data for table `ospos_items` +-- + + +-- -------------------------------------------------------- + +-- +-- Table structure for table `ospos_items_taxes` +-- + +CREATE TABLE `ospos_items_taxes` ( + `item_id` int(10) NOT NULL, + `name` varchar(255) NOT NULL, + `percent` decimal(15,2) NOT NULL, + PRIMARY KEY (`item_id`,`name`,`percent`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; + +-- +-- Dumping data for table `ospos_items_taxes` +-- + + +-- -------------------------------------------------------- + +-- +-- Table structure for table `ospos_item_kits` +-- + +CREATE TABLE `ospos_item_kits` ( + `item_kit_id` int(11) NOT NULL AUTO_INCREMENT, + `name` varchar(255) NOT NULL, + `description` varchar(255) NOT NULL, + PRIMARY KEY (`item_kit_id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 ; + +-- +-- Dumping data for table `ospos_item_kits` +-- + + +-- -------------------------------------------------------- + +-- +-- Table structure for table `ospos_item_kit_items` +-- + +CREATE TABLE `ospos_item_kit_items` ( + `item_kit_id` int(11) NOT NULL, + `item_id` int(11) NOT NULL, + `quantity` decimal(15,2) NOT NULL, + PRIMARY KEY (`item_kit_id`,`item_id`,`quantity`), + KEY `ospos_item_kit_items_ibfk_2` (`item_id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; + +-- +-- Dumping data for table `ospos_item_kit_items` +-- + +-- -------------------------------------------------------- + +-- +-- Table structure for table `ospos_item_quantities` +-- + +CREATE TABLE IF NOT EXISTS `ospos_item_quantities` ( + `item_id` int(11) NOT NULL, + `location_id` int(11) NOT NULL, + `quantity` int(11) NOT NULL DEFAULT '0', + PRIMARY KEY (`item_id`,`location_id`), + KEY `item_id` (`item_id`), + KEY `location_id` (`location_id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 ; + +-- -------------------------------------------------------- + +-- +-- Table structure for table `ospos_modules` +-- + +CREATE TABLE `ospos_modules` ( + `name_lang_key` varchar(255) NOT NULL, + `desc_lang_key` varchar(255) NOT NULL, + `sort` int(10) NOT NULL, + `module_id` varchar(255) NOT NULL, + PRIMARY KEY (`module_id`), + UNIQUE KEY `desc_lang_key` (`desc_lang_key`), + UNIQUE KEY `name_lang_key` (`name_lang_key`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; + +-- +-- Dumping data for table `ospos_modules` +-- + +INSERT INTO `ospos_modules` (`name_lang_key`, `desc_lang_key`, `sort`, `module_id`) VALUES +('module_config', 'module_config_desc', 100, 'config'), +('module_customers', 'module_customers_desc', 10, 'customers'), +('module_employees', 'module_employees_desc', 80, 'employees'), +('module_giftcards', 'module_giftcards_desc', 90, 'giftcards'), +('module_items', 'module_items_desc', 20, 'items'), +('module_item_kits', 'module_item_kits_desc', 30, 'item_kits'), +('module_receivings', 'module_receivings_desc', 60, 'receivings'), +('module_reports', 'module_reports_desc', 50, 'reports'), +('module_sales', 'module_sales_desc', 70, 'sales'), +('module_suppliers', 'module_suppliers_desc', 40, 'suppliers'); + +-- -------------------------------------------------------- + +-- +-- Table structure for table `ospos_people` +-- + +CREATE TABLE `ospos_people` ( + `first_name` varchar(255) NOT NULL, + `last_name` varchar(255) NOT NULL, + `gender` int(1) DEFAULT NULL, + `phone_number` varchar(255) NOT NULL, + `email` varchar(255) NOT NULL, + `address_1` varchar(255) NOT NULL, + `address_2` varchar(255) NOT NULL, + `city` varchar(255) NOT NULL, + `state` varchar(255) NOT NULL, + `zip` varchar(255) NOT NULL, + `country` varchar(255) NOT NULL, + `comments` text NOT NULL, + `person_id` int(10) NOT NULL AUTO_INCREMENT, + PRIMARY KEY (`person_id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 ; + +-- +-- Dumping data for table `ospos_people` +-- + +INSERT INTO `ospos_people` (`first_name`, `last_name`, `phone_number`, `email`, `address_1`, `address_2`, `city`, `state`, `zip`, `country`, `comments`, `person_id`) VALUES +('John', 'Doe', '555-555-5555', 'admin@pappastech.com', 'Address 1', '', '', '', '', '', '', 1); + +-- -------------------------------------------------------- + +-- +-- Table structure for table `ospos_permissions` +-- + +CREATE TABLE `ospos_permissions` ( + `permission_id` varchar(255) NOT NULL, + `module_id` varchar(255) NOT NULL, + `location_id` int(10) DEFAULT NULL, + PRIMARY KEY (`permission_id`), + KEY `module_id` (`module_id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; + +-- +-- Dumping data for table `ospos_permissions` +-- + +INSERT INTO `ospos_permissions` (`permission_id`, `module_id`) VALUES +('reports_customers', 'reports'), +('reports_receivings', 'reports'), +('reports_items', 'reports'), +('reports_employees', 'reports'), +('reports_suppliers', 'reports'), +('reports_sales', 'reports'), +('reports_discounts', 'reports'), +('reports_taxes', 'reports'), +('reports_inventory', 'reports'), +('reports_categories', 'reports'), +('reports_payments', 'reports'), +('customers', 'customers'), +('employees', 'employees'), +('giftcards', 'giftcards'), +('items', 'items'), +('item_kits', 'item_kits'), +('receivings', 'receivings'), +('reports', 'reports'), +('sales', 'sales'), +('config', 'config'), +('suppliers', 'suppliers'); + +INSERT INTO `ospos_permissions` (`permission_id`, `module_id`, `location_id`) VALUES +('items_stock', 'items', 1), +('sales_stock', 'sales', 1), +('receivings_stock', 'receivings', 1); + +-- -------------------------------------------------------- + +-- +-- Table structure for table `ospos_grants` +-- + +CREATE TABLE `ospos_grants` ( + `permission_id` varchar(255) NOT NULL, + `person_id` int(10) NOT NULL, + PRIMARY KEY (`permission_id`,`person_id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; + +-- +-- Dumping data for table `ospos_grants` +-- +-- -------------------------------------------------------- + +INSERT INTO `ospos_grants` (`permission_id`, `person_id`) VALUES +('reports_customers', 1), +('reports_receivings', 1), +('reports_items', 1), +('reports_inventory', 1), +('reports_employees', 1), +('reports_suppliers', 1), +('reports_sales', 1), +('reports_discounts', 1), +('reports_taxes', 1), +('reports_categories', 1), +('reports_payments', 1), +('customers', 1), +('employees', 1), +('giftcards', 1), +('items', 1), +('item_kits', 1), +('receivings', 1), +('reports', 1), +('sales', 1), +('config', 1), +('items_stock', 1), +('sales_stock', 1), +('receivings_stock', 1), +('suppliers', 1); + +-- +-- Table structure for table `ospos_receivings` +-- + +CREATE TABLE `ospos_receivings` ( + `receiving_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, + `supplier_id` int(10) DEFAULT NULL, + `employee_id` int(10) NOT NULL DEFAULT '0', + `comment` text NOT NULL, + `receiving_id` int(10) NOT NULL AUTO_INCREMENT, + `payment_type` varchar(20) DEFAULT NULL, + `invoice_number` varchar(32) DEFAULT NULL, + PRIMARY KEY (`receiving_id`), + KEY `supplier_id` (`supplier_id`), + KEY `employee_id` (`employee_id`), + UNIQUE KEY `invoice_number` (`invoice_number`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 ; + +-- +-- Dumping data for table `ospos_receivings` +-- + + +-- -------------------------------------------------------- + +-- +-- Table structure for table `ospos_receivings_items` +-- + +CREATE TABLE `ospos_receivings_items` ( + `receiving_id` int(10) NOT NULL DEFAULT '0', + `item_id` int(10) NOT NULL DEFAULT '0', + `description` varchar(30) DEFAULT NULL, + `serialnumber` varchar(30) DEFAULT NULL, + `line` int(3) NOT NULL, + `quantity_purchased` decimal(15,2) NOT NULL DEFAULT '0', + `item_cost_price` decimal(15,2) NOT NULL, + `item_unit_price` decimal(15,2) NOT NULL, + `discount_percent` decimal(15,2) NOT NULL DEFAULT '0', + `item_location` int(11) NOT NULL, + `receiving_quantity` int(11) NOT NULL DEFAULT '1', + PRIMARY KEY (`receiving_id`,`item_id`,`line`), + KEY `item_id` (`item_id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; + +-- +-- Dumping data for table `ospos_receivings_items` +-- + + +-- -------------------------------------------------------- + +-- +-- Table structure for table `ospos_sales` +-- + +CREATE TABLE `ospos_sales` ( + `sale_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, + `customer_id` int(10) DEFAULT NULL, + `employee_id` int(10) NOT NULL DEFAULT '0', + `comment` text NOT NULL, + `invoice_number` varchar(32) DEFAULT NULL, + `sale_id` int(10) NOT NULL AUTO_INCREMENT, + PRIMARY KEY (`sale_id`), + KEY `customer_id` (`customer_id`), + KEY `employee_id` (`employee_id`), + KEY `sale_time` (`sale_time`), + UNIQUE KEY `invoice_number` (`invoice_number`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 ; + +-- +-- Dumping data for table `ospos_sales` +-- + + +-- -------------------------------------------------------- + +-- +-- Table structure for table `ospos_sales_items` +-- + +CREATE TABLE `ospos_sales_items` ( + `sale_id` int(10) NOT NULL DEFAULT '0', + `item_id` int(10) NOT NULL DEFAULT '0', + `description` varchar(30) DEFAULT NULL, + `serialnumber` varchar(30) DEFAULT NULL, + `line` int(3) NOT NULL DEFAULT '0', + `quantity_purchased` decimal(15,2) NOT NULL DEFAULT '0.00', + `item_cost_price` decimal(15,2) NOT NULL, + `item_unit_price` decimal(15,2) NOT NULL, + `discount_percent` decimal(15,2) NOT NULL DEFAULT '0', + `item_location` int(11) NOT NULL, + PRIMARY KEY (`sale_id`,`item_id`,`line`), + KEY `sale_id` (`sale_id`), + KEY `item_id` (`item_id`), + KEY `item_location` (`item_location`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; + +-- +-- Dumping data for table `ospos_sales_items` +-- + + +-- -------------------------------------------------------- + +-- +-- Table structure for table `ospos_sales_items_taxes` +-- + +CREATE TABLE `ospos_sales_items_taxes` ( + `sale_id` int(10) NOT NULL, + `item_id` int(10) NOT NULL, + `line` int(3) NOT NULL DEFAULT '0', + `name` varchar(255) NOT NULL, + `percent` decimal(15,2) NOT NULL, + PRIMARY KEY (`sale_id`,`item_id`,`line`,`name`,`percent`), + KEY `sale_id` (`sale_id`), + KEY `item_id` (`item_id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; + +-- +-- Dumping data for table `ospos_sales_items_taxes` +-- + + +-- -------------------------------------------------------- + +-- +-- Table structure for table `ospos_sales_payments` +-- + +CREATE TABLE `ospos_sales_payments` ( + `sale_id` int(10) NOT NULL, + `payment_type` varchar(40) NOT NULL, + `payment_amount` decimal(15,2) NOT NULL, + PRIMARY KEY (`sale_id`,`payment_type`), + KEY `sale_id` (`sale_id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; + +-- +-- Dumping data for table `ospos_sales_payments` +-- + + +-- -------------------------------------------------------- + +-- +-- Table structure for table `ospos_sales_suspended` +-- + +CREATE TABLE `ospos_sales_suspended` ( + `sale_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, + `customer_id` int(10) DEFAULT NULL, + `employee_id` int(10) NOT NULL DEFAULT '0', + `comment` text NOT NULL, + `invoice_number` varchar(32) DEFAULT NULL, + `sale_id` int(10) NOT NULL AUTO_INCREMENT, + PRIMARY KEY (`sale_id`), + KEY `customer_id` (`customer_id`), + KEY `employee_id` (`employee_id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 ; + +-- +-- Dumping data for table `ospos_sales_suspended` +-- + + +-- -------------------------------------------------------- + +-- +-- Table structure for table `ospos_sales_suspended_items` +-- + +CREATE TABLE `ospos_sales_suspended_items` ( + `sale_id` int(10) NOT NULL DEFAULT '0', + `item_id` int(10) NOT NULL DEFAULT '0', + `description` varchar(30) DEFAULT NULL, + `serialnumber` varchar(30) DEFAULT NULL, + `line` int(3) NOT NULL DEFAULT '0', + `quantity_purchased` decimal(15,2) NOT NULL DEFAULT '0.00', + `item_cost_price` decimal(15,2) NOT NULL, + `item_unit_price` decimal(15,2) NOT NULL, + `discount_percent` decimal(15,2) NOT NULL DEFAULT '0', + `item_location` int(11) NOT NULL, + PRIMARY KEY (`sale_id`,`item_id`,`line`), + KEY `sale_id` (`sale_id`), + KEY `item_id` (`item_id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; + +-- +-- Dumping data for table `ospos_sales_suspended_items` +-- + + +-- -------------------------------------------------------- + +-- +-- Table structure for table `ospos_sales_suspended_items_taxes` +-- + +CREATE TABLE `ospos_sales_suspended_items_taxes` ( + `sale_id` int(10) NOT NULL, + `item_id` int(10) NOT NULL, + `line` int(3) NOT NULL DEFAULT '0', + `name` varchar(255) NOT NULL, + `percent` decimal(15,2) NOT NULL, + PRIMARY KEY (`sale_id`,`item_id`,`line`,`name`,`percent`), + KEY `item_id` (`item_id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; + +-- +-- Dumping data for table `ospos_sales_suspended_items_taxes` +-- + + +-- -------------------------------------------------------- + +-- +-- Table structure for table `ospos_sales_suspended_payments` +-- + +CREATE TABLE `ospos_sales_suspended_payments` ( + `sale_id` int(10) NOT NULL, + `payment_type` varchar(40) NOT NULL, + `payment_amount` decimal(15,2) NOT NULL, + PRIMARY KEY (`sale_id`,`payment_type`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; + +-- +-- Dumping data for table `ospos_sales_suspended_payments` +-- + + +-- -------------------------------------------------------- + +-- +-- Table structure for table `ospos_sessions` +-- + +CREATE TABLE `ospos_sessions` ( + `session_id` varchar(40) NOT NULL DEFAULT '0', + `ip_address` varchar(45) NOT NULL DEFAULT '0', + `user_agent` varchar(120) NOT NULL, + `last_activity` int(10) unsigned NOT NULL DEFAULT '0', + `user_data` text, + PRIMARY KEY (`session_id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; + +-- +-- Dumping data for table `ospos_sessions` +-- + +-- -------------------------------------------------------- + +-- +-- Table structure for table `ospos_stock_locations` +-- + +CREATE TABLE `ospos_stock_locations` ( + `location_id` int(11) NOT NULL AUTO_INCREMENT, + `location_name` varchar(255) DEFAULT NULL, + `deleted` int(1) NOT NULL DEFAULT '0', + PRIMARY KEY (`location_id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 ; + +-- +-- Dumping data for table `ospos_stock_locations` +-- + +INSERT INTO `ospos_stock_locations` ( `deleted`, `location_name` ) VALUES ('0', 'stock'); + +-- -------------------------------------------------------- + +-- +-- Table structure for table `ospos_suppliers` +-- + +CREATE TABLE `ospos_suppliers` ( + `person_id` int(10) NOT NULL, + `company_name` varchar(255) NOT NULL, + `agency_name` varchar(255) NOT NULL, + `account_number` varchar(255) DEFAULT NULL, + `deleted` int(1) NOT NULL DEFAULT '0', + UNIQUE KEY `account_number` (`account_number`), + KEY `person_id` (`person_id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; + +-- +-- Dumping data for table `ospos_suppliers` +-- + + + +-- +-- This migration script should be run after creating tables with the regular database script and before applying the constraints. +-- + +-- +-- Dumping data for table `ospos_customers` +-- +INSERT INTO `ospos_customers` (`person_id`, `account_number`, `taxable`, `deleted`) SELECT `person_id`, `account_number`, `taxable`, `deleted` FROM `phppos`.phppos_customers; +UPDATE `ospos_customers` c1, `ospos_customers` c2 SET `c1`.`account_number` = NULL WHERE `c1`.`person_id` > `c2`.`person_id` AND `c1`.`account_number` = `c2`.`account_number`; + +-- +-- Dumping data for table `ospos_employees` +-- + +INSERT INTO `ospos_employees` (`username`, `password`, `person_id`, `deleted`) SELECT `username`, `password`, `person_id`, `deleted` FROM `phppos`.phppos_employees; + +-- +-- Dumping data for table `ospos_inventory` +-- + +INSERT INTO `ospos_inventory` (`trans_id`, `trans_items`, `trans_user`, `trans_date`, `trans_comment`, `trans_location`, `trans_inventory`) +SELECT `trans_id`, `trans_items`, `trans_user`, `trans_date`, `trans_comment`, 1, `trans_inventory` FROM `phppos`.phppos_inventory; + +-- +-- Dumping data for table `ospos_items` +-- + +INSERT INTO `ospos_items` (`name`, `category`, `supplier_id`, `item_number`, `description`, `cost_price`, `unit_price`, `reorder_level`, `receiving_quantity`, `item_id`, `pic_id`, `allow_alt_description`, `is_serialized`, `deleted`, `custom1`, `custom2`, `custom3`, `custom4`, `custom5`, `custom6`, `custom7`, `custom8`, `custom9`, `custom10`) SELECT `name`, `category`, `supplier_id`, `item_number`, `description`, `cost_price`, `unit_price`, `reorder_level`, 1, `item_id`, NULL, `allow_alt_description`, `is_serialized`, `deleted`, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 FROM `phppos`.phppos_items; + +-- +-- Dumping data for table `ospos_items_taxes` +-- + +INSERT INTO `ospos_items_taxes` (`item_id`, `name`, `percent`) SELECT `item_id`, `name`, `percent` FROM `phppos`.phppos_items_taxes; + +-- +-- Dumping data for table `ospos_item_kits` +-- + +-- TODO add query here + +-- +-- Dumping data for table `ospos_people` +-- + +INSERT INTO `ospos_people` (`first_name`, `last_name`, `phone_number`, `email`, `address_1`, `address_2`, `city`, `state`, `zip`, `country`, `comments`, `person_id`) +SELECT `first_name`, `last_name`, `phone_number`, `email`, `address_1`, `address_2`, `city`, `state`, `zip`, `country`, `comments`, `person_id` FROM `phppos`.phppos_people; + +-- +-- Dumping data for table `ospos_receivings` +-- + +INSERT INTO `ospos_receivings` (`receiving_time`, `supplier_id`, `employee_id`, `comment`, `receiving_id`, `payment_type`, `invoice_number`) +SELECT `receiving_time`, `supplier_id`, `employee_id`, `comment`, `receiving_id`, `payment_type`, NULL FROM `phppos`.phppos_receivings; + +-- +-- Dumping data for table `ospos_receivings_items` +-- + +INSERT INTO `ospos_receivings_items` (`receiving_id`, `item_id`, `description`, `serialnumber`, `line`, `quantity_purchased`, `item_cost_price`, `item_unit_price`, `discount_percent`) +SELECT `receiving_id`, `item_id`, `description`, `serialnumber`, `line`, `quantity_purchased`, `item_cost_price`, `item_unit_price`, `discount_percent` FROM `phppos`.phppos_receivings_items; + +-- +-- Dumping data for table `ospos_sales` +-- + +INSERT INTO `ospos_sales` (`sale_time`, `customer_id`, `employee_id`, `comment`, `sale_id`, `invoice_number`) +SELECT `sale_time`, `customer_id`, `employee_id`, `comment`, `sale_id`, `invoice_number` FROM `phppos`.phppos_sales; +UPDATE `ospos_sales` c1, `ospos_sales` c2 SET `c1`.`invoice_number` = NULL WHERE `c1`.`sale_id` > `c2`.`sale_id` AND `c1`.`invoice_number` = `c2`.`invoice_number`; + +-- +-- Dumping data for table `ospos_sales_items` +-- + +INSERT INTO `ospos_sales_items` (`sale_id`, `item_id`, `description`, `serialnumber`, `line`, `quantity_purchased`, `item_cost_price`, `item_unit_price`, `discount_percent`, `item_location`) +SELECT `sale_id`, `item_id`, `description`, `serialnumber`, `line`, `quantity_purchased`, `item_cost_price`, `item_unit_price`, `discount_percent`, 1 FROM `phppos`.phppos_sales_items; + +-- +-- Dumping data for table `ospos_sales_items_taxes` +-- + +INSERT INTO `ospos_sales_items_taxes` (`sale_id`, `item_id`, `line`, `name`, `percent`) +SELECT `sale_id`, `item_id`, `line`, `name`, `percent` FROM `phppos`.phppos_sales_items_taxes; +-- -------------------------------------------------------- + +-- +-- Table structure for table `ospos_sales_payments` +-- + +-- +-- Dumping data for table `ospos_sales_payments` +-- + +INSERT INTO `ospos_sales_payments` (`sale_id`, `payment_type`, `payment_amount`) +SELECT `sale_id`, `payment_type`, `payment_amount` FROM `phppos`.phppos_sales_payments; + +INSERT INTO `ospos_stock_locations` ( `deleted`, `location_name` ) VALUES (0, 'stock'); + +-- +-- Dumping data for table `ospos_item_quantities` +-- + +INSERT INTO `ospos_item_quantities` (`item_id`, `location_id`, `quantity`) SELECT `item_id`, 1, `quantity` FROM `phppos`.`phppos_items`; + +-- +-- Dumping data for table `ospos_suppliers` +-- + +INSERT INTO `ospos_suppliers` (`person_id`, `company_name`, `account_number`, `deleted`) SELECT `person_id`, `company_name`, `account_number`, `deleted` FROM `phppos`.phppos_suppliers; + +-- Add constraints on copied data + +-- +-- Constraints for dumped tables +-- + +-- +-- Constraints for table `ospos_customers` +-- +ALTER TABLE `ospos_customers` + ADD CONSTRAINT `ospos_customers_ibfk_1` FOREIGN KEY (`person_id`) REFERENCES `ospos_people` (`person_id`); + +-- +-- Constraints for table `ospos_employees` +-- +ALTER TABLE `ospos_employees` + ADD CONSTRAINT `ospos_employees_ibfk_1` FOREIGN KEY (`person_id`) REFERENCES `ospos_people` (`person_id`); + +-- +-- Constraints for table `ospos_inventory` +-- +ALTER TABLE `ospos_inventory` + ADD CONSTRAINT `ospos_inventory_ibfk_1` FOREIGN KEY (`trans_items`) REFERENCES `ospos_items` (`item_id`), + ADD CONSTRAINT `ospos_inventory_ibfk_2` FOREIGN KEY (`trans_user`) REFERENCES `ospos_employees` (`person_id`), + ADD CONSTRAINT `ospos_inventory_ibfk_3` FOREIGN KEY (`trans_location`) REFERENCES `ospos_stock_locations` (`location_id`); + +-- +-- Constraints for table `ospos_items` +-- +ALTER TABLE `ospos_items` + ADD CONSTRAINT `ospos_items_ibfk_1` FOREIGN KEY (`supplier_id`) REFERENCES `ospos_suppliers` (`person_id`); + +-- +-- Constraints for table `ospos_items_taxes` +-- +ALTER TABLE `ospos_items_taxes` + ADD CONSTRAINT `ospos_items_taxes_ibfk_1` FOREIGN KEY (`item_id`) REFERENCES `ospos_items` (`item_id`) ON DELETE CASCADE; + +-- +-- Constraints for table `ospos_item_kit_items` +-- +ALTER TABLE `ospos_item_kit_items` + ADD CONSTRAINT `ospos_item_kit_items_ibfk_1` FOREIGN KEY (`item_kit_id`) REFERENCES `ospos_item_kits` (`item_kit_id`) ON DELETE CASCADE, + ADD CONSTRAINT `ospos_item_kit_items_ibfk_2` FOREIGN KEY (`item_id`) REFERENCES `ospos_items` (`item_id`) ON DELETE CASCADE; + +-- +-- Constraints for table `ospos_permissions` +-- +ALTER TABLE `ospos_permissions` + ADD CONSTRAINT `ospos_permissions_ibfk_1` FOREIGN KEY (`module_id`) REFERENCES `ospos_modules` (`module_id`) ON DELETE CASCADE, + ADD CONSTRAINT `ospos_permissions_ibfk_2` FOREIGN KEY (`location_id`) REFERENCES `ospos_stock_locations` (`location_id`) ON DELETE CASCADE; + +-- +-- Constraints for table `ospos_grants` +-- +ALTER TABLE `ospos_grants` + ADD CONSTRAINT `ospos_grants_ibfk_1` foreign key (`permission_id`) references `ospos_permissions` (`permission_id`) ON DELETE CASCADE, + ADD CONSTRAINT `ospos_grants_ibfk_2` foreign key (`person_id`) references `ospos_employees` (`person_id`) ON DELETE CASCADE; + +-- +-- Constraints for table `ospos_receivings` +-- +ALTER TABLE `ospos_receivings` + ADD CONSTRAINT `ospos_receivings_ibfk_1` FOREIGN KEY (`employee_id`) REFERENCES `ospos_employees` (`person_id`), + ADD CONSTRAINT `ospos_receivings_ibfk_2` FOREIGN KEY (`supplier_id`) REFERENCES `ospos_suppliers` (`person_id`); + +-- +-- Constraints for table `ospos_receivings_items` +-- +ALTER TABLE `ospos_receivings_items` + ADD CONSTRAINT `ospos_receivings_items_ibfk_1` FOREIGN KEY (`item_id`) REFERENCES `ospos_items` (`item_id`), + ADD CONSTRAINT `ospos_receivings_items_ibfk_2` FOREIGN KEY (`receiving_id`) REFERENCES `ospos_receivings` (`receiving_id`); + +-- +-- Constraints for table `ospos_sales` +-- +ALTER TABLE `ospos_sales` + ADD CONSTRAINT `ospos_sales_ibfk_1` FOREIGN KEY (`employee_id`) REFERENCES `ospos_employees` (`person_id`), + ADD CONSTRAINT `ospos_sales_ibfk_2` FOREIGN KEY (`customer_id`) REFERENCES `ospos_customers` (`person_id`); + +-- +-- Constraints for table `ospos_sales_items` +-- +ALTER TABLE `ospos_sales_items` + ADD CONSTRAINT `ospos_sales_items_ibfk_1` FOREIGN KEY (`item_id`) REFERENCES `ospos_items` (`item_id`), + ADD CONSTRAINT `ospos_sales_items_ibfk_2` FOREIGN KEY (`sale_id`) REFERENCES `ospos_sales` (`sale_id`), + ADD CONSTRAINT `ospos_sales_items_ibfk_3` FOREIGN KEY (`item_location`) REFERENCES `ospos_stock_locations` (`location_id`); + +-- +-- Constraints for table `ospos_sales_items_taxes` +-- +ALTER TABLE `ospos_sales_items_taxes` + ADD CONSTRAINT `ospos_sales_items_taxes_ibfk_1` FOREIGN KEY (`sale_id`) REFERENCES `ospos_sales_items` (`sale_id`), + ADD CONSTRAINT `ospos_sales_items_taxes_ibfk_2` FOREIGN KEY (`item_id`) REFERENCES `ospos_items` (`item_id`); + +-- +-- Constraints for table `ospos_sales_payments` +-- +ALTER TABLE `ospos_sales_payments` + ADD CONSTRAINT `ospos_sales_payments_ibfk_1` FOREIGN KEY (`sale_id`) REFERENCES `ospos_sales` (`sale_id`); + +-- +-- Constraints for table `ospos_sales_suspended` +-- +ALTER TABLE `ospos_sales_suspended` + ADD CONSTRAINT `ospos_sales_suspended_ibfk_1` FOREIGN KEY (`employee_id`) REFERENCES `ospos_employees` (`person_id`), + ADD CONSTRAINT `ospos_sales_suspended_ibfk_2` FOREIGN KEY (`customer_id`) REFERENCES `ospos_customers` (`person_id`); + +-- +-- Constraints for table `ospos_sales_suspended_items` +-- +ALTER TABLE `ospos_sales_suspended_items` + ADD CONSTRAINT `ospos_sales_suspended_items_ibfk_1` FOREIGN KEY (`item_id`) REFERENCES `ospos_items` (`item_id`), + ADD CONSTRAINT `ospos_sales_suspended_items_ibfk_2` FOREIGN KEY (`sale_id`) REFERENCES `ospos_sales_suspended` (`sale_id`), + ADD CONSTRAINT `ospos_sales_suspended_items_ibfk_3` FOREIGN KEY (`item_location`) REFERENCES `ospos_stock_locations` (`location_id`); + +-- +-- Constraints for table `ospos_sales_suspended_items_taxes` +-- +ALTER TABLE `ospos_sales_suspended_items_taxes` + ADD CONSTRAINT `ospos_sales_suspended_items_taxes_ibfk_1` FOREIGN KEY (`sale_id`) REFERENCES `ospos_sales_suspended_items` (`sale_id`), + ADD CONSTRAINT `ospos_sales_suspended_items_taxes_ibfk_2` FOREIGN KEY (`item_id`) REFERENCES `ospos_items` (`item_id`); + +-- +-- Constraints for table `ospos_sales_suspended_payments` +-- +ALTER TABLE `ospos_sales_suspended_payments` + ADD CONSTRAINT `ospos_sales_suspended_payments_ibfk_1` FOREIGN KEY (`sale_id`) REFERENCES `ospos_sales_suspended` (`sale_id`); + +-- +-- Constraints for table `ospos_item_quantities` +-- +ALTER TABLE `ospos_item_quantities` + ADD CONSTRAINT `ospos_item_quantities_ibfk_1` FOREIGN KEY (`item_id`) REFERENCES `ospos_items` (`item_id`), + ADD CONSTRAINT `ospos_item_quantities_ibfk_2` FOREIGN KEY (`location_id`) REFERENCES `ospos_stock_locations` (`location_id`); + +-- +-- Constraints for table `ospos_suppliers` +-- +ALTER TABLE `ospos_suppliers` + ADD CONSTRAINT `ospos_suppliers_ibfk_1` FOREIGN KEY (`person_id`) REFERENCES `ospos_people` (`person_id`); + +-- +-- Constraints for table `ospos_giftcards` +-- +ALTER TABLE `ospos_giftcards` + ADD CONSTRAINT `ospos_giftcards_ibfk_1` FOREIGN KEY (`person_id`) REFERENCES `ospos_people` (`person_id`); + diff --git a/database/phppos_migrate.sql b/database/phppos_migrate.sql index d8163f619..d81533d46 100644 --- a/database/phppos_migrate.sql +++ b/database/phppos_migrate.sql @@ -2,8 +2,6 @@ -- This migration script should be run after creating tables with the regular database script and before applying the constraints. -- -SOURCE tables.sql; - -- -- Dumping data for table `ospos_customers` -- @@ -111,4 +109,3 @@ INSERT INTO `ospos_item_quantities` (`item_id`, `location_id`, `quantity`) SELE INSERT INTO `ospos_suppliers` (`person_id`, `company_name`, `account_number`, `deleted`) SELECT `person_id`, `company_name`, `account_number`, `deleted` FROM `phppos`.phppos_suppliers; -- Add constraints on copied data -SOURCE constraints.sql; diff --git a/foreground.sh b/foreground.sh new file mode 100644 index 000000000..565c55c6f --- /dev/null +++ b/foreground.sh @@ -0,0 +1,9 @@ +#!/bin/bash + +read pid cmd state ppid pgrp session tty_nr tpgid rest < /proc/self/stat +trap "kill -TERM -$pgrp; exit" EXIT TERM KILL SIGKILL SIGTERM SIGQUIT + + +source /etc/apache2/envvars +apache2 -D FOREGROUND + diff --git a/start_container.sh b/start_container.sh index 342a27d08..89763835b 100644 --- a/start_container.sh +++ b/start_container.sh @@ -5,6 +5,7 @@ if [ ! -f /mysql-configured ]; then MYSQL_PASSWORD=`pwgen -c -n -1 12` echo mysql root password: $MYSQL_PASSWORD echo $MYSQL_PASSWORD > /mysql-root-pw.txt + [ -f /var/www/html/index.html ] && rm /var/www/html/index.html mysqladmin -u root password $MYSQL_PASSWORD cp /app/application/config/database.php.tmpl /app/application/config/database.php sed -i "s/\(password...=.\).*/\1'${MYSQL_PASSWORD}';/g" /app/application/config/database.php diff --git a/supervisor.conf b/supervisor.conf new file mode 100644 index 000000000..a4270360a --- /dev/null +++ b/supervisor.conf @@ -0,0 +1,147 @@ +; Sample supervisor config file. +; +; For more information on the config file, please see: +; http://supervisord.org/configuration.html +; +; Note: shell expansion ("~" or "$HOME") is not supported. Environment +; variables can be expanded using this syntax: "%(ENV_HOME)s". + +[unix_http_server] +file=/tmp/supervisor.sock ; (the path to the socket file) +;chmod=0700 ; socket file mode (default 0700) +;chown=nobody:nogroup ; socket file uid:gid owner +;username=user ; (default is no username (open server)) +;password=123 ; (default is no password (open server)) + +;[inet_http_server] ; inet (TCP) server disabled by default +;port=127.0.0.1:9001 ; (ip_address:port specifier, *:port for all iface) +;username=user ; (default is no username (open server)) +;password=123 ; (default is no password (open server)) + +[supervisord] +logfile=/tmp/supervisord.log ; (main log file;default $CWD/supervisord.log) +logfile_maxbytes=50MB ; (max main logfile bytes b4 rotation;default 50MB) +logfile_backups=10 ; (num of main logfile rotation backups;default 10) +loglevel=info ; (log level;default info; others: debug,warn,trace) +pidfile=/tmp/supervisord.pid ; (supervisord pidfile;default supervisord.pid) +nodaemon=false ; (start in foreground if true;default false) +minfds=1024 ; (min. avail startup file descriptors;default 1024) +minprocs=200 ; (min. avail process descriptors;default 200) +;umask=022 ; (process file creation umask;default 022) +;user=chrism ; (default is current user, required if root) +;identifier=supervisor ; (supervisord identifier, default is 'supervisor') +;directory=/tmp ; (default is not to cd during start) +;nocleanup=true ; (don't clean up tempfiles at start;default false) +;childlogdir=/tmp ; ('AUTO' child log dir, default $TEMP) +;environment=KEY=value ; (key value pairs to add to environment) +;strip_ansi=false ; (strip ansi escape codes in logs; def. false) + +; the below section must remain in the config file for RPC +; (supervisorctl/web interface) to work, additional interfaces may be +; added by defining them in separate rpcinterface: sections +[rpcinterface:supervisor] +supervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface + +[supervisorctl] +serverurl=unix:///tmp/supervisor.sock ; use a unix:// URL for a unix socket +;serverurl=http://127.0.0.1:9001 ; use an http:// url to specify an inet socket +;username=chris ; should be same as http_username if set +;password=123 ; should be same as http_password if set +;prompt=mysupervisor ; cmd line prompt (default "supervisor") +;history_file=~/.sc_history ; use readline history if available + +; The below sample program section shows all possible program subsection values, +; create one or more 'real' program: sections to be able to control them under +; supervisor. + +;[program:theprogramname] +;command=/bin/cat ; the program (relative uses PATH, can take args) +;process_name=%(program_name)s ; process_name expr (default %(program_name)s) +;numprocs=1 ; number of processes copies to start (def 1) +;directory=/tmp ; directory to cwd to before exec (def no cwd) +;umask=022 ; umask for process (default None) +;priority=999 ; the relative start priority (default 999) +;autostart=true ; start at supervisord start (default: true) +;autorestart=unexpected ; whether/when to restart (default: unexpected) +;startsecs=1 ; number of secs prog must stay running (def. 1) +;startretries=3 ; max # of serial start failures (default 3) +;exitcodes=0,2 ; 'expected' exit codes for process (default 0,2) +;stopsignal=QUIT ; signal used to kill process (default TERM) +;stopwaitsecs=10 ; max num secs to wait b4 SIGKILL (default 10) +;stopasgroup=false ; send stop signal to the UNIX process group (default false) +;killasgroup=false ; SIGKILL the UNIX process group (def false) +;user=chrism ; setuid to this UNIX account to run the program +;redirect_stderr=true ; redirect proc stderr to stdout (default false) +;stdout_logfile=/a/path ; stdout log path, NONE for none; default AUTO +;stdout_logfile_maxbytes=1MB ; max # logfile bytes b4 rotation (default 50MB) +;stdout_logfile_backups=10 ; # of stdout logfile backups (default 10) +;stdout_capture_maxbytes=1MB ; number of bytes in 'capturemode' (default 0) +;stdout_events_enabled=false ; emit events on stdout writes (default false) +;stderr_logfile=/a/path ; stderr log path, NONE for none; default AUTO +;stderr_logfile_maxbytes=1MB ; max # logfile bytes b4 rotation (default 50MB) +;stderr_logfile_backups=10 ; # of stderr logfile backups (default 10) +;stderr_capture_maxbytes=1MB ; number of bytes in 'capturemode' (default 0) +;stderr_events_enabled=false ; emit events on stderr writes (default false) +;environment=A=1,B=2 ; process environment additions (def no adds) +;serverurl=AUTO ; override serverurl computation (childutils) + +; The below sample eventlistener section shows all possible +; eventlistener subsection values, create one or more 'real' +; eventlistener: sections to be able to handle event notifications +; sent by supervisor. + +;[eventlistener:theeventlistenername] +;command=/bin/eventlistener ; the program (relative uses PATH, can take args) +;process_name=%(program_name)s ; process_name expr (default %(program_name)s) +;numprocs=1 ; number of processes copies to start (def 1) +;events=EVENT ; event notif. types to subscribe to (req'd) +;buffer_size=10 ; event buffer queue size (default 10) +;directory=/tmp ; directory to cwd to before exec (def no cwd) +;umask=022 ; umask for process (default None) +;priority=-1 ; the relative start priority (default -1) +;autostart=true ; start at supervisord start (default: true) +;autorestart=unexpected ; whether/when to restart (default: unexpected) +;startsecs=1 ; number of secs prog must stay running (def. 1) +;startretries=3 ; max # of serial start failures (default 3) +;exitcodes=0,2 ; 'expected' exit codes for process (default 0,2) +;stopsignal=QUIT ; signal used to kill process (default TERM) +;stopwaitsecs=10 ; max num secs to wait b4 SIGKILL (default 10) +;stopasgroup=false ; send stop signal to the UNIX process group (default false) +;killasgroup=false ; SIGKILL the UNIX process group (def false) +;user=chrism ; setuid to this UNIX account to run the program +;redirect_stderr=true ; redirect proc stderr to stdout (default false) +;stdout_logfile=/a/path ; stdout log path, NONE for none; default AUTO +;stdout_logfile_maxbytes=1MB ; max # logfile bytes b4 rotation (default 50MB) +;stdout_logfile_backups=10 ; # of stdout logfile backups (default 10) +;stdout_events_enabled=false ; emit events on stdout writes (default false) +;stderr_logfile=/a/path ; stderr log path, NONE for none; default AUTO +;stderr_logfile_maxbytes=1MB ; max # logfile bytes b4 rotation (default 50MB) +;stderr_logfile_backups ; # of stderr logfile backups (default 10) +;stderr_events_enabled=false ; emit events on stderr writes (default false) +;environment=A=1,B=2 ; process environment additions +;serverurl=AUTO ; override serverurl computation (childutils) + +; The below sample group section shows all possible group values, +; create one or more 'real' group: sections to create "heterogeneous" +; process groups. + +;[group:thegroupname] +;programs=progname1,progname2 ; each refers to 'x' in [program:x] definitions +;priority=999 ; the relative start priority (default 999) + +; The [include] section can just contain the "files" setting. This +; setting can list multiple files (separated by whitespace or +; newlines). It can also contain wildcards. The filenames are +; interpreted as relative to this file. Included files *cannot* +; include files themselves. + +;[include] +;files = relative/directory/*.ini +;mysql and apache2 +[program:mysqld] +command=/usr/bin/mysqld_safe +[program:httpd] +command=/etc/apache2/foreground.sh +stopsignal=6 + + diff --git a/supervisord.conf b/supervisord.conf new file mode 100644 index 000000000..a4270360a --- /dev/null +++ b/supervisord.conf @@ -0,0 +1,147 @@ +; Sample supervisor config file. +; +; For more information on the config file, please see: +; http://supervisord.org/configuration.html +; +; Note: shell expansion ("~" or "$HOME") is not supported. Environment +; variables can be expanded using this syntax: "%(ENV_HOME)s". + +[unix_http_server] +file=/tmp/supervisor.sock ; (the path to the socket file) +;chmod=0700 ; socket file mode (default 0700) +;chown=nobody:nogroup ; socket file uid:gid owner +;username=user ; (default is no username (open server)) +;password=123 ; (default is no password (open server)) + +;[inet_http_server] ; inet (TCP) server disabled by default +;port=127.0.0.1:9001 ; (ip_address:port specifier, *:port for all iface) +;username=user ; (default is no username (open server)) +;password=123 ; (default is no password (open server)) + +[supervisord] +logfile=/tmp/supervisord.log ; (main log file;default $CWD/supervisord.log) +logfile_maxbytes=50MB ; (max main logfile bytes b4 rotation;default 50MB) +logfile_backups=10 ; (num of main logfile rotation backups;default 10) +loglevel=info ; (log level;default info; others: debug,warn,trace) +pidfile=/tmp/supervisord.pid ; (supervisord pidfile;default supervisord.pid) +nodaemon=false ; (start in foreground if true;default false) +minfds=1024 ; (min. avail startup file descriptors;default 1024) +minprocs=200 ; (min. avail process descriptors;default 200) +;umask=022 ; (process file creation umask;default 022) +;user=chrism ; (default is current user, required if root) +;identifier=supervisor ; (supervisord identifier, default is 'supervisor') +;directory=/tmp ; (default is not to cd during start) +;nocleanup=true ; (don't clean up tempfiles at start;default false) +;childlogdir=/tmp ; ('AUTO' child log dir, default $TEMP) +;environment=KEY=value ; (key value pairs to add to environment) +;strip_ansi=false ; (strip ansi escape codes in logs; def. false) + +; the below section must remain in the config file for RPC +; (supervisorctl/web interface) to work, additional interfaces may be +; added by defining them in separate rpcinterface: sections +[rpcinterface:supervisor] +supervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface + +[supervisorctl] +serverurl=unix:///tmp/supervisor.sock ; use a unix:// URL for a unix socket +;serverurl=http://127.0.0.1:9001 ; use an http:// url to specify an inet socket +;username=chris ; should be same as http_username if set +;password=123 ; should be same as http_password if set +;prompt=mysupervisor ; cmd line prompt (default "supervisor") +;history_file=~/.sc_history ; use readline history if available + +; The below sample program section shows all possible program subsection values, +; create one or more 'real' program: sections to be able to control them under +; supervisor. + +;[program:theprogramname] +;command=/bin/cat ; the program (relative uses PATH, can take args) +;process_name=%(program_name)s ; process_name expr (default %(program_name)s) +;numprocs=1 ; number of processes copies to start (def 1) +;directory=/tmp ; directory to cwd to before exec (def no cwd) +;umask=022 ; umask for process (default None) +;priority=999 ; the relative start priority (default 999) +;autostart=true ; start at supervisord start (default: true) +;autorestart=unexpected ; whether/when to restart (default: unexpected) +;startsecs=1 ; number of secs prog must stay running (def. 1) +;startretries=3 ; max # of serial start failures (default 3) +;exitcodes=0,2 ; 'expected' exit codes for process (default 0,2) +;stopsignal=QUIT ; signal used to kill process (default TERM) +;stopwaitsecs=10 ; max num secs to wait b4 SIGKILL (default 10) +;stopasgroup=false ; send stop signal to the UNIX process group (default false) +;killasgroup=false ; SIGKILL the UNIX process group (def false) +;user=chrism ; setuid to this UNIX account to run the program +;redirect_stderr=true ; redirect proc stderr to stdout (default false) +;stdout_logfile=/a/path ; stdout log path, NONE for none; default AUTO +;stdout_logfile_maxbytes=1MB ; max # logfile bytes b4 rotation (default 50MB) +;stdout_logfile_backups=10 ; # of stdout logfile backups (default 10) +;stdout_capture_maxbytes=1MB ; number of bytes in 'capturemode' (default 0) +;stdout_events_enabled=false ; emit events on stdout writes (default false) +;stderr_logfile=/a/path ; stderr log path, NONE for none; default AUTO +;stderr_logfile_maxbytes=1MB ; max # logfile bytes b4 rotation (default 50MB) +;stderr_logfile_backups=10 ; # of stderr logfile backups (default 10) +;stderr_capture_maxbytes=1MB ; number of bytes in 'capturemode' (default 0) +;stderr_events_enabled=false ; emit events on stderr writes (default false) +;environment=A=1,B=2 ; process environment additions (def no adds) +;serverurl=AUTO ; override serverurl computation (childutils) + +; The below sample eventlistener section shows all possible +; eventlistener subsection values, create one or more 'real' +; eventlistener: sections to be able to handle event notifications +; sent by supervisor. + +;[eventlistener:theeventlistenername] +;command=/bin/eventlistener ; the program (relative uses PATH, can take args) +;process_name=%(program_name)s ; process_name expr (default %(program_name)s) +;numprocs=1 ; number of processes copies to start (def 1) +;events=EVENT ; event notif. types to subscribe to (req'd) +;buffer_size=10 ; event buffer queue size (default 10) +;directory=/tmp ; directory to cwd to before exec (def no cwd) +;umask=022 ; umask for process (default None) +;priority=-1 ; the relative start priority (default -1) +;autostart=true ; start at supervisord start (default: true) +;autorestart=unexpected ; whether/when to restart (default: unexpected) +;startsecs=1 ; number of secs prog must stay running (def. 1) +;startretries=3 ; max # of serial start failures (default 3) +;exitcodes=0,2 ; 'expected' exit codes for process (default 0,2) +;stopsignal=QUIT ; signal used to kill process (default TERM) +;stopwaitsecs=10 ; max num secs to wait b4 SIGKILL (default 10) +;stopasgroup=false ; send stop signal to the UNIX process group (default false) +;killasgroup=false ; SIGKILL the UNIX process group (def false) +;user=chrism ; setuid to this UNIX account to run the program +;redirect_stderr=true ; redirect proc stderr to stdout (default false) +;stdout_logfile=/a/path ; stdout log path, NONE for none; default AUTO +;stdout_logfile_maxbytes=1MB ; max # logfile bytes b4 rotation (default 50MB) +;stdout_logfile_backups=10 ; # of stdout logfile backups (default 10) +;stdout_events_enabled=false ; emit events on stdout writes (default false) +;stderr_logfile=/a/path ; stderr log path, NONE for none; default AUTO +;stderr_logfile_maxbytes=1MB ; max # logfile bytes b4 rotation (default 50MB) +;stderr_logfile_backups ; # of stderr logfile backups (default 10) +;stderr_events_enabled=false ; emit events on stderr writes (default false) +;environment=A=1,B=2 ; process environment additions +;serverurl=AUTO ; override serverurl computation (childutils) + +; The below sample group section shows all possible group values, +; create one or more 'real' group: sections to create "heterogeneous" +; process groups. + +;[group:thegroupname] +;programs=progname1,progname2 ; each refers to 'x' in [program:x] definitions +;priority=999 ; the relative start priority (default 999) + +; The [include] section can just contain the "files" setting. This +; setting can list multiple files (separated by whitespace or +; newlines). It can also contain wildcards. The filenames are +; interpreted as relative to this file. Included files *cannot* +; include files themselves. + +;[include] +;files = relative/directory/*.ini +;mysql and apache2 +[program:mysqld] +command=/usr/bin/mysqld_safe +[program:httpd] +command=/etc/apache2/foreground.sh +stopsignal=6 + +