CREATE TABLE IF NOT EXISTS public.trn_sub_kegiatan (
    id_unik_sub_kegiatan uuid DEFAULT public.uuid_generate_v7() NOT NULL,
    tahun integer DEFAULT 0 NOT NULL,
	id_daerah integer DEFAULT 0 NOT NULL,
	id_unik_jadwal uuid DEFAULT '00000000-0000-0000-0000-000000000000' NOT NULL,
	id_unik_skpd uuid DEFAULT '00000000-0000-0000-0000-000000000000' NOT NULL,
	id_unik_sub_skpd uuid DEFAULT '00000000-0000-0000-0000-000000000000' NOT NULL,
	id_urusan integer DEFAULT 0 NOT NULL,
	id_bidang_urusan integer DEFAULT 0 NOT NULL,
    id_program integer DEFAULT 0 NOT NULL,
    id_giat integer DEFAULT 0 NOT NULL,
    id_sub_giat integer DEFAULT 0 NOT NULL,
    pagu_indikatif numeric(17,2) DEFAULT 0 NOT NULL,
    pagu numeric(17,2) DEFAULT 0 NOT NULL,
    pagu_n2_lalu numeric(17,2) DEFAULT 0 NOT NULL,
    pagu_n_lalu numeric(17,2) DEFAULT 0 NOT NULL,
    pagu_n_depan numeric(17,2) DEFAULT 0 NOT NULL,
    pagu_n2_depan numeric(17,2) DEFAULT 0 NOT NULL,
	pagu_indikatif_murni numeric(17,2) DEFAULT 0 NOT NULL,
    pagu_murni numeric(17,2) DEFAULT 0 NOT NULL,
    [REDACTED] numeric(17,2) DEFAULT 0 NOT NULL,
    pagu_n_lalu_murni numeric(17,2) DEFAULT 0 NOT NULL,
    pagu_n_depan_murni numeric(17,2) DEFAULT 0 NOT NULL,
    [REDACTED] numeric(17,2) DEFAULT 0 NOT NULL,
    waktu_awal integer DEFAULT 0 NOT NULL,
    waktu_akhir integer DEFAULT 0 NOT NULL,
	waktu_awal_murni integer DEFAULT 0 NOT NULL,
    waktu_akhir_murni integer DEFAULT 0 NOT NULL,
	kunci_sub_giat boolean DEFAULT false NOT NULL,
    kunci_sub_giat_by integer DEFAULT 0 NOT NULL,
    kunci_sub_giat_at timestamp(6) without time zone DEFAULT '0001-01-01 00:00:00'::timestamp without time zone NOT NULL,
    kunci_sub_giat_rinci boolean DEFAULT false NOT NULL,
    kunci_sub_giat_rinci_by integer DEFAULT 0 NOT NULL,
    kunci_sub_giat_rinci_at timestamp(6) without time zone DEFAULT '0001-01-01 00:00:00'::timestamp without time zone NOT NULL,
    id_bl_lama integer DEFAULT 0 NOT NULL,
	id_sub_bl_lama integer DEFAULT 0 NOT NULL,
    pagu_indikatif_lama double precision DEFAULT 0 NOT NULL,
    pagu_lama double precision DEFAULT 0 NOT NULL,
    [REDACTED] double precision DEFAULT 0 NOT NULL,
    pagu_n_lalu_lama double precision DEFAULT 0 NOT NULL,
    pagu_n_depan_lama double precision DEFAULT 0 NOT NULL,
    [REDACTED] double precision DEFAULT 0 NOT NULL,
    pagu_indikatif_murni_lama double precision DEFAULT 0 NOT NULL,
    pagu_murni_lama double precision DEFAULT 0 NOT NULL,
    [REDACTED] double precision DEFAULT 0 NOT NULL,
    pagu_n_lalu_murni_lama double precision DEFAULT 0 NOT NULL,
    pagu_n_depan_murni_lama double precision DEFAULT 0 NOT NULL,
    [REDACTED] double precision DEFAULT 0 NOT NULL,
    validate_at timestamp(6) without time zone DEFAULT '0001-01-01 00:00:00'::timestamp without time zone NOT NULL,
    validate_by integer DEFAULT 0 NOT NULL,
    created_at timestamp(6) without time zone DEFAULT now() NOT NULL,
    created_by integer DEFAULT 0 NOT NULL,
    updated_at timestamp(6) without time zone DEFAULT '0001-01-01 00:00:00'::timestamp without time zone NOT NULL,
    updated_by integer DEFAULT 0 NOT NULL,
    deleted_at timestamp(6) without time zone DEFAULT '0001-01-01 00:00:00'::timestamp without time zone NOT NULL,
    deleted_by integer DEFAULT 0 NOT NULL
);

ALTER TABLE public.trn_sub_kegiatan ADD CONSTRAINT trn_sub_kegiatan_pkey PRIMARY KEY (id_unik_sub_kegiatan, tahun, id_daerah);
ALTER TABLE public.trn_sub_kegiatan ADD CONSTRAINT trn_sub_kegiatan_unique_key UNIQUE (tahun, id_daerah, id_unik_jadwal, id_unik_skpd, id_unik_sub_skpd, id_urusan, id_bidang_urusan, id_program, id_giat, id_sub_giat);

COMMENT ON TABLE public.trn_sub_kegiatan IS 'Tabel untuk menyimpan informasi sub kegiatan perangkat daerah dalam proses penyusunan APBD';
COMMENT ON COLUMN public.trn_sub_kegiatan.id_unik_sub_kegiatan IS 'ID unik UUID sebagai ID primary key..';
COMMENT ON COLUMN public.trn_sub_kegiatan.id_bl_lama IS 'Primary key tabel d_bl lama.';
COMMENT ON COLUMN public.trn_sub_kegiatan.id_sub_bl_lama IS 'Primary key tabel d_sub_bl lama.';
COMMENT ON COLUMN public.trn_sub_kegiatan.tahun IS 'Tahun anggaran.';
COMMENT ON COLUMN public.trn_sub_kegiatan.id_daerah IS 'ID daerah terkait.';
COMMENT ON COLUMN public.trn_sub_kegiatan.id_unik_jadwal IS 'ID jadwal anggaran.';
COMMENT ON COLUMN public.trn_sub_kegiatan.id_unik_skpd IS 'ID SKPD induk.';
COMMENT ON COLUMN public.trn_sub_kegiatan.id_unik_sub_skpd IS 'ID SKPD.';
COMMENT ON COLUMN public.trn_sub_kegiatan.id_urusan IS 'ID urusan sesuai urusan yang dikerjakan oleh OPD (terutama untuk unsur pemerintahan umum).';
COMMENT ON COLUMN public.trn_sub_kegiatan.id_bidang_urusan IS 'ID bidang urusan sesuai urusan yang dikerjakan oleh OPD (terutama untuk sub kegiatan pada urusan umum).';
COMMENT ON COLUMN public.trn_sub_kegiatan.id_program IS 'Kolom berisi id program sesuai nomenklatur kodefikasi dan klasifikasi.';
COMMENT ON COLUMN public.trn_sub_kegiatan.id_giat IS 'Kolom berisi id kegiatan sesuai nomenklatur kodefikasi dan klasifikasi.';
COMMENT ON COLUMN public.trn_sub_kegiatan.id_sub_giat IS 'ID sub kegiatan sesuai nomenklatur kodefikasi dan klasifikasi.';
COMMENT ON COLUMN public.trn_sub_kegiatan.pagu_indikatif IS 'Jumlah pagu indikatif.';
COMMENT ON COLUMN public.trn_sub_kegiatan.pagu IS 'Jumlah pagu anggaran.';
COMMENT ON COLUMN public.trn_sub_kegiatan.pagu_n2_lalu IS 'Jumlah pagu N-2 (dua tahun sebelumnya).';
COMMENT ON COLUMN public.trn_sub_kegiatan.pagu_n_lalu IS 'Jumlah pagu N-1 (tahun sebelumnya).';
COMMENT ON COLUMN public.trn_sub_kegiatan.pagu_n_depan IS 'Jumlah pagu N+1 (tahun berikutnya).';
COMMENT ON COLUMN public.trn_sub_kegiatan.pagu_n2_depan IS 'Jumlah pagu N+2 (dua tahun berikutnya).';
COMMENT ON COLUMN public.trn_sub_kegiatan.waktu_awal IS 'Waktu mulai pelaksanaan (format integer, misal 1 = Januari 2 = Februari).';
COMMENT ON COLUMN public.trn_sub_kegiatan.waktu_akhir IS 'Waktu akhir pelaksanaan (format integer, misal 1 = Januari 2 = Februari).';
COMMENT ON COLUMN public.trn_sub_kegiatan.kunci_sub_giat IS 'Status kunci sub kegiatan (true jika terkunci).';
COMMENT ON COLUMN public.trn_sub_kegiatan.kunci_sub_giat_by IS 'ID pengguna yang mengunci sub kegiatan.';
COMMENT ON COLUMN public.trn_sub_kegiatan.kunci_sub_giat_at IS 'Waktu penguncian sub kegiatan.';
COMMENT ON COLUMN public.trn_sub_kegiatan.kunci_sub_giat_rinci IS 'Status kunci rincian sub kegiatan (true jika terkunci).';
COMMENT ON COLUMN public.trn_sub_kegiatan.kunci_sub_giat_rinci_by IS 'ID pengguna yang mengunci sub kegiatan.';
COMMENT ON COLUMN public.trn_sub_kegiatan.kunci_sub_giat_rinci_at IS 'Waktu penguncian sub kegiatan.';
COMMENT ON COLUMN public.trn_sub_kegiatan.validate_at IS 'Waktu validasi anggaran.';
COMMENT ON COLUMN public.trn_sub_kegiatan.validate_by IS 'ID pengguna yang melakukan validasi.';
COMMENT ON COLUMN public.trn_sub_kegiatan.created_at IS 'Waktu data dibuat.';
COMMENT ON COLUMN public.trn_sub_kegiatan.created_by IS 'ID pengguna yang membuat data.';
COMMENT ON COLUMN public.trn_sub_kegiatan.updated_at IS 'Waktu data terakhir diperbarui.';
COMMENT ON COLUMN public.trn_sub_kegiatan.updated_by IS 'ID pengguna yang memperbarui data.';
COMMENT ON COLUMN public.trn_sub_kegiatan.deleted_at IS 'Waktu data dihapus (soft delete).';
COMMENT ON COLUMN public.trn_sub_kegiatan.deleted_by IS 'ID pengguna yang menghapus data.';

CREATE INDEX trn_sub_kegiatan_id_unik_sub_kegiatan_idx ON public.trn_sub_kegiatan USING btree (id_unik_sub_kegiatan);
CREATE INDEX trn_sub_kegiatan_tahun_idx ON public.trn_sub_kegiatan USING btree (tahun);
CREATE INDEX trn_sub_kegiatan_id_daerah_idx ON public.trn_sub_kegiatan USING btree (id_daerah);
CREATE INDEX trn_sub_kegiatan_id_unik_jadwal_idx ON public.trn_sub_kegiatan USING btree (id_unik_jadwal);
CREATE INDEX trn_sub_kegiatan_id_unik_skpd_idx ON public.trn_sub_kegiatan USING btree (id_unik_skpd);
CREATE INDEX trn_sub_kegiatan_id_unik_sub_skpd_idx ON public.trn_sub_kegiatan USING btree (id_unik_sub_skpd);
CREATE INDEX trn_sub_kegiatan_id_urusan_idx ON public.trn_sub_kegiatan USING btree (id_urusan);
CREATE INDEX trn_sub_kegiatan_id_bidang_urusan_idx ON public.trn_sub_kegiatan USING btree (id_bidang_urusan);
CREATE INDEX trn_sub_kegiatan_id_program_idx ON public.trn_sub_kegiatan USING btree (id_program);
CREATE INDEX trn_sub_kegiatan_id_giat_idx ON public.trn_sub_kegiatan USING btree (id_giat);
CREATE INDEX trn_sub_kegiatan_id_sub_giat_idx ON public.trn_sub_kegiatan USING btree (id_sub_giat);


-- SCHEMA rancangan_murni;
CREATE TABLE IF NOT EXISTS rancangan_murni.trn_sub_kegiatan (
    id_unik_sub_kegiatan uuid DEFAULT '00000000-0000-0000-0000-000000000000' NOT NULL,
    tahun integer DEFAULT 0 NOT NULL,
	id_daerah integer DEFAULT 0 NOT NULL,
	id_unik_jadwal uuid DEFAULT '00000000-0000-0000-0000-000000000000' NOT NULL,
	id_unik_skpd uuid DEFAULT '00000000-0000-0000-0000-000000000000' NOT NULL,
	id_unik_sub_skpd uuid DEFAULT '00000000-0000-0000-0000-000000000000' NOT NULL,
	id_urusan integer DEFAULT 0 NOT NULL,
	id_bidang_urusan integer DEFAULT 0 NOT NULL,
    id_program integer DEFAULT 0 NOT NULL,
    id_giat integer DEFAULT 0 NOT NULL,
    id_sub_giat integer DEFAULT 0 NOT NULL,
    pagu_indikatif numeric(17,2) DEFAULT 0 NOT NULL,
    pagu numeric(17,2) DEFAULT 0 NOT NULL,
    pagu_n2_lalu numeric(17,2) DEFAULT 0 NOT NULL,
    pagu_n_lalu numeric(17,2) DEFAULT 0 NOT NULL,
    pagu_n_depan numeric(17,2) DEFAULT 0 NOT NULL,
    pagu_n2_depan numeric(17,2) DEFAULT 0 NOT NULL,
	pagu_indikatif_murni numeric(17,2) DEFAULT 0 NOT NULL,
    pagu_murni numeric(17,2) DEFAULT 0 NOT NULL,
    [REDACTED] numeric(17,2) DEFAULT 0 NOT NULL,
    pagu_n_lalu_murni numeric(17,2) DEFAULT 0 NOT NULL,
    pagu_n_depan_murni numeric(17,2) DEFAULT 0 NOT NULL,
    [REDACTED] numeric(17,2) DEFAULT 0 NOT NULL,
    waktu_awal integer DEFAULT 0 NOT NULL,
    waktu_akhir integer DEFAULT 0 NOT NULL,
	waktu_awal_murni integer DEFAULT 0 NOT NULL,
    waktu_akhir_murni integer DEFAULT 0 NOT NULL,
	kunci_sub_giat boolean DEFAULT false NOT NULL,
    kunci_sub_giat_by integer DEFAULT 0 NOT NULL,
    kunci_sub_giat_at timestamp(6) without time zone DEFAULT '0001-01-01 00:00:00'::timestamp without time zone NOT NULL,
    kunci_sub_giat_rinci boolean DEFAULT false NOT NULL,
    kunci_sub_giat_rinci_by integer DEFAULT 0 NOT NULL,
    kunci_sub_giat_rinci_at timestamp(6) without time zone DEFAULT '0001-01-01 00:00:00'::timestamp without time zone NOT NULL,
    id_bl_lama integer DEFAULT 0 NOT NULL,
	id_sub_bl_lama integer DEFAULT 0 NOT NULL,
    pagu_indikatif_lama double precision DEFAULT 0 NOT NULL,
    pagu_lama double precision DEFAULT 0 NOT NULL,
    [REDACTED] double precision DEFAULT 0 NOT NULL,
    pagu_n_lalu_lama double precision DEFAULT 0 NOT NULL,
    pagu_n_depan_lama double precision DEFAULT 0 NOT NULL,
    [REDACTED] double precision DEFAULT 0 NOT NULL,
    pagu_indikatif_murni_lama double precision DEFAULT 0 NOT NULL,
    pagu_murni_lama double precision DEFAULT 0 NOT NULL,
    [REDACTED] double precision DEFAULT 0 NOT NULL,
    pagu_n_lalu_murni_lama double precision DEFAULT 0 NOT NULL,
    pagu_n_depan_murni_lama double precision DEFAULT 0 NOT NULL,
    [REDACTED] double precision DEFAULT 0 NOT NULL,
    validate_at timestamp(6) without time zone DEFAULT '0001-01-01 00:00:00'::timestamp without time zone NOT NULL,
    validate_by integer DEFAULT 0 NOT NULL,
    created_at timestamp(6) without time zone DEFAULT now() NOT NULL,
    created_by integer DEFAULT 0 NOT NULL,
    updated_at timestamp(6) without time zone DEFAULT '0001-01-01 00:00:00'::timestamp without time zone NOT NULL,
    updated_by integer DEFAULT 0 NOT NULL,
    deleted_at timestamp(6) without time zone DEFAULT '0001-01-01 00:00:00'::timestamp without time zone NOT NULL,
    deleted_by integer DEFAULT 0 NOT NULL
);

