Publier Globinours 1.0.0-rc.3

This commit is contained in:
Alexandre NOEL 2026-09-03 12:39:15 +02:00
commit 9a2b4068da
325 changed files with 38230 additions and 20 deletions

View file

@ -0,0 +1,52 @@
CREATE TABLE animal_surgeries (
id INTEGER PRIMARY KEY AUTOINCREMENT,
animal_id INTEGER NOT NULL REFERENCES animals(id) ON DELETE CASCADE,
category TEXT NOT NULL,
procedure_name TEXT NOT NULL,
surgery_date TEXT NOT NULL,
status TEXT NOT NULL DEFAULT 'completed' CHECK(status IN ('planned','completed','cancelled')),
clinic_contact_id INTEGER REFERENCES directory_contacts(id) ON DELETE SET NULL,
veterinarian_contact_id INTEGER REFERENCES directory_contacts(id) ON DELETE SET NULL,
tariff_id INTEGER REFERENCES clinic_tariffs(id) ON DELETE SET NULL,
amount_cents INTEGER CHECK(amount_cents IS NULL OR amount_cents>=0),
anesthesia TEXT, notes TEXT, follow_up TEXT,
created_by INTEGER REFERENCES users(id) ON DELETE SET NULL,
created_at TEXT NOT NULL DEFAULT(datetime('now')), updated_at TEXT NOT NULL DEFAULT(datetime('now'))
);
CREATE INDEX idx_animal_surgeries_animal_date ON animal_surgeries(animal_id,surgery_date);
CREATE TABLE accounting_invoices (
id INTEGER PRIMARY KEY AUTOINCREMENT,
vendor_contact_id INTEGER REFERENCES directory_contacts(id) ON DELETE SET NULL,
reference TEXT NOT NULL COLLATE NOCASE,
invoice_date TEXT NOT NULL, due_date TEXT,
document_type TEXT NOT NULL DEFAULT 'invoice' CHECK(document_type IN ('invoice','credit','adjustment')),
status TEXT NOT NULL DEFAULT 'to_pay' CHECK(status IN ('to_pay','partial','paid','disputed','cancelled','credit')),
payment_method TEXT CHECK(payment_method IS NULL OR payment_method IN ('transfer','card','check','cash','direct_debit','other')),
paid_on TEXT,
total_ht_cents INTEGER,
total_ttc_cents INTEGER NOT NULL,
amount_due_cents INTEGER,
notes TEXT, source TEXT,
original_filename TEXT, stored_filename TEXT, mime_type TEXT, file_size INTEGER,
created_by INTEGER REFERENCES users(id) ON DELETE SET NULL,
created_at TEXT NOT NULL DEFAULT(datetime('now')), updated_at TEXT NOT NULL DEFAULT(datetime('now')),
UNIQUE(vendor_contact_id,reference)
);
CREATE INDEX idx_accounting_invoice_date ON accounting_invoices(invoice_date,status);
CREATE INDEX idx_accounting_invoice_vendor ON accounting_invoices(vendor_contact_id,invoice_date);
ALTER TABLE role_permissions RENAME TO role_permissions_legacy;
CREATE TABLE role_permissions (
role TEXT NOT NULL CHECK(role IN ('admin','responsable','benevole','lecture')),
module TEXT NOT NULL CHECK(module IN ('dashboard','animals','medical','care','directory','agenda','statistics','administrative','accounting','grants')),
can_view INTEGER NOT NULL DEFAULT 0 CHECK(can_view IN (0,1)),
can_edit INTEGER NOT NULL DEFAULT 0 CHECK(can_edit IN (0,1)),
updated_by INTEGER REFERENCES users(id) ON DELETE SET NULL,
updated_at TEXT NOT NULL DEFAULT(datetime('now')),
PRIMARY KEY(role,module)
);
INSERT INTO role_permissions SELECT * FROM role_permissions_legacy;
DROP TABLE role_permissions_legacy;
INSERT INTO role_permissions(role,module,can_view,can_edit) VALUES
('admin','accounting',1,1),('responsable','accounting',1,1),('benevole','accounting',0,0),('lecture','accounting',0,0);