50 lines
2.1 KiB
SQL
50 lines
2.1 KiB
SQL
-- Create pharmacy_batches table
|
|
CREATE TABLE IF NOT EXISTS pharmacy_batches (
|
|
id INT AUTO_INCREMENT PRIMARY KEY,
|
|
drug_id INT NOT NULL,
|
|
batch_number VARCHAR(50) NOT NULL,
|
|
expiry_date DATE NOT NULL,
|
|
quantity INT NOT NULL DEFAULT 0,
|
|
cost_price DECIMAL(10, 2) NOT NULL DEFAULT 0.00,
|
|
sale_price DECIMAL(10, 2) NOT NULL DEFAULT 0.00,
|
|
supplier_id INT NULL,
|
|
received_date DATE NULL,
|
|
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
FOREIGN KEY (drug_id) REFERENCES drugs(id) ON DELETE CASCADE,
|
|
FOREIGN KEY (supplier_id) REFERENCES suppliers(id) ON DELETE SET NULL
|
|
);
|
|
|
|
-- Create pharmacy_sales table
|
|
CREATE TABLE IF NOT EXISTS pharmacy_sales (
|
|
id INT AUTO_INCREMENT PRIMARY KEY,
|
|
patient_id INT NULL,
|
|
visit_id INT NULL,
|
|
total_amount DECIMAL(10, 2) NOT NULL DEFAULT 0.00,
|
|
payment_method VARCHAR(50) DEFAULT 'cash',
|
|
status VARCHAR(20) DEFAULT 'completed', -- completed, refunded, cancelled
|
|
notes TEXT NULL,
|
|
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
FOREIGN KEY (patient_id) REFERENCES patients(id) ON DELETE SET NULL,
|
|
FOREIGN KEY (visit_id) REFERENCES visits(id) ON DELETE SET NULL
|
|
);
|
|
|
|
-- Create pharmacy_sale_items table
|
|
CREATE TABLE IF NOT EXISTS pharmacy_sale_items (
|
|
id INT AUTO_INCREMENT PRIMARY KEY,
|
|
sale_id INT NOT NULL,
|
|
drug_id INT NOT NULL,
|
|
batch_id INT NULL, -- Can be null if we track sales without specific batch selection (though we should enforce it for stock deduction)
|
|
quantity INT NOT NULL DEFAULT 1,
|
|
unit_price DECIMAL(10, 2) NOT NULL DEFAULT 0.00,
|
|
total_price DECIMAL(10, 2) NOT NULL DEFAULT 0.00,
|
|
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
FOREIGN KEY (sale_id) REFERENCES pharmacy_sales(id) ON DELETE CASCADE,
|
|
FOREIGN KEY (drug_id) REFERENCES drugs(id),
|
|
FOREIGN KEY (batch_id) REFERENCES pharmacy_batches(id) ON DELETE SET NULL
|
|
);
|
|
|
|
-- Add stock management columns to drugs table
|
|
ALTER TABLE drugs ADD COLUMN IF NOT EXISTS min_stock_level INT DEFAULT 10;
|
|
ALTER TABLE drugs ADD COLUMN IF NOT EXISTS reorder_level INT DEFAULT 20;
|
|
ALTER TABLE drugs ADD COLUMN IF NOT EXISTS unit VARCHAR(50) DEFAULT 'pack';
|