ALTER TABLE rancangan_murni.trn_sub_kegiatan ADD CONSTRAINT trn_sub_kegiatan_pkey PRIMARY KEY (id_unik_sub_kegiatan, tahun, id_daerah);
ALTER TABLE rancangan_murni.trn_sub_kegiatan ADD CONSTRAINT trn_sub_kegiatan_unique_key UNIQUE (tahun, id_daerah, id_unik_jadwal, id_unik_skpd, id_unik_sub_skpd, id_urusan, id_bidang_urusan, id_program, id_giat, id_sub_giat);

COMMENT ON TABLE rancangan_murni.trn_sub_kegiatan IS 'Tabel untuk menyimpan informasi sub kegiatan perangkat daerah dalam proses penyusunan APBD';
COMMENT ON COLUMN rancangan_murni.trn_sub_kegiatan.id_unik_sub_kegiatan IS 'ID unik UUID sebagai ID primary key..';
COMMENT ON COLUMN rancangan_murni.trn_sub_kegiatan.id_bl_lama IS 'Primary key tabel d_bl lama.';
COMMENT ON COLUMN rancangan_murni.trn_sub_kegiatan.id_sub_bl_lama IS 'Primary key tabel d_sub_bl lama.';
COMMENT ON COLUMN rancangan_murni.trn_sub_kegiatan.tahun IS 'Tahun anggaran.';
COMMENT ON COLUMN rancangan_murni.trn_sub_kegiatan.id_daerah IS 'ID daerah terkait.';
COMMENT ON COLUMN rancangan_murni.trn_sub_kegiatan.id_unik_jadwal IS 'ID jadwal anggaran.';
COMMENT ON COLUMN rancangan_murni.trn_sub_kegiatan.id_unik_skpd IS 'ID SKPD induk.';
COMMENT ON COLUMN rancangan_murni.trn_sub_kegiatan.id_unik_sub_skpd IS 'ID SKPD.';
COMMENT ON COLUMN rancangan_murni.trn_sub_kegiatan.id_urusan IS 'ID urusan sesuai urusan yang dikerjakan oleh OPD (terutama untuk unsur pemerintahan umum).';
COMMENT ON COLUMN rancangan_murni.trn_sub_kegiatan.id_bidang_urusan IS 'ID bidang urusan sesuai urusan yang dikerjakan oleh OPD (terutama untuk sub kegiatan pada urusan umum).';
COMMENT ON COLUMN rancangan_murni.trn_sub_kegiatan.id_program IS 'Kolom berisi id program sesuai nomenklatur kodefikasi dan klasifikasi.';
COMMENT ON COLUMN rancangan_murni.trn_sub_kegiatan.id_giat IS 'Kolom berisi id kegiatan sesuai nomenklatur kodefikasi dan klasifikasi.';
COMMENT ON COLUMN rancangan_murni.trn_sub_kegiatan.id_sub_giat IS 'ID sub kegiatan sesuai nomenklatur kodefikasi dan klasifikasi.';
COMMENT ON COLUMN rancangan_murni.trn_sub_kegiatan.pagu_indikatif IS 'Jumlah pagu indikatif.';
COMMENT ON COLUMN rancangan_murni.trn_sub_kegiatan.pagu IS 'Jumlah pagu anggaran.';
COMMENT ON COLUMN rancangan_murni.trn_sub_kegiatan.pagu_n2_lalu IS 'Jumlah pagu N-2 (dua tahun sebelumnya).';
COMMENT ON COLUMN rancangan_murni.trn_sub_kegiatan.pagu_n_lalu IS 'Jumlah pagu N-1 (tahun sebelumnya).';
COMMENT ON COLUMN rancangan_murni.trn_sub_kegiatan.pagu_n_depan IS 'Jumlah pagu N+1 (tahun berikutnya).';
COMMENT ON COLUMN rancangan_murni.trn_sub_kegiatan.pagu_n2_depan IS 'Jumlah pagu N+2 (dua tahun berikutnya).';
COMMENT ON COLUMN rancangan_murni.trn_sub_kegiatan.waktu_awal IS 'Waktu mulai pelaksanaan (format integer, misal 1 = Januari 2 = Februari).';
COMMENT ON COLUMN rancangan_murni.trn_sub_kegiatan.waktu_akhir IS 'Waktu akhir pelaksanaan (format integer, misal 1 = Januari 2 = Februari).';
COMMENT ON COLUMN rancangan_murni.trn_sub_kegiatan.kunci_sub_giat IS 'Status kunci sub kegiatan (true jika terkunci).';
COMMENT ON COLUMN rancangan_murni.trn_sub_kegiatan.kunci_sub_giat_by IS 'ID pengguna yang mengunci sub kegiatan.';
COMMENT ON COLUMN rancangan_murni.trn_sub_kegiatan.kunci_sub_giat_at IS 'Waktu penguncian sub kegiatan.';
COMMENT ON COLUMN rancangan_murni.trn_sub_kegiatan.kunci_sub_giat_rinci IS 'Status kunci rincian sub kegiatan (true jika terkunci).';
COMMENT ON COLUMN rancangan_murni.trn_sub_kegiatan.kunci_sub_giat_rinci_by IS 'ID pengguna yang mengunci sub kegiatan.';
COMMENT ON COLUMN rancangan_murni.trn_sub_kegiatan.kunci_sub_giat_rinci_at IS 'Waktu penguncian sub kegiatan.';
COMMENT ON COLUMN rancangan_murni.trn_sub_kegiatan.validate_at IS 'Waktu validasi anggaran.';
COMMENT ON COLUMN rancangan_murni.trn_sub_kegiatan.validate_by IS 'ID pengguna yang melakukan validasi.';
COMMENT ON COLUMN rancangan_murni.trn_sub_kegiatan.created_at IS 'Waktu data dibuat.';
COMMENT ON COLUMN rancangan_murni.trn_sub_kegiatan.created_by IS 'ID pengguna yang membuat data.';
COMMENT ON COLUMN rancangan_murni.trn_sub_kegiatan.updated_at IS 'Waktu data terakhir diperbarui.';
COMMENT ON COLUMN rancangan_murni.trn_sub_kegiatan.updated_by IS 'ID pengguna yang memperbarui data.';
COMMENT ON COLUMN rancangan_murni.trn_sub_kegiatan.deleted_at IS 'Waktu data dihapus (soft delete).';
COMMENT ON COLUMN rancangan_murni.trn_sub_kegiatan.deleted_by IS 'ID pengguna yang menghapus data.';

CREATE INDEX trn_sub_kegiatan_id_unik_sub_kegiatan_idx ON rancangan_murni.trn_sub_kegiatan USING btree (id_unik_sub_kegiatan);
CREATE INDEX trn_sub_kegiatan_tahun_idx ON rancangan_murni.trn_sub_kegiatan USING btree (tahun);
CREATE INDEX trn_sub_kegiatan_id_daerah_idx ON rancangan_murni.trn_sub_kegiatan USING btree (id_daerah);
CREATE INDEX trn_sub_kegiatan_id_unik_jadwal_idx ON rancangan_murni.trn_sub_kegiatan USING btree (id_unik_jadwal);
CREATE INDEX trn_sub_kegiatan_id_unik_skpd_idx ON rancangan_murni.trn_sub_kegiatan USING btree (id_unik_skpd);
CREATE INDEX trn_sub_kegiatan_id_unik_sub_skpd_idx ON rancangan_murni.trn_sub_kegiatan USING btree (id_unik_sub_skpd);
CREATE INDEX trn_sub_kegiatan_id_urusan_idx ON rancangan_murni.trn_sub_kegiatan USING btree (id_urusan);
CREATE INDEX trn_sub_kegiatan_id_bidang_urusan_idx ON rancangan_murni.trn_sub_kegiatan USING btree (id_bidang_urusan);
CREATE INDEX trn_sub_kegiatan_id_program_idx ON rancangan_murni.trn_sub_kegiatan USING btree (id_program);
CREATE INDEX trn_sub_kegiatan_id_giat_idx ON rancangan_murni.trn_sub_kegiatan USING btree (id_giat);
CREATE INDEX trn_sub_kegiatan_id_sub_giat_idx ON rancangan_murni.trn_sub_kegiatan USING btree (id_sub_giat);


-- SCHEMA penetapan_murni
CREATE TABLE IF NOT EXISTS penetapan_murni.trn_sub_kegiatan (
    id_unik_sub_kegiatan uuid DEFAULT '00000000-0000-0000-0000-000000000000' NOT NULL,
    tahun integer DEFAULT 0 NOT NULL,
	id_daerah integer DEFAULT 0 NOT NULL,
	id_unik_jadwal uuid DEFAULT '00000000-0000-0000-0000-000000000000' NOT NULL,
	id_unik_skpd uuid DEFAULT '00000000-0000-0000-0000-000000000000' NOT NULL,
	id_unik_sub_skpd uuid DEFAULT '00000000-0000-0000-0000-000000000000' NOT NULL,
	id_urusan integer DEFAULT 0 NOT NULL,
	id_bidang_urusan integer DEFAULT 0 NOT NULL,
    id_program integer DEFAULT 0 NOT NULL,
    id_giat integer DEFAULT 0 NOT NULL,
    id_sub_giat integer DEFAULT 0 NOT NULL,
    pagu_indikatif numeric(17,2) DEFAULT 0 NOT NULL,
    pagu numeric(17,2) DEFAULT 0 NOT NULL,
    pagu_n2_lalu numeric(17,2) DEFAULT 0 NOT NULL,
    pagu_n_lalu numeric(17,2) DEFAULT 0 NOT NULL,
    pagu_n_depan numeric(17,2) DEFAULT 0 NOT NULL,
    pagu_n2_depan numeric(17,2) DEFAULT 0 NOT NULL,
	pagu_indikatif_murni numeric(17,2) DEFAULT 0 NOT NULL,
    pagu_murni numeric(17,2) DEFAULT 0 NOT NULL,
    [REDACTED] numeric(17,2) DEFAULT 0 NOT NULL,
    pagu_n_lalu_murni numeric(17,2) DEFAULT 0 NOT NULL,
    pagu_n_depan_murni numeric(17,2) DEFAULT 0 NOT NULL,
    [REDACTED] numeric(17,2) DEFAULT 0 NOT NULL,
    waktu_awal integer DEFAULT 0 NOT NULL,
    waktu_akhir integer DEFAULT 0 NOT NULL,
	waktu_awal_murni integer DEFAULT 0 NOT NULL,
    waktu_akhir_murni integer DEFAULT 0 NOT NULL,
	kunci_sub_giat boolean DEFAULT false NOT NULL,
    kunci_sub_giat_by integer DEFAULT 0 NOT NULL,
    kunci_sub_giat_at timestamp(6) without time zone DEFAULT '0001-01-01 00:00:00'::timestamp without time zone NOT NULL,
    kunci_sub_giat_rinci boolean DEFAULT false NOT NULL,
    kunci_sub_giat_rinci_by integer DEFAULT 0 NOT NULL,
    kunci_sub_giat_rinci_at timestamp(6) without time zone DEFAULT '0001-01-01 00:00:00'::timestamp without time zone NOT NULL,
    id_bl_lama integer DEFAULT 0 NOT NULL,
	id_sub_bl_lama integer DEFAULT 0 NOT NULL,
    pagu_indikatif_lama double precision DEFAULT 0 NOT NULL,
    pagu_lama double precision DEFAULT 0 NOT NULL,
    [REDACTED] double precision DEFAULT 0 NOT NULL,
    pagu_n_lalu_lama double precision DEFAULT 0 NOT NULL,
    pagu_n_depan_lama double precision DEFAULT 0 NOT NULL,
    [REDACTED] double precision DEFAULT 0 NOT NULL,
    pagu_indikatif_murni_lama double precision DEFAULT 0 NOT NULL,
    pagu_murni_lama double precision DEFAULT 0 NOT NULL,
    [REDACTED] double precision DEFAULT 0 NOT NULL,
    pagu_n_lalu_murni_lama double precision DEFAULT 0 NOT NULL,
    pagu_n_depan_murni_lama double precision DEFAULT 0 NOT NULL,
    [REDACTED] double precision DEFAULT 0 NOT NULL,
    validate_at timestamp(6) without time zone DEFAULT '0001-01-01 00:00:00'::timestamp without time zone NOT NULL,
    validate_by integer DEFAULT 0 NOT NULL,
    created_at timestamp(6) without time zone DEFAULT now() NOT NULL,
    created_by integer DEFAULT 0 NOT NULL,
    updated_at timestamp(6) without time zone DEFAULT '0001-01-01 00:00:00'::timestamp without time zone NOT NULL,
    updated_by integer DEFAULT 0 NOT NULL,
    deleted_at timestamp(6) without time zone DEFAULT '0001-01-01 00:00:00'::timestamp without time zone NOT NULL,
    deleted_by integer DEFAULT 0 NOT NULL
);

