Ir para conteúdo
  • Cadastre-se

Marcos Mentz_5837

Membros
  • Total de ítens

    42
  • Registro em

  • Última visita

Posts postados por Marcos Mentz_5837

  1. Bom dia!

    Fazendo o seguinte procedimento:

    - emitir o boleto: o nosso número sai certo no boleto, salvo o campo "nossonumero" no registro da duplicata, ao salvar não é salvo a modalidade, a modalidade é gerada na montagem durante a emissão do boleto.

    - em outro momento vou gerar a remessa das duplicatas, no final do dia por exemplo, como tenho o "nossonumero" salvo na duplicata (não está salvo a modalidade junto) e vou gerar o arquivo o "nossonumero" na remessa fica incompleto para gerar a informação na linha PadRight(Copy(ANossoNumero,1,2), 2, '0') .

    Fiz a depuração e rastreamento do código e não fica a remessa de acordo com o layout do banco.

     

    Marcos

  2. Bom dia!

    Eu também guardo somente o "nosso número", mas o código para a geração da remessa está utilizando somente esta propriedade para a geração da "modalidade", dessa forma a remessa não gera corretamente.

     

    Marcos

  3. Boa tarde!

     

    Eu encontrei um problema ao gerar cnab 240, no seguinte processo, emitir o boleto e em outro momento gerar a remessa.

    Na geração da transação do 240, linhas 578 e 579

                   PadRight(Copy(ANossoNumero,1,2), 2, '0')                                                        + //41 a 42 - Modalidade da Carteira
                   PadLeft(Copy(ANossoNumero,3,17), 15, '0')                     + //43 a 57 - Nosso número - identificação do título no banco
     

    Acontece que o NossoNumero não tem a modalidade da carteira quando é salvo no registro do banco de dados, fiz uma alteração interna no sistema para guardar a geração do nosso numero que é usado na impressão do boleto, mas no momento de gerar a remessa se eu passo o número integral de 17 dígitos é gerado mensagem de erro que aceita no máximo 15.

    E se tenho salvo somente o "NossoNumero" se a modalidade na hora de gerar onde vai ler da propriedade não tem os 17 dígitos para ler a modalidade...

    Ao meu ver não deveria fazer a leitura da modalidade pelo "nossoNumero" e sim passar a modalidade como parâmetro ao gerar a linha da remessa no segmento P.

    Marcos

  4. Bom dia!

    O valor de abatimento não tem data de limite como acontece com o valor do desconto que tem, a até na impressão do boleto sai essa mensagem com data.

    Nos manuais dos bancos não tem esse campo de data de abatimento para nem ser informado na remessa.

    Até onde conheço cobrança bancária nunca vi data de limite para o abatimento, somente para o desconto.

    Os campos impressos de boleto acredito que o acbr está correto em não imprimir nos campos, pois é preenchido no momento do pagamento no caixa ou tem a instrução na remessa.

    No caso do boleto impresso eu fiz um ajuste para contornar a data de abatimento, pois este o cliente teria direito independente do dia pago, para não afetar os que usam dessa forma no meu ajuste retirei a data de vencimento usada no lugar da data de abatimento.

    Exemplo do código alterado na linha 1710:

          if ValorAbatimento <> 0 then
          begin
             if DataAbatimento <> 0 then
                AStringList.Add(ACBrStr('Conceder abatimento de ' +
                                 FormatCurr('R$ #,##0.00',ValorAbatimento) +
                                 ' para pagamento ate ' + FormatDateTime('dd/mm/yyyy',DataAbatimento)))
             else
                AStringList.Add(ACBrStr('Conceder abatimento de ' +
                                 FormatCurr('R$ #,##0.00',ValorAbatimento)));
                                 //' para pagamento ate ' + FormatDateTime('dd/mm/yyyy',Vencimento)));
          end;

     

    Marcos

    Softbox

    ACBrBoleto.pas

    • Curtir 1
  5. Boa tarde!

    Eu tenho a mesma situação e visualizando a versão anterior de sexta está ok, e atual está com esta duplicidade e não valida o XML, segue os fontes de antes funcionando e os atuais para comparação.

    Eu copiei as 2 functions anteriores e substitui na versão atual e validou.

     

    ----------- anterior valida o XML  ------------------------

    // CST ICMS ********************************************************************
    function CSTICMSToStr(const t: TpcnCSTIcms): string;
    begin
      // ID -> N02  - Tributada integralmente
      // ID -> N03  - Tributada e com cobrança do ICMS por substituição tributária
      // ID -> N04  - Com redução de base de cálculo
      // ID -> N05  - Isenta ou não tributada e com cobrança do ICMS por substituição tributária
      // ID -> N06  - Isenta
      // ID -> N06  - Não tributada
      // ID -> N06  - Suspensão
      // ID -> N07  - Diferimento A exigência do preenchimento das informações do ICMS diferido fica à critério de cada UF.
      // ID -> N08  - ICMS cobrado anteriormente por substituição
      // ID -> N09  - Com redução de base de cálculo e cobrança do ICMS por substituição tributária
      // ID -> N10  - ICMS pagto atribuído ao tomador ou ao terceiro previsto na legislação p/ ST
      // ID -> N10a - Operação interestadual para consumidor final com partilhado ICMS devido na operaçãoentre a UF de origem e a UF do destinatário ou a UF definida na legislação. (Ex. UF daconcessionária de entrega do veículos) (v2.0)
      // ID -> N10b - Grupo de informação do ICMS ST devido para a UF de destino,nas operações interestaduais de produtos que tiveram retenção antecipada de ICMS por ST na UF do remetente. Repasse via Substituto Tributário. (v2.0)
      // ID -> N11  - ICMS devido para outras UF
      // ID -> N12  - Outros
      result := EnumeradoToStr(t, ['00' , '10' , '20' , '30' , '40' , '41' , '50' , '51' ,
                                   '60' , '70' , '80' , '81', '90', '10', '90', '41', '90', 'SN', '60'],
                                  [cst00, cst10, cst20, cst30, cst40, cst41, cst50, cst51,
                                  cst60, cst70, cst80, cst81, cst90, cstPart10 , cstPart90 ,
                                  cstRep41, cstICMSOutraUF, cstICMSSN, cstRep60]);
    end;

    function StrToCSTICMS(out ok: boolean; const s: string): TpcnCSTIcms;
    begin
      result := StrToEnumerado(ok, s, ['00', '10', '20', '30', '40', '41', '50', '51', '60', '70', '80', '81', '90', '91', '92'],
        [cst00, cst10, cst20, cst30, cst40, cst41, cst50, cst51, cst60, cst70, cst80, cst81, cst90, cstICMSOutraUF, cstICMSSN]);
    end;

    ------------------- nova que não valida o XML -----------------------

    // CST ICMS ********************************************************************
    function CSTICMSToStr(const t: TpcnCSTIcms): string;
    begin
      // ID -> N02  - Tributada integralmente
      // ID -> N03  - Tributada e com cobrança do ICMS por substituição tributária
      // ID -> N04  - Com redução de base de cálculo
      // ID -> N05  - Isenta ou não tributada e com cobrança do ICMS por substituição tributária
      // ID -> N06  - Isenta
      // ID -> N06  - Não tributada
      // ID -> N06  - Suspensão
      // ID -> N07  - Diferimento A exigência do preenchimento das informações do ICMS diferido fica à critério de cada UF.
      // ID -> N08  - ICMS cobrado anteriormente por substituição
      // ID -> N09  - Com redução de base de cálculo e cobrança do ICMS por substituição tributária
      // ID -> N10  - ICMS pagto atribuído ao tomador ou ao terceiro previsto na legislação p/ ST
      // ID -> N10a - Operação interestadual para consumidor final com partilhado ICMS devido na operaçãoentre a UF de origem e a UF do destinatário ou a UF definida na legislação. (Ex. UF daconcessionária de entrega do veículos) (v2.0)
      // ID -> N10b - Grupo de informação do ICMS ST devido para a UF de destino,nas operações interestaduais de produtos que tiveram retenção antecipada de ICMS por ST na UF do remetente. Repasse via Substituto Tributário. (v2.0)
      // ID -> N11  - ICMS devido para outras UF
      // ID -> N12  - Outros
      result := EnumeradoToStr(t, ['00' , '10' , '20' , '30' , '40' , '41' , '50' , '51' ,
                                   '60' , '70' , '80' , '81', '90', '10', '90', '41', '90', 'SN', '60'],
                                  [cst00, cst10, cst20, cst30, cst40, cst41, cst50, cst51,
                                  cst60, cst70, cst80, cst81, cst90, cstPart10 , cstPart90 ,
                                  cstRep41, cstICMSOutraUF, cstICMSSN, cstRep60]);
    end;

    function StrToCSTICMS(out ok: boolean; const s: string): TpcnCSTIcms;
    begin
      result := StrToEnumerado(ok, s, ['00', '10', '20', '30', '40', '41', '50', '51', '60', '70', '80', '81', '90', '90', 'SN'],
        [cst00, cst10, cst20, cst30, cst40, cst41, cst50, cst51, cst60, cst70, cst80, cst81, cst90, cstICMSOutraUF, cstICMSSN]);
    end;

     

  6. Boa tarde!

    Mais um ajuste necessário após a última atualização.

    Unit pnfsNFSeR linha 2679, está invertido a avaliação do "if" , se gue o ajuste feito a unit anexada.

    function TNFSeR.LerNFSe_Infisc: Boolean;
    begin
      Result := False;
      Leitor.Grupo := Leitor.Arquivo;
      if (Pos('<NFS-e>', Leitor.Arquivo) > 0) then
      begin
        if VersaoNFSe = ve110 then
          Result := LerNFSe_Infisc_V11      <<--
        else
          Result := LerNFSe_Infisc_V10;     <<--
      end;
    end;

    pnfsNFSeR.pas

  7. Boa tarde!

    Na unit "pnfsNFSeW_Infisc" tive que comentar 3 linhas que acredito estarem incorretas, pois o valor líquido da NFSe não ficou correto com retenção, estava o valor cheio.

    Desta maneira validou, antes acusava o valor liquido da NFSe incorreto.

      else begin
        Gerador.wGrupoNFSe('total');
        Gerador.wCampoNFSe(tcDe2, '', 'vServ', 01, 15, 1, NFSe.Servico.Valores.ValorServicos, '');
        Gerador.wCampoNFSe(tcDe2, '', 'vDesc', 01, 15, 1, NFSe.Servico.Valores.DescontoIncondicionado, '');
        Gerador.wCampoNFSe(tcDe2, '', 'vtNF' , 01, 15, 1,  NFSe.Servico.Valores.ValorServicos, '');
    //--- 573 aqui    if NFSe.CondicaoPagamento.Parcelas.Count > 0 then
          Gerador.wCampoNFSe(tcDe2, '', 'vtLiq', 01, 15, 1, NFSe.Servico.Valores.ValorLiquidoNfse, '');
    //--- 575 aqui    else
    //---576 aqui      Gerador.wCampoNFSe(tcDe2, '', 'vtLiq', 01, 15, 1, NFSe.Servico.Valores.ValorServicos, '');
        Gerador.wCampoNFSe(tcDe2, '', 'totalAproxTrib', 01, 15, 1, 0, '');
     
    Em anexo a unit alterada.
     
    Marcos
    Softbox

     

    pnfsNFSeW_Infisc.pas

  8. Boa tarde!

    Eu estava com o mesmo problema se espaço a mais no segmento "P", verifiquei que eu estava passando CodigoMora='1' e mesmo assim havia um caracter a mais.

    Baseado nos relatos fui olhar a unit  ACBrBancoBancoob e na linha 860 estava ' '; (um espaço em branco), retirei o espaço conforme o código abaixo e gerou a linha com 240. 

                   Result := Result+Carteira                                  + // 58 a 58 carteira
                             '0'                                              + // 59 Forma de cadastramento no banco
                             ' '                                              + // 60 Brancos
                             ATipoBoleto                                      + // 61 Identificação da emissão do boleto
                             '2'                                              + // 62  Identificação da distribuição
                             PadRight(NumeroDocumento, 15, ' ')               + // 63 a 77 - Número que identifica o título na empresa [ Alterado conforme instruções da CSO Brasília ] {27-07-09}
                             FormatDateTime('ddmmyyyy', Vencimento)           + // 78 a 85 - Data de vencimento do título
                             IntToStrZero( round( ValorDocumento * 100), 15)  + // 86 a 100 - Valor nominal do título
                             '00000'                                          + // 101 a 105 - Agência cobradora. // Ficando com Zeros o Itaú definirá a agência cobradora pelo CEP do sacado
                             ' '                                              + // 106 - Dígito da agência cobradora
                             PadRight(AEspecieTitulo, 2)                      + // 107 a 108 - Espécie do documento
                             ATipoAceite                                      + // 109 - Identificação de título Aceito / Não aceito
                             FormatDateTime('ddmmyyyy', DataDocumento)        + // 110 a 117 - Data da emissão do documento
                             CodigoMora                                       + // 118 - Codigo Mora (juros) - 1) Por dia, 2) Taxa mensal e 3) Isento
                             ADataMoraJuros                                   + //119 a 126 - Data a partir da qual serão cobrados juros
                             IfThen(ValorMoraJuros > 0,
                                    IntToStrZero( round(ValorMoraJuros * 100), 15),
                                    PadLeft('', 15, '0'))                     + // 127 a 141 - Valor de juros de mora por dia
                             '0'                                              + // 142 - Zeros
                             ADataDesconto                                    + // 143 a 150 - Data limite para desconto
                             IfThen(ValorDesconto > 0,
                                    IntToStrZero( round(ValorDesconto * 100), 15),
                                    PadLeft('', 15, '0'))                     + // 151 a 165 - Valor do desconto por dia
                             IntToStrZero( round(ValorIOF * 100), 15)         + // 166 a 180 - Valor do IOF a ser recolhido
                             IntToStrZero( round(ValorAbatimento * 100), 15)  + // 181 a 195 - Valor do abatimento
                             PadRight(SeuNumero, 25, ' ')                     + // 196 a 220 - Identificação do título na empresa
                             '1'                                              + // 221 - Código de protesto: Protestar em XX dias corridos
                             DiasProtesto                                     + // 222 a 223 - Prazo para protesto (em dias corridos)
                             '0'                                              + // 224 - Código de Baixa
                             space(3)                                         + // 225 A 227 - Dias para baixa
                             '09'                                             + //
                             '0000000000'                                     + // Numero contrato da operação
                             '';
     

    Marcos

    Softbox

  9. Atualizado 2 vezes e inclusive apagando a pasta do acbr, desistalando e reinstalando os componentes e usado o arquivo .ini alterado e o problema continua.

    Vou fazer o procedimento todo novamente e retorno o resultado.

     

    Obrigado.

  10. Bom dia!

     

    Estou usando ISSNet e ontem após a atualização do componente também começou a dar a mensagem, usando o arquivo ISSNet.ini também atualizado.

    Usando libCapicom

    Erro ao enviar Impossível assinar. Componente configurado para não usar Certificado

     

  11. Unit ACBrCTeDACTEFRDM linha 658

    Erro reportado nesta linha de código:   NroNota := StrToInt(Copy(chave, 26, 9)); // Adicionado por Rodrigo Cardilo em 11/08/2014

     

    Quando há mais de um documento vinculado com o CT-e o loop passa além da quantidade de documentos e gera erro na linha acima por tentar transformar a chave em branco para inteiro.

    Resolvido temporariamente colocando o código abaixo na linha 659:

            if Chave = '' then
               Continue;
     

  12. Na geração da Danfe/PDF há erro na geração do valor líquido quando o valor do desconto é acima de 999,99.

    Ex: '1.000,00' is not a valid floating poit value

     

    Linha 464 da unit ACBrNFeDANFEFRDM:

    FieldByName('Valorliquido').AsString      := FormatFloatBr( Prod.vProd - StrToFloat( FieldByName('vDesc').AsString ) ,'###,###,##0.00');
     

    Resolvido temporariamente:

              aux := FieldByName('vDesc').AsString;
              aux := StringReplace(aux, '.', '', [rfReplaceAll]);
     
              FieldByName('Valorliquido').AsString      := FormatFloatBr( Prod.vProd - StrToFloat( aux{FieldByName('vDesc').AsString} ) ,'###,###,##0.00');
×
×
  • 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.