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

ecommerce vendendo itens mesmo com disponibilidade zero


acauaferreira

Pergunta

Olá,Estou com dificuldade de arrumar um bug de um sistema de reservas online de hotel

O sistema ta a aceitando vender um quarto mesmo quando a disponibilidade(Allotment) está em zero.

Devo adicionar uma linha de codigo para filtrar a disponibilidade caso allotment seja = 0 nas datas pesquisadas.

  • Pra mim esta é a linha que está dando erro: (linha 11)

$sql .= "AND pms_allotment.allotment >= '$rooms' \n";

  • DEVERIA SER ALGO TIPO:

$sql .= "AND pms_allotment.allotment > 0 \n"; Mas mesmo com essa variação falta algo,porque o bug ainda persiste....

-A variável '$rooms' é sempre = 1

-este php é o que faz as contas finais para dizer no site se um quarto está disponivel e quanto custa

-Front end desse sistema: http://yogaquantico.com.br/t9/

-O problema só aparece quando tenho mais de 2 ou mais quartos cadastrados,caso eu tenha só 1 quarto cadastrado a disponibilidade funciona bem quando chega a zero.
- E quando tenho mais de 2 quartos cadstrados e por exemplo quero ficar na suite X por 5 dias,mas ela so tem disponibilidade para 3 dias,
o site mostra que ela está disponivel e acaba vendendo-a com preços misturados de outras suites disponiveis na mesma data.

<?
$sql = "SELECT * \n";
$sql .= "FROM pms_ratecode_rate, pms_allotment \n";
$sql .= "WHERE pms_ratecode_rate.ratecode_id = '$rs[ratecode_id]' \n";
$sql .= "AND pms_allotment.allotmaster_id = '$allotmaster_id' \n";
$sql .= "AND pms_allotment.roomtype_id = '$rs[roomtype_id]' \n";
$sql .= "AND pms_ratecode_rate.ratedate = pms_allotment.allotdate \n";
$sql .= "AND pms_ratecode_rate.ratedate >= '$checkin' \n";
$sql .= "AND pms_ratecode_rate.ratedate < '$checkout' \n";
$sql .= "AND pms_ratecode_rate.ratedate = pms_allotment.allotdate \n";
$sql .= "AND pms_allotment.allotment >= '$rooms' \n";


















$stmt1 = $db->prepare($sql);
$stmt1->execute()or die("<pre>$sql</pre>".print_r($stmt1->errorInfo()));
if($stmt1->rowCount()){
  while($rs1 = $stmt1->fetch(PDO::FETCH_ASSOC)){
		list($rate_yy,$rate_mm,$rate_dd) = explode("-",$rs1[ratedate]);
		$ratestamp = mktime(0,0,0,$rate_mm,$rate_dd,$rate_yy);
		$rate[$rs1[ratedate]] = $rs1; 
  }      
  
  $n = 0;
  $notavai = false;
  while($n < $nights){
    $dailycheck_stamp = date("Y-m-d", mktime(0,0,0,$mm1,$dd1+$n,$yy1));
    if(is_array($rate[$dailycheck_stamp]) == false){
      $notavai = true;
    }
    if(is_array($promo) == false){				
      $ratetotal[$rs[ratecode_id]][] = ($rate[$dailycheck_stamp]["rate_$adults"] + ($rate[$dailycheck_stamp]["rate_child"] * $child)) * $rooms;
    }else{
      $rate_promo = ($ratepromo[$dailycheck_stamp]["rate_$adults"] + ($ratepromo[$dailycheck_stamp]["rate_child"] * $child)) * $rooms;
      $rate_cross[$rs[ratecode_id]][] = ($cross_rate[$dailycheck_stamp]["rate_$adults"] + ($cross_rate[$dailycheck_stamp]["rate_child"] * $child)) * $rooms;
      
      $ratetotal[$rs[ratecode_id]][] = $rate_promo;
      $ratetotal_cross[$rs[ratecode_id]][] = $rate_promo;
    }		
    $n++;
  }
  
  if($property[taxtype] == "inclusive"){
    $tax = 0;
    $total = array_sum($ratetotal[$rs[ratecode_id]]);
    $total_notax = $total;
  }else{
    $total_notax = array_sum($ratetotal[$rs[ratecode_id]]);
    $tax = $total_notax * ($property[taxamount]/100);	
    $total = $total_notax + $tax;
  }
  
  $sql = "INSERT INTO pms_rateavai \n";
  $sql .= "SET \n";
  $sql .= "agent_id = '$agent_id', \n";
  $sql .= "session_id = '$session_id', \n";
  $sql .= "property_id = '$property[property_id]', \n";
  $sql .= "ratemaster_id = '$ratemaster_id', \n";
  $sql .= "allotmaster_id = '$allotmaster_id', \n";
  $sql .= "ratecode_id = '$rs[ratecode_id]', \n";
  $sql .= "roomtype_id = '$rs[roomtype_id]', \n";
  $sql .= "checkin = '$checkin', \n";
  $sql .= "checkout = '$checkout', \n";
  $sql .= "nights = '$nights', \n";
  $sql .= "rooms = '$rooms', \n";
  $sql .= "adults = '$adults', \n";
  $sql .= "child = '$child', \n";
  $sql .= "inclusion = '$rs[ratecode_inclusion]', \n";
  $sql .= "policy_id = '$rs[policy_id]', \n";
  $sql .= "taxtype = '$property[taxtype]', \n";
  $sql .= "tax = '$tax', \n";
	$sql .= "room_total = '$total_notax', \n";
  $sql .= "total_notax = '$total_notax', \n";
  $sql .= "total = '$total', \n";
  $sql .= "currency = '$rs[ratecode_currency]' \n";
  $stmtInsert = $db->prepare($sql);
  $stmtInsert->execute()or die("<pre>$sql</pre>".print_r($stmtInsert->errorInfo()));
  $rateavai_id = $db->lastInsertId();
	
  $uri = "?action=bookingcart&rateavai_id=".($rateavai_id);
  $ratecode_total_summary = array_sum($ratetotal[$rs[ratecode_id]]);
    
  if($notavai == false){								
    $n = 0;
    if($weeks == 1){	
      if($nights == 1){
        include("inc.rateavai.query.night.php");
      }else{			
        include("inc.rateavai.query.nights.php");				
      }
    }else{
      include("inc.rateavai.query.weeks.php");
    }	
    $available = true;
    $ratecode_id_count[] = $rs[ratecode_i];

    $roomtype_name = json_decode($rs[roomtype_name],true);
    $data_rate_filter[] = crc($ratecode_total_summary,$rs[ratecode_currency],$currency);
    if($data_roomtype_name_filter[$rs[roomtype_id]] == false){
      if($roomtype_name[$locale] == false){
        $roomtype_name[$locale] = $roomtype_name[en_US];
      }
      $data_roomtype_name_filter[$rs[roomtype_id]] = $roomtype_name[$locale];
    }
    unset($stamp_checkpromo_start);
    unset($stamp_checkpromo_end);
    unset($cross_rate);
    unset($rate_cross);
    unset($promo);	
    unset($ratepromo);
    unset($ratetotal_cross);
    unset($rate);
  }
}
?> 

Allotment.jpg

Editado por acauaferreira
Link para o comentário
Compartilhar em outros sites

0 respostass a esta questão

Posts Recomendados

Até agora não há respostas para essa pergunta

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,5k
×
×
  • Criar Novo...