ALTER TABLE penetapan_murni.trn_sub_kegiatan ADD CONSTRAINT trn_sub_kegiatan_pkey PRIMARY KEY (id_unik_sub_kegiatan, tahun, id_daerah);
ALTER TABLE penetapan_murni.trn_sub_kegiatan ADD CONSTRAINT trn_sub_kegiatan_unique_key UNIQUE (tahun, id_daerah, id_unik_jadwal, id_unik_skpd, id_unik_sub_skpd, id_urusan, id_bidang_urusan, id_program, id_giat, id_sub_giat);

COMMENT ON TABLE penetapan_murni.trn_sub_kegiatan IS 'Tabel untuk menyimpan informasi sub kegiatan perangkat daerah dalam proses penyusunan APBD';
COMMENT ON COLUMN penetapan_murni.trn_sub_kegiatan.id_unik_sub_kegiatan IS 'ID unik UUID sebagai ID primary key..';
COMMENT ON COLUMN penetapan_murni.trn_sub_kegiatan.id_bl_lama IS 'Primary key tabel d_bl lama.';
COMMENT ON COLUMN penetapan_murni.trn_sub_kegiatan.id_sub_bl_lama IS 'Primary key tabel d_sub_bl lama.';
COMMENT ON COLUMN penetapan_murni.trn_sub_kegiatan.tahun IS 'Tahun anggaran.';
COMMENT ON COLUMN penetapan_murni.trn_sub_kegiatan.id_daerah IS 'ID daerah terkait.';
COMMENT ON COLUMN penetapan_murni.trn_sub_kegiatan.id_unik_jadwal IS 'ID jadwal anggaran.';
COMMENT ON COLUMN penetapan_murni.trn_sub_kegiatan.id_unik_skpd IS 'ID SKPD induk.';
COMMENT ON COLUMN penetapan_murni.trn_sub_kegiatan.id_unik_sub_skpd IS 'ID SKPD.';
COMMENT ON COLUMN penetapan_murni.trn_sub_kegiatan.id_urusan IS 'ID urusan sesuai urusan yang dikerjakan oleh OPD (terutama untuk unsur pemerintahan umum).';
COMMENT ON COLUMN penetapan_murni.trn_sub_kegiatan.id_bidang_urusan IS 'ID bidang urusan sesuai urusan yang dikerjakan oleh OPD (terutama untuk sub kegiatan pada urusan umum).';
COMMENT ON COLUMN penetapan_murni.trn_sub_kegiatan.id_program IS 'Kolom berisi id program sesuai nomenklatur kodefikasi dan klasifikasi.';
COMMENT ON COLUMN penetapan_murni.trn_sub_kegiatan.id_giat IS 'Kolom berisi id kegiatan sesuai nomenklatur kodefikasi dan klasifikasi.';
COMMENT ON COLUMN penetapan_murni.trn_sub_kegiatan.id_sub_giat IS 'ID sub kegiatan sesuai nomenklatur kodefikasi dan klasifikasi.';
COMMENT ON COLUMN penetapan_murni.trn_sub_kegiatan.pagu_indikatif IS 'Jumlah pagu indikatif.';
COMMENT ON COLUMN penetapan_murni.trn_sub_kegiatan.pagu IS 'Jumlah pagu anggaran.';
COMMENT ON COLUMN penetapan_murni.trn_sub_kegiatan.pagu_n2_lalu IS 'Jumlah pagu N-2 (dua tahun sebelumnya).';
COMMENT ON COLUMN penetapan_murni.trn_sub_kegiatan.pagu_n_lalu IS 'Jumlah pagu N-1 (tahun sebelumnya).';
COMMENT ON COLUMN penetapan_murni.trn_sub_kegiatan.pagu_n_depan IS 'Jumlah pagu N+1 (tahun berikutnya).';
COMMENT ON COLUMN penetapan_murni.trn_sub_kegiatan.pagu_n2_depan IS 'Jumlah pagu N+2 (dua tahun berikutnya).';
COMMENT ON COLUMN penetapan_murni.trn_sub_kegiatan.waktu_awal IS 'Waktu mulai pelaksanaan (format integer, misal 1 = Januari 2 = Februari).';
COMMENT ON COLUMN penetapan_murni.trn_sub_kegiatan.waktu_akhir IS 'Waktu akhir pelaksanaan (format integer, misal 1 = Januari 2 = Februari).';
COMMENT ON COLUMN penetapan_murni.trn_sub_kegiatan.kunci_sub_giat IS 'Status kunci sub kegiatan (true jika terkunci).';
COMMENT ON COLUMN penetapan_murni.trn_sub_kegiatan.kunci_sub_giat_by IS 'ID pengguna yang mengunci sub kegiatan.';
COMMENT ON COLUMN penetapan_murni.trn_sub_kegiatan.kunci_sub_giat_at IS 'Waktu penguncian sub kegiatan.';
COMMENT ON COLUMN penetapan_murni.trn_sub_kegiatan.kunci_sub_giat_rinci IS 'Status kunci rincian sub kegiatan (true jika terkunci).';
COMMENT ON COLUMN penetapan_murni.trn_sub_kegiatan.kunci_sub_giat_rinci_by IS 'ID pengguna yang mengunci sub kegiatan.';
COMMENT ON COLUMN penetapan_murni.trn_sub_kegiatan.kunci_sub_giat_rinci_at IS 'Waktu penguncian sub kegiatan.';
COMMENT ON COLUMN penetapan_murni.trn_sub_kegiatan.validate_at IS 'Waktu validasi anggaran.';
COMMENT ON COLUMN penetapan_murni.trn_sub_kegiatan.validate_by IS 'ID pengguna yang melakukan validasi.';
COMMENT ON COLUMN penetapan_murni.trn_sub_kegiatan.created_at IS 'Waktu data dibuat.';
COMMENT ON COLUMN penetapan_murni.trn_sub_kegiatan.created_by IS 'ID pengguna yang membuat data.';
COMMENT ON COLUMN penetapan_murni.trn_sub_kegiatan.updated_at IS 'Waktu data terakhir diperbarui.';
COMMENT ON COLUMN penetapan_murni.trn_sub_kegiatan.updated_by IS 'ID pengguna yang memperbarui data.';
COMMENT ON COLUMN penetapan_murni.trn_sub_kegiatan.deleted_at IS 'Waktu data dihapus (soft delete).';
COMMENT ON COLUMN penetapan_murni.trn_sub_kegiatan.deleted_by IS 'ID pengguna yang menghapus data.';

CREATE INDEX trn_sub_kegiatan_id_unik_sub_kegiatan_idx ON penetapan_murni.trn_sub_kegiatan USING btree (id_unik_sub_kegiatan);
CREATE INDEX trn_sub_kegiatan_tahun_idx ON penetapan_murni.trn_sub_kegiatan USING btree (tahun);
CREATE INDEX trn_sub_kegiatan_id_daerah_idx ON penetapan_murni.trn_sub_kegiatan USING btree (id_daerah);
CREATE INDEX trn_sub_kegiatan_id_unik_jadwal_idx ON penetapan_murni.trn_sub_kegiatan USING btree (id_unik_jadwal);
CREATE INDEX trn_sub_kegiatan_id_unik_skpd_idx ON penetapan_murni.trn_sub_kegiatan USING btree (id_unik_skpd);
CREATE INDEX trn_sub_kegiatan_id_unik_sub_skpd_idx ON penetapan_murni.trn_sub_kegiatan USING btree (id_unik_sub_skpd);
CREATE INDEX trn_sub_kegiatan_id_urusan_idx ON penetapan_murni.trn_sub_kegiatan USING btree (id_urusan);
CREATE INDEX trn_sub_kegiatan_id_bidang_urusan_idx ON penetapan_murni.trn_sub_kegiatan USING btree (id_bidang_urusan);
CREATE INDEX trn_sub_kegiatan_id_program_idx ON penetapan_murni.trn_sub_kegiatan USING btree (id_program);
CREATE INDEX trn_sub_kegiatan_id_giat_idx ON penetapan_murni.trn_sub_kegiatan USING btree (id_giat);
CREATE INDEX trn_sub_kegiatan_id_sub_giat_idx ON penetapan_murni.trn_sub_kegiatan USING btree (id_sub_giat);


-- SCHEMA rancangan_pergeseran;
CREATE TABLE IF NOT EXISTS rancangan_pergeseran.trn_sub_kegiatan (
    id_unik_sub_kegiatan uuid DEFAULT '00000000-0000-0000-0000-000000000000' NOT NULL,
    tahun integer DEFAULT 0 NOT NULL,
	id_daerah integer DEFAULT 0 NOT NULL,
	id_unik_jadwal uuid DEFAULT '00000000-0000-0000-0000-000000000000' NOT NULL,
	id_unik_skpd uuid DEFAULT '00000000-0000-0000-0000-000000000000' NOT NULL,
	id_unik_sub_skpd uuid DEFAULT '00000000-0000-0000-0000-000000000000' NOT NULL,
	id_urusan integer DEFAULT 0 NOT NULL,
	id_bidang_urusan integer DEFAULT 0 NOT NULL,
    id_program integer DEFAULT 0 NOT NULL,
    id_giat integer DEFAULT 0 NOT NULL,
    id_sub_giat integer DEFAULT 0 NOT NULL,
    pagu_indikatif numeric(17,2) DEFAULT 0 NOT NULL,
    pagu numeric(17,2) DEFAULT 0 NOT NULL,
    pagu_n2_lalu numeric(17,2) DEFAULT 0 NOT NULL,
    pagu_n_lalu numeric(17,2) DEFAULT 0 NOT NULL,
    pagu_n_depan numeric(17,2) DEFAULT 0 NOT NULL,
    pagu_n2_depan numeric(17,2) DEFAULT 0 NOT NULL,
	pagu_indikatif_murni numeric(17,2) DEFAULT 0 NOT NULL,
    pagu_murni numeric(17,2) DEFAULT 0 NOT NULL,
    [REDACTED] numeric(17,2) DEFAULT 0 NOT NULL,
    pagu_n_lalu_murni numeric(17,2) DEFAULT 0 NOT NULL,
    pagu_n_depan_murni numeric(17,2) DEFAULT 0 NOT NULL,
    [REDACTED] numeric(17,2) DEFAULT 0 NOT NULL,
    waktu_awal integer DEFAULT 0 NOT NULL,
    waktu_akhir integer DEFAULT 0 NOT NULL,
	waktu_awal_murni integer DEFAULT 0 NOT NULL,
    waktu_akhir_murni integer DEFAULT 0 NOT NULL,
	kunci_sub_giat boolean DEFAULT false NOT NULL,
    kunci_sub_giat_by integer DEFAULT 0 NOT NULL,
    kunci_sub_giat_at timestamp(6) without time zone DEFAULT '0001-01-01 00:00:00'::timestamp without time zone NOT NULL,
    kunci_sub_giat_rinci boolean DEFAULT false NOT NULL,
    kunci_sub_giat_rinci_by integer DEFAULT 0 NOT NULL,
    kunci_sub_giat_rinci_at timestamp(6) without time zone DEFAULT '0001-01-01 00:00:00'::timestamp without time zone NOT NULL,
    id_bl_lama integer DEFAULT 0 NOT NULL,
	id_sub_bl_lama integer DEFAULT 0 NOT NULL,
    pagu_indikatif_lama double precision DEFAULT 0 NOT NULL,
    pagu_lama double precision DEFAULT 0 NOT NULL,
    [REDACTED] double precision DEFAULT 0 NOT NULL,
    pagu_n_lalu_lama double precision DEFAULT 0 NOT NULL,
    pagu_n_depan_lama double precision DEFAULT 0 NOT NULL,
    [REDACTED] double precision DEFAULT 0 NOT NULL,
    pagu_indikatif_murni_lama double precision DEFAULT 0 NOT NULL,
    pagu_murni_lama double precision DEFAULT 0 NOT NULL,
    [REDACTED] double precision DEFAULT 0 NOT NULL,
    pagu_n_lalu_murni_lama double precision DEFAULT 0 NOT NULL,
    pagu_n_depan_murni_lama double precision DEFAULT 0 NOT NULL,
    [REDACTED] double precision DEFAULT 0 NOT NULL,
    validate_at timestamp(6) without time zone DEFAULT '0001-01-01 00:00:00'::timestamp without time zone NOT NULL,
    validate_by integer DEFAULT 0 NOT NULL,
    created_at timestamp(6) without time zone DEFAULT now() NOT NULL,
    created_by integer DEFAULT 0 NOT NULL,
    updated_at timestamp(6) without time zone DEFAULT '0001-01-01 00:00:00'::timestamp without time zone NOT NULL,
    updated_by integer DEFAULT 0 NOT NULL,
    deleted_at timestamp(6) without time zone DEFAULT '0001-01-01 00:00:00'::timestamp without time zone NOT NULL,
    deleted_by integer DEFAULT 0 NOT NULL
);

ALTER TABLE rancangan_pergeseran.trn_sub_kegiatan ADD CONSTRAINT trn_sub_kegiatan_pkey PRIMARY KEY (id_unik_sub_kegiatan, tahun, id_daerah);
ALTER TABLE rancangan_pergeseran.trn_sub_kegiatan ADD CONSTRAINT trn_sub_kegiatan_unique_key UNIQUE (tahun, id_daerah, id_unik_jadwal, id_unik_skpd, id_unik_sub_skpd, id_urusan, id_bidang_urusan, id_program, id_giat, id_sub_giat);

