Ir para conteúdo
  • Cadastre-se

softcom.wendel

Membros
  • Total de ítens

    139
  • Registro em

  • Última visita

Tudo que softcom.wendel postou

  1. Terminei os testes de Inclusão e exclusão e tirei algumas conclusões. No ER ele diz que o registro excluido ( Um DAV por exemplo ) o mesmo deve aparecer no arquivo de Dav Emitidos...e com a técnica de fazer um COUNT dos registro isso não seria possível, da forma que eu fiz com o LOG foi possível fazer isso. Alguém que já fez sua homologação poderia dar mais detalhes de como foram os testes destes requisitos? Se possível mais de uma pessoa em órgãos diferentes, pois já percebi que cada Homologador define o que tem que ser feito em casos mais complexos como estes. Obrigado pela atenção de todos.
  2. Então...eu imaginei que poderia ser isso também, mas olhei nos parâmetros do Windows e esta tudo normal. E ainda esta saindo incorreto no meu sistema estes arquivos onde tem valores...como por exemplo o DAVs por Período. Estou executando passo a passo para dar uma verificada onde ele(Meu sistema) pode estar interferindo na formatação correta. Mas obrigado pela ajuda.
  3. as chaves estão declaradas assim: ChavePublica = 'E'+'5A011D42F5BAB1B7D4BEDF48D8EA0D2A70EA747DB57C28F75282202EB599DDADF6AD6A0380989EE3A698884E3C14C37786A4A58FEAF831D10D5C298F89045120F32D136F785119F3650F21643A69854874E1B05BA08E5CE26421BCB35D0026B3550232322A1154F5EF5D9ABFB9068D8E9985D592C053DCF0A080CC9D99BA737'; ChavePrivada = 'F'+'55F0B07A983DC8130D44450EF5E50323E9B6952F58BA20A2A347446192B2094D52442B32C835C948D9B5428F6FB9EB155156EA42C5185CA23E9F86D4992DD7FEF926AC27609F5D3FBF73B1D11DAC084C6AAAC0D126DB3127CB8DFECA6372F638E57BAA6626659C8B547867DB6F91A7C261691EA4FCDF78776D3686E55C08249'; A Tela com o erro vou colocar em anexo. Obrigado pela atenção pessoal.
  4. Bom Dia a todos. Eu estou utilizando o Acbrpaf Setando a Propriedade AAC para o ACBrAAC e a propriedade EAD para o ACBREAD. Nos eventos Abaixo estou passando minhas chaves procedure TDMECF.ACBrEADGetChavePrivada(var Chave: AnsiString); begin Chave := ChavePrivada; end; procedure TDMECF.ACBrEADGetChavePublica(var Chave: AnsiString); begin Chave := ChavePublica; end; As chaves estão no formato abaixo ChavePublica = 'E'+'XXX..'; ChavePrivada = F'+'XXX..'; mas no ACBRPAF EM TACBrPAF.SaveFileTXT_N que salva o arquivo com os exes e dlls passados, esta dando erro em if FPAF_N.RegistroN3.Count > 0 then Write(txtFile, FPAF_N.WriteRegistroN3); Pois neste momento ele gera o MD5 de cada arquivo...no meu caso esta dando erro de acesso de memória na função TACBrEAD.CalcularHashArquivo O que poderia ser, pois dei uma olhada e nao achei o erro. Obrigado pela atenção
  5. Apaguei os meus arquivos do ACBR e mandei gerar novamente...deu o mesmo problema. Nas Linhas D2 No campo VLT_DAV ele esta colocando Alinhado a esquerda sem o tamanho correto que seria 8 Caracteres Na Linha D9 Ele esta gerando com 2 casas decimais ..e deveria ser um inteiro com 6 Caracteres. function TPAF_D.WriteRegistroD9: String; begin if Assigned(FRegistroD9) then begin with FRegistroD9 do begin Check(funChecaCNPJ(FRegistroD1.CNPJ), '(D9) TOTALIZAÇÃO: O CNPJ "%s" digitado é inválido!', [FRegistroD1.CNPJ]); Check(funChecaIE(FRegistroD1.IE, FRegistroD1.UF), '(D9) TOTALIZAÇÃO: A Inscrição Estadual "%s" digitada é inválida!', [FRegistroD1.IE]); /// Result := LFill('D9') + LFill(FRegistroD1.CNPJ, 14) + RFill(FRegistroD1.IE, 14) + LFill(TOT_REG_D2, 6) + // Aqui era assim LFill(TOT_REG_D2, 6, 0) LFill(TOT_REG_D3, 6) + sLineBreak; end; end; end; Mas na função do WriteRegistroD2 eu nao consegui corrigir sem fazer a formatação....o que poderia ser?
  6. Qual é o local correto para se colocar a função que o Regys passou?
  7. Ok..Segue em anexo o Arquivo... Obrigado pela atenção ACBrPAF_D_Class.pas
  8. Achei os erros...peço ao Pessoal do ACBR Para dar uma olhada pfv Na Unit ACBrPAF_D_Class. function TPAF_D.WriteRegistroD9: String; begin if Assigned(FRegistroD9) then begin with FRegistroD9 do begin Check(funChecaCNPJ(FRegistroD1.CNPJ), '(D9) TOTALIZAÇÃO: O CNPJ "%s" digitado é inválido!', [FRegistroD1.CNPJ]); Check(funChecaIE(FRegistroD1.IE, FRegistroD1.UF), '(D9) TOTALIZAÇÃO: A Inscrição Estadual "%s" digitada é inválida!', [FRegistroD1.IE]); /// Result := LFill('D9') + LFill(FRegistroD1.CNPJ, 14) + RFill(FRegistroD1.IE, 14) + LFill(TOT_REG_D2, 6) + AQUI ESTAVA LFill(TOT_REG_D2, 6, 0) LFill(TOT_REG_D3, 6) + AQUI ESTAVA LFill(TOT_REG_D2, 6, 0) sLineBreak; end; end; end; Passando AQUI ESTAVA LFill(TOT_REG_D2, 6, 0) ele entra no LFill para Numeric. E na Função abaixo ja deixei como eu coloquei function TPAF_D.WriteRegistroD2: String; var intFor: integer; strRegistroD2: String; strRegistroD3: String; begin strRegistroD2 := ''; strRegistroD3 := ''; if Assigned(FRegistroD2) then begin FRegistroD2.Sort(@OrdenarD2); for intFor := 0 to FRegistroD2.Count - 1 do begin with FRegistroD2.Items[intFor] do begin Check(funChecaCNPJ(FRegistroD1.CNPJ), '(D2) DAV EMITIDOS: O CNPJ "%s" digitado é inválido!', [FRegistroD1.CNPJ]); strRegistroD2 := strRegistroD2 + LFill('D2') + LFill(FRegistroD1.CNPJ, 14) + RFill(NUM_FAB, 20) + RFill(MF_ADICIONAL, 1) + RFill(TIPO_ECF, 7) + RFill(MARCA_ECF, 20) + RFill(MODELO_ECF, 20, ifThen(RegistroValido, ' ', '?')) + LFill(COO, 6) + RFill(NUM_DAV, 13) + LFill(DT_DAV, 'yyyymmdd') + RFill(TIT_DAV, 30) + LFill( FormatCurr('###,##0.00', VLT_DAV), 8, '0') + //LFill(VLT_DAV, 8, 2) + LFill(COO_DFV, 6) + LFill(NUMERO_ECF, 3) + RFill(NOME_CLIENTE, 40) + LFill(CPF_CNPJ, 14) + sLineBreak; end; // Registro FILHOS strRegistroD3 := strRegistroD3 + WriteRegistroD3( FRegistroD2.Items[intFor] ); FRegistroD9.TOT_REG_D2 := FRegistroD9.TOT_REG_D2 + 1; FRegistroD9.TOT_REG := FRegistroD9.TOT_REG + 1; end; Result := strRegistroD2 + strRegistroD3; end; end; Acho que assim fica correto...ou não?
  9. Rsss...cara..se pensarmos por esse lado...poderíamos criptografar os dados na tabela de Log..para ninguém saber o que tem la..mas sempre tem uns que podem sair apagando tudo e todos nas tabelas...e isso eu creio que não tem como controlar...na realidade acho que o governo esta tentando cercar uma coisa que não tem como, mas fazer o que. Mas vcs acham que da forma que fiz não daria certo?
  10. Pessoal Encontrei o problema mas não entendi como poderei resolver, pois olhando o código do ACBR me parece que esta tudo OK. O problema me parece que esta sendo gerado na coluna "D2.VLT_DAV" que esta sendo gerada sem o tamanho correto que seria de 8 Caracteres, ou seja, nao esta completando com espaços a esquerda. Alguém passou pelo mesmo problema?
  11. Pessoal, estou com um problema estranho...vejam o meu código procedure DAVEmitidos(DtInicial, DtFinal: TDateTime; Arquivo, Abrir: Boolean); Var slArquivo: TStringList; ListaDAV: TObjectList; i, Cod_Rel_Paf:integer; R06: TR06VO; D2: TRegistroD2; Impressora: TImpressoraVO; ArqNom: String; begin // Try // ListaDAV := TDAVController.ListarDAVPeriodo(DtInicial, DtFinal); // If Assigned(ListaDAV) Then Begin // If (Arquivo) Then Begin // registro D1 // preencher header do arquivo PreencherHeader(DMEcf.ACBrPAF.PAF_D.RegistroD1); // registro D2 DMEcf.ACBrPAF.AssinarArquivo := False; DMEcf.ACBrPAF.PAF_D.RegistroD2.Clear; //dados da impressora Impressora := TImpressoraController.CarregarImpressora(1); // For i := 0 To ListaDAV.Count - 1 Do Begin // D2 := DMEcf.ACBrPAF.PAF_D.RegistroD2.New; // D2.RegistroValido := TDAVController.VerificarHASH(TDAVVO(ListaDAV.Items)); // D2.NUM_FAB := Impressora.Serie; D2.MF_ADICIONAL := Impressora.MFD; D2.TIPO_ECF := Impressora.Tipo; D2.MARCA_ECF := Impressora.Marca; D2.MODELO_ECF := Impressora.Modelo; D2.NUMERO_ECF := Impressora.NUMERO_ECF; D2.COO := IntToStr(TDAVVO(ListaDAV.Items).COO); D2.NUM_DAV := Format('%.13d', [TDAVVO(ListaDAV.Items).Id]); D2.DT_DAV := TDAVVO(ListaDAV.Items).DT_EMISSAO; // Verificar D2.TIT_DAV := Impressora.DAV_NOME; D2.VLT_DAV := TDAVVO(ListaDAV.Items).VLR_TOTAL; // End; // ArqNom := ExtractFilePath(Application.ExeName) + 'Arquivos\DAVEmitidos.txt'; DMEcf.ACBrPAF.SaveFileTXT_D('DAVEmitidos.txt'); DMEcf.Assinar(ArqNom, true); if Abrir then Abrir_Arq( ArqNom ); // End Else Begin // Try // slArquivo := TStringList.Create; // slArquivo.Add(Replicate('=', DMEcf.ECF.Colunas)); slArquivo.Add(Centraliza('DAV EMITIDOS', DMEcf.ECF.Colunas)); slArquivo.Add(Centraliza('PERIODO: ' + DateToStr(DtInicial) + ' A ' + DateToStr(DtFinal), DMEcf.ECF.Colunas)); slArquivo.Add(Replicate('=', DMEcf.ECF.Colunas)); // ...05...10...15...20...25...30...35...40...45... slArquivo.Add('NUMERO DT EMIS TITULO IMP COO VLR'); // 0000000001 01/01/01 ORCAMENTO 0001 slArquivo.Add(Replicate('=', DMEcf.ECF.Colunas)); // For i := 0 To ListaDAV.Count - 1 Do slArquivo.Add(Format('%.10d %8s %-7s %5s %5s %7s', [TDAVVO(ListaDAV.Items).ID, FormatDateTime('dd/mm/yy', TDAVVO(ListaDAV.Items).DT_EMISSAO), 'ORÇAMENT', FormatFloat('###0', TDAVVO(ListaDAV.Items).COO_IMP), FormatFloat('###0', TDAVVO(ListaDAV.Items).COO), FormatFloat('#,##0.00', TDAVVO(ListaDAV.Items).VLR_TOTAL)])); // slArquivo.Add(Replicate('=', DMEcf.ECF.Colunas)); if DMECF.VCODIGO_REL_GER_PAF <> '' then Cod_Rel_Paf := Strtoint(Trim(DMECF.VCODIGO_REL_GER_PAF)) else Cod_Rel_Paf := 2; DMEcf.ECF.RelatorioGerencial(slArquivo, 1, Cod_Rel_Paf); { TODO : Está correta essa implementação para gravação do registro R06? } Try // R06 := TR06VO.Create; // R06.USUARIO := 1; R06.COO := StrToInt(DMEcf.ECF.NumCOO); R06.GNF := StrToInt(DMEcf.ECF.NumGNF); R06.GRG := StrToInt(DMEcf.ECF.NumGRG); R06.CDC := StrToInt(DMEcf.ECF.NumCDC); R06.NUM_FABRICACAO := DMEcf.ECF.NumSerie; R06.MF_ADICIONAL := DMEcf.ECF.MFAdicional; R06.MODELO := DMEcf.ModeloECF; R06.NUM_ECF := DMEcf.NumeroECF; R06.DATA := DMEcf.ECF.DataHora; R06.Denominacao := 'RG'; R06.DataEmissao := FormatDateTime('yyyy-mm-dd', DMEcf.ECF.DataHora); R06.HoraEmissao := FormatDateTime('hh:nn:ss', DMEcf.ECF.DataHora); // TRegistroRController.GravaR06(R06); Except // On E:Exception Do MessageDlg(E.Message, mtError, [mbOk], 0); // End; // Finally // slArquivo.Free; slArquivo := Nil; // End; // End; // End // Else Application.MessageBox('Não existem DAV para o período informado.', 'Informação do Sistema', MB_OK + MB_ICONINFORMATION); // Finally // ListaDAV.Free; ListaDAV := Nil; // End; // end; */*/*/*/*/*/*/*/*/*/ Vejam que para o DAVs por arquivo esta aparentemente tudo certo...mas o arquivo esta sendo gerado faltando dados...vejam a tela do Validador..esta me dizendo que esta faltando dados...percebi que o valor esta meio fora de lugar..mas não achei o pq disso
  12. Pessoal eu fiz da seguinte forma. Criei uma tabela de LOGS, como mencionado nos outros Posts CREATE TABLE LOG_DADOS ( ORIGEM DORIGEM NOT NULL /* DORIGEM = VARCHAR(10) */, CODIGO DCODIGO NOT NULL /* DCODIGO = INTEGER */, DATA DDATA NOT NULL /* DDATA = TIMESTAMP */, "HASH" DMD5 NOT NULL /* DMD5 = VARCHAR(32) */ ); Então a cada Inclusão eu altero o LOG de dados com o HASH, a Origem(DAV, R... e etc)...mas na hora de ler os dados eu faço a seguinte consulta Exemplo para os DAVS. ConsultaSQL := ' select L.CODIGO, D.CODIGO_AGRUP, D.DT_EMISSAO, ' + ' D.CLIENTE, D.NOME, D.ENDERECO, D.CIDADE, ' + ' D.UF, D.CPF_CNPJ, D.RG_IE, D.BAIRRO, ' + ' D.CEP , D.VLR_ITENS, D.VLR_DESCONTO, D.VLR_TOTAL, ' + ' D.VENDEDOR, D.CCF, D.CANCELADO, D.COO, D.NUMECF, ' + ' D.VENDA, D.VLR_ACRESCIMO, D.NOME_VENDEDOR, D.SELECIONADO, ' + ' D.HASH, D.SITUACAO, D.COO_IMPRESSAO, L."HASH" AS HASH_LOG, L.DATA ' + ' from DAVS D ' + ' right join VER_LOG_DADOS ('+ QuotedStr('DAV') + ') L ON ( D.codigo = L.codigo ) ' + ' where CAST(L.DATA AS DATE) >= :DT_INICIAL AND CAST(L.DATA AS DATE) <= :DT_FINAL ' + ' ORDER BY D.CODIGO '; Query.sql.Text := ConsultaSQL; Query.Open; Query.First; // While Not(Query.Eof) Do Begin // DAV := TDAVVO.Create; // DAV.ID := Query.FieldByName('CODIGO').AsInteger; if Query.FieldByName('DT_EMISSAO').IsNull then DAV.DT_EMISSAO := Query.FieldByName('DATA').AsDateTime else DAV.DT_EMISSAO := Query.FieldByName('DT_EMISSAO').AsDateTime; DAV.VLR_TOTAL := Query.FieldByName('VLR_TOTAL').AsFloat; DAV.COO := Query.FieldByName('COO').AsInteger; DAV.COO_IMP := Query.FieldByName('COO_IMPRESSAO').AsInteger; DAV.Id_Agrup := Query.FieldByName('CODIGO_AGRUP').AsInteger; DAV.Cliente := Query.FieldByName('CLIENTE').AsInteger; DAV.Nome := Query.FieldByName('NOME').AsString; DAV.Endereco := Query.FieldByName('ENDERECO').AsString; DAV.Bairro := Query.FieldByName('BAIRRO').AsString; DAV.Cidade := Query.FieldByName('CIDADE').AsString; DAV.UF := Query.FieldByName('UF').AsString; DAV.CEP := Query.FieldByName('CEP').AsString; DAV.CPF_CNPJ := Query.FieldByName('CPF_CNPJ').AsString; DAV.RG_IE := Query.FieldByName('RG_IE').AsString; DAV.CCF := Query.FieldByName('CCF').AsInteger; DAV.VLR_ITENS := Query.FieldByName('VLR_ITENS').AsFloat; DAV.VLR_DESCONTO := Query.FieldByName('VLR_DESCONTO').AsFloat; DAV.HASH := Query.FieldByName('HASH').AsString; DAV.HASH_LOG := Query.FieldByName('HASH_LOG').AsString; // ListaDAV.Add(DAV); // Query.next; // End; // Result := ListaDAV; Essa consulta me retorna os registros de DAVS e seus respectivos LOGS...qdo um DAV é excluído a Consulta é retornada sem os dados do DAV, mas com os dados necessários para criar a Linha...que são as colunas, L.CODIGO e HASH_LOG...os outros virão em branco, assim como o HASH não bate com o Log do HASH do LOG eu sei que foi apagada. Creio que resolve todas assituações...concordam comigo? Abaixo o Código da função completo: procedure DAVEmitidos(DtInicial, DtFinal: TDateTime; Arquivo, Abrir: Boolean); Var slArquivo: TStringList; ListaDAV: TObjectList; i, Cod_Rel_Paf:integer; R06: TR06VO; D2: TRegistroD2; Impressora: TImpressoraVO; ArqNom: String; begin // Try // ListaDAV := TDAVController.ListarDAVPeriodo(DtInicial, DtFinal); // If Assigned(ListaDAV) Then Begin // If (Arquivo) Then Begin // registro D1 // preencher header do arquivo PreencherHeader(DMEcf.ACBrPAF.PAF_D.RegistroD1); // registro D2 DMEcf.ACBrPAF.AssinarArquivo := False; DMEcf.ACBrPAF.PAF_D.RegistroD2.Clear; //dados da impressora Impressora := TImpressoraController.CarregarImpressora(1); // For i := 0 To ListaDAV.Count - 1 Do Begin // D2 := DMEcf.ACBrPAF.PAF_D.RegistroD2.New; // D2.RegistroValido := TDAVController.VerificarHASH(TDAVVO(ListaDAV.Items[i])); // D2.NUM_FAB := Impressora.Serie; D2.MF_ADICIONAL := Impressora.MFD; D2.TIPO_ECF := Impressora.Tipo; D2.MARCA_ECF := Impressora.Marca; D2.MODELO_ECF := Impressora.Modelo; D2.NUMERO_ECF := Impressora.NUMERO_ECF; D2.COO := IntToStr(TDAVVO(ListaDAV.Items[i]).COO); D2.NUM_DAV := Format('%.13d', [TDAVVO(ListaDAV.Items[i]).Id]); D2.DT_DAV := TDAVVO(ListaDAV.Items[i]).DT_EMISSAO; // Verificar D2.TIT_DAV := Impressora.DAV_NOME; D2.VLT_DAV := TDAVVO(ListaDAV.Items[i]).VLR_TOTAL; // End; // ArqNom := ExtractFilePath(Application.ExeName) + 'Arquivos\DAVEmitidos.txt'; DMEcf.ACBrPAF.SaveFileTXT_D('DAVEmitidos.txt'); DMEcf.Assinar(ArqNom, true); if Abrir then Abrir_Arq( ArqNom ); // End Else Begin // Try // slArquivo := TStringList.Create; // slArquivo.Add(Replicate('=', DMEcf.ECF.Colunas)); slArquivo.Add(Centraliza('DAV EMITIDOS', DMEcf.ECF.Colunas)); slArquivo.Add(Centraliza('PERIODO: ' + DateToStr(DtInicial) + ' A ' + DateToStr(DtFinal), DMEcf.ECF.Colunas)); slArquivo.Add(Replicate('=', DMEcf.ECF.Colunas)); // ...05...10...15...20...25...30...35...40...45... slArquivo.Add('NUMERO DT EMIS TITULO IMP COO VLR'); // 0000000001 01/01/01 ORCAMENTO 0001 slArquivo.Add(Replicate('=', DMEcf.ECF.Colunas)); // For i := 0 To ListaDAV.Count - 1 Do slArquivo.Add(Format('%.10d %8s %-7s %5s %5s %7s', [TDAVVO(ListaDAV.Items[i]).ID, FormatDateTime('dd/mm/yy', TDAVVO(ListaDAV.Items[i]).DT_EMISSAO), 'ORÇAMENT', FormatFloat('###0', TDAVVO(ListaDAV.Items[i]).COO_IMP), FormatFloat('###0', TDAVVO(ListaDAV.Items[i]).COO), FormatFloat('#,##0.00', TDAVVO(ListaDAV.Items[i]).VLR_TOTAL)])); // slArquivo.Add(Replicate('=', DMEcf.ECF.Colunas)); if DMECF.VCODIGO_REL_GER_PAF <> '' then Cod_Rel_Paf := Strtoint(Trim(DMECF.VCODIGO_REL_GER_PAF)) else Cod_Rel_Paf := 2; DMEcf.ECF.RelatorioGerencial(slArquivo, 1, Cod_Rel_Paf); { TODO : Está correta essa implementação para gravação do registro R06? } Try // R06 := TR06VO.Create; // R06.USUARIO := 1; R06.COO := StrToInt(DMEcf.ECF.NumCOO); R06.GNF := StrToInt(DMEcf.ECF.NumGNF); R06.GRG := StrToInt(DMEcf.ECF.NumGRG); R06.CDC := StrToInt(DMEcf.ECF.NumCDC); R06.NUM_FABRICACAO := DMEcf.ECF.NumSerie; R06.MF_ADICIONAL := DMEcf.ECF.MFAdicional; R06.MODELO := DMEcf.ModeloECF; R06.NUM_ECF := DMEcf.NumeroECF; R06.DATA := DMEcf.ECF.DataHora; R06.Denominacao := 'RG'; R06.DataEmissao := FormatDateTime('yyyy-mm-dd', DMEcf.ECF.DataHora); R06.HoraEmissao := FormatDateTime('hh:nn:ss', DMEcf.ECF.DataHora); // TRegistroRController.GravaR06(R06); { TODO : Precisamos fazer alguma coisa em relacao ao registro R07? } Except // On E:Exception Do MessageDlg(E.Message, mtError, [mbOk], 0); // End; // Finally // slArquivo.Free; slArquivo := Nil; // End; // End; // End // Else Application.MessageBox('Não existem DAV para o período informado.', 'Informação do Sistema', MB_OK + MB_ICONINFORMATION); // Finally // ListaDAV.Free; ListaDAV := Nil; // End; // end;
  13. Ok..Obrigado pela ajuda Régys.
  14. softcom.wendel

    Rodape do Cupom

    Bom Dia Pessoal. Eu utilizava uma função interna para o radapé do cupom onde eram colocados MD5, DAV, PRÉVENDA E ETC Agora comecei a utilizar as funções do ACBR ECF.InfoRodapeCupom.Dav := ''; ECF.InfoRodapeCupom.DavOs := ''; ECF.InfoRodapeCupom.PreVenda := ''; if DMECF.Ecf_MFD then DMECF.ECF.IdentificaPAF('SOFTPDV 2.0', DMECF.MD5_Laudo) ELSE DMECF.ECF.InfoRodapeCupom.MD5 := FormataString( DMECF.MD5_Laudo, 48) + #13 + #10; IF VendasNUM_PREVENDA.VALUE > 0 THEN begin DMECF.ECF.InfoRodapeCupom.PreVenda := FormataNumero( VendasNUM_PREVENDA.AsString, 10); end else IF VendasNUM_DAV.VALUE > 0 THEN Begin DMECF.ECF.InfoRodapeCupom.Dav := FormataString( FormataNumero( VendasNUM_DAV.AsString, 10 ), 48) ; NumDav := VendasNUM_DAV.Value; End else if VendasMESA.VALUE > 0 THEN begin Obs := Obs + 'ECF ' + FormataNumero( VendasECF_CONFERENCIA.AsString, 3) + '-CONFERENCIA DE MESA-CER ' + FormataNumero( VendasCER_CONFERENCIA.AsString, 4) + '-COO ' + FormataNumero( VendasCOO_CONFERENCIA.AsString, 6) ; end; Mas esta saindo tudo truncando no rodape Esta saido Assim=> MD-5: XXXXXXXXXXDAV0000000020 Ou seja...nao esta pulando a linha para cada informação. O que posso estar fazendo errado?
  15. Boa tarde, estou criando A CCe dentro de meu Software e o componente esta devolvendo o erro "URL não disponível para o estado solicitado.", mas o emissor é de MS ( Código 50 ) e me parece que o MS já estaria correta a URL, alguem saberia me responder o por que do erro? Olhei o Forum todo e não consegui achar nada sobre este erro. Agradeço a atenção Wendel Wagner
  16. Bom Dia a Todos. No meu paf eu Implementei uma função para iniciar o Dia Fiscal, é uma espécie de caixa que server também para atender alguns requisitos do paf, como por exemplo a posição do estoque e o requisito que tem que gravar a data e hora do primeiro documento emitido. Mas nas ecfs daruma o comando "DataMovimento" retorna 01/01/00, e só fica correto quando emito um cupom. Vejam as duas funções Funcao Confere DIA */*/*/*/*/*/*/*/*/*/*/*/*/*/ Decodedate (DMECF.DataMovimento, Ano, Mes, Dia ); Data := EncodeDate(Ano, Mes, Dia); Sql := ' SELECT COO_LX FROM DIA_FISCAL D ' + ' WHERE CAST(D.data AS DATE) = :DATA' ; With DMDia_Fiscal do begin Confere.Close; Confere.SQL.Clear; Confere.SQL.Add( Sql ); Confere.ParamByName('DATA').AsDate := Data; Confere.Open; if Confere.Fields[0].IsNull then Result := true else begin Result := False; MessageDlg('Já existe um dia Fiscal aberto para o Movimento Atual = ' + DatetoStr(Data), mtError, [mbOK], 0); end; Confere.Close; end; /*/*/*/*/*/*/*/*/*/*/*/*/*/* if (Conferedia) then Begin //Chamando a Leitura X DMECF.LeituraX(False); // dsEditar.DataSet.Open; dsEditar.DataSet.Append; Decodedate (DMECF.DataMovimento, Ano, Mes, Dia ); dsEditar.DataSet.FieldByName('DATA').AsDateTime := EncodeDate(Ano, Mes, Dia); dsEditar.DataSet.Post; dsEditar.DataSet.Close; //Grava o Estoque Atual Grava_Estoque; DsSelecionar.DataSet.Refresh; MessageDlg('Dia Fiscal Aberto com sucesso, Bom trabalho!', mtError, [mbOK], 0); End; */*/*/*/*/*/*/*/*/* Alguem sabe como resolver isso na daruma sem ter que abrir um cupom Fiscal? Ou tem outra solução para este caso. Agradeço a Atenção Wendel Wagner
  17. Existe a possibilidade no ACBRTEFD de fazer a seguinte operação? RECEBIMENTO COM CARTAO, Ou seja, não há um cupom fiscal aberto, pois o cupom foi emitido no ato da venda. O Cliente pede para pagar uma parcela com o cartao de crédito, como fazer este recebimento no ACBRTEFD? Agradeço a Atenção
  18. Obrigado..baixei e vou testar agora
  19. softcom.wendel

    Mp4000 TH Fi na USB

    Como configurar o Acbr para funcionar pela USB? Obrigado pela atenção
  20. Ok... Fiz algumas análises e a classe poderá servir tanto para o cálculo correto para o preenchimento da Nota de saida como para calcular o custo correto de uma nota de entrada e validar os dados da mesma. Para a saida é simples, são cálculos normais, mas para a entrada eu tenho rotinas que calculam o custo correto da mercadoria: Icm de Credito Icm de Débito Ipi Frete e etc Destes dados montamos o PMZ (Preço margem Zero) e o custo de compra, então montamos o Preço de venda com base em uma determinada fórmula. Vou utilizar como base uma Unit que encontrei na Clube Delphi que ja contem algumas rotinas prontas e esta bem organizada (No meu entendimento é claro..rsss). Ai vou postando no Forum?...ou como faço?
  21. Pessoal boa tarde. Possuo uma rotina que faz o cálculo de impostos de uma nfe, mas estou pensando em gerar uma classe que faça isso automaticamente passando como parametros os dados necessários, mas antes de começar isso gostaria de verificar se ja nao existe algo assim no ACBR. Agradeço a atenção
  22. Perfeito, funcionou corretamente. Segue código, pois pode ajudar alguem e se eu tiver feito errado por favor me corrijam. function TDMECF.NumCER: Integer; var vRel : TACBrECFRelatorioGerencial; I, Resp: INTEGER; begin Resp := 0; ecf.CarregaRelatoriosGerenciais; for I := 0 to ecf.RelatoriosGerenciais.Count - 1 do Begin vRel := ecf.RelatoriosGerenciais.Objects[I]; if Uppercase(vRel.Descricao)='PAF-ECF' then Resp := vRel.Contador; End; Result := Resp; end;
  23. Bom dia Pessoal Como obter o numero do CER para a conferencia de Mesa? Obrigado pela atenção
  24. Bom Dia Kiko...era isso mesmo... Tinha este código logo acima with Ide.NFref.Add do begin e nos dados estava assim if ReferenciadaTipoNFe then // TAG - Informação das NF/NF-e referenciadas - - Ocorrência 0-N ******** begin // Se a nota referenciada for um NFe preencher o campo abaixo: Ano := Copy(IntToStr(YearOf(BuscaNFeDATA_NF.AsDateTime)), 3, 2); Mes := FormatFloat('00', MonthOf(BuscaNFEDATA_NF.AsDateTime)); ChaveRef := BuscaNFeCHAVE_NFE.AsString; Ide.NFref.Add; Ide.NFref[0].refNFe := ChaveRef; // B13 - Chave de acesso das NF-e referenciadas end; Ou seja, estava dando dois ADD..retirei a linha e deu tudo certo.....obrigado pela ajuda....t+
×
×
  • 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.

The popup will be closed in 10 segundos...