Publier Globinours 1.0.0-rc.3
This commit is contained in:
parent
ea8c24d622
commit
9a2b4068da
325 changed files with 38230 additions and 20 deletions
45
migrations/079_inventory_and_maintenance.sql
Normal file
45
migrations/079_inventory_and_maintenance.sql
Normal file
|
|
@ -0,0 +1,45 @@
|
|||
CREATE TABLE IF NOT EXISTS inventory_products (
|
||||
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
||||
category TEXT NOT NULL CHECK(category IN ('medication','dewormer','vaccine')),
|
||||
reference_id INTEGER,
|
||||
name TEXT NOT NULL,
|
||||
unit TEXT NOT NULL DEFAULT 'unité',
|
||||
minimum_quantity REAL NOT NULL DEFAULT 0 CHECK(minimum_quantity >= 0),
|
||||
active INTEGER NOT NULL DEFAULT 1 CHECK(active IN (0,1)),
|
||||
created_at TEXT NOT NULL DEFAULT(datetime('now')),
|
||||
updated_at TEXT NOT NULL DEFAULT(datetime('now')),
|
||||
UNIQUE(category,reference_id),
|
||||
UNIQUE(category,name)
|
||||
);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS inventory_batches (
|
||||
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
||||
product_id INTEGER NOT NULL REFERENCES inventory_products(id) ON DELETE CASCADE,
|
||||
batch_number TEXT,
|
||||
expires_on TEXT,
|
||||
supplier_contact_id INTEGER REFERENCES directory_contacts(id) ON DELETE SET NULL,
|
||||
unit_cost_cents INTEGER CHECK(unit_cost_cents IS NULL OR unit_cost_cents >= 0),
|
||||
quantity REAL NOT NULL DEFAULT 0,
|
||||
opened_on TEXT,
|
||||
notes TEXT,
|
||||
created_at TEXT NOT NULL DEFAULT(datetime('now'))
|
||||
);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS inventory_movements (
|
||||
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
||||
product_id INTEGER NOT NULL REFERENCES inventory_products(id) ON DELETE CASCADE,
|
||||
batch_id INTEGER REFERENCES inventory_batches(id) ON DELETE SET NULL,
|
||||
movement_type TEXT NOT NULL CHECK(movement_type IN ('entry','administration','loss','correction')),
|
||||
quantity_delta REAL NOT NULL CHECK(quantity_delta <> 0),
|
||||
animal_id INTEGER REFERENCES animals(id) ON DELETE SET NULL,
|
||||
occurred_at TEXT NOT NULL DEFAULT(datetime('now')),
|
||||
reason TEXT,
|
||||
created_by INTEGER REFERENCES users(id) ON DELETE SET NULL,
|
||||
created_at TEXT NOT NULL DEFAULT(datetime('now'))
|
||||
);
|
||||
CREATE INDEX IF NOT EXISTS idx_inventory_batches_product ON inventory_batches(product_id,expires_on);
|
||||
CREATE INDEX IF NOT EXISTS idx_inventory_movements_product ON inventory_movements(product_id,occurred_at DESC);
|
||||
|
||||
INSERT OR IGNORE INTO app_settings(setting_key,setting_value) VALUES
|
||||
('backup_schedule_enabled','0'),('backup_schedule_frequency','daily'),('backup_last_run_at',''),('backup_last_verified_at',''),
|
||||
('privacy_retention_adopter_years','5'),('privacy_retention_foster_years','5'),('privacy_retention_volunteer_years','5'),('privacy_access_log_months','24');
|
||||
Loading…
Add table
Add a link
Reference in a new issue