COMMENT ON TABLE rancangan_pergeseran.trn_sub_kegiatan IS 'Tabel untuk menyimpan informasi sub kegiatan perangkat daerah dalam proses penyusunan APBD';
COMMENT ON COLUMN rancangan_pergeseran.trn_sub_kegiatan.id_unik_sub_kegiatan IS 'ID unik UUID sebagai ID primary key..';
COMMENT ON COLUMN rancangan_pergeseran.trn_sub_kegiatan.id_bl_lama IS 'Primary key tabel d_bl lama.';
COMMENT ON COLUMN rancangan_pergeseran.trn_sub_kegiatan.id_sub_bl_lama IS 'Primary key tabel d_sub_bl lama.';
COMMENT ON COLUMN rancangan_pergeseran.trn_sub_kegiatan.tahun IS 'Tahun anggaran.';
COMMENT ON COLUMN rancangan_pergeseran.trn_sub_kegiatan.id_daerah IS 'ID daerah terkait.';
COMMENT ON COLUMN rancangan_pergeseran.trn_sub_kegiatan.id_unik_jadwal IS 'ID jadwal anggaran.';
COMMENT ON COLUMN rancangan_pergeseran.trn_sub_kegiatan.id_unik_skpd IS 'ID SKPD induk.';
COMMENT ON COLUMN rancangan_pergeseran.trn_sub_kegiatan.id_unik_sub_skpd IS 'ID SKPD.';
COMMENT ON COLUMN rancangan_pergeseran.trn_sub_kegiatan.id_urusan IS 'ID urusan sesuai urusan yang dikerjakan oleh OPD (terutama untuk unsur pemerintahan umum).';
COMMENT ON COLUMN rancangan_pergeseran.trn_sub_kegiatan.id_bidang_urusan IS 'ID bidang urusan sesuai urusan yang dikerjakan oleh OPD (terutama untuk sub kegiatan pada urusan umum).';
COMMENT ON COLUMN rancangan_pergeseran.trn_sub_kegiatan.id_program IS 'Kolom berisi id program sesuai nomenklatur kodefikasi dan klasifikasi.';
COMMENT ON COLUMN rancangan_pergeseran.trn_sub_kegiatan.id_giat IS 'Kolom berisi id kegiatan sesuai nomenklatur kodefikasi dan klasifikasi.';
COMMENT ON COLUMN rancangan_pergeseran.trn_sub_kegiatan.id_sub_giat IS 'ID sub kegiatan sesuai nomenklatur kodefikasi dan klasifikasi.';
COMMENT ON COLUMN rancangan_pergeseran.trn_sub_kegiatan.pagu_indikatif IS 'Jumlah pagu indikatif.';
COMMENT ON COLUMN rancangan_pergeseran.trn_sub_kegiatan.pagu IS 'Jumlah pagu anggaran.';
COMMENT ON COLUMN rancangan_pergeseran.trn_sub_kegiatan.pagu_n2_lalu IS 'Jumlah pagu N-2 (dua tahun sebelumnya).';
COMMENT ON COLUMN rancangan_pergeseran.trn_sub_kegiatan.pagu_n_lalu IS 'Jumlah pagu N-1 (tahun sebelumnya).';
COMMENT ON COLUMN rancangan_pergeseran.trn_sub_kegiatan.pagu_n_depan IS 'Jumlah pagu N+1 (tahun berikutnya).';
COMMENT ON COLUMN rancangan_pergeseran.trn_sub_kegiatan.pagu_n2_depan IS 'Jumlah pagu N+2 (dua tahun berikutnya).';
COMMENT ON COLUMN rancangan_pergeseran.trn_sub_kegiatan.waktu_awal IS 'Waktu mulai pelaksanaan (format integer, misal 1 = Januari 2 = Februari).';
COMMENT ON COLUMN rancangan_pergeseran.trn_sub_kegiatan.waktu_akhir IS 'Waktu akhir pelaksanaan (format integer, misal 1 = Januari 2 = Februari).';
COMMENT ON COLUMN rancangan_pergeseran.trn_sub_kegiatan.kunci_sub_giat IS 'Status kunci sub kegiatan (true jika terkunci).';
COMMENT ON COLUMN rancangan_pergeseran.trn_sub_kegiatan.kunci_sub_giat_by IS 'ID pengguna yang mengunci sub kegiatan.';
COMMENT ON COLUMN rancangan_pergeseran.trn_sub_kegiatan.kunci_sub_giat_at IS 'Waktu penguncian sub kegiatan.';
COMMENT ON COLUMN rancangan_pergeseran.trn_sub_kegiatan.kunci_sub_giat_rinci IS 'Status kunci rincian sub kegiatan (true jika terkunci).';
COMMENT ON COLUMN rancangan_pergeseran.trn_sub_kegiatan.kunci_sub_giat_rinci_by IS 'ID pengguna yang mengunci sub kegiatan.';
COMMENT ON COLUMN rancangan_pergeseran.trn_sub_kegiatan.kunci_sub_giat_rinci_at IS 'Waktu penguncian sub kegiatan.';
COMMENT ON COLUMN rancangan_pergeseran.trn_sub_kegiatan.validate_at IS 'Waktu validasi anggaran.';
COMMENT ON COLUMN rancangan_pergeseran.trn_sub_kegiatan.validate_by IS 'ID pengguna yang melakukan validasi.';
COMMENT ON COLUMN rancangan_pergeseran.trn_sub_kegiatan.created_at IS 'Waktu data dibuat.';
COMMENT ON COLUMN rancangan_pergeseran.trn_sub_kegiatan.created_by IS 'ID pengguna yang membuat data.';
COMMENT ON COLUMN rancangan_pergeseran.trn_sub_kegiatan.updated_at IS 'Waktu data terakhir diperbarui.';
COMMENT ON COLUMN rancangan_pergeseran.trn_sub_kegiatan.updated_by IS 'ID pengguna yang memperbarui data.';
COMMENT ON COLUMN rancangan_pergeseran.trn_sub_kegiatan.deleted_at IS 'Waktu data dihapus (soft delete).';
COMMENT ON COLUMN rancangan_pergeseran.trn_sub_kegiatan.deleted_by IS 'ID pengguna yang menghapus data.';

CREATE INDEX trn_sub_kegiatan_id_unik_sub_kegiatan_idx ON rancangan_pergeseran.trn_sub_kegiatan USING btree (id_unik_sub_kegiatan);
CREATE INDEX trn_sub_kegiatan_tahun_idx ON rancangan_pergeseran.trn_sub_kegiatan USING btree (tahun);
CREATE INDEX trn_sub_kegiatan_id_daerah_idx ON rancangan_pergeseran.trn_sub_kegiatan USING btree (id_daerah);
CREATE INDEX trn_sub_kegiatan_id_unik_jadwal_idx ON rancangan_pergeseran.trn_sub_kegiatan USING btree (id_unik_jadwal);
CREATE INDEX trn_sub_kegiatan_id_unik_skpd_idx ON rancangan_pergeseran.trn_sub_kegiatan USING btree (id_unik_skpd);
CREATE INDEX trn_sub_kegiatan_id_unik_sub_skpd_idx ON rancangan_pergeseran.trn_sub_kegiatan USING btree (id_unik_sub_skpd);
CREATE INDEX trn_sub_kegiatan_id_urusan_idx ON rancangan_pergeseran.trn_sub_kegiatan USING btree (id_urusan);
CREATE INDEX trn_sub_kegiatan_id_bidang_urusan_idx ON rancangan_pergeseran.trn_sub_kegiatan USING btree (id_bidang_urusan);
CREATE INDEX trn_sub_kegiatan_id_program_idx ON rancangan_pergeseran.trn_sub_kegiatan USING btree (id_program);
CREATE INDEX trn_sub_kegiatan_id_giat_idx ON rancangan_pergeseran.trn_sub_kegiatan USING btree (id_giat);
CREATE INDEX trn_sub_kegiatan_id_sub_giat_idx ON rancangan_pergeseran.trn_sub_kegiatan USING btree (id_sub_giat);


-- SCHEMA penetapan_peregseran
CREATE TABLE IF NOT EXISTS penetapan_pergeseran.trn_sub_kegiatan (
    id_unik_sub_kegiatan uuid DEFAULT '00000000-0000-0000-0000-000000000000' NOT NULL,
    tahun integer DEFAULT 0 NOT NULL,
	id_daerah integer DEFAULT 0 NOT NULL,
	id_unik_jadwal uuid DEFAULT '00000000-0000-0000-0000-000000000000' NOT NULL,
	id_unik_skpd uuid DEFAULT '00000000-0000-0000-0000-000000000000' NOT NULL,
	id_unik_sub_skpd uuid DEFAULT '00000000-0000-0000-0000-000000000000' NOT NULL,
	id_urusan integer DEFAULT 0 NOT NULL,
	id_bidang_urusan integer DEFAULT 0 NOT NULL,
    id_program integer DEFAULT 0 NOT NULL,
    id_giat integer DEFAULT 0 NOT NULL,
    id_sub_giat integer DEFAULT 0 NOT NULL,
    pagu_indikatif numeric(17,2) DEFAULT 0 NOT NULL,
    pagu numeric(17,2) DEFAULT 0 NOT NULL,
    pagu_n2_lalu numeric(17,2) DEFAULT 0 NOT NULL,
    pagu_n_lalu numeric(17,2) DEFAULT 0 NOT NULL,
    pagu_n_depan numeric(17,2) DEFAULT 0 NOT NULL,
    pagu_n2_depan numeric(17,2) DEFAULT 0 NOT NULL,
	pagu_indikatif_murni numeric(17,2) DEFAULT 0 NOT NULL,
    pagu_murni numeric(17,2) DEFAULT 0 NOT NULL,
    [REDACTED] numeric(17,2) DEFAULT 0 NOT NULL,
    pagu_n_lalu_murni numeric(17,2) DEFAULT 0 NOT NULL,
    pagu_n_depan_murni numeric(17,2) DEFAULT 0 NOT NULL,
    [REDACTED] numeric(17,2) DEFAULT 0 NOT NULL,
    waktu_awal integer DEFAULT 0 NOT NULL,
    waktu_akhir integer DEFAULT 0 NOT NULL,
	waktu_awal_murni integer DEFAULT 0 NOT NULL,
    waktu_akhir_murni integer DEFAULT 0 NOT NULL,
	kunci_sub_giat boolean DEFAULT false NOT NULL,
    kunci_sub_giat_by integer DEFAULT 0 NOT NULL,
    kunci_sub_giat_at timestamp(6) without time zone DEFAULT '0001-01-01 00:00:00'::timestamp without time zone NOT NULL,
    kunci_sub_giat_rinci boolean DEFAULT false NOT NULL,
    kunci_sub_giat_rinci_by integer DEFAULT 0 NOT NULL,
    kunci_sub_giat_rinci_at timestamp(6) without time zone DEFAULT '0001-01-01 00:00:00'::timestamp without time zone NOT NULL,
    id_bl_lama integer DEFAULT 0 NOT NULL,
	id_sub_bl_lama integer DEFAULT 0 NOT NULL,
    pagu_indikatif_lama double precision DEFAULT 0 NOT NULL,
    pagu_lama double precision DEFAULT 0 NOT NULL,
    [REDACTED] double precision DEFAULT 0 NOT NULL,
    pagu_n_lalu_lama double precision DEFAULT 0 NOT NULL,
    pagu_n_depan_lama double precision DEFAULT 0 NOT NULL,
    [REDACTED] double precision DEFAULT 0 NOT NULL,
    pagu_indikatif_murni_lama double precision DEFAULT 0 NOT NULL,
    pagu_murni_lama double precision DEFAULT 0 NOT NULL,
    [REDACTED] double precision DEFAULT 0 NOT NULL,
    pagu_n_lalu_murni_lama double precision DEFAULT 0 NOT NULL,
    pagu_n_depan_murni_lama double precision DEFAULT 0 NOT NULL,
    [REDACTED] double precision DEFAULT 0 NOT NULL,
    validate_at timestamp(6) without time zone DEFAULT '0001-01-01 00:00:00'::timestamp without time zone NOT NULL,
    validate_by integer DEFAULT 0 NOT NULL,
    created_at timestamp(6) without time zone DEFAULT now() NOT NULL,
    created_by integer DEFAULT 0 NOT NULL,
    updated_at timestamp(6) without time zone DEFAULT '0001-01-01 00:00:00'::timestamp without time zone NOT NULL,
    updated_by integer DEFAULT 0 NOT NULL,
    deleted_at timestamp(6) without time zone DEFAULT '0001-01-01 00:00:00'::timestamp without time zone NOT NULL,
    deleted_by integer DEFAULT 0 NOT NULL
);

ALTER TABLE penetapan_pergeseran.trn_sub_kegiatan ADD CONSTRAINT trn_sub_kegiatan_pkey PRIMARY KEY (id_unik_sub_kegiatan, tahun, id_daerah);
ALTER TABLE penetapan_pergeseran.trn_sub_kegiatan ADD CONSTRAINT trn_sub_kegiatan_unique_key UNIQUE (tahun, id_daerah, id_unik_jadwal, id_unik_skpd, id_unik_sub_skpd, id_urusan, id_bidang_urusan, id_program, id_giat, id_sub_giat);

