Clipper On Line • Ver Tópico - Atenção "SEM GTIN" na entrada dos produtos.
Página 1 de 4

Atenção "SEM GTIN" na entrada dos produtos.

MensagemEnviado: 22 Ago 2018 16:01
por Itamar M. Lins Jr.
Ola!
No sistema que desenvolvo eu pego "primeiro" o campo EAN/GTIN para dar entrada no estoque. Só que agora muitas notas começaram a chegar com a frase "SEM GTIN" no lugar, infelizmente o sistema estava com esse "bug" não criado por mim, mas pelo técnico que obrigou a colar essa frase no lugar do código e infelizmente "SEM GTIN" é código e empty() retorna .F.

Saudações,
Itamar M. Lins Jr.

Atenção "SEM GTIN" na entrada dos produtos.

MensagemEnviado: 22 Ago 2018 16:14
por Fernando queiroz
"SEM GTIN" é obrigatorio na versao 4.00 quando o produto nao tiver um

teria que modificar para tratar isso

Atenção "SEM GTIN" na entrada dos produtos.

MensagemEnviado: 22 Ago 2018 17:13
por Itamar M. Lins Jr.
Ola!
Pois é!
Só que para qualquer linguagem "SEM GTIN" é um código... Entendeu ? Quanto ao tratamento blz, Muito melhor deixar da forma que estava sem nada.
Agora quem coloca "SEM GTIN" e o produto tiver código ? fica passível de multa ? tudo agora é culpar o sistema...digitador... etc. É só mais um pano pra manga do governo achar mais uma brecha no sistema do contribuinte. Tem muita gente que não digita GTIN etc... o sistema gera um código o digitador só faz colocar a descrição e preço. Não importa XML... nem sabem o que é isso, nem internet tem...

Saudações,
Itamar M. Lins Jr.

Atenção "SEM GTIN" na entrada dos produtos.

MensagemEnviado: 22 Ago 2018 17:22
por Jairo Maia
Itamar, também faço a atualização do estoque com base no XML da nota, e se nela estiver vazio ou SEM GTIN, fica como SEM GTIN. Se alguém tentar me culpar, não tem base legal pra isso. Quem fornece o produto é que é responsável por digitar o GTIN. Que acusem o emissor da nota que forneceu o produto.

Atenção "SEM GTIN" na entrada dos produtos.

MensagemEnviado: 22 Ago 2018 18:32
por JoséQuintas
Existe um cronograma de quem é obrigado a informar GTIN, mas em dezembro/2018 todos precisam informar.

Atenção "SEM GTIN" na entrada dos produtos.

MensagemEnviado: 24 Ago 2018 17:38
por Eros
Acho que vocês estão criando briga por coisa pouca. Desde o inicio, fiz uma normalização entre o código do meu produto e o codigo do produto do fornecedor, ainda ligando o código de barras também. Assim, se hoje no XML tem codigo ou SEM GTIN, eu pego o codigo do produto, que tem em todo xml, o codigo do produto do fornecedor.

Enfim, não se trata de armadilha do governo, se trata de planejamento da análise de software. Não existe facilidade em informática, para que algo seja fácil e funcional, antes disso alguém produziu muito para gerar e garantir essa facilidade.

A normalização do cadastro de produtos foi sendo feita, quando o lançamento de entradas no estoque não tinha importação de XML. E hoje, quando o produto é novo e não tem normalização, eu paro a operação e ofereço ao operador a oportunidade dele pesquisar no cadastro, informar e linkar o código do produto dele ao código do produto do fornecedor e se não tiver o produto cadastrado, cadastra na hora, sem perder a transação da importação do xml.

Fez isso uma vez, na próxima importação, não tem mais "stop and go". E quando se tem muito movimento, como uma loja de varejo com grande movimentação, tem as fases de normalização no inicio, depois vai ficando bem automatizado.

Mesmo que haja um cronograma para que se coloque o código de barras nos cadastros e nos XML, ainda vai haver furos, pois nem todos produtos tem código de barras, e o fisco não pode obrigar uma empresa a ter código de barras de seus produtos. Por exemplo, uma empesa que vende areia, brita ? Qual código de barras da areia lavada media ?? Então, você amarrar sua importação pelo código de barras, os riscos de haver furos, sempre vai existir.

Já usando uma normalização para ligar o código do seu produto ao código do produto de seu fornecedor + código do fornecedor, vai ser bem mais difícil de furar, tendo ou não gtin.

Atenção "SEM GTIN" na entrada dos produtos.

MensagemEnviado: 24 Ago 2018 20:25
por Jairo Maia
Olá Erones,

