MFI016 — Movimentação MFI016
Fonte
- Form principal:
source/MFI016/UMFI016.pas(UMFI016.dfm) - DataModule:
source/MFI016/UdmMFI016.pas(UdmMFI016.dfm) - Detalhamento (modal):
source/MFI016/UfrmDetalhamento.pas(UfrmDetalhamento.dfm) - Pacote BPL:
source/MFI016/MFI016.dpk - Shared units:
jCommon(jSessao, jDB, jMessage, jLista, jUtils, jValidate),jPesquisa(Busca)
Objetivo
Cadastrar e manter processos judiciais referenciados no SPED Contribuicoes (PIS/COFINS) que conferem exigibilidade suspensa sobre contribuicoes. Cada processo registra dados da acao (numero, secao, vara, natureza, sentenca e vigencia) e, em uma janela de detalhamento, as operacoes fiscais afetadas (nota fiscal, item, bases e aliquotas de PIS/COFINS originais e determinadas judicialmente) para posterior geracao dos registros 1010/1020 do SPED.
Funcionalidades
- Incluir, alterar e consultar processos judiciais SPED por empresa.
- Vincular itens (operacoes) a cada processo via janela
Detalhamento, importando dados de notas fiscais ja lancadas (NF-e / CT-e autorizados). - Controlar vigencia do processo (data da sentenca, data inicial e data final de vigencia) com validacao cruzada de datas.
- Gerar numero sequencial do lancamento via
GERA_SEQUENCIA('SEQ_PROCESSOREFSPED'). - Validar empresa, pessoa, item e CST de PIS/COFINS (original e judicial) usando lookups da
jPesquisa(F9). - Calcular automaticamente
VL_CALCPIS,VL_CALCPISJUD,VL_CALCCOFINSeVL_CALCCOFINSJUDcomobase * aliquota / 100(campos calculados do grid de itens).
Estrutura da Tela
Barra de ferramentas (toolbar)
| Botao | Caption/Hint | Atalho | Acao |
|---|---|---|---|
| Novo | Novo Registro <F5> | F5 | Append em PROCESSOREFSPED |
| Salvar | Salvar Alteracoes <F6> | F6 | Post + CommitRetaining + reabre grid |
| Excluir | Excluir Registro <F7> | F7 | (oculto no iniciar, nao implementado) |
| Limpar | Cancelar Registro <F4> | F4 | Cancel do dataset em edicao |
| Consultar | Consultar <F3> | F3 | (oculto no iniciar) |
| Atualizar | Atualizar Registros <F2> | F2 | Rollback + StartTransaction + reabre |
| Imprimir | Imprimir <F8> | F8 | (oculto no iniciar) |
| Sair | Sair <F12> | F12 | Close |
Grupo "Dados do Processo" (grpDADOS)
| Campo (label) | FocusControl | DataField | Tipo | Obrig. |
|---|---|---|---|---|
| N Lancto | edtNR_LANCAMENTO | NR_LANCAMENTO | inteiro (readonly) | auto |
| Empresa | edtCD_EMPRESA | CD_EMPRESA + NM_EMPRESA | inteiro + descricao | Sim |
| SPED | cmbTP_SPED | TP_SPED | combo: "Contribuicoes (PIS/COFINS) / C" | - |
| Tipo | cmbTP_TIPO | TP_TIPO | combo: "Acao Judicial / A" | - |
| Processo | edtDS_PROCESSO | DS_PROCESSO | texto | Sim |
| Secao Judiciaria | edtDS_SECAOJUDIC | DS_SECAOJUDIC | texto | Sim |
| Vara Judicial | edtDS_VARA | DS_VARA | texto (2 chars) | Sim |
| Efeitos Tributarios | edtDS_EFEITOTRIB | DS_EFEITOTRIB | texto | - |
| Natureza da Acao | cmbTP_NATUACAO | TP_NATUACAO | combo (17 opcoes: 01-09, 12-17, 19, 99) | - |
| Data Sentenca | edtDT_SENTENCA | DT_SENTENCA | data | - |
| Data Inicial de Vigencia | edtDT_VIGENCIAINICIAL | DT_VIGENCIAINICIAL | data | Sim |
| Data Final de Vigencia | edtDT_VIGENCIAFINAL | DT_VIGENCIAFINAL | data | - |
Grupo "Consulta de Processos" (grpCONSULTA)
- Grid
gridETAPASFILTROlista processos ja cadastrados na empresa (colunas: N Lancto, SPED, Tipo, Processo, Sentenca, Vigencia Inicial, Vigencia Final). - Subgrupo "Detalhamento das Contribuicoes com Exigibilidade Suspensa":
- Grid
DBGrid1mostra itens (operacoes) do processo selecionado (Data, Registro, N Nota, Produto, descricao). - Botao
Detalhamentoabre a janela modalTfrmDetalhamentopara incluir/alterar item.
- Grid
Janela modal "Detalhamento" (UfrmDetalhamento)
Aberta pelo botao Detalhamento do form principal. Permite informar todos os dados da operacao (nota fiscal, item, valor, CST e aliquotas) e possui duas abas:
- Aba
CST PIS(tabCSTPIS) — blocos "PIS - Efetivamente aplicado" e "PIS - Determinado pela decisao judicial" (campos CST, base, aliquota, valor para PIS escriturado e PIS judicial). - Aba
CST COFINS(tabCSTCOFINS) — mesma estrutura para COFINS (COFINS original + COFINS judicial).
Demais campos: Registro SPED, Chave de Acesso, Pessoa (lookup F9 = PESSOA), Data da Operacao, N Nota Fiscal (F9 = NOTAFISCAL_E), Serie, Especie, Valor da Operacao, Produto (F9 = ITEM ou ITEMNOTA quando ha nota), Conta Contábil (F9 = PLANOCONTAS), Observacoes. Botao Limpar Nota reabre os campos de identificacao da NF quando a nota esta vinculada.
Parametros que Influenciam
Nenhum parametro de tabelas PARM*/CONFIG* e consultado pelo codigo. A tela depende apenas do contexto da sessao (sessao.empresa.cd_empresa, sessao.usuario.cd_usuario) e dos dados da empresa corrente.
Regras de Negocio
- Defaults no Append do processo (
tabPROCESSOREFSPEDAfterInsert):CD_EMPRESA = sessao.empresa.cd_empresa,TP_SPED = 'C'(Contribuicoes),TP_TIPO = 'A'(Acao Judicial),TP_NATUACAO = '01'(Transito em julgado favoravel). - Confirmacao ao editar (
tabPROCESSOREFSPEDBeforePost): emdsEdit, pergunta "O Processo ja Esta Gravado! Deseja Realmente Alterar?"; se usuario recusa, cancela e lancaE-0000"Processo Cancelado!". - Campos obrigatorios no processo:
DS_PROCESSO,DS_SECAOJUDIC,DS_VARA,DT_VIGENCIAINICIALeCD_EMPRESA— cada um com SetFocus no campo eJExceptionespecifica. - Geracao do numero de lancamento (somente em
dsInsert):transactionGeralindependente; chamaGERA_SEQUENCIA(NULL, 'SEQ_PROCESSOREFSPED'); seV_DS_MENSAGEM <> ''lancaE-0000com a mensagem da procedure; atribuiV_NR_SEQUENCIAaNR_LANCAMENTO. - Validacao cruzada de datas (3 handlers
OnValidate): Sentenca <= Vigencia Inicial <= Vigencia Final; violacoes lancamE-0000com a mensagem da regra violada. - Lookup de Empresa via F9 (
edtCD_EMPRESAKeyDown): buscaEMPRESAUSUARIOcomsessao.usuario.cd_usuario; retorno preencheCD_EMPRESAeValidaEmpresacarregaNM_EMPRESA. - Bloqueio da empresa apos selecao (
tabPROCESSOREFSPEDAfterScroll):HabilitaCampo(edtCD_EMPRESA, False)quando haCD_EMPRESApreenchido no registro corrente. - Itens (ITEMPROCESSO) AfterInsert: se o processo-pai esta em
dsInsert/dsEdit, faz Post do pai antes de habilitar campos da janelaDetalhamentoe escondebtnLimparNota. - Numero do item na gravacao (
tabITEMPROCESSOBeforePost):NR_LANCAMENTO = pai.NR_LANCAMENTO;CD_OPERACAO = GerarSequencia('SEQ_ITEMPROCESSOREFSPED'); copiaVL_CALCPIS/JUD/COFINS/JUDcalculados paraVL_PIS/JUD/COFINS/JUD. - Validacao de nota fiscal no item (procedure privada
ValidaNota, chamada peloBeforePostdo item): quandoNR_NOTAFISCAL,CD_SERIE,NR_CHAVEACESSOeCD_ESPECIEestao preenchidos, consultaNOTA+NFE+CTRCfiltrando por empresa/pessoa/numero/serie/especie e exigeST_NOTA = 'V'; se nao localizada, lancaE-0000"Nota Fiscal Eletronica Nao Encontrada!"; se chave de acesso divergente, lancaE-0000"Chave de Acesso da Nota Fiscal Eletronica divergente!". - Carga automatica de dados da nota (
CarregaDadosNota, disparado nosOnValidatedeNR_NOTAFISCAL,CD_SERIE,CD_ESPECIE): fazCOUNT(*)emNOTALEFT JOINNFE/CTRCexigindo nota autorizada (protocolo ou CT-e/NF-e autorizado); se encontra 1 resultado, preenche automaticamenteNR_NOTAFISCAL,NR_LANCTONOTA,CD_SERIE,CD_ESPECIE,CD_PESSOA,DT_OPERACAOeNR_CHAVEACESSOe chamaHabilitaCamposNota(False). - Amarracao Item x Nota (
tabITEMPROCESSOCD_ITEMValidate): quando haNR_LANCTONOTA, consultaITEMNOTA+MOVIMENTACAO+HISTORICOpara garantir que o item pertence a nota e, se sim, carregaCD_CONTACONTABILdeHISTORICO.CD_CONTACREDITO; caso contrario, foca emedtCD_PRODUTOe lancaE-0000"O Item informado nao pertence a Nota!". - Validacoes FK com utilitarios
jValidate:CD_EMPRESAviaValidaEmpresa,CD_PESSOAviaValidaPessoa,CD_ITEMviaValidaItem,CD_CSTPIS/PISJUD/COFINS/COFINSJUDviaValidaCst— todas preenchem descricoes auxiliares e limpam quando o campo e vazio. - Calculo de tributos (
tabITEMPROCESSOCalcFields):VL_CALCPIS = VL_BASEPIS * PC_ALIQPIS / 100(e analogos para PIS-JUD, COFINS, COFINS-JUD). Os camposVL_PIS*reais sao atualizados a partir dos calculados somente noBeforePost. - Salvamento do item (
TfrmDetalhamento.btnSalvarClick): valida na ordemDT_OPERACAO,VL_OPERACAO,CD_CSTPIS,CD_CSTPISJUD(aba PIS),CD_CSTCOFINS,CD_CSTCOFINSJUD(aba COFINS); quando ha nota vinculada, reaplicaHabilitaCamposNota(False); fazCommitRetaininge exibeI-0047. - Botao "Limpar Nota" (
btnLimparNotaClick): libera a amarracao com a NF, limpandoNR_NOTAFISCAL,CD_SERIE,CD_ESPECIE,CD_PESSOA,DT_OPERACAO,NR_CHAVEACESSO,NR_LANCTONOTA,TP_NOTAeCD_ITEM; reabilita os campos de identificacao. - Exclusao de item (
TfrmDetalhamento.btnExcluirClick):Deletedireto +CommitRetaining+I-0046(sem confirmacao adicional). - Fechamento do form principal (
TfrmMFI016.FormClose): se houver alteracao pendente no processo, perguntaC-0000"Deseja Salvar as Alteracoes Pendentes?"; em seguidaRollbackda transacao,Freedo DataModule edescarregarPrograma.
Datasets e SQL
tabPROCESSOREFSPED (TFDQuery, UpdateObject updPROCESSOREFSPED)
Filtrado por COALESCE(P.CD_EMPRESA, :CD_EMPRESA) = :CD_EMPRESA e ordenado por NR_LANCAMENTO. Traz descricoes derivadas (DS_TPSPED, DS_TPTIPO, DS_TPNATUACAO) via CASE.
SELECT P.CD_EMPRESA, E.NM_EMPRESA,
P.NR_LANCAMENTO, P.TP_SPED, P.TP_TIPO, P.DS_PROCESSO,
P.DS_SECAOJUDIC, P.DS_VARA, P.TP_NATUACAO, P.DS_EFEITOTRIB,
P.DT_SENTENCA, P.DT_VIGENCIAINICIAL, P.DT_VIGENCIAFINAL,
CASE P.TP_SPED WHEN 'C' THEN 'Contribuicoes (PIS/COFINS)' END DS_TPSPED,
CASE P.TP_TIPO WHEN 'A' THEN 'Acao Judicial' END DS_TPTIPO,
CASE P.TP_NATUACAO WHEN '01' THEN 'Decisao Judicial Transitada em Julgado...'
WHEN '02' THEN 'Decisao Judicial nao Transitada em Julgado...'
...
WHEN '99' THEN 'Outros' END DS_TPNATUACAO
FROM PROCESSOREFSPED P
LEFT JOIN EMPRESA E ON (E.CD_EMPRESA = P.CD_EMPRESA)
WHERE COALESCE(P.CD_EMPRESA, :CD_EMPRESA) = :CD_EMPRESA
ORDER BY P.NR_LANCAMENTO
updPROCESSOREFSPED define INSERT, UPDATE e DELETE parametrizados em PROCESSOREFSPED.
tabITEMPROCESSO (TFDQuery master-detail de PROCESSOREFSPED por NR_LANCAMENTO)
Carrega itens com descricoes de item, pessoa e CSTs (PIS/PIS-JUD/COFINS/COFINS-JUD):
SELECT IPR.NR_LANCAMENTO, IPR.CD_OPERACAO, IPR.CD_REGISTROSPED, IPR.NR_NOTAFISCAL,
IPR.NR_LANCTONOTA, IPR.TP_NOTA, IPR.CD_SERIE, IPR.CD_ESPECIE, IPR.NR_CHAVEACESSO,
IPR.CD_PESSOA, P.NM_PESSOA, IPR.CD_ITEM, I.DS_ITEM,
IPR.DT_OPERACAO, IPR.VL_OPERACAO,
IPR.CD_CSTPIS, CSTPIS.DS_CST DS_CSTPIS, IPR.VL_BASEPIS, IPR.PC_ALIQPIS, IPR.VL_PIS,
IPR.CD_CSTPISJUD, CSTPISJ.DS_CST DS_CSTPISJUD, IPR.VL_BASEPISJUD, IPR.PC_ALIQPISJUD, IPR.VL_PISJUD,
IPR.CD_CSTCOFINS, CSTCOFINS.DS_CST DS_CSTCOFINS, IPR.VL_BASECOFINS, IPR.PC_ALIQCOFINS, IPR.VL_COFINS,
IPR.CD_CSTCOFINSJUD, CSTCOFINSJ.DS_CST DS_CSTCOFINSJUD, IPR.VL_BASECOFINSJUD, IPR.PC_ALIQCOFINSJUD, IPR.VL_COFINSJUD,
IPR.CD_CONTACONTABIL, IPR.DS_OBSOPERACAO
FROM ITEMPROCESSOREFSPED IPR
LEFT JOIN ITEM I ON (I.CD_ITEM = IPR.CD_ITEM)
LEFT JOIN PESSOA P ON (P.CD_PESSOA = IPR.CD_PESSOA)
LEFT JOIN CST CSTPIS ON (CSTPIS.CD_CST = IPR.CD_CSTPIS)
LEFT JOIN CST CSTPISJ ON (CSTPISJ.CD_CST = IPR.CD_CSTPISJUD)
LEFT JOIN CST CSTCOFINS ON (CSTCOFINS.CD_CST = IPR.CD_CSTCOFINS)
LEFT JOIN CST CSTCOFINSJ ON (CSTCOFINSJ.CD_CST = IPR.CD_CSTCOFINSJUD)
WHERE IPR.NR_LANCAMENTO = :NR_LANCAMENTO
updITEMPROCESSO define INSERT/UPDATE/DELETE parametrizados em ITEMPROCESSOREFSPED.
Consultas dinamicas no DataModule (codigo)
ValidaNotaeCarregaDadosNota(emUdmMFI016.paseUfrmDetalhamento.pas):SELECTdeNOTA+ LEFT JOINNFE/CTRC+PESSOAcom filtroN.ST_NOTA = 'V'e CASE para aceitar apenas notas/CT-e autorizadas.tabITEMPROCESSOCD_ITEMValidate:SELECTemITEMNOTA+ITEM+MOVIMENTACAO+HISTORICOpara herdar a conta contábil de credito do historico da movimentação.
Transacoes
transaction(principal): cobre a sessao inteira do form.transactionGeral(auxiliar): isolada, usada apenas para chamarGERA_SEQUENCIAnoBeforePostemdsInsert(rollback preventivo antes deStartTransaction).
Tabelas de Escrita (INSERT/UPDATE/DELETE)
| Tabela | Operacoes |
|---|---|
| ITEMPROCESSOREFSPED | DELETE, INSERT, SELECT, UPDATE |
| PROCESSOREFSPED | DELETE, INSERT, SELECT, UPDATE |
Tabelas de Leitura (SELECT)
| Tabela | Operacoes |
|---|---|
| CST | SELECT |
| CTRC | SELECT |
| EMPRESA | SELECT |
| HISTORICO | SELECT |
| ITEM | SELECT |
| ITEMNOTA | SELECT |
| MOVIMENTACAO | SELECT |
| NFE | SELECT |
| NOTA | SELECT |
| PESSOA | SELECT |
Procedures Chamadas
| Procedure | Tabelas Acessadas |
|---|---|
| GERA_SEQUENCIA | SEQUENCIA (SELECT/UPDATE) |
Alem da procedure registrada, o codigo invoca a funcao GerarSequencia(transaction, 'SEQ_ITEMPROCESSOREFSPED') (wrapper de jDB) para numerar CD_OPERACAO de cada item.
Tabelas via Procedures (acesso indireto)
| Tabela | Operacoes |
|---|---|
| SEQUENCIA | SELECT, UPDATE |
Dependencias Aferentes (quem alimenta esta tela)
Telas que escrevem nas tabelas lidas por MFI016 (CST, CTRC, EMPRESA, HISTORICO, ITEM, ITEMNOTA, MOVIMENTACAO, NFE, NOTA, PESSOA). Limitado a 30 telas mais conectadas.
| Tela | Tabelas em Comum |
|---|---|
| CNF001 | EMPRESA, ITEM, ITEMNOTA, MOVIMENTACAO, NFE, NOTA, PESSOA |
| CNF012 | CTRC, EMPRESA, ITEM, ITEMNOTA, MOVIMENTACAO, NOTA, PESSOA |
| MNF001 | CST, EMPRESA, ITEM, ITEMNOTA, NFE, NOTA, PESSOA |
| MNF011 | EMPRESA, ITEM, ITEMNOTA, MOVIMENTACAO, NOTA, PESSOA |
| MNF030 | EMPRESA, ITEM, ITEMNOTA, NFE, NOTA, PESSOA |
| MNF024 | EMPRESA, ITEM, ITEMNOTA, MOVIMENTACAO, NOTA |
| MNF032 | CTRC, ITEMNOTA, NFE, NOTA, PESSOA |
| CPD001 | EMPRESA, ITEM, MOVIMENTACAO, NFE, PESSOA |
| CNF011 | EMPRESA, ITEM, NOTA, PESSOA |
| CNF017 | EMPRESA, ITEM, NOTA, PESSOA |
| MNF019 | EMPRESA, ITEMNOTA, NFE, NOTA |
| MNF023 | EMPRESA, ITEMNOTA, NOTA, PESSOA |
| MNF029 | EMPRESA, ITEMNOTA, NOTA, PESSOA |
| MPD011 | EMPRESA, ITEMNOTA, NOTA, PESSOA |
| MRC020 | EMPRESA, ITEMNOTA, NOTA, PESSOA |
| MTR004 | ITEMNOTA, NFE, NOTA, PESSOA |
| RFC040 | EMPRESA, ITEM, MOVIMENTACAO, NOTA |
| MNF016 | EMPRESA, ITEM, ITEMNOTA, PESSOA |
| CPD002 | EMPRESA, ITEM, MOVIMENTACAO, PESSOA |
| CPD003 | EMPRESA, ITEM, MOVIMENTACAO, PESSOA |
| CPD005 | EMPRESA, ITEM, MOVIMENTACAO, PESSOA |
| MPD084 | EMPRESA, ITEM, MOVIMENTACAO, PESSOA |
| RNF002 | EMPRESA, HISTORICO, ITEM, PESSOA |
| RNF005 | EMPRESA, HISTORICO, ITEM, PESSOA |
| RNF006 | EMPRESA, ITEM, MOVIMENTACAO, PESSOA |
| RNF012 | EMPRESA, ITEM, MOVIMENTACAO, PESSOA |
| RNF038 | EMPRESA, ITEM, MOVIMENTACAO, PESSOA |
| RPD001 | EMPRESA, ITEM, MOVIMENTACAO, PESSOA |
| RPD003 | EMPRESA, ITEM, MOVIMENTACAO, PESSOA |
| RPD005 | EMPRESA, ITEM, MOVIMENTACAO, PESSOA |
+540 telas adicionais (muitas telas do ERP escrevem em tabelas mestras como ITEM, PESSOA, EMPRESA e nas tabelas de NF/movimentação).
Dependencias Eferentes (quem consome dados desta tela)
Nenhuma outra tela mapeada le as tabelas PROCESSOREFSPED ou ITEMPROCESSOREFSPED. O consumo ocorre fora do ERP desktop — os dados alimentam a geracao dos registros 1010/1020 do SPED Contribuicoes (módulo fiscal/SPED), que atualmente nao aparece no mapeamento de telas.