Estrutura Contas a Pagar - JAVAFX + SQL

0 respostas
Lucas_Gustavo

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á!!

Criado 17 de janeiro de 2020
Respostas 0
Participantes 1