CREATE TABLE public.mst_sumber_dana ( id_sumber_dana serial NOT NULL, tahun integer DEFAULT 0 NOT NULL, id_unik_sumber_dana uuid DEFAULT public.uuid_generate_v7() NOT NULL, locked boolean DEFAULT false NOT NULL, disable boolean DEFAULT false NOT NULL, jns_pemda integer[] DEFAULT '{}'::integer[] NOT NULL, daerah_khusus integer[] DEFAULT '{}'::integer[] NOT NULL, kode_akun character varying(5) DEFAULT ''::character varying NOT NULL, nama_akun text DEFAULT ''::text NOT NULL, kode_kelompok character varying(5) DEFAULT ''::character varying NOT NULL, nama_kelompok text DEFAULT ''::text NOT NULL, kode_jenis character varying(10) DEFAULT ''::character varying NOT NULL, nama_jenis text DEFAULT ''::text NOT NULL, kode_objek character varying(20) DEFAULT ''::character varying NOT NULL, nama_objek text DEFAULT ''::text NOT NULL, kode_rincian_objek character varying(50) DEFAULT ''::character varying NOT NULL, nama_rincian_objek text DEFAULT ''::text NOT NULL, kode_sub_rincian_objek character varying(60) DEFAULT ''::character varying NOT NULL, nama_sub_rincian_objek text DEFAULT ''::text NOT NULL, kode_dana character varying(60) DEFAULT ''::character varying NOT NULL, nama_dana text DEFAULT ''::text NOT NULL, hist_data jsonb DEFAULT '[]'::jsonb 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 ); COMMENT ON TABLE public.mst_sumber_dana IS 'Tabel referensi sumber dana dalam sistem public/SIPD. Menyimpan informasi kode dan nama akun anggaran, kelompok, jenis, objek, rincian objek, serta sub-rincian objek yang terkait dengan sumber pendanaan. Digunakan untuk klasifikasi anggaran dan pelaporan keuangan daerah.'; COMMENT ON COLUMN public.mst_sumber_dana.id_sumber_dana IS 'Primary key. ID unik untuk setiap sumber dana.'; COMMENT ON COLUMN public.mst_sumber_dana.tahun IS 'Tahun berlakunya data sumber dana.'; COMMENT ON COLUMN public.mst_sumber_dana.id_unik_sumber_dana IS 'ID unik UUID untuk backup ID primary key.'; COMMENT ON COLUMN public.mst_sumber_dana.locked IS 'Status kunci data. TRUE berarti data terkunci dan tidak dapat diubah.'; COMMENT ON COLUMN public.mst_sumber_dana.disable IS 'Status nonaktif. TRUE berarti sumber dana tidak digunakan.'; COMMENT ON COLUMN public.mst_sumber_dana.jns_pemda IS 'Daftar jenis pemerintah daerah dalam bentuk array (1=Provinsi, 2=Kabupaten, 3=Kota).'; COMMENT ON COLUMN public.mst_sumber_dana.daerah_khusus IS 'Daftar ID daerah khusus dalam bentuk array (440=Papua, 528=Papua Barat).'; COMMENT ON COLUMN public.mst_sumber_dana.kode_akun IS 'Kode akun anggaran sesuai struktur APBD.'; COMMENT ON COLUMN public.mst_sumber_dana.nama_akun IS 'Nama akun anggaran.'; COMMENT ON COLUMN public.mst_sumber_dana.kode_kelompok IS 'Kode kelompok belanja atau penerimaan dalam struktur anggaran.'; COMMENT ON COLUMN public.mst_sumber_dana.nama_kelompok IS 'Nama kelompok belanja atau penerimaan.'; COMMENT ON COLUMN public.mst_sumber_dana.kode_jenis IS 'Kode jenis belanja/penerimaan dalam struktur anggaran.'; COMMENT ON COLUMN public.mst_sumber_dana.nama_jenis IS 'Nama jenis belanja/penerimaan.'; COMMENT ON COLUMN public.mst_sumber_dana.kode_objek IS 'Kode objek belanja/penerimaan.'; COMMENT ON COLUMN public.mst_sumber_dana.nama_objek IS 'Nama objek belanja/penerimaan.'; COMMENT ON COLUMN public.mst_sumber_dana.kode_rincian_objek IS 'Kode rincian objek belanja/penerimaan.'; COMMENT ON COLUMN public.mst_sumber_dana.nama_rincian_objek IS 'Nama rincian objek belanja/penerimaan.'; COMMENT ON COLUMN public.mst_sumber_dana.kode_sub_rincian_objek IS 'Kode sub rincian objek belanja/penerimaan.'; COMMENT ON COLUMN public.mst_sumber_dana.nama_sub_rincian_objek IS 'Nama sub rincian objek belanja/penerimaan.'; COMMENT ON COLUMN public.mst_sumber_dana.kode_dana IS 'Kode unik sumber dana.'; COMMENT ON COLUMN public.mst_sumber_dana.nama_dana IS 'Nama sumber dana.'; COMMENT ON COLUMN public.mst_sumber_dana.hist_data IS 'Riwayat perubahan data dalam format JSONB.'; COMMENT ON COLUMN public.mst_sumber_dana.created_at IS 'Tanggal dan waktu pertama kali data dibuat.'; COMMENT ON COLUMN public.mst_sumber_dana.created_by IS 'ID pengguna yang membuat data pertama kali.'; COMMENT ON COLUMN public.mst_sumber_dana.updated_at IS 'Tanggal dan waktu terakhir kali data diperbarui.'; COMMENT ON COLUMN public.mst_sumber_dana.updated_by IS 'ID pengguna yang memperbarui data terakhir kali.'; COMMENT ON COLUMN public.mst_sumber_dana.deleted_at IS 'Tanggal dan waktu data dihapus (soft delete).'; COMMENT ON COLUMN public.mst_sumber_dana.deleted_by IS 'ID pengguna yang menghapus data.'; ALTER TABLE public.mst_sumber_dana ADD CONSTRAINT mst_sumber_dana_pkey PRIMARY KEY (id_sumber_dana, tahun); ALTER TABLE public.mst_sumber_dana ADD CONSTRAINT mst_sumber_dana_unique_key UNIQUE (id_sumber_dana, tahun, kode_dana); CREATE INDEX mst_sumber_dana_id_sub_rincian_objek_idx ON public.mst_sumber_dana USING btree (id_sumber_dana); CREATE INDEX mst_sumber_dana_lra_tahun_idx ON public.mst_sumber_dana USING btree (tahun); CREATE INDEX mst_sumber_dana_lra_kode_akun_idx ON public.mst_sumber_dana USING btree (kode_akun); CREATE INDEX mst_sumber_dana_lra_kode_kelompok_idx ON public.mst_sumber_dana USING btree (kode_kelompok); CREATE INDEX mst_sumber_dana_lra_kode_jenis_idx ON public.mst_sumber_dana USING btree (kode_jenis); CREATE INDEX mst_sumber_dana_lra_kode_objek_idx ON public.mst_sumber_dana USING btree (kode_objek); CREATE INDEX mst_sumber_dana_lra_kode_rincian_objek_idx ON public.mst_sumber_dana USING btree (kode_rincian_objek); CREATE INDEX mst_sumber_dana_lra_kode_sub_rincian_objek_idx ON public.mst_sumber_dana USING btree (kode_sub_rincian_objek);