Jump to content
Fivewin Brasil

Declarações da DLL pra impressora MECAF/DIGISAT


kleyber

Recommended Posts

Olá jackson,

Obrigado por responder. na verdade, eu baixei a ECF32M.DLL pra usar com a impressora Mecaf/Digisat modelo ECF1E, mas os exemplos só estão em Delphi e VB. Se você tiver as declarações com esta dll ou alguém mais tiver, agradeço.

Abraço,

Kleyber Derick

xHarbour 0.99.4 + FWH 2.5

Visite São Luís - MA A Ilha dos Amores

Link to comment
Share on other sites

Ola Kleyber !

Segue exemplo:

// ----------------------------------- //

// DECLARANDO DLL DIGISAT - ECF32M.DLL

// ----------------------------------- //

DLL32 FUNCTION OpenCif() AS _INT PASCAL LIB "ECF32M.DLL"

DLL32 FUNCTION CloseCif() AS LONG PASCAL LIB "ECF32M.DLL"

DLL32 FUNCTION LeituraX(RelGer AS STRING) AS _INT PASCAL LIB "ECF32M.DLL"

DLL32 FUNCTION CancelaCupomFiscal() AS _INT PASCAL LIB "ECF32M.DLL"

DLL32 FUNCTION ReducaoZ(RelGer AS STRING) AS _INT PASCAL LIB "ECF32M.DLL"

DLL32 FUNCTION AbreCupomFiscal() AS _INT PASCAL LIB "ECF32M.DLL"

DLL32 FUNCTION VendaItemStr(fmt AS STRING, qtd AS STRING, punit AS STRING, trib AS STRING, tdesc AS STRING, valor AS STRING, unid AS STRING, cod AS STRING, ex AS STRING,descr AS STRING, legop AS STRING) AS _INT PASCAL LIB "ECF32M.DLL"

DLL32 FUNCTION TotCupomDescValor(valor AS STRING, legop AS STRING) AS _INT PASCAL LIB "ECF32M.DLL"

DLL32 FUNCTION TotCupomSemDescAcres() AS _INT PASCAL LIB "ECF32M.DLL"

DLL32 FUNCTION Pagamento(reg AS STRING , vpgto AS STRING , troco AS LONG ) AS _INT PASCAL LIB "ECF32M.DLL"

DLL32 FUNCTION FechaCupomFiscal(tam_msg AS STRING , msg AS STRING ) AS _INT PASCAL LIB "ECF32M.DLL"

DLL32 FUNCTION EsperaResposta(buf_ret AS STRING ) AS _INT PASCAL LIB "ECF32M.DLL"

DLL32 FUNCTION OperRegNaoVinculado(reg AS STRING, valor AS STRING , oper AS LONG, toper AS LONG, valorop AS STRING ,legop AS STRING) AS _INT PASCAL LIB "ECF32M.DLL"

DLL32 FUNCTION AbreCupomNaoVinculado() AS _INT PASCAL LIB "ECF32M.DLL"

DLL32 FUNCTION ProgramaLegenda(reg AS LPSTR, leg AS STRING) AS _INT PASCAL LIB "ECF32M.DLL"

DLL32 FUNCTION LeMemFiscalData(datai AS STRING, dataf AS STRING,res AS _INT) AS _INT PASCAL LIB "ECF32M.DLL"

DLL32 FUNCTION EncerraCupomNaoFiscal() AS _INT PASCAL LIB "ECF32M.DLL"

DLL32 FUNCTION CancelaCupomNaoFiscal() AS _INT PASCAL LIB "ECF32M.DLL"

DLL32 FUNCTION ImprimelinhanaoFiscal(par AS STRING , msg AS STRING) AS _INT PASCAL LIB "ECF32M.DLL"

ECM SISTEMAS

Marciano Queiroz

Teixeira de Freitas-Ba

ecmsoft.tx@ig.com.br

FW 2.6 + xHarbour 0.99.4 | FW2.7 + xHarbour 0.99.51

Link to comment
Share on other sites

Marciano,

Você tem algum exemplo de comunicação com esta impressora? Estou seguindo os passos do manual, mas só consigo executar bem o comando OpenCif() e só. Se executo a LeituraX() por exemplo, me dá "Falha de abertura da serial" mas está definida certinha na COM1.

Grato,

Kleyber Derick

xHarbour 0.99.4 + FWH 2.5

Visite São Luís - MA A Ilha dos Amores

Link to comment
Share on other sites

Ola Kleyber

Naum gosto desta DLL naum ela é problematica mesmo, uso a ECFAFRAC.DLL

DLL32 FUNCTION AFRAC_ProgramarFormasDePagamento( Indice AS STRING,;

Descricao AS STRING,;

Vinculado AS STRING ) AS LONG lib LibAfrac

DLL32 FUNCTION AFRAC_EmitirLeituraMemoriaFiscal( Ttipo AS STRING,;

TInicio AS STRING,;

TFinal AS STRING ) AS LONG lib LibAfrac

DLL32 FUNCTION AFRAC_ProgramarTributacao( Tributacao AS STRING ) AS LONG lib LibAfrac

DLL32 FUNCTION AFRAC_AbrirPorta( Porta AS PTR ) AS LONG lib LibAfrac

DLL32 FUNCTION AFRAC_FecharPorta() AS LONG lib LibAfrac

DLL32 FUNCTION AFRAC_LeituraX() AS LONG lib LibAfrac

DLL32 FUNCTION AFRAC_ReducaoZ( Dt AS LPSTR ) AS LONG lib LibAfrac

DLL32 FUNCTIOn AFRAC_AjustarRelogio( Hr AS LPSTR) AS LONG lib LibAfrac

DLL32 FUNCTION AFRAC_EntrarHorarioVerao() AS LONG lib LibAfrac

DLL32 FUNCTION AFRAC_SairHorarioVerao() AS LONG lib LibAfrac

DLL32 FUNCTION AFRAC_AbrirCupom() AS LONG lib LibAfrac

DLL32 FUNCTION AFRAC_CancelarCupom() AS LONG lib LibAfrac

DLL32 FUNCTION AFRAC_LerAliquotas( Pt AS STRING ) AS LONG lib LibAfrac

DLL32 FUNCTION AFRAC_LerTodasFormasPagamento( Pt AS STRING ) AS LONG lib LibAfrac

DLL32 FUNCTION AFRAC_CancelarItem(Item AS STRING) AS LONG lib LibAfrac

DLL32 FUNCTION AFRAC_FecharCupom(nVinc AS BOOL) AS LONG lib LibAfrac

DLL32 FUNCTION AFRAC_InformarMensagemCupom(nMensa AS STRING) AS LONG lib LibAfrac

DLL32 FUNCTION AFRAC_LerValorTotalAliquotas( Retorno AS STRING ) AS LONG lib LibAfrac

DLL32 FUNCTION AFRAC_RetornarFeatures( Retorno AS STRING ) AS LONG lib LibAfrac

DLL32 FUNCTION AFRAC_AbrirDia( Tdata AS STRING ) AS LONG lib LibAfrac

DLL32 FUNCTION AFRAC_AcrescimoDescontoCupom( TAcresDesc AS STRING ,;

Tpercvalor AS STRING ,;

TValor AS STRING ,;

Descri AS STRING ) AS LONG lib LibAfrac

DLL32 FUNCTION AFRAC_FecharAcrescimoDesconto( padrao_desc AS STRING ,;

padrao_acres AS STRING ,;

valor_liquido AS STRING ) AS LONG lib LibAfrac

DLL32 FUNCTIOn AFRAC_FormaPagamento( nForma AS STRING ,;

nIndice AS STRING ,;

nValor AS STRING ,;

nMensa AS STRING) AS LONG lib LibAfrac

DLL32 Function AFRAC_PegarCodigoErro( @Cod AS STRING,;

@Msg AS STRING,;

@Acao AS PTR) AS LONG lib LibAfrac

DLL32 Function AFRAC_Fabricante(@mFab AS STRING, @mCro AS STRING) AS LONG lib LibAfrac

DLL32 Function AFRAC_LerInformacaoImpressora(@Cod AS STRING,;

@Msg AS STRING) AS LONG lib LibAfrac

DLL32 FUNCTION AFRAC_VenderItem( nCodigo AS STRING, ; // ( Com tamanho de 20 )

nDescr AS STRING ,; // ( com Tamanho de 200 )

nQtde AS STRING ,; // ( com Tamanho de 16 Ex: 12.34 Kg = "0000000000012.34"

nVlUnit AS STRING ,; // ( com Tamanho de 16 Ex: R$ 2.34 Kg = "0000000000002.34"

nAcrDes AS STRING ,; // ( ou String ou LPSTR ) ("0"=Acrescimo, "1"=Desconto)

nPerVal AS STRING ,; // ( ou String ou LPSTR ) ("0"=Percentual, "1"=Valor)

nVlAcDes AS STRING ,; // ( com Tamanho de 16 Ex: R$ 0.12 = "0000000000000.12"

nVlTotal AS STRING ,; // ( com Tamanho de 16 Ex: R$ 123.45 = "0000000000123.45"

nAliq AS STRING ,; // ( ou LPSTR Ex: "M1200" = Aliquota de 12 % M=Mercadoria )

nUnid AS STRING ,;

nFImp AS STRING ) ; // ( .T. para imprimir em uma unica linha )

AS LONG PASCAL LIB LibAfrac

//nAliq AS STRING ,; // ( ou LPSTR Ex: "M1200" = Aliquota de 12 % M=Mercadoria )

DLL32 FUNCTION AFRAC_AbrirGaveta() AS LONG PASCAL LIB LibAfrac

Veja se lhe atente, caso vc num consiga é só gritar

Jackson Douglas

Boa Vista - RR

FWH 2.6 Last Build + WS + XH 0.99.2 + ADS + (Ja comprei a SQLLIB, e em breve irei usa-la :) )

Link to comment
Share on other sites

Ola Kleyber

Funciona sem problemas a AFRAC, o problema da outra DLL não sei lhe dizer o PORQUE mais comigo dava sempre pau, perdi até um cliente por causa disso, depois que mudei para a AFRAC acabou os meus problemas icon_smile.gif

Jackson Douglas

Boa Vista - RR

FWH 2.6 Last Build + WS + XH 0.99.2 + ADS + (Ja comprei a SQLLIB, e em breve irei usa-la :) )

Link to comment
Share on other sites

Seguinte:

A .DLL AFRAC, na realidade não tem nada a ver com a AFRAC, e sim com um padrao de comunicação quase que unificado, mais ou menos como o caso da FREBRABAN, sendo assim cada fabricante teria que fornecer sua .DLL no padrao da AFRAC.

Exemplos a QUATTRO tem a sua .DLL de forma unica, já no caso da MECAF, são duas .DLL, esta ultima pelo seu padrao, são usados por varios digamos montadores PROCOMP,ELGIN,DIGSAT.

Eu uso para QUATTRO e PROCOMP, e até agora nao tive problemas, alem do que, na .DLL padrao AFRAC, exitem comandos que podem ser enviados na forma NATIVA da impressora, ou seja, se por ventura uma determinada função não foi implementada da .DLL AFRAC, voce poderia usar esta função, para enviar e receber comandos para impressora, como é o caso:

// Fabricante - funcoes direta do fabricante

DLL32 Function AFRAC_700(@mFab AS STRING, @mCro AS STRING) AS LONG PASCAL lib xDll

Oliveira, Sérgio A.

PERSONAL Comp. e Sitemas.id=green>

Lins - SP ** sergio@personal.com.br

FWH 2.5, xharbour 0.99.4, brMake

Link to comment
Share on other sites

Kleyber, eu estou usando a DLL ECF32M sem nenhum problema.

Te mandei um exemplo por e-amil.

Talvez você esteja com uma versão antiga da DLL.

ECM SISTEMAS

Marciano Queiroz

Teixeira de Freitas-Ba

ecmsoft.tx@ig.com.br

FW 2.6 + xHarbour 0.99.4 | FW2.7 + xHarbour 0.99.51

Link to comment
Share on other sites

Marciano,

citação: Kleyber, eu estou usando a DLL ECF32M sem nenhum problema.

Te mandei um exemplo por e-amil.

Talvez você esteja com uma versão antiga da DLL.


id=quote>id=quote>

Eu não recebi teu email e deve ser isso mesmo: A dll deve estar desatualizada. Então pergunto: Onde pego a mais atual, com manual e tudo mais?

Bom, eu estou testando a ECFAFRAC.DLL e funciona legal com vários comandos, mas na hora de vender ítens dá um problema que não consigo descobrir. Tem a função AFRAC_PegarCodigoErro() que não consigo usar de jeito nenhum.

Alguma idéia? Tô começando a ficar muito preocupado com isto.

Abraço,

Kleyber Derick

xHarbour 0.99.4 + FWH 2.5

Visite São Luís - MA A Ilha dos Amores

Link to comment
Share on other sites

//cancelar item

Retorno:=AFRAC_003(qItem)

If (retorno > 0)

TratarErroEcf()

EndIf

*----------------------------*

* Tratamento de Erros do ECF *

*----------------------------*

Function TratarErroEcf()

*----------------------------*

Erro := space(4)

Mensagem := Space(80)

Acao := 0

retorno := AFRAC_604( @Erro, @Mensagem, @Acao)

QualErro:=Val(erro)

If (QualErro > 0)

// Erros tratáveis 1 ate 999

// Erros pré-definidos, para situações em que é possível ao aplicativo tratar.

// Padrão para todos os ECFs.

If (QualErro==001) ; xMsgErro:="001 - Cupom fiscal não aberto."

ElseIf (QualErro==002) ; xMsgErro:="002 - Dia já encerrado"

ElseIf (QualErro==003) ; xMsgErro:="003 - Item não registrado no cupom fiscal."

ElseIf (QualErro==004) ; xMsgErro:="004 - Acréscimo ou desconto não registrado no cupom fiscal "+CRLF+"(fechamento de acréscimo/desconto exclusivamente)."

ElseIf (QualErro==005) ; xMsgErro:="005 - Já houve desconto/acréscimo para este item."

ElseIf (QualErro==006) ; xMsgErro:="006 - Acréscimo/desconto não fechado."

ElseIf (QualErro==007) ; xMsgErro:="007 - Pagamento não realizado."

ElseIf (QualErro==008) ; xMsgErro:="008 - Pagamento não completado."

ElseIf (QualErro==009) ; xMsgErro:="009 - Cupom fiscal aberto."

ElseIf (QualErro==010) ; xMsgErro:="010 - Alíquota informada não cadastrada ou fora da faixa."

ElseIf (QualErro==011) ; xMsgErro:="011 - Tipo da situação tributária inválido."

ElseIf (QualErro==012) ; xMsgErro:="012 - Forma de Pagamento não Cadastrada."

ElseIf (QualErro==013) ; xMsgErro:="013 - Preço total igual a zero."

ElseIf (QualErro==014) ; xMsgErro:="014 - Desconto maior ou igual ao valor do cupom."

ElseIf (QualErro==015) ; xMsgErro:="015 - Quantidade excede ao limite permitido."

ElseIf (QualErro==016) ; xMsgErro:="016 - Preço unitário excede ao limite permitido."

ElseIf (QualErro==017) ; xMsgErro:="017 - Preço total excede ao limite permitido."

ElseIf (QualErro==018) ; xMsgErro:="018 - Cupom já cancelado."

ElseIf (QualErro==019) ; xMsgErro:="019 - Último documento não é um cupom fiscal."

ElseIf (QualErro==020) ; xMsgErro:="020 - Tempo de tolerância para Redução Z excedido."

ElseIf (QualErro==021) ; xMsgErro:="021 - Excedeu à quantidade de autenticações permitida."

ElseIf (QualErro==022) ; xMsgErro:="022 - Troco não permitido para esta forma de pagamento."

ElseIf (QualErro==023) ; xMsgErro:="023 - Limite de itens do cupom fiscal excedido."

ElseIf (QualErro==024) ; xMsgErro:="024 - Limite de linhas para mensagem publicitária excedido."

ElseIf (QualErro==025) ; xMsgErro:="025 - Impossível realizar troco. (não foi feito reforço)."

ElseIf (QualErro==026) ; xMsgErro:="026 - Cupom finalizado com total nulo."

ElseIf (QualErro==027) ; xMsgErro:="027 - Cupom anterior não pode ser cancelado."

ElseIf (QualErro==028) ; xMsgErro:="028 - Cupom já totalizado."

ElseIf (QualErro==029) ; xMsgErro:="029 - Necessário totalizar cupom antes de fechar."

ElseIf (QualErro==030) ; xMsgErro:="030 - Troco não realizado."

ElseIf (QualErro==031) ; xMsgErro:="031 - Necessário programar legenda."

ElseIf (QualErro==032) ; xMsgErro:="032 - Acréscimo inválido."

ElseIf (QualErro==033) ; xMsgErro:="033 - Desconto inválido."

ElseIf (QualErro==034) ; xMsgErro:="034 - Repetição de desconto inválida."

ElseIf (QualErro==035) ; xMsgErro:="035 - IOF não habilitado em MIT."

ElseIf (QualErro==036) ; xMsgErro:="036 - Não permitido desconto em ISSQN."

// cupom fiscal nao vinculado - 100 a 149

ElseIf (QualErro==100) ; xMsgErro:="100 - Cupom não vinculado não aberto."

ElseIf (QualErro==101) ; xMsgErro:="101 - Cupom não vinculado sendo emitido."

ElseIf (QualErro==102) ; xMsgErro:="102 - Comando não permitido durante cupom não fiscal não vinculado."

ElseIf (QualErro==103) ; xMsgErro:="103 - Necessário abrir cupom não fiscal."

ElseIf (QualErro==104) ; xMsgErro:="104 - Já houve lançamento em acumulador positivo."

ElseIf (QualErro==105) ; xMsgErro:="105 - Já houve lançamento em acumulador negativo."

// Cupom vinculado (150 a 199)

ElseIf (QualErro==150) ; xMsgErro:="150 - Cupom vinculado não aberto."

ElseIf (QualErro==151) ; xMsgErro:="151 - Cupom vinculado sendo emitido."

ElseIf (QualErro==152) ; xMsgErro:="152 - Não há cupom vinculado para ser emitido."

ElseIf (QualErro==153) ; xMsgErro:="153 - Cupom vinculado pendente. Pendências precisam ser emitidas."

ElseIf (QualErro==154) ; xMsgErro:="154 - Excesso de cupons vinculados pendentes (máximo 30 pendências)."

ElseIf (QualErro==155) ; xMsgErro:="155 - Não existem vínculos programados na impressora. "

ElseIf (QualErro==156) ; xMsgErro:="156 - Excedeu número de vias."

ElseIf (QualErro==157) ; xMsgErro:="157 - COO não existe."

// Relatório Gerencial (200 a 249)

ElseIf (QualErro==200) ; xMsgErro:="200 - Relatório Gerencial não aberto."

ElseIf (QualErro==201) ; xMsgErro:="201 - Relatório Gerencial sendo emitido."

ElseIf (QualErro==202) ; xMsgErro:="202 - Relatório Gerencial não cadastrado (novo convênio)."

// Movimento (250 a 299)

ElseIf (QualErro==250) ; xMsgErro:="250 - Redução Z já emitida. Impressora inoperante até 0:00 horas."

ElseIf (QualErro==251) ; xMsgErro:="251 - É necessário executar redução Z."

ElseIf (QualErro==252) ; xMsgErro:="252 - Dia já aberto."

ElseIf (QualErro==253) ; xMsgErro:="253 - Dia não aberto."

ElseIf (QualErro==254) ; xMsgErro:="254 - Necessário executar Leitura X."

ElseIf (QualErro==255) ; xMsgErro:="255 - Posição da tabela de alíquotas já ocupada."

ElseIf (QualErro==256) ; xMsgErro:="256 - A tabela de pagamentos não foi inicializada na impressora."

// Autenticação (300 a 349)

ElseIf (QualErro==300) ; xMsgErro:="300 - Autenticação não permitida."

ElseIf (QualErro==301) ; xMsgErro:="301 - Excedeu às repetições de autenticação."

// Relógio (350 a 399)

ElseIf (QualErro==350) ; xMsgErro:="350 - Entrada no horário de verão não pode provocar mudança de data."

ElseIf (QualErro==351) ; xMsgErro:="351 - Não foi emitida Redução Z."

ElseIf (QualErro==352) ; xMsgErro:="352 - O relógio já está em horário de verão."

ElseIf (QualErro==353) ; xMsgErro:="353 - O relógio não está em horário de verão."

ElseIf (QualErro==354) ; xMsgErro:="354 - Não é possível ajustar um horário inferior ao da redução Z."

ElseIf (QualErro==355) ; xMsgErro:="355 - Excedeu o tempo de execução do comando."

ElseIf (QualErro==356) ; xMsgErro:="356 - Data inválida."

ElseIf (QualErro==357) ; xMsgErro:="357 - Hora inválida."

ElseIf (QualErro==358) ; xMsgErro:="358 - Ajuste de hora diário já foi realizado."

// Comunicação (400 a 449)

ElseIf (QualErro==400) ; xMsgErro:="400 - Porta não aberta."

ElseIf (QualErro==401) ; xMsgErro:="401 - Erro na comunicação serial."+CRLF+CRLF+"Iniciar porta da Impressora."

ElseIf (QualErro==402) ; xMsgErro:="402 - Detectado algum problema na impressora (paper jam, sobretensão, etc)."

ElseIf (QualErro==403) ; xMsgErro:="403 - Erro - Time Out - Computador não consegue estabelecer comunicação."

// Papel (450 a 499)

ElseIf (QualErro==450) ; xMsgErro:="450 - Fim de papel."

ElseIf (QualErro==451) ; xMsgErro:="451 - Papel acabando."

// Cheques (500 a 600)

ElseIf (QualErro==500) ; xMsgErro:="500 - Cheque não inserido."

ElseIf (QualErro==501) ; xMsgErro:="501 - Não permitido na impressão de cheque."

ElseIf (QualErro==502) ; xMsgErro:="502 - Cheque: parâmetro fora de faixa."

ElseIf (QualErro==503) ; xMsgErro:="503 - Cheque: erro no campo valor."

ElseIf (QualErro==504) ; xMsgErro:="504 - Cheque: erro no campo local de emissão."

ElseIf (QualErro==505) ; xMsgErro:="505 - Cheque: erro no formato do pacote."

ElseIf (QualErro==506) ; xMsgErro:="506 - Cheque: erro no campo data."

ElseIf (QualErro==507) ; xMsgErro:="507 - Cheque: erro no campo favorecido."

ElseIf (QualErro==508) ; xMsgErro:="508 - Cheque: erro no campo 1ª linha de comentário."

ElseIf (QualErro==509) ; xMsgErro:="509 - Cheque: erro no campo 2ª linha de comentário."

ElseIf (QualErro==510) ; xMsgErro:="510 - Cheque: número de caracteres das 2 linhas de comentários somados superior a 120."

ElseIf (QualErro==511) ; xMsgErro:="511 - Cheque: soma dos deslocamentos verticais superior a DLSV."

ElseIf (QualErro==512) ; xMsgErro:="512 - Cheque: valor não pode ser impresso nas dimensões especificadas."

ElseIf (QualErro==513) ; xMsgErro:="513 - Cheque: valor por extenso não pode ser impresso nas dimensões especificadas."

ElseIf (QualErro==514) ; xMsgErro:="514 - Cheque: favorecido não pode ser impresso nas dimensões especificadas."

ElseIf (QualErro==515) ; xMsgErro:="515 - Cheque: data e local não podem ser impressos nas dimensões especificadas."

ElseIf (QualErro==516) ; xMsgErro:="516 - Cheque: 1ª linha de comentário não pode ser impressa nas dimensões especificadas."

ElseIf (QualErro==517) ; xMsgErro:="517 - Cheque: 2ª linha de comentário não pode ser impressa nas dimensões especificadas."

ElseIf (QualErro==518) ; xMsgErro:="518 - Cheque: caractere de preenchimento inválido."

ElseIf (QualErro==519) ; xMsgErro:="519 - Cheque: primeira linha de extenso em branco. "

ElseIf (QualErro==520) ; xMsgErro:="520 - Está em estado de impressão de cheque."

ElseIf (QualErro==521) ; xMsgErro:="521 - Não está em estado de impressão de cheque."

ElseIf (QualErro==522) ; xMsgErro:="522 - Necessário inserir cheque."

ElseIf (QualErro==523) ; xMsgErro:="523 - Erro de leitura de CMC7."

ElseIf (QualErro==524) ; xMsgErro:="524 - Banco não cadastrado."

ElseIf (QualErro==525) ; xMsgErro:="525 - Erro cadastro dos bancos. Arquivo BANCO ou equivalente."

ElseIf (QualErro==526) ; xMsgErro:="526 - Excedeu o tamanho do extenso."

ElseIf (QualErro==527) ; xMsgErro:="527 - Moeda não cadastrada."

ElseIf (QualErro==528) ; xMsgErro:="528 - Usuário deve virar o cheque para realizar impressão no verso."

// Erros de sintaxe (acima de 800)

ElseIf (QualErro==800) ; xMsgErro:="800 - Intervalo inconsistente."

ElseIf (QualErro==801) ; xMsgErro:="801 - A string TOTAL não é aceita."

ElseIf (QualErro==802) ; xMsgErro:="802 - Argumentos inválidos."

ElseIf (QualErro==803) ; xMsgErro:="803 - Comando inexistente."

ElseIf (QualErro==804) ; xMsgErro:="804 - Sintaxe de comando errada."

ElseIf (QualErro==805) ; xMsgErro:="805 - Comando desabilitado."

ElseIf (QualErro==806) ; xMsgErro:="806 - Comando só aceito em intervenção fiscal."

ElseIf (QualErro==807) ; xMsgErro:="807 - Comando enviado fora da seqüência lógica da impressora."+CRLF+CRLF+"Provavelmete esteja enviando um comando que já foi efetuado."

ElseIf (QualErro==808) ; xMsgErro:="808 - Atributo de formatação inválido."

ElseIf (QualErro==809) ; xMsgErro:="809 - Função não implementada."

ElseIf (QualErro==810) ; xMsgErro:="810 - Parâmetro não aceito pelo ecf."

ElseIf (QualErro==811) ; xMsgErro:="811 - Informação não disponibilizada pelo ecf."

Else

xMsgErro:=AllTrim(Str(QualErro))+ " - Erro não identificado"

EndIF

EndIf

MsgInfo(xMsgErro+" ", "Atenção")

Return(.t.)

Oliveira, Sérgio A.

PERSONAL Comp. e Sitemas.id=green>

Lins - SP ** sergio@personal.com.br

FWH 2.5, xharbour 0.99.4, brMake

Link to comment
Share on other sites

Ok. Tambem estou com esse erro, ou sejam: Usando ECM32M.DLL

quanto mando o Opencif() nao me retorna nada e dai nao consigo executar nenhum comando.

Quanto a AFRAC consigo mandar todos os comandos, menos o Venderitem, que me retorna erro nos parametros.

Gostaria que alguem que usa a Afrac postasse uma exemplo prático da venda de um item conforme a declaracao acima postada.

Obrigado

Link to comment
Share on other sites

Edvaldo,

//----- Imprimir itens da venda

sele VEN

set order to 1

seek vnupd

vdesc:=strzero(VEN->desc,16)

sele VEI

set order to 1

cUnid:="un"

nVDesc:=strtran(str(VEN->desc,2),",",".")

nVDesc:=StrZero(Val(nVDesc),16,2)

seek vnupd

do while VEI->nupd=vnupd

select PRO

seek VEI->codpro

sele VEI

cCodProduto:=padl(VEI->codpro,13,"0")

cDescProduto:=left(PRO->nome,38)

nQuantidade:=strtran(str(VEI->quant,2),",",".")

nQuantidade:=StrZero(Val(nQuantidade),16,2)

nPreco:=strtran(str(VEI->preun,2),",",".")

nPreco:=StrZero(Val(nPreco),16,2)

nTotal:=StrZero(Val(nQuantidade)*Val(nPreco),16,2)

if PRO->icm=17

cTrib:="MT03"

elseif PRO->icm=25

cTrib:="MT04"

elseif PRO->icm=12

cTrib:="MT02"

elseif PRO->icm=7 // .or. PRO->icm=5

cTrib:="MT01"

elseif PRO->icm=5

cTrib:="MT01"

elseif PRO->icm<1

cTrib:="MI00"

endif

cDescProduto:=PRO->nome

MsgRun("Imprimindo ítem...","Aguarde...",{|| nRet:=AFRAC_VenderItem( cCodProduto, ;

cDescProduto, ;

nQuantidade, ;

nPreco, ;

"1", ;

"1", ;

nVDesc, ;

nTotal, ;

cTrib, ;

cUnid, ;

"0")})

if nRet>0

Mensag_ECF(@nRet)

endif

skip

enddo

//--------------------

Abraços,

Kleyber Derick

xHarbour 0.99.4 + FWH 2.5

Visite São Luís - MA A Ilha dos Amores

Link to comment
Share on other sites

  • 4 months later...

Pessoal, não configo fazer a funcao AFRAC_PegarCodigoErro...

Já declarei das seguintes maneiras:


DLL32 FUNCTION A_RETORNOI( @id=green>Codigo AS PTRid=green>, @id=green>Msg AS PTRid=green>, @id=green>Act AS PTRid=green>);

AS _INT PASCAL FROM "AFRAC_PegarCodigoErro" ;

LIB "ECFAFRAC.DLL"

DLL32 FUNCTION A_RETORNOI( @id=green>Codigo AS STRINGid=green>, @id=green>Msg AS STRINGid=green>, @id=green>Act AS STRINGid=green>);

AS _INT PASCAL FROM "AFRAC_PegarCodigoErro" ;

LIB "ECFAFRAC.DLL"

DLL32 FUNCTION A_RETORNOI( Codigo AS STRINGid=green>, Msg AS STRINGid=green>, Act AS STRINGid=green>);

AS _INT PASCAL FROM "AFRAC_PegarCodigoErro" ;

LIB "ECFAFRAC.DLL"

id=code>id=code>

para executar eu coloquei assim:


//-- ja tentei com e sem @

cCodigo := Space(06)

cBuffer_Ret := Space(81)

cAct := Space(07)

A_RETORNOI(@cCodigo , @cBuffer_Ret , @cAct)

id=code>id=code>

Mas não funciona ¬¬

Abraços icon_smile_wink.gif

Anderson.OL(Space MSN)

Itaocara - RJ

//Clpr 5.3b/FW 2.6/WS/Blnk 7.0/Med//

Link to comment
Share on other sites

*-------------------------*

DLL32 FUNCTION AFRAC_AbrirPorta( Porta AS PTR ) AS LONG lib xDll

DLL32 FUNCTION AFRAC_FecharPorta() AS LONG lib xDll

DLL32 FUNCTION AFRAC_LeituraX() AS LONG lib xDll

DLL32 FUNCTION AFRAC_ReducaoZ( Dt AS LPSTR ) AS LONG lib xDll

DLL32 FUNCTIOn AFRAC_AjustarRelogio( Hr AS LPSTR) AS LONG lib xDll

DLL32 FUNCTION AFRAC_EntrarHorarioVerao() AS LONG lib xDll

DLL32 FUNCTION AFRAC_SairHorarioVerao() AS LONG lib xDll

DLL32 FUNCTION AFRAC_AbrirCupom() AS LONG lib xDll

DLL32 FUNCTION AFRAC_CancelarCupom() AS LONG lib xDll

DLL32 FUNCTION AFRAC_LerAliquotas( Pt AS STRING ) AS LONG lib xDll

DLL32 FUNCTION AFRAC_LerTodasFormasPagamento( Pt AS STRING ) AS LONG lib xDll

DLL32 FUNCTION AFRAC_CancelarItem(Item AS STRING) AS LONG lib xDll

DLL32 FUNCTION AFRAC_FecharCupom(nVinc AS BOOL) AS LONG lib xDll

DLL32 FUNCTION AFRAC_InformarMensagemCupom(nMensa AS STRING) AS LONG lib xDll

DLL32 Function AFRAC_Fabricante(@mFab AS STRING, @mCro AS STRING) AS LONG lib xDll

DLL32 FUNCTIOn AFRAC_FormaPagamento( nForma AS STRING ,;

nIndice AS STRING ,;

nValor AS STRING ,;

nMensa AS STRING) AS LONG lib xDll

DLL32 Function AFRAC_PegarCodigoErro( @Cod AS STRING,;

@Msg AS STRING,;

@Acao AS PTR) AS LONG lib xDll

DLL32 Function AFRAC_LerInformacaoImpressora(@Cod AS STRING,;

@Msg AS STRING) AS LONG lib xDll

DLL32 FUNCTION AFRAC_AcrescimoDescontoCupom( nDscCup AS STRING, ;

nPrcCup AS STRING, ;

nVlrCup AS STRING ) AS LONG lib xDll

DLL32 FUNCTION AFRAC_FecharAcrescimoDesconto( nDscFch AS STRING, ;

nPrcFch AS STRING, ;

@nVlrFch AS STRING ) AS _INT lib xDll

DLL32 FUNCTION AFRAC_VenderItem( nCodigo AS STRING, ; // ( Com tamanho de 20 )

nDescr AS STRING ,; // ( com Tamanho de 200 )

nQtde AS STRING ,; // ( com Tamanho de 16 Ex: 12.34 Kg = "0000000000012.34"

nVlUnit AS STRING ,; // ( com Tamanho de 16 Ex: R$ 2.34 Kg = "0000000000002.34"

nAcrDes AS STRING ,; // ( ou String ou LPSTR ) ("0"=Acrescimo, "1"=Desconto)

nPerVal AS STRING ,; // ( ou String ou LPSTR ) ("0"=Percentual, "1"=Valor)

nVlAcDes AS STRING ,; // ( com Tamanho de 16 Ex: R$ 0.12 = "0000000000000.12"

nVlTotal AS STRING ,; // ( com Tamanho de 16 Ex: R$ 123.45 = "0000000000123.45"

nAliq AS STRING ,; // ( ou LPSTR Ex: "M1200" = Aliquota de 12 % M=Mercadoria )

nUnid AS STRING ,;

nFImp AS STRING) ; // ( .T. para imprimir em uma unica linha )

AS _INT PASCAL LIB xDll

Oliveira, Sérgio A.

PERSONAL Comp. e Sitemas.id=green>

Lins - SP ** sergio@personal.com.br

FWH 2.5, xharbour 0.99.4, SqlLib, MySql, brMake.

TWBrowse(),C5Menu,vPrinter

Link to comment
Share on other sites

Não é necessario informar PASCAL FROM "AFFRAC_PegarCodigoErro" ????

Testei da maneira que vc me instruiu e exibe uma mensagem de erro

Error description: Error BASE/1003 Variable does not exist: XDLL

Sendo que eu declaro e aponto um valor para XDLL:


Local XDLL

XDLL := LoadLib32("ECFAFRAC.DLL")

id=code>id=code>

E agora???

Abraços icon_smile_wink.gif

Anderson.OL(Space MSN)

Itaocara - RJ

//Clpr 5.3b/FW 2.6/WS/Blnk 7.0/Med//

Link to comment
Share on other sites

xDll:=Loadlib32("AfracQuattro.dll")

veja bem, a AFRAC, não é uma .DLL, e sim voce ter .DLL de impressoras com comandos unificados.

No caso acima, estou usando uma impressora QUATTRO IIF... para tanto, baixei do site da QUATTRO, a .DLL correspondente a AFRAC.

Isto nao quer dizer que todas as impressoras tem e podem usar a AFRAC.

No caso da sua, parece ser padrão mercaf, teriar que baixar do site deles a .DLL correspondente a AFRAC.

Oliveira, Sérgio A.

PERSONAL Comp. e Sitemas.id=green>

Lins - SP ** sergio@personal.com.br

FWH 2.5, xharbour 0.99.4, SqlLib, MySql, brMake.

TWBrowse(),C5Menu,vPrinter

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
×
×
  • Create New...