Eros escreveu:Já usando uma normalização para ligar o código do seu produto ao código do produto de seu fornecedor + código do fornecedor, vai ser bem mais difícil de furar, tendo ou não gtin.
Ao ler o XML para atualizar estoque de produtos, não conheço nenhuma outra forma de fazê-lo a não ser vincular o CNPJ do fornecedor e código próprio dele (fornecedor) ao código próprio do meu sistema. Quando isso não existe então é tratado como novo produto.

A discussão aqui é sobre se o fornecedor não colocar na nota o GTIN quando o produto tiver GTIN e furar o cruzamento de dados que breve se iniciará pelas secretarias estaduais.

Atenção "SEM GTIN" na entrada dos produtos.

MensagemEnviado: 25 Ago 2018 13:23
por Eros
Jairo, tudo bem !

Acho que você interpretou-me muito mal... Se puder, dê uma lida nas informações do link:

http://www.contabeis.com.br/artigos/489 ... tim+Portal

Isso pode deixar mais claro a situação ora discutida x o que eu apresentei como uma das soluções possíveis.

O que eu coloquei, não é a unica solução, mas é tão eficiente quanto, ao caso relatado, que suprimiria problemas com Gtin.

Atenção "SEM GTIN" na entrada dos produtos.

MensagemEnviado: 26 Ago 2018 09:44
por JoséQuintas
Voltando ao assunto do tópico....

Quando se trata de campo só pra números, uso a minha função SoNumeros().
No Caso, SoNumeros( "SEM GTIN" ) vai retornar uma string vazia.

Atenção "SEM GTIN" na entrada dos produtos.

MensagemEnviado: 26 Ago 2018 10:22
por Jairo Maia
Quando se trata de GTIN, uso minha função para verificar se o GTIN informado é válido, ou no caso de entrada de estoque se o GTIN lido é valido. Caso retorne Falso coloco "SEM GTIN". A função é um pouco antiga, acho que dá até pra reescrever com funções nativas mais atuais, mas funciona:
Func ValidaGTIN( cCodGtin )  // Verica se o código é um código GTIN válido

Local nPosi       := 0
Local nDigito     := 0
Local nSomatoria  := 0
Local aAlgoritmo  := {}
Local lRetorno    := .F.

aAlgoritmo := { 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3 }

cCodGtin := AllTrim( cCodGtin )

If ( Val( cCodGtin ) <= 0 ) .Or. !( StrZero( Len( cCodGtin ), 2 ) $ [08,12,13,14] )
  Return lRetorno
Else
  nPosi := ( ( 14 - Len( cCodGtin ) ) + 1 )
EndIf

For x := 1 To ( Len( cCodGtin ) - 1 )
  nSomatoria += ( Val( SubStr( cCodGtin, x, 1 ) ) * aAlgoritmo[ nPosi ] )
  nPosi++
Next

nDigito := Val( Right( Hb_NToS( nSomatoria ), 1 ) )
If nDigito != 0
  nDigito := ( 10 - nDigito )
EndIf

lRetorno := ( Hb_NToS( nDigito ) = Right( cCodGtin, 1 ) )

Return lRetorno

Atenção "SEM GTIN" na entrada dos produtos.

MensagemEnviado: 27 Ago 2018 11:04
por rubens
Bom dia

Sempre que cadastro um produto novo pelo xml guardo o código do fornecedor (do xml) como código de referência do fornecedor (o que vai por água abaixo se comprar de vários fornecedores o mesmo produto, aí só associando manualmente se não fizer uma tabela paralela para cada código de referência e fornecedor).
Daí eu leio o Código de barras do xml, se for válido, pesquiso na tabela do usuário, senão pesquiso por fornecedor + código de referência, se encontrar associa automaticamente, se não gera um código novo e cadastra automaticamente, visualizando num browse e dando a opção de associar automaticamente.
Daí com essa nova regra do SEM GTIN, tive que alterar zerando o código de barras caso o valor seja SEM GTIN.
Só que estou recebendo em alguns clientes xml com o campo GTIN= , ou seja sem valor... como pode eu não consigo gerar uma nota sem o gtin ou SEM GTIN, tá o tal do erro Atomyc nãos sei das quantas !!!
Outra questão: quem vai fiscalizar? qual parâmetro para fiscalizar? Quem tem que informar se o produto tem código de barras é o Usuário !!! É só criar uma regra se aceita ou não produtos com código de barras zerados (vazios)...

Rubens

Atenção "SEM GTIN" na entrada dos produtos.

MensagemEnviado: 27 Ago 2018 12:36
por JoséQuintas
Apenas talvez... talvez seja possível obrigar o GTIN conforme o NCM.

