Ir para conteúdo
  • Cadastre-se

dev botao

  • Este tópico foi criado há 3638 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Recommended Posts

  • Membros Pro
Postado (editado)

Olá amigos moderadores,

 

Utilizo a impressão do DACTE em Fast Report. Meus clientes pediram já a algum tempo algumas informações que eu sempre tenho que colocar manualmente

após a atualização do componente e então estou postando aqui para se, caso acharem interessante, possam adicionar ao fonte.

 

A primeira alteração se refere ao número da nota fiscal após a chave, o que facilita para o tomador do serviço localizar mais rapidamente a nota.

procedure TdmACBrCTeFR.CarregaDadosNotasFiscais;
var
  i: Integer;
  DoctoRem: string;
  NroNota: integer;  // adicionado por Rodrigo Cardilo em 07/08/2014
begin
  { dados das Notas Fiscais }
  DoctoRem := FCTe.Rem.CNPJCPF;
  if Length(DoctoRem) > 11 then
    DoctoRem := FormatMaskText('##.###.###\/####-##;0;_', DoctoRem)
  else
    DoctoRem := FormatMaskText('###.###.###-##;0;_', DoctoRem);

  with cdsDadosNotasFiscais do
  begin
    Close;
    FieldDefs.Clear;
    FieldDefs.Add('tpDoc', ftString, 5); //Tipo Documento
    FieldDefs.Add('CNPJCPF', ftString, 18); //CNPJCPF
    FieldDefs.Add('Serie', ftString, 3); // Serie
    FieldDefs.Add('ChaveAcesso', ftString, 44); // Chave Acesso
    FieldDefs.Add('NotaFiscal', ftString, 9); // Numero Nota Fiscal
    FieldDefs.Add('TextoImpressao', ftString, 100); // Texto Impressao no Relatorio
    CreateDataSet;

    {$IFDEF PL_200}
    for i := 0 to CTe.infCTeNorm.infDoc.infNF.Count - 1 do
    begin
      with FCTe.infCTeNorm.infDoc.InfNF.Items[i] do
    {$ELSE}
    for i := 0 to CTe.Rem.InfNF.Count - 1 do
    begin
      with FCTe.Rem.InfNF.Items[i] do
    {$ENDIF}
      begin
        Append;
        FieldByName('tpDoc').AsString := 'NF';
        FieldByName('CNPJCPF').AsString := FCTe.Rem.CNPJCPF;
        FieldByName('Serie').AsString := serie;
        FieldByName('ChaveAcesso').AsString := '';
        FieldByName('NotaFiscal').AsString := nDoc;
        { Alterado por Jose Nilton Pace em 16/05/2013 }
        FieldByName('TextoImpressao').AsString := 'NF                  ' + DoctoRem + '                                        '+
          serie+                                '  /  ' + FormatFloat('000000000', StrToInt(nDoc));
(*
        FieldByName('TextoImpressao').AsString := 'NF                 ' + DoctoRem + '                                      ' +
          FormatFloat('000', StrToInt(serie)) + '  /  ' + FormatFloat('000000000', StrToInt(nDoc));
*)
      end;
      Post;
    end;

    {$IFDEF PL_200}
    for i := 0 to CTe.infCTeNorm.infDoc.InfNFE.Count - 1 do
    begin
      with FCTe.infCTeNorm.infDoc.InfNFE.Items[i] do
    {$ELSE}
    for i := 0 to CTe.Rem.InfNFE.Count - 1 do
    begin
      with FCTe.Rem.InfNFE.Items[i] do
    {$ENDIF}
      begin
        Append;
        FieldByName('tpDoc').AsString := 'NFe';
        FieldByName('CNPJCPF').AsString := FCTe.Rem.CNPJCPF;
        FieldByName('Serie').AsString := copy(chave,23,3);
        FieldByName('ChaveAcesso').AsString := chave;
        FieldByName('NotaFiscal').AsString := copy(chave,26,9);
        NroNota := StrToInt(Copy(chave, 26, 9)); // Alterado por Rodrigo Cardilo em 07/08/2014

        { Alterado por Jose Nilton Pace em 16/05/2013 }
         //FieldByName('TextoImpressao').AsString := 'NF-e                '+chave ; // comentando
        
        { Alterado por Rodrigo Cardilo em 07/08/2014 }
        FieldByName('TextoImpressao').AsString := 'NF-e                '+chave + ' - ' + IntToStr(NroNota);

// continua o código

A segunda alteração são as informações adicionais e/ou observações do CTE que não estavam sendo carregadas para a impressão.

procedure TdmACBrCTeFR.CarregaInformacoesAdicionais;
var
  vTemp: TStringList;
  IndexCampo: Integer;
  Campos: TSplitResult;
  BufferObs: string;
  TmpStr: string;
  wContingencia: string;
  wObs: string;
  wSubstituto: string;
  i:integer;
begin

  with cdsInformacoesAdicionais do
  begin
    Close;
    FieldDefs.Clear;
    FieldDefs.Add('OBS', ftString, 2000);
    FieldDefs.Add('infAdFisco', ftString, 2000);
    FieldDefs.Add('ObsCont', ftString, 1800);

    CreateDataSet;
    Append;

    with FCTe.compl do
    begin
      wObs := xObs;

 {Adicionado por Rodrigo Cardilo em 07/08/2014}
   // Observações 
      for i := 0 to ObsCont.Count - 1 do
      begin
        with ObsCont.Items[i] do
          TmpStr := TmpStr + XCampo + ': ' + XTexto + ';';
      end;

      if Length(wObs) > 0 then
        wObs := wObs + ';';
      wObs := wObs + TmpStr;

      TmpStr := '';

