quinta-feira, 6 de abril de 2017

Nova tabela de NCM

Olá,

 Visto que atuo no desenvolvimento de soluções no ambiente de automação comercial, ou seja, automatizando processos dentro de empresa, através de software, implementamos também aplicações voltadas para emissão de documentos fiscais eletrônicos (famosos "-e").

 Recentemente nossos clientes passaram a reclamar que ao tentar emitir notas fiscais, era exibida a seguinte mensagem de rejeição:

Rejeição 778: Informado NCM inexistente


e os argumentos são, em grande parte, os mesmos:

"Sempre utilizei este NCM, nunca teve problema", ou "Este é NCM que estava na NF-e que o fornecedor me mandou" e etc.

Bom, venho hoje fazer um alerta: Na Nota Técnica 2016/003, que entrou em vigência a partir de 01/01/2017, o assunto é exatamente este "Nova Tabela de NCM – Vigência 01-01-2017".

Para resumir este post, venho esclarecer que uma quantidade significante de NCM's foi eliminada, e o período de adequação por parte das empresas findou em 31/03/2017, conforme está descrito no documento mencionado acima:

"
Divulgar que está disponível a nova tabela de NCM publicada na Resolução Camex nº 125/16 no Portal da NF-e, endereço , no menu “Documentos”, opção “Diversos”, “NCM 8 Dígitos - vigência a partir de 01/01/2017 – Ref. Nota Técnica 2016.003”. 

Os novos códigos incluídos na tabela de NCM estão realçados em verde com a informação de início de vigência em 01/01/2017. 

Os códigos NCM extintos pela Resolução Camex estão realçados em vermelho com informação fim de vigência 31/03/2017. 
"

Concluindo este post, esclareço que a rejeição mencionada acima realmente ocorrerá por algum tempo, para os casos em que as soluções em software não automatizam a sincronia de NCM's. Também observo que nem tudo que é dito por nossos "clientes" poderá ser considerado verdade, porém no mínimo duvidoso.

grato!

segunda-feira, 3 de abril de 2017

Função StringReplace

Olá,

Hoje venho trazer mais uma função que utilizo muito no dia a dia aqui no trabalho. O método que apresento neste dia é a StringReplace:

Ela é útil quando se faz necessário a edição de uma grande string, algo que tomaria muito tempo em meio a loop's demorados.

Este é o cabeçalho da função:

StringReplace(const S, OldPattern, NewPattern: string;
  Flags: TReplaceFlags): string;

onde:

const = string a ser verificada ;
OldPattern = caracteres que se deseja substituir ;
NewPattern = caracteres substitutos (em relação aos antigos) ;
Flags:

Este é um tipo, que aguarda como parâmetros as seguintes opções: (rfReplaceAll, rfIgnoreCase) ;

Exemplo de uso:

palavra = '10.50' ;

showmessage( palavra, '.', ',', [rfReplaceAll, rfIgnoreCase] );

resultado


conclusão: Veja que a função substituiu a string '.' (ponto) por ',' (vírgula). Nesta situação existia apenas uma ocorrência, mas é importante salientar que não existe "limite" desde que a opção "rfReplaceAll" esteja especificada, caso contrário apenas a primeira ocorrência atenderá a substituição.

obs:

rfReplaceAll indica que TODAS as ocorrências deverão atender a substituição solicitada ;
rfIgnoreCase indica que não existe diferenciação entre minusculas e maiúsculas.

até a próxima.

PHP para iniciantes - Vídeo #1