Ir para conteúdo
  • Cadastre-se

dev botao

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

Recommended Posts

Postado

  Estou com problema no momento de enviar NFS-e, está exibindo uma mensagem ("Conjunto De Rps Transmitidos (Máximo De 50) Excedido."). Sendo que estou alimentando o objeto conforme está no exemplo, segue abaixo o código que desenvolvi para emitir a NFS-e.

  Desde já agradeço a todos pela atenção, e gostaria de ver quem pode me ajudar, para ver o que estou fazendo de errado. Abraço a todos.

 

No evento onshow (chamo a procedure p_GetParamNFSe) do form, carrego as configurações do componente, conforme o código abaixo :

 

procedure TfmMenuNotaFiscal.p_GetParamNFSe;

Var
 f_PathMensal : String;
 f_Confirma   : Boolean;
begin
  {Carregando as configurações da Nota Fiscal Serviço Eletrônica}
  Sql_Param.Close;
  Sql_Param.SQL.Clear;
  Sql_Param.SQL.Add('SELECT PAR_CAMINHO_CERTIFICADO,                                              ');
  Sql_Param.SQL.Add('       PAR_SENHA_CERTIFICADO,                                                ');
  Sql_Param.SQL.Add('       PAR_NUM_SERIE_CERTIFICADO,                                            ');
  Sql_Param.SQL.Add('       PAR_DIRETORIOXML,                                                     ');
  Sql_Param.SQL.Add('       PAR_CAMINHO_SCHEMA,                                                   ');
  Sql_Param.SQL.Add('       PAR_CAMINHO_LOGS,                                                     ');
  Sql_Param.SQL.Add('       COALESCE(PAR_COD_MUN_IBGE,0)             AS PAR_COD_MUN_IBGE,         ');
  Sql_Param.SQL.Add('       COALESCE(PAR_AMBIENTE_HOMOLOG,''2'')     AS PAR_AMBIENTE_HOMOLOG,     ');
  Sql_Param.SQL.Add('       COALESCE(PAR_VISUALIZA_MSG_WEBSRV,''N'') AS PAR_VISUALIZA_MSG_WEBSRV, ');
  Sql_Param.SQL.Add('       PAR_LOGO_PREFEITURA,                                                  ');
  Sql_Param.SQL.Add('       PAR_LOGO_EMPRESA,                                                     ');
  Sql_Param.SQL.Add('       PAR_NOME_PREFEITURA                                                   ');
  Sql_Param.SQL.Add('  FROM ESCPARA                                                               ');
  Sql_Param.Open;
 
  {$IFDEF ACBrNFSeOpenSSL}
    ACBrNFSe.Configuracoes.Certificados.Certificado  := Sql_Param.FieldByName('PAR_CAMINHO_CERTIFICADO').AsString;
    ACBrNFSe.Configuracoes.Certificados.Senha        := Sql_Param.FieldByName('PAR_SENHA_CERTIFICADO').AsString;
  {$ELSE}
    ACBrNFSe.Configuracoes.Certificados.NumeroSerie  := Sql_Param.FieldByName('PAR_NUM_SERIE_CERTIFICADO').AsString;
  {$ENDIF}
 
  ACBrNFSe.Configuracoes.Arquivos.AdicionarLiteral   := True;
  ACBrNFSe.Configuracoes.Arquivos.EmissaoPathNFSe    := True;
  ACBrNFSe.Configuracoes.Arquivos.PastaMensal        := True;
  ACBrNFSe.Configuracoes.Arquivos.PathCan            := Sql_Param.FieldByName('PAR_DIRETORIOXML').AsString;
  ACBrNFSe.Configuracoes.Arquivos.PathNFSe           := Sql_Param.FieldByName('PAR_DIRETORIOXML').AsString;
  ACBrNFSe.Configuracoes.Arquivos.Salvar             := True;
 
  f_PathMensal                                       := ACBrNFSe.Configuracoes.Arquivos.GetPathNFSe(0);
 
  ACBrNFSe.Configuracoes.Geral.PathSchemas           := Sql_Param.FieldByName('PAR_CAMINHO_SCHEMA').AsString;
  ACBrNFSe.Configuracoes.Geral.Salvar                := (Sql_Param.FieldByName('PAR_CAMINHO_LOGS').AsString <> '');
  ACBrNFSe.Configuracoes.Geral.PathSalvar            := Sql_Param.FieldByName('PAR_CAMINHO_LOGS').AsString;
 
  ACBrNFSe.Configuracoes.WebServices.CodigoMunicipio := Sql_Param.FieldByName('PAR_COD_MUN_IBGE').AsInteger;
 
  {************************}
  {        Ambiente        }
  {************************}
  { 1 - Produção           }
  { 2 - Homologação        }
  {************************}
  ACBrNFSe.Configuracoes.WebServices.Ambiente        := StrToTpAmb(f_Confirma,Sql_Param.FieldByName('PAR_AMBIENTE_HOMOLOG').AsString);
  ACBrNFSe.Configuracoes.WebServices.Visualizar      := (Sql_Param.FieldByName('PAR_VISUALIZA_MSG_WEBSRV').AsString = 'S');
 
  ACBrNFSe.Configuracoes.WebServices.SetConfigMunicipio(ACBrNFSe.Configuracoes.Geral.PathSchemas);
 
  if ACBrNFSe.DANFSe <> nil then
  begin
    ACBrNFSe.DANFSe.Logo       := Sql_Param.FieldByName('PAR_LOGO_PREFEITURA').AsString;
    ACBrNFSe.DANFSe.PrestLogo  := Sql_Param.FieldByName('PAR_LOGO_EMPRESA').AsString;
    ACBrNFSe.DANFSe.Prefeitura := Sql_Param.FieldByName('PAR_NOME_PREFEITURA').AsString;
  end;
 
  StsbInfo.Panels[1].Text := ACBrNFSe.Configuracoes.WebServices.xProvedor;