// Continua o Código

Se acharem interessante adicionar ficaria muito bom pois acredito que outros possam ter essa necessidade.

 

Em anexo estou postando o arquivo modificado

ACBrCTeDACTEFRDM.rar

Editado por cardilo

Rodrigo Cardilo

Card System Info

[email protected]

Postado

Não sou responsável por essa área, mas seria interessante anexar uma imagem mostrando o efeito da alteração, se possível...

 

Também anexar a Unit.pas

  • Curtir 1

--
Isaque Pinheiro
Aracruz/ES - Brasil
___________________________________________________________________________
Site Oficial: www.isaquepinheiro.com.br 
Youtube: youtube.com/isaquepinheirooficialbr
Facebook: facebook.com.br/isaquepinheirooficialbr
Instagram: instagram.com/isaquepinheirooficialbr
Linkdin: https://www.linkedin.com/in/isaquepinheirooficialbr

Conheça o Projeto ORMBr Framework for Delphi - https://www.ormbr.com.br

 

  • Membros Pro
Postado

Não sou responsável por essa área, mas seria interessante anexar uma imagem mostrando o efeito da alteração, se possível...

 

Também anexar a Unit.pas

 

Segue a imagem com as observações e número da nota preenchidos. Já a unit eu já tinha postado antes compactada, mas segue novamente.

 

Grato.

post-633-0-74340500-1407529526_thumb.jpg

ACBrCTeDACTEFRDM.rar

Rodrigo Cardilo

Card System Info

[email protected]

Postado

Rodrigo, obrigado por atender a solicitação, mas ainda acredito que você poderia colocar a imagem circulando em vermelho o que você implementou, dai cabe a analise para vê se isso realmente é importante ou não. Caso não seja não fique chateado, pois você pode ter seu próprio modelo alterado, e ao atualizar o seu modelo não será sobreposto.

--
Isaque Pinheiro
Aracruz/ES - Brasil
___________________________________________________________________________
Site Oficial: www.isaquepinheiro.com.br 
Youtube: youtube.com/isaquepinheirooficialbr
Facebook: facebook.com.br/isaquepinheirooficialbr
Instagram: instagram.com/isaquepinheirooficialbr
Linkdin: https://www.linkedin.com/in/isaquepinheirooficialbr

Conheça o Projeto ORMBr Framework for Delphi - https://www.ormbr.com.br

 

  • Membros Pro
Postado (editado)

Rodrigo, obrigado por atender a solicitação, mas ainda acredito que você poderia colocar a imagem circulando em vermelho o que você implementou, dai cabe a analise para vê se isso realmente é importante ou não. Caso não seja não fique chateado, pois você pode ter seu próprio modelo alterado, e ao atualizar o seu modelo não será sobreposto.

 

 

Oi Isaque. Claro que não tem problema. Taí a imagem circulada. Espero que achem importante.

 

Atc,

post-633-0-62175800-1407535180_thumb.jpg

Editado por cardilo

Rodrigo Cardilo

Card System Info

[email protected]

  • Membros Pro
Postado

Bom dia Cardilo,

 

O que você acha de deixar igual ao Quick Report, no que diz respeito ao numero da nota no quadro Documentos Originários?

 

NF-e <numNota> <chaveformatada>

vide imagem em anexo:

attachicon.gifDocumentosOriginarios.JPG

 

Oi Ítalo,

 

Não vejo problema algum. A dificuldade encontrada pelo meu cliente era só em localizar o número da nota na chave.

Ficaria show de bola.

 

Agradeço pela atenção e se puder dar uma atenção na segunda alteração que eu sugeri, essa sim faz grande diferença.

 

Grato,

Rodrigo Cardilo

Card System Info

[email protected]

  • Consultores
Postado

Boa tarde Cardilo,

 

Se você achar interessante o que lhe propus, ou seja, deixar ambos os DACTE com o mesmo layout no que diz respeito a impressão dos documento originários, por favor altere e envie novamente os fontes que eu mesmo disponibilizo.

 

Quanto ao quadro de observação concordo plenamente com você, se não me falha a memória a versão em Quick Report já esta desta forma.

Consultor SAC ACBr

Italo Giurizzato Junior
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr

Analista de Sistemas / Araraquara-SP

Araraquara - A era dos Trólebus

  • 1 mês depois ...
Postado

Bom dia,

 

Ao preencher a tag <ObsCont> com as informações referente aos dados da Lei da Transparência, percebi que as informações desta tag estava saindo duplicata do DACTE (em FastReport).

 

Analisando melhor o código fonte da unit ACBrCTeDACTEFRDM.pas, o conteúdo da tag <ObsCont> está sendo preenchido em duplicidade nas tags <Obs> e <ObsCont>, após a alteração sugerida acima.

 

O conteúdo da tag <ObsCont> é percorrido na linha 970 para abastecer a tag <Obs> e na linha 1071, para abastecer a tag <ObsCont>.

 

Sugiro comentar as linhas 970 a 980, deixando a tag <Obs> apenas com o conteúdo informado em compl.xObs, e a tag <ObsCont> com o seu devido conteúdo, informado em compl.ObsCont no componente.

 

Segue unit alterada para analisarem a alteração no repositório.

 

Atenciosamente

ACBrCTeDACTEFRDM.pas

Saudações,

Wislei de Brito Fernandes

  • 2 meses depois ...
Postado

O problema de duplicar o conteúdo de ObsCont ainda persiste.

Corrigi da mesma forma do Wislei e ficou OK.

 

Ítalo, é possível fazer essa correção no repositório?

  • Curtir 1
  • Este tópico foi criado há 3638 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora
×
×
  • 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.