first commit
This commit is contained in:
106
RS_system/sql_ofrendas.sql
Normal file
106
RS_system/sql_ofrendas.sql
Normal file
@@ -0,0 +1,106 @@
|
||||
-- =============================================
|
||||
-- Módulo de Ofrendas - Script SQL
|
||||
-- =============================================
|
||||
|
||||
-- Tabla: registros_culto
|
||||
-- Almacena los registros de ofrendas por culto
|
||||
CREATE TABLE IF NOT EXISTS public.registros_culto
|
||||
(
|
||||
id bigint NOT NULL GENERATED BY DEFAULT AS IDENTITY ( INCREMENT 1 START 1 MINVALUE 1 MAXVALUE 9223372036854775807 CACHE 1 ),
|
||||
fecha date NOT NULL,
|
||||
observaciones character varying(500) COLLATE pg_catalog."default",
|
||||
creado_por character varying(100) COLLATE pg_catalog."default",
|
||||
creado_en timestamp with time zone NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
actualizado_en timestamp with time zone NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
eliminado boolean NOT NULL DEFAULT false,
|
||||
CONSTRAINT registros_culto_pkey PRIMARY KEY (id)
|
||||
);
|
||||
|
||||
COMMENT ON TABLE public.registros_culto IS 'Registros de ofrendas por culto';
|
||||
|
||||
-- Índice para búsqueda por fecha
|
||||
CREATE INDEX IF NOT EXISTS idx_registros_culto_fecha ON public.registros_culto(fecha);
|
||||
CREATE INDEX IF NOT EXISTS idx_registros_culto_eliminado ON public.registros_culto(eliminado);
|
||||
|
||||
-- =============================================
|
||||
|
||||
-- Tabla: ofrendas
|
||||
-- Almacena las ofrendas individuales de cada registro
|
||||
CREATE TABLE IF NOT EXISTS public.ofrendas
|
||||
(
|
||||
id bigint NOT NULL GENERATED BY DEFAULT AS IDENTITY ( INCREMENT 1 START 1 MINVALUE 1 MAXVALUE 9223372036854775807 CACHE 1 ),
|
||||
registro_culto_id bigint NOT NULL,
|
||||
monto numeric(10,2) NOT NULL CHECK (monto > 0),
|
||||
concepto character varying(200) COLLATE pg_catalog."default" NOT NULL,
|
||||
eliminado boolean NOT NULL DEFAULT false,
|
||||
CONSTRAINT ofrendas_pkey PRIMARY KEY (id),
|
||||
CONSTRAINT fk_ofrendas_registro_culto FOREIGN KEY (registro_culto_id)
|
||||
REFERENCES public.registros_culto (id) MATCH SIMPLE
|
||||
ON UPDATE CASCADE
|
||||
ON DELETE CASCADE
|
||||
);
|
||||
|
||||
COMMENT ON TABLE public.ofrendas IS 'Ofrendas individuales de cada registro de culto';
|
||||
|
||||
-- Índices
|
||||
CREATE INDEX IF NOT EXISTS idx_ofrendas_registro_culto_id ON public.ofrendas(registro_culto_id);
|
||||
CREATE INDEX IF NOT EXISTS idx_ofrendas_eliminado ON public.ofrendas(eliminado);
|
||||
|
||||
-- =============================================
|
||||
|
||||
-- Tabla: descuentos_ofrenda
|
||||
-- Almacena los descuentos aplicados a cada ofrenda
|
||||
CREATE TABLE IF NOT EXISTS public.descuentos_ofrenda
|
||||
(
|
||||
id bigint NOT NULL GENERATED BY DEFAULT AS IDENTITY ( INCREMENT 1 START 1 MINVALUE 1 MAXVALUE 9223372036854775807 CACHE 1 ),
|
||||
ofrenda_id bigint NOT NULL,
|
||||
monto numeric(10,2) NOT NULL CHECK (monto > 0),
|
||||
concepto character varying(200) COLLATE pg_catalog."default" NOT NULL,
|
||||
eliminado boolean NOT NULL DEFAULT false,
|
||||
CONSTRAINT descuentos_ofrenda_pkey PRIMARY KEY (id),
|
||||
CONSTRAINT fk_descuentos_ofrenda_ofrenda FOREIGN KEY (ofrenda_id)
|
||||
REFERENCES public.ofrendas (id) MATCH SIMPLE
|
||||
ON UPDATE CASCADE
|
||||
ON DELETE CASCADE
|
||||
);
|
||||
|
||||
COMMENT ON TABLE public.descuentos_ofrenda IS 'Descuentos aplicados a las ofrendas (diezmo, asignaciones, etc.)';
|
||||
|
||||
-- Índices
|
||||
CREATE INDEX IF NOT EXISTS idx_descuentos_ofrenda_ofrenda_id ON public.descuentos_ofrenda(ofrenda_id);
|
||||
CREATE INDEX IF NOT EXISTS idx_descuentos_ofrenda_eliminado ON public.descuentos_ofrenda(eliminado);
|
||||
|
||||
-- =============================================
|
||||
-- Permisos para el módulo
|
||||
-- =============================================
|
||||
|
||||
-- Primero crear el módulo si no existe
|
||||
INSERT INTO public.modulos (nombre, descripcion, icono, orden, activo)
|
||||
SELECT 'Secretaría', 'Módulo de secretaría de la iglesia', 'bi bi-journal-bookmark', 40, true
|
||||
WHERE NOT EXISTS (SELECT 1 FROM public.modulos WHERE nombre = 'Secretaría');
|
||||
|
||||
-- Crear permisos para el controlador Ofrenda
|
||||
INSERT INTO public.permisos (codigo, nombre, descripcion, modulo_id, activo)
|
||||
SELECT 'Ofrenda.Index', 'Ver Ofrendas', 'Permite ver el listado de registros de ofrendas',
|
||||
(SELECT id FROM public.modulos WHERE nombre = 'Secretaría'), true
|
||||
WHERE NOT EXISTS (SELECT 1 FROM public.permisos WHERE codigo = 'Ofrenda.Index');
|
||||
|
||||
INSERT INTO public.permisos (codigo, nombre, descripcion, modulo_id, activo)
|
||||
SELECT 'Ofrenda.Create', 'Crear Ofrenda', 'Permite crear nuevos registros de ofrendas',
|
||||
(SELECT id FROM public.modulos WHERE nombre = 'Secretaría'), true
|
||||
WHERE NOT EXISTS (SELECT 1 FROM public.permisos WHERE codigo = 'Ofrenda.Create');
|
||||
|
||||
INSERT INTO public.permisos (codigo, nombre, descripcion, modulo_id, activo)
|
||||
SELECT 'Ofrenda.Edit', 'Editar Ofrenda', 'Permite editar registros de ofrendas',
|
||||
(SELECT id FROM public.modulos WHERE nombre = 'Secretaría'), true
|
||||
WHERE NOT EXISTS (SELECT 1 FROM public.permisos WHERE codigo = 'Ofrenda.Edit');
|
||||
|
||||
INSERT INTO public.permisos (codigo, nombre, descripcion, modulo_id, activo)
|
||||
SELECT 'Ofrenda.Delete', 'Eliminar Ofrenda', 'Permite eliminar registros de ofrendas',
|
||||
(SELECT id FROM public.modulos WHERE nombre = 'Secretaría'), true
|
||||
WHERE NOT EXISTS (SELECT 1 FROM public.permisos WHERE codigo = 'Ofrenda.Delete');
|
||||
|
||||
INSERT INTO public.permisos (codigo, nombre, descripcion, modulo_id, activo)
|
||||
SELECT 'Ofrenda.Details', 'Ver Detalle Ofrenda', 'Permite ver el detalle de un registro de ofrendas',
|
||||
(SELECT id FROM public.modulos WHERE nombre = 'Secretaría'), true
|
||||
WHERE NOT EXISTS (SELECT 1 FROM public.permisos WHERE codigo = 'Ofrenda.Details');
|
||||
Reference in New Issue
Block a user