Histórico da Página
Este documento é material de especificação dos requisitos de inovação, trata-se de conteúdo extremamente técnico. |
---|
Informações Gerais
Especificação | |||
Produto | Datasul | Módulo Gestão de Planos de Saúde |
|
Segmento Executor | Saúde | ||
Projeto | DS_SUS2014 |
|
|
Chamado | TSD215 | ||
Release de Entrega Planejada | 12.1.7 | Réplica Não se Aplica |
|
País | (X) Brasil ( ) Argentina ( ) Mexico ( ) Chile ( ) Paraguai ( ) Equador ( ) USA ( ) Colombia ( ) Outro _____________. |
Objetivo
Alterar o processo de Geração das Notas Fiscais (fp0510m) para possibilitar a geração de notas para contratantes físicos e enviar para o EMS o valor líquido, valor bruto, valor incondicionado e valor dos impostos da fatura, para que estes sejam impressos na nota.
Definição da Regra de Negócio
Requisito 1: Incluir um novo campo no cadastro Manutenção Parametros Nota Fiscal que será relacionado ao tipo de pessoa.
Alterar o cadastro Manutenção Parametros Nota Fiscal (fp0310l.p) para conter um novo campo chamado “Tipo de Pessoa” que ficará abaixo do campo Unidade, conforme pode ser visto na imagem abaixo:.
Esse campo deve ser uma combo-box e deve ter as opções “Juridica / Fisica”. Sendo que por default deve estar preenchido como Juridica. Esse campo será obrigatório. Incluir esse campo nas funções: Inclusão, Alteração, Exclusão e Consulta.
Tabela paramnf | |||||||
Campo | Tipo | Formato | Obrigatório | Editável | Chave | Valor Default | Valores |
in-tipo-pessoa | Char | x(1) | Sim | Sim | Sim | J | J (Juridica) F (Fisica) |
Com essa alteração sempre será informado a Unidade e Tipo de pessoa, sendo que os campos modalidade e contratante podem ser genéricos (TODOS). Com esse novo campo devemos realizar algumas validação nesse cadastro.
1. Caso o cliente selecione Pessoa Jurídica e informe uma Modalidade Física deve lançar uma mensagem de erro. Para isso verificar se paramnf.in-tipo-pessoa = F, buscar na tabela modalid pelo código da modalidade e campo modalid.in-tipo-pessoa = J ou modalid.in-tipo-pessoa = “”, então: “É necessário informar uma modalidade jurídica“Modalidade nao cadastrada com tipo de pessoa selecionado.”
2. Caso o cliente selecione Pessoa Jurídica e informe um Contratante Físico deve lançar uma mensagem de erro. Para isso verificar se paramnf.in-tipo-pessoa = F, buscar na tabela contrat pelo código do contratante e campo contrat.in-tipo-pessoa = J ou contrat.in-tipo-pessoa = “”, então: “É necessário informar um contratante jurídico“Contratante nao cadastrado com tipo de pessoa selecionado.”
3. Caso o cliente selecione Pessoa Física e informe uma Modalidade Jurídica deve lançar uma mensagem de erro. Para isso verificar se paramnf.in-tipo-pessoa = J, buscar na tabela modalid pelo código da modalidade e campo modalid.in-tipo-pessoa = F ou modalid.in-tipo-pessoa = “”, então: “É necessário informar uma modalidade física“Modalidade nao cadastrada com tipo de pessoa selecionado.”
4. Caso o cliente selecione Pessoa Física e informe um Contratante Jurídico deve lançar a seguinte mensagem de erro. Para isso verificar se paramnf.in-tipo-pessoa = J, buscar na tabela contrat pelo código do contratante e campo contrat.in-tipo-pessoa = F ou contrat.in-tipo-pessoa = “”, então: “É necessário informar um contratante físico“Contratante nao cadastrado com tipo de pessoa selecionado.”
Alterar a função Lista:
1. Ao clicar em lista deve possibilitar na busca pesquisar pelo tipo de pessoa (Nenhuma (considera os dois tipos), Juridica ou Física):
2. Na visualização da listagem inserir o tipo de pessoa do lado do campo nome, como pode ser visto abaixo:.
Alterar a função do relatório:
1. Na aba de seleção colocar a busca também pelo tipo de pessoa (Nenhuma (considera os dois tipos), Juridica ou Física):
2. Alterar o mapa de seleção para conter o campo Tipo de Pessoa:
3. Inserir no relatório o tipo de pessoa:
Como foi alterado a chave primária dessa tabela é necessário recompilar todos os programas que utilizam essa tabela:
api-fp0006.i
fp0310l.f
fp0310l.p
fp0311l.p
fp0312l.p
fp0313l.p
fp0314l.p
fp0315l.p
fp0510m.p
fp0711s.p
fp0711s2.i
deparamnf.p
wrparamnf.p
Requisito 2: Criar um sp para preencher o campo Tipo de Pessoa no cadastro Manutenção Parametros Nota Fiscal.
Criar um novo sp para carregar essa informação na Manutenção de Parametros da Nota Fiscal, pois ele é um campo obrigatório e faz parte da chave primária da tabela.
Deve ser criado o programa sp-carrega-pessoa-paramnf que irá percorrer todos os registros da tabela paramnf e preencher o campo tipo de pessoa conforme segue abaixo:
Percorrer todos os registros da tabela paramnf.
Se paramnf.in-tipo-pessoa = “” é porque não existe o tipo de pessoa e deve preencher esse campo conforme segue:
- Se o contratante existe, então tipo de pessoa deve ser igual ao contratante. Para isso verficar se paramnf.cd-contratante <> “”, então buscar na tabela contrat pelo código do contratante. Se contrat.in-tipo-pessoa <> “” então paramnf.in-tipo-pessoa = contrat.in-tipo-pessoa, senão paramnf.in-tipo-pessoa = J.
- Se o contratante não foi informado, então verificar se modalidade for diferente de zero então tipo de pessoa deve ser igual ao da modalidade para isso verficar se paramnf.cd-modalidade <> “” então buscar na tabela modalid pelo código da modalidade. Se modalid.in-tipo-pessoa <> “” então paramnf.in-tipo-pessoa = modalid.in-tipo-pessoa, senão paramnf.in-tipo-pessoa = J.
- Caso nem o contratante nem modalidade estejam informados, paramnf.in-tipo-pessoa = J.
Ao final do processo deve ser gerado um relatório com os registros da parâmetro da nota fiscal e o tipo de pessoa preenchido.
Requisito 3: Incluir um novo campo no cadastro Manutenção de Impostos que informará o tipo de imposto.
Alterar o cadastro Manutenção de Impostos (fp0110h.p) para conter um novo campo chamado “Tipo de Imposto” que ficará abaixo do campo Descrição.
Esse campo deve ser uma combo-box deve ter as opções “PIS, COFINS, INSS,IR,CSLL,ISS, Outras Retenções”. Incluir esse campo nas funções: Inclusão, Consulta, Exclusão, Lista e Relatório.
Ao alterar um registro que já existe na base esse campo virá em branco, porém o usuário deverá informar um valor para salvar o mesmo.
Tabela dzimposto | |||||||
Campo | Tipo | Formato | Obrigatório | Editável | Chave | Valor Default | Valores |
ind-tip-impto | Char | x(8) | Sim | Sim | Não |
| (P) PIS (C) COFINS (I) INSS (R) IR (L) CSLL (S) ISS (O) Outras Retenções |
Requisito 4: Alterar o processo de Geração da Nota Fiscal.
A Nota Fiscal de Serviços Eletrônica (NFS-e) é um documento de existência exclusivamente digital, gerado e armazenado eletronicamente pela prefeitura ou por outra entidade conveniada, para documentar as operações de prestação de serviços. Os contribuintes podem emitir, cancelar e consultar notas fiscais de forma automatizada.
A NFS-e contém campos que reproduzem as informações enviadas pelo contribuinte e outros que são de responsabilidade do Fisco. Uma vez gerada, a NFS-e não pode mais ser alterada, admitindo-se, unicamente por iniciativa do contribuinte, ser cancelada ou substituída, hipótese esta em que deverá ser mantido o vínculo entre a nota substituída e a nova.
Atualmente no sistema do Gestão de Planos o processo de geração da Nota Fiscal é realizado pelo programa Geração Notas Fiscais (fp0510m), que faz uma leitura das faturas da base que não tenham número da nota (numero-nf), que estejam em situação 20 e onde o tipo da nota for igual a 0 ou 3, para integrar com o sistema do EMS2. A api-fp0006.p é responsável por essa integração que criará as tabelas relacionados as notas e impostos e serão utilizadas futuramente na emissão da Nota de Serviço no EMS.
Conforme a nova lei é necessário alterar o sistema para que considere os contratantes físicos, pois atualmente as notas podem ser geradas somente para contratantes jurídicos. Além disso, é necessário enviar para o EMS o valor líquido, valor bruto, valor incondicionado(desconto) e valor dos impostos para a geração da nota, atualmente é enviado somente o valor líquido
Alteração 1: Alterar geração das notas para pessoa física e jurídica.
Alterar o programa fp0510m, inserir um novo campo na aba parâmetros desse relatório que será relacionado ao tipo de pessoa que o usuário deseja gerar a nota. Esse campo pode ter os seguintes valores: Ambas, Fisica ou Juridica.
No programa fp0510m na procedure processa-nf é buscado os parâmetros da nota fiscal na tabela paramnf. Alterar essa busca para considerar o tipo de pessoa que o usuário selecionou. Atualmente ele faz a busca primeiro por Uf, Modalidade e Contratante. Se não encontrar busca Uf e Modalidade. Caso não encontre busca somente por UF.
Se o usuário selecionou o parâmetro “Ambas” deve continuar fazendo exatamente como é hoje.
Caso o usuário selecione Juridica ou Fisica devem ser alteradas essas buscas para considerar o tipo de pessoa também, na mesma ordem de cima. Primeiro busca por UF, Tipo de Pessoa, Modalidade e Contratante. Caso não encontre busca por UF, Tipo de Pessoa e Modalidade. Caso não encontre busca por UF e Tipo de Pessoa.
Alteração 2: Alterar para emitir Nota Fiscal para Contratante Físico.
Alterar o programa fp0510m na procedure gera-nf onde ele verifica o tipo de pessoa pulando para o próximo registro.
Alteração 3: Enviar novos valores para o EMS2.
Incluir novos campos na tabela tmp-par-fp0006 da include api-fp0006.i conforme segue:
Campo | Tipo | ||
vl-bruto | Dec | ||
vl-incondicionado | Dec | ||
vl-pis | Dec | ||
vl-cofins | Dec | ||
vl-inss | Dec | ||
vl-ir | Dec | ||
vl-csll | Dec | vl-outras-retencoes | Dec |
Incluir um comentário ao lado do campo tt-item /* valor liquido*/.
Como foi alterado a include devemos verificar os programas que utilizam a mesma:
Programas relacionados a api-fp0006.p | |||
Programa | Função | Descrição | Requisito |
Fp0310x | PROCURA-NF | Atualiza Fatura caso nota cancelada | Não se aplica |
Fp0510m | PROCESSA-NF | Geração de Nota Fiscal | Requisito 4 |
Fp0711s | CONECTAR | Gerar Faturamento Guia de Antecipação | Requisito 5 |
Fp0711s2 | PROCESSA-NF | Gerar Faturamento Guia de Antecipação | Requisito 5 |
No programa fp0510m devemos alterar o ponto onde são calculados os valores enviados para a api-fp0006p.
O Valor Líquido da NFS-e é calculado pelo Valor Total de Serviços subtraindo-se: Valor do PIS, COFINS, INSS, IR, CSLL, Outras Retenções, ISS Retido, Desconto Incondicionado e Desconto Condicionado. Atualmente ele percorre as notas de serviço e acumula o valor total da nota que é referente ao valor líquido no campo tmp-par-fp0006.tt-item. Essa parte deve continuar exatamente como é hoje.
Devemos enviar também o valor bruto, o valor incondicionado e o valor dos impostos conforme segue:
Verificar onde percorre as notas de serviço (notaserv). Para cada nota percorrer os eventos da fatura (fatueven) através dos campos modalidade (notaserv.cd-modalidade), contratante (notaserv.cd-contratante), contratante origem (notaserv.cd-contratante-origem), termo de adesão (notaserv.nr-ter-adesao), ano de referencia (notaserv.aa-referencia), mês de referencia (notaserv.mm-referencia) e numero da sequencia (notaserv.nr-sequencia).
O Valor Bruto será o valor de todos os eventos de crédito da nota para isso verificar se o tipo de evento é credito através de do campo fatueven.lg-cred-deb = CRED, acumular em uma variável auxiliar o valor: vl-bruto-aux = vl-bruto-aux + fatueven.vl-evento.
O Valor Incondicionado será a soma de todos os descontos menos os impostos, para isso verificar se o tipo de evento é débito através de do campo fatueven.lg-cred-deb = DEB e se a classe do evento fatueven evenfatu.in-classe-evento <> F, acumular em uma variável auxiliar o valor: vl-incondicionado-aux = vl-incondicionado-aux + fatueven.vl-evento.
Os Valores dos Impostos serão calculados da seguinte forma: Para cada fatueven verificar se o tipo de evento é igual a imposto, ou seja, se fatueven evenfatu.in-classe-evento = F. Caso sim, devemos buscar o tipo do imposto Buscar na tabela evenimp de impostos (fp0110j) pelos campos in-entidade = ‘FT’, cd-evento = fatueven.cd-evento, e onde data inicial (dt-vigencia-ini) e data final (dt-vigencia-fim) estejam dentro da data de hoje, retornar o código do imposto (cd-imposto). Buscar na tabela de impostos (dzimposto) pelo código dzimposto.cd-imposto e retornar o tipo de imposto dzimposto.ind-dzimposto) pelo código dzimposto.cd-imposto e retornar o tipo de imposto dzimposto.ind-tip-impto. Se esse campo estiver em branco não deve emitir a nota e deve lançar uma mensagem de erro no relatório:
“É necessário cadastrar o tipo de imposto”.
Caso esse campo tenha valor, deve verificar a qual tipo de imposto se refere e acumular em uma das variáveis auxiliares, conforme exemplo abaixo:
Imposto | Cálculo |
(P) PIS | vl-pis-aux = vl-pis-aux + fatueven.vl-evento. |
(C) COFINS | vl-cofins-aux = vl-cofins-aux + fatueven.vl-evento. |
(I) INSS | vl-inss-aux = vl-inss-aux + fatueven.vl-evento. |
(R) IR | vl-ir-aux = vl-ir-aux + fatueven.vl-evento. |
(L) CSLL | vl-csll-aux = vl-csll-aux + fatueven.vl-evento. |
(O) Outras Retenções | vl-outras-ret-aux = vl-outras-ret-aux + fatueven.vl-evento. |
No programa fp0510m ao chamar a api-fp0006.p devemos passar o valor bruto e o valor dos impostos para a tabela temporária:
Campos enviados para api-fp0006 | |||||
Campo api-fp0006 | Campo fp0510m | Descrição | |||
tmp-par-fp0006.vl-bruto | vl-bruto-aux | Valor acumulado dos eventos de crédito | |||
tmp-par-fp0006.vl-incondicionado | vl-incondicionado-aux | Valor acumulado de todos os descontos menos os impostos. | |||
tmp-par-fp0006.vl-pis | vl-pis-aux | Valor acumulado de PIS das notas de serviço. | |||
tmp-par-fp0006.vl-cofins | vl-cofins-aux | Valor acumulado de COFINS das notas de serviço. | |||
tmp-par-fp0006.vl-inss | vl-inss-aux | Valor acumulado de INSS das notas de serviço. | |||
tmp-par-fp0006.vl-ir | vl-ir-aux | Valor acumulado de IR das notas de serviço. | |||
tmp-par-fp0006.vl-csll | vl-csll-aux | Valor acumulado de CSLL das notas de serviço. | tmp-par-fp0006.vl-outras-retencoes | vl-outras-ret-aux | Valor acumulado de Outras Retenções das notas de serviço. |
Alterar a api-fp0006.p responsável pela integração do EMS na procedure processa-nf. Essa procedure funciona da seguinte forma:
1. Buscar o próximo número de sequencia da nota.
2. Inicializa a integração através da bodi317in método inicializaBOS.
3. Cria o documento através da bodi317sd do método criaWtDocto enviando o estabelecimento, serie, numero da nota, contratante, tipo da nota, data de emissão, natureza de operação e sequencia.
4. Atualiza o documento criado através da bodi317sd do atualizaDadosGeraisNota enviando a condição de pagamento, tabela financeira, portador, modalidade, uf e nome abreviado.
5. Cria o item da nota através da bodi317sd do método criaWtItDocto enviando os campos natureza operação, sequencia e código do item.
6. Altera o item criado através da bodi317sd do método gravaInfGeraisWtItDocto enviando o valor do item (valor líquido).
7. Procura o imposto criado na tabela wt-it-imposto e atualiza com o valor do ISS.
8. Chama a função atualizaDadosItemNota e atualizaDadosImpostosEstoq da bodi317pr.
9. Confirma o cálculo através do método confirmaCalculo da bodi317pr.
10. Efetiva a nota através do método efetivaNota da bodi317ef.
11. Busca as notas geradas na bodi317ef e joga na tabela temporária tt-notas-geradas.
Devemos alterar essa procedure no ponto 7, além de calcular o ISS devemos atualizar os outros impostos também:
Identificação da Prestação de Serviços | |||||||
Campo | Descrição | EMS | GP | ||||
ValorServicos = Valor Bruto | Valor dos Serviços em R$Com EMS | wt-it-docto.vl-merc-ori | tmp-par-fp0006.vl-bruto | ||||
Valor PIS | Valor de retenção do PIS em R$. | wt-it-impostodocto.vlval-retenc-pis | tmp-par-fp0006.vl-pis | ||||
Valor COFINS | Valor de retenção do cofins em R$. | wt-it-impostodocto.vlval-retenc-cofins | tmp-par-fp0006.vl-cofins | ||||
Valos INSSCSLL | Valor de retenção do INSS CSLL em R$. | wt-it-impostodocto.vlval-inssretenc-rfcsll | tmp-par-fp0006.vl-insscsll | ||||
Valor IRValos INSS | Valor de retenção do IR INSS em R$. | wt-it-imposto.vl-irfinss-itrf | tmp-par-fp0006.vl-irinss | ||||
Valos CSLLValor IR | Valor de retenção do CSLL IR em R$. | Com EMS | tmp-par-fp0006wt-it-imposto.vl-csll | Outras Retenções | Outras retenções na fonte. | Com EMS-irf-it | tmp-par-fp0006. outrasvl-retencoesir |
Valor Desconto Incondicionado | Todos os descontos menos impostos.Com EMS | wt-it-docto.val-desconto-total | tmp-par-fp0006.vl-incondicionado |
Requisito 5: Alterar o processo de Geração de Guia de Antecipação.
O programa X realiza o processo do faturamento em batch. Através da guia de autoricação cria a fatura, notas de serviço, eventos da fatura, libera a fatura, gera nota fiscal e gera títulos.
Na api-fp0006.p verificar onde ele esta percorrendo a tabela nota-fiscal do EMS e guardando o numero da nota fiscal, para também guardar os valores Desconto, Bruto e impostos. Esses valores estarão na tabela it-nota-fiscal.
Valores do EMS | |
Coluna | Valor |
Desconto | it-nota-fisc.val-desconto-total |
Liquido | it-nota-fisc.vl-merc-liq |
Bruto | it-nota-fisc.vl-merc-ori |
ISS | it-nota-fisc.vl-biss-it |
INSS | it-nota-fisc.vl-ir-adic |
PIS | it-nota-fisc.val-retenc-pis |
COFINS | it-nota-fisc.val-retenc-cofins |
CSLL | it-nota-fisc.val-retenc-csll |
IR | it-nota-fisc.vl-irf-it |
Requisito 5: Alterar o processo de Geração de Guia de Antecipação.
O programa fp0711s2.i é chamado pelos seguintes programas: Autorização Guias pelo Auditor/Responsável (At0110j), Gera Título pela guia de antecipação (fp0510x) e pela Manutenção Autorização Guias (at0111c e at0117c).
No programa at0110c é necessário criar uma guia de orçamento que gere título. Nesse caso ele ira criar a guia e ao final irá verificar para gerar a nota fiscal através dos programas at0111c e at0117c.
Podemos ter a situação ainda de ter que liberar essa guia quando houver alguma glosa, nesse caso vamos acessar o cadastro at0110j e se for uma guia de orçamento ele vai verificar para gerar a nota fiscal.
E ainda podemos ter a situação e Gerar os títulos para guia de antecipação. Nesse caso vamos acessar o programa fp0510x e gerar o titulo, no caso de ser uma guia de orçamento e gera titulo ele vai tentar gerar a nota fiscal.
Devemos alterar o Como é gerado a nota fiscal devemos alterar para enviar o valor líquido, valor incondicionado, valor bruto e valores dos impostos como foi realizado no requisito 4.
A geração da nota fiscal é realizada no programa fp0711s2.i na procedure processa-nf.
, onde são enviados os valores para geração da nota fiscal. Ao percorrer as notas de serviço deve acumular o valor bruto, incondicionado e impostos conforme feito no requisito 4. E enviar esses valores para a api-fp0006.p para geração da nota fiscal.
Rotina | Tipo de Operação | Opção de Menu | Regras de Negócio |
FP0310L | Alteração | Manutenção Parâmetros da Nota Fiscal | - |
FP0110H | Alteração | Manutenção de Impostos | - |
FP0510M | Alteração | Geração das Notas Fiscais | - |
FP0711S | Alteração | Manutenção Autorização Guias | - |
SP-CARREGA-PESSOA-PARAMNF | Inclusão | Carrega Tipo Pessoa Parametros Nota Fiscal | - |
Protótipo de Tela
Protótipo 01
Dicionário de Dados
- Alteração da tabela paramnf:
Índice | Chave |
01 | paramnf1 |
Campo | IN-TIPO-PESSOA |
Tipo | CHAR |
Tamanho | x(8) |
Valor Inicial | J |
Mandatório | Sim ( X ) Não ( ) |
Descrição | Tipo de Pessoa |
Help de Campo | Tipo de pessoa F-Fisica J-Juridica |
- Alteração da tabela dzimposto:
Campo | IND-TIP-IMPTO |
Tipo | CHAR |
Tamanho | x(8) |
Mandatório | Sim ( X ) Não ( ) |
Descrição | Tipo de Imposto |
Help de Campo | Tipo de Imposto:(P)PIS- (C)COFINS- (I)INSS- (R)IR- (L)CSLL- (S)ISS- (O)Outras Retencoes |
Este documento é material de especificação dos requisitos de inovação, trata-se de conteúdo extremamente técnico. |
---|