COMMENT ON TABLE penetapan_pergeseran.trn_sub_kegiatan IS 'Tabel untuk menyimpan informasi sub kegiatan perangkat daerah dalam proses penyusunan APBD';
COMMENT ON COLUMN penetapan_pergeseran.trn_sub_kegiatan.id_unik_sub_kegiatan IS 'ID unik UUID sebagai ID primary key..';
COMMENT ON COLUMN penetapan_pergeseran.trn_sub_kegiatan.id_bl_lama IS 'Primary key tabel d_bl lama.';
COMMENT ON COLUMN penetapan_pergeseran.trn_sub_kegiatan.id_sub_bl_lama IS 'Primary key tabel d_sub_bl lama.';
COMMENT ON COLUMN penetapan_pergeseran.trn_sub_kegiatan.tahun IS 'Tahun anggaran.';
COMMENT ON COLUMN penetapan_pergeseran.trn_sub_kegiatan.id_daerah IS 'ID daerah terkait.';
COMMENT ON COLUMN penetapan_pergeseran.trn_sub_kegiatan.id_unik_jadwal IS 'ID jadwal anggaran.';
COMMENT ON COLUMN penetapan_pergeseran.trn_sub_kegiatan.id_unik_skpd IS 'ID SKPD induk.';
COMMENT ON COLUMN penetapan_pergeseran.trn_sub_kegiatan.id_unik_sub_skpd IS 'ID SKPD.';
COMMENT ON COLUMN penetapan_pergeseran.trn_sub_kegiatan.id_urusan IS 'ID urusan sesuai urusan yang dikerjakan oleh OPD (terutama untuk unsur pemerintahan umum).';
COMMENT ON COLUMN penetapan_pergeseran.trn_sub_kegiatan.id_bidang_urusan IS 'ID bidang urusan sesuai urusan yang dikerjakan oleh OPD (terutama untuk sub kegiatan pada urusan umum).';
COMMENT ON COLUMN penetapan_pergeseran.trn_sub_kegiatan.id_program IS 'Kolom berisi id program sesuai nomenklatur kodefikasi dan klasifikasi.';
COMMENT ON COLUMN penetapan_pergeseran.trn_sub_kegiatan.id_giat IS 'Kolom berisi id kegiatan sesuai nomenklatur kodefikasi dan klasifikasi.';
COMMENT ON COLUMN penetapan_pergeseran.trn_sub_kegiatan.id_sub_giat IS 'ID sub kegiatan sesuai nomenklatur kodefikasi dan klasifikasi.';
COMMENT ON COLUMN penetapan_pergeseran.trn_sub_kegiatan.pagu_indikatif IS 'Jumlah pagu indikatif.';
COMMENT ON COLUMN penetapan_pergeseran.trn_sub_kegiatan.pagu IS 'Jumlah pagu anggaran.';
COMMENT ON COLUMN penetapan_pergeseran.trn_sub_kegiatan.pagu_n2_lalu IS 'Jumlah pagu N-2 (dua tahun sebelumnya).';
COMMENT ON COLUMN penetapan_pergeseran.trn_sub_kegiatan.pagu_n_lalu IS 'Jumlah pagu N-1 (tahun sebelumnya).';
COMMENT ON COLUMN penetapan_pergeseran.trn_sub_kegiatan.pagu_n_depan IS 'Jumlah pagu N+1 (tahun berikutnya).';
COMMENT ON COLUMN penetapan_pergeseran.trn_sub_kegiatan.pagu_n2_depan IS 'Jumlah pagu N+2 (dua tahun berikutnya).';
COMMENT ON COLUMN penetapan_pergeseran.trn_sub_kegiatan.waktu_awal IS 'Waktu mulai pelaksanaan (format integer, misal 1 = Januari 2 = Februari).';
COMMENT ON COLUMN penetapan_pergeseran.trn_sub_kegiatan.waktu_akhir IS 'Waktu akhir pelaksanaan (format integer, misal 1 = Januari 2 = Februari).';
COMMENT ON COLUMN penetapan_pergeseran.trn_sub_kegiatan.kunci_sub_giat IS 'Status kunci sub kegiatan (true jika terkunci).';
COMMENT ON COLUMN penetapan_pergeseran.trn_sub_kegiatan.kunci_sub_giat_by IS 'ID pengguna yang mengunci sub kegiatan.';
COMMENT ON COLUMN penetapan_pergeseran.trn_sub_kegiatan.kunci_sub_giat_at IS 'Waktu penguncian sub kegiatan.';
COMMENT ON COLUMN penetapan_pergeseran.trn_sub_kegiatan.kunci_sub_giat_rinci IS 'Status kunci rincian sub kegiatan (true jika terkunci).';
COMMENT ON COLUMN penetapan_pergeseran.trn_sub_kegiatan.kunci_sub_giat_rinci_by IS 'ID pengguna yang mengunci sub kegiatan.';
COMMENT ON COLUMN penetapan_pergeseran.trn_sub_kegiatan.kunci_sub_giat_rinci_at IS 'Waktu penguncian sub kegiatan.';
COMMENT ON COLUMN penetapan_pergeseran.trn_sub_kegiatan.validate_at IS 'Waktu validasi anggaran.';
COMMENT ON COLUMN penetapan_pergeseran.trn_sub_kegiatan.validate_by IS 'ID pengguna yang melakukan validasi.';
COMMENT ON COLUMN penetapan_pergeseran.trn_sub_kegiatan.created_at IS 'Waktu data dibuat.';
COMMENT ON COLUMN penetapan_pergeseran.trn_sub_kegiatan.created_by IS 'ID pengguna yang membuat data.';
COMMENT ON COLUMN penetapan_pergeseran.trn_sub_kegiatan.updated_at IS 'Waktu data terakhir diperbarui.';
COMMENT ON COLUMN penetapan_pergeseran.trn_sub_kegiatan.updated_by IS 'ID pengguna yang memperbarui data.';
COMMENT ON COLUMN penetapan_pergeseran.trn_sub_kegiatan.deleted_at IS 'Waktu data dihapus (soft delete).';
COMMENT ON COLUMN penetapan_pergeseran.trn_sub_kegiatan.deleted_by IS 'ID pengguna yang menghapus data.';

CREATE INDEX trn_sub_kegiatan_id_unik_sub_kegiatan_idx ON penetapan_pergeseran.trn_sub_kegiatan USING btree (id_unik_sub_kegiatan);
CREATE INDEX trn_sub_kegiatan_tahun_idx ON penetapan_pergeseran.trn_sub_kegiatan USING btree (tahun);
CREATE INDEX trn_sub_kegiatan_id_daerah_idx ON penetapan_pergeseran.trn_sub_kegiatan USING btree (id_daerah);
CREATE INDEX trn_sub_kegiatan_id_unik_jadwal_idx ON penetapan_pergeseran.trn_sub_kegiatan USING btree (id_unik_jadwal);
CREATE INDEX trn_sub_kegiatan_id_unik_skpd_idx ON penetapan_pergeseran.trn_sub_kegiatan USING btree (id_unik_skpd);
CREATE INDEX trn_sub_kegiatan_id_unik_sub_skpd_idx ON penetapan_pergeseran.trn_sub_kegiatan USING btree (id_unik_sub_skpd);
CREATE INDEX trn_sub_kegiatan_id_urusan_idx ON penetapan_pergeseran.trn_sub_kegiatan USING btree (id_urusan);
CREATE INDEX trn_sub_kegiatan_id_bidang_urusan_idx ON penetapan_pergeseran.trn_sub_kegiatan USING btree (id_bidang_urusan);
CREATE INDEX trn_sub_kegiatan_id_program_idx ON penetapan_pergeseran.trn_sub_kegiatan USING btree (id_program);
CREATE INDEX trn_sub_kegiatan_id_giat_idx ON penetapan_pergeseran.trn_sub_kegiatan USING btree (id_giat);
CREATE INDEX trn_sub_kegiatan_id_sub_giat_idx ON penetapan_pergeseran.trn_sub_kegiatan USING btree (id_sub_giat);


-- SCHEMA rancangan_perubahan;
CREATE TABLE IF NOT EXISTS rancangan_perubahan.trn_sub_kegiatan (
    id_unik_sub_kegiatan uuid DEFAULT '00000000-0000-0000-0000-000000000000' NOT NULL,
    tahun integer DEFAULT 0 NOT NULL,
	id_daerah integer DEFAULT 0 NOT NULL,
	id_unik_jadwal uuid DEFAULT '00000000-0000-0000-0000-000000000000' NOT NULL,
	id_unik_skpd uuid DEFAULT '00000000-0000-0000-0000-000000000000' NOT NULL,
	id_unik_sub_skpd uuid DEFAULT '00000000-0000-0000-0000-000000000000' NOT NULL,
	id_urusan integer DEFAULT 0 NOT NULL,
	id_bidang_urusan integer DEFAULT 0 NOT NULL,
    id_program integer DEFAULT 0 NOT NULL,
    id_giat integer DEFAULT 0 NOT NULL,
    id_sub_giat integer DEFAULT 0 NOT NULL,
    pagu_indikatif numeric(17,2) DEFAULT 0 NOT NULL,
    pagu numeric(17,2) DEFAULT 0 NOT NULL,
    pagu_n2_lalu numeric(17,2) DEFAULT 0 NOT NULL,
    pagu_n_lalu numeric(17,2) DEFAULT 0 NOT NULL,
    pagu_n_depan numeric(17,2) DEFAULT 0 NOT NULL,
    pagu_n2_depan numeric(17,2) DEFAULT 0 NOT NULL,
	pagu_indikatif_murni numeric(17,2) DEFAULT 0 NOT NULL,
    pagu_murni numeric(17,2) DEFAULT 0 NOT NULL,
    [REDACTED] numeric(17,2) DEFAULT 0 NOT NULL,
    pagu_n_lalu_murni numeric(17,2) DEFAULT 0 NOT NULL,
    pagu_n_depan_murni numeric(17,2) DEFAULT 0 NOT NULL,
    [REDACTED] numeric(17,2) DEFAULT 0 NOT NULL,
    waktu_awal integer DEFAULT 0 NOT NULL,
    waktu_akhir integer DEFAULT 0 NOT NULL,
	waktu_awal_murni integer DEFAULT 0 NOT NULL,
    waktu_akhir_murni integer DEFAULT 0 NOT NULL,
	kunci_sub_giat boolean DEFAULT false NOT NULL,
    kunci_sub_giat_by integer DEFAULT 0 NOT NULL,
    kunci_sub_giat_at timestamp(6) without time zone DEFAULT '0001-01-01 00:00:00'::timestamp without time zone NOT NULL,
    kunci_sub_giat_rinci boolean DEFAULT false NOT NULL,
    kunci_sub_giat_rinci_by integer DEFAULT 0 NOT NULL,
    kunci_sub_giat_rinci_at timestamp(6) without time zone DEFAULT '0001-01-01 00:00:00'::timestamp without time zone NOT NULL,
    id_bl_lama integer DEFAULT 0 NOT NULL,
	id_sub_bl_lama integer DEFAULT 0 NOT NULL,
    pagu_indikatif_lama double precision DEFAULT 0 NOT NULL,
    pagu_lama double precision DEFAULT 0 NOT NULL,
    [REDACTED] double precision DEFAULT 0 NOT NULL,
    pagu_n_lalu_lama double precision DEFAULT 0 NOT NULL,
    pagu_n_depan_lama double precision DEFAULT 0 NOT NULL,
    [REDACTED] double precision DEFAULT 0 NOT NULL,
    pagu_indikatif_murni_lama double precision DEFAULT 0 NOT NULL,
    pagu_murni_lama double precision DEFAULT 0 NOT NULL,
    [REDACTED] double precision DEFAULT 0 NOT NULL,
    pagu_n_lalu_murni_lama double precision DEFAULT 0 NOT NULL,
    pagu_n_depan_murni_lama double precision DEFAULT 0 NOT NULL,
    [REDACTED] double precision DEFAULT 0 NOT NULL,
    validate_at timestamp(6) without time zone DEFAULT '0001-01-01 00:00:00'::timestamp without time zone NOT NULL,
    validate_by integer DEFAULT 0 NOT NULL,
    created_at timestamp(6) without time zone DEFAULT now() NOT NULL,
    created_by integer DEFAULT 0 NOT NULL,
    updated_at timestamp(6) without time zone DEFAULT '0001-01-01 00:00:00'::timestamp without time zone NOT NULL,
    updated_by integer DEFAULT 0 NOT NULL,
    deleted_at timestamp(6) without time zone DEFAULT '0001-01-01 00:00:00'::timestamp without time zone NOT NULL,
    deleted_by integer DEFAULT 0 NOT NULL
);

ALTER TABLE rancangan_perubahan.trn_sub_kegiatan ADD CONSTRAINT trn_sub_kegiatan_pkey PRIMARY KEY (id_unik_sub_kegiatan, tahun, id_daerah);
ALTER TABLE rancangan_perubahan.trn_sub_kegiatan ADD CONSTRAINT trn_sub_kegiatan_unique_key UNIQUE (tahun, id_daerah, id_unik_jadwal, id_unik_skpd, id_unik_sub_skpd, id_urusan, id_bidang_urusan, id_program, id_giat, id_sub_giat);

COMMENT ON TABLE rancangan_perubahan.trn_sub_kegiatan IS 'Tabel untuk menyimpan informasi sub kegiatan perangkat daerah dalam proses penyusunan APBD';
COMMENT ON COLUMN rancangan_perubahan.trn_sub_kegiatan.id_unik_sub_kegiatan IS 'ID unik UUID sebagai ID primary key..';
COMMENT ON COLUMN rancangan_perubahan.trn_sub_kegiatan.id_bl_lama IS 'Primary key tabel d_bl lama.';
COMMENT ON COLUMN rancangan_perubahan.trn_sub_kegiatan.id_sub_bl_lama IS 'Primary key tabel d_sub_bl lama.';
COMMENT ON COLUMN rancangan_perubahan.trn_sub_kegiatan.tahun IS 'Tahun anggaran.';
COMMENT ON COLUMN rancangan_perubahan.trn_sub_kegiatan.id_daerah IS 'ID daerah terkait.';
COMMENT ON COLUMN rancangan_perubahan.trn_sub_kegiatan.id_unik_jadwal IS 'ID jadwal anggaran.';
COMMENT ON COLUMN rancangan_perubahan.trn_sub_kegiatan.id_unik_skpd IS 'ID SKPD induk.';
COMMENT ON COLUMN rancangan_perubahan.trn_sub_kegiatan.id_unik_sub_skpd IS 'ID SKPD.';
COMMENT ON COLUMN rancangan_perubahan.trn_sub_kegiatan.id_urusan IS 'ID urusan sesuai urusan yang dikerjakan oleh OPD (terutama untuk unsur pemerintahan umum).';
COMMENT ON COLUMN rancangan_perubahan.trn_sub_kegiatan.id_bidang_urusan IS 'ID bidang urusan sesuai urusan yang dikerjakan oleh OPD (terutama untuk sub kegiatan pada urusan umum).';
COMMENT ON COLUMN rancangan_perubahan.trn_sub_kegiatan.id_program IS 'Kolom berisi id program sesuai nomenklatur kodefikasi dan klasifikasi.';
COMMENT ON COLUMN rancangan_perubahan.trn_sub_kegiatan.id_giat IS 'Kolom berisi id kegiatan sesuai nomenklatur kodefikasi dan klasifikasi.';
COMMENT ON COLUMN rancangan_perubahan.trn_sub_kegiatan.id_sub_giat IS 'ID sub kegiatan sesuai nomenklatur kodefikasi dan klasifikasi.';
COMMENT ON COLUMN rancangan_perubahan.trn_sub_kegiatan.pagu_indikatif IS 'Jumlah pagu indikatif.';
COMMENT ON COLUMN rancangan_perubahan.trn_sub_kegiatan.pagu IS 'Jumlah pagu anggaran.';
COMMENT ON COLUMN rancangan_perubahan.trn_sub_kegiatan.pagu_n2_lalu IS 'Jumlah pagu N-2 (dua tahun sebelumnya).';
COMMENT ON COLUMN rancangan_perubahan.trn_sub_kegiatan.pagu_n_lalu IS 'Jumlah pagu N-1 (tahun sebelumnya).';
COMMENT ON COLUMN rancangan_perubahan.trn_sub_kegiatan.pagu_n_depan IS 'Jumlah pagu N+1 (tahun berikutnya).';
COMMENT ON COLUMN rancangan_perubahan.trn_sub_kegiatan.pagu_n2_depan IS 'Jumlah pagu N+2 (dua tahun berikutnya).';
COMMENT ON COLUMN rancangan_perubahan.trn_sub_kegiatan.waktu_awal IS 'Waktu mulai pelaksanaan (format integer, misal 1 = Januari 2 = Februari).';
COMMENT ON COLUMN rancangan_perubahan.trn_sub_kegiatan.waktu_akhir IS 'Waktu akhir pelaksanaan (format integer, misal 1 = Januari 2 = Februari).';
COMMENT ON COLUMN rancangan_perubahan.trn_sub_kegiatan.kunci_sub_giat IS 'Status kunci sub kegiatan (true jika terkunci).';
COMMENT ON COLUMN rancangan_perubahan.trn_sub_kegiatan.kunci_sub_giat_by IS 'ID pengguna yang mengunci sub kegiatan.';
COMMENT ON COLUMN rancangan_perubahan.trn_sub_kegiatan.kunci_sub_giat_at IS 'Waktu penguncian sub kegiatan.';
COMMENT ON COLUMN rancangan_perubahan.trn_sub_kegiatan.kunci_sub_giat_rinci IS 'Status kunci rincian sub kegiatan (true jika terkunci).';
COMMENT ON COLUMN rancangan_perubahan.trn_sub_kegiatan.kunci_sub_giat_rinci_by IS 'ID pengguna yang mengunci sub kegiatan.';
COMMENT ON COLUMN rancangan_perubahan.trn_sub_kegiatan.kunci_sub_giat_rinci_at IS 'Waktu penguncian sub kegiatan.';
COMMENT ON COLUMN rancangan_perubahan.trn_sub_kegiatan.validate_at IS 'Waktu validasi anggaran.';
COMMENT ON COLUMN rancangan_perubahan.trn_sub_kegiatan.validate_by IS 'ID pengguna yang melakukan validasi.';
COMMENT ON COLUMN rancangan_perubahan.trn_sub_kegiatan.created_at IS 'Waktu data dibuat.';
COMMENT ON COLUMN rancangan_perubahan.trn_sub_kegiatan.created_by IS 'ID pengguna yang membuat data.';
COMMENT ON COLUMN rancangan_perubahan.trn_sub_kegiatan.updated_at IS 'Waktu data terakhir diperbarui.';
COMMENT ON COLUMN rancangan_perubahan.trn_sub_kegiatan.updated_by IS 'ID pengguna yang memperbarui data.';
COMMENT ON COLUMN rancangan_perubahan.trn_sub_kegiatan.deleted_at IS 'Waktu data dihapus (soft delete).';
COMMENT ON COLUMN rancangan_perubahan.trn_sub_kegiatan.deleted_by IS 'ID pengguna yang menghapus data.';