end;
 
 
No botão de emitir a nota, tenho seguinte código :
 
procedure TfmMenuNotaFiscal.SbtnEmitir_NFSeClick(Sender: TObject);
Var
  f_Numero_Rps  : Integer;
  f_Numero_Lote : Integer;
begin
  if p_VerificaSelecao = False then
  begin
     Application.MessageBox('É necessário selecionar pelo menos um registro.','Atenção',MB_ICONINFORMATION);
     Grid_NotaFiscal.SetFocus;
     Abort;
  end;
 
  PnlProcessando.Visible  := (PnlProcessando.Visible = False);
  JvGFProcessando.Animate := (PnlProcessando.Visible);
 
  Cds_Grid.First;
  Cds_Grid.DisableControls;
 
  f_Numero_Rps  := 0;
  f_Numero_Lote := 0;
 
  while not Cds_Grid.Eof  do
  begin
     if Cds_Grid.FieldByName('SELECIONADO').AsString = 'S' then
     begin
        f_Numero_Rps  := f_ProxChave('ESCPARA','PAR_NUMERO_RPS');
        f_Numero_Lote := f_ProxChave('ESCPARA','PAR_NUMERO_LOTE');
 
        ACBrNFSe.NotasFiscais.Clear;
        p_GerarNFSe(IntToStr(f_Numero_Rps),IntToStr(f_Numero_Lote));
        ACBrNFSe.Enviar(f_Numero_Lote);
 
        dmDados.Sql_Temp.Close;
        dmDados.Sql_Temp.SQL.Clear;
        dmDados.Sql_Temp.SQL.Add('UPDATE ESCNOTA SET NOT_NUMERO_RPS  = ' + IntToStr(f_Numero_Rps));
        dmDados.Sql_Temp.SQL.Add('                  ,NOT_NUMERO_LOTE = ' + IntToStr(f_Numero_Lote));
        dmDados.Sql_Temp.SQL.Add('                  ,NOT_SITUACAO    = ''E''');
        dmDados.Sql_Temp.SQL.Add(' WHERE CHV_NOTA                    = ' + IntToStr(Cds_Grid.FieldByName('SEQ_NF').AsInteger));
        dmDados.Sql_Temp.ExecSQL;
 
        dmDados.Sql_Temp.Close;
        dmDados.Sql_Temp.SQL.Clear;
        dmDados.Sql_Temp.SQL.Add('UPDATE ESCPARA SET PAR_NUMERO_RPS      = ' + IntToStr(f_Numero_Rps) );
        dmDados.Sql_Temp.SQL.Add('                  ,PAR_NUMERO_LOTE     = ' + IntToStr(f_Numero_Lote));
        dmDados.Sql_Temp.SQL.Add('                  ,PAR_DT_ULTIMA_EMISS = CURRENT_DATE              ');
        dmDados.Sql_Temp.ExecSQL;
     end;
     Cds_Grid.Next;
  end;
 
  ACBrNFSe.NotasFiscais.Clear;  
  PnlProcessando.Visible  := (PnlProcessando.Visible = False);
  JvGFProcessando.Animate := (PnlProcessando.Visible);
