Ir para conteúdo
  • Cadastre-se

dev botao

Sugestão de Melhoria CT-e


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

Recommended Posts

Postado

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

  • Moderadores
Postado

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

  • 3 semanas depois ...
Postado

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

Postado

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

Postado

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

  • Moderadores
  • Solution
Postado

@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

  • hleorj locked this tópico
  • Este tópico foi criado há 3352 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...
The popup will be closed in 10 segundos...