示例#1
0
 /**
  * Entra un preu i un array de descompte i es fan els càlculs pertinents
  * @param array('PREU'=>,'PERCENT'=>,'NOM'=>)
  * */
 public function getPreuAmbDescompte($idC, $idD)
 {
     $OC = self::retrieveByPK($idC);
     $P = $OC->getPreu();
     return DescomptesPeer::getPreuAmbDescompte($P, $idD);
 }
 /**
  * @return array( status , OER )
  * @return -1 (OH incorrecte)
  * @return -2 (OA incorrecte)
  * @return -3 (OEP incorrecte)
  * @return -4 (Repe)
  * @return -5 (Exhaurides)
  * @return -6 (Error TPV)
  * @return -7 (Es volen comprar 0 entrades)
  * @return 1 (Compra metàl·lic o codi de barres OK)
  * @return 2 (Reserva d'entrada OK)
  * @return 3 (Pagament amb TPV)
  * @return 4 (En llista d'espera)
  * @return 5 (Pagament amb domiciliació) || Aquest encara s'ha d'aplicar correctament.
  * */
 public static function setCompraEntrada($OER)
 {
     $IDH = $OER->getEntradesPreusHorariId();
     $IDU = $OER->getUsuariId();
     $NEntrades = $OER->getQuantitat();
     $Descompte = $OER->getDescompte();
     $TPagament = $OER->getTipusPagament();
     //Paràmetres que retornaré després de la compra d'una entrada.
     $RET = array('status' => 0, 'OER' => null);
     $OH = HorarisPeer::retrieveByPK($IDH);
     //Comprovem que existeixi l'horari
     if (!$OH instanceof Horaris) {
         $RET = array('status' => -1, 'OER' => null);
         //Horari OK.
     } else {
         $IDA = $OH->getActivitatsActivitatid();
         $OA = ActivitatsPeer::retrieveByPK($IDA);
         //Comprovem que existeixi l'activitat
         if (!$OA instanceof Activitats) {
             $RET = array('status' => -2, 'OER' => null);
             //Activitat OK.
         } else {
             //Carrego l'entrada i el preu
             $OEP = EntradesPreusPeer::retrieveByPK($IDH);
             //No s'ha trobat el preu per aquesta activitat i horari.
             if (!$OEP instanceof EntradesPreus) {
                 $RET = array('status' => -3, 'OER' => null);
                 //HORARI_INEXISTENT
             } else {
                 //Comprovem que el nombre d'entrades no sigui 0 o un valor extrany
                 if (!($NEntrades >= 0)) {
                     $RET = array('status' => -7, 'OER' => null);
                     //Número d'entrades incorrecte
                 } else {
                     //Tenim un horari carregat i una activitat.
                     $idS = $OH->getSiteid();
                     //Aquest no el farem servir perquè acceptem que les entrades siguin repetides pels usuaris.
                     $HaComprat = 0;
                     //EntradesReservaPeer::ExisteixenEntradesComprades($IDU, $IDH);
                     $PlacesLliures = EntradesReservaPeer::countEntradesActivitatConf($IDH);
                     //Comprovem si l'entrada està repetida
                     if ($HaComprat) {
                         $RET = array('status' => -4, 'OER' => null);
                         //ENTRADA_REPE
                         //No té cap entrada comprada
                     } else {
                         //Mirem si queden places tenint en cmopte que no hi ha llista d'espera.
                         if ($PlacesLliures - $NEntrades < 0 && $TPagament != TipusPeer::PAGAMENT_LLISTA_ESPERA) {
                             return array('status' => -5, 'OER' => null);
                             //NO_QUEDEN_PROU_ENTRADES i no hi ha llista d'espera
                             //Tot OK. Passem al tipus de pagament.
                         } else {
                             //Generem la nova compra o reserva
                             //$OER = EntradesReservaPeer::initialize( $idS , '' , 0 , $IDH , $IDU , $NEntrades , $Descompte , $TPagament )->getObject();
                             //Marquem el preu
                             $OER->setPagat(DescomptesPeer::getPreuAmbDescompte($OEP->getPreu(), $Descompte));
                             $OER->setData(date('Y-m-d H:i', time()));
                             //Mirem el tipus de pagament i deixem l'estat oportú.
                             if ($TPagament == TipusPeer::PAGAMENT_METALIC || $TPagament == TipusPeer::PAGAMENT_CODI_BARRES) {
                                 $OER->setEstat(EntradesReservaPeer::ESTAT_ENTRADA_RESERVADA);
                                 $OER->save();
                                 return array('status' => 1, 'OER' => $OER);
                             } elseif ($TPagament == TipusPeer::PAGAMENT_RESERVA) {
                                 $OER->setPagat(0);
                                 $OER->setEstat(EntradesReservaPeer::ESTAT_ENTRADA_RESERVADA);
                                 $OER->save();
                                 return array('status' => 2, 'OER' => $OER);
                             } elseif ($TPagament == TipusPeer::PAGAMENT_TARGETA) {
                                 $OER->setEstat(EntradesReservaPeer::ESTAT_ENTRADA_EN_PROCES);
                                 $OER->save();
                                 return array('status' => 3, 'OER' => $OER);
                             } elseif ($TPagament == TipusPeer::PAGAMENT_LLISTA_ESPERA) {
                                 $OER->setPagat(0);
                                 $OER->setEstat(EntradesReservaPeer::ESTAT_ENTRADA_EN_ESPERA);
                                 $OER->save();
                                 return array('status' => 4, 'OER' => $OER);
                             } elseif ($TPagament == TipusPeer::PAGAMENT_DOMICILIACIO) {
                                 $OER->setEstat(EntradesReservaPeer::ESTAT_ENTRADA_RESERVADA);
                                 $OER->save();
                                 return array('status' => 5, 'OER' => $OER);
                             }
                             UsuarisPeer::addSite($IDU, $idS);
                         }
                     }
                 }
             }
         }
     }
     return $RET;
 }