Olá srs. Continuo com meu projeto para estudos e desenvolvimento pessoal, estou fazendo uma estrutura de contas a pagar com JAVAFX e PostgreSQL. Eu gostaria de ir um pouco além do convencional.
No Postgresql eu criei 4 tabelas:
Tabela 1:
CREATE TABLE public.tbl_fin_conta_pagar_documento
(
id_documento integer NOT NULL,
data_lancamento date,
status_documento character varying(20) COLLATE pg_catalog."default",
fk_tipo_documento integer,
numero_documento character varying(20) COLLATE pg_catalog."default",
data_emissao date,
fk_empresa integer,
fk_parceiro integer,
valor_bruto double precision,
valor_desconto double precision,
valor_acrescimo double precision,
valor_liquido double precision,
CONSTRAINT tbl_fin_pagar_conta_pkey PRIMARY KEY (id_documento),
CONSTRAINT tbl_fin_conta_pagar_documento_fk_empresa_fkey FOREIGN KEY (fk_empresa)
REFERENCES public.tbl_adm_empresa (id_empresa) MATCH SIMPLE
ON UPDATE NO ACTION
ON DELETE NO ACTION,
CONSTRAINT tbl_fin_conta_pagar_documento_fk_fornecedor_fkey FOREIGN KEY (fk_parceiro)
REFERENCES public.tbl_adm_parceiro_negocio (id_parceiro) MATCH SIMPLE
ON UPDATE NO ACTION
ON DELETE NO ACTION,
CONSTRAINT tbl_fin_conta_pagar_documento_fk_tipo_documento_fkey FOREIGN KEY (fk_tipo_documento)
REFERENCES public.tbl_fin_tipo_documento (id_tipo_documento) MATCH SIMPLE
ON UPDATE NO ACTION
ON DELETE NO ACTION
)
WITH (
OIDS = FALSE
)
TABLESPACE pg_default;
ALTER TABLE public.tbl_fin_conta_pagar_documento
OWNER to dbprosystem;
Tabela 2:
CREATE TABLE public.tbl_fin_conta_pagar_parcela
(
id_parcela integer NOT NULL DEFAULT nextval('tbl_fin_parcela_conta_pagar_id_parcela_seq'::regclass),
id_documento integer,
numero_parcela integer,
status_parcela character varying(20) COLLATE pg_catalog."default",
data_emissao_parcela date,
data_vencimento_parcela date,
valor_parcela double precision,
CONSTRAINT tbl_fin_parcela_conta_pagar_pkey PRIMARY KEY (id_parcela)
)
WITH (
OIDS = FALSE
)
TABLESPACE pg_default;
ALTER TABLE public.tbl_fin_conta_pagar_parcela
OWNER to dbprosystem;
Tabela 3:
CREATE TABLE public.tbl_fin_conta_pagar_parcela_pagamento
(
id_pagamento integer NOT NULL DEFAULT nextval('tbl_fin_conta_pagar_parcela_pagamento_id_pagamento_seq'::regclass),
id_parcela integer,
data_pagamento_parcela date,
juros_parcela double precision,
multa_parcela double precision,
acrescimo_parcela double precision,
desconto_parcela double precision,
valor_liquido_pago double precision,
fk_forma_pagamento double precision,
fk_fonte_pagadora double precision,
numero_documento_pagamento double precision,
CONSTRAINT tbl_fin_conta_pagar_parcela_pagamento_pkey PRIMARY KEY (id_pagamento)
)
WITH (
OIDS = FALSE
)
TABLESPACE pg_default;
ALTER TABLE public.tbl_fin_conta_pagar_parcela_pagamento
OWNER to dbprosystem;
Conforme vcs estão vendo, as informações são salvas em tabelas diferentes. Primeiro o documento, depois gera as parcelas e depois faz o pagamento. Ao pagar podemos ter duas situações… Eu tenho uma parcela de 100,00 e pago a parcela de 100,00 e ta tudo certo, ok? A outra situação é, suponhamos que eu tenha uma parcela de 500,00 reais, mas não tenho o dinheiro pra pagar tudo e pagarei apenas 300,00, logo haverá um saldo a pagar de 200,00 desta parcela. O que eu quero não é gerar uma nova parcela e sim um saldo em aberto daquela parcela para pagar em um dia qlqr e provavelmente com multa e juros sobre o saldo… Como seria essa tabela de saldo!? Grato pelos conselhos desde já!!