Autor Tópico: Acrescer Mês e ano em uma data  (Lida 2938 vezes)

jovitomelo

  • Global Moderator
  • Expert
  • *****
  • Mensagens: 916
    • Simples Assim
    • Email
Re:Acrescer Mês e ano em uma data
« Responder #15 Online: Maio 06, 2013, 11:32:01 am »
Exatamente,

Entenda que desta forma o período nem precisa ser igual... pode ser: 5/10/25/67/200

Contanto que cada valor seja o acumulado.
Jovito Melo
Maceió - Alagoas

FredKeyster

  • Expert
  • *****
  • Mensagens: 1702
  • DEWENNINMEN
    • Email
Re:Acrescer Mês e ano em uma data
« Responder #16 Online: Maio 06, 2013, 11:48:52 am »
Entendi, eu tenho uma situação de um cliente, que por exemplo comprou um caminhão financiado! No caso é 36 vzs! Sabe como resolveria isso com esse script? Gostei muito dele. Eu tenho um com esse raciocínio de parcelas extensas mas não estou sabendo converter para o SC. É bem mais simples, mas tem essa opção!
 
Exemplo:

$parcelas = 120;
$data = explode('-', '06-05-2013');
$intervalo = 30;
for($i = 0 ;$i < $parcelas; $i++){
   echo date("d-m-Y", mktime(0, 0, 0, $data[1], $data[0] + $intervalo, $data[2])) , '<br />';
   $data = explode('-', date("d-m-Y", mktime(0, 0, 0, $data[1], $data[0]+$intervalo, $data[2])));
   
}

Resultado:
05-06-2013 INICIO
05-07-2013
04-08-2013
.     .     .    .
.     .     .    .
.     .     .    .
15-12-2022
14-01-2023
13-02-2023
15-03-2023 FIM

Tem como me ajudar a implementa-lo ?
Abração.
F. A.
Analista de Sistemas

Caroline

  • Iniciante
  • **
  • Mensagens: 77
Re:Acrescer Mês e ano em uma data
« Responder #17 Online: Maio 06, 2013, 01:59:10 pm »
Quer dizer que se quiser dividir em parcelas iguais com 30 dias, é só multiplicar o número da parcela pela quantidades de dias.
Nota: pode fixar do dia do vencimento ou não.
« Última modificação: Maio 06, 2013, 02:06:51 pm por Caroline »
Plugins Scriptcase:
Gerador de etiquetas: http://infinitusweb.net.br/pluginsc/6/etiquetaspdf/

jovitomelo

  • Global Moderator
  • Expert
  • *****
  • Mensagens: 916
    • Simples Assim
    • Email
Re:Acrescer Mês e ano em uma data
« Responder #18 Online: Maio 06, 2013, 02:01:45 pm »
Fred,

Durante a noite eu posto, agora estou muito ocupado.

Detalhe:

Você deve criar as duas bibliotecas como opções interessantes. Se você tem prazos bastante definidos e longos a primeira é muito interessante, se os prazos são curtos você pode usar a segunda.

A noite eu posto.
Jovito Melo
Maceió - Alagoas

FredKeyster

  • Expert
  • *****
  • Mensagens: 1702
  • DEWENNINMEN
    • Email
Re:Acrescer Mês e ano em uma data
« Responder #19 Online: Maio 06, 2013, 03:07:08 pm »
Obrigado Jovito, consegui resolver e vou postar para os amigos que usa as parcelas em valores longos, segue:

$parcelas = 10; // Aqui define a quantidade de parcelas ... "1 ... N"
$data = explode('-', '06-05-2013');
$intervalo = 30; // Esse intervalo pode ser 15 em 15 dias, 30 em 30 dias, etc....

for($i = 1 ;$i < $parcelas+1; $i++){
   
   $data = explode('-', date("d-m-Y", mktime(0, 0, 0, $data[1], $data[0]+$intervalo, $data[2])));
        $data_vencimento = date("Y-m-d", mktime(0, 0, 0, $data[1], $data[0] + $intervalo, $data[2]));

Obs: Inciei o Laço em "$i = 1" pra definir a contagem de cada parcela e atribuir o numero a cada parcela. No insert eu jogo o $i como Parcela número 1, 2, 3 e etc.   

Agora posso ter um título com 36 parcelas (n parcelas) , e ainda controlar o intervalo de cada uma!

Se tiver mais ideias para implementar melhor ainda!

Abraço a todos!
F. A.
Analista de Sistemas

FredKeyster

  • Expert
  • *****
  • Mensagens: 1702
  • DEWENNINMEN
    • Email
Re:Acrescer Mês e ano em uma data
« Responder #20 Online: Maio 06, 2013, 05:12:18 pm »
Jovito, não entendo... Quando testo o Script no Blank ele funciona que uma beleza! Mas quando eu atribuo as variáveis do SC ele da erro de conexão ao banco de dados, olha só como estou fazendo:

No blank faço assim:

Código: [Selecionar]
$idunidade = '1';
$idconta_bancaria = '1';
$documento = '1';
$descricao = 'descricao';
$idcentro_custo_d = '1';
$iddepartamento = '2';
$idfornecedor = '1';
$data_conta = '06-05-2013';
$valor = '400';
$multa = '';
$juros = '';
$desconto = '';
$observacao = 'observacao';
$banco = 'Banco do Brasil';
$replica = 'S';
$parcelas = 10;
$data = explode('-', $data_conta);
$intervalo = 30;

for($i = 1 ;$i < $parcelas+1; $i++){

$data = explode('-', date("d-m-Y", mktime(0, 0, 0, $data[1], $data[0]+$intervalo, $data[2])));
    $data_vencimento = date("Y-m-d", mktime(0, 0, 0, $data[1], $data[0] + $intervalo, $data[2]));


sc_exec_sql("

INSERT INTO contas_pagar
(idunidade,
idconta_bancaria,
documento,
descricao,
idcentro_custo_d,
iddepartamento,
idfornecedor,
data_conta,
valor,
observacao,
banco,
replica,
parcelas,
nparcelas,
data_vencimento)
VALUES
($idunidade,
$idconta_bancaria,
$documento,
$descricao,
$idcentro_custo_d,
$iddepartamento,
$idfornecedor,
$data_conta,
$valor,
$observacao,
'$banco',
'$replica',
$parcelas,
$i,
$data_vencimento)

");
}

Porém na aplicação eu mudo apenas as variáveis:

Código: [Selecionar]
$idunidade = {idunidade};
$idconta_bancaria = {idconta_bancaria};
$documento = {documento};
$descricao = {descricao};
$idcentro_custo_d = {idcentro_custo_d};
$iddepartamento = {iddepartamento};
$idfornecedor = {idfornecedor};
$data_conta = {data_conta};
$valor = {valor};
$multa = {multa};
$juros = {juros};
$desconto = {desconto};
$observacao = {observacao};
$banco = {banco};
$replica = {replica};
$parcelas = {parcelas};
$data = explode('-', {data_vencimento});
$intervalo = {intervalo};

Podes me dar uma luz ?

Abração!
F. A.
Analista de Sistemas

FredKeyster

  • Expert
  • *****
  • Mensagens: 1702
  • DEWENNINMEN
    • Email
Re:Acrescer Mês e ano em uma data
« Responder #21 Online: Maio 06, 2013, 08:07:29 pm »
Sim esqueci de postar o erro:

No debug aparece isso:

(pdo-mysql): INSERT INTO contas_pagar (idunidade, idconta_bancaria, documento, descricao, idcentro_custo_d, iddepartamento, idfornecedor, data_conta, valor, observacao, banco, replica, parcelas, nparcelas, juros, multa, data_vencimento) VALUES (1, 1, 001, Testando o sistema, 39, 1, 1, 2013-05-06, 1500.00, Teste, 'Banco do Brasil', 'S', 10, 1, 0.00, 0.00, 2013-07-05) 


e o erro é:

1064: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'o sistema, 39, 1, 1, 2013-05-06, 1500.00, Teste, 'Banco do Brasil', 'S',' at line 1

Não sei onde estou errando!
F. A.
Analista de Sistemas

Haroldo

  • Expert
  • *****
  • Mensagens: 6293
  • Conhecimento diminui limitações.△TFA△
    • Infinitus Web Gestão Empresarial/Gestão ITIL/Consultoria Scriptcase
Re:Acrescer Mês e ano em uma data
« Responder #22 Online: Maio 06, 2013, 09:17:32 pm »
Você não está encapsulando os valores.

FredKeyster

  • Expert
  • *****
  • Mensagens: 1702
  • DEWENNINMEN
    • Email
Re:Acrescer Mês e ano em uma data
« Responder #23 Online: Maio 06, 2013, 09:25:38 pm »
Olá Haroldo, poxa bom te ver por aqui!
Não estou encapsulando ? Como assim? Não entendi!
F. A.
Analista de Sistemas

Haroldo

  • Expert
  • *****
  • Mensagens: 6293
  • Conhecimento diminui limitações.△TFA△
    • Infinitus Web Gestão Empresarial/Gestão ITIL/Consultoria Scriptcase
Re:Acrescer Mês e ano em uma data
« Responder #24 Online: Maio 06, 2013, 09:33:03 pm »
Rode seu debug e veja o resultado da query.

pelo que entendi a data, por exemplo não esta entre aspas simples.

FredKeyster

  • Expert
  • *****
  • Mensagens: 1702
  • DEWENNINMEN
    • Email
Re:Acrescer Mês e ano em uma data
« Responder #25 Online: Maio 06, 2013, 10:56:31 pm »
Resolvido! Tem que colocar aspas no que for STRING e DECIMAL. Sendo assim ficou:

$idunidade,
$idconta_bancaria,
'$documento',
'$descricao',
$idcentro_custo_d,
$iddepartamento,
$idfornecedor,
$data_conta,
'$valor',
'$multa',
'$juros',
'$desconto',
'$observacao',
'$banco',
'$replica',
$parcelas,
$parc,
$data_vencimento
« Última modificação: Maio 06, 2013, 11:46:16 pm por FredKeyster »
F. A.
Analista de Sistemas

Celso R.

  • Expert
  • *****
  • Mensagens: 941
Re:Acrescer Mês e ano em uma data
« Responder #26 Online: Maio 07, 2013, 12:14:08 am »
Que legal Fred
Ficou muito bom.
Pena que o colega aaguiar, não quiz compartilhar a solução, acho que resolveu guardar para prosperidade.
Bom enfim parabéns a você e o Jovito.
Celso R.
________________________________
SC - V 8

aaguiar

  • Novato
  • *
  • Mensagens: 35
Re:Acrescer Mês e ano em uma data
« Responder #27 Online: Maio 07, 2013, 08:05:17 pm »
Fala Pessoal,

Desculpa ai, mas estes dias foram um pouco complicados para mim! Só vi hoje que o tinham 26 respostas no post.

Eu criei um método GerarParcelas com os parâmetros $diavencimento, $parcelas

Código: [Selecionar]


    $gravadata         = {PrimeiroVencimento};

sc_lookup(ds,"select max(parcelatitulo) from tablicencatitulos
where idlicenca = {idlicenca}");


$num = {ds[0][0]} + 1;

 
  for($x = $num; $x <= $Parcelas + $num; $x++)
  {
   
$dia = $diavencimento; 
  $mes = date("m",strtotime($gravadata)) + 1;
        $ano = date("Y",strtotime($gravadata));
 
  sc_exec_sql("
 
  INSERT INTO tablicencatitulos

(   
parcelatitulo,
    idlicenca,
licenca,
datavencimento,
valortitulo,
status

)

VALUES

(
$x,
{idlicenca},
'{licenca}',
'$gravadata',
{valormanutencao},
'A'

)

  ");
 
    if ($mes == 13) { //se passar do mês 12, então inicia com o mes 1 do próximo ano
            $mes = 1;
            $ano = $ano + 1;   
        }
       
        if ($dia == 30 && $mes == 2){ //fevereiro não pode ter 30 dias não é. kkk
            $gravadata = $ano."-".$mes."28";
        }else{
            $gravadata = $ano."-".$mes."-".$dia;
        }

   
  }



depois foi só criar um botão na aplicação, do tipo PHP e chamar o método passando os parâmetros solicitados.

Espero que ainda esteja em tempo de ajudar alguém, vi que o pessoal postou algumas soluções muito interessantes também.


George Carvalho

  • Expert
  • *****
  • Mensagens: 1373
    • Email
Re:Acrescer Mês e ano em uma data
« Responder #28 Online: Maio 07, 2013, 08:46:46 pm »
Eu utilizo macro do sc_date(), ela calcula correto independente da quantidade de dias dos meses.

// GERA PARCELAS VENCENDO DE 30 EM 30 DIAS
if({parcelas} > 1 and {gerar_parcelas} == '1'){
   $valor_parc  = round({valor} / {parcelas}, 2);
   $valor_parc1 = round($valor_parc + {valor} -($valor_parc * {parcelas}),2);
   $parc = 1;
   $dias  = 0;
   $venc = {data_vencimento};
   while({parcelas} >= $parc){
         if($parc == 1){
         $valor_parcela = $valor_parc1;
       }else{
            $valor_parcela = $valor_parc;
       }
         sc_exec_sql("insert into fin_contas_pagar_receber_lanc
                      values('$id',{pagar_receber_id},'{fornecedor_id}','{tipo_documento_id}','{numero_documento}',
                             '{historico}','{torneio_id}','$conta','$venc','$parc','{parcelas}',
                             '$valor_parcela',Null,0,Null,'','S')");
         $dias = $dias + 30;
         $id++;
         $parc++;
         $venc = sc_date ({data_vencimento}, "aaaa-mm-dd", "+", $dias, 0, 0); //INCREMENTA O DIA
   }
}
George Carvalho
Porto de Galinhas/PE

Celso R.

  • Expert
  • *****
  • Mensagens: 941
Re:Acrescer Mês e ano em uma data
« Responder #29 Online: Maio 07, 2013, 10:01:06 pm »
NOSSA AGORA SIM FICOU CHIC COM A PARTICIPAÇÃO DE TODOS....
LEGAL...
Celso R.
________________________________
SC - V 8