Ir para conteúdo
Fórum Script Brasil
  • 0

Boleto de Arrecadação com data Juliana


Zenner

Pergunta

Prezados..

Estou precisando utilizar um boleto de arrecadação um pouco diferente do normal. No local da data convencional AAAAMMDD eu preciso enviar em formato Juliano AANNN

Até onde entendi funcionaria da seguinte forma:

Exemplo para o dia 02/02/2017 = 17032

AA = Ano com 2 dígitos = 17
NNN = Números corridos de dia do ano = 032


Exemplo para 31/12/2017 = 17365
AA = 17
NNN = 365

Até aqui tudo bem, porém, ao gerar o codigo de barras, o Banco do Brasil diz "DATA INVÁLIDA"


Procurei por mais informações e o banco me passou mais alguns esclarecimentos que juro não conseguir entender. Segue-os abaixo:


Para AANNN:

Se AA > 95, então soma em 19XX;

Se AA =< 95, então soma em 20XX.


Alguém poderia me ajudar a traduzir essa explicação?

Nesse link  existe um documento do SEFIN de Rondônia que me traz na página 14, basicamente a mesma informação:  Verificar a data de vencimento do DARE: AA – Ano  no formato de 2 posições( se valor menor que 70 somar: AA + 2000 senão somar AA + 1900); JJJ – Converter a Data Juliana para dia/mês do vencimento.

Link para o comentário
Compartilhar em outros sites

1 resposta a esta questão

Posts Recomendados

  • 0

Exemplo para 31/12/2017 = 17365
AA = 17
NNN = 365

voce quer contar a data inicial a partir de quando ? 

se for a data do inicio do ano seria isso .. baseado no seu exemplo

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm1 = class(TForm)
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
  Data : string;

implementation

{$R *.DFM}

Uses  DateUtils;

function DiasdoAno(Datax: TDate):Integer;
var
  Data: tDateTime;
  Soma: variant;
begin
  data:=strtodate('01/01/'+inttostr(YearOf(datax)));
  soma:=datax-data;
  DiasdoAno:=soma+1;
end;


procedure TForm1.Button1Click(Sender: TObject);
var AA, NNN : integer; s : string;
begin
   Data:= InputBox('Data Gregoriana', 'Digite uma data', '00/00/0000');
   AA := strtoint(copy(data,9,2));
   NNN := DiasdoAno(strtodate(Data));
   s := inttostr(AA) + inttostr(NNN);

   showmessage(s);

end;

end.

OBS:  mas sugiro que veja esse link, para tirar duvidas

http://ghiorzi.org/diasjuli.htm

so para esclarecer

Se AA =< 95, então soma em 20XX.

se o ano for 2017 então AA = 17 que é menor que 95

somando 2000 daria os mesmos 2017

abraço

 

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,3k
×
×
  • Criar Novo...