Boa tarde,
iniciei os estudos para implementar a emissão do MDF-e, e uma das regras que mais me chamou atenção foi sobre as informações do percurso do manifesto, nas viagens intermunicipais.
Gostaria de compartilhar um pequeno projeto desenvolvido em Lazarus, (meu objetivo é montar um cadastro de percursos, a fim de evitar a rejeição de "Percurso inválido") considerando as seguintes validações verificadas na documentação do MDF-e:
Validações SEM percurso:
1) UF ini e UF fim são iguais
-> não deve selecionar nenhuma UF de percurso
2) UF ini e UF fim são diferentes e fazem divisa
-> não deve selecionar nenhuma UF de percurso
Validações COM percurso:
3) nem UF ini nem UF fim devem estar selecionadas no percurso.
4) a primeira UF da lista deve fazer divisa com a UF inicial (carregamento)
5) entre as UF selecionadas, cada UF deve fazer divisa
com a UF seguinte, na ordem de cima para baixo.
6) a ultima UF da lista deve fazer divisa com a UF final (descarregamento)
Basicamente, foi montada uma classe TUF (uufclass.pas), onde para cada objeto de UF criado, ele cria num vetor a lista das outras UF que fazem divisa com esta. Também tem um Form mostrando como o usuário informaria as UF inicial e final, assim como selecionar (TCheckListBox) as UFs do percurso. Também é possível ordenar as UFs (TListBox). Por último, foi feito uma "perfumaria", desenhando o percurso selecionado, no mapa do Brasil (TImage).
Espero que seja útil, qualquer sugestão é bem vinda.
Att
Ricardo
valida_percurso_lazarus.zip