Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Joao Marcos_173092

calculo de 30 em 30dias

Recommended Posts

Boa noite pessoal, desenvolvo um codigo do BoletoPHP, e estou com uma super bronca de calcular apartie de uma entrada POST de vencimento, preciso calcular apartir deste vencimento +30.

é um carne, que gera 11vezes. ele está gerando tranquilamente, mas creio que estou pecando em algo que so esta gerando a data do venc, mas nao calcula.. me ajudem por favor.

desde ja MUITO OBRIGADO!

 

 

 
<?php require_once('../Connections/Cadastro_de_clientes.php'); ?>
<?php
if (!function_exists("GetSQLValueString")) {
function GetSQLValueString($theValue, $theType, $theDefinedValue = "", $theNotDefinedValue = "") 
{
  if (PHP_VERSION < 6) {
    $theValue = get_magic_quotes_gpc() ? stripslashes($theValue) : $theValue;
  }
 
  $theValue = function_exists("mysql_real_escape_string") ? mysql_real_escape_string($theValue) : mysql_escape_string($theValue);
 
  switch ($theType) {
    case "text":
      $theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
      break;    
    case "long":
    case "int":
      $theValue = ($theValue != "") ? intval($theValue) : "NULL";
      break;
    case "double":
      $theValue = ($theValue != "") ? doubleval($theValue) : "NULL";
      break;
    case "date":
      $theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
      break;
    case "defined":
      $theValue = ($theValue != "") ? $theDefinedValue : $theNotDefinedValue;
      break;
  }
  return $theValue;
}
}
 
$colname_Recordset1 = "-1";
if (isset($_POST['pesquisarid'])) {
  $colname_Recordset1 = $_POST['pesquisarid'];
}
mysql_select_db($database_Cadastro_de_clientes, $Cadastro_de_clientes);
$query_Recordset1 = sprintf("SELECT * FROM cadastro_clientes WHERE id_clientes = %s", GetSQLValueString($colname_Recordset1, "int"));
$Recordset1 = mysql_query($query_Recordset1, $Cadastro_de_clientes) or die(mysql_error());
$row_Recordset1 = mysql_fetch_assoc($Recordset1);
$totalRows_Recordset1 = mysql_num_rows($Recordset1);
?>
 
<?php
 
// +----------------------------------------------------------------------+
// | BoletoPhp - Versão Beta                                              |
// +----------------------------------------------------------------------+
// | Este arquivo está disponível sob a Licença GPL disponível pela Web   |
// | em http://pt.wikipedia.org/wiki/GNU_General_Public_License           |
// | Você deve ter recebido uma cópia da GNU Public License junto com     |
// | esse pacote; se não, escreva para:                                   |
// |                                                                      |
// | Free Software Foundation, Inc.                                       |
// | 59 Temple Place - Suite 330                                          |
// | Boston, MA 02111-1307, USA.                                          |
// +----------------------------------------------------------------------+
 
// +----------------------------------------------------------------------+
// | Originado do Projeto BBBoletoFree que tiveram colaborações de Daniel |
// | William Schultz e Leandro Maniezo que por sua vez foi derivado do  |
// | PHPBoleto de João Prado Maia e Pablo Martins F. Costa        |
// |                                    |
// | Se vc quer colaborar, nos ajude a desenvolver p/ os demais bancos :-)|
// | Acesse o site do Projeto BoletoPhp: www.boletophp.com.br             |
// +----------------------------------------------------------------------+
 
// +----------------------------------------------------------------------+
// | Equipe Coordenação Projeto BoletoPhp: <boletophp@boletophp.com.br>   |
// | Desenvolvimento Boleto CEF SIGCB: Davi Nunes Camargo  |
// +----------------------------------------------------------------------+
 
 
// ------------------------- DADOS DINÂMICOS DO SEU CLIENTE PARA A GERAÇÃO DO BOLETO (FIXO OU VIA GET) -------------------- //
// Os valores abaixo podem ser colocados manualmente ou ajustados p/ formulário c/ POST, GET ou de BD (MySql,Postgre,etc) //
 
 
 
// DADOS DO BOLETO PARA O SEU CLIENTE
$dias_de_prazo_para_pagamento = "";
$taxa_boleto = "";
$data_venc = $_POST["venccarne"]; // date("d/m/Y")   // date("d/m/Y", time() + ($dias_de_prazo_para_pagamento * 86400));  // Prazo de X dias OU informe data: "13/04/2006";
$valor_cobrado = $_POST["valor"]; // Valor - REGRA: Sem pontos na milhar e tanto faz com "." ou "," ou com 1 ou 2 ou sem casa decimal
$valor_cobrado = str_replace(",", ".",$valor_cobrado);
$valor_boleto=number_format($valor_cobrado+$taxa_boleto, 2, ',', '');
 
// Composição Nosso Numero - CEF SIGCB
$dadosboleto["nosso_numero1"] = "111"; // tamanho 3
$dadosboleto["nosso_numero_const1"] = "2"; //constanto 1 , 1=registrada , 2=sem registro
$dadosboleto["nosso_numero2"] = "111"; // tamanho 3
$dadosboleto["nosso_numero_const2"] = "4"; //constanto 2 , 4=emitido pelo proprio cliente
$dadosboleto["nosso_numero3"] = ('111').$row_Recordset1["id_clientes"]; // tamanho 9 - corrigir logo!
 
 
$dadosboleto["numero_documento"] = $row_Recordset1["id_clientes"]; // Num do pedido ou do documento
$dadosboleto["data_vencimento"] = $data_venc; // Data de Vencimento do Boleto - REGRA: Formato DD/MM/AAAA
$dadosboleto["data_documento"] = date("d/m/Y"); // Data de emissão do Boleto
$dadosboleto["data_processamento"] = date("d/m/Y"); // Data de processamento do boleto (opcional)
$dadosboleto["valor_boleto"] = $valor_boleto; // Valor do Boleto - REGRA: Com vírgula e sempre com duas casas depois da virgula
 
// DADOS DO SEU CLIENTE
$dadosboleto["sacado"] = $row_Recordset1["cli_nome"];
$dadosboleto["endereco1"] = $row_Recordset1["cli_endereco"];
$dadosboleto["endereco2"] = "";
$dadosboleto["cpfcliente"]= $row_Recordset1["cli_cpf"];
 
// INFORMACOES PARA O CLIENTE
$dadosboleto["demonstrativo1"] = "Pagamento de Compra na Loja Siga bem motos seguros";
$dadosboleto["demonstrativo2"] = "";
$dadosboleto["demonstrativo3"] = "site: www.SigabemMotosSeguros.com.br";
 
// INSTRUÇÕES PARA O CAIXA
$dadosboleto["instrucoes1"] = "- Sr. Caixa, Não Receber após o Vencimento";
$dadosboleto["instrucoes2"] = "- Pagamento preferencial na Loteria";
$dadosboleto["instrucoes3"] = "- Em caso de dúvidas entre em contato conosco: Contato@SigabemMotosSeguros.com.br";
$dadosboleto["instrucoes4"] = "";
 
// DADOS OPCIONAIS DE ACORDO COM O BANCO OU CLIENTE
$dadosboleto["quantidade"] = "";
$dadosboleto["valor_unitario"] = "";
$dadosboleto["aceite"] = "";
$dadosboleto["especie"] = "R$";
$dadosboleto["especie_doc"] = "";
 
 
// ---------------------- DADOS FIXOS DE CONFIGURAÇÃO DO SEU BOLETO --------------- //
 
 
// DADOS DA SUA CONTA - CEF
$dadosboleto["agencia"] = "1242"; // Num da agencia, sem digito
$dadosboleto["conta"] = "2080"; // Num da conta, sem digito
$dadosboleto["conta_dv"] = "3"; // Digito do Num da conta
 
// DADOS PERSONALIZADOS - CEF
$dadosboleto["conta_cedente"] = "367276"; // Código Cedente do Cliente, com 6 digitos (Somente Números)
$dadosboleto["carteira"] = "SR";  // Código da Carteira: pode ser SR (Sem Registro) ou CR (Com Registro) - (Confirmar com gerente qual usar)
 
// SEUS DADOS
$dadosboleto["identificacao"] = "D.J.P.R Plano de Garantia Veicular";
$dadosboleto["cpf_cnpj"] = "107.367.824-51";
$dadosboleto["endereco"] = "Av. Nazare";
$dadosboleto["cidade_uf"] = "Nazare da mata / Pernambuco";
$dadosboleto["cedente"] = "D.J.P.R Plano de Garantia Veicular";
 
// NÃO ALTERAR!
 
 
 
 
$data_venc = $_POST["venccarne"]; //$dadosboleto["data_processamento"];
 
 
 
 
//$data = explode('/',$data_venc );
$data = explode('/',$_POST["venccarne"]);  //$dadosboleto["data_processamento"]
 
 
//$somar_x_dias = 30;
 
$parcelas= 11 ;
 
$vns=0;
 
 
 
include("include/funcoes_cef_sigcb.php"); 
 
 
//for($i = 0 ;$i < $parcelas; $i++){
 
for($i = 0, $meses = 1 ;$i < $parcelas; $i++, $meses++){
 
 
 
 $_POST["venccarne"] = date("d/m/Y", strtotime("now +".$meses." months")); // PRIMEIRAO ALI DA FRENTE.. $dadosboleto["data_processamento"]
//$dadosboleto["data_vencimento"] = date('d/m/Y', mktime(0, 0, 0, $data[1] + $somar_x_dias)) ;
 
 
 
$dadosboleto["nosso_numero"] =  $dadosboleto["nosso_numero"];
 
$dadosboleto["numero_documento"]= $dadosboleto["numero_documento"];
 
 
include("include/layout_cef.php");
 
 
 
 
 
 
// $data = explode('/', date('d/m/Y', mktime(0, 0, 0, $data[1], $data[0]+$somar_x_dias, $data[2])));
 
//$data = date("d/m/Y",mktime(0,0,0,1,18+somar_x_dias,2013));
 
 
 
 
 
 
 
 
 
 
}
 
 
 
?>
 


destacando o codigo que seria para calcular vencimento+30dias..

 

 

 
 
 
 
$data_venc = $_POST["venccarne"]; //$dadosboleto["data_processamento"];
 
 
 
 
//$data = explode('/',$data_venc );
$data = explode('/',$_POST["venccarne"]);  //$dadosboleto["data_processamento"]
 
 
//$somar_x_dias = 30;
 
$parcelas= 11 ;
 
$vns=0;
 
 
 
include("include/funcoes_cef_sigcb.php"); 
 
 
//for($i = 0 ;$i < $parcelas; $i++){
 
for($i = 0, $meses = 1 ;$i < $parcelas; $i++, $meses++){
 
 
 
 $_POST["venccarne"] = date("d/m/Y", strtotime("now +".$meses." months")); // PRIMEIRAO ALI DA FRENTE.. $dadosboleto["data_processamento"]
//$dadosboleto["data_vencimento"] = date('d/m/Y', mktime(0, 0, 0, $data[1] + $somar_x_dias)) ;
 
 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Substitua as funções date, são antigas e, de certa forma, ultrapassadas.

 

Existe muito material que eu mesmo deixei no fórum sobre o assunto de datas, comece lendo esses daqui:

http://forum.imasters.com.br/topic/486600-incrementando-data-usando-oo/

http://forum.imasters.com.br/topic/485867-contar-tempo-passado-com-php/?p=1930475

http://forum.imasters.com.br/topic/484231-somando-valor-inteiro-com-data/

 

Divirta-se.

Compartilhar este post


Link para o post
Compartilhar em outros sites


// prazo a parti da data de hoje

$dias = '3';

 

// calcula a data de vencimento a parti do prazo (dias)

$data_vence = date("d/m/Y", time() + ($dias * 86400)); // 21/02/2013

 

// divide a data em array

$datadiv = explode('/',$data_vence);

 

// Soma mais os 30 aparti da data de Vencimento

$nova_data = mktime(0,0,0,$datadiv[1],$datadiv[0]+(30),$datadiv[2]);

 

// exibe a nova data com 30 a mais da data de vencimento

$prazo = date('d/m/Y',$nova_data); // 23/03/2013

Compartilhar este post


Link para o post
Compartilhar em outros sites

HG-zica. Não preciso dizer que é um erro somar 30 dias a um cálculo de data, sendo que um mês pode ter 28, 29, 30 e 31 dias... O correto é somar um mês e não 30 dias. Pois ocorrerá diferença entre datas, e o pior de tudo, adiantamento de alguma parcela.

 

Veja bem. Vamos começar com uma parcela para 10 de março e sempre alterar o vencimento em 30 dias:

- 10/03;

- 09/04;

- 09/05;

- 08/06;

- 08/07;

- 07/08;

- 06/09;

 

Percebeu o que aconteceu? Meses com 31 dias fazem com que a data de vencimento seja "adiantada" em um dia. Mas não é o mês que está errado, é o cálculo.

 

Como o seu exemplo, pegou a data 21/02/2013 e somou 30 dias, foi para a data 23/03/2013. O correto, seria 21/03/2013.

 

Apesar do título ser "30 em 30 dias". O autor do tópico está somando meses, e não dias.

 

Fortemente sugiro a leitura dos links que deixei. Não consigo ver alguém tentando reinventar a roda.

Compartilhar este post


Link para o post
Compartilhar em outros sites

HG-zica. Não preciso dizer que é um erro somar 30 dias a um cálculo de data, sendo que um mês pode ter 28, 29, 30 e 31 dias... O correto é somar um mês e não 30 dias. Pois ocorrerá diferença entre datas, e o pior de tudo, adiantamento de alguma parcela.

 

Veja bem. Vamos começar com uma parcela para 10 de março e sempre alterar o vencimento em 30 dias:

- 10/03;

- 09/04;

- 09/05;

- 08/06;

- 08/07;

- 07/08;

- 06/09;

 

Percebeu o que aconteceu? Meses com 31 dias fazem com que a data de vencimento seja "adiantada" em um dia. Mas não é o mês que está errado, é o cálculo.

 

Como o seu exemplo, pegou a data 21/02/2013 e somou 30 dias, foi para a data 23/03/2013. O correto, seria 21/03/2013.

 

Apesar do título ser "30 em 30 dias". O autor do tópico está somando meses, e não dias.

 

Fortemente sugiro a leitura dos links que deixei. Não consigo ver alguém tentando reinventar a roda.

 

Ata, tendeu.. não avia me atentado a isto, Obrigado pelo a observação!

acho que o Joao consegue fazer com a referencia que deixei

 

espero ter ajudado

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.