CREATE INDEX trn_sub_kegiatan_id_unik_sub_kegiatan_idx ON rancangan_perubahan.trn_sub_kegiatan USING btree (id_unik_sub_kegiatan);
CREATE INDEX trn_sub_kegiatan_tahun_idx ON rancangan_perubahan.trn_sub_kegiatan USING btree (tahun);
CREATE INDEX trn_sub_kegiatan_id_daerah_idx ON rancangan_perubahan.trn_sub_kegiatan USING btree (id_daerah);
CREATE INDEX trn_sub_kegiatan_id_unik_jadwal_idx ON rancangan_perubahan.trn_sub_kegiatan USING btree (id_unik_jadwal);
CREATE INDEX trn_sub_kegiatan_id_unik_skpd_idx ON rancangan_perubahan.trn_sub_kegiatan USING btree (id_unik_skpd);
CREATE INDEX trn_sub_kegiatan_id_unik_sub_skpd_idx ON rancangan_perubahan.trn_sub_kegiatan USING btree (id_unik_sub_skpd);
CREATE INDEX trn_sub_kegiatan_id_urusan_idx ON rancangan_perubahan.trn_sub_kegiatan USING btree (id_urusan);
CREATE INDEX trn_sub_kegiatan_id_bidang_urusan_idx ON rancangan_perubahan.trn_sub_kegiatan USING btree (id_bidang_urusan);
CREATE INDEX trn_sub_kegiatan_id_program_idx ON rancangan_perubahan.trn_sub_kegiatan USING btree (id_program);
CREATE INDEX trn_sub_kegiatan_id_giat_idx ON rancangan_perubahan.trn_sub_kegiatan USING btree (id_giat);
CREATE INDEX trn_sub_kegiatan_id_sub_giat_idx ON rancangan_perubahan.trn_sub_kegiatan USING btree (id_sub_giat);


-- SCHEMA penetapan_perubahan;
CREATE TABLE IF NOT EXISTS penetapan_perubahan.trn_sub_kegiatan (
    id_unik_sub_kegiatan uuid DEFAULT '00000000-0000-0000-0000-000000000000' NOT NULL,
    tahun integer DEFAULT 0 NOT NULL,
	id_daerah integer DEFAULT 0 NOT NULL,
	id_unik_jadwal uuid DEFAULT '00000000-0000-0000-0000-000000000000' NOT NULL,
	id_unik_skpd uuid DEFAULT '00000000-0000-0000-0000-000000000000' NOT NULL,
	id_unik_sub_skpd uuid DEFAULT '00000000-0000-0000-0000-000000000000' NOT NULL,
	id_urusan integer DEFAULT 0 NOT NULL,
	id_bidang_urusan integer DEFAULT 0 NOT NULL,
    id_program integer DEFAULT 0 NOT NULL,
    id_giat integer DEFAULT 0 NOT NULL,
    id_sub_giat integer DEFAULT 0 NOT NULL,
    pagu_indikatif numeric(17,2) DEFAULT 0 NOT NULL,
    pagu numeric(17,2) DEFAULT 0 NOT NULL,
    pagu_n2_lalu numeric(17,2) DEFAULT 0 NOT NULL,
    pagu_n_lalu numeric(17,2) DEFAULT 0 NOT NULL,
    pagu_n_depan numeric(17,2) DEFAULT 0 NOT NULL,
    pagu_n2_depan numeric(17,2) DEFAULT 0 NOT NULL,
	pagu_indikatif_murni numeric(17,2) DEFAULT 0 NOT NULL,
    pagu_murni numeric(17,2) DEFAULT 0 NOT NULL,
    [REDACTED] numeric(17,2) DEFAULT 0 NOT NULL,
    pagu_n_lalu_murni numeric(17,2) DEFAULT 0 NOT NULL,
    pagu_n_depan_murni numeric(17,2) DEFAULT 0 NOT NULL,
    [REDACTED] numeric(17,2) DEFAULT 0 NOT NULL,
    waktu_awal integer DEFAULT 0 NOT NULL,
    waktu_akhir integer DEFAULT 0 NOT NULL,
	waktu_awal_murni integer DEFAULT 0 NOT NULL,
    waktu_akhir_murni integer DEFAULT 0 NOT NULL,
	kunci_sub_giat boolean DEFAULT false NOT NULL,
    kunci_sub_giat_by integer DEFAULT 0 NOT NULL,
    kunci_sub_giat_at timestamp(6) without time zone DEFAULT '0001-01-01 00:00:00'::timestamp without time zone NOT NULL,
    kunci_sub_giat_rinci boolean DEFAULT false NOT NULL,
    kunci_sub_giat_rinci_by integer DEFAULT 0 NOT NULL,
    kunci_sub_giat_rinci_at timestamp(6) without time zone DEFAULT '0001-01-01 00:00:00'::timestamp without time zone NOT NULL,
    id_bl_lama integer DEFAULT 0 NOT NULL,
	id_sub_bl_lama integer DEFAULT 0 NOT NULL,
    pagu_indikatif_lama double precision DEFAULT 0 NOT NULL,
    pagu_lama double precision DEFAULT 0 NOT NULL,
    [REDACTED] double precision DEFAULT 0 NOT NULL,
    pagu_n_lalu_lama double precision DEFAULT 0 NOT NULL,
    pagu_n_depan_lama double precision DEFAULT 0 NOT NULL,
    [REDACTED] double precision DEFAULT 0 NOT NULL,
    pagu_indikatif_murni_lama double precision DEFAULT 0 NOT NULL,
    pagu_murni_lama double precision DEFAULT 0 NOT NULL,
    [REDACTED] double precision DEFAULT 0 NOT NULL,
    pagu_n_lalu_murni_lama double precision DEFAULT 0 NOT NULL,
    pagu_n_depan_murni_lama double precision DEFAULT 0 NOT NULL,
    [REDACTED] double precision DEFAULT 0 NOT NULL,
    validate_at timestamp(6) without time zone DEFAULT '0001-01-01 00:00:00'::timestamp without time zone NOT NULL,
    validate_by integer DEFAULT 0 NOT NULL,
    created_at timestamp(6) without time zone DEFAULT now() NOT NULL,
    created_by integer DEFAULT 0 NOT NULL,
    updated_at timestamp(6) without time zone DEFAULT '0001-01-01 00:00:00'::timestamp without time zone NOT NULL,
    updated_by integer DEFAULT 0 NOT NULL,
    deleted_at timestamp(6) without time zone DEFAULT '0001-01-01 00:00:00'::timestamp without time zone NOT NULL,
    deleted_by integer DEFAULT 0 NOT NULL
);

ALTER TABLE penetapan_perubahan.trn_sub_kegiatan ADD CONSTRAINT trn_sub_kegiatan_pkey PRIMARY KEY (id_unik_sub_kegiatan, tahun, id_daerah);
ALTER TABLE penetapan_perubahan.trn_sub_kegiatan ADD CONSTRAINT trn_sub_kegiatan_unique_key UNIQUE (tahun, id_daerah, id_unik_jadwal, id_unik_skpd, id_unik_sub_skpd, id_urusan, id_bidang_urusan, id_program, id_giat, id_sub_giat);

COMMENT ON TABLE penetapan_perubahan.trn_sub_kegiatan IS 'Tabel untuk menyimpan informasi sub kegiatan perangkat daerah dalam proses penyusunan APBD';
COMMENT ON COLUMN penetapan_perubahan.trn_sub_kegiatan.id_unik_sub_kegiatan IS 'ID unik UUID sebagai ID primary key..';
COMMENT ON COLUMN penetapan_perubahan.trn_sub_kegiatan.id_bl_lama IS 'Primary key tabel d_bl lama.';
COMMENT ON COLUMN penetapan_perubahan.trn_sub_kegiatan.id_sub_bl_lama IS 'Primary key tabel d_sub_bl lama.';
COMMENT ON COLUMN penetapan_perubahan.trn_sub_kegiatan.tahun IS 'Tahun anggaran.';
COMMENT ON COLUMN penetapan_perubahan.trn_sub_kegiatan.id_daerah IS 'ID daerah terkait.';
COMMENT ON COLUMN penetapan_perubahan.trn_sub_kegiatan.id_unik_jadwal IS 'ID jadwal anggaran.';
COMMENT ON COLUMN penetapan_perubahan.trn_sub_kegiatan.id_unik_skpd IS 'ID SKPD induk.';
COMMENT ON COLUMN penetapan_perubahan.trn_sub_kegiatan.id_unik_sub_skpd IS 'ID SKPD.';
COMMENT ON COLUMN penetapan_perubahan.trn_sub_kegiatan.id_urusan IS 'ID urusan sesuai urusan yang dikerjakan oleh OPD (terutama untuk unsur pemerintahan umum).';
COMMENT ON COLUMN penetapan_perubahan.trn_sub_kegiatan.id_bidang_urusan IS 'ID bidang urusan sesuai urusan yang dikerjakan oleh OPD (terutama untuk sub kegiatan pada urusan umum).';
COMMENT ON COLUMN penetapan_perubahan.trn_sub_kegiatan.id_program IS 'Kolom berisi id program sesuai nomenklatur kodefikasi dan klasifikasi.';
COMMENT ON COLUMN penetapan_perubahan.trn_sub_kegiatan.id_giat IS 'Kolom berisi id kegiatan sesuai nomenklatur kodefikasi dan klasifikasi.';
COMMENT ON COLUMN penetapan_perubahan.trn_sub_kegiatan.id_sub_giat IS 'ID sub kegiatan sesuai nomenklatur kodefikasi dan klasifikasi.';
COMMENT ON COLUMN penetapan_perubahan.trn_sub_kegiatan.pagu_indikatif IS 'Jumlah pagu indikatif.';
COMMENT ON COLUMN penetapan_perubahan.trn_sub_kegiatan.pagu IS 'Jumlah pagu anggaran.';
COMMENT ON COLUMN penetapan_perubahan.trn_sub_kegiatan.pagu_n2_lalu IS 'Jumlah pagu N-2 (dua tahun sebelumnya).';
COMMENT ON COLUMN penetapan_perubahan.trn_sub_kegiatan.pagu_n_lalu IS 'Jumlah pagu N-1 (tahun sebelumnya).';
COMMENT ON COLUMN penetapan_perubahan.trn_sub_kegiatan.pagu_n_depan IS 'Jumlah pagu N+1 (tahun berikutnya).';
COMMENT ON COLUMN penetapan_perubahan.trn_sub_kegiatan.pagu_n2_depan IS 'Jumlah pagu N+2 (dua tahun berikutnya).';
COMMENT ON COLUMN penetapan_perubahan.trn_sub_kegiatan.waktu_awal IS 'Waktu mulai pelaksanaan (format integer, misal 1 = Januari 2 = Februari).';
COMMENT ON COLUMN penetapan_perubahan.trn_sub_kegiatan.waktu_akhir IS 'Waktu akhir pelaksanaan (format integer, misal 1 = Januari 2 = Februari).';
COMMENT ON COLUMN penetapan_perubahan.trn_sub_kegiatan.kunci_sub_giat IS 'Status kunci sub kegiatan (true jika terkunci).';
COMMENT ON COLUMN penetapan_perubahan.trn_sub_kegiatan.kunci_sub_giat_by IS 'ID pengguna yang mengunci sub kegiatan.';
COMMENT ON COLUMN penetapan_perubahan.trn_sub_kegiatan.kunci_sub_giat_at IS 'Waktu penguncian sub kegiatan.';
COMMENT ON COLUMN penetapan_perubahan.trn_sub_kegiatan.kunci_sub_giat_rinci IS 'Status kunci rincian sub kegiatan (true jika terkunci).';
COMMENT ON COLUMN penetapan_perubahan.trn_sub_kegiatan.kunci_sub_giat_rinci_by IS 'ID pengguna yang mengunci sub kegiatan.';
COMMENT ON COLUMN penetapan_perubahan.trn_sub_kegiatan.kunci_sub_giat_rinci_at IS 'Waktu penguncian sub kegiatan.';
COMMENT ON COLUMN penetapan_perubahan.trn_sub_kegiatan.validate_at IS 'Waktu validasi anggaran.';
COMMENT ON COLUMN penetapan_perubahan.trn_sub_kegiatan.validate_by IS 'ID pengguna yang melakukan validasi.';
COMMENT ON COLUMN penetapan_perubahan.trn_sub_kegiatan.created_at IS 'Waktu data dibuat.';
COMMENT ON COLUMN penetapan_perubahan.trn_sub_kegiatan.created_by IS 'ID pengguna yang membuat data.';
COMMENT ON COLUMN penetapan_perubahan.trn_sub_kegiatan.updated_at IS 'Waktu data terakhir diperbarui.';
COMMENT ON COLUMN penetapan_perubahan.trn_sub_kegiatan.updated_by IS 'ID pengguna yang memperbarui data.';
COMMENT ON COLUMN penetapan_perubahan.trn_sub_kegiatan.deleted_at IS 'Waktu data dihapus (soft delete).';
COMMENT ON COLUMN penetapan_perubahan.trn_sub_kegiatan.deleted_by IS 'ID pengguna yang menghapus data.';

