-
Total de ítens
209 -
Registro em
-
Última visita
Tipo de Conteúdo
Blocks
Notes ACBrLibNFe
Fóruns
Downloads
Calendário
Posts postados por nazarenoneto
-
-
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.
-
Ok, vou dar uma olhada na gravação por buffer.
-
Ok, posso ficar com Pis/Cofins.
Então fico fazendo os merges e te enviando as Units alteradas, certo?
-
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?
-
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?
-
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.
-
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:
-
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.
-
Vlw lampada
-
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.
-
Regys, vou testar aqui com o amex tenho ele instalado aqui também.
Obrigado ai pela dica.
-
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?
-
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.
-
Acho que você deve estar passando uma forma que não permite vinculado, comigo aconteceu muito isso no inicio.
-
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!
-
Alguém sabe?
-
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?
-
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.
-
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.
-
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?
-
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
-
Opa, desculpa por não ter me atentado em checar antes de postar aqui.
-
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?
-
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.
Alguem poderia conferir Classe do bloco F550 - Lucro Pres.
em ACBrSPEDPisCofins
Postado
Amigo, acabei de fazer algumas alterações nos fontes que vc tinha anexo, tirei alguns erros.
ACBrEPCBloco_F.pas
ACBrEPCBloco_F_Class.pas