Ir para conteúdo
  • Cadastre-se

softcom.wendel

Membros
  • Total de ítens

    139
  • Registro em

  • Última visita

Posts postados por softcom.wendel

  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.

    post-1520-13548988001349.png

  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. 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?

  7. 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?

  8. 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?

    post-1520-13548988000536.png

  9. 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

    post-1520-13548988000487.png

  10. 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;

  11. 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?

  12. 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

  13. 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

  14. 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

  15. 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?

  16. 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;

  17. 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.