Página 1 de 1

Daruma32.dll alterando string !!!

Enviado: 23 Jul 2012 15:14
por alaminojunior
Boa tarde caros.

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.
O parâmetro aliq é o índice da alíquota no emissor de cupom fiscal.
(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 ?

Daruma32.dll alterando string !!!

Enviado: 24 Jul 2012 10:07
por sambomb
Como está sua declaração?

Porque você simplesmente não faz uma conversão para voltar ao texto que você quer?

Código: Selecionar todos

If aliq = "17"
   aliq := "FF"
ElseIf aliq = "18"
   aliq := "II"
ElseIf aliq = "19"
   aliq := "NN"
End

Daruma32.dll alterando string !!!

Enviado: 25 Jul 2012 17:22
por daruma developer
Prezado desenvolvedor,

De fato portar a sua app para a DarumaFramework.dll é o melhor caminho, pois alem de voce ter suporte completisso nesse driver, voce tem tambem a possibilidade de passa o indice da referida posicao de memoria, que a dll resolve.

Exemplo: se voce passar 17, a DarumaFramework.dll ira registrar o item no cupom fiscal com F1, que é equivalente a posição de memória de indice 17.

... editado ...

Att.
Nota de Moderação:
por Toledo: Esta Mensagem foi editada, leia as regras do fórum:

10 - Na Solução de postagens evitem as frases do tipo: "me envie um e-mail que lhe passarei a solução", “entre no meu site que lá você vai encontrar a solução”, etc. O fórum é de todos e devemos manter vivo o Altruismo , os beneficiados serão nós mesmos.

11 - ... O Fórum foi criado para intermediar a comunicação entre os participantes, não servir de mural de recados.

Daruma32.dll alterando string !!!

Enviado: 25 Jul 2012 21:04
por alaminojunior
Como eu citei no tópico inicial: não é possível para mim fazer esta troca de dll´s, estou envolvido com outras rotinas que tem maior prioridade hoje. O problema maior é que todos os meus clientes usam Daruma, por indicação minha.
No help da Daruma32.DLL é exatamente isso que está orientando a fazer: o parâmetro pode ser passado com o valor do índice na lista de alíquotas do ECF, ou o valor em %.
Eu utilizo passar o índice na lista, por questões internas minhas. Porém quando eu passo na variável os valores 'FF', 'II' e 'NN', esta variável tem o seu valor alterado (após a chamada da função de venda) para '17', '18' e '19', bagunçando toda a retaguarda que cuida da parte contábil e fiscal como Sintegra e outros bichos do tipo.
Na época em que solicitei o suporte da Daruma e reportei este bug (pois é um bug na DLL, não tem outra explicação), não fui levado à sério.
Hoje já resolví de outra forma, até poder atualizar o sistema para usar a DarumaFramework.

Daruma32.dll alterando string !!!

Enviado: 26 Jul 2012 11:57
por sambomb
Indique a solução utilizada para ajudar outras pessoas que possam estar enfrentando o mesmo problema.

Daruma32.dll alterando string !!!

Enviado: 26 Jul 2012 12:40
por alaminojunior
A solução foi buscar no banco de dados, o índice da alíquota no ECF. Ignorando a variável que fora usada para enviar o comando à DLL.

A solução que o Samir sugeriu, concluí não ser muito precisa, pois não encontrei uma lógica nos tais valores 17, 18 e 19.

É isso aí.

Daruma32.dll alterando string !!!

Enviado: 26 Jul 2012 15:09
por Kiko Fernandes
alaminojunior escreveu:concluí não ser muito precisa, pois não encontrei uma lógica nos tais valores 17, 18 e 19.
Olha, até aonde eu entendo a ECF vem com 16 posições que são permitido a gravação de alíquotas. Com isto vc terá do índice 1 ao 16 (customizável)
as posições 17/18 e 19 são fixas e reservadas. (Já vem de fábrica setado para FF - II - NN ).
Então se eu tenho apenas um índice exemplo o 1 em 18% e um produto com substituição, ao usar o índice 17 o produto estará indo para o totalizador FF.
Não sei se em todas são assim, mas a lógica é esta.

Daruma32.dll alterando string !!!

Enviado: 26 Jul 2012 15:39
por alaminojunior
Não sabía desta! Obrigado pela luz.

Mas o problema não é este, e sim o fato da função na DLL estar alterando o valor da minha variável.

Daruma32.dll alterando string !!!

Enviado: 26 Jul 2012 16:50
por sambomb
Acredito que a minha lógica se ajuste a sua necessidade, verificou se 17/18/19 equivale a FF/II/NN ?