Esse problema já ocorre há tempos. Inclusive numa ocasião entrei em contato com o suporte da Daruma, mas infelizmente não me deram ouvidos.
No código abaixo:
Código: Selecionar todos
Function VendeCupom(cdg,nom,aliq,tqtd,qtd,unt,und)
local ret, alyq:= aliq
msginfo(valtoprg(aliq))
ret = dllcall(h1,32,"Daruma_FI_VendeItem",cdg,subs(nom,1,29),aliq,tqtd,qtd,2,unt,"$","0000")
aliq = alyq
msginfo(valtoprg(aliq))
return .t.(A impressora fiscal possui uma lista de alíquotas, então eu passo a posição desta alíquota.)
Quando é passado algo como '01', '02, '03', etc ... na saída da função a variável está com o mesmo valor intacto.
Porém, se eu passar 'FF', 'II' ou 'NN' que também podem ser usados, na saída da função estes valores ficam alterados respectivamente em '17', '18' ou '19' !!!
E o mais intrigante: notem que antes da chamada a DLL, eu salvei na variável alyq o valor de aliq. E após a chamada a DLL, a mesma também tem o seu valor alterado !!!
Eu não posso atualizar para a DarumaFrameWork por questão minha aqui, mas a Daruma32 que utilizo em meus clientes é a mais atual.
Quando entrei em contato com o suporte da Daruma, o atendente não quis ouvir, e sugeriu que utilizasse o valor % da alíquota ao invés do índice, o que para mim não é possível, haja vista outros procedimentos que utilizam o índice.
Algum dos colegas tem alguma sugestão ?



