Ir para conteúdo
  • Cadastre-se

mkvendas2006

Membros
  • Total de ítens

    39
  • Registro em

  • Última visita

Posts postados por mkvendas2006

  1. Bom Dia,

     

     

    Estou tentando fazer uma NF exportação, já estou passando os campos:

     

            Dest.EnderDest.cMun    := 9999999;
            Dest.EnderDest.xMun    := 'EXTERIOR';
            Dest.EnderDest.UF      := 'EX';
     
     
     
            exporta.xLocEmbarq             := quDadoEmit.FieldByName('NOMECID').AsString;
            exporta.UFEmbarq               := 'RS';
     
     
    Porem ele não cria a tag xLocEmbarq   e UFEmbraq.
     
     
    Alguem pode me ajudar?

     

    43140502660465000102550010000001321000001327-NFe.xml

  2. Boa Noite!

     

     

    Minha cidade não é atendida pelo ACBR que é Blumenau - SC o layout aqui é SP com algumas mudanças, quero implementar ele no meu sistema mas quero aproveitar algumas funções do ACBR, alguem pode me dar uma Luz por onde começar ou qualquer outra dica?

     

    Para que serve os Schemas eu uso eles para gerar o xml?


    Maicon

  3. CavaloMarinho,

     

    Lhe recomendo sempre gravar no BD o XML cancelado e o XML autorizado, veja abaixo a minha rotina, eu busco o XML salvo no HD e insiro no BD:

     

    Assim, você organiza e tem mais segurança.

     

     

    procedure TfrmNotaFiscal.CancelarNFe1Click(Sender: TObject);
    var
      idLote, CNPJ, Justificativa : string;
      quGeral, quCrTit: TADOQuery;
    begin
      quCrTit := TADOQuery.Create(Self);
      quCrTit.Connection := frmPrincipal.BD;
      quCrTit.SQL.Add('SELECT 1 FROM NOTAVENPARCEL T0');
      quCrTit.SQL.Add('WHERE T0.CODIGO = '+Codigo.Text);
      quCrTit.SQL.Add('AND T0.CODEMP = '+frmPrincipal.EmpAtiva);
      quCrTit.SQL.Add('AND T0.VALORPARCELA <> T0.VALORABERTO');
      quCrTit.Open;
      if quCrTit.IsEmpty then
      begin
        IniciaComponente;
        CNPJ := copy(ChaveNFe.Text,7,14);
        Justificativa := 'Justificativa do Cancelamento';
        if not(InputQuery('WebServices Eventos: Cancelamento', 'Justificativa do Cancelamento', Justificativa)) then
           exit;
     
        ACBNF.EventoNFe.Evento.Clear;
        with ACBNF.EventoNFe.Evento.Add do
         begin
           infEvento.chNFe := ChaveNFe.Text;
           infEvento.CNPJ   := copy(ChaveNFe.Text,7,14);
           infEvento.dhEvento := now;
           infEvento.tpEvento := teCancelamento;
           infEvento.detEvento.xJust := Justificativa;
           infEvento.detEvento.nProt := Protocolo.Text;
         end;
        try
          ACBNF.EnviarEventoNFe(StrToInt(Codigo.Text));
          //verificar ainda se foi baixado o titulo
          CodigoNFe.Text := IntToStr(ACBNF.WebServices.EnvEvento.EventoRetorno.retEvento.Items[0].RetInfEvento.cStat);
          MsgSefaz.Lines.Add('Justificativa: '+Justificativa);
          MsgSefaz.Lines.Add(
          DateTimeToStr(ACBNF.WebServices.EnvEvento.EventoRetorno.retEvento.Items[0].RetInfEvento.dhRegEvento) + ': ' +
          ACBNF.WebServices.EnvEvento.EventoRetorno.retEvento.Items[0].RetInfEvento.xMotivo);
          if CodigoNFe.Text = '135' then
          begin
            Status.ItemIndex := 6;
            EstornaEstoque;
            InserirXMLdaNFe(ChaveNFe.Text + '1101111-ProcEventoNFe.xml', 'Can');
            ACBNF.Free;
            ShowMessage('Nota Fiscal Cancelada com Exito.');
          end
          else
          begin
            quGeral := TADOQuery.Create(Self);
            quGeral.Connection := frmPrincipal.BD;
            quGeral.SQL.Add('UPDATE NOTAVENCAB');
            quGeral.SQL.Add('SET MSGSEFAZ = :MSGSEFAZ');
            quGeral.SQL.Add('WHERE CODIGO = '+Codigo.Text);
            quGeral.SQL.Add('AND CODEMP = '+frmPrincipal.EmpAtiva);
            quGeral.Parameters.ParamByName('MSGSEFAZ').Value := MsgSefaz.Text;
            quGeral.ExecSQL;
            quGeral.Free;
            ACBNF.Free;
            MessageDlg('Erro ao cancelar a NF:  '+#13+ACBNF.WebServices.EnvEvento.EventoRetorno.retEvento.Items[0].RetInfEvento.xMotivo, mtError, [mbOK], 0);
          end;
     
        Except
          on e:exception do
          begin
            CodigoNFe.Text := IntToStr(ACBNF.WebServices.EnvEvento.cStat);
            MsgSefaz.Lines.Add(DateTimeToStr(now) + ': '+ACBNF.WebServices.EnvEvento.xMotivo);
            MsgSefaz.Lines.Add(DateTimeToStr(now) + ': '+E.Message);
            ACBNF.Free;
            MessageDlg('Erro ao cancelar a NF:  '+#13+E.Message, mtError, [mbOK], 0);
          end;
        end;
      end
      else
      begin
        MessageDlg('Erro ao cancelar a nota fiscal já possui baixas.'+sLineBreak+'Cancele a baixa e tente baixar novamente.', mtError, [mbOK], 0);
      end;
    end;
  4. Boa Tarde,

     

     

    Estou iniciando o SPED fiscal do zero no meu sistema, mas antes de começar gerei um arquivo pelo exemplo do ACBR e apresentaram vários erros no PVA, alguem tem um exemplo que não gere erros? 


    Tenho medo de me guiar por lá pra fazer e eu faça errado.

     

     

    Estou usando o PVA 2.0.30.

     

    Em anexo os erros.

     

     

     

    Maicon

    post-3149-0-27262200-1358782214_thumb.jp

  5. Bom Dia Jeter,

     

    Sim, o de semana passada ele adicionava o '0' na linha digitavel, mas adicionando no Código cedente:

     

    Agencia + Código Cedente ele leva isso tudo pra linha digitavel, aonde acaba ficando errado, por exemplo:

     

     

    Agencia: 01660

    Codigo Cedente: 1660870000000322 se deixar assim fecha a Remessa, mas ai quebra a linha digitavel do boleto, pois ele manda o código inteiro: 1660870000000322

     

    Agora se informar o código cedente sem a agencia, fecha 100%.

     

    SDS

    Maicon

  6. Bom Dia Juliana,

     

     

    Se informar a agencia junto ao código cedente ele não fecha a linha digitável do boleto, ele acaba jogando o 1660 para a linha.

     

    Se eu retirar o 1660 o boleto fecha em 100%, mas ai não fecha na remessa.

     

    Neste caso acho que na geração da remessa ele deve pegar a Agencia + Codigo Cedente.

     

    OK?


    Maicon

  7. Amigo segue minha procedure para geração de boletos, faço um select e imprimo conforme cadastro.

     

     

     

    var
      Titulo    : TACBrTitulo;
      I, SeqR  : Integer;
      NossoNu, NumDc : String;
      quTitulos, quGeral: TADOQuery;
      ACBrBoleto1 : TACBrBoleto;
      ACBrBoletoFCFR1 : TACBrBoletoFCFR;
    begin
      quTitulos            := TADOQuery.Create(nil);
      quTitulos.Connection := frmPrincipal.BD;
     
      quGeral            := TADOQuery.Create(nil);
      quGeral.Connection := frmPrincipal.BD;
     
      ACBrBoleto1 := TACBrBoleto.Create(nil);
      ACBrBoletoFCFR1 := TACBrBoletoFCFR.Create(nil);
     
      quTitulos.SQL.Add('SELECT T0.DTLANCAMENTO, T0.NRNOTA, T2.LOCALPAGAMENTO, T1.DTVENCIMENTO, T1.NOSSONUM, T1.NUMDOC NUMDOCP, ');
      quTitulos.SQL.Add('T1.VALORPARCELA, T1.LINHA, T2.ESPECIEDOC, T2.ESPECIE, T2.ACEITE, T2.NOSSONUMERO, T2.CARTEIRA, ');
      quTitulos.SQL.Add('T2.AGENCIA, T2.DIGITOAG, T2.CONTACORRENTE, T2.DIGITOCC, T2.LAYOUT, T2.CAMINHOREMESSA, ');
      quTitulos.SQL.Add('T2.CONVENIO, T2.CODIGOCEDENTE, T2.TAMANHONOSSONUM, T2.CNAB, T2.NOMEARQ, T2.CODIGO TIPOCOB,');
      quTitulos.SQL.Add('T2.MSG1, T2.MSG2, T2.NDIASPROTESTO, T2.CARACTBOLETO, T2.NUMDOC, T3.PESSOA, ');
      quTitulos.SQL.Add('T3.NOME, T3.PESSOA, CASE WHEN T3.PESSOA = 0 THEN ');
      quTitulos.SQL.Add('T3.CNPJ WHEN T3.PESSOA = 1 THEN ');
      quTitulos.SQL.Add('T3.CPF ELSE T3.CNPJESTRANGEIRO END CNPJCPF, ');
      quTitulos.SQL.Add('T3.NOME, T3.PESSOA, T3.RUACOB, T3.NOCOB, T3.BAIRROCOB, T3.CEPCOB,');
      quTitulos.SQL.Add('T4.NOME CIDADE, T5.NOME ESTADO');
      quTitulos.SQL.Add('FROM NOTAVENCAB T0');
      quTitulos.SQL.Add('INNER JOIN NOTAVENPARCEL T1 ON (T1.CODIGO = T0.CODIGO AND T1.CODEMP = T0.CODEMP)');
      quTitulos.SQL.Add('INNER JOIN TIPOCOB T2 ON (T2.CODIGO = T0.TIPOCOB)');
      quTitulos.SQL.Add('INNER JOIN NEGOCIO T3 ON (T3.CODIGO = T0.CODNEGOCIO)');
      quTitulos.SQL.Add('LEFT OUTER JOIN CIDADE T4 ON (T4.CODIGO = T3.CIDADECOB)');
      quTitulos.SQL.Add('LEFT OUTER JOIN ESTADO T5 ON (T5.CODIGO = T3.ESTADOCOB)');
      quTitulos.SQL.Add('WHERE T0.CODIGO = '+ CodigoDoc +' AND T0.CODEMP = '+frmPrincipal.EmpAtiva);
      quTitulos.Open;
     
      {Dados do cedente}
      ACBrBoleto1.Banco.TipoCobranca := TACBrTipoCobranca(quTitulos.FieldByName('LAYOUT').AsInteger);
      ACBrBoleto1.Cedente.Nome := frmPrincipal.NomeEmp;
      ACBrBoleto1.Cedente.CNPJCPF := frmPrincipal.CNPJ;
      ACBrBoleto1.Cedente.CodigoCedente := quTitulos.FieldByName('CODIGOCEDENTE').AsString;
      ACBrBoleto1.Cedente.Convenio := quTitulos.FieldByName('CONVENIO').AsString;
      ACBrBoleto1.Cedente.Agencia := quTitulos.FieldByName('AGENCIA').AsString;
      ACBrBoleto1.Cedente.AgenciaDigito := quTitulos.FieldByName('DIGITOAG').AsString;
      ACBrBoleto1.Cedente.Conta := quTitulos.FieldByName('CONTACORRENTE').AsString;
      ACBrBoleto1.Cedente.ContaDigito := quTitulos.FieldByName('DIGITOCC').AsString;
      ACBrBoleto1.ACBrBoletoFC := ACBrBoletoFCFR1;
      ACBrBoletoFCFR1.FastReportFile := ExtractFilePath(Application.ExeName)+ '\Reports\BoletoFR.fr3';
      ACBrBoleto1.Banco.TamanhoMaximoNossoNum := quTitulos.FieldByName('TAMANHONOSSONUM').AsInteger;
      ACBrBoleto1.DirArqRemessa := quTitulos.FieldByName('CAMINHOREMESSA').AsString;
      ACBrBoleto1.NomeArqRemessa := IntToStr(SeqR) + quTitulos.FieldByName('NOMEARQ').AsString;
      ACBrBoleto1.LayoutRemessa := iif(quTitulos.FieldByName('CNAB').AsInteger = 240, c240, c400);
      ACBrBoleto1.Cedente.TipoInscricao := iif(quTitulos.FieldByName('PESSOA').AsInteger = 0, pJuridica, pFisica);
      ACBrBoleto1.Cedente.CaracTitulo := TAcbrCaracTitulo(quTitulos.FieldByName('CARACTBOLETO').AsInteger);
     
       while (not quTitulos.Eof) do
       begin
        if (not Reimpressao) then
        begin
          quGeral.SQL.Clear;
          quGeral.SQL.Add('SELECT MAX(CAST(T1.NOSSONUM AS NUMERIC(30,0))) +1 MAXNOSSONUM, ');
          quGeral.SQL.Add('MAX(CAST(T1.NUMDOC AS NUMERIC(30,0))) +1 MAXNUMDOC  FROM NOTAVENCAB T0 ');
          quGeral.SQL.Add('INNER JOIN NOTAVENPARCEL T1 ON (T1.CODIGO = T0.CODIGO AND T1.CODEMP = T0.CODEMP) ');
          quGeral.SQL.Add('WHERE T0.CODEMP = '+frmPrincipal.EmpAtiva);
          quGeral.SQL.Add('AND T0.TIPOCOB = '+quTitulos.FieldByName('TIPOCOB').AsString);
          quGeral.Open;
          if quGeral.FieldByName('MAXNOSSONUM').AsFloat > quTitulos.FieldByName('NOSSONUMERO').AsFloat then
            NossoNu := quGeral.FieldByName('MAXNOSSONUM').AsString
          else
            NossoNu := quTitulos.FieldByName('NOSSONUMERO').AsString;
     
          if quGeral.FieldByName('MAXNUMDOC').AsFloat > quTitulos.FieldByName('NUMDOC').AsFloat then
            NumDc := quGeral.FieldByName('MAXNUMDOC').AsString
          else
            NumDc := quTitulos.FieldByName('NUMDOC').AsString;
        end
        else
        begin
          NossoNu := quTitulos.FieldByName('NOSSONUMERO').AsString;
          NumDc := quTitulos.FieldByName('NUMDOCP').AsString;
        end;
     
        Titulo:= ACBrBoleto1.CriarTituloNaLista;
     
        with Titulo do
        begin
          LocalPagamento    := quTitulos.FieldByName('LOCALPAGAMENTO').AsString;
          Vencimento        := IncMonth(quTitulos.FieldByName('DTVENCIMENTO').AsDateTime ,I);
          DataDocumento     := quTitulos.FieldByName('DTLANCAMENTO').AsDateTime;
          NumeroDocumento   := padR(NumDc,6,'0');
          EspecieDoc        := quTitulos.FieldByName('ESPECIEDOC').AsString;
          EspecieMod        := quTitulos.FieldByName('ESPECIE').AsString;
          Aceite            := iif(quTitulos.FieldByName('ACEITE').AsString = 'S', atSim, atNao);
          DataProcessamento := Now;
          NossoNumero       := NossoNu;
          Carteira          := quTitulos.FieldByName('CARTEIRA').AsString;
          ValorDocumento    := quTitulos.FieldByName('VALORPARCELA').AsFloat;;
          Sacado.NomeSacado := quTitulos.FieldByName('NOME').AsString;
          Sacado.CNPJCPF    := quTitulos.FieldByName('CNPJCPF').AsString;
          Sacado.Logradouro := quTitulos.FieldByName('RUACOB').AsString;
          Sacado.Numero     := quTitulos.FieldByName('NOCOB').AsString;
          Sacado.Bairro     := quTitulos.FieldByName('BAIRROCOB').AsString;
          Sacado.Cidade     := quTitulos.FieldByName('CIDADE').AsString;
          Sacado.UF         := quTitulos.FieldByName('ESTADO').AsString;
          Sacado.CEP        := quTitulos.FieldByName('CEPCOB').AsString;
          ValorAbatimento   := 0;
          if quTitulos.FieldByName('NDIASPROTESTO').AsInteger > 0 then
            DataProtesto      := quTitulos.FieldByName('DTVENCIMENTO').AsDateTime + quTitulos.FieldByName('NDIASPROTESTO').AsInteger;
          Mensagem.Text  := Msg;
          Instrucao1        := '00';
          Instrucao2        := '00';
          Mensagem.Add(quTitulos.FieldByName('MSG1').AsString);
          Mensagem.Add(quTitulos.FieldByName('MSG2').AsString);
          ACBrBoleto1.AdicionarMensagensPadroes(Titulo,Mensagem);
         end;
     
        if (not Reimpressao) then
        begin
          quGeral.SQL.Clear;
          quGeral.SQL.Add('UPDATE NOTAVENPARCEL ');
          quGeral.SQL.Add('SET NOSSONUM = '+''''+Titulo.NossoNumero+''',');
          quGeral.SQL.Add('RMSEXPORTADO = ''N'', ');
          quGeral.SQL.Add('SEQRMSMAX = 0,');
          quGeral.SQL.Add('NUMDOC = '+''''+Titulo.NumeroDocumento+'''');
          quGeral.SQL.Add('WHERE CODIGO = '+CodigoDoc);
          quGeral.SQL.Add('AND CODEMP = '+frmPrincipal.EmpAtiva);
          quGeral.SQL.Add('AND LINHA = '+quTitulos.FieldByName('LINHA').AsString);
          quGeral.ExecSQL;
        end;
     
         quTitulos.Next;
       end;
      ACBrBoleto1.Imprimir;
      quTitulos.Free;
      quGeral.Free;
      ACBrBoleto1.Free;
      ACBrBoletoFCFR1.Free;
     
  8. Boa Noite Juliana,

     

    A Questão da data do desconto vou analisar mais e te passo.

     

    Mas no segmento Q o manual diz o seguinte:

     

    17.3Q Tipo Tipo de Inscrição 154 154 1 - Num *G005

     

     

    G005 Tipo de Inscrição da Empresa
    Código que identifica o tipo de inscrição da Empresa ou Pessoa Física.
    '1' = CPF
    '2' = CGC / CNPJ
    G005
     
     
    E o ACBR está enviando sempre '0'.
     
     
    OK?
     
     
    Conversamos sobre a outra questão ainda.
     
     
    SDS

    Maicon
  9. Olá.

     

     

    No Segmento Q também precisa informar o tipo de inscrição da empresa, estou passando no validador e também da erro.

     

     

     

     

                   '0'                                                        + // 154 a 154  - Tipo de inscrição: Não informado
     
    Deve vir:
     
                   ATipoInscricao                               + //  154 a 154 - Tipo de inscrição do cedente
     
     
     
    Em anexo uma remessa gerada pelo próprio sistema da CAIXA.
     
     
     
    Maicon
     

    E1300196.rar

    E1300196.rar

  10. Boa Tarde,

     

    Se eu não preencher o valor de desconto ele não preenche a data de desconto do titulo, que é obrigatório informar.

     

    A data de desconto fica na posição: 

     

    31.3P Data Desc. Data do Desconto 143 150 8 - Num C022

     

    Deixando o valor de desconto 0 ele preenche a DataDesconto = 00000000

     

     

          if (ValorDesconto > 0) then
           begin
             if (DataDesconto <> Null) then
                ADataDesconto := FormatDateTime('ddmmyyyy', DataDesconto)
             else
                ADataDesconto := padR('', 8, '0');
           end
          else
             ADataDesconto := padR('', 8, '0');
     
     
    Este seria o ultimo erro encontrado para validar essa remessa.
     
     
     
    SDS


    Maicon

     

  11. Boa Tarde Juliana,

     

    Observei que mudou alguma coisa, mas ainda falta um detalhe:

     

     

         if (not LeCedenteRetorno) and ((rAgencia <> OnlyNumber(Cedente.Agencia)) or
             (rConta <> OnlyNumber(Cedente.Conta))) then
            raise Exception.Create(ACBrStr('Agencia\Conta do arquivo inválido'));
     
     
    Quando da o OnlyNumber ele retira os zeros a esquerda aonde que não fecha.
     
    E a Conta quando lê do arquivo precisa pular os 3 primeiros algarismos, pois eles é a operação 870 ou 003. Pois no arquivo tá lendo: 87000000051
     
     
    Alterando isso irá resolver, 


    Maicon
     
     
×
×
  • 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.