Ir para conteúdo
  • Cadastre-se

nazarenoneto

Membros Pro
  • Total de ítens

    209
  • Registro em

  • Última visita

Tudo que nazarenoneto postou

  1. Amigo, acabei de fazer algumas alterações nos fontes que vc tinha anexo, tirei alguns erros. ACBrEPCBloco_F.pas ACBrEPCBloco_F_Class.pas
  2. Esta faltando apenas você implementar os métodos, sem a implementação fica dando erro. Ctrl + Shift + "c" o Delphi vai implementar os métodos que faltam ser implementados.
  3. Ok, posso ficar com Pis/Cofins. Então fico fazendo os merges e te enviando as Units alteradas, certo?
  4. Isaque, posso ficar com o SPED ICMS/IPI ou PIS/COFINS, porque é a minha realidade aqui na empresa. O que você acha? qual seria melhor?
  5. Isaque, eu posso ajudar, não expert nos fontes do ACBr mas posso me virar. Qual seria o tipo mais especifico de ajuda que esta procurando, seria para validar os fontes e "comitar" no repositório?
  6. Rapaz, o que eu fiquei sabendo foi que adiaram o PAF para o meio de 2012, acho que junho ou julho, não lembro direito, mas isso só para quem já tem ECF, para quem não tem, só consegue lacrar com o PAF.
  7. Gostaria que dessem uma analisada nas alterações que fiz. ACBrAAC.IdentPaf.OutrosArquivos essa propriedade são os arquivos usados pelo paf? Se sim, quando abro o arquivo e insiro algum arquivo com seu respectivo md5, que salvo o mesmo. E depois abro ele novamente não estava vindo os dados salvos no mesmo. Não sei se é permitido salvar a lista de arquivos no arquivo auxiliar, se for possivel eu implementei essa alteração. //Arquivo ACBrAAc.pas procedure TACBrAAC.AbrirArquivo ; var Ini: TMemIniFile; SL : TStringList; MS : TMemoryStream ; I : Integer ; S, R : AnsiString ; Linha, Ident : String ; Continua : Boolean ; CRC : Word ; begin GravaLog( 'AbrirArquivo'); Continua := True; if Assigned( fsOnAntesAbrirArquivo ) then fsOnAntesAbrirArquivo( Continua ); if not Continua then begin GravaLog( 'AbrirArquivo abortado' ); exit; end ; if NomeArquivoAux = '' then raise EACBrAAC_SemNomeArquivo.Create( ACBrStr('Nome do Arquivo não Informado em: ACBrAAC.NomeArquivoAux') ) ; if not FileExists( fsNomeCompleto ) then raise EACBrAAC_ArqNaoEncontrado.Create( ACBrStr( 'Arquivo Auxiliar Criptografado'+sLineBreak+ '"'+NomeArquivoAux+'"'+sLineBreak+ 'não encontrado') ); fsDtHrArquivo := FileDateToDateTime( FileAge( fsNomeCompleto ) ); // Lê arquivo de modo binário e transfere para a AnsiString = S // MS := TMemoryStream.Create; try MS.LoadFromFile( fsNomeCompleto ); MS.Position := 0; SetLength(S, MS.Size); MS.ReadBuffer(PChar(S)^, MS.Size); finally MS.Free; end; SL := TStringList.Create ; Ini := TMemIniFile.Create('') ; try // DEBUG // GravaLog('Arquivo Lido: '+sLineBreak+ S ); R := DesCriptografar( S ) ; // DEBUG //GravaLog('Arquivo Descriptografado: '+sLineBreak+ R ); SL.Text := R; Ini.SetStrings( SL ); if GravarDadosSH then begin fsIdentPAF.Empresa.Cep := Ini.ReadString('SH','Cep',''); fsIdentPAF.Empresa.Cidade := Ini.ReadString('SH','Cidade',''); fsIdentPAF.Empresa.CNPJ := Ini.ReadString('SH','CNPJ',''); fsIdentPAF.Empresa.Contato := Ini.ReadString('SH','Contato',''); fsIdentPAF.Empresa.Email := Ini.ReadString('SH','Email',''); fsIdentPAF.Empresa.Endereco := Ini.ReadString('SH','Endereco',''); fsIdentPAF.Empresa.IE := Ini.ReadString('SH','IE',''); fsIdentPAF.Empresa.IM := Ini.ReadString('SH','IM',''); fsIdentPAF.Empresa.RazaoSocial := Ini.ReadString('SH','Nome',''); fsIdentPAF.Empresa.Telefone := Ini.ReadString('SH','Telefone',''); fsIdentPAF.Empresa.Uf := Ini.ReadString('SH','Uf',''); end ; if GravarDadosPAF then begin fsIdentPAF.NumeroLaudo := Ini.ReadString('PAF','NumeroLaudo',''); // Número do Laudo fsIdentPAF.VersaoER := Ini.ReadString('PAF','VersaoER',''); // Versão do Roteiro Executado na Homologação fsIdentPAF.Paf.Nome := Ini.ReadString('PAF','Nome',''); // Nome do Sistema PAF fsIdentPAF.Paf.Versao := Ini.ReadString('PAF','Versao',''); // Versão do Sistema PAF fsIdentPAF.Paf.PrincipalExe.Nome := Ini.ReadString('PAF','NomeExe',''); // Nome do Principal EXE do PAF fsIdentPAF.Paf.PrincipalExe.MD5 := Ini.ReadString('PAF','MD5Exe',''); // MD5 do Principal EXE do PAF end ; fsIdentPAF.ArquivoListaAutenticados.MD5 := Ini.ReadString('PAF','MD5',''); // MD5 do arquivo que contem a lista de arquivos autenticados if GravarDadosPAF and GravarDadosSH then begin CRC := StringCrc16( fsIdentPAF.Empresa.RazaoSocial + fsIdentPAF.Empresa.CNPJ + fsIdentPAF.Empresa.IE + fsIdentPAF.Empresa.IM + fsIdentPAF.Paf.Nome + fsIdentPAF.Paf.Versao + fsIdentPAF.ArquivoListaAutenticados.MD5 ); if Ini.ReadInteger('CHK','CRC16',0) <> CRC then raise EACBrAAC_ArquivoInvalido.Create( ACBrStr('Arquivo: '+NomeArquivoAux+' inválido') ); end ; fsIdentPAF.ECFsAutorizados.Clear; I := 0 ; while True do begin Ident := 'ECF_'+IntToStrZero(I,4); Linha := Ini.ReadString( 'ECFs', Ident, '*FIM*' ); if Linha = '*FIM*' then break ; with fsIdentPAF.ECFsAutorizados.New do begin LinhaDados := Linha; end; Inc( I ) ; end ; //Inicio da Alteração fsIdentPAF.OutrosArquivos.Clear; I := 0 ; while True do begin Ident := 'ARQ_'+IntToStrZero(I,4); Linha := Ini.ReadString( 'ARQs', Ident, '*FIM*' ); if Linha = '*FIM*' then break ; with fsIdentPAF.OutrosArquivos.New do begin LinhaDados := Linha; end; Inc( I ) ; end ; //Fim da Alteração Params.Clear; I := 0 ; while True do begin Ident := 'L_'+IntToStrZero(I,4); Linha := Ini.ReadString( 'Params', Ident, '*FIM*' ); if Linha = '*FIM*' then break ; Params.Add( Linha ); Inc( I ) ; end ; if Assigned( fsOnDepoisAbrirArquivo ) then fsOnDepoisAbrirArquivo( Self ); finally Ini.Free ; SL.Free; end ; end ; procedure TACBrAAC.SalvarArquivo ; var Ini: TMemIniFile; SL : TStringList; I : Integer ; Ident : String ; ArqBak : String ; R : AnsiString ; Continua : Boolean ; CRC : Word ; begin GravaLog( 'GravarArqRegistro' ); Continua := True; if Assigned( fsOnAntesGravarArquivo ) then fsOnAntesGravarArquivo( Continua ); if not Continua then begin GravaLog( 'GravarArqRegistro abortado' ); exit; end ; if NomeArquivoAux = '' then raise EACBrAAC_SemNomeArquivo.Create( ACBrStr('Nome do Arquivo não Informado em: ACBrAAC.NomeArquivoAux') ) ; if GravarDadosSH then begin if (fsIdentPAF.Empresa.RazaoSocial = '') or (fsIdentPAF.Empresa.CNPJ = '') then raise EACBrAAC_ArquivoInvalido.Create( ACBrStr('SH_RazaoSocial e/ou SH_CNPJ não informados') ); end ; if GravarDadosPAF then begin if (fsIdentPAF.Paf.Nome = '') or (fsIdentPAF.Paf.Versao = '')then raise EACBrAAC_ArquivoInvalido.Create( ACBrStr('PAF_Nome e/ou PAF_Versao não informados') ); end ; SL := TStringList.Create ; Ini := TMemIniFile.Create( '' ) ; try if GravarDadosSH then begin Ini.WriteString('SH','CNPJ',fsIdentPAF.Empresa.CNPJ); Ini.WriteString('SH','Nome',fsIdentPAF.Empresa.RazaoSocial); Ini.WriteString('SH','Cep',fsIdentPAF.Empresa.Cep); Ini.WriteString('SH','Cidade',fsIdentPAF.Empresa.Cidade); Ini.WriteString('SH','Contato',fsIdentPAF.Empresa.Contato); Ini.WriteString('SH','Email',fsIdentPAF.Empresa.Email); Ini.WriteString('SH','Endereco',fsIdentPAF.Empresa.Endereco); Ini.WriteString('SH','IE',fsIdentPAF.Empresa.IE); Ini.WriteString('SH','IM',fsIdentPAF.Empresa.IM); Ini.WriteString('SH','Telefone',fsIdentPAF.Empresa.Telefone); Ini.WriteString('SH','Uf',fsIdentPAF.Empresa.Uf); end ; if GravarDadosPAF then begin Ini.WriteString('PAF','Nome',fsIdentPAF.Paf.Nome); // Nome do Sistema PAF Ini.WriteString('PAF','Versao',fsIdentPAF.Paf.Versao); // Versão do Sistema PAF Ini.WriteString('PAF','NumeroLaudo',fsIdentPAF.NumeroLaudo); // Número do Laudo Ini.WriteString('PAF','VersaoER',fsIdentPAF.VersaoER); // Versão do Roteiro Executado na Homologação Ini.WriteString('PAF','NomeExe',fsIdentPAF.Paf.PrincipalExe.Nome); // Nome do Principal EXE do PAF Ini.WriteString('PAF','MD5Exe',fsIdentPAF.Paf.PrincipalExe.MD5); // MD5 do Principal EXE do PAF end ; Ini.WriteString('PAF','MD5',fsIdentPAF.ArquivoListaAutenticados.MD5); // MD5 do arquivo que contem a lista de arquivos autenticados // Lista de ECFs autorizados a usar o PAF-ECF no estabelecimento For I := 0 to fsIdentPAF.ECFsAutorizados.Count-1 do begin Ident := 'ECF_'+IntToStrZero(I,4); Ini.WriteString( 'ECFs', Ident, fsIdentPAF.ECFsAutorizados[I].LinhaDados ); end ; //Inicio da Alteração // Lista de Arquivos For I := 0 to fsIdentPAF.OutrosArquivos.Count-1 do begin Ident := 'ARQ_'+IntToStrZero(I,4); Ini.WriteString( 'ARQs', Ident, fsIdentPAF.OutrosArquivos[I].LinhaDados ); end ; //Fim da Alteração // Lista de parametros adicionais For I := 0 to Params.Count-1 do begin Ident := 'L_'+IntToStrZero(I,4); Ini.WriteString( 'Params', Ident, Params[I] ); end ; if GravarDadosPAF and GravarDadosSH then begin // Calculando o CRC // CRC := StringCrc16( fsIdentPAF.Empresa.RazaoSocial + fsIdentPAF.Empresa.CNPJ + fsIdentPAF.Empresa.IE + fsIdentPAF.Empresa.IM + fsIdentPAF.Paf.Nome + fsIdentPAF.Paf.Versao + fsIdentPAF.ArquivoListaAutenticados.MD5 ); Ini.WriteInteger('CHK','CRC16',CRC); end ; Ini.GetStrings( SL ); // DEBUG //GravaLog('Arquivo em Memoria: '+sLineBreak+ SL.Text ); R := Criptografar( SL.Text ); // DEBUG //GravaLog('Arquivo Criptografado: '+sLineBreak+ R ); if fsCriarBAK then begin ArqBak := ChangeFileExt( fsNomeCompleto, '.bak'); DeleteFile( ArqBak ); RenameFile( fsNomeCompleto, ArqBak ); end ; WriteToTXT( fsNomeCompleto, R, False, False ); if fsEfetuarFlush then FlushToDisk( fsNomeCompleto ); fsDtHrArquivo := FileDateToDateTime( FileAge( fsNomeCompleto ) ); if Assigned( fsOnDepoisGravarArquivo ) then fsOnDepoisGravarArquivo( Self ); finally Ini.Free ; SL.Free; end ; end ; //Arquivo ACBrPAFClass { TACBrECFArquivo } TACBrECFArquivo = class( TPersistent ) private fsMD5: string; fsNome: String; //Linha Adicionada function GetLinhaDados : String ; //Linha Adicionada procedure SetLinhaDados(const AValue : String) ; procedure SetMD5(const AValue : string) ; procedure SetNome(const AValue : String) ; published property Nome: String read fsNome write SetNome; property MD5: string read fsMD5 write SetMD5; //Linha Adicionada property LinhaDados : String read GetLinhaDados write SetLinhaDados ; end; //Função Adicionada function TACBrECFArquivo.GetLinhaDados: String; begin Result := Nome+ '|' + MD5; end; //Procedimento Adicionada procedure TACBrECFArquivo.SetLinhaDados(const AValue: String); var SL : TStringList ; begin SL := TStringList.Create; try SL.Text := StringReplace( AValue, '|', sLineBreak, [rfReplaceAll] ) ; if SL.Count < 2 then exit ; Nome := SL[0] ; MD5 := SL[1] ; finally SL.Free; end ; end; Segue arquivos alterados: ACBrAAC.pas ACBrPAFClass.pas
  8. No paf aqui da empresa, temos 3 opções de preço: Preço de Venda, Atacado e Promoção Para efetuar a venda dos itens, vendemos com o preço de venda, e damos um desconto para chegar no preço de atacado ou promoção se for o caso. Não sei como ficaria no caso das quantidades, mas poderia ser da mesmo forma. 1 unidade = 5,00 2 a 5 unidades = 2% 0,10 Desconto 6 a 10 unidades = 6% 0,30 Desconto 11 ou mais = 10% 0,50 Desconto Não sei se atenderia seu cliente, sem falar que desse modo vai ter que sair destacado os descontos dados nos item no cupom.
  9. nazarenoneto

    Erro Estendido

    Pessoal, estou recebendo um erro estendido 140 (relógio inoperante) de uma impressora daruma, gostaria de saber se alguém ai sabe se isso é erro com a impressora ou com o meu sistema? Porque estou ligando na assistência e eles so falam que é erro com o sistema.
  10. Regys, vou testar aqui com o amex tenho ele instalado aqui também. Obrigado ai pela dica.
  11. Regys, eu consegui pegando a propriedade Parcelas do RespostasPendentes, mas esta vindo com os dados zerados. O que eu achei estranho é que vem a quantidade certa de parcelas, mas quando eu percorro elas não tem nenhum dado, sera q é por causa que eu to usando o demo da cielo?
  12. Pessoal, tem como eu capturar algumas informações do arquivo de resposta? Porque estou querendo pegar alguns dados da transação, tipo: numero de parcelas, vencimentos e valor de cada parcela. Quero pegar essas informações para fazer uma conciliação Alguém tem alguma ideia de como e em que evento fazer isso.
  13. Acho que você deve estar passando uma forma que não permite vinculado, comigo aconteceu muito isso no inicio.
  14. Eu acho que algumas pessoas estão confundindo o intuito do SAC, pelo fato de ser o Daniel que esta a frete do projeto. Se não fosse o Daniel que criasse esse serviço, qualquer um de vocês poderia ter criado. E claro que assinando o SAC você vai estar ajudando o ACBr diretamente ou indiretamente, mas ao meu ver o SAC é serviço oferecido como qualquer outro. Pensem pessoal, se você vai no seu cliente e implanta alguma versão do linux, você pode cobrar pelo SO? Não, mas você pode cobrar pelo serviço de instalação, manutenção da rede, etc. É assim que se ganha dinheiro com software livre!
  15. nazarenoneto

    Requisito XVIII e XI

    Pessoal estava lendo o roteiro e fiquei curioso com o requisito XVIII, porque na PAF que estou desenvolvendo, no momento da emissão do cupom/dav/pré-venda tem uma tela de consulta de produtos, que nessa tela consta alguns dados do produto, tipo: preço, descrição, código, unidade, etc. Mas dai me veio a duvida, essa tela terá que ler as informações do arquivo do requisito XI? Tipo, porque no meu sistema eu tenho uma unica query centralizando as consultas a produtos no banco, tipo: quando vo inserir um produto, eu capturo o código digitado ou do produto selecionado na tela de consulta de produtos, ai vou e faço a pesquisa no DM para pegar todos os dados do produto, para fazer calculo de impostos e outros controles. Nesse caso, eu também teria que trabalhar com o arquivo do Requisito XI? Estou em uma imensa duvida quanto a isso, alguém poderia me dar uma luz?
  16. Se no caso for gerado uma exception de access violation, posso ser que o problema seja o seguinte. No evento OnBobinaAdicionaLinhas do ACBrECF, estaja igual ao demo que tem o seguinte código: WB_LoadHTML(wbBobina, mBobina.Text); Application.ProcessMessages ; WB_ScrollToBottom(wbBobina); Que serve justamente para simular a bobina da impressora. Mas provavelmente você esteja passando um TWebBrowser (wbBobina) que não foi criado ou instanciado, dai o exception. Mas isso se você utilizar esse comando para reproduzir sua bobina.
  17. Desculpe ai, eu não tinha chegado a ler a parte de perguntas e repostas. Mas acabei de decidir aqui com meu chefe que não vamos implementar pré-venda, vamos fazer apenas o DAV. Fica menos burocrático unir nossos sistemas de ecf e nfe. Vlw ai pela dicas.
  18. Pessoal, estava na duvida do seguinte, o meu cliente vai ser atendido no balcão da minha loja, ele faz todo o pedido e vendedor gera uma pré-venda, so que quando ele chega ai caixa ele informa que vai pagar em dinheiro e querer uma nfe envés de um cupom fiscal. Teria como emitir a nfe sem ter a necessidade de emitir o cupom fiscal? tipo, a nfe ficar vinculada a pre-venda? posso fazer isso com o DAV?
  19. Para desenvolver acho melhor a A1, pois vc pode instalar ele em mais de uma maquina, mas em contrapartida, se vc não fizer o backup do certificado e precisar formatar o pc de desenvolvimento vc perde o certificado, ja o A3 é melhor nessa parte, pois ele é físico, mas ainda se vc vai usar esse seu certificado para gerar SPED'S (Fiscal e Contábil), só é possível assinar tais documentos com certificado A3 (ate onde sei, se eu tiver errado alguém me corrija por favor). Resumindo: A1 = + mobilidade - segurança - serviços A3 = - mobilidade + segurança + serviços
  20. Opa, desculpa por não ter me atentado em checar antes de postar aqui.
  21. Pessoal, será que poderíamos implementar essa alteração direto nos fontes do ACBrNFe2? Tipo, no momento de montar o xml verificar qual ambiente, e se homologação mudar os dados de acordo com a nota técnica. O que me dizem sobre essa alteração?
  22. Esse erro é retornado quando não é escolhido a opção de cancelar a seleção do certificado. Use um try que o erro não será exibido para o usuário.
×
×
  • Criar Novo...

Informação Importante

Colocamos cookies em seu dispositivo para ajudar a tornar este site melhor. Você pode ajustar suas configurações de cookies, caso contrário, assumiremos que você está bem para continuar.