O Cliente me chamou ontem porque o programa nao estava aceitando esse código de barras 07033071756. Fiz alguns testes e realmente esse código não valida na minha rotina de validar código de barras que foi discutida nesse tópico https://pctoledo.org/forum/viewto ... 365#p70365
Fiz umas pesquisas e não encontrei esse padrão de código de barra. Os que encontrei são o Gtin8 e Gtin13. Esse código tem 11 dígitos. A função de validação preenche automaticamente com zeros a esquerda até completar 13 digitos. Mas aí não passa na validação.
Alguém conhece esse código e como validar ele... Não dá simplesmente para ler ele sem validar porque aí vai ser barrado na nfe.
Obrigado
Rubens
Código de validação que está sendo usado:
Código: Selecionar todos
********************************************************************************
cCodBar := '07033071756'
If !ValidaEAN( @cCodbar )
alert('Codigo nao Validado')
else
alert('Codigo Validado'')
endif
********************************************************************************
Static Function ValidaEAN(cCodBar)
Local nInd := 0
Local nUnidade := 0
Local nDigito := 0
Local lRetorno := .T.
Local aPosicao[12]
IF EMPTY( cCODBAR )
RETURN lRETORNO
ENDIF
MUDACOD( @cCODBAR )
cCODBAR := StrZero(Val(AllTrim(cCODBAR)), 13, 0)
For nInd := 1 to 12
aPosicao[nInd] := Val(SubStr(cCODBAR, nInd, 1))
Next
nUnidade := Val(Right(Str(((aPosicao[2]+aPosicao[4]+aPosicao[6]+aPosicao[8]+aPosicao[10]+aPosicao[12])*3) + ( aPosicao[1]+aPosicao[3]+aPosicao[5]+aPosicao[7]+aPosicao[9]+aPosicao[11])), 1))
nDigito := If((10-nUnidade ) > 9, 0, 10-nUnidade)
lRetorno := nDigito = Val(Right(AllTrim(cCODBAR), 1))
Return lRetorno
