Ir para conteúdo
  • Cadastre-se

dev botao

Sugestão de Melhoria CT-e


Jemison Vidal
Ver Solução Respondido por hleorj,
  • Este tópico foi criado há 3046 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Recommended Posts

Bom dia,

Realizamos algumas melhorias para impressão da DACTE, segue abaixo alterações e arquivos em anexo.

- Adicionado Campo "vValePed" para cdsRodoValePedagio ;

- Alterado tamanho do campo "Modal" para 2, e alterado forma de preenchido;(Estava fixo Modal Rodoviário)

-Corrigido preenchimento do campo "Resumo Canhoto";

-Adicionado campos "xOrig,xDest,xRota", para impressão do modal aéreo;

-Adicionado TfrxDBDataset para Modal aéreo, estava criado apenas oTClientDataSet;

-Implementado impressão do RNTRC para Todos os Veículos do transporte;

Se possível poderia analisar e disponibilizar ao SVN ?

Desde já Obrigado !

Abraço.

ACBrCTeDACTEFR.pas

Link para o comentário
Compartilhar em outros sites

  • Moderadores

Dica . @Jemison Vidal.. Post telas do seu resultado , um antes e depois do código .. isto é somente para facilitar o entendimento do código.

O Acbr sempre gosta de atualizações.

Equipe ACBr Henrique Leonardo
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr

Tecnólogo em processamento de dados

E-mail [email protected] - Skype : hleorj

Link para o comentário
Compartilhar em outros sites

  • 3 semanas depois ...

Bom dia @hleorj, Obrigado pela dica.. Vamos la.

Segue em anexos e alterações baixo como era e como ficou.

-Adicionado Carrega Modal Aquaviário e MultModal( Antes não existia);

Agora:

procedure TACBrCTeDACTEFR.CarregaMultiModal;
begin
  if FCTe.ide.modal <> mdMultimodal then
    Exit;

  with cdsMultiModal, CTE.infCTeNorm do
  begin
    Append;
    FieldByName('COTM').AsString := multimodal.COTM;
    FieldByName('indNegociavel').AsString := indNegociavelToStr(multimodal.indNegociavel);
    Post;
  end;
end;

 

procedure TACBrCTeDACTEFR.CarregaModalAquaviario;
var
   i: Integer;
   xBalsa: String;
begin
  if FCTe.ide.modal <> mdAquaviario then
    Exit;

  with cdsModalAquaviario, CTe.infCTeNorm.aquav do
     begin
//       CreateDataSet;
       Append;

       FieldByName('vPrest').AsFloat    := vPrest;
       FieldByName('vAFRMM').AsFloat    := vAFRMM;
       FieldByName('nBooking').AsString := nBooking;
       FieldByName('nCtrl').AsString    := nCtrl;
       FieldByName('xNavio').AsString   := xNavio;
       FieldByName('nViag').AsString    := nViag;

       case direc of
          drNorte: FieldByName('direc').AsString := 'NORTE';
          drLeste: FieldByName('direc').AsString := 'LESTE';
          drSul:   FieldByName('direc').AsString := 'SUL';
          drOeste: FieldByName('direc').AsString := 'OESTE';
       end;

       FieldByName('prtEmb').AsString := prtEmb;
       FieldByName('prtTrans').AsString := prtTrans;
       FieldByName('prtDest').AsString := prtDest;

       case tpNav of
          tnInterior:  FieldByName('tpNav').AsString := 'INTERIOR';
          tnCabotagem: FieldByName('tpNav').AsString := 'CABOTAGEM';
       end;

       FieldByName('irin').AsString := irin;
       FieldByName('xNavio').AsString := FieldByName('xNavio').AsString;

       for i := 0 to balsa.Count-1 do
          xBalsa := xBalsa + balsa.Items[i].xBalsa +',';
       FieldByName('xBalsa').AsString := Copy(xBalsa,1,Length(xBalsa)-1);

       Post;
      end;
end;

 

-Adicionado TClientDataSet e  TfrxDBDataset para Aquaviário e MultModal( Antes não existia);

Antes:

// CDS
    cdsIdentificacao        : TClientDataSet;
    cdsEmitente             : TClientDataSet;
    cdsDestinatario         : TClientDataSet;
    cdsDadosNotasFiscais    : TClientDataSet;
    cdsParametros           : TClientDataSet;
    cdsInformacoesAdicionais: TClientDataSet;
    cdsVolumes              : TClientDataSet;
    cdsTomador              : TClientDataSet;
    cdsExpedidor            : TClientDataSet;
    cdsRecebedor            : TClientDataSet;
    cdsRemetente            : TClientDataSet;
    cdsCalculoImposto       : TClientDataSet;
    cdsComponentesPrestacao : TClientDataSet;
    cdsSeguro               : TClientDataSet;
    cdsModalRodoviario      : TClientDataSet;
    cdsModalAereo           : TClientDataSet;
    cdsRodoVeiculos         : TClientDataSet;
    cdsRodoValePedagio      : TClientDataSet;
    cdsRodoMotorista        : TClientDataSet;
    cdsDocAnterior          : TClientDataSet;
    cdsAnuladoComple        : TClientDataSet;
    cdsEventos              : TClientDataSet;

    // frxDB
    frxIdentificacao        : TfrxDBDataset;
    frxEmitente             : TfrxDBDataset;
    frxDestinatario         : TfrxDBDataset;
    frxDadosNotasFiscais    : TfrxDBDataset;
    frxParametros           : TfrxDBDataset;
    frxVolumes              : TfrxDBDataset;
    frxInformacoesAdicionais: TfrxDBDataset;
    frxTomador              : TfrxDBDataset;
    frxExpedidor            : TfrxDBDataset;
    frxRecebedor            : TfrxDBDataset;
    frxRemetente            : TfrxDBDataset;
    frxCalculoImposto       : TfrxDBDataset;
    frxComponentesPrestacao : TfrxDBDataset;
    frxSeguro               : TfrxDBDataset;
    frxModalRodoviario      : TfrxDBDataset;
    frxModalAereo           : TfrxDBDataset;
    frxRodoVeiculos         : TfrxDBDataset;
    frxRodoValePedagio      : TfrxDBDataset;
    frxRodoMotorista        : TfrxDBDataset;
    frxDocAnterior          : TfrxDBDataset;
    frxAnuladoComple        : TfrxDBDataset;
    frxEventos              : TfrxDBDataset;

    frxBarCodeObject: TfrxBarCodeObject;

Agora:

// CDS
    cdsIdentificacao        : TClientDataSet;
    cdsEmitente             : TClientDataSet;
    cdsDestinatario         : TClientDataSet;
    cdsDadosNotasFiscais    : TClientDataSet;
    cdsParametros           : TClientDataSet;
    cdsInformacoesAdicionais: TClientDataSet;
    cdsVolumes              : TClientDataSet;
    cdsTomador              : TClientDataSet;
    cdsExpedidor            : TClientDataSet;
    cdsRecebedor            : TClientDataSet;
    cdsRemetente            : TClientDataSet;
    cdsCalculoImposto       : TClientDataSet;
    cdsComponentesPrestacao : TClientDataSet;
    cdsSeguro               : TClientDataSet;
    cdsModalRodoviario      : TClientDataSet;
    cdsModalAereo           : TClientDataSet;
    cdsMultiModal           : TClientDataSet;
    cdsModalAquaviario      : TClientDataSet;
    cdsRodoVeiculos         : TClientDataSet;
    cdsRodoValePedagio      : TClientDataSet;
    cdsRodoMotorista        : TClientDataSet;
    cdsDocAnterior          : TClientDataSet;
    cdsAnuladoComple        : TClientDataSet;
    cdsEventos              : TClientDataSet;

    // frxDB
    frxIdentificacao        : TfrxDBDataset;
    frxEmitente             : TfrxDBDataset;
    frxDestinatario         : TfrxDBDataset;
    frxDadosNotasFiscais    : TfrxDBDataset;
    frxParametros           : TfrxDBDataset;
    frxVolumes              : TfrxDBDataset;
    frxInformacoesAdicionais: TfrxDBDataset;
    frxTomador              : TfrxDBDataset;
    frxExpedidor            : TfrxDBDataset;
    frxRecebedor            : TfrxDBDataset;
    frxRemetente            : TfrxDBDataset;
    frxCalculoImposto       : TfrxDBDataset;
    frxComponentesPrestacao : TfrxDBDataset;
    frxSeguro               : TfrxDBDataset;
    frxModalRodoviario      : TfrxDBDataset;
    frxModalAereo           : TfrxDBDataset;
    frxMultiModal           : TfrxDBDataset;
    frxModalAquaviario      : TfrxDBDataset;
    frxRodoVeiculos         : TfrxDBDataset;
    frxRodoValePedagio      : TfrxDBDataset;
    frxRodoMotorista        : TfrxDBDataset;
    frxDocAnterior          : TfrxDBDataset;
    frxAnuladoComple        : TfrxDBDataset;
    frxEventos              : TfrxDBDataset;

    frxBarCodeObject: TfrxBarCodeObject;