Atenção "SEM GTIN" na entrada dos produtos.

MensagemEnviado: 27 Ago 2018 12:42
por JoséQuintas
Aproveitando....
Tempos atrás montei uma coleta de informação de XMLs....
Tinha até esquecido disso.
Zerei porque o CST estava errado, mas como não atualizei o aplicativo em todos os clientes, continua gravando errado kkkk

Foi só pra curiosidade, ainda não sei como poderei usar as informações.

gtin.png

Atenção "SEM GTIN" na entrada dos produtos.

MensagemEnviado: 27 Ago 2018 13:41
por rubens
Tá aprendendo com a microsoft !!! :))

Atenção "SEM GTIN" na entrada dos produtos.

MensagemEnviado: 27 Ago 2018 15:38
por JoséQuintas
Olhando a captura, não sei se é só coincidência...
GTIN de embalagem está com um dígito a mais, justamente um "1" no início.

Só fiquei imaginando o que poderia ser "kit de parede - preto", que apareceu numa das notas.

Atenção "SEM GTIN" na entrada dos produtos.

MensagemEnviado: 27 Ago 2018 20:22
por Jairo Maia
JoséQuintas escreveu:GTIN de embalagem está com um dígito a mais
Os códigos de barras com 14 dígitos são os códigos ITF-14 (GTIN 14). Eles são usados nas caixas que contém as embalagens, são muito usados por atacadistas. Nas caixas com ITF-14 as vezes têm também os códigos dos fardos e da menor unidade tributária, em locais de destaque para não confundir o operador do caixa de qual usar.

Pegando um exemplo da sua figura, vemos o seguinte:

LUBRAX TRM 4 80W - CXC24F1L (caixa com 24 frascos de 1 litro)
cEAN = 17891344000517 (GTIN da caixa) e cEANTrib = 7891344000510 (GTIN da menor unidade tributada).

O GTIN-14, tem esse formato (veja que fica dentro de um quadro sempre, para não confundir o operador do PDV):
Codido de Barras ITF 14.jpg

Atenção "SEM GTIN" na entrada dos produtos.

MensagemEnviado: 27 Ago 2018 20:46
por JoséQuintas
Seria correto então não aceitar GTIN de 14 dígitos no tributável?

Atenção "SEM GTIN" na entrada dos produtos.

MensagemEnviado: 27 Ago 2018 21:05
por Jairo Maia
JoséQuintas escreveu:Seria correto então não aceitar GTIN de 14 dígitos no tributável?
Não é correto. Quando fui alterar para o leiaute 4.00, também pensei em fazer isso, porém, no manual da SEFAZ diz que pode. Porque razão não sei, mas pelo menos por enquanto pode.

De qualquer forma, em meu sistema aceita somente GTIN de 8 ou 13 dígitos para cEANTrib. Então mesmo que venha mudar no futuro não terei que alterar nada.

PS: Nunca vi no seguimento que tabalho produtos com GTIN 12. Somente 8, 13 ou 14. Se aparecer produtos com 12, faço apenas uma pequena alteração na função ValidaGTIN(), mas nunca vi.

Atenção "SEM GTIN" na entrada dos produtos.

MensagemEnviado: 27 Ago 2018 23:07
por Itamar M. Lins Jr.
Ola!
No link que o Eros postou:
Se a mercadoria tiver código de barras, mas não souber no momento e escrever “SEM GTIN” para não realizar a busca, o comprador não terá essa informação na NF-e causando uma cadeia de erros, gerando penalidades ao fornecedor que não preencher os campos de acordo com a legislação.

Tô vendo aqui que um fornecedor de peças para carro, tirou uma NF-e com 149 itens, e em todos colocou "SEM GTIN".
Lógico que os produtos tem GTIN mas e ai ? Como fica com a loja que comprou esses produtos ? Esses mesmos produtos outros fornecedores vendem também.
sem gtin.png


Quanto as amarrações etc... vou lendo aqui, ali, aculá e aprendendo.

Saudações,
Itamar M. Lins Jr.

Atenção "SEM GTIN" na entrada dos produtos.

MensagemEnviado: 30 Ago 2018 22:55
por fladimir
Jairo escreveu:

PS: Nunca vi no seguimento que tabalho produtos com GTIN 12. Somente 8, 13 ou 14. Se aparecer produtos com 12, faço apenas uma pequena alteração na função ValidaGTIN(), mas nunca vi.


Pois é meu amigo, eu uns 6 meses atrás tive q mudar minha rotina de validação devido o bendito. Tb nunca tinha visto até q teve um cliente q teve produtos assim.