CREATE INDEX trn_sub_kegiatan_id_unik_sub_kegiatan_idx ON penetapan_perubahan.trn_sub_kegiatan USING btree (id_unik_sub_kegiatan);
CREATE INDEX trn_sub_kegiatan_tahun_idx ON penetapan_perubahan.trn_sub_kegiatan USING btree (tahun);
CREATE INDEX trn_sub_kegiatan_id_daerah_idx ON penetapan_perubahan.trn_sub_kegiatan USING btree (id_daerah);
CREATE INDEX trn_sub_kegiatan_id_unik_jadwal_idx ON penetapan_perubahan.trn_sub_kegiatan USING btree (id_unik_jadwal);
CREATE INDEX trn_sub_kegiatan_id_unik_skpd_idx ON penetapan_perubahan.trn_sub_kegiatan USING btree (id_unik_skpd);
CREATE INDEX trn_sub_kegiatan_id_unik_sub_skpd_idx ON penetapan_perubahan.trn_sub_kegiatan USING btree (id_unik_sub_skpd);
CREATE INDEX trn_sub_kegiatan_id_urusan_idx ON penetapan_perubahan.trn_sub_kegiatan USING btree (id_urusan);
CREATE INDEX trn_sub_kegiatan_id_bidang_urusan_idx ON penetapan_perubahan.trn_sub_kegiatan USING btree (id_bidang_urusan);
CREATE INDEX trn_sub_kegiatan_id_program_idx ON penetapan_perubahan.trn_sub_kegiatan USING btree (id_program);
CREATE INDEX trn_sub_kegiatan_id_giat_idx ON penetapan_perubahan.trn_sub_kegiatan USING btree (id_giat);
CREATE INDEX trn_sub_kegiatan_id_sub_giat_idx ON penetapan_perubahan.trn_sub_kegiatan USING btree (id_sub_giat);


-- SCHEMA rancangan_pergeseran_perubahan;
CREATE TABLE IF NOT EXISTS rancangan_pergeseran_perubahan.trn_sub_kegiatan (
    id_unik_sub_kegiatan uuid DEFAULT '00000000-0000-0000-0000-000000000000' NOT NULL,
    tahun integer DEFAULT 0 NOT NULL,
	id_daerah integer DEFAULT 0 NOT NULL,
	id_unik_jadwal uuid DEFAULT '00000000-0000-0000-0000-000000000000' NOT NULL,
	id_unik_skpd uuid DEFAULT '00000000-0000-0000-0000-000000000000' NOT NULL,
	id_unik_sub_skpd uuid DEFAULT '00000000-0000-0000-0000-000000000000' NOT NULL,
	id_urusan integer DEFAULT 0 NOT NULL,
	id_bidang_urusan integer DEFAULT 0 NOT NULL,
    id_program integer DEFAULT 0 NOT NULL,
    id_giat integer DEFAULT 0 NOT NULL,
    id_sub_giat integer DEFAULT 0 NOT NULL,
    pagu_indikatif numeric(17,2) DEFAULT 0 NOT NULL,
    pagu numeric(17,2) DEFAULT 0 NOT NULL,
    pagu_n2_lalu numeric(17,2) DEFAULT 0 NOT NULL,
    pagu_n_lalu numeric(17,2) DEFAULT 0 NOT NULL,
    pagu_n_depan numeric(17,2) DEFAULT 0 NOT NULL,
    pagu_n2_depan numeric(17,2) DEFAULT 0 NOT NULL,
	pagu_indikatif_murni numeric(17,2) DEFAULT 0 NOT NULL,
    pagu_murni numeric(17,2) DEFAULT 0 NOT NULL,
    [REDACTED] numeric(17,2) DEFAULT 0 NOT NULL,
    pagu_n_lalu_murni numeric(17,2) DEFAULT 0 NOT NULL,
    pagu_n_depan_murni numeric(17,2) DEFAULT 0 NOT NULL,
    [REDACTED] numeric(17,2) DEFAULT 0 NOT NULL,
    waktu_awal integer DEFAULT 0 NOT NULL,
    waktu_akhir integer DEFAULT 0 NOT NULL,
	waktu_awal_murni integer DEFAULT 0 NOT NULL,
    waktu_akhir_murni integer DEFAULT 0 NOT NULL,
	kunci_sub_giat boolean DEFAULT false NOT NULL,
    kunci_sub_giat_by integer DEFAULT 0 NOT NULL,
    kunci_sub_giat_at timestamp(6) without time zone DEFAULT '0001-01-01 00:00:00'::timestamp without time zone NOT NULL,
    kunci_sub_giat_rinci boolean DEFAULT false NOT NULL,
    kunci_sub_giat_rinci_by integer DEFAULT 0 NOT NULL,
    kunci_sub_giat_rinci_at timestamp(6) without time zone DEFAULT '0001-01-01 00:00:00'::timestamp without time zone NOT NULL,
    id_bl_lama integer DEFAULT 0 NOT NULL,
	id_sub_bl_lama integer DEFAULT 0 NOT NULL,
    pagu_indikatif_lama double precision DEFAULT 0 NOT NULL,
    pagu_lama double precision DEFAULT 0 NOT NULL,
    [REDACTED] double precision DEFAULT 0 NOT NULL,
    pagu_n_lalu_lama double precision DEFAULT 0 NOT NULL,
    pagu_n_depan_lama double precision DEFAULT 0 NOT NULL,
    [REDACTED] double precision DEFAULT 0 NOT NULL,
    pagu_indikatif_murni_lama double precision DEFAULT 0 NOT NULL,
    pagu_murni_lama double precision DEFAULT 0 NOT NULL,
    [REDACTED] double precision DEFAULT 0 NOT NULL,
    pagu_n_lalu_murni_lama double precision DEFAULT 0 NOT NULL,
    pagu_n_depan_murni_lama double precision DEFAULT 0 NOT NULL,
    [REDACTED] double precision DEFAULT 0 NOT NULL,
    validate_at timestamp(6) without time zone DEFAULT '0001-01-01 00:00:00'::timestamp without time zone NOT NULL,
    validate_by integer DEFAULT 0 NOT NULL,
    created_at timestamp(6) without time zone DEFAULT now() NOT NULL,
    created_by integer DEFAULT 0 NOT NULL,
    updated_at timestamp(6) without time zone DEFAULT '0001-01-01 00:00:00'::timestamp without time zone NOT NULL,
    updated_by integer DEFAULT 0 NOT NULL,
    deleted_at timestamp(6) without time zone DEFAULT '0001-01-01 00:00:00'::timestamp without time zone NOT NULL,
    deleted_by integer DEFAULT 0 NOT NULL
);

ALTER TABLE rancangan_pergeseran_perubahan.trn_sub_kegiatan ADD CONSTRAINT trn_sub_kegiatan_pkey PRIMARY KEY (id_unik_sub_kegiatan, tahun, id_daerah);
ALTER TABLE rancangan_pergeseran_perubahan.trn_sub_kegiatan ADD CONSTRAINT trn_sub_kegiatan_unique_key UNIQUE (tahun, id_daerah, id_unik_jadwal, id_unik_skpd, id_unik_sub_skpd, id_urusan, id_bidang_urusan, id_program, id_giat, id_sub_giat);

COMMENT ON TABLE rancangan_pergeseran_perubahan.trn_sub_kegiatan IS 'Tabel untuk menyimpan informasi sub kegiatan perangkat daerah dalam proses penyusunan APBD';
COMMENT ON COLUMN rancangan_pergeseran_perubahan.trn_sub_kegiatan.id_unik_sub_kegiatan IS 'ID unik UUID sebagai ID primary key..';
COMMENT ON COLUMN rancangan_pergeseran_perubahan.trn_sub_kegiatan.id_bl_lama IS 'Primary key tabel d_bl lama.';
COMMENT ON COLUMN rancangan_pergeseran_perubahan.trn_sub_kegiatan.id_sub_bl_lama IS 'Primary key tabel d_sub_bl lama.';
COMMENT ON COLUMN rancangan_pergeseran_perubahan.trn_sub_kegiatan.tahun IS 'Tahun anggaran.';
COMMENT ON COLUMN rancangan_pergeseran_perubahan.trn_sub_kegiatan.id_daerah IS 'ID daerah terkait.';
COMMENT ON COLUMN rancangan_pergeseran_perubahan.trn_sub_kegiatan.id_unik_jadwal IS 'ID jadwal anggaran.';
COMMENT ON COLUMN rancangan_pergeseran_perubahan.trn_sub_kegiatan.id_unik_skpd IS 'ID SKPD induk.';
COMMENT ON COLUMN rancangan_pergeseran_perubahan.trn_sub_kegiatan.id_unik_sub_skpd IS 'ID SKPD.';
COMMENT ON COLUMN rancangan_pergeseran_perubahan.trn_sub_kegiatan.id_urusan IS 'ID urusan sesuai urusan yang dikerjakan oleh OPD (terutama untuk unsur pemerintahan umum).';
COMMENT ON COLUMN rancangan_pergeseran_perubahan.trn_sub_kegiatan.id_bidang_urusan IS 'ID bidang urusan sesuai urusan yang dikerjakan oleh OPD (terutama untuk sub kegiatan pada urusan umum).';
COMMENT ON COLUMN rancangan_pergeseran_perubahan.trn_sub_kegiatan.id_program IS 'Kolom berisi id program sesuai nomenklatur kodefikasi dan klasifikasi.';
COMMENT ON COLUMN rancangan_pergeseran_perubahan.trn_sub_kegiatan.id_giat IS 'Kolom berisi id kegiatan sesuai nomenklatur kodefikasi dan klasifikasi.';
COMMENT ON COLUMN rancangan_pergeseran_perubahan.trn_sub_kegiatan.id_sub_giat IS 'ID sub kegiatan sesuai nomenklatur kodefikasi dan klasifikasi.';
COMMENT ON COLUMN rancangan_pergeseran_perubahan.trn_sub_kegiatan.pagu_indikatif IS 'Jumlah pagu indikatif.';
COMMENT ON COLUMN rancangan_pergeseran_perubahan.trn_sub_kegiatan.pagu IS 'Jumlah pagu anggaran.';
COMMENT ON COLUMN rancangan_pergeseran_perubahan.trn_sub_kegiatan.pagu_n2_lalu IS 'Jumlah pagu N-2 (dua tahun sebelumnya).';
COMMENT ON COLUMN rancangan_pergeseran_perubahan.trn_sub_kegiatan.pagu_n_lalu IS 'Jumlah pagu N-1 (tahun sebelumnya).';
COMMENT ON COLUMN rancangan_pergeseran_perubahan.trn_sub_kegiatan.pagu_n_depan IS 'Jumlah pagu N+1 (tahun berikutnya).';
COMMENT ON COLUMN rancangan_pergeseran_perubahan.trn_sub_kegiatan.pagu_n2_depan IS 'Jumlah pagu N+2 (dua tahun berikutnya).';
COMMENT ON COLUMN rancangan_pergeseran_perubahan.trn_sub_kegiatan.waktu_awal IS 'Waktu mulai pelaksanaan (format integer, misal 1 = Januari 2 = Februari).';
COMMENT ON COLUMN rancangan_pergeseran_perubahan.trn_sub_kegiatan.waktu_akhir IS 'Waktu akhir pelaksanaan (format integer, misal 1 = Januari 2 = Februari).';
COMMENT ON COLUMN rancangan_pergeseran_perubahan.trn_sub_kegiatan.kunci_sub_giat IS 'Status kunci sub kegiatan (true jika terkunci).';
COMMENT ON COLUMN rancangan_pergeseran_perubahan.trn_sub_kegiatan.kunci_sub_giat_by IS 'ID pengguna yang mengunci sub kegiatan.';
COMMENT ON COLUMN rancangan_pergeseran_perubahan.trn_sub_kegiatan.kunci_sub_giat_at IS 'Waktu penguncian sub kegiatan.';
COMMENT ON COLUMN rancangan_pergeseran_perubahan.trn_sub_kegiatan.kunci_sub_giat_rinci IS 'Status kunci rincian sub kegiatan (true jika terkunci).';
COMMENT ON COLUMN rancangan_pergeseran_perubahan.trn_sub_kegiatan.kunci_sub_giat_rinci_by IS 'ID pengguna yang mengunci sub kegiatan.';
COMMENT ON COLUMN rancangan_pergeseran_perubahan.trn_sub_kegiatan.kunci_sub_giat_rinci_at IS 'Waktu penguncian sub kegiatan.';
COMMENT ON COLUMN rancangan_pergeseran_perubahan.trn_sub_kegiatan.validate_at IS 'Waktu validasi anggaran.';
COMMENT ON COLUMN rancangan_pergeseran_perubahan.trn_sub_kegiatan.validate_by IS 'ID pengguna yang melakukan validasi.';
COMMENT ON COLUMN rancangan_pergeseran_perubahan.trn_sub_kegiatan.created_at IS 'Waktu data dibuat.';
COMMENT ON COLUMN rancangan_pergeseran_perubahan.trn_sub_kegiatan.created_by IS 'ID pengguna yang membuat data.';
COMMENT ON COLUMN rancangan_pergeseran_perubahan.trn_sub_kegiatan.updated_at IS 'Waktu data terakhir diperbarui.';
COMMENT ON COLUMN rancangan_pergeseran_perubahan.trn_sub_kegiatan.updated_by IS 'ID pengguna yang memperbarui data.';
COMMENT ON COLUMN rancangan_pergeseran_perubahan.trn_sub_kegiatan.deleted_at IS 'Waktu data dihapus (soft delete).';
COMMENT ON COLUMN rancangan_pergeseran_perubahan.trn_sub_kegiatan.deleted_by IS 'ID pengguna yang menghapus data.';

CREATE INDEX trn_sub_kegiatan_id_unik_sub_kegiatan_idx ON rancangan_pergeseran_perubahan.trn_sub_kegiatan USING btree (id_unik_sub_kegiatan);
CREATE INDEX trn_sub_kegiatan_tahun_idx ON rancangan_pergeseran_perubahan.trn_sub_kegiatan USING btree (tahun);
CREATE INDEX trn_sub_kegiatan_id_daerah_idx ON rancangan_pergeseran_perubahan.trn_sub_kegiatan USING btree (id_daerah);
CREATE INDEX trn_sub_kegiatan_id_unik_jadwal_idx ON rancangan_pergeseran_perubahan.trn_sub_kegiatan USING btree (id_unik_jadwal);
CREATE INDEX trn_sub_kegiatan_id_unik_skpd_idx ON rancangan_pergeseran_perubahan.trn_sub_kegiatan USING btree (id_unik_skpd);
CREATE INDEX trn_sub_kegiatan_id_unik_sub_skpd_idx ON rancangan_pergeseran_perubahan.trn_sub_kegiatan USING btree (id_unik_sub_skpd);
CREATE INDEX trn_sub_kegiatan_id_urusan_idx ON rancangan_pergeseran_perubahan.trn_sub_kegiatan USING btree (id_urusan);
CREATE INDEX trn_sub_kegiatan_id_bidang_urusan_idx ON rancangan_pergeseran_perubahan.trn_sub_kegiatan USING btree (id_bidang_urusan);
CREATE INDEX trn_sub_kegiatan_id_program_idx ON rancangan_pergeseran_perubahan.trn_sub_kegiatan USING btree (id_program);
CREATE INDEX trn_sub_kegiatan_id_giat_idx ON rancangan_pergeseran_perubahan.trn_sub_kegiatan USING btree (id_giat);
CREATE INDEX trn_sub_kegiatan_id_sub_giat_idx ON rancangan_pergeseran_perubahan.trn_sub_kegiatan USING btree (id_sub_giat);