Criação dos Campos no aquaviário:

 cdsModalAquaviario := TClientDataSet.Create(nil);
  with cdsModalAquaviario, FieldDefs do
  begin
    Close;
    Clear;
    Add('vPrest', ftFloat);
    Add('vAFRMM', ftFloat);
    Add('nBooking', ftString, 10);
    Add('nCtrl', ftString, 10);
    Add('xNavio', ftString, 60);
    Add('nViag', ftInteger);
    Add('direc', ftString, 8);
    Add('prtEmb', ftString, 60);
    Add('prtTrans', ftString, 60);
    Add('prtDest', ftString, 60);
    Add('tpNav', ftString, 10);
    Add('irin', ftString, 10);
    Add('xBalsa', ftString, 190);
    CreateDataSet;
  end;

Criação dos Campos MultiModal:

 cdsMultiModal := TClientDataSet.Create(nil);
  with cdsMultiModal, FieldDefs do
  begin
    Close;
    Clear;
    Add('COTM', ftString, 20);
    Add('indNegociavel', ftString, 1);
    CreateDataSet;
  end;

-Criando frxDbDataset para o Modal Aquaviario(Antes não existia)

Agora:

  frxModalAquaviario := TfrxDBDataset.Create(nil);
  with frxModalAquaviario do
  begin
    UserName       := 'ModalAquaviario';
    OpenDataSource := False;
    DataSet        := cdsModalAquaviario;
  end;

 

-Cirando frcDbDataSet para o Modal MultiModal(Antes não existia)

Agora:

 frxMultiModal := TfrxDBDataset.Create(nil);
  with frxMultiModal do
  begin
    UserName       := 'MultiModal';
    OpenDataSource := False;
    DataSet := cdsMultiModal;
  end;

-Adicionado no método Destroy

Agora: 

cdsModalAquaviario.Free;
cdsMultiModal.Free;

frxModalAquaviario.Free;
frxMultiModal.Free;

 

-Adicionado a procedure limpa dados 

 *OBS: Removido CdsEventos.EmptyDataSet, pois na na impressão do evento, o xml do evento é carregando antes do xml do cte, e ao executar o limpa dados ele estava limpando os dados do evento e realizando a impressão em branco, lembrando que ao carregar os dados do evento ja é executado o emptyDataSet, sendo necessário apenas remover do limpaDados;

Antes:

procedure TACBrCTeDACTEFR.LimpaDados;
begin
  cdsIdentificacao.EmptyDataSet;
  cdsEmitente.EmptyDataSet;
  cdsDestinatario.EmptyDataSet;
  cdsDadosNotasFiscais.EmptyDataSet;
  cdsParametros.EmptyDataSet;
  cdsInformacoesAdicionais.EmptyDataSet;
  cdsVolumes.EmptyDataSet;
  cdsTomador.EmptyDataSet;
  cdsExpedidor.EmptyDataSet;
  cdsRecebedor.EmptyDataSet;
  cdsRemetente.EmptyDataSet;
  cdsCalculoImposto.EmptyDataSet;
  cdsComponentesPrestacao.EmptyDataSet;
  cdsSeguro.EmptyDataSet;
  cdsModalRodoviario.EmptyDataSet;
  cdsRodoVeiculos.EmptyDataSet;
  cdsRodoValePedagio.EmptyDataSet;
  cdsRodoMotorista.EmptyDataSet;
  cdsModalAereo.EmptyDataSet;
  cdsDocAnterior.EmptyDataSet;
  cdsAnuladoComple.EmptyDataSet;
  cdsEventos.EmptyDataSet;

end;

Agora:

procedure TACBrCTeDACTEFR.LimpaDados;
begin
  cdsIdentificacao.EmptyDataSet;
  cdsEmitente.EmptyDataSet;
  cdsDestinatario.EmptyDataSet;
  cdsDadosNotasFiscais.EmptyDataSet;
  cdsParametros.EmptyDataSet;
  cdsInformacoesAdicionais.EmptyDataSet;
  cdsVolumes.EmptyDataSet;
  cdsTomador.EmptyDataSet;
  cdsExpedidor.EmptyDataSet;
  cdsRecebedor.EmptyDataSet;
  cdsRemetente.EmptyDataSet;
  cdsCalculoImposto.EmptyDataSet;
  cdsComponentesPrestacao.EmptyDataSet;
  cdsSeguro.EmptyDataSet;
  cdsModalRodoviario.EmptyDataSet;
  cdsRodoVeiculos.EmptyDataSet;
  cdsRodoValePedagio.EmptyDataSet;
  cdsRodoMotorista.EmptyDataSet;
  cdsModalAereo.EmptyDataSet;
  cdsMultiModal.EmptyDataSet;
  cdsModalAquaviario.EmptyDataSet;
  cdsDocAnterior.EmptyDataSet;
  cdsAnuladoComple.EmptyDataSet;
end;

-Adicionado FrxModalAéreo e multiModal ao relatório

Antes:

procedure TACBrCTeDACTEFR.SetDataSetsToFrxReport;
begin
  frxReport.DataSets.Clear;

  with frxReport.EnabledDataSets do
  begin
    Clear;
    Add(frxIdentificacao);
    Add(frxEmitente);
    Add(frxDestinatario);
    Add(frxDadosNotasFiscais);
    Add(frxParametros);
    Add(frxVolumes);
    Add(frxInformacoesAdicionais);
    Add(frxTomador);
    Add(frxExpedidor);
    Add(frxRecebedor);
    Add(frxRemetente);
    Add(frxCalculoImposto);
    Add(frxComponentesPrestacao);
    Add(frxSeguro);
    Add(frxModalRodoviario);
    Add(frxModalAereo);
    Add(frxRodoVeiculos);
    Add(frxRodoValePedagio);
    Add(frxRodoMotorista);
    Add(frxDocAnterior);
    Add(frxAnuladoComple);
    Add(frxEventos);
  end;
end;

Agora:

procedure TACBrCTeDACTEFR.SetDataSetsToFrxReport;
begin
  with frxReport.EnabledDataSets do
  begin
    Clear;
    Add(frxIdentificacao);
    Add(frxEmitente);
    Add(frxDestinatario);
    Add(frxDadosNotasFiscais);
    Add(frxParametros);
    Add(frxVolumes);
    Add(frxInformacoesAdicionais);
    Add(frxTomador);
    Add(frxExpedidor);
    Add(frxRecebedor);
    Add(frxRemetente);
    Add(frxCalculoImposto);
    Add(frxComponentesPrestacao);
    Add(frxSeguro);
    Add(frxModalRodoviario);
    Add(frxModalAquaviario);
    Add(frxModalAereo);
    Add(frxMultiModal);
    Add(frxRodoVeiculos);
    Add(frxRodoValePedagio);
    Add(frxRodoMotorista);
    Add(frxDocAnterior);
    Add(frxAnuladoComple);
    Add(frxEventos);
  end;
end;

 

-Adicionado CarregaMultiModal e CarregaAquaviário no procedure Carrega Dados

Antes:

procedure TACBrCTeDACTEFR.CarregaDados;
begin
  LimpaDados;

  CarregaIdentificacao;
  CarregaTomador;
  CarregaEmitente;
  CarregaRemetente;
  CarregaDestinatario;
  CarregaExpedidor;
  CarregaRecebedor;
  CarregaDadosNotasFiscais;
  CarregaParametros;
  CarregaCalculoImposto;
  CarregaVolumes;
  CarregaComponentesPrestacao;
  CarregaInformacoesAdicionais;
  CarregaSeguro;
  CarregaModalRodoviario;
  CarregaModalAereo;
  CarregaDocumentoAnterior;
  CarregaCTeAnuladoComplementado;
end;

Agora:

procedure TACBrCTeDACTEFR.CarregaDados;
begin
  LimpaDados;

  CarregaIdentificacao;
  CarregaTomador;
  CarregaEmitente;
  CarregaRemetente;
  CarregaDestinatario;
  CarregaExpedidor;
  CarregaRecebedor;
  CarregaDadosNotasFiscais;
  CarregaParametros;
  CarregaCalculoImposto;
  CarregaVolumes;
  CarregaComponentesPrestacao;
  CarregaInformacoesAdicionais;
  CarregaSeguro;
  CarregaModalRodoviario;
  CarregaModalAereo;
  CarregaMultiModal;
  CarregaModalAquaviario;
  CarregaDocumentoAnterior;
  CarregaCTeAnuladoComplementado;
end;

 

-Alterado CarregaDadosAéreo

Antes:

procedure TACBrCTeDACTEFR.CarregaModalAereo;
begin
  if FCTe.ide.modal <> mdAereo then
    Exit;

  with cdsModalAereo, CTE.infCTeNorm do
  begin
    Append;
    FieldByName('nMinu').AsInteger := aereo.nMinu;
    FieldByName('nOCA').AsString := aereo.nOCA;
    FieldByName('dPrevAereo').AsDateTime := aereo.dPrevAereo;
    FieldByName('xLAgEmi').AsString := aereo.xLAgEmi;
    FieldByName('IdT').AsString := aereo.IdT;
    FieldByName('CL').AsString := aereo.tarifa.CL;
    FieldByName('cTar').AsString := aereo.tarifa.cTar;
    FieldByName('vTar').AsCurrency := aereo.tarifa.vTar;
    FieldByName('xDime').AsString := aereo.natCarga.xDime;
    FieldByName('cInfManu').AsInteger := aereo.natCarga.cinfManu;
    FieldByName('cIMP').AsString := aereo.natCarga.cIMP;      
    Post;
  end;
end;

Agora:

procedure TACBrCTeDACTEFR.CarregaModalAereo;
begin
  if FCTe.ide.modal <> mdAereo then
    Exit;

  with cdsModalAereo, CTE.infCTeNorm do
  begin
    Append;
    FieldByName('nMinu').AsInteger := aereo.nMinu;
    FieldByName('nOCA').AsString := aereo.nOCA;
    FieldByName('dPrevAereo').AsDateTime := aereo.dPrevAereo;
    FieldByName('xLAgEmi').AsString := aereo.xLAgEmi;
    FieldByName('IdT').AsString := aereo.IdT;
    FieldByName('CL').AsString := aereo.tarifa.CL;
    FieldByName('cTar').AsString := aereo.tarifa.cTar;
    FieldByName('vTar').AsCurrency := aereo.tarifa.vTar;
    FieldByName('xDime').AsString := aereo.natCarga.xDime;
    FieldByName('cInfManu').AsInteger := aereo.natCarga.cinfManu;
    FieldByName('cIMP').AsString := aereo.natCarga.cIMP;
    FieldByName('xOrig').AsString := CTe.compl.fluxo.xOrig;
    FieldByName('xDest').AsString := CTe.compl.fluxo.xDest;
    FieldByName('xRota').AsString := CTe.compl.fluxo.xRota;
    Post;
  end;
end;

 

-Adicionar três campos(xOrig,xDest,xRota) para Modal Aéreo:

Antes:

cdsModalAereo := TClientDataSet.Create(nil);
  with cdsModalAereo, FieldDefs do
  begin
    Close;
    Clear;
    Add('nMinu', ftInteger);
    Add('nOCA', ftString, 11);
    Add('dPrevAereo', ftDateTime);
    Add('xLAgEmi', ftString, 20);
    Add('IdT', ftString, 14);
    Add('CL', ftString, 1);
    Add('cTar', ftString, 4);
    Add('vTar', ftCurrency);
    Add('xDime', ftString, 14);
    Add('cInfManu', ftInteger);
    Add('cIMP', ftString, 3);   
    CreateDataSet;
  end;

Agora:

cdsModalAereo := TClientDataSet.Create(nil);
  with cdsModalAereo, FieldDefs do
  begin
    Close;
    Clear;
    Add('nMinu', ftInteger);
    Add('nOCA', ftString, 11);
    Add('dPrevAereo', ftDateTime);
    Add('xLAgEmi', ftString, 20);
    Add('IdT', ftString, 14);
    Add('CL', ftString, 1);
    Add('cTar', ftString, 4);
    Add('vTar', ftCurrency);
    Add('xDime', ftString, 14);
    Add('cInfManu', ftInteger);
    Add('cIMP', ftString, 3);
    Add('xOrig',ftString,15);
    Add('xDest',ftString,15);
    Add('xRota',ftString,15);
    CreateDataSet;
  end;

 

- Adicionado Campo "vValePed";

Antes:

cdsRodoValePedagio := TClientDataSet.Create(nil);
  with cdsRodoValePedagio, FieldDefs do
  begin
    Close;
    Clear;
    Add('CNPJPg', ftString, 18);
    Add('CNPJForn', ftString, 18);
    Add('nCompra', ftString, 14);
    CreateDataSet;
  end;

Agora:

cdsRodoValePedagio := TClientDataSet.Create(nil);
  with cdsRodoValePedagio, FieldDefs do
  begin
    Close;
    Clear;
    Add('CNPJPg', ftString, 18);
    Add('CNPJForn', ftString, 18);
    Add('nCompra', ftString, 14);
    Add('vValePed', ftFloat);
    CreateDataSet;
  end;

 

-Alterado preenchido do RNTRC DO veiculo, para que seja impresso mesmo que o veiculo seja próprio;

Antes:

  with cdsRodoVeiculos do
  begin

{$IFDEF PL_200}
    for i := 0 to CTE.infCTeNorm.rodo.veic.Count - 1 do
    begin
      with CTE.infCTeNorm.rodo.veic.Items[i] do
      begin
{$ELSE}
    for i := 0 to CTE.rodo.veic.Count - 1 do
    begin
      with CTE.rodo.veic.Items[i] do
      begin
{$ENDIF}
        Append;
        case tpVeic of
          tvTracao: FieldByName('tpVeic').AsString  := 'Tração';
          tvReboque: FieldByName('tpVeic').AsString := 'Reboque';
        end;
        FieldByName('placa').AsString := placa;
        FieldByName('UF').AsString    := UF;
        FieldByName('RNTRC').AsString := Prop.RNTRC;
        Post;
      end;
    end;
  end;

Agora:

 with cdsRodoVeiculos do
  begin

{$IFDEF PL_200}
    for i := 0 to CTE.infCTeNorm.rodo.veic.Count - 1 do
    begin
      with CTE.infCTeNorm.rodo.veic.Items[i] do
      begin
{$ELSE}
    for i := 0 to CTE.rodo.veic.Count - 1 do
    begin
      with CTE.rodo.veic.Items[i] do
      begin
{$ENDIF}
        Append;
        case tpVeic of
          tvTracao: FieldByName('tpVeic').AsString  := 'Tração';
          tvReboque: FieldByName('tpVeic').AsString := 'Reboque';
        end;
        FieldByName('placa').AsString := placa;
        FieldByName('UF').AsString    := UF;
        if tpProp = tpProprio then
           FieldByName('RNTRC').AsString := CTe.infCTeNorm.rodo.RNTRC
        else
           FieldByName('RNTRC').AsString := Prop.RNTRC;
        Post;
      end;
    end;
  end;

 

-Corrigido impressão do Resumo

Antes:

 vResumo := '';
    // if DACTEClassOwner.ExibirResumoCanhoto then
    // begin
    // if NotaUtil.EstaVazio(DANFEClassOwner.ExibirResumoCanhoto_Texto) then
    // vResumo := 'Emissão: ' + NotaUtil.FormatDate(DateToStr(FNFe.Ide.DEmi)) + '  Dest/Reme: ' + FNFe.Dest.XNome + '  Valor Total: ' + NotaUtil.FormatFloat(FNFe.Total.ICMSTot.VNF)
    // else
    // vResumo := DANFEClassOwner.ExibirResumoCanhoto_Texto;
    // end;
    FieldByName('ResumoCanhoto').AsString := vResumo;

Agora:

vResumo := 'EMIT: '+ FCTe.Emit.xNome + ' - ' +
                     'EMISSÃO: ' + FormatDateTime('DD/MM/YYYY',FCTe.Ide.dhEmi) + '  - '+
                     'TOMADOR: ';
          if FCTe.Ide.Toma4.xNome = '' then
             begin
                case FCTe.Ide.Toma03.Toma of
                   tmRemetente:    vResumo := vResumo + FCTe.Rem.xNome;
    	              tmExpedidor:    vResumo := vResumo + FCTe.Exped.xNome;
                   tmRecebedor:    vResumo := vResumo + FCTe.Receb.xNome;
    	              tmDestinatario: vResumo := vResumo + FCTe.Dest.xNome;
                end
             end
          else
             vResumo := vResumo + FCTe.Ide.Toma4.xNome;

          vResumo := vResumo + ' - VALOR A RECEBER: R$ ' + FormatFloat('###,###,###,##0.00',FCTe.vPrest.vRec);
       end;
    FieldByName('ResumoCanhoto').AsString := vResumo;

 

-Implementando impressão do canhoto no cabeçalho/Rodapé(Igual antes no Quick,antes no fast não existia)

Agora:

if DACTEClassOwner.PosCanhoto = prCabecalho then
       FieldByName('PrintCanhoto').AsString := '0'
    else
       FieldByName('PrintCanhoto').AsString := '1';

 

-Correção da impressão Modal, estava fixo Rodoviario

Antes: FieldByName('modal').AsString := IfThen(modal = mdRodoviario, '0', '0');

Agora: FieldByName('modal').AsString := TpModalToStr(CTe.ide.modal);

 

-Implementado protocolo do cte, na impressão do evento (igual no quick)

antes: FieldByName('xJust').AsString         := InfEvento.detEvento.xJust;

agora: FieldByName('xJust').AsString         := 'Protocolo do CTe Cancelado:' + InfEvento.detEvento.nProt +sLineBreak+InfEvento.detEvento.xJust;

ACBrCTeDACTEFR.pas

DACTE.fr3

Link para o comentário
Compartilhar em outros sites

@hleorj, uma alteração proposta não foi aplicada ao SVN, acabei esquecendo de descrever ela, porém foi enviada junto no .pas, a implementação se trata do bloqueio dos botões na visualização no fast report, o usuário consegue editar a estrutura e os dados impressos no relatório, por gentileza poderia rever essa sugestão novamente ? 

abaixo código como era;

with frxReport do
  begin
    ScriptLanguage := 'PascalScript';
    StoreInDFM     := False;
    OnBeforePrint  := frxReportBeforePrint;
    OnReportPrint  := 'frxReportOnReportPrint';
  end;

Como ficou:

with frxReport do
  begin
    ScriptLanguage := 'PascalScript';
    StoreInDFM     := False;
    OnBeforePrint  := frxReportBeforePrint;
    OnReportPrint  := 'frxReportOnReportPrint';
    PreviewOptions.Buttons :=[pbPrint, pbZoom, pbFind, pbNavigator, pbExportQuick];
  end;

 

Obrigado desde já

abraço.

Link para o comentário
Compartilhar em outros sites

Desculpa, deveria ter mandado no mesmo Post,  só mais uma alteração.

Ao Realizar a impressão do CT-e, está sendo impresso o CEP do Recebedor e Expedidor mesmo se os mesmo não foram informados, no código está sendo colocado zeros(00000-000);

Segue .pas em anexo;

Como era:

FieldByName('CEP').AsString     := FormatarCEP(Poem_Zeros(CEP, 8));

Como Ficou:

FieldByName('CEP').AsString     := FormatarCEP(IntToStr(CEP));

 

Sendo assim, não será impresso zeros quando recebedor/expedidor não forem informados;

ACBrCTeDACTEFR.pas

Link para o comentário
Compartilhar em outros sites

  • Moderadores
  • Solution

@Jemison Vidal,  no svn revisão : 10676 

17/12/2015
-- ACBrCTeDACTEFR --
[*] Refatoração para corrigir erros 
       Function TACBrCTeDACTEFR.ManterCep( iCep : Integer ) : String;
       Criado para ter um unico tratamento para os CEP.
                 
[*] Adcionado : PreviewOptions.Buttons :=[pbPrint, pbZoom, pbFind, pbNavigator, pbExportQuick];
    Para o bloqueio dos botões na visualização no fast report.
    por: Henrique Leonardo

 

Fazer update .

  • Curtir 1
Equipe ACBr Henrique Leonardo
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr

Tecnólogo em processamento de dados

E-mail [email protected] - Skype : hleorj

Link para o comentário
Compartilhar em outros sites

  • hleorj locked this tópico
  • Este tópico foi criado há 3046 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.
Visitante
Este tópico está agora fechado para novas respostas
×
×
  • 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...