Final prep for production
This commit is contained in:
+590
@@ -0,0 +1,590 @@
|
||||
-- MN3 WMS — Production Install Script
|
||||
-- Generated: 2026-05-12
|
||||
-- Apply with: mysql -uroot -p<password> < install.sql
|
||||
--
|
||||
-- Creates both databases from scratch (safe to re-run on an empty server).
|
||||
-- If the databases already exist this script will DROP and recreate every table,
|
||||
-- so do NOT run against a live database that has data.
|
||||
|
||||
SET NAMES utf8mb4;
|
||||
SET FOREIGN_KEY_CHECKS = 0;
|
||||
SET UNIQUE_CHECKS = 0;
|
||||
SET SQL_MODE = 'NO_AUTO_VALUE_ON_ZERO';
|
||||
|
||||
-- ============================================================
|
||||
-- DATABASE: wms (system / multi-tenant)
|
||||
-- ============================================================
|
||||
|
||||
CREATE DATABASE IF NOT EXISTS `wms`
|
||||
CHARACTER SET utf8mb3
|
||||
COLLATE utf8mb3_general_ci;
|
||||
|
||||
USE `wms`;
|
||||
|
||||
-- --------------------------------------------------------
|
||||
-- schema_migrations (migration tracker)
|
||||
-- --------------------------------------------------------
|
||||
DROP TABLE IF EXISTS `schema_migrations`;
|
||||
CREATE TABLE `schema_migrations` (
|
||||
`version` varchar(64) NOT NULL,
|
||||
`applied_at` datetime NOT NULL DEFAULT current_timestamp(),
|
||||
PRIMARY KEY (`version`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_general_ci;
|
||||
|
||||
-- --------------------------------------------------------
|
||||
-- company_list
|
||||
-- --------------------------------------------------------
|
||||
DROP TABLE IF EXISTS `company_list`;
|
||||
CREATE TABLE `company_list` (
|
||||
`company_id` int(11) NOT NULL AUTO_INCREMENT,
|
||||
`channel_name` varchar(100) NOT NULL DEFAULT '' COMMENT 'Unique slug used for login routing',
|
||||
`company_name` varchar(255) NOT NULL DEFAULT '',
|
||||
`company_name2` varchar(255) NOT NULL DEFAULT '' COMMENT 'Secondary name / English name',
|
||||
`company_logo` varchar(255) NOT NULL DEFAULT '' COMMENT 'Uploaded logo filename',
|
||||
`company_seal` varchar(255) NOT NULL DEFAULT '' COMMENT 'Uploaded seal/stamp filename',
|
||||
`branch` varchar(255) NOT NULL DEFAULT 'สำนักงานใหญ่',
|
||||
`branch_no` varchar(50) NOT NULL DEFAULT '',
|
||||
`fiscal_year` varchar(10) NOT NULL DEFAULT '',
|
||||
`fx` varchar(10) NOT NULL DEFAULT 'thb' COMMENT 'Default currency',
|
||||
`address` text NOT NULL DEFAULT '',
|
||||
`address2` text NOT NULL DEFAULT '',
|
||||
`tax_id` varchar(50) NOT NULL DEFAULT '',
|
||||
`prompt_pay` varchar(50) NOT NULL DEFAULT '',
|
||||
`entrepreneur` varchar(100) NOT NULL DEFAULT '',
|
||||
`email` varchar(255) NOT NULL DEFAULT '',
|
||||
`phone` varchar(50) NOT NULL DEFAULT '',
|
||||
`fax` varchar(50) NOT NULL DEFAULT '',
|
||||
`website` varchar(255) NOT NULL DEFAULT '',
|
||||
`facebook_page` varchar(255) NOT NULL DEFAULT '',
|
||||
PRIMARY KEY (`company_id`),
|
||||
UNIQUE KEY `channel_name` (`channel_name`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_general_ci;
|
||||
|
||||
-- --------------------------------------------------------
|
||||
-- company_map_user
|
||||
-- --------------------------------------------------------
|
||||
DROP TABLE IF EXISTS `company_map_user`;
|
||||
CREATE TABLE `company_map_user` (
|
||||
`map_id` int(10) unsigned NOT NULL AUTO_INCREMENT,
|
||||
`company_id` int(11) DEFAULT NULL,
|
||||
`user_id` int(11) DEFAULT NULL,
|
||||
`role` varchar(15) NOT NULL DEFAULT 'user' COMMENT '9=creator/admin, 0=user',
|
||||
`not_allow` text NOT NULL,
|
||||
`start` varchar(50) NOT NULL,
|
||||
`visibility` varchar(1) NOT NULL DEFAULT '0' COMMENT '0=all, 1=own-only',
|
||||
`no_access_contact` text NOT NULL,
|
||||
`cost` int(1) NOT NULL DEFAULT 1 COMMENT '1=see cost, 0=hide cost',
|
||||
`lock_price` varchar(1024) NOT NULL DEFAULT '',
|
||||
`invite_token` varchar(64) DEFAULT NULL,
|
||||
`created_at` datetime DEFAULT NULL,
|
||||
PRIMARY KEY (`map_id`),
|
||||
KEY `user_id` (`user_id`),
|
||||
KEY `company_id` (`company_id`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_general_ci;
|
||||
|
||||
-- --------------------------------------------------------
|
||||
-- company_setting
|
||||
-- --------------------------------------------------------
|
||||
DROP TABLE IF EXISTS `company_setting`;
|
||||
CREATE TABLE `company_setting` (
|
||||
`id` int(11) unsigned NOT NULL AUTO_INCREMENT,
|
||||
`company_id` int(11) NOT NULL,
|
||||
`setting_key` varchar(64) NOT NULL,
|
||||
`value` varchar(255) NOT NULL DEFAULT '',
|
||||
`updated_at` datetime DEFAULT NULL,
|
||||
`log` mediumtext DEFAULT NULL,
|
||||
PRIMARY KEY (`id`),
|
||||
UNIQUE KEY `company_key` (`company_id`, `setting_key`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_general_ci;
|
||||
|
||||
-- --------------------------------------------------------
|
||||
-- company_smtp
|
||||
-- --------------------------------------------------------
|
||||
DROP TABLE IF EXISTS `company_smtp`;
|
||||
CREATE TABLE `company_smtp` (
|
||||
`smtp_id` int(10) unsigned NOT NULL AUTO_INCREMENT,
|
||||
`company_id` int(10) unsigned NOT NULL,
|
||||
`server` varchar(255) NOT NULL,
|
||||
`port` varchar(10) NOT NULL DEFAULT '587',
|
||||
`username` varchar(255) NOT NULL,
|
||||
`password` text NOT NULL,
|
||||
`from_name` varchar(255) NOT NULL DEFAULT '',
|
||||
`from_email` varchar(255) NOT NULL DEFAULT '',
|
||||
`encryption` enum('tls','ssl','none') NOT NULL DEFAULT 'tls',
|
||||
`updated_at` datetime DEFAULT NULL,
|
||||
PRIMARY KEY (`smtp_id`),
|
||||
UNIQUE KEY `uq_company_smtp` (`company_id`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
||||
|
||||
-- --------------------------------------------------------
|
||||
-- user
|
||||
-- --------------------------------------------------------
|
||||
DROP TABLE IF EXISTS `user`;
|
||||
CREATE TABLE `user` (
|
||||
`user_id` int(10) unsigned NOT NULL AUTO_INCREMENT,
|
||||
`username` varchar(255) NOT NULL,
|
||||
`password` varchar(255) NOT NULL,
|
||||
`email` varchar(255) NOT NULL,
|
||||
`status` varchar(40) NOT NULL DEFAULT 'not activated',
|
||||
`name` tinytext NOT NULL,
|
||||
`surname` tinytext NOT NULL,
|
||||
`address` tinytext DEFAULT NULL,
|
||||
`country` varchar(50) NOT NULL DEFAULT '',
|
||||
`profile_picture` tinytext NOT NULL,
|
||||
`default_company` int(11) DEFAULT 0,
|
||||
`language` varchar(3) NOT NULL DEFAULT 'th',
|
||||
`regis_date` timestamp NOT NULL DEFAULT current_timestamp(),
|
||||
`license` enum('owner','user') NOT NULL DEFAULT 'owner',
|
||||
`active` varchar(255) NOT NULL DEFAULT 'yes',
|
||||
`phone` varchar(50) NOT NULL DEFAULT '',
|
||||
`verify_token` varchar(64) DEFAULT NULL,
|
||||
`verify_expires_at` datetime DEFAULT NULL,
|
||||
`login_attempts` int(11) NOT NULL DEFAULT 0,
|
||||
`locked_until` datetime DEFAULT NULL,
|
||||
PRIMARY KEY (`user_id`),
|
||||
UNIQUE KEY `username` (`username`),
|
||||
UNIQUE KEY `email` (`email`),
|
||||
KEY `idx_user_verify_token` (`verify_token`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_general_ci;
|
||||
|
||||
-- --------------------------------------------------------
|
||||
-- whitelist
|
||||
-- --------------------------------------------------------
|
||||
DROP TABLE IF EXISTS `whitelist`;
|
||||
CREATE TABLE `whitelist` (
|
||||
`list_id` int(10) unsigned NOT NULL AUTO_INCREMENT,
|
||||
`cookie` varchar(32) NOT NULL,
|
||||
`status` int(11) NOT NULL DEFAULT 1 COMMENT '0=block, 1=wait, 2=allow',
|
||||
`ip` varchar(20) NOT NULL,
|
||||
`dt` timestamp NOT NULL DEFAULT current_timestamp(),
|
||||
PRIMARY KEY (`list_id`),
|
||||
UNIQUE KEY `cookie` (`cookie`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_general_ci;
|
||||
|
||||
|
||||
-- ============================================================
|
||||
-- DATABASE: wms2 (operational WMS data)
|
||||
-- ============================================================
|
||||
|
||||
CREATE DATABASE IF NOT EXISTS `wms2`
|
||||
CHARACTER SET utf8mb3
|
||||
COLLATE utf8mb3_general_ci;
|
||||
|
||||
USE `wms2`;
|
||||
|
||||
-- --------------------------------------------------------
|
||||
-- md_barcode
|
||||
-- --------------------------------------------------------
|
||||
DROP TABLE IF EXISTS `md_barcode`;
|
||||
CREATE TABLE `md_barcode` (
|
||||
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
|
||||
`company_id` int(10) unsigned NOT NULL,
|
||||
`barcode_type` varchar(20) NOT NULL,
|
||||
`barcode` varchar(320) NOT NULL,
|
||||
`product_sku` varchar(100) DEFAULT NULL,
|
||||
`lot_number` varchar(100) DEFAULT NULL,
|
||||
`serial_number` varchar(100) DEFAULT NULL,
|
||||
`warehouse_id` int(10) unsigned DEFAULT NULL,
|
||||
`zone` varchar(100) DEFAULT NULL,
|
||||
`aisle` varchar(100) DEFAULT NULL,
|
||||
`rack` varchar(100) DEFAULT NULL,
|
||||
`print_count` int(10) unsigned NOT NULL DEFAULT 0,
|
||||
`last_printed_dt` datetime DEFAULT NULL,
|
||||
`created_dt` datetime NOT NULL DEFAULT current_timestamp(),
|
||||
`status` tinyint(4) NOT NULL DEFAULT 1,
|
||||
PRIMARY KEY (`id`),
|
||||
UNIQUE KEY `company_id_barcode` (`company_id`, `barcode`),
|
||||
KEY `company_id_type` (`company_id`, `barcode_type`),
|
||||
KEY `company_id_product_lot` (`company_id`, `product_sku`, `lot_number`),
|
||||
KEY `company_id_location` (`company_id`, `warehouse_id`, `zone`, `aisle`, `rack`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_general_ci;
|
||||
|
||||
-- --------------------------------------------------------
|
||||
-- md_contact
|
||||
-- --------------------------------------------------------
|
||||
DROP TABLE IF EXISTS `md_contact`;
|
||||
CREATE TABLE `md_contact` (
|
||||
`id` int(11) unsigned NOT NULL AUTO_INCREMENT,
|
||||
`company_id` int(11) NOT NULL DEFAULT 0,
|
||||
`contact_name` varchar(255) NOT NULL,
|
||||
`tax_id` varchar(255) NOT NULL,
|
||||
`organization` varchar(255) NOT NULL,
|
||||
`branch` varchar(255) NOT NULL,
|
||||
`contact_type` int(11) unsigned NOT NULL,
|
||||
`billing_address` text NOT NULL,
|
||||
`shipping_location` varchar(255) NOT NULL,
|
||||
`shipping_address` text NOT NULL,
|
||||
`remark` text NOT NULL,
|
||||
`contact_image` mediumtext NOT NULL,
|
||||
`status` int(1) unsigned NOT NULL DEFAULT 1 COMMENT '0=inactive, 1=active',
|
||||
`log` mediumtext NOT NULL DEFAULT '{}',
|
||||
PRIMARY KEY (`id`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_general_ci;
|
||||
|
||||
-- --------------------------------------------------------
|
||||
-- md_contact_type
|
||||
-- --------------------------------------------------------
|
||||
DROP TABLE IF EXISTS `md_contact_type`;
|
||||
CREATE TABLE `md_contact_type` (
|
||||
`id` int(11) unsigned NOT NULL AUTO_INCREMENT,
|
||||
`company_id` int(11) NOT NULL DEFAULT 0,
|
||||
`contact_type` varchar(255) NOT NULL DEFAULT '',
|
||||
`description` text NOT NULL DEFAULT '',
|
||||
`status` int(1) NOT NULL DEFAULT 1 COMMENT '0=inactive, 1=active',
|
||||
`log` mediumtext NOT NULL DEFAULT '{}',
|
||||
PRIMARY KEY (`id`),
|
||||
UNIQUE KEY `company_id_product_id` (`company_id`, `contact_type`),
|
||||
KEY `company_id` (`company_id`),
|
||||
KEY `product_id` (`contact_type`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_general_ci;
|
||||
|
||||
-- --------------------------------------------------------
|
||||
-- md_lot
|
||||
-- --------------------------------------------------------
|
||||
DROP TABLE IF EXISTS `md_lot`;
|
||||
CREATE TABLE `md_lot` (
|
||||
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
|
||||
`company_id` int(10) unsigned NOT NULL,
|
||||
`product_sku` varchar(100) NOT NULL,
|
||||
`lot_number` varchar(100) NOT NULL,
|
||||
`expiry_date` date NOT NULL,
|
||||
`description` varchar(255) DEFAULT NULL,
|
||||
PRIMARY KEY (`id`),
|
||||
UNIQUE KEY `company_id_product_sku_lot_number` (`company_id`, `product_sku`, `lot_number`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_general_ci;
|
||||
|
||||
-- --------------------------------------------------------
|
||||
-- md_product
|
||||
-- --------------------------------------------------------
|
||||
DROP TABLE IF EXISTS `md_product`;
|
||||
CREATE TABLE `md_product` (
|
||||
`id` int(11) unsigned NOT NULL AUTO_INCREMENT,
|
||||
`company_id` int(11) NOT NULL DEFAULT 0,
|
||||
`product_name` varchar(255) NOT NULL DEFAULT '',
|
||||
`sku` varchar(255) NOT NULL DEFAULT '',
|
||||
`barcode` varchar(64) DEFAULT NULL,
|
||||
`price` decimal(18,4) NOT NULL DEFAULT 0.0000,
|
||||
`cost_price` decimal(15,2) NOT NULL DEFAULT 0.00,
|
||||
`uom` varchar(20) NOT NULL DEFAULT 'pcs',
|
||||
`min_stock` decimal(18,4) NOT NULL DEFAULT 0.0000,
|
||||
`reorder_point` decimal(18,4) NOT NULL DEFAULT 0.0000,
|
||||
`category` int(11) NOT NULL DEFAULT 0,
|
||||
`product_image` text NOT NULL DEFAULT '',
|
||||
`description` text NOT NULL DEFAULT '',
|
||||
`status` int(1) NOT NULL DEFAULT 1 COMMENT '0=inactive, 1=active',
|
||||
`log` mediumtext NOT NULL DEFAULT '{}',
|
||||
PRIMARY KEY (`id`),
|
||||
UNIQUE KEY `company_id_product_id` (`company_id`, `product_name`),
|
||||
KEY `company_id` (`company_id`),
|
||||
KEY `product_id` (`product_name`),
|
||||
KEY `idx_product_barcode` (`company_id`, `barcode`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_general_ci;
|
||||
|
||||
-- --------------------------------------------------------
|
||||
-- md_product_category
|
||||
-- --------------------------------------------------------
|
||||
DROP TABLE IF EXISTS `md_product_category`;
|
||||
CREATE TABLE `md_product_category` (
|
||||
`id` int(11) unsigned NOT NULL AUTO_INCREMENT,
|
||||
`company_id` int(11) NOT NULL DEFAULT 0,
|
||||
`category` varchar(255) NOT NULL DEFAULT '',
|
||||
`slug` varchar(255) NOT NULL DEFAULT '',
|
||||
`description` text NOT NULL DEFAULT '',
|
||||
`status` int(1) NOT NULL DEFAULT 1 COMMENT '0=inactive, 1=active',
|
||||
`log` mediumtext NOT NULL DEFAULT '{}',
|
||||
PRIMARY KEY (`id`),
|
||||
UNIQUE KEY `company_id_product_id` (`company_id`, `category`),
|
||||
KEY `company_id` (`company_id`),
|
||||
KEY `product_id` (`category`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_general_ci;
|
||||
|
||||
-- --------------------------------------------------------
|
||||
-- md_rack
|
||||
-- --------------------------------------------------------
|
||||
DROP TABLE IF EXISTS `md_rack`;
|
||||
CREATE TABLE `md_rack` (
|
||||
`id` int(11) NOT NULL AUTO_INCREMENT,
|
||||
`company_id` int(11) NOT NULL,
|
||||
`td_stock_id` int(11) NOT NULL,
|
||||
`warehouse` int(11) NOT NULL,
|
||||
`storage_id` int(11) NOT NULL,
|
||||
`zone` varchar(10) NOT NULL,
|
||||
`aisle` varchar(10) NOT NULL,
|
||||
`rack` varchar(10) NOT NULL,
|
||||
`product_sku` varchar(50) DEFAULT NULL,
|
||||
PRIMARY KEY (`id`),
|
||||
UNIQUE KEY `uk_rack_location` (`company_id`, `warehouse`, `zone`, `aisle`, `rack`),
|
||||
KEY `idx_storage` (`storage_id`),
|
||||
KEY `idx_sku` (`company_id`, `product_sku`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
|
||||
|
||||
-- --------------------------------------------------------
|
||||
-- md_rack_log
|
||||
-- --------------------------------------------------------
|
||||
DROP TABLE IF EXISTS `md_rack_log`;
|
||||
CREATE TABLE `md_rack_log` (
|
||||
`id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
|
||||
`company_id` int(10) NOT NULL,
|
||||
`md_rack_id` int(10) unsigned NOT NULL,
|
||||
`user_id` int(10) unsigned DEFAULT NULL,
|
||||
`dt` datetime NOT NULL DEFAULT current_timestamp(),
|
||||
`login` datetime DEFAULT NULL,
|
||||
`action` enum('occupy','release','transfer_in','transfer_out') NOT NULL,
|
||||
`product_sku` varchar(100) DEFAULT NULL,
|
||||
`td_stock_id` int(10) unsigned DEFAULT NULL,
|
||||
PRIMARY KEY (`id`),
|
||||
KEY `idx_rack` (`company_id`, `md_rack_id`),
|
||||
KEY `idx_user` (`company_id`, `user_id`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
|
||||
|
||||
-- --------------------------------------------------------
|
||||
-- md_sku_barcode_label
|
||||
-- --------------------------------------------------------
|
||||
DROP TABLE IF EXISTS `md_sku_barcode_label`;
|
||||
CREATE TABLE `md_sku_barcode_label` (
|
||||
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
|
||||
`company_id` int(10) unsigned NOT NULL,
|
||||
`product_sku` varchar(100) NOT NULL,
|
||||
`lot_number` varchar(100) NOT NULL,
|
||||
`serial_number` varchar(100) NOT NULL,
|
||||
`barcode` varchar(320) NOT NULL,
|
||||
`created_dt` datetime NOT NULL DEFAULT current_timestamp(),
|
||||
PRIMARY KEY (`id`),
|
||||
UNIQUE KEY `company_id_barcode` (`company_id`, `barcode`),
|
||||
KEY `company_id_product_lot` (`company_id`, `product_sku`, `lot_number`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_general_ci;
|
||||
|
||||
-- --------------------------------------------------------
|
||||
-- md_storage
|
||||
-- --------------------------------------------------------
|
||||
DROP TABLE IF EXISTS `md_storage`;
|
||||
CREATE TABLE `md_storage` (
|
||||
`id` int(11) unsigned NOT NULL AUTO_INCREMENT,
|
||||
`company_id` int(11) NOT NULL DEFAULT 0,
|
||||
`warehouse` varchar(255) NOT NULL DEFAULT '',
|
||||
`zone` text NOT NULL DEFAULT '',
|
||||
`aisle_from` varchar(255) NOT NULL DEFAULT '',
|
||||
`aisle_to` varchar(255) NOT NULL DEFAULT '',
|
||||
`rack_from` varchar(255) NOT NULL DEFAULT '',
|
||||
`rack_to` varchar(255) NOT NULL DEFAULT '',
|
||||
`description` text NOT NULL DEFAULT '',
|
||||
`status` int(1) NOT NULL DEFAULT 1 COMMENT '0=inactive, 1=active',
|
||||
`log` mediumtext NOT NULL DEFAULT '{}',
|
||||
PRIMARY KEY (`id`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_general_ci;
|
||||
|
||||
-- --------------------------------------------------------
|
||||
-- md_warehouse
|
||||
-- --------------------------------------------------------
|
||||
DROP TABLE IF EXISTS `md_warehouse`;
|
||||
CREATE TABLE `md_warehouse` (
|
||||
`id` int(11) unsigned NOT NULL AUTO_INCREMENT,
|
||||
`company_id` int(11) NOT NULL DEFAULT 0,
|
||||
`warehouse_name` varchar(255) NOT NULL DEFAULT '',
|
||||
`location` text NOT NULL DEFAULT '',
|
||||
`manager` int(11) NOT NULL DEFAULT 0,
|
||||
`description` text NOT NULL DEFAULT '',
|
||||
`status` int(1) NOT NULL DEFAULT 1 COMMENT '0=inactive, 1=active',
|
||||
`log` mediumtext NOT NULL DEFAULT '{}',
|
||||
PRIMARY KEY (`id`),
|
||||
UNIQUE KEY `company_id_warehouse_name` (`company_id`, `warehouse_name`),
|
||||
KEY `company_id` (`company_id`),
|
||||
KEY `product_id` (`warehouse_name`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_general_ci;
|
||||
|
||||
-- --------------------------------------------------------
|
||||
-- td_invoice
|
||||
-- --------------------------------------------------------
|
||||
DROP TABLE IF EXISTS `td_invoice`;
|
||||
CREATE TABLE `td_invoice` (
|
||||
`id` int(11) unsigned NOT NULL AUTO_INCREMENT,
|
||||
`company_id` int(11) NOT NULL DEFAULT 0,
|
||||
`uuid` varchar(32) NOT NULL DEFAULT '',
|
||||
`doc_type` varchar(20) NOT NULL DEFAULT 'invoice' COMMENT 'invoice|credit_note|debit_note',
|
||||
`invoice_number` varchar(50) NOT NULL DEFAULT '' COMMENT 'INV-YYYYMMDD-XXXX / CN-... / DN-...',
|
||||
`ref_invoice_id` int(11) unsigned NOT NULL DEFAULT 0 COMMENT '0 for original invoices',
|
||||
`order_id` int(11) unsigned NOT NULL DEFAULT 0,
|
||||
`contact_id` int(11) NOT NULL DEFAULT 0,
|
||||
`issued_date` date DEFAULT NULL,
|
||||
`due_date` date DEFAULT NULL,
|
||||
`subtotal` decimal(18,4) NOT NULL DEFAULT 0.0000,
|
||||
`discount` decimal(18,4) NOT NULL DEFAULT 0.0000,
|
||||
`tax` decimal(18,4) NOT NULL DEFAULT 0.0000,
|
||||
`shipping_fee` decimal(18,4) NOT NULL DEFAULT 0.0000,
|
||||
`grand_total` decimal(18,4) NOT NULL DEFAULT 0.0000,
|
||||
`items` mediumtext NOT NULL DEFAULT '[]',
|
||||
`status` tinyint(1) NOT NULL DEFAULT 0 COMMENT '0=draft 1=issued 2=paid 3=overdue 4=void',
|
||||
`notes` text NOT NULL DEFAULT '',
|
||||
`log` mediumtext NOT NULL DEFAULT '{}',
|
||||
PRIMARY KEY (`id`),
|
||||
KEY `company_id` (`company_id`),
|
||||
KEY `order_id` (`order_id`),
|
||||
KEY `contact_id` (`contact_id`),
|
||||
KEY `invoice_number` (`invoice_number`),
|
||||
KEY `ref_invoice_id` (`ref_invoice_id`),
|
||||
KEY `doc_type` (`doc_type`),
|
||||
KEY `status` (`status`),
|
||||
KEY `due_date` (`due_date`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_general_ci;
|
||||
|
||||
-- --------------------------------------------------------
|
||||
-- td_order
|
||||
-- --------------------------------------------------------
|
||||
DROP TABLE IF EXISTS `td_order`;
|
||||
CREATE TABLE `td_order` (
|
||||
`id` int(11) unsigned NOT NULL AUTO_INCREMENT,
|
||||
`company_id` int(11) NOT NULL DEFAULT 0,
|
||||
`uuid` varchar(32) NOT NULL DEFAULT '',
|
||||
`order_number` varchar(50) NOT NULL DEFAULT '' COMMENT 'ORD-YYYYMMDD-XXXX',
|
||||
`contact_id` int(11) NOT NULL DEFAULT 0,
|
||||
`order_date` date DEFAULT NULL,
|
||||
`status` tinyint(1) NOT NULL DEFAULT 0 COMMENT '-1=cancelled 0=draft 1=confirmed 2=processing 3=completed',
|
||||
`payment_status` tinyint(1) NOT NULL DEFAULT 0 COMMENT '0=unpaid 1=paid 2=partial 3=refunded',
|
||||
`subtotal` decimal(18,4) NOT NULL DEFAULT 0.0000,
|
||||
`discount` decimal(18,4) NOT NULL DEFAULT 0.0000,
|
||||
`tax` decimal(18,4) NOT NULL DEFAULT 0.0000,
|
||||
`shipping_fee` decimal(18,4) NOT NULL DEFAULT 0.0000,
|
||||
`shipping_tracking_number` varchar(100) DEFAULT NULL,
|
||||
`grand_total` decimal(18,4) NOT NULL DEFAULT 0.0000,
|
||||
`items` mediumtext NOT NULL DEFAULT '[]',
|
||||
`notes` text NOT NULL DEFAULT '',
|
||||
`log` mediumtext NOT NULL DEFAULT '{}',
|
||||
`created_at` datetime DEFAULT NULL,
|
||||
PRIMARY KEY (`id`),
|
||||
KEY `company_id` (`company_id`),
|
||||
KEY `contact_id` (`contact_id`),
|
||||
KEY `order_number` (`order_number`),
|
||||
KEY `status` (`status`),
|
||||
KEY `order_date` (`order_date`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_general_ci;
|
||||
|
||||
-- --------------------------------------------------------
|
||||
-- td_purchase_order
|
||||
-- --------------------------------------------------------
|
||||
DROP TABLE IF EXISTS `td_purchase_order`;
|
||||
CREATE TABLE `td_purchase_order` (
|
||||
`id` int(11) NOT NULL AUTO_INCREMENT,
|
||||
`company_id` int(11) NOT NULL,
|
||||
`uuid` varchar(64) NOT NULL,
|
||||
`po_number` varchar(32) NOT NULL,
|
||||
`contact_id` int(11) DEFAULT NULL,
|
||||
`po_date` date NOT NULL,
|
||||
`expected_date` date DEFAULT NULL,
|
||||
`warehouse_id` int(11) NOT NULL,
|
||||
`status` tinyint(4) NOT NULL DEFAULT 0,
|
||||
`payment_status` tinyint(4) NOT NULL DEFAULT 0,
|
||||
`items` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL CHECK (json_valid(`items`)),
|
||||
`subtotal` decimal(15,2) NOT NULL DEFAULT 0.00,
|
||||
`discount` decimal(15,2) NOT NULL DEFAULT 0.00,
|
||||
`tax` decimal(15,2) NOT NULL DEFAULT 0.00,
|
||||
`shipping_fee` decimal(15,2) NOT NULL DEFAULT 0.00,
|
||||
`grand_total` decimal(15,2) NOT NULL DEFAULT 0.00,
|
||||
`notes` text DEFAULT NULL,
|
||||
`log` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL CHECK (json_valid(`log`)),
|
||||
`created_at` datetime NOT NULL,
|
||||
PRIMARY KEY (`id`),
|
||||
KEY `idx_po_company` (`company_id`),
|
||||
KEY `idx_po_status` (`company_id`, `status`),
|
||||
KEY `idx_po_contact` (`company_id`, `contact_id`),
|
||||
KEY `idx_po_date` (`company_id`, `po_date`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
||||
|
||||
-- --------------------------------------------------------
|
||||
-- td_return
|
||||
-- --------------------------------------------------------
|
||||
DROP TABLE IF EXISTS `td_return`;
|
||||
CREATE TABLE `td_return` (
|
||||
`id` int(11) unsigned NOT NULL AUTO_INCREMENT,
|
||||
`company_id` int(11) NOT NULL DEFAULT 0,
|
||||
`uuid` varchar(32) NOT NULL DEFAULT '',
|
||||
`return_number` varchar(50) NOT NULL DEFAULT '' COMMENT 'RET-YYYYMMDD-XXXX',
|
||||
`order_id` int(11) unsigned NOT NULL DEFAULT 0,
|
||||
`invoice_id` int(11) unsigned NOT NULL DEFAULT 0,
|
||||
`contact_id` int(11) NOT NULL DEFAULT 0,
|
||||
`return_date` date DEFAULT NULL,
|
||||
`status` tinyint(1) NOT NULL DEFAULT 0 COMMENT '-1=cancelled 0=draft 1=confirmed',
|
||||
`reason` text NOT NULL DEFAULT '',
|
||||
`refund_amount` decimal(18,4) NOT NULL DEFAULT 0.0000,
|
||||
`items` mediumtext NOT NULL DEFAULT '[]',
|
||||
`notes` text NOT NULL DEFAULT '',
|
||||
`log` mediumtext NOT NULL DEFAULT '{}',
|
||||
PRIMARY KEY (`id`),
|
||||
KEY `company_id` (`company_id`),
|
||||
KEY `order_id` (`order_id`),
|
||||
KEY `invoice_id` (`invoice_id`),
|
||||
KEY `contact_id` (`contact_id`),
|
||||
KEY `return_number` (`return_number`),
|
||||
KEY `status` (`status`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_general_ci;
|
||||
|
||||
-- --------------------------------------------------------
|
||||
-- td_stock (generic / fallback; warehouse tables below)
|
||||
-- --------------------------------------------------------
|
||||
DROP TABLE IF EXISTS `td_stock`;
|
||||
CREATE TABLE `td_stock` (
|
||||
`id` int(11) unsigned NOT NULL AUTO_INCREMENT,
|
||||
`ref_id` int(11) unsigned NOT NULL,
|
||||
`company_id` int(11) NOT NULL DEFAULT 0,
|
||||
`uuid` varchar(20) NOT NULL,
|
||||
`type` varchar(20) NOT NULL,
|
||||
`ref_warehouse` varchar(20) NOT NULL COMMENT 'related warehouse table',
|
||||
`date` datetime DEFAULT NULL,
|
||||
`product_sku` varchar(255) NOT NULL DEFAULT '0',
|
||||
`lot_number` varchar(255) NOT NULL,
|
||||
`serial_number` varchar(255) NOT NULL,
|
||||
`source` varchar(255) NOT NULL,
|
||||
`source_id` int(11) NOT NULL DEFAULT 0,
|
||||
`in` decimal(18,4) NOT NULL DEFAULT 0.0000,
|
||||
`out` decimal(18,4) NOT NULL DEFAULT 0.0000,
|
||||
`price` decimal(18,4) NOT NULL DEFAULT 0.0000,
|
||||
`zone` varchar(255) NOT NULL DEFAULT '',
|
||||
`aisle` varchar(255) NOT NULL DEFAULT '',
|
||||
`rack` varchar(255) NOT NULL DEFAULT '',
|
||||
`contact_id` int(11) NOT NULL DEFAULT 0,
|
||||
`description` text NOT NULL DEFAULT '',
|
||||
`status` int(3) NOT NULL DEFAULT 0 COMMENT '0=draft, 1=approved',
|
||||
`log` mediumtext NOT NULL DEFAULT '{}',
|
||||
PRIMARY KEY (`id`),
|
||||
KEY `company_id` (`company_id`),
|
||||
KEY `product_id` (`product_sku`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_general_ci;
|
||||
|
||||
-- --------------------------------------------------------
|
||||
-- td_stock_1 (warehouse 1)
|
||||
-- --------------------------------------------------------
|
||||
DROP TABLE IF EXISTS `td_stock_1`;
|
||||
CREATE TABLE `td_stock_1` LIKE `td_stock`;
|
||||
|
||||
-- --------------------------------------------------------
|
||||
-- td_stock_2 (warehouse 2)
|
||||
-- --------------------------------------------------------
|
||||
DROP TABLE IF EXISTS `td_stock_2`;
|
||||
CREATE TABLE `td_stock_2` LIKE `td_stock`;
|
||||
|
||||
-- --------------------------------------------------------
|
||||
-- td_stock_3 (warehouse 3)
|
||||
-- --------------------------------------------------------
|
||||
DROP TABLE IF EXISTS `td_stock_3`;
|
||||
CREATE TABLE `td_stock_3` LIKE `td_stock`;
|
||||
|
||||
-- --------------------------------------------------------
|
||||
-- warehouse_balance
|
||||
-- --------------------------------------------------------
|
||||
DROP TABLE IF EXISTS `warehouse_balance`;
|
||||
CREATE TABLE `warehouse_balance` (
|
||||
`id` int(11) unsigned NOT NULL AUTO_INCREMENT,
|
||||
`company_id` int(11) unsigned NOT NULL DEFAULT 0,
|
||||
`warehouse_id` int(11) unsigned NOT NULL DEFAULT 0,
|
||||
`product_sku` varchar(255) NOT NULL DEFAULT '',
|
||||
`month` varchar(10) NOT NULL,
|
||||
`total_in` decimal(18,4) NOT NULL DEFAULT 0.0000,
|
||||
`total_out` decimal(18,4) NOT NULL DEFAULT 0.0000,
|
||||
PRIMARY KEY (`id`),
|
||||
UNIQUE KEY `company_id_warehouse_id_product_sku_month` (`company_id`, `warehouse_id`, `product_sku`, `month`),
|
||||
KEY `company_id` (`company_id`),
|
||||
KEY `product_id` (`warehouse_id`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_general_ci;
|
||||
|
||||
|
||||
SET FOREIGN_KEY_CHECKS = 1;
|
||||
SET UNIQUE_CHECKS = 1;
|
||||
Reference in New Issue
Block a user