mirror of
https://gitlab.com/mbugroup/lti-api.git
synced 2026-05-23 14:55:42 +00:00
FIX[BE]: fix logic on Chickin Laying not convert to layer but still Pullet, and inisiate laying transfer migration and base basic API
This commit is contained in:
@@ -1 +1 @@
|
||||
DROP TABLE IF EXISTS laying_transfers;
|
||||
DROP TABLE IF EXISTS laying_transfers CASCADE;
|
||||
@@ -1,14 +1,15 @@
|
||||
CREATE TABLE IF NOT EXISTS laying_transfers (
|
||||
id BIGSERIAL PRIMARY KEY,
|
||||
transfer_number VARCHAR(50) UNIQUE NOT NULL,
|
||||
from_project_flock_id BIGINT NOT NULL,
|
||||
to_project_flock_id BIGINT NOT NULL,
|
||||
transfer_date DATE NOT NULL,
|
||||
total_qty INTEGER,
|
||||
total_qty NUMERIC(15, 3) NOT NULL,
|
||||
notes TEXT,
|
||||
created_at TIMESTAMPTZ DEFAULT now(),
|
||||
updated_at TIMESTAMPTZ DEFAULT now(),
|
||||
deleted_at TIMESTAMPTZ,
|
||||
created_by BIGINT
|
||||
created_by BIGINT NOT NULL
|
||||
);
|
||||
|
||||
-- FOREIGN KEYS (dijalankan setelah semua tabel parent ada)
|
||||
@@ -37,6 +38,10 @@ BEGIN
|
||||
END $$;
|
||||
|
||||
-- INDEXES
|
||||
CREATE UNIQUE INDEX IF NOT EXISTS idx_laying_transfers_transfer_number ON laying_transfers (transfer_number)
|
||||
WHERE
|
||||
deleted_at IS NULL;
|
||||
|
||||
CREATE INDEX IF NOT EXISTS idx_laying_transfers_from_project_flock_id ON laying_transfers (from_project_flock_id);
|
||||
|
||||
CREATE INDEX IF NOT EXISTS idx_laying_transfers_to_project_flock_id ON laying_transfers (to_project_flock_id);
|
||||
|
||||
-1
@@ -1 +0,0 @@
|
||||
DROP TABLE IF EXISTS laying_kandang_transfers;
|
||||
-40
@@ -1,40 +0,0 @@
|
||||
CREATE TABLE IF NOT EXISTS laying_kandang_transfers (
|
||||
id BIGSERIAL PRIMARY KEY,
|
||||
kandang_id BIGINT,
|
||||
product_warehouse_id BIGINT,
|
||||
qty NUMERIC(15,3),
|
||||
laying_transfer_id BIGINT NOT NULL
|
||||
);
|
||||
|
||||
-- FOREIGN KEYS (dijalankan setelah semua tabel parent ada)
|
||||
DO $$
|
||||
BEGIN
|
||||
IF EXISTS (SELECT 1 FROM pg_tables WHERE tablename = 'kandangs') THEN
|
||||
ALTER TABLE laying_kandang_transfers
|
||||
ADD CONSTRAINT fk_laying_kandang_transfers_kandang
|
||||
FOREIGN KEY (kandang_id)
|
||||
REFERENCES kandangs(id)
|
||||
ON DELETE RESTRICT ON UPDATE CASCADE;
|
||||
END IF;
|
||||
|
||||
IF EXISTS (SELECT 1 FROM pg_tables WHERE tablename = 'product_warehouses') THEN
|
||||
ALTER TABLE laying_kandang_transfers
|
||||
ADD CONSTRAINT fk_laying_kandang_transfers_product_warehouse
|
||||
FOREIGN KEY (product_warehouse_id)
|
||||
REFERENCES product_warehouses(id)
|
||||
ON DELETE RESTRICT ON UPDATE CASCADE;
|
||||
END IF;
|
||||
|
||||
IF EXISTS (SELECT 1 FROM pg_tables WHERE tablename = 'laying_transfers') THEN
|
||||
ALTER TABLE laying_kandang_transfers
|
||||
ADD CONSTRAINT fk_laying_kandang_transfers_laying_transfer
|
||||
FOREIGN KEY (laying_transfer_id)
|
||||
REFERENCES laying_transfers(id)
|
||||
ON DELETE RESTRICT ON UPDATE CASCADE;
|
||||
END IF;
|
||||
END $$;
|
||||
|
||||
-- INDEXES
|
||||
CREATE INDEX IF NOT EXISTS idx_laying_kandang_transfers_kandang_id ON laying_kandang_transfers(kandang_id);
|
||||
CREATE INDEX IF NOT EXISTS idx_laying_kandang_transfers_product_warehouse_id ON laying_kandang_transfers(product_warehouse_id);
|
||||
CREATE INDEX IF NOT EXISTS idx_laying_kandang_transfers_laying_transfer_id ON laying_kandang_transfers(laying_transfer_id);
|
||||
+5
@@ -0,0 +1,5 @@
|
||||
-- Rollback laying_transfer_sources dan laying_transfer_targets tables
|
||||
|
||||
DROP TABLE IF EXISTS laying_transfer_targets CASCADE;
|
||||
|
||||
DROP TABLE IF EXISTS laying_transfer_sources CASCADE;
|
||||
+93
@@ -0,0 +1,93 @@
|
||||
-- Create laying_transfer_sources dan laying_transfer_targets tables
|
||||
|
||||
-- 1. Create laying_transfer_sources table (detail sumber - kandang asal growing)
|
||||
CREATE TABLE laying_transfer_sources (
|
||||
id BIGSERIAL PRIMARY KEY,
|
||||
laying_transfer_id BIGINT NOT NULL,
|
||||
source_project_flock_kandang_id BIGINT NOT NULL,
|
||||
product_warehouse_id BIGINT,
|
||||
qty NUMERIC(15, 3) NOT NULL,
|
||||
note TEXT,
|
||||
created_at TIMESTAMPTZ DEFAULT NOW(),
|
||||
updated_at TIMESTAMPTZ DEFAULT NOW(),
|
||||
deleted_at TIMESTAMPTZ
|
||||
);
|
||||
|
||||
-- Add foreign keys untuk laying_transfer_sources
|
||||
DO $$
|
||||
BEGIN
|
||||
IF EXISTS (SELECT 1 FROM pg_tables WHERE tablename = 'laying_transfers') THEN
|
||||
ALTER TABLE laying_transfer_sources
|
||||
ADD CONSTRAINT fk_laying_transfer_sources_laying_transfer_id
|
||||
FOREIGN KEY (laying_transfer_id) REFERENCES laying_transfers(id) ON DELETE CASCADE;
|
||||
END IF;
|
||||
|
||||
IF EXISTS (SELECT 1 FROM pg_tables WHERE tablename = 'project_flock_kandangs') THEN
|
||||
ALTER TABLE laying_transfer_sources
|
||||
ADD CONSTRAINT fk_laying_transfer_sources_project_flock_kandang_id
|
||||
FOREIGN KEY (source_project_flock_kandang_id) REFERENCES project_flock_kandangs(id) ON DELETE RESTRICT;
|
||||
END IF;
|
||||
|
||||
IF EXISTS (SELECT 1 FROM pg_tables WHERE tablename = 'product_warehouses') THEN
|
||||
ALTER TABLE laying_transfer_sources
|
||||
ADD CONSTRAINT fk_laying_transfer_sources_product_warehouse_id
|
||||
FOREIGN KEY (product_warehouse_id) REFERENCES product_warehouses(id) ON DELETE SET NULL;
|
||||
END IF;
|
||||
END $$;
|
||||
|
||||
-- 2. Create laying_transfer_targets table (detail tujuan - kandang laying)
|
||||
CREATE TABLE laying_transfer_targets (
|
||||
id BIGSERIAL PRIMARY KEY,
|
||||
laying_transfer_id BIGINT NOT NULL,
|
||||
target_project_flock_kandang_id BIGINT NOT NULL,
|
||||
qty NUMERIC(15, 3) NOT NULL,
|
||||
product_warehouse_id BIGINT,
|
||||
note TEXT,
|
||||
created_at TIMESTAMPTZ DEFAULT NOW(),
|
||||
updated_at TIMESTAMPTZ DEFAULT NOW(),
|
||||
deleted_at TIMESTAMPTZ
|
||||
);
|
||||
|
||||
-- Add foreign keys untuk laying_transfer_targets
|
||||
DO $$
|
||||
BEGIN
|
||||
IF EXISTS (SELECT 1 FROM pg_tables WHERE tablename = 'laying_transfers') THEN
|
||||
ALTER TABLE laying_transfer_targets
|
||||
ADD CONSTRAINT fk_laying_transfer_targets_laying_transfer_id
|
||||
FOREIGN KEY (laying_transfer_id) REFERENCES laying_transfers(id) ON DELETE CASCADE;
|
||||
END IF;
|
||||
|
||||
IF EXISTS (SELECT 1 FROM pg_tables WHERE tablename = 'project_flock_kandangs') THEN
|
||||
ALTER TABLE laying_transfer_targets
|
||||
ADD CONSTRAINT fk_laying_transfer_targets_project_flock_kandang_id
|
||||
FOREIGN KEY (target_project_flock_kandang_id) REFERENCES project_flock_kandangs(id) ON DELETE RESTRICT;
|
||||
END IF;
|
||||
|
||||
IF EXISTS (SELECT 1 FROM pg_tables WHERE tablename = 'product_warehouses') THEN
|
||||
ALTER TABLE laying_transfer_targets
|
||||
ADD CONSTRAINT fk_laying_transfer_targets_product_warehouse_id
|
||||
FOREIGN KEY (product_warehouse_id) REFERENCES product_warehouses(id) ON DELETE SET NULL;
|
||||
END IF;
|
||||
END $$;
|
||||
|
||||
-- 3. Create indexes untuk laying_transfer_sources
|
||||
CREATE INDEX idx_laying_transfer_sources_laying_transfer_id ON laying_transfer_sources (laying_transfer_id);
|
||||
|
||||
CREATE INDEX idx_laying_transfer_sources_source_kandang_id ON laying_transfer_sources (
|
||||
source_project_flock_kandang_id
|
||||
);
|
||||
|
||||
CREATE INDEX idx_laying_transfer_sources_product_warehouse_id ON laying_transfer_sources (product_warehouse_id);
|
||||
|
||||
CREATE INDEX idx_laying_transfer_sources_deleted_at ON laying_transfer_sources (deleted_at);
|
||||
|
||||
-- 4. Create indexes untuk laying_transfer_targets
|
||||
CREATE INDEX idx_laying_transfer_targets_laying_transfer_id ON laying_transfer_targets (laying_transfer_id);
|
||||
|
||||
CREATE INDEX idx_laying_transfer_targets_target_kandang_id ON laying_transfer_targets (
|
||||
target_project_flock_kandang_id
|
||||
);
|
||||
|
||||
CREATE INDEX idx_laying_transfer_targets_product_warehouse_id ON laying_transfer_targets (product_warehouse_id);
|
||||
|
||||
CREATE INDEX idx_laying_transfer_targets_deleted_at ON laying_transfer_targets (deleted_at);
|
||||
@@ -258,7 +258,7 @@ func seedProjectFlocks(tx *gorm.DB, createdBy uint, flocks, areas, fcrs, locatio
|
||||
Flock: "Flock Priangan",
|
||||
Area: "Priangan",
|
||||
Category: utils.ProjectFlockCategoryGrowing,
|
||||
Fcr: "FCR Layer",
|
||||
Fcr: "FCR DOC",
|
||||
Location: "Singaparna",
|
||||
Period: 1,
|
||||
},
|
||||
@@ -267,7 +267,7 @@ func seedProjectFlocks(tx *gorm.DB, createdBy uint, flocks, areas, fcrs, locatio
|
||||
Flock: "Flock Banten",
|
||||
Area: "Banten",
|
||||
Category: utils.ProjectFlockCategoryGrowing,
|
||||
Fcr: "FCR Layer",
|
||||
Fcr: "FCR DOC",
|
||||
Location: "Cikaum",
|
||||
Period: 1,
|
||||
},
|
||||
@@ -574,7 +574,6 @@ func seedProductCategories(tx *gorm.DB, createdBy uint) (map[string]uint, error)
|
||||
{"Bahan Baku", "RAW"},
|
||||
{"Day Old Chick", "DOC"},
|
||||
{"Pullet", "PULLET"},
|
||||
{"Layer", "LAYER"},
|
||||
}
|
||||
|
||||
result := make(map[string]uint, len(seeds))
|
||||
@@ -698,14 +697,25 @@ func seedFcr(tx *gorm.DB, createdBy uint) (map[string]uint, error) {
|
||||
}
|
||||
}{
|
||||
{
|
||||
Name: "FCR Layer",
|
||||
Name: "FCR DOC",
|
||||
Standards: []struct {
|
||||
Weight float64
|
||||
FcrNumber float64
|
||||
Mortality float64
|
||||
}{
|
||||
{Weight: 0.8, FcrNumber: 1.60, Mortality: 2.0},
|
||||
{Weight: 1.5, FcrNumber: 1.75, Mortality: 3.5},
|
||||
{Weight: 0.1, FcrNumber: 1.20, Mortality: 1.0},
|
||||
{Weight: 0.3, FcrNumber: 1.35, Mortality: 1.5},
|
||||
},
|
||||
},
|
||||
{
|
||||
Name: "FCR Pullet",
|
||||
Standards: []struct {
|
||||
Weight float64
|
||||
FcrNumber float64
|
||||
Mortality float64
|
||||
}{
|
||||
{Weight: 0.5, FcrNumber: 1.45, Mortality: 2.0},
|
||||
{Weight: 0.8, FcrNumber: 1.50, Mortality: 2.5},
|
||||
},
|
||||
},
|
||||
}
|
||||
@@ -809,16 +819,6 @@ func seedProducts(tx *gorm.DB, createdBy uint, uoms map[string]uint, categories
|
||||
Suppliers: []string{"PT CHAROEN POKPHAND INDONESIA Tbk"},
|
||||
Flags: []utils.FlagType{utils.FlagPullet},
|
||||
},
|
||||
{
|
||||
Name: "Ayam Layer",
|
||||
Brand: "MBU Layer",
|
||||
Sku: "LAY0001",
|
||||
Uom: "Ekor",
|
||||
Category: "Layer",
|
||||
Price: 20000,
|
||||
Suppliers: []string{"PT CHAROEN POKPHAND INDONESIA Tbk"},
|
||||
Flags: []utils.FlagType{utils.FlagLayer},
|
||||
},
|
||||
}
|
||||
|
||||
for _, seed := range seeds {
|
||||
|
||||
Reference in New Issue
Block a user