feat(BE-115,116,117): implement chickin CRUD, approve logic, and stock availabilit

This commit is contained in:
aguhh18
2025-10-20 06:01:16 +07:00
parent 68a670a2bd
commit 83c3e61113
34 changed files with 558 additions and 199 deletions
@@ -1,18 +0,0 @@
CREATE TABLE project_chick_ins (
id BIGSERIAL PRIMARY KEY,
project_floc_id BIGINT NOT NULL REFERENCES project_flocs (id),
product_warehouse_id BIGINT NOT NULL REFERENCES product_warehouses (id),
chick_in_date DATE NOT NULL,
quantity NUMERIC(15, 3) NOT NULL CHECK (quantity > 0),
note TEXT,
created_by BIGINT NOT NULL REFERENCES users (id),
created_at TIMESTAMPTZ DEFAULT now(),
updated_at TIMESTAMPTZ DEFAULT now(),
deleted_at TIMESTAMPTZ
);
CREATE INDEX idx_project_chick_ins_project_floc_id ON project_chick_ins (project_floc_id);
CREATE INDEX idx_project_chick_ins_product_warehouse_id ON project_chick_ins (product_warehouse_id);
CREATE INDEX idx_project_chick_ins_created_by ON project_chick_ins (created_by);
@@ -1 +0,0 @@
DROP TABLE IF EXISTS project_chick_ins;
@@ -0,0 +1 @@
DROP TABLE IF EXISTS project_chickins;
@@ -0,0 +1,21 @@
CREATE TABLE project_chickins (
id BIGSERIAL PRIMARY KEY,
project_floc_id BIGINT NOT NULL,
chick_in_date DATE NOT NULL,
quantity NUMERIC(15, 3) NOT NULL,
note TEXT,
created_by BIGINT NOT NULL,
created_at TIMESTAMPTZ DEFAULT now(),
updated_at TIMESTAMPTZ DEFAULT now(),
deleted_at TIMESTAMPTZ
);
CREATE INDEX idx_project_chickins_project_floc_id ON project_chickins (project_floc_id);
CREATE INDEX idx_project_chickins_created_by ON project_chickins (created_by);
ALTER TABLE project_chickins
ADD CONSTRAINT fk_project_floc_id FOREIGN KEY (project_floc_id) REFERENCES project_flocks (id);
ALTER TABLE project_chickins
ADD CONSTRAINT fk_created_by FOREIGN KEY (created_by) REFERENCES users (id);
@@ -0,0 +1 @@
DROP TABLE IF EXISTS stock_availabilities;
@@ -0,0 +1,15 @@
CREATE TABLE stock_availabilities (
id BIGSERIAL PRIMARY KEY,
entity_type VARCHAR(50) NOT NULL,
entity_id BIGINT NOT NULL,
product_id BIGINT,
quantity NUMERIC(15, 3) NOT NULL DEFAULT 0,
reserved_quantity NUMERIC(15, 3) NOT NULL DEFAULT 0,
unit VARCHAR(20),
last_updated TIMESTAMPTZ DEFAULT now(),
created_at TIMESTAMPTZ DEFAULT now(),
deleted_at TIMESTAMPTZ
);
ALTER TABLE stock_availabilities
ADD CONSTRAINT fk_product_id FOREIGN KEY (product_id) REFERENCES products (id);
@@ -0,0 +1 @@
DROP TABLE IF EXISTS audit_logs;
@@ -0,0 +1,13 @@
CREATE TABLE audit_logs (
id BIGSERIAL PRIMARY KEY,
table_name VARCHAR(100) NOT NULL,
record_id BIGINT NOT NULL,
action VARCHAR(30) NOT NULL,
before_data JSONB,
after_data JSONB,
changed_by BIGINT,
created_at TIMESTAMPTZ DEFAULT now()
);
ALTER TABLE audit_logs
ADD CONSTRAINT fk_changed_by FOREIGN KEY (changed_by) REFERENCES users (id);