-- SCHEMA penetapan_pergeseran_perubahan;
CREATE TABLE IF NOT EXISTS penetapan_pergeseran_perubahan.trn_sub_kegiatan (
    id_unik_sub_kegiatan uuid DEFAULT '00000000-0000-0000-0000-000000000000' NOT NULL,
    tahun integer DEFAULT 0 NOT NULL,
	id_daerah integer DEFAULT 0 NOT NULL,
	id_unik_jadwal uuid DEFAULT '00000000-0000-0000-0000-000000000000' NOT NULL,
	id_unik_skpd uuid DEFAULT '00000000-0000-0000-0000-000000000000' NOT NULL,
	id_unik_sub_skpd uuid DEFAULT '00000000-0000-0000-0000-000000000000' NOT NULL,
	id_urusan integer DEFAULT 0 NOT NULL,
	id_bidang_urusan integer DEFAULT 0 NOT NULL,
    id_program integer DEFAULT 0 NOT NULL,
    id_giat integer DEFAULT 0 NOT NULL,
    id_sub_giat integer DEFAULT 0 NOT NULL,
    pagu_indikatif numeric(17,2) DEFAULT 0 NOT NULL,
    pagu numeric(17,2) DEFAULT 0 NOT NULL,
    pagu_n2_lalu numeric(17,2) DEFAULT 0 NOT NULL,
    pagu_n_lalu numeric(17,2) DEFAULT 0 NOT NULL,
    pagu_n_depan numeric(17,2) DEFAULT 0 NOT NULL,
    pagu_n2_depan numeric(17,2) DEFAULT 0 NOT NULL,
	pagu_indikatif_murni numeric(17,2) DEFAULT 0 NOT NULL,
    pagu_murni numeric(17,2) DEFAULT 0 NOT NULL,
    [REDACTED] numeric(17,2) DEFAULT 0 NOT NULL,
    pagu_n_lalu_murni numeric(17,2) DEFAULT 0 NOT NULL,
    pagu_n_depan_murni numeric(17,2) DEFAULT 0 NOT NULL,
    [REDACTED] numeric(17,2) DEFAULT 0 NOT NULL,
    waktu_awal integer DEFAULT 0 NOT NULL,
    waktu_akhir integer DEFAULT 0 NOT NULL,
	waktu_awal_murni integer DEFAULT 0 NOT NULL,
    waktu_akhir_murni integer DEFAULT 0 NOT NULL,
	kunci_sub_giat boolean DEFAULT false NOT NULL,
    kunci_sub_giat_by integer DEFAULT 0 NOT NULL,
    kunci_sub_giat_at timestamp(6) without time zone DEFAULT '0001-01-01 00:00:00'::timestamp without time zone NOT NULL,
    kunci_sub_giat_rinci boolean DEFAULT false NOT NULL,
    kunci_sub_giat_rinci_by integer DEFAULT 0 NOT NULL,
    kunci_sub_giat_rinci_at timestamp(6) without time zone DEFAULT '0001-01-01 00:00:00'::timestamp without time zone NOT NULL,
    id_bl_lama integer DEFAULT 0 NOT NULL,
	id_sub_bl_lama integer DEFAULT 0 NOT NULL,
    pagu_indikatif_lama double precision DEFAULT 0 NOT NULL,
    pagu_lama double precision DEFAULT 0 NOT NULL,
    [REDACTED] double precision DEFAULT 0 NOT NULL,
    pagu_n_lalu_lama double precision DEFAULT 0 NOT NULL,
    pagu_n_depan_lama double precision DEFAULT 0 NOT NULL,
    [REDACTED] double precision DEFAULT 0 NOT NULL,
    pagu_indikatif_murni_lama double precision DEFAULT 0 NOT NULL,
    pagu_murni_lama double precision DEFAULT 0 NOT NULL,
    [REDACTED] double precision DEFAULT 0 NOT NULL,
    pagu_n_lalu_murni_lama double precision DEFAULT 0 NOT NULL,
    pagu_n_depan_murni_lama double precision DEFAULT 0 NOT NULL,
    [REDACTED] double precision DEFAULT 0 NOT NULL,
    validate_at timestamp(6) without time zone DEFAULT '0001-01-01 00:00:00'::timestamp without time zone NOT NULL,
    validate_by integer DEFAULT 0 NOT NULL,
    created_at timestamp(6) without time zone DEFAULT now() NOT NULL,
    created_by integer DEFAULT 0 NOT NULL,
    updated_at timestamp(6) without time zone DEFAULT '0001-01-01 00:00:00'::timestamp without time zone NOT NULL,
    updated_by integer DEFAULT 0 NOT NULL,
    deleted_at timestamp(6) without time zone DEFAULT '0001-01-01 00:00:00'::timestamp without time zone NOT NULL,
    deleted_by integer DEFAULT 0 NOT NULL
);

ALTER TABLE penetapan_pergeseran_perubahan.trn_sub_kegiatan ADD CONSTRAINT trn_sub_kegiatan_pkey PRIMARY KEY (id_unik_sub_kegiatan, tahun, id_daerah);
ALTER TABLE penetapan_pergeseran_perubahan.trn_sub_kegiatan ADD CONSTRAINT trn_sub_kegiatan_unique_key UNIQUE (tahun, id_daerah, id_unik_jadwal, id_unik_skpd, id_unik_sub_skpd, id_urusan, id_bidang_urusan, id_program, id_giat, id_sub_giat);

COMMENT ON TABLE penetapan_pergeseran_perubahan.trn_sub_kegiatan IS 'Tabel untuk menyimpan informasi sub kegiatan perangkat daerah dalam proses penyusunan APBD';
COMMENT ON COLUMN penetapan_pergeseran_perubahan.trn_sub_kegiatan.id_unik_sub_kegiatan IS 'ID unik UUID sebagai ID primary key..';
COMMENT ON COLUMN penetapan_pergeseran_perubahan.trn_sub_kegiatan.id_bl_lama IS 'Primary key tabel d_bl lama.';
COMMENT ON COLUMN penetapan_pergeseran_perubahan.trn_sub_kegiatan.id_sub_bl_lama IS 'Primary key tabel d_sub_bl lama.';
COMMENT ON COLUMN penetapan_pergeseran_perubahan.trn_sub_kegiatan.tahun IS 'Tahun anggaran.';
COMMENT ON COLUMN penetapan_pergeseran_perubahan.trn_sub_kegiatan.id_daerah IS 'ID daerah terkait.';
COMMENT ON COLUMN penetapan_pergeseran_perubahan.trn_sub_kegiatan.id_unik_jadwal IS 'ID jadwal anggaran.';
COMMENT ON COLUMN penetapan_pergeseran_perubahan.trn_sub_kegiatan.id_unik_skpd IS 'ID SKPD induk.';
COMMENT ON COLUMN penetapan_pergeseran_perubahan.trn_sub_kegiatan.id_unik_sub_skpd IS 'ID SKPD.';
COMMENT ON COLUMN penetapan_pergeseran_perubahan.trn_sub_kegiatan.id_urusan IS 'ID urusan sesuai urusan yang dikerjakan oleh OPD (terutama untuk unsur pemerintahan umum).';
COMMENT ON COLUMN penetapan_pergeseran_perubahan.trn_sub_kegiatan.id_bidang_urusan IS 'ID bidang urusan sesuai urusan yang dikerjakan oleh OPD (terutama untuk sub kegiatan pada urusan umum).';
COMMENT ON COLUMN penetapan_pergeseran_perubahan.trn_sub_kegiatan.id_program IS 'Kolom berisi id program sesuai nomenklatur kodefikasi dan klasifikasi.';
COMMENT ON COLUMN penetapan_pergeseran_perubahan.trn_sub_kegiatan.id_giat IS 'Kolom berisi id kegiatan sesuai nomenklatur kodefikasi dan klasifikasi.';
COMMENT ON COLUMN penetapan_pergeseran_perubahan.trn_sub_kegiatan.id_sub_giat IS 'ID sub kegiatan sesuai nomenklatur kodefikasi dan klasifikasi.';
COMMENT ON COLUMN penetapan_pergeseran_perubahan.trn_sub_kegiatan.pagu_indikatif IS 'Jumlah pagu indikatif.';
COMMENT ON COLUMN penetapan_pergeseran_perubahan.trn_sub_kegiatan.pagu IS 'Jumlah pagu anggaran.';
COMMENT ON COLUMN penetapan_pergeseran_perubahan.trn_sub_kegiatan.pagu_n2_lalu IS 'Jumlah pagu N-2 (dua tahun sebelumnya).';
COMMENT ON COLUMN penetapan_pergeseran_perubahan.trn_sub_kegiatan.pagu_n_lalu IS 'Jumlah pagu N-1 (tahun sebelumnya).';
COMMENT ON COLUMN penetapan_pergeseran_perubahan.trn_sub_kegiatan.pagu_n_depan IS 'Jumlah pagu N+1 (tahun berikutnya).';
COMMENT ON COLUMN penetapan_pergeseran_perubahan.trn_sub_kegiatan.pagu_n2_depan IS 'Jumlah pagu N+2 (dua tahun berikutnya).';
COMMENT ON COLUMN penetapan_pergeseran_perubahan.trn_sub_kegiatan.waktu_awal IS 'Waktu mulai pelaksanaan (format integer, misal 1 = Januari 2 = Februari).';
COMMENT ON COLUMN penetapan_pergeseran_perubahan.trn_sub_kegiatan.waktu_akhir IS 'Waktu akhir pelaksanaan (format integer, misal 1 = Januari 2 = Februari).';
COMMENT ON COLUMN penetapan_pergeseran_perubahan.trn_sub_kegiatan.kunci_sub_giat IS 'Status kunci sub kegiatan (true jika terkunci).';
COMMENT ON COLUMN penetapan_pergeseran_perubahan.trn_sub_kegiatan.kunci_sub_giat_by IS 'ID pengguna yang mengunci sub kegiatan.';
COMMENT ON COLUMN penetapan_pergeseran_perubahan.trn_sub_kegiatan.kunci_sub_giat_at IS 'Waktu penguncian sub kegiatan.';
COMMENT ON COLUMN penetapan_pergeseran_perubahan.trn_sub_kegiatan.kunci_sub_giat_rinci IS 'Status kunci rincian sub kegiatan (true jika terkunci).';
COMMENT ON COLUMN penetapan_pergeseran_perubahan.trn_sub_kegiatan.kunci_sub_giat_rinci_by IS 'ID pengguna yang mengunci sub kegiatan.';
COMMENT ON COLUMN penetapan_pergeseran_perubahan.trn_sub_kegiatan.kunci_sub_giat_rinci_at IS 'Waktu penguncian sub kegiatan.';
COMMENT ON COLUMN penetapan_pergeseran_perubahan.trn_sub_kegiatan.validate_at IS 'Waktu validasi anggaran.';
COMMENT ON COLUMN penetapan_pergeseran_perubahan.trn_sub_kegiatan.validate_by IS 'ID pengguna yang melakukan validasi.';
COMMENT ON COLUMN penetapan_pergeseran_perubahan.trn_sub_kegiatan.created_at IS 'Waktu data dibuat.';
COMMENT ON COLUMN penetapan_pergeseran_perubahan.trn_sub_kegiatan.created_by IS 'ID pengguna yang membuat data.';
COMMENT ON COLUMN penetapan_pergeseran_perubahan.trn_sub_kegiatan.updated_at IS 'Waktu data terakhir diperbarui.';
COMMENT ON COLUMN penetapan_pergeseran_perubahan.trn_sub_kegiatan.updated_by IS 'ID pengguna yang memperbarui data.';
COMMENT ON COLUMN penetapan_pergeseran_perubahan.trn_sub_kegiatan.deleted_at IS 'Waktu data dihapus (soft delete).';
COMMENT ON COLUMN penetapan_pergeseran_perubahan.trn_sub_kegiatan.deleted_by IS 'ID pengguna yang menghapus data.';

CREATE INDEX trn_sub_kegiatan_id_unik_sub_kegiatan_idx ON penetapan_pergeseran_perubahan.trn_sub_kegiatan USING btree (id_unik_sub_kegiatan);
CREATE INDEX trn_sub_kegiatan_tahun_idx ON penetapan_pergeseran_perubahan.trn_sub_kegiatan USING btree (tahun);
CREATE INDEX trn_sub_kegiatan_id_daerah_idx ON penetapan_pergeseran_perubahan.trn_sub_kegiatan USING btree (id_daerah);
CREATE INDEX trn_sub_kegiatan_id_unik_jadwal_idx ON penetapan_pergeseran_perubahan.trn_sub_kegiatan USING btree (id_unik_jadwal);
CREATE INDEX trn_sub_kegiatan_id_unik_skpd_idx ON penetapan_pergeseran_perubahan.trn_sub_kegiatan USING btree (id_unik_skpd);
CREATE INDEX trn_sub_kegiatan_id_unik_sub_skpd_idx ON penetapan_pergeseran_perubahan.trn_sub_kegiatan USING btree (id_unik_sub_skpd);
CREATE INDEX trn_sub_kegiatan_id_urusan_idx ON penetapan_pergeseran_perubahan.trn_sub_kegiatan USING btree (id_urusan);
CREATE INDEX trn_sub_kegiatan_id_bidang_urusan_idx ON penetapan_pergeseran_perubahan.trn_sub_kegiatan USING btree (id_bidang_urusan);
CREATE INDEX trn_sub_kegiatan_id_program_idx ON penetapan_pergeseran_perubahan.trn_sub_kegiatan USING btree (id_program);
CREATE INDEX trn_sub_kegiatan_id_giat_idx ON penetapan_pergeseran_perubahan.trn_sub_kegiatan USING btree (id_giat);
CREATE INDEX trn_sub_kegiatan_id_sub_giat_idx ON penetapan_pergeseran_perubahan.trn_sub_kegiatan USING btree (id_sub_giat);