end;
 

A procedure p_GerarNFSe, é responsável pelos dados da NFS-e, segue abaixo a lógica utilizada (baseada no código do exemplo da NFS-e) :

 
procedure TfmMenuNotaFiscal.p_GerarNFSe(sNumNFSe, sNumLote : String);
Var
 f_ValorISS    : Double;
 f_DescServico : AnsiString;
 f_Referencia  : AnsiString;
begin
  {Procedure para geração da NFSe}
  f_ValorISS := 0;
 
  {Parâmetros para geração da NFS-e}
  Sql_Param.Close;
  Sql_Param.SQL.Clear;
  Sql_Param.SQL.Add('SELECT PAR_SERIE_NFSE,                                               ');
  Sql_Param.SQL.Add('       COALESCE(PAR_AMBIENTE_HOMOLOG,''2'') AS PAR_AMBIENTE_HOMOLOG, ');
  Sql_Param.SQL.Add('       COALESCE(PAR_ALIQUOTAISS,0)          AS PAR_ALIQUOTAISS,      ');
  Sql_Param.SQL.Add('       COALESCE(PAR_ALIQISSRETIDO,0)        AS PAR_ALIQISSRETIDO,    ');
  Sql_Param.SQL.Add('       COALESCE(PAR_COD_MUN_IBGE,0)         AS PAR_COD_MUN_IBGE,     ');
  Sql_Param.SQL.Add('       COALESCE(PAR_COD_TRIB_MUNIC,0)       AS PAR_COD_TRIB_MUNIC,   ');
  Sql_Param.SQL.Add('       PAR_CNPJ,                                                     ');
  Sql_Param.SQL.Add('       PAR_INSCRMUNICIPAL                                            ');
  Sql_Param.SQL.Add('  FROM ESCPARA                                                       ');
  Sql_Param.Open;
 
  ACBrNFSe.NotasFiscais.Clear;
  ACBrNFSe.NotasFiscais.NumeroLote                               := sNumLote;                                            
  ACBrNFSe.NotasFiscais.Add.NFSe.IdentificacaoRps.Numero         := FormatFloat('#########0', StrToInt(sNumNFSe));       
 
  {Para provedor ISS.NET em ambiente de homologação mudar a série para '8'}
  {Campo Grande o povedor é : ISSDSF                                      }
  ACBrNFSe.NotasFiscais.Add.NFSe.IdentificacaoRps.Serie          := Sql_Param.FieldByName('PAR_SERIE_NFSE').AsString;    
  ACBrNFSe.NotasFiscais.Add.NFSe.IdentificacaoRps.Tipo           := trRPS;                                               
  ACBrNFSe.NotasFiscais.Add.NFSe.DataEmissao                     := Date;                                                
  ACBrNFSe.NotasFiscais.Add.NFSe.NaturezaOperacao                := noTributacaoNoMunicipio;                             
  ACBrNFSe.NotasFiscais.Add.NFSe.RegimeEspecialTributacao        := retMicroempresaMunicipal;                            
  ACBrNFSe.NotasFiscais.Add.NFSe.OptanteSimplesNacional          := snSim;                                               
  ACBrNFSe.NotasFiscais.Add.NFSe.IncentivadorCultural            := snSim;                                               
 
  {************************}
  {        Ambiente        }
  {************************}
  { 1 - Produção           }
  { 2 - Homologação        }
  {************************}
  if Sql_Param.FieldByName('PAR_AMBIENTE_HOMOLOG').AsString = '1' then                                                   
     ACBrNFSe.NotasFiscais.Add.NFSe.Producao := snSim
  else
  if Sql_Param.FieldByName('PAR_AMBIENTE_HOMOLOG').AsString = '2'  then                                                  
     ACBrNFSe.NotasFiscais.Add.NFSe.Producao := snNao;
 
  {[srNormal,srCancelado]}
  ACBrNFSe.NotasFiscais.Add.NFSe.Status                                 := srNormal;                                     
  ACBrNFSe.NotasFiscais.Add.NFSe.OutrasInformacoes                      := 'Pagamento a Vista';                          
 
  {Usado quando o RPS for substituir outro}
  {ACBrNFSe.NotasFiscais.Add.NFSe.Numero                                := FormatFloat('#########0', StrToInt(sNumNFSe));    }
  {ACBrNFSe.NotasFiscais.Add.NFSe.IdentificacaoRps.Serie                := Sql_Param.FieldByName('PAR_SERIE_NFSE').AsString; }
  {ACBrNFSe.NotasFiscais.Add.NFSe.RpsSubstituido.Tipo                   := trRPS;                                            }  
 
 
  ACBrNFSe.NotasFiscais.Add.NFSe.Servico.Valores.ValorServicos          := Cds_Grid.FieldByName('TOTAL_NOTA').AsFloat;  
  {Valores ficaram zerado, porque na análise inicial o calculo será somente do}
  {ISS normal, no futuro se obtiver esses valores deverão ser alimentados.    }
  ACBrNFSe.NotasFiscais.Add.NFSe.Servico.Valores.ValorDeducoes          := 0.00;                                        
  ACBrNFSe.NotasFiscais.Add.NFSe.Servico.Valores.ValorPis               := 0.00;                                        
  ACBrNFSe.NotasFiscais.Add.NFSe.Servico.Valores.ValorCofins            := 0.00;                                        
  ACBrNFSe.NotasFiscais.Add.NFSe.Servico.Valores.ValorInss              := 0.00;                                        
  ACBrNFSe.NotasFiscais.Add.NFSe.Servico.Valores.ValorIr                := 0.00;                                        
  ACBrNFSe.NotasFiscais.Add.NFSe.Servico.Valores.ValorCsll              := 0.00;                                        
  {Default o iSS será normal e não retido, porque os cliente da Lets Talk, não}
  {atende esse requisito de renteção.                                         }
  ACBrNFSe.NotasFiscais.Add.NFSe.Servico.Valores.IssRetido              := stNormal;                                    
  ACBrNFSe.NotasFiscais.Add.NFSe.Servico.Valores.OutrasRetencoes        := 0.00;                                        
  ACBrNFSe.NotasFiscais.Add.NFSe.Servico.Valores.DescontoIncondicionado := 0.00;                                        
  ACBrNFSe.NotasFiscais.Add.NFSe.Servico.Valores.DescontoCondicionado   := 0.00;                                        
 
  {Base de calculo será o valor total da nota, esse valor já esta deduzido os, }
  {descontos e embutido os acréscimos. Então a base de calculo sempre será o   }
  {o valor total da nota.                                                      }
  ACBrNFSe.NotasFiscais.Add.NFSe.Servico.Valores.BaseCalculo            := Cds_Grid.FieldByName('TOTAL_NOTA').AsFloat;  
  ACBrNFSe.NotasFiscais.Add.NFSe.Servico.Valores.Aliquota               := Sql_Param.FieldByName('PAR_ALIQUOTAISS').AsFloat; 
 
  if ACBrNFSe.NotasFiscais.Add.NFSe.Servico.Valores.IssRetido = stNormal then                                           
  begin
     f_ValorISS := dmFuncoes.F_RoundTo((Cds_Grid.FieldByName('TOTAL_NOTA').AsFloat * Sql_Param.FieldByName('PAR_ALIQUOTAISS').AsFloat)/100,-2);
     ACBrNFSe.NotasFiscais.Add.NFSe.Servico.Valores.ValorIss            := dmFuncoes.F_RoundTo(f_ValorISS,-2);
     ACBrNFSe.NotasFiscais.Add.NFSe.Servico.Valores.ValorIssRetido      := 0.00;
  end
  else
  begin
     f_ValorISS := dmFuncoes.F_RoundTo((Cds_Grid.FieldByName('TOTAL_NOTA').AsFloat * Sql_Param.FieldByName('PAR_ALIQISSRETIDO').AsFloat)/100,-2);
     ACBrNFSe.NotasFiscais.Add.NFSe.Servico.Valores.ValorIss        := 0.00;
     ACBrNFSe.NotasFiscais.Add.NFSe.Servico.Valores.ValorIssRetido  := dmFuncoes.F_RoundTo(f_ValorISS,-2);
  end;
 
  ACBrNFSe.NotasFiscais.Add.NFSe.Servico.Valores.ValorLiquidoNfse  := ACBrNFSe.NotasFiscais.Add.NFSe.Servico.Valores.ValorServicos          - 
                                                                      ACBrNFSe.NotasFiscais.Add.NFSe.Servico.Valores.ValorPis               -
                                                                      ACBrNFSe.NotasFiscais.Add.NFSe.Servico.Valores.ValorCofins            -
                                                                      ACBrNFSe.NotasFiscais.Add.NFSe.Servico.Valores.ValorInss              -
                                                                      ACBrNFSe.NotasFiscais.Add.NFSe.Servico.Valores.ValorIr                -
                                                                      ACBrNFSe.NotasFiscais.Add.NFSe.Servico.Valores.ValorCsll              -
                                                                      ACBrNFSe.NotasFiscais.Add.NFSe.Servico.Valores.OutrasRetencoes        -
                                                                      ACBrNFSe.NotasFiscais.Add.NFSe.Servico.Valores.ValorIssRetido         -
                                                                      ACBrNFSe.NotasFiscais.Add.NFSe.Servico.Valores.DescontoIncondicionado -
                                                                      ACBrNFSe.NotasFiscais.Add.NFSe.Servico.Valores.DescontoCondicionado;
 
  ACBrNFSe.NotasFiscais.Add.NFSe.Servico.ItemListaServico          := '14.01';
  ACBrNFSe.NotasFiscais.Add.NFSe.Servico.CodigoTributacaoMunicipio := IntToStr(Sql_Param.FieldByName('PAR_COD_TRIB_MUNIC').AsInteger);
  ACBrNFSe.NotasFiscais.Add.NFSe.Servico.Discriminacao             := 'discriminacao';
 
  {Para o provedor ISS.Net em ambiente de homologação o código de Município }
  {tem que ser 999.                                                         }
  ACBrNFSe.NotasFiscais.Add.NFSe.Servico.CodigoMunicipio           := IntToStr(Sql_Param.FieldByName('PAR_COD_MUN_IBGE').AsInteger);
  ACBrNFSe.NotasFiscais.Add.NFSe.Servico.ExigibilidadeISS          := exiExigivel;
  ACBrNFSe.NotasFiscais.Add.NFSe.Servico.CodigoPais                := 1058; {Brasil}
  ACBrNFSe.NotasFiscais.Add.NFSe.Servico.MunicipioIncidencia       := StrToIntDef(IntToStr(Sql_Param.FieldByName('PAR_COD_MUN_IBGE').AsInteger), 0);
 
  SqlScript.Close;
  SQLScript.SQL.Clear;
  SqlScript.SQL.Add('SELECT DISTINCT EI.ITE_TIPO_PARC ');
  SqlScript.SQL.Add('  FROM ESCITEMNOTA EI            ');
  SqlScript.SQL.Add(' WHERE EI.CHV_NOTA = :pCHV_NOTA  ');
  SqlScript.SQL.Add(' ORDER BY EI.ITE_TIPO_PARC       ');
  SQLScript.ParamByName('pCHV_NOTA').AsInteger := Cds_Grid.FieldByName('SEQ_NF').AsInteger;
  SQLScript.Open;
  SQLScript.First;
 
  f_DescServico := '';
 
  while not SQLScript.Eof do
  begin
     if SQLScript.FieldByName('ITE_TIPO_PARC').AsString = 'A' then  {Matricula}
     begin
        dmDados.Sql_Temp.Close;
        dmDados.Sql_Temp.SQL.Clear;
        dmDados.Sql_Temp.SQL.Add('SELECT DISTINCT EP.PES_NOME                  ');
        dmDados.Sql_Temp.SQL.Add('  FROM ESCITEMNOTA EI,                       ');
        dmDados.Sql_Temp.SQL.Add('       ESCMATR     EM,                       ');
        dmDados.Sql_Temp.SQL.Add('       ESCALUN     EA,                       ');
        dmDados.Sql_Temp.SQL.Add('       ESCPESS     EP,                       ');
        dmDados.Sql_Temp.SQL.Add('       ESCPARC     ER                        ');
        dmDados.Sql_Temp.SQL.Add(' WHERE EI.CHV_NOTA      = :pCHV_NOTA         ');
        dmDados.Sql_Temp.SQL.Add('   AND EI.CHV_MATRICULA = EM.CHV_MATRICULA   ');
        dmDados.Sql_Temp.SQL.Add('   AND EM.CHV_ALUNO     = EA.CHV_ALUNO       ');
        dmDados.Sql_Temp.SQL.Add('   AND EP.CHV_PESSOAS   = EA.CHV_PESSOAS     ');
        dmDados.Sql_Temp.SQL.Add('   AND EI.chv_parcela   = ER.chv_parcela     ');
        dmDados.Sql_Temp.SQL.Add('   AND ER.par_tipo      = ''A''              ');
        dmDados.Sql_Temp.ParamByName('pCHV_NOTA').AsInteger := Cds_Grid.FieldByName('SEQ_NF').AsInteger;
        dmDados.Sql_Temp.Open;
        dmDados.Sql_Temp.First;
 
        f_Referencia  := '';
 
        while not dmDados.Sql_Temp.Eof do
        begin
           if Trim(f_Referencia) = '' then
              f_Referencia := dmDados.Sql_Temp.FieldByName('PES_NOME').AsString
           else
              f_Referencia := f_Referencia + ',' + dmDados.Sql_Temp.FieldByName('PES_NOME').AsString;
 
         dmDados.Sql_Temp.Next;
        end;
 
        f_DescServico := 'MATRÍCULA DO CURSO DE INGLÊS DO(S) ALUNO(S) ' + f_Referencia;
     end;
 
     if SQLScript.FieldByName('ITE_TIPO_PARC').AsString = 'M' then {Mensalidade}
     begin
       f_Referencia  := '';
 
       dmDados.Sql_Temp.Close;
       dmDados.Sql_Temp.SQL.Clear;
       dmDados.Sql_Temp.SQL.Add('SELECT DISTINCT COALESCE(EC.PAR_REFERENCIA,0) AS PAR_REFERENCIA, ');
       dmDados.Sql_Temp.SQL.Add('       COALESCE(EM.MAT_ANO,0)                 AS MAT_ANO         ');
       dmDados.Sql_Temp.SQL.Add('  FROM ESCITEMNOTA EI,                                           ');
       dmDados.Sql_Temp.SQL.Add('       ESCPARC     EC,                                           ');
       dmDados.Sql_Temp.SQL.Add('       ESCMATR     EM                                            ');
       dmDados.Sql_Temp.SQL.Add(' WHERE EI.CHV_NOTA      = :pCHV_NOTA                             ');
       dmDados.Sql_Temp.SQL.Add('   AND EI.CHV_PARCELA   = EC.CHV_PARCELA                         ');
       dmDados.Sql_Temp.SQL.Add('   AND EC.CHV_MATRICULA = EM.CHV_MATRICULA                       ');
       dmDados.Sql_Temp.SQL.Add('   AND EC.PAR_TIPO      = ''M''                                  ');
       dmDados.Sql_Temp.ParamByName('pCHV_NOTA').AsInteger := Cds_Grid.FieldByName('SEQ_NF').AsInteger;
       dmDados.Sql_Temp.Open;
       dmDados.Sql_Temp.First;
 
       while not dmDados.Sql_Temp.Eof do
       begin
          if Trim(f_Referencia) = '' then
             f_Referencia := IntToStr(dmDados.Sql_Temp.FieldByName('PAR_REFERENCIA').AsInteger)
          else
             f_Referencia := f_Referencia + ',' + IntToStr(dmDados.Sql_Temp.FieldByName('PAR_REFERENCIA').AsInteger);
 
          dmDados.Sql_Temp.Next;
       end;
       f_Referencia := f_Referencia + '/' + IntToStr(dmDados.Sql_Temp.FieldByName('MAT_ANO').AsInteger);
 
       if Trim(f_DescServico) <> '' then
          f_DescServico := f_DescServico + 'MENSALIDADE DAS AULAS DE INGLÊS REF. AO MÊS '     + f_Referencia
       else
          f_DescServico := f_DescServico + ' / MENSALIDADE DAS AULAS DE INGLÊS REF. AO MÊS '  + f_Referencia;;
     end;
     SQLScript.Next;
  end;
 
  ACBrNFSe.NotasFiscais.Add.NFSe.Servico.ItemServico.Add.Descricao     := f_DescServico;
  ACBrNFSe.NotasFiscais.Add.NFSe.Servico.ItemServico.Add.Quantidade    := 1;                              
  ACBrNFSe.NotasFiscais.Add.NFSe.Servico.ItemServico.Add.ValorUnitario := Cds_Grid.FieldByName('TOTAL_NOTA').AsFloat;
  ACBrNFSe.NotasFiscais.Add.NFSe.Prestador.Cnpj                        := dmFuncoes.StrZero(dmKernel.F_SoNumeros(Sql_Param.FieldByName('PAR_CNPJ').AsString),14,0); 
  ACBrNFSe.NotasFiscais.Add.NFSe.Prestador.InscricaoMunicipal          := dmFuncoes.StrZero(dmKernel.F_SoNumeros(Sql_Param.FieldByName('PAR_INSCRMUNICIPAL').AsString),6,0);
  {Para Provedor ISSDigital}
  ACBrNFSe.NotasFiscais.Add.NFSe.Prestador.Senha                       := 'senha';             
  ACBrNFSe.NotasFiscais.Add.NFSe.Prestador.FraseSecreta                := 'frase secreta';
  ACBrNFSe.NotasFiscais.Add.NFSe.Prestador.cUF                         := 33;
  {Tomador}
  ACBrNFSe.NotasFiscais.Add.NFSe.Tomador.IdentificacaoTomador.CpfCnpj  := dmKernel.F_SoNumeros(Cds_Grid.FieldByName('PES_CPF').AsString); 
  ACBrNFSe.NotasFiscais.Add.NFSe.Tomador.RazaoSocial                   := dmFuncoes.F_SemAcento(Cds_Grid.FieldByName('RESP_FINANCEIRO').AsString); 
  ACBrNFSe.NotasFiscais.Add.NFSe.Tomador.Endereco.Endereco             := dmFuncoes.F_SemAcento(Cds_Grid.FieldByName('PES_ENDERECO').AsString); 
  ACBrNFSe.NotasFiscais.Add.NFSe.Tomador.Endereco.Numero               := dmFuncoes.F_SemAcento(Cds_Grid.FieldByName('PES_ENDNUMERO').AsString);
  ACBrNFSe.NotasFiscais.Add.NFSe.Tomador.Endereco.Complemento          := dmFuncoes.F_SemAcento(Cds_Grid.FieldByName('PES_COMPLEMENTO').AsString);
  ACBrNFSe.NotasFiscais.Add.NFSe.Tomador.Endereco.Bairro               := dmFuncoes.F_SemAcento(Cds_Grid.FieldByName('PES_BAIRRO').AsString); 
  ACBrNFSe.NotasFiscais.Add.NFSe.Tomador.Endereco.CodigoMunicipio      := IntToStr(Cds_Grid.FieldByName('PES_CODMUNIBGE').AsInteger); 
  ACBrNFSe.NotasFiscais.Add.NFSe.Tomador.Endereco.UF                   := dmFuncoes.F_SemAcento(Cds_Grid.FieldByName('PES_UF').AsString);
  ACBrNFSe.NotasFiscais.Add.NFSe.Tomador.Endereco.CEP                  := dmFuncoes.StrZero(dmKernel.F_SoNumeros(Cds_Grid.FieldByName('PES_CEP').AsString),8,0);
  ACBrNFSe.NotasFiscais.Add.NFSe.Tomador.Endereco.xPais                := 'BRASIL';
 
  
  if Trim(Cds_Grid.FieldByName('PES_CEP').AsString) <> '' then
  begin
     ACBrNFSe.NotasFiscais.Add.NFSe.Tomador.Contato.Telefone           := dmFuncoes.StrZero(dmKernel.F_SoNumeros(Cds_Grid.FieldByName('PES_DDTELEFONE').AsString),3,0) +
                                                                          dmKernel.F_SoNumeros(Cds_Grid.FieldByName('PES_FONE').AsString);
  end
  else
  begin
     ACBrNFSe.NotasFiscais.Add.NFSe.Tomador.Contato.Telefone           := '';
  end;
 
  ACBrNFSe.NotasFiscais.Add.NFSe.Tomador.Contato.Email                 := dmFuncoes.F_SemAcento(Cds_Grid.FieldByName('PES_EMAIL').AsString);
end;
 

 

  • Moderadores
Postado

Boa tarde, quando precisar postar um código anexe o mesmo em um arquivo assim ficará com o tópico organizado e de melhor leitura!

 

Lembro de alguém ter postado a mesma situação mas não sei se é a mesma cidade

o Italo respondeu a questão, tente pesquisar pela mensagem excedida para ver se lhe ajuda! 

Consultor SAC ACBr Juliomar Marchetti
 

Projeto ACBr

skype: juliomar
telegram: juliomar
e-mail: [email protected]
http://www.juliomarmarchetti.com.br
MVP_NewLogo_100x100_Transparent-02.png
 

 

Postado

  Juiomar,

 

  Nos proximos post usarei essa opção de anexa, agradeço pela dica. Eu vi o outro post, mas o colega disse que no post que estava errado a forma que foi implementado, não disse qual o motivo, então não me ajudou, por isso coloquei o código no post. Tem alguém que passou por este problema ou pode me orientar o que estou fazendo de errado ? Tentei seguir o exemplo do demo da NFSe.

  • Este tópico foi criado há 4136 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.