Histórico
O MDF-e é uma parte do projeto NF-e, cuja especificação técnica é controlada pela SEFAZ RS (vide https://mdfe-portal.sefaz.rs.gov.br/). MDF-e deverá ser emitido por empresas prestadoras de serviço de transporte para prestações com mais de um conhecimento de transporte ou pelas demais empresas nas operações, cujo transporte seja realizado em veículos próprios, arrendados, ou mediante contratação de transportador autônomo de cargas, com mais de uma nota fiscal.
A finalidade do MDF-e é agilizar o registro em lote de documentos fiscais em trânsito e identificar a unidade de carga utilizada e demais características do transporte.
Não é um documento novo, mas sim a escrituração digital do Manifesto de Carga, um documento opcional utilizado por empresas transportadoras de cargas onde são relacionados todos os conhecimentos de transporte que deveriam ser emitidos em uma operação de transporte de carga fracionada, ou seja, onde em um mesmo caminhão há mercadorias para diversos destinatários. Havendo a utilização do Manifesto de Carga, não há necessidade de emitir um conhecimento de transporte para cada destinatário, sendo emitido apenas um, acompanhado do manifesto de carga em cada operação. Sua existência se deu pelo Ajuste Sinief nº 15/89, que acrescentou o inciso XVIII no art. 1º do Ajuste Sinief 06/89, criando o modelo 25 dos documentos fiscais utilizados pelos contribuintes do ICMS. Também pode ser utilizado por empresas que possuem frota própria e fazem entregas de cargas a vários clientes. Agora o modelo do MDF-e será 58.
Modo de funcionamento do MDF-e
Empresas envolvidas: Empresa transportadora ou distribuidora de combustíveis
Situação: Emissão de CT-e's de carga fracionada (vários destinatários para o mesmo caminhão) ou emissão de NF-e's dos diversos clientes para o mesmo caminhão
Fluxo Normal:
- Emissão dos CT-e's ou NF-e's
- Inclusão de um MDF-e vinculando os Conhecimentos ou as Notas Fiscais
- Envio da solicitação de Recibo para SEFAZ com dados do MDF-e e os conhecimentos/notas vinculados
- Recebimento do Número de Recibo da SEFAZ
- Envio da solicitação de Protocolo para SEFAZ com o número de recibo recebido
- Recebimento do protocolo da SEFAZ
- Emissão do DAMDFE (Documento Auxiliar de MDF-e, similar ao DANFE ou DACTE)
- Saída do Caminhão para entrega
- Conclusão da entrega
- Envio do Encerramento para SEFAZ indicando Chave de Acesso e Protocolo do MDF-e e UF/Município de Descarregamento
- Caminhão fica liberado para fazer outra entrega
Explicações Adicionais:
- Contingência própria: A empresa emite o DAMDFE contendo no local do Protocolo de Autorização de Uso um texto padrão sobre a emissão em contingência. A empresa tem até 24 horas para enviar para SEFAZ esse MDF-e. Na chave de acesso do MDF-e consta a forma de emissão: Normal ou Contingência.
- Contingência SEFAZ: Não previsto. Os ambientes previstos são Homologação e Produção. No caso de problemas com o ambiente de Produção a empresa deve seguir a regra para Contingência Própria.
- XML exclusivo por NF-e: Num primeiro momento só deve ser enviado para solicitação de recibo um único MDF-e
- Cancelamento: O cancelamento de um MDF-e é feito pelo Registro de Eventos, somente quando ele foi autorizado
- Inutilização: Não há nenhum webservice previsto para inutilização. Sendo assim, MDF-e's não autorizados devem ser cancelados no sistema sem nenhuma comunicação à SEFAZ
- Distribuição: Não há nenhuma especificação da necessidade de distribuição do XML do MDF-e para outras entidades.
- Carta de Correção: Não há nenhuma especificação a respeito
MDF-e no Sispetro
Para adequar o Sispetro para o MDF-e considerando as características citadas acima teremos as alterações/implementações a seguir.
Tabela de UF's
Na aba Detalhes criar uma sub-aba "Endereços URL p/ MDF-e" com os seguintes campos para Produção e Homologação:
- Recepção
- Retorno
- Evento
- Consulta MDF-e
- Status
Apesar das URL's do MDF-e serem centralizadas na SEFAZ de RS disponibilizaremos as URL's na tabela de UF's como é feito com NF-e e CT-e, assim, no caso de alguma UF depois desmembrar e resolver liberar suas URL's o processo já está pronto no Sispetro.
Perfil de Sistema
Ter uma aba MDF-e com os seguintes campos (por empresa):
- Habilita MDF-e: Checkbox que indica se a empresa está habilitada a emitir MDF-e
- Ambiente: Homologação ou Produção
- Off-line (Contingência)?: Checkbox que indica se a empresa está trabalhando off-line, o que significará Contingência para MDF-e
- Valida Schema?: Checkbox que indica se deve ser validado o schema do XML nos processos de MDF-e
- Caminho do arquivo de layout do DAMDFE: Onde o usuário poderá indicar o caminho e editar o layout indicado
- Modelo: Sugerido o valor 58, mas que pode ser alterado pelo usuário para indicar qual o modelo a ser sugerido na tela de MDF-e
- Série: Onde o usuário poderá indicar uma série do Tipo Emissão Própria para ser sugerida na tela de MDF-e. a ser responsável pela numeração sequencial do MDF-e.
- Informações Adicionais: Texto que será sugerido na tela de MDF-e (para uso do Fisco)
- Informações Complementares: Texto que será sugerido na tela de MDF-e (de interesse do Contribuinte)
- Prazo para cancelamento de MDF-e (horas): Onde poderá ser especificado o número de horas a partir da data/hora de autorização que o MDF-e pode ser cancelado. Quando não autorizado será considerada a data/hora de emissão.
Criar grupos para organizar melhor os perfis citados acima
Perfil de Usuário
- Pode incluir/processar MDF-e
- Pode imprimir MDF-e
- Direciona impressão MDF-e
- Pode cancelar MDF-e
Natureza de Operação
Na aba Por Filial/Dados Gerais, adicionar um campo "Permite MDF-e", em checkbox, padrão desmarcado, próximo aos campos "Habilita NF-eletronica" e "Envia Manifestação Destinatário"
Sugeriremos esse campo marcado para todas as Naturezas de Emissão própria, cuja empresa seja de SP.
Inclusão de Nota Fiscal
Ao concluir o salvamento de uma Nota Fiscal deve ser verificado o perfil da Natureza "Permite MDF-e" para então salvar na NF um campo "Permite MDF-e".
Isso facilitará a pesquisa de que notas fiscais devem exigir NF-e na tela de MDF-e's pendentes.
- Sispetro Normal e Remoto
- Independente da origem da NF: Venda, Outras Saídas, via Importação de NF ou Remessa/Retorno Armazenagem
- Apresentar esse novo campo na aba principal da Manutenção de NF's
Inclusão de Conhecimento
Ao concluir o salvamento de um Conhecimento de Frete deve ser verificado o perfil da Natureza "Permite MDF-e" para então salvar na NF que representa o Conhecimento um campo "Permite MDF-e".
Isso facilitará a pesquisa de que notas fiscais devem exigir NF-e na tela de MDF-e's pendentes.
- Sispetro Normal e Remoto
- Apresentar esse novo campo na aba principal da Manutenção de NF's
Marcaremos automaticamente, com a atualização da versão, os Conhecimentos e NF-s:
- Empresa de SP
- Data de Emissão maior ou igual a 03/02/2014
- Cuja Natureza de Operação seja de Emissão própria
Manutenção de Notas Fiscais
Ter na aba principal as informações:
- Se a NF é passível de MDF-e
- O ID do MDF-e quando vinculado
- Se a NF foi marcada para desconsiderar e data/hora e usuário que desconsiderou
Ter na aba Transportes uma aba MDF-e com os dados principais do MDF-e que foi vinculado à Nota
Cancelamento de Nota Fiscal ou Conhecimento
Verificar, junto com a análise de cancelamento que é feita atualmente, se a Nota Fiscal ou Conhecimento foi vinculada(o) a um MDF-e não cancelado. Impedir o cancelamento nesses casos.
MDF-e
- Tela de Manutenção de MDF-e
- É a tela que centralizará todas as operações relacionadas a MDF-e. Será acionada pelo menu Faturamento caso a empresa esteja com o perfil "Habilita MDF-e" marcado. Apresentará na parte superior da tela o ambiente configurado para a empresa e como está o perfil Off-line.
- Detalhamento dos Botões:
- Inclui: Veja tópico Inclusão de MDF-e. Só disponível caso perfil de usuário "Pode incluir MDF-e" esteja marcado.
- Cancela: Aciona o cancelamento do MDF-e. Veja tópico Cancelamento MDF-e
- Imprime: Imprime o DAMDFE do MDF-e posicionado no grid. Apresentando na mensagem de questionamento se o MDF-e está autorizado ou não. Só permitido para usuário cujo perfil "Imprime MDF-e" esteja marcado. Só permitirá a indicação da impressora caso o perfil de usuário "Direciona Impressão" esteja marcado.
- Visualiza Impressão: Permite a visualização do DAMDFE do MDF-e posicionado no grid. Segue as mesmas regras do botão Imprime, quanto ao perfil de usuário e mensagem se o MDF-e está autorizado ou não.
- Sincroniza: Permite a consulta na SEFAZ desse MDF-e, através da Chave de Acesso. Salva na aba Processamento SEFAZ o resultado da Consulta. Só disponível caso perfil de usuário "Pode incluir/processar MDF-e" esteja marcado.
- Pendentes: Aciona tela para enviar MDF-e's pendentes de processamento na SEFAZ, entre eles os MDF-e's que precisam de Encerramento. Veja tópico MDF-e's pendentes. Só disponível caso perfil de usuário "Pode incluir/processar MDF-e" esteja marcado.
- Consulta Status: Aciona a consulta do Status do Serviço no ambiente que a empresa esteja configurada, desde que não esteja Off-line.
- Atualiza: Atualiza os dados da tela conforme os filtros de período e status indicados
- Detalhamento das Abas:
- MDF-e's: Exibe os MDF-e's da empresa conectada conforme filtro de período e status indicado na tela
- Documentos Vinculados: Exibe os dados principais (data, número, valor, entidade, chave de acesso) dos CT-e's/NF-e's vinculados ao MDF-e posicionado na aba principal
- Percurso: Exibe as cidades de percurso desse MDF-e.
- Processamento SEFAZ: Exibe todas as comunicações com a SEFAZ para esse MDF-e (similar à aba NF-eletronica da Manutenção de NF's)
- Detalhamento dos Botões:
- Tela de Inclusão de MDF-e
- Só será acionada por usuário cujo perfil "Pode incluir/processar MDF-e" esteja marcado
- Na primeira tela apresentada (veja figura acima),na parte superior da tela o usuário informará os dados para localização de NF's ou Conhecimentos
- Haverá uma opção em tela para indicar se serão escolhidas NF-e's ou CT-e's. Essa opção será sugerida como CT-e's se a empresa for Transportadora e como NF-e's se a empresa NÃO for Transportadoras.
- O grupo CT-e's só será habilitado caso seja escolhida a opção CT-e's. O Sispetro localizará Conhecimentos conforme o Tipo de Carga informado, tendo as seguintes opções:
- Somente Fracionada (padrão)
- Somente Lotação
- Todos
- O grupo NF-e's só será habilitado caso a opção seja NF-e's. Ele será útil para identificar NF-s cujo Motorista esteja alocado também para outras NF's. Isso significará uma carga compartilhada que exige MDF-e. A sugestão padrão seria >= 1. ou seja, independente de fazer parte de uma Carga Compartilhada ou Exclusiva a NF seria apresentada (claro que respeitando os demais filtros).
- O período sugerido será de 7 dias anteriores da data atual
- Não faria sentido ter Notas com Depósito, Transportadora/Motorista e Frotas diferentes para um mesmo MDF-e, porém o usuário pode não saber para qual depósito, motorista ou frota ele irá fazer o MDF-e, por isso esses filtros não serão obrigatórios, afinal essa tela será útil para identificar todas as NF's/Conhecimentos passíveis de MDF-e que ainda não tem MDF.
- Ao clicar no botão Atualiza, além dos filtros da tela serão consideradas as Notas que:
- São da empresa conectada
- Passíveis de MDF-e (conforme perfil da Natureza salvo na NF/Conhecimento)
- Não têm MDF-e vinculado
- Não foram marcadas para Desconsiderar MDF-e
- Quando eletrônicas, que estejam autorizadas
- Não estão canceladas
- O botão Desconsidera para MDF-e marcar as NF's selecionadas para não serem mais apresentadas nesta tela, independente de não terem MDF-e. Isso será útil para as NF's de Carga Exclusiva, cuja Natureza indica que é passível de MDF-e, mas devido a carga ser exclusiva não deveria ter MDF-e.
Salva na Nota Fiscal/Conhecimento que a NF está desconsiderada, data/hora da operação e usuário que desconsiderou.
Por enquanto só será possível desconsiderar. Caso o usuário se engane e seja preciso considerar essa NF novamente deverá ser feito um script via Suporte. Colocar isso no help.
- Ao clicar no botão OK, apresenta a nova tela para inclusão/confirmação dos dados para MDF-e, antes porém validará se as NF-s selecionadas podem estar juntas num mesmo MDF-e:
- Mesmo depósito
- Mesmo motorista
- Mesma transportadora
- Mesmos frotas (frota, carreta e treminhão)
- Essa tela de Inclusão MDF-e já virá preenchida e dependendo da situação o usuário só precisará clicar no OK para processar o MDF-e.
- O campo série será sugerido do perfil da empresa. O usuário poderá trocar por outra série que seja do tipo Emissão Própria. Através da série será sugerido o Número do MDF.
- O modelo será sugerido do perfil da empresa e não poderá ser alterado.
- A Data/Hora de Emissão será sugerida conforme a data/hora atual e pode ser alterada pelo usuário.
- Os campos Frota, Carreta, Treminhão, Motorista e Transportadora serão sugeridos conforme as NF's selecionadas na tela anterior, não podendo ser alterados. No caso da Cidade Carregamento é a mesma regra, porém obtida do Cadastro do Depósito da NF.
- Os campos de Informações Adicionais e Informações Complementares serão do tipo Memo passível de alteração do usuário. Essas informações serão sugeridas do perfil da empresa.
- O campo Peso Total será sugerido com a soma dos Pesos das NF-s selecionadas (quando NF-e's) ou com 0 (zero) (quando CT-e's), podendo ser alterado pelo usuário.
- O campo Valor Total da Carga será sugerido com a soma dos Valores Totais das NF's selecionadas (quando NF-e's) ou com a soma dos Valores Toais nas NF's que acobertam o Conhecimento (quando CT-e's), podendo ser alterado pleo usuário.
- O grid de NF's selecionadas será preenchido com as NF's selecionadas na tela anterior.
- A cidade Final do MDF-e (de Descarregamento) será obtida da última NF apresentada no grid (que não permitirá ordenação de colunas pelo usuário). Assim, a ordem das NF's deve representar o percurso da viagem e o usuário deve utilizar as setas laterais para ajustar essa ordem caso não venha correta
- Caso tenha a necessidade de retirar uma NF do processo o usuário deve cancelar os dados dessa tela, o que retorna para tela anterior e desmarcar a NF a ser retirada.
- Ao dar OK teremos o seguinte processo:
- Salvamento dos dados principais do MDF-e
- Deve ser verificada a simultaneidade com outro usuário de forma a ajustar o Número do MDF (similar ao que fazemos na NF e no Conhecimento) caso já tenha sido utilizado o número sugerido na tela por outro usuário
- Deve ajustar na série informada o próximo número
- Salvamento das NF's vinculadas
- Além de salvar na tabela correspondente, deve salvar na NF o Sequencial do MDF. Para isso deve também ter controle de simultaneidade, de forma que uma NF não seja incluída em dois MDF's não cancelados ao mesmo tempo
- Salvamento do percurso
- A cada NF selecionada também será adicionada a cidade de Entrega na aba Percurso. Lembrando que não serão adicionadas cidades repetidas, nem a cidade que for igual à cidade do Carregamento do MDF-e
- Todos esses pontos acima farão parte de uma única transação no banco de dados. Ou seja, qualquer problema em qualquer dos pontos deve abortar a transação toda. Dando tudo certo continua os próximos passos.
- Verificação do perfil Off-line da empresa, que caso esteja desmarcadado força o envio do processamento de Recibo para SEFAZ (nos mesmos moldes da NF ou Conhecimento)
- Caso OK no Recibo, enviar processamento de Protocolo para SEFAZ.
- Independente do processo da SEFAZ ter sido enviado ou ter retornado com sucesso, questionar se quer imprimir DAMDFE (se perfil usuário "Pode imprimir MDF-e" estiver marcado), apresentando na mensagem se o MDF-e está autorizado ou não, sugerindo a impressora padrão e deixando alterar a impressora se perfil usuário "Direciona impressão MDF-e" estiver marcado. No caso de ser impresso o DAMDFE de um MDF-e não autorizado, no campo de Protocolo de Uso deve sair a mensagem sobre Contingência, conforme previsto no manual, página 101.
- Salvamento dos dados principais do MDF-e
- Essa tela de Inclusão MDF-e já virá preenchida e dependendo da situação o usuário só precisará clicar no OK para processar o MDF-e.
- Tela de MDF-e's Pendentes
- Essa tela será similar à tela de NF-e pendentes
- As opções de tipo de Pendência devem ser:
- Recibo: Quando o MDF-e foi incluído, mas seja pela empresa estar off-line ou por erro no processamento da SEFAZ, esse MDF-e não foi processado.
- Protocolo: Quando o MDF-e tem recibo, mas por algum erro (SEFAZ ou empresa) não conseguiu obter o protocolo
- Encerramento: Quando o MDF-e está autorizado (tem protocolo), não está cancelado e ainda não está encerrado. Útil para o usuário não esquecer que precisa encerrar o MDF-e.
- O grid deve apresentar os dados principais dos MDF-e's permitindo marcar cada um deles.
- Terá os botões:
- Processa:
- Caso a pendência seja de Recibo ou Protocolo será similar à NF-e, fazendo o envio do processamento para SEFAZ. No caso de Recibo, após processado o MDF-e retorna à tela como Pendente Protocolo, no caso de Protocolo o retorno será como Pendente Encerramento.
- Caso a pendência seja de Encerramento
- O usuário deverá indicar a Data/Hora de Encerramento (sendo sugerida a Data/Hora atual) e confirmar a Cidade de Descarregamento, que será sugerida conforme a última NF do percurso. Assim, caso seja necessário trocar uma dessas informações o usuário clica no botão Dados Encerramento e as ajusta. Nesta tela de Encerramento:
- A cidade a ser informada deve utilizar o cadastro de Cidades do Sispetro.
- Deve ser validado se a Data do Encerramento informada é maior que a Data de Autorização
- O usuário deverá indicar a Data/Hora de Encerramento (sendo sugerida a Data/Hora atual) e confirmar a Cidade de Descarregamento, que será sugerida conforme a última NF do percurso. Assim, caso seja necessário trocar uma dessas informações o usuário clica no botão Dados Encerramento e as ajusta. Nesta tela de Encerramento:
- Sincroniza: Fará a consulta da chave de acesso do MDF-e posicionado para identificar sua situação na SEFAZ.
- Processa:
- As opções de tipo de Pendência devem ser:
- Essa tela será similar à tela de NF-e pendentes
- Cancelamento de MDF-e
- O botão de Cancelamento só estará habilitado se o usuário tiver permissão para cancelamento e o MDF-e estiver com status Ativo
- Ao solicitar o cancelamento pela tela de Manutenção de MDF-e's o processo será similar ao que é feito na tela de Manutenção de NF's:
- Questionar o usuário se deseja realmente cancelar
- Fazer as validações para permitir o cancelamento via Servidor Sispetro, retornando uma lista de possíveis problemas:
- O MDF-e não pode estar cancelado
- O MDF-e não pode estar encerrado
- O MDF-e não pode estar com protocolo pendente (só com recibo pendente)
- O prazo de cancelamento deve estar de acordo com o configurado no perfil de sistema
- MDF-e autorizado: Intervalo entre Data/Hora de Autorização e a Data/Hora atual do servidor
- MDF-e NÃO autorizado: Intervalo entre Data/Hora de Inclusão e a Data/Hora atual do servidor
- Para MDF-e autorizado enviar o cancelamento para SEFAZ com os seguintes passos:
- Inclui dados na tabela de Processamento caso não tenha um Comando de Cancelamento como Não Solicitado. Caso tenha o Comando de Cancelamento como Não Solicitado utiliza o mesmo registro
- Envia o cancelamento para SEFAZ
- Salva os dados de retorno da SEFAZ (xml, resposta, data de processamento)
- Se rejeitado pela SEFAZ ou sem comunicação (status não solicitado) aborta todo o processo. Se autorizado continua o processo.
- Fazer o cancelamento efetivo no Sispetro, salvando Usuário e Data/Hora de Cancelamento
Estrutura de Dados
Tabela MDFe
Campo | Tipo |
---|---|
MDFeID | Integer Default AutoIncrement Primary Key |
CodEmpresa | Integer not null |
ChaveAcesso | char(44) not null |
Modelo | Integer not null |
Serie | char(10) |
NumeroMDF | Integer not null |
DataMDF | date not null |
HoraMDF | time not null |
SituacaoMDF | smallint not null |
CodigoDNCCarrega | char(09) not null |
CodigoDNCDescarrega | char(09) not null |
SeqFrota | Integer not null |
SeqFrotaCarreta | Integer |
SeqFrotaTrem | Integer |
CodTranspMotorista | char(05) not null |
CodTransp | char(05) not null |
Status | smallint Default 0 |
StatusSefaz | smallint |
DataInclusao | datetime Default Current |
UsuarioInclusao | char(10) |
DataAutorizacao | date |
DataEncerramento | date |
DataIncEncerramento | datetime Default Current |
UsuarioEncerramento | char(10) |
SeqMotivoCancto | Integer |
DataCancelamento | datetime Default Current |
UsuarioCancelamento | char(10) |
NumeroRecibo | char(15) |
DataProcessamentoRecibo | datetime |
NumeroProtocolo | char(15) |
XMLProtocolo | Long varchar |
DataProcessamentoProtocolo | datetime |
CodMsgSefaz | Integer |
MsgSefaz | char(200) |
NumeroProtocoloCancelamento | char(15) |
XMLAutorizacaoCancelamento | Long varchar |
DataProcessamentoCancelamento | datetime |
SeqEventoCancelamento | Integer |
Ambiente | smallint Default 0 |
XMLSolicitacaoCancelamento | Long varchar |
Tabela MDFeDoctoVinculado
Campo | Tipo |
---|---|
SeqMDFeDoctoVinculado | integer |
MDFeID | integer |
CodEmpresaNF | integer |
SequencialNF | integer |
Tabela MDFePercurso
Campo | Tipo |
---|---|
SeqMDFePercurso | integer |
MDFeID | integer |
UF | char(2) |
Ordem | smallint |
* Ter índice único para SequencialMDFe e CodigoDNC, ou seja, uma Cidade de percurso não pode estar repetida para o mesmo MDF-e
* Ter índice único para SequencialMDFe e Ordem, ou seja, não pode ter ordem repetida para o mesmo MDF-e
Tabela MDFeProcessamento
Campo | Tipo |
---|---|
SeqMDFeProcessamento | integer Default AutoIncrement Primary Key |
MDFeID | integer not null |
TipoComando | smallint not null |
Status | smallint Default 0 |
XMLEnviado | long Varchar |
XMLRecebido | long Varchar |
XMLProtocolo | long Varchar |
XML | long Varchar |
NumeroRecibo | char (15) |
NumeroProtocolo | char (15) |
StatusResposta | integer |
MotivoResposta | integer |
DataInclusao | datetime |
DataProcessamento | datetime |
Dicas para Homologação
- A
Controle de tempo dos Trabalhos
Tarefa | Especificação | Codificação | Total Desenv | Data Prev. Liberação |
---|---|---|---|---|
Alterações Servidor SisPetro | 16h - Ueliton | 40h - Ueliton | 56h | 21/01/2013 |
MDF-e - Perfis e Afins | 4h - Giovana | 6h - Paulo | 6h | 14/01/2013 |
Impressão de DAMDFe | 4h - Giovana | 8h - Paulo | 8h | 15/01/2013 |
Inclusão MDF-e e Manutenção Básica | 16h - Paulo | 32h - Paulo | 48h | 23/01/2013 |
MDF-e Pendente | 8h - Giovana | 24h | 32h | 27/01/2013 |
Manutenção MDF | 8h - Ueliton | 24h | 32h | 29/01/2013 |
Solução Detalhada
Inclusão de MDF-e
A tela de Inclusão será utilizada só no Normal. Porém trabalharemos com memDataSet para facilitar, caso no futuro, seja mudada para utilizar também no Remoto.
Ter uma tabela global temporary MDFeNFPendente com a estrutura dos campos necessários para apresentação na tela, inclusive NumNotasMotorista (para indicar o número de Notas por Motorista para o filtro da tela)
Ter uma procedure do banco MDFeIncluiNFPendente que receba como parametro as opções da tela de Inclusão do MDFe. Parametros:
Nome | Tipo | In/Out | Observacoes |
---|---|---|---|
xCodEmpresa | integer | in | |
xDataIni | date | in | |
xDataFin | date | in | |
xTipoCarga | smallint | in default -1 | 1 Lotação e 0 Fracionada |
xOperador | smallint | in default -1 | 0 : '=',1 : '<>', 2 : '>', 3 : '>=', 4 : '<',5 : '<=' |
xNumNotasMotorista | smallint | in default 0 | |
xCodDep | char(2) | in default '' | |
xSeqFrota | integer | in default 0 | |
xCodTranspMotorista | char(5) | in default '' |
Essa procedure terá o seguinte comportamento:
- Pelo código da empresa recebido deve identificar se a empresa é transportadora ou não
- Se a empresa for transportadora
Inserir dados na tabela MDFeNFPendente com o resultado de um select nas tabelas NotaFiscal e Conhecimento, considerando os parâmetros recebidos pela procedure (além dos filtros fixos citados na solução)
- Usar o recurso de execute immediate para montar o SQL conforme os parametros (ou seja, só terá na clausula where os filtros que tenham parametros informados)
- Se a empresa for Não transportadora
- Inserir dados na tabela MDFeNFPendente com o resultado de um select na tabela NotaFiscal considerando os parâmetros recebidos pela procedure, exceto Número de Notas por Motorista (além dos filtros fixos citados na solução)
- Usar o recurso de execute immediate para montar o SQL conforme os parametros (ou seja, só terá na clausula where os filtros que tenham parametros informados)
- Caso a opção de filtro de Número de Notas por Motorista seja diferente de >= 1
Preencher o campo NumNotasMotorista da tabela MDFeNFPendente com um update similar a:
update MDFeNFPendente n set NumNotasMotorista = (select count(*) from MDFeNFPendente where CodTranspMotorista = n.CodTranspMotorista)
Deletar os registros cujo NumNotasMotorista não atenda o filtro passado (usar também execute immediate
Esta procedure será utilizada pelo botão Atualiza da primeira tela para trazer as NF's pendentes de MDF-e
Especificação
Seguir a ordem de especificação abaixo
Atenção para não criar os mesmos campos nas especificações acima. A maioria dos campos necessários para o Servidor SisPetro e Client's serão criados na especificação do Servidor.