Agora faço semelhante ao Jairo e acredito q demais colegas...

Produto A comprado do forn X é armazenado numa tabela c/ indice fornec+codproduto
Produto A comprado do forn Y é armazenado nessa tab paralela com cod forn + prod

com isto qdo o cliente comprar o produto A do fornecedor X ou Y vai saber qual é pois esta associado.

Se comprou o produto A do forn Z ai vai aparecer (caso não localize por codigo de barras q é a primeira verificação, desconsiderando-se SEM GTIN) ai mostra q não achou o produto A e pede pra Associar ou Cadastrar como Novo.

Agora meu novo DILEMA.... vcs acreditam q tem fornecedores q geram NFe com produtos diferentes, vejam bem, diferentes mas com mesmo código de produto?????
Ou seja, minha lógica foi pro espaço, pq imaginem o seguinte...

Produto A do Forn X com cod 123 associdado ao produto A da base do meu sistema
Produto B do Forn X com cod 123 devido a primeira associação acima vai pensar q é o produto A sendo q é outro produto... cara é complicado viu...
Não pensei muito bem ainda, mas acredito q vou ter q fazer uma lógica pra q caso já tenha sido usado o codigo 123 previamente na mesma entrada de notas não permitir considerar para demais itens da nota...
Só q ai não terei como associar (gravando na minha tabela de associação) talvez fazer um vinculo temporario pra dizer q outro produto seria pra dar entrada...

Alguém já passou por isso? Estou dentro do assunto ainda? Kkkk. Desculpe se fugi um pouco do assunto.

Atenção "SEM GTIN" na entrada dos produtos.

MensagemEnviado: 31 Ago 2018 13:04
por Jairo Maia
Olá fladimir,

fladimir escreveu:Alguém já passou por isso?
Já passei numa loja de móveis. Ao ler o XML meu sistema apresentou um produto bem diferente do que o da nota, pois já existia um produto com aquele código daquele fornecedor. Quando isso ocorreu, entrei em contato com o fabricante, e para minha surpresa, eles é que se surpreenderam com isso. Pediram alguns minutos para solucionar e logo em seguida retornaram dizendo para associar o produto com código X, e que já haviam corrigido no sistema deles, e que as novas notas sairiam corretas.

Se ocorrer novamente, será o mesmo procedimento seja com qual fornecedor for, eles têm que considerar que as empresas são automatizadas e isso tem que ser levado em conta. Não pode reutilizar códigos (para produtos), ou atribuir o mesmo código a produtos diferentes.

Atenção "SEM GTIN" na entrada dos produtos.

MensagemEnviado: 31 Ago 2018 20:01
por fladimir
Concordo e discordo kkkk

Concordo q tem q ser corrigido pelo fornecedor, mas discordo e o cliente aguardar a solução.

Nesse caso tem q se ter uma forma de dar a entrada, no meu ponto de vista, pq o cliente muitas vezes pode ate perder uma venda se demorar pra dar entrada e faturar pro cliente dele.

Atenção "SEM GTIN" na entrada dos produtos.

MensagemEnviado: 31 Ago 2018 20:15
por Jairo Maia
fladimir escreveu:pq o cliente muitas vezes pode ate perder uma venda se demorar pra dar entrada e faturar pro cliente dele
Desculpe fladimir, mas tipo: Oi? Como assim? A loja coloca o produto antes de ter verificado, cadastrado ou atualizado o estoque e autorizado para exposição/disponibilização do produto? Não consegui entender isso. Em qual situação isso pode acontecer?

Atenção "SEM GTIN" na entrada dos produtos.

MensagemEnviado: 31 Ago 2018 20:53
por fladimir
Vou dar um exemplo da loja da minha esposa, chegou a nota de produtos q já comercializamos, porém a nota veio errada, tipo produtos diferentes códigos iguais, era uma encomenda, cliente esperando fazia tempo, tenho q dar entrada no produto via nota fiscal, mas como importar nesse caso? não importei, fiz lançamento manual, escolhendo o produto, tipo item 0001 da nota com o produto X da base q já tem cadastro, produto 0002 da nota com produto Y da base e assim por diante.

Pq se fosse fazer via importação com a lógica atual não consigo pq o sistema entendia q o produto 0001 e 002 eram os mesmos pq eram do mesmo fornecedor e estavam com mesmo código do fornecedor na nota/xml
Então associava os 2 itens a 1 item da base.

Entendeu?

Pegando esse exemplo, dependendo o caso não dá pra esperar o Fornecedor arrumar pra importar o XML, tem q prever isso no meu ponto de vista, pq isso tem ocorrido, já tinha pego casos em clientes e recentemente ocorreu na loja da minha esposa.

É nesse sentido q me refiro.

Atenção "SEM GTIN" na entrada dos produtos.

MensagemEnviado: 02 Set 2018 15:07
por Jairo Maia
fladimir escreveu:Entendeu?
Sim, entendi. Mas eu não acho correto apenas aceitar. Eu liberaria o produto e reclamaria com o fornecedor. Continuo achando que eles não podem fazer isso.

Atenção "SEM GTIN" na entrada dos produtos.

MensagemEnviado: 02 Set 2018 18:34
por JoséQuintas
Não lembro quem me falou sobre este assunto:
Uma determinada empresa, colocando do jeito que o destinatário pedia.
Com isso, uma nota nunca era igual a outra.

Atenção "SEM GTIN" na entrada dos produtos.

MensagemEnviado: 03 Set 2018 07:54
por rubens
Bom dia...

Mas Fladimiri,
Bom regras de negócio são regras de negócio, né.. cada um cria a sua...
Eu tive problemas no início com o literal 'SEM GTIN' daí minha rotina tava gerando '0000000000000' ao invés de deixar em branco. Daí todos os produtos que estava SEM GTIN foram associados nesse produto '000000000000'. Nesse caso foi corrigido o produto na tabela. No caso que você falou seria a mesma coisa vai no produto na tabela e corrige o GTIN dele.
Na visualização dos itens da nota tem que ter uma opção de associar manualmente. Então tá fácil de resolver, mesmo que o sistema na leitura do xml associe vários produtos ao mesmo produto pode ser associado manualmente.
Daí vai depender do bom senso do operador (coisa que não é muito comum) mas não vejo outra forma de automatizar isso, já que não existe um padrão/layout definido entre o fornecedor e os clientes. Pode até usar o xPed e o xItem na NFE mas só resolveria no caso de um só cliente e vai lá saber se o fornecedor vai querer fazer isso ..

Rubens

Atenção "SEM GTIN" na entrada dos produtos.

MensagemEnviado: 03 Set 2018 07:59
por rubens
Bom dia...

Mas Fladimiri,
Bom regras de negócio são regras de negócio, né.. cada um cria a sua...
Eu tive problemas no início com o literal 'SEM GTIN' daí minha rotina tava gerando '0000000000000' ao invés de deixar em branco. Daí todos os produtos que estava SEM GTIN foram associados nesse produto '000000000000'. Nesse caso foi corrigido o produto na tabela. No caso que você falou seria a mesma coisa vai no produto na tabela e corrige o GTIN dele.
Na visualização dos itens da nota tem que ter uma opção de associar manualmente. Então tá fácil de resolver, mesmo que o sistema na leitura do xml associe vários produtos ao mesmo produto pode ser associado manualmente.
Daí vai depender do bom senso do operador (coisa que não é muito comum) mas não vejo outra forma de automatizar isso, já que não existe um padrão/layout definido entre o fornecedor e os clientes. Pode até usar o xPed e o xItem na NFE mas só resolveria no caso de um só cliente e vai lá saber se o fornecedor vai querer fazer isso ..

Rubens

Atenção "SEM GTIN" na entrada dos produtos.

MensagemEnviado: 03 Set 2018 11:31
por fladimir
Bom dia,

Essa ideia de associar manualmente vai resolver junto com outra ideia, q se identificar q tem codigos iguais, ai nesses itens já avisa e abre por padrão desassociado pra associar manualmente q ai fica a responsabilidade pra quem esta lançando a nota.

Atenção "SEM GTIN" na entrada dos produtos.

MensagemEnviado: 12 Set 2018 23:21
por Jairo Maia
Olá hazael,

Veja essa mensagem, e veja se ajuda: http://www.pctoledo.com.br/forum/viewtopic.php?p=125105#p125105

Atenção "SEM GTIN" na entrada dos produtos.

MensagemEnviado: 13 Set 2018 19:23
por Itamar M. Lins Jr.
Ola!
Da uma olhada na
NT_2017_001_v1.00_Validações_do_GTIN.pdf


Mas no link que o Jairo postou explica.
O EAN é o da caixa e o outro é da menor unidade (vendida) a pessoa pode comprar a CAIXA(com 10) ou a Unidade.
cEAN
Preencher com o código GTIN8, GTIN 12, GTIN 13 ou GTIN 14 (antigos códigos EAN, UPC e DUN 14).
Para produtos que não possuem código de barras com GTIN, deve ser informado o literal “SEM GTIN”; Nos demais casos, preencher com GTIN contido na
embalagem com código de barra

cEANTrib
Preencher com o código GTIN-8, GTIN-12, GTIN-13 ou GTIN-14 (antigos códigos EAN, UPC e DUN-14) da unidade tributável do produto.
O GTIN Tributário deve corresponder ao GTIN da menor unidade comercializada no varejo identificável por código GTIN


Saudações,
Itamar M. Lins Jr.

Atenção "SEM GTIN" na entrada dos produtos.

MensagemEnviado: 14 Set 2018 17:00
por Jairo Maia
Olá hazael,

cEAN, é o código do produto que será lido pelo operador do PDV, e cEANTrib, é o código da menor unidade tributária.

Pegando seu exemplo:

1-Se alguém comprar a caixa com 12 unidades, no cupom ou nota fiscal será:
cEAN: 11234567890123 (código do produto vendido, ou seja, a caixa com 12 unidades, então o EAN14 da caixa)
e
cEANTrib: 1234567890123 (código da menor unidade tributada, ou seja, o código do produto dentro da caixa, então EAN13 da unidade).

2-Se um comprador comprar apenas a unidade desse produto avulsa, seria:
cEAN: 1234567890123 (código do produto vendido. Como se trata de produto avulso, então o EAN13 do produto avulso)
e
cEANTrib: 1234567890123 (código da menor unidade tributada, nesse caso, são os mesmos, ou seja, o EAN13 da unidade).

Atenção "SEM GTIN" na entrada dos produtos.

MensagemEnviado: 21 Set 2018 19:20
por JoséQuintas
qttrib.png


Caixa com 24 unidades, a quantidade tributável é ... 1....
Vou ter que rever minha rotina...
A maior empresa de Petróleo do Brasil não poderia estar fazendo errado.... ou poderia?

Atenção "SEM GTIN" na entrada dos produtos.

MensagemEnviado: 23 Set 2018 19:04
por Jairo Maia
hazael escreveu:Não é isso ou estou perdendo algo?
+1

O que está errado nisso José?

Atenção "SEM GTIN" na entrada dos produtos.

MensagemEnviado: 23 Set 2018 20:00
por JoséQuintas
Jairo Maia escreveu:O que está errado nisso José?


Se GTIN diferente, a quantidade tributável deveria ser diferente....
É de se imaginar que o GTIN tributável seja de uma lata, sendo que a caixa tem 24.

Atenção "SEM GTIN" na entrada dos produtos.

MensagemEnviado: 24 Set 2018 10:26
por Jairo Maia
JoséQuintas escreveu:É de se imaginar que o GTIN tributável seja de uma lata, sendo que a caixa tem 24.
Não José. Não nesse caso, onde o produto é a caixa.

Endendo da seguinte forma:

1-Venda de apenas 1 caixa com 24 unidades, com valor hipotético de R$ 100,00 a caixa:

qCom = 1 (quantidade vendida)
vUnCom = 100.00 (valor unitário do produto vendido)
vProd = 100.00 (valor total do produto obtido por qCom x vUnCom)

qTrib = 1 (quantidade tributada)
vUnTrib = 100.00 (valor unitário de tributação, que é obtido por qTrib / vProd)

2-Venda de 2 caixas com 24 unidades, com valor hipotético de R$ 100,00 a caixa:

qCom = 2 (quantidade vendida)
vUnCom = 100.00 (valor unitário do produto vendido)
vProd = 200.00 (valor total do produto obtido por qCom x vUnCom)

qTrib = 2 (quantidade tributada)
vUnTrib = 100.00 (valor unitário de tributação, que é obtido por qTrib / vProd)

Nesse exemplo, pois o produto é a caixa. É isso que você não está fazendo?

Atenção "SEM GTIN" na entrada dos produtos.

MensagemEnviado: 24 Set 2018 10:52
por JoséQuintas
Mas aí perde-se o sentido do GTIN comercial e GTIN tributável.

Se a caixa é o comercial e o tributável, deveria ser o mesmo GTIN nos dois, o que segundo o manual da nota nem sempre é.

Se o GTIN comercial é da caixa, e o GTIN tributável é o da lata....
1 caixa = 24 latas, deveria ser 1 unidade comercial, e 24 unidades tributável.

E se for pra repetir tudo igual, só alterando o GTIN, não precisava qtd. comercial e qtd. tributável, e valor comercial e valor tributável.

Senão... endoida tudo.... rs

Lembrando... essas notas são do fornecedor.

Eu faço assim:
comercial = valor normal, qtde normal
tributável = valor normal / 24, qtde normal * 24

o resultado total é o mesmo, mas ajustado para a unidade tributável.

Atenção "SEM GTIN" na entrada dos produtos.

MensagemEnviado: 24 Set 2018 15:30
por Jairo Maia
Então, talvez o que seria correto nesse caso seria mesmo colocar em cEAN e cEANTrib o mesmo GTIN. Mas a rigor, quem tá bagunçando o coreto é a própria SEFAZ, já que em perguntas e respostas, ela deixa claro que cEANTrib deve ser preenchido com o GTIN da menor unidade tributada, e dá um exemplo com fardo de cerveja.

Os demais campos, ficam claro no manual que se referem as unidades comerciais:
qTrib.jpg

Atenção "SEM GTIN" na entrada dos produtos.

MensagemEnviado: 24 Set 2018 22:57
por JoséQuintas
Quanto mais se procura, pior....
No perguntas e respostas, Fazenda SP.

"GTIN tributável é a unidade utilizada pra calcular o ICMS Substituição Tributária"

"como por exemplo a unidade de venda do varejo" - não significa que seja exatamente ela

gtin.png

Atenção "SEM GTIN" na entrada dos produtos.

MensagemEnviado: 27 Set 2018 11:03
por JoséQuintas
Sim, até aí tudo bem.
Mas a dúvida agora é sobre a quantidade.

1 caixa com 24 latas

Se a unidade comercial é 1 caixa, e a unidade tributável é uma lata...
No meu entender, 1 caixa = 24 latas, então 1 unidade comercial = 24 unidades tributáveis
Mas nessa nota que indiquei, a quantidade é 1 nos dois, mesmo sendo unidade diferente.

Atenção "SEM GTIN" na entrada dos produtos.

MensagemEnviado: 27 Out 2018 15:04
por rochinha
Amiguinhos,

jairo maia
A função ValidaGTIN() permite validar EAN13?

Atenção "SEM GTIN" na entrada dos produtos.

MensagemEnviado: 27 Out 2018 19:35
por Jairo Maia
Olá Rochinha,

Sim. Valida todos os GTIN´s. EAN8, EAN12, EAN13 e EAN14.

Atenção "SEM GTIN" na entrada dos produtos.

MensagemEnviado: 14 Mai 2019 18:30
por JSystem
Olá Jairo,

Acerca da função ValidaGtin(), estou adaptando ela para o clipper, gostaria de saber como poderia substituir essa função Hb_NToS() ?

Grato,
Josadac

Atenção "SEM GTIN" na entrada dos produtos.

MensagemEnviado: 14 Mai 2019 19:07
por Jairo Maia
Olá JSystem,

Em Clipper use: LTrim( Str( nVar ) )

Atenção "SEM GTIN" na entrada dos produtos.

MensagemEnviado: 14 Mai 2019 21:46
por JSystem
Ok Jairo,

Obrigado pelo retorno.

Atenção "SEM GTIN" na entrada dos produtos.

MensagemEnviado: 14 Mai 2019 23:42
por JSystem
Jairo,

Fiz as mudanças, porém não deu certo, segue abaixo o código, percebi que retorna .T. qualquer numero que digitar, desde que o último dígito seja 0.

Func ValidaGTIN( cCodGtin )

Local nPosi       := 0
Local nDigito     := 0
Local nSomatoria  := 0
Local aAlgoritmo  := {}
Local lRetorno    := .F.

aAlgoritmo := { 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3 }

cCodGtin := AllTrim( str(cCodGtin,14) )

If ( Val( cCodGtin ) <= 0 ) .Or. !( StrZero( Len( cCodGtin ), 2 ) $ [08,12,13,14] )
    Return lRetorno
Else
    nPosi := ( ( 14 - Len( cCodGtin ) ) + 1 )
EndIf

For x := 1 To ( Len( cCodGtin ) - 1 )
     nSomatoria += ( Val( SubStr( cCodGtin, x, 1 ) ) * aAlgoritmo[ nPosi ] )
     nPosi++
Next

// nDigito := Val( Right( Hb_NToS( nSomatoria ), 1 ) )
nDigito := Val( Right( LTrim( Str(nSomatoria,1) ), 1 ) )
If nDigito != 0
    nDigito := ( 10 - nDigito )
EndIf

lRetorno := ( LTrim( Str(nDigito,1) ) = Right( cCodGtin, 1 ) )

Return lRetorno


Segue três códigos de barras válidos de produtos que consegui emitir NFe, caso queira testar:

7898584070440 - Apenas este retorna .T.
7898584070457
7898584070464

Se puder me ajudar ficarei grato.

Att.

Atenção "SEM GTIN" na entrada dos produtos.

MensagemEnviado: 15 Mai 2019 09:12
por Jairo Maia
Olá JSystem,

Você fez confusão ao alterar as linhas 11 e 25 da função e tirou a funcionalidade dela. Pela linha 11, percebe-se que você envia o GTIN numérico, e não caractere. Alterei a função para tratar se envia numérico ou caractere, e está compatível com Clipper. Use essa função:
Func ValidaGTIN( cCodGtin )

Local nPosi       := 0
Local nDigito     := 0
Local nSomatoria  := 0
Local aAlgoritmo  := {}
Local lRetorno    := .F.

aAlgoritmo := { 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3 }

If ValType( cCodGtin ) = "N"
  cCodGtin := AllTrim( Str( cCodGtin ) )
Else
  cCodGtin := AllTrim( cCodGtin )
EndIf

If ( Val( cCodGtin ) <= 0 ) .Or. !( StrZero( Len( cCodGtin ), 2 ) $ [08,12,13,14] )
    Return lRetorno
Else
    nPosi := ( ( 14 - Len( cCodGtin ) ) + 1 )
EndIf

For x := 1 To ( Len( cCodGtin ) - 1 )
     nSomatoria += ( Val( SubStr( cCodGtin, x, 1 ) ) * aAlgoritmo[ nPosi ] )
     nPosi++
Next

nDigito := Val( Right( LTrim( Str( nSomatoria ) ), 1 ) )
If nDigito != 0
    nDigito := ( 10 - nDigito )
EndIf

lRetorno := ( LTrim( Str(nDigito,1) ) = Right( cCodGtin, 1 ) )

Return lRetorno

Atenção "SEM GTIN" na entrada dos produtos.

MensagemEnviado: 15 Mai 2019 18:56
por JSystem
Olá Jairo,

Novamente te dando trabalho, vai tendo um pouco de paciência rsrs.

Substitui a função, porém a falha continua, retornando .T. apenas para os códigos de barras terminados com o número 0, inclusive testei o seguinte, 9999999999990, retornou .T.

Atenção "SEM GTIN" na entrada dos produtos.

MensagemEnviado: 16 Mai 2019 08:41
por JSystem
Olá Pessoal,

Até que o Jairo atenha condição de me retornar, alguém mais utiliza a função e pode me orientar acerca dessa falha ?

Grato.

Atenção "SEM GTIN" na entrada dos produtos.

MensagemEnviado: 16 Mai 2019 10:06
por Jairo Maia
Olá JSystem,

Sua primeira alteração realmente estava com problema, mas fiz as correções e funcionou corretamente. Não vejo razão por ser Clipper e estar dando o problema, acho que você está fazendo algo errado, e ai só você para saber mesmo. Compile o exemplo abaixo em Clipper e veja que resultado retorna:
CLS
?
? ValidaGTIN( Val( "7898584070440" ) )
? ValidaGTIN( Val( "7898584070457" ) )
? ValidaGTIN( Val( "7898584070464" ) )
?

Func ValidaGTIN( cCodGtin )

Local nPosi       := 0
Local nDigito     := 0
Local nSomatoria  := 0
Local aAlgoritmo  := {}
Local lRetorno    := .F.

aAlgoritmo := { 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3 }

If ValType( cCodGtin ) = "N"
  cCodGtin := AllTrim( Str( cCodGtin ) )
Else
  cCodGtin := AllTrim( cCodGtin )
EndIf

If ( Val( cCodGtin ) <= 0 ) .Or. !( StrZero( Len( cCodGtin ), 2 ) $ [08,12,13,14] )
    Return lRetorno
Else
    nPosi := ( ( 14 - Len( cCodGtin ) ) + 1 )
EndIf

For x := 1 To ( Len( cCodGtin ) - 1 )
     nSomatoria += ( Val( SubStr( cCodGtin, x, 1 ) ) * aAlgoritmo[ nPosi ] )
     nPosi++
Next

nDigito := Val( Right( LTrim( Str( nSomatoria ) ), 1 ) )
If nDigito != 0
    nDigito := ( 10 - nDigito )
EndIf

lRetorno := ( LTrim( Str(nDigito,1) ) = Right( cCodGtin, 1 ) )

Return lRetorno

Atenção "SEM GTIN" na entrada dos produtos.

MensagemEnviado: 17 Mai 2019 22:40
por JSystem
Olá Jairo,

Depois de bastante tempo e apanhar bastante, descobri que o problema era na variável de ambiente, set fixed on, foi só desativar funcionou perfeito.

Obrigado pela atenção e paciência.

Grato.