nfephp-org / sped-common

Classes comuns usadas nas atividades e classes das API's de NFe, CTe e MDFe
Other
97 stars 122 forks source link

Sugestão: Melhorias de processos e execução de código #190

Closed lpj145 closed 5 years ago

lpj145 commented 6 years ago

Opa, beleza, galera, ao preparar uma api aqui pra mim, eu vie que existe algo que é muito trivial, fácil de fazer, e bom demais pra rodar em cima de documentos speds, que são as execuções de macros, assim eu poderia tirar mais responsabilidade nas montagem e separar regras de limpeza, condição, retornos, para exclusão dependendo que regras fossem passadas, adotei esse modelo aqui e ficou muito legal para construir o xml, inclusive pode se adotar um dicionário interno, onde a api irá obedece-lo de forma padrão na construção e quando alguém quiser implementar de sua maneira o poderá fazer, farei a postagem de algum código mais pra frente, mas fica muito bom.

lpj145 commented 6 years ago

Exemplo, ao preparar a montagem há algumas verificações e validações que são feitas no momento da construção, se pudêssemos, reaproveitaríamos muitas regras com macros, podendo perguntar o caso, se ele é necessário, se o padrão poderá ser ex: "SEM GTIN"

lpj145 commented 6 years ago

Assim deixaríamos a comunidade já saber que tipos de macros rodam em cima de cada nó, atributo, e caso eles quisessem poderíamos fazer uma append ou prepend para que aquele objeto fosse tratado mediante o laço da construção pai.

robmachado commented 6 years ago

Mostra um exemplo dessas macros para nós Masrcos !

lpj145 commented 6 years ago

Com certeza, essa contribuição eu darei pro projeto, só preciso deixa-la agnóstica, e também tem como passar os parâmetros desordenados, e não importa que ordem a função seja chamada, é pra funcionar do mesmo jeito.

lpj145 commented 6 years ago

Só pra demonstrar um pouco, eu criei um fila de atributos principais, lógicos que há mais, mas essa situação já cobre uma necessidade minha.

image

Nos atributos dos produtos por exemplo, eu criei uma série de regras

image

image

image

Notem que não precisa ser exatamente desta maneira, mas isso se mostrou muito peculiar e útil, dentro dessas regras, várias coisas são reaproveitadas, o que acabou deixando toda a pre construção muito pequena e proveitosa.

aqui o repositório. https://packagist.org/packages/marcosadantas/sped-container

lpj145 commented 6 years ago

o que achou da ideia ?

robmachado commented 6 years ago

Marcos; Estou com um projeto para uma melhoria na Make::class se quizer posso mostrar para você em hangout. Ainda está desatualizado e precisa melhorar. Mas o básico é o seguinte. Cada NODE do XML como a tagide() será movida para uma TRAIT e nessa TRAIT podemos colocar VALIDAÇÕES como você está propondo. Criamos uma classe de validação e na TRAIT estabelecemos os campos e sua estrutura. Isso pode ser feito com ARRAY como você está propondo ou como eu tenho feito com JsonSchema . Como o método recebe um stdClass é muito mas muito mais facil usar um JsonSchema para validar .

lpj145 commented 6 years ago

vou preparar um código aqui com o que pensei, de uma forma desacoplada pra ficar mais fácil de entender, ai combinamos um.

robmachado commented 6 years ago

Certo ei eu te mostro minha ideia usando JsonSchema