-
Total de ítens
371 -
Registro em
-
Última visita
Tipo de Conteúdo
Blocks
Notes ACBrLibNFe
Fóruns
Downloads
Calendário
Tudo que tiagopassarella postou
-
Bom Dia Amigos... estou com um problema serio e nao sei como resolver... espero que possam me ajudar... Eu fiz um projeto para uso do microterminal que tem funcionado muito bem ate o momento, porem ate agora so usei com 1 microterminal agora senti a necessidade de colocar 2... ai comecou o problema... quando os dois microterminais estao em uso simultaneamente, comeca dar pau em tudo e travar tudo... sera que alguem consegue me ajudar ? vou postar a baixo o meu codigo pra ver se existe algo errado.. att Tiago Passarella procedure TFrmPrincipal.ACBrMTer1RecebeDados(const IP: AnsiString; var Recebido: AnsiString; var EchoMode: TACBrMTerEchoMode); begin Memo1.Lines.Add('IP: ' + IP + ' - Recebido :' + Recebido); if Recebido = #13 then begin if Passou=False then begin AvaliarRespostaTerminal(IP, Recebido); end; end else if Recebido = #$12 then begin AtualizaConexoes; _RespostaMicroterminal := ''; Passou := False; Operador := 0; Comanda := 0; AlterarEstadoTerminal(IP,1); end else if Recebido = #$1B then begin AtualizaConexoes; _RespostaMicroterminal := ''; Passou := False; Operador := 0; Comanda := 0; AlterarEstadoTerminal(IP,1); end else if Recebido = #8 then begin AtualizaConexoes; _RespostaMicroterminal := ''; Passou := False; Operador := 0; Comanda := 0; AlterarEstadoTerminal(IP,1); end else begin _RespostaMicroterminal := _RespostaMicroterminal + Recebido; if (_EstadoMicroterminal=2) and (Pos(#$D,_RespostaMicroterminal)>0) then // LE COMANDA E CONFERE begin _RespostaMicroterminal := StringReplace(_RespostaMicroterminal, #$D#$A, '', [rfReplaceAll]); AvaliarRespostaTerminal(IP, Recebido); end else if (_EstadoMicroterminal=3) and (Pos(#$D,_RespostaMicroterminal)>0) then // LE PRODUTO begin _RespostaMicroterminal := StringReplace(_RespostaMicroterminal, #$D#$A, '', [rfReplaceAll]); AvaliarRespostaTerminal(IP, Recebido); end; end; end; procedure TFrmPrincipal.AtualizaConexoes; var I: Integer; Vl:integer; JaExiste:Boolean; IpMicroterminalX:string; IpMicroterminalY:string; begin IpMicroterminalX := ''; IpMicroterminalY := ''; with ACBrMTer1.TCPServer.ThreadList.LockList do try for I := 0 to Count - 1 do begin JaExiste := false; IpMicroterminalX := ''; IpMicroterminalY := ''; with TACBrTCPServerThread(Items[I]) do if Active then begin for vl := 0 to clbConectados.Items.Count -1 do begin IpMicroterminalX := StringReplace(clbConectados.Items[Vl], #$D#$A, '', [rfReplaceAll]); IpMicroterminalX := StringReplace(IpMicroterminalX, #13#10, '', [rfReplaceAll]); if Trim(IpMicroterminalX) = Trim(TCPBlockSocket.GetRemoteSinIP) then begin JaExiste := true; end; end; if JaExiste=false then begin clbConectados.Items.Add(TCPBlockSocket.GetRemoteSinIP); AlterarEstadoTerminal(TCPBlockSocket.GetRemoteSinIP,1); end; end; end; finally ACBrMTer1.TCPServer.ThreadList.UnlockList; end; Application.ProcessMessages; end; procedure TFrmPrincipal.AvaliarRespostaTerminal(aIP: AnsiString; var aString: AnsiString); var Qry:TSQLQuery; Quantidade:Extended; VL:Integer; begin case _EstadoMicroterminal of 1: // PEDE OPERADOR begin try Qry := TSQLQuery.Create(nil); Qry.SQLConnection := DataModule1.Conexao; Qry.SQL.Text := 'SELECT ID,NOME FROM TBVENDEDORES WHERE ID=:p1'; QRY.ParamByName('p1').AsInteger := StrToInt(_RespostaMicroterminal); QRY.Open; if not QRY.IsEmpty then begin ACBrMTer1.EnviarTexto(aIP,' - ' + QRY.FieldByName('NOME').AsString); Operador := qry.FieldByName('ID').AsInteger; Sleep(500); END ELSE begin Qry.SQL.Clear; Qry.Close; Qry.Free; Operador := 0; _RespostaMicroterminal := ''; ACBrMTer1.LimparDisplay(aIP); ACBrMTer1.EnviarTexto(aIP, 'OPERADOR NAO CADASTRADO'); Sleep(1000); Passou := false; ACBrMTer1.LimparDisplay(aIP); AlterarEstadoTerminal(aIP,1); end; Qry.SQL.Clear; Qry.Close; Qry.Free; AtualizaConexoes; aString := ''; _RespostaMicroterminal := ''; Passou := False; AlterarEstadoTerminal(aIP,2); except Qry.SQL.Clear; Qry.Close; Qry.Free; Operador := 0; _RespostaMicroterminal := ''; ACBrMTer1.LimparDisplay(aIP); ACBrMTer1.EnviarTexto(aIP, 'OPERADOR NAO CADASTRADO'); Sleep(1000); Passou := false; ACBrMTer1.LimparDisplay(aIP); AlterarEstadoTerminal(aIP,1); end; end; 2: // PEDE COMANDA begin try Comanda := StrToInt(_RespostaMicroterminal); aString := ''; _RespostaMicroterminal := ''; Passou := False; AlterarEstadoTerminal(aIP,3); except Comanda := 0; _RespostaMicroterminal := ''; ACBrMTer1.LimparDisplay(aIP); ACBrMTer1.EnviarTexto(aIP, 'COMANDA INVALIDA'); Sleep(1000); aString := ''; Passou := True; ACBrMTer1.LimparDisplay(aIP); AlterarEstadoTerminal(aIP,2); end; end; 3: // PEDE ITEM begin P := ConsultaProduto(_RespostaMicroterminal); if P.CODIGO='' then begin _RespostaMicroterminal := ''; ACBrMTer1.LimparDisplay(aIP); ACBrMTer1.EnviarTexto(aIP, 'PRODUTO NAO CADASTRADO'); Sleep(1000); aString := ''; Passou := False; ACBrMTer1.LimparDisplay(aIP); AlterarEstadoTerminal(aIP,3); end else begin Passou := False; aString := ''; _RespostaMicroterminal := ''; Passou := False; ACBrMTer1.LimparDisplay(aIP); AlterarEstadoTerminal(aIP,4); end; end; 4: //LANCA QUANTIDADE begin if _RespostaMicroterminal='' then AlterarEstadoTerminal(aIP,4); Quantidade := 0; try Quantidade := StrToFloat(_RespostaMicroterminal.Replace('.','')); except AlterarEstadoTerminal(aIP,4); end; if Quantidade=0 then BEGIN _RespostaMicroterminal := ''; ACBrMTer1.LimparDisplay(aIP); ACBrMTer1.EnviarTexto(aIP, 'QUANTIDADE INVALIDA'); Sleep(1000); aString := ''; Passou := False; ACBrMTer1.LimparDisplay(aIP); AlterarEstadoTerminal(aIP,3); end ELSE BEGIN try Qry := TSQLQuery.Create(nil); Qry.SQLConnection := DataModule1.Conexao; Qry.SQL.Text :='Insert Into TBCOMANDA_DETALHE(MESA,DATA,ITEM,ID_COMANDA,ID_VENDEDOR,CODIGO_INTERNO,QTDE,VALOR,TOTAL,'+ 'TIPO_COMANDA,UNIDADE,PRODUTO,GTIN,ECF_ICMS_ST,STATUS,SEL,CANCELADO,CODGRUPO,HORA,MEIAPIZZA,IDPIZZA)VALUES(:pMESA,:pDATA,:pITEM,:pID_COMANDA,:pID_VENDEDOR,:pCODIGO_INTERNO,'+ ':pQTDE,:pVALOR,:pTOTAL,:pTIPO_COMANDA,:pUNIDADE,:pPRODUTO,:pGTIN,:pECF_ICMS_ST,:pSTATUS,:pSEL,:pCANCELADO,:pCODGRUPO,:pHORA,:pMEIAPIZZA,:pIDPIZZA)'; Qry.ParamByName('pMESA').AsInteger := Comanda; Qry.ParamByName('pDATA').AsDate := Date ; Qry.ParamByName('pITEM').AsInteger := 0; Qry.ParamByName('pID_COMANDA').AsInteger := 0; Qry.ParamByName('pID_VENDEDOR').AsInteger := Operador; Qry.ParamByName('pCODIGO_INTERNO').AsString := P.CODIGO; Qry.ParamByName('pQTDE').AsFloat := Quantidade; Qry.ParamByName('pVALOR').AsFloat := P.VENDA; Qry.ParamByName('pTOTAL').AsFloat := Quantidade * P.VENDA ; Qry.ParamByName('pTIPO_COMANDA').AsString := 'MESA'; Qry.ParamByName('pUNIDADE').AsString := P.UNIDADE; Qry.ParamByName('pPRODUTO').AsString := P.DESCRICAO; Qry.ParamByName('pGTIN').AsString := P.CODIGO; Qry.ParamByName('pECF_ICMS_ST').AsString := P.TECF; Qry.ParamByName('pSTATUS').AsString := 'A'; Qry.ParamByName('pSEL').AsString := 'S'; Qry.ParamByName('pCANCELADO').AsString := 'N'; Qry.ParamByName('pCODGRUPO').AsInteger := StrToInt(P.GRUPO); Qry.ParamByName('pHORA').AsString := TimeToStr(NOW); Qry.ParamByName('pMEIAPIZZA').AsString := 'NAO'; Qry.ParamByName('pIDPIZZA').AsInteger := 0; Qry.ExecSQL(); Qry.SQL.Clear ; finally Qry.Close; Qry.Free; GravaComandaPDV(Comanda); end; aString := ''; Passou := False; _RespostaMicroterminal := ''; ACBrMTer1.LimparDisplay(aIP); AlterarEstadoTerminal(aIP,3); END; end; end; end;
-
alguem sabe me responder ????
-
Boa tarde amigos... uma duvida... eu vi que no ACBRMter ja tem a função para solicitar o peso da balanca conectada minha duvida é... essa funcao serve para qualquer modelo de balanca ?? basta ela estar conectada no micro terminal ? pois no exemplo do ACBR vi que o combobox de modelo da balanca fica vazio... att Tiago Passarella
-
ACBRMter - esta pulando uma linha nas chamadas
tiagopassarella replied to tiagopassarella's tópico in ACBrTCP
ja resolvi... é so colocar a seguinte linha antes de fazer a chamada a cima... aString := ''; mesmo assim obrigado a todos.. -
Bom Dia pessoal... vamos ver se vcs conseguem me ajudar... eu estou implantando o Micro terminal em meu sistema, e a minha dificuldade esta que sempre que mando um texto ele fica um poco cortado pois da impressao que esta pulando uma linha apos o texto... vou postar aki o meu codigo pra ver se vcs podem me ajudar... e um print do texto como ta ficando no micro terminal... este e o codigo para alterar o estado do micro terminal... function TFrmPrincipal.AlterarEstadoTerminal(aIP: String; aEstado: Integer): Boolean; begin Result := True; try ACBrMTer1.LimparDisplay(aIP); _EstadoMicroterminal := aEstado; case aEstado of 0: Exit; 1: ACBrMTer1.EnviarTexto(aIP, 'Operador: '); 2: ACBrMTer1.EnviarTexto(aIP, 'Comanda: '); 3: ACBrMTer1.EnviarTexto(aIP, 'Item: '); end; finally Result := false; end; end; aqui e o que ele faz com as chamadas... procedure TFrmPrincipal.AvaliarRespostaTerminal(aIP: AnsiString; var aString: AnsiString); var Qry:TSQLQuery; begin case _EstadoMicroterminal of 1: // PEDE OPERADOR begin Qry := TSQLQuery.Create(nil); qry.SQLConnection := DataModule1.Conexao; qry.SQL.Text := 'SELECT ID,NOME FROM TBVENDEDORES WHERE ID=:p1'; QRY.ParamByName('p1').AsInteger := StrToInt(_RespostaMicroterminal); QRY.Open; if not QRY.IsEmpty then begin ACBrMTer1.EnviarTexto(aIP,' - ' + QRY.FieldByName('NOME').AsString); Sleep(1000); END ELSE begin Qry.SQL.Clear; Qry.Close; Qry.Free; _RespostaMicroterminal := ''; ACBrMTer1.LimparDisplay(aIP); ACBrMTer1.EnviarTexto(aIP, 'OPERADOR NAO CADASTRADO'); Sleep(2000); Passou := false; ACBrMTer1.LimparDisplay(aIP); AlterarEstadoTerminal(aIP,1); end; Qry.SQL.Clear; Qry.Close; Qry.Free; _RespostaMicroterminal := ''; Passou := true; AlterarEstadoTerminal(aIP,2); // AKI ESTA O PROBLEMA end; 2: // PEDE COMANDA begin end; 3: // PEDE ITEM begin end; end; end; O PROBLEMA ESTA NESSA PARTE... AlterarEstadoTerminal(aIP,2); // AKI ESTA O PROBLEMA apos ele entrar ai ele volta pedindo o numero da comanda... e junto com a solicitação ele esta indo um ENTER nao sei por que... ai o texto fica cortado conforme imagem abaixo espero que tenha dado pra entender o que esta ocorrendo, e espero que possam me ajudar. desde ja muito grato... att Tiago Passarella
-
italo vamos la... desde o inicio... 1 - estava voltando um erro unespected cpf='' 2 - atualizei os fontes acbr e os schemas 3 - voltou erro de serie incompativel 4 - com a serie 920 voltou o erro emissor nao habilitado... acho qeu agora ficou explicado... so quero saber se o erro emissor nao habilitado e realmente a falta de cadastro do cliente na sefaz ou se eu tenho de fazer algo...
-
sim anexei com serie 1 ai ajustei para 920 e agora voltou emissor nao habilitado para emissao de mdfe
-
serie 920 (pois o emitente e produtor rual ou seja tem CPF) esta voltando emissor nao habilitado para emissao de MDF-e
-
ja coloquei a serie 920 e agora voltou emissor nao habilitado para emissao de mdf-e... seria o cliente nao estar credenciado ???
-
eu fiz isso mas continuo com erro segue o xml em anexo para analise... pois nao consigo emitir a mdfe... 31181200004433331813580010000000011000000010-mdfe.xml
-
Boa tarde pessoa... estou com um problema em um cliente que é produtor rural ou seja ele tem CPF e instricao estadual... eu preciso emitir mdfe pra ele... e esta dando erro... por ele ter cpf e nao nao cnpj... como devo proceder pra emitir uma MDF-e tendo o emitente um CPF ??? desde ja agradeço a atenção de todos...
-
entao nao preciso fazer nada de alteração ? somente mudar a serie da nfe dentro da faixa que o manual pede ?.... nao pensei que fosse tao simples assim...rssss obrigado pela ajuda....rs
-
Boa Tarde Pessoal... estou lendo a respeito da NFA-e, e ja entendi acredito que 80% da nota tecnica... porem gostaria de saber como aplicar isso no ACBR... o ACBR faz a emissao da NFA-e ? nota fiscal do produtor rural... tenho clientes que vao precisar e em meu estado MG ja esta disponivel para utilização... se o ACBR estiver preparado tem como passar quais procedimentos devo aditar ?.. o danfe sera o mesmo da nfe ?.. att Tiago Passarella
-
Bom Dia pessoal.... estou usando o ACBRETQ e estou com um problema estranho.... nao sei como resolver estou com uma impressora zebra tlp 2844... e sempre que mando uma impressão, ela imprime uma etiqueta e pula outra imprime uma e pula outra e assim por diante... o qeu pode ser ? att Tiago Passarella
-
CteOS - rejeição 999 erro nao catalogado
tiagopassarella replied to tiagopassarella's tópico in ACBrCTe
sim é que o cliente em questao emite para emrpesa como se fosse 1 no valor total... ai eu deixo a vontade pois ele prefere assim... bom se e problema da sefaz menos mau pq eu ja nao estava mais sabendo como tratar isso... -
CteOS - rejeição 999 erro nao catalogado
tiagopassarella replied to tiagopassarella's tópico in ACBrCTe
segue xmls em anexo para analise... 1-env-lot-soap.xml 595 1-env-lot.xml 1-pro-lot-soap.xml 1-pro-lot.xml -
Boa Tarde amigos .... estou com um problema em um cliente e nao sei mais como resolver... sempre que vai emitir uma CTeOS da esse erro 999 - Erro Nao Catalogado. a cada 1- cte uma valida... ja trocamos o certificado de A3 para A1 para ver e o erro persiste... alguem consegue me ajudar ??? Sou do estado de MG... att Tiago Passarella
-
problema solucionado... agora sim esta salvando o xml corretamente... obrigado pela ajuda italo... att Tiago Passarella
-
entendi italo... vou fazer o teste aki e retorno no post dizendo como foi... obrigado
-
segue o codigo que estou usando... e o xml gerado em anexo... TDatamodule.ACBrNFSe1.ConsultarNFSeporRps(TDatamodule.ACBrNFSe1.NotasFiscais.Items[0].NFSe.IdentificacaoRps.Numero,TDatamodule.ACBrNFSe1.NotasFiscais.Items[0].NFSe.IdentificacaoRps.Serie,TipoRPSToStr(TDatamodule.ACBrNFSe1.NotasFiscais.Items[0].NFSe.IdentificacaoRps.Tipo)); vXML := TStringStream.Create; TDatamodule.ACBrNFSe1.NotasFiscais.Items[0].GravarStream(vXML); GravaXMLBco(dtSaida.Date,TmSaida,TDatamodule.ACBrNFSe1.NotasFiscais.Items[0].NFSe.Numero,VXML,tpNfse); vXML.Free; xml nfse.xml
-
entao esse seu caso é a NFE e no meu caso é a NFSE
-
boa tarde... estou com uma duvida e gostaria de saber se é possível.. os xmls da NFE, MDFE eu gravo em um banco de dados por stream... porem quando faço o mesmo procedimento com o xml da NFSE ele grava.. mas falta alguns dados... nao vem um Xml completo... ai quando vou gerar a impressao pelo xml da consulta faltam alguns dados... existe uma forma de capturar o XMl Completo da NFSe para gravação no bco de dados e futura consulta ? uso o WEBiSS. lembrando que ja tentei isso pelo modo sincrono e assincrono... att Tiago Passarella
-
Bom Dia pessoal... eu uso o acbrnfse ja a algum tempo... so que sempre tenho um problema muito chato... vez ou outro o caminho do xml aprovado muda... uma ora cria uma pasta nfse, ou ora vai pra uma pasta notas... em fim.. ai eu tenho de ficar sempre alterando esses caminhos no fonte... gostaria de saber se tem uma forma de eu controlar onde salvar o XML aprovado da prefeitura... pra um caminho fixo... idependende se vai criar uma pasta com arquivo deles ou nao... mas queria controlar isso... existe uma forma ? fico no aguardo... obrigado. att Tiago Passarella