Exemplo n.º 1
0
 /**
  * OK. Funció que es crida quan s'ha demanat de fer una modificació d'una comanda
  * $R['parametres'] = { idSessio: { 'idSeient':true, 'idSeient': false } }
  * $R['accio'] = '-' (res), 'L' (Allibera), 'E' (Entrega)
  * $R['idComanda']
  **/
 public function doComandaUpdate()
 {
     $R = $this->getAjaxData();
     switch ($R['accio']) {
         case 'L':
             //Carrego la comanda
             $CTO = new ComandaTableObject();
             $CTO->loadComanda($R['idComanda']);
             //Per cada seient miro si s'ha escollit i aplico l'acció d'alliberament
             $LlistatLocalitats = $CTO->getLlistatLocalitats();
             foreach ($R['parametres'] as $idSessio => $Seients) {
                 foreach ($Seients as $idSeient => $Seleccionat) {
                     foreach ($LlistatLocalitats[$idSessio]['Localitats'] as $LTO) {
                         if ($LTO->getLocalitatIdSring() == $idSeient . '-' . $idSessio && $Seleccionat) {
                             $LTO->localitat['l_estat'] = LocalitatTableObject::ESTAT_LLIURE;
                             $LTO->localitat['l_data'] = time();
                             $LTO->localitat['l_idComanda'] = 0;
                             $LTO->doSave();
                         }
                     }
                 }
             }
             echo json_encode(array('Accio' => $R['accio'], 'Comanda' => $CTO, 'Localitats' => $CTO->getLlistatLocalitats()));
             break;
             //Faig una entrega d'entrades que eren reserva i ara serà una comanda nova
         //Faig una entrega d'entrades que eren reserva i ara serà una comanda nova
         case 'E':
             //Creo una comanda nova amb les dades de la comanda actual
             $CTO = new ComandaTableObject();
             $CTO->newComandaId(ComandaTableObject::TIPUS_PAGAMENT_METALIC, ComandaTableObject::TIPUS_LLOCCOMPRA_TAQUILLA, ComandaTableObject::TIPUS_COMANDA_VENTA);
             //Passo les dades de la comanda a la nova
             $CTO_OLD = new ComandaTableObject();
             $CTO_OLD->loadComanda($R['idComanda']);
             $CTO->comanda['co_estat'] = '-';
             $CTO->comanda['co_IdClient'] = $CTO_OLD->comanda['co_IdClient'];
             $CTO->comanda['co_NomCompra'] = $CTO_OLD->comanda['co_NomCompra'];
             $CTO->comanda['co_TelefonCompra'] = $CTO_OLD->comanda['co_TelefonCompra'];
             $CTO->comanda['co_EmailCompra'] = $CTO_OLD->comanda['co_EmailCompra'];
             $CTO->doSave();
             //Aplico el canvi de comanda a les localitats que he marcat.
             $LlistatLocalitats = $CTO_OLD->getLlistatLocalitats();
             foreach ($R['parametres'] as $idSessio => $Seients) {
                 foreach ($Seients as $idSeient => $Seleccionat) {
                     foreach ($LlistatLocalitats[$idSessio]['Localitats'] as $LTO) {
                         if ($LTO->getLocalitatIdSring() == $idSeient . '-' . $idSessio && $Seleccionat) {
                             $LTO->localitat['l_idComanda'] = $CTO->getComandaId();
                             $LTO->localitat['l_estat'] = LocalitatTableObject::ESTAT_PREOCUPADA;
                             $LTO->localitat['l_data'] = time();
                             $LTO->doSave();
                         }
                     }
                 }
             }
             echo json_encode(array('Accio' => $R['accio'], 'Comanda' => $CTO, 'Localitats' => $CTO->getLlistatLocalitats()));
             break;
     }
 }
Exemplo n.º 2
0
 public static function validaPagamentTPV($Ds_SignatureVersion, $Ds_MerchantParameters, $Ds_Signature, $getTPV = false)
 {
     //Creem objecte
     $RedSysTmp = new RS();
     //Aquest el creem per carregar les dades inicials
     $RedSys = new RS();
     //Aquest tindrà les dades tant si entrem per tpv com si no hi entrem
     $Config = Json::loadJsonConfigFile('config.json');
     $CTO = new ComandaTableObject();
     //Descodifiquem i passem a array els paràmetres
     $decode = $RedSysTmp->decodeMerchantParameters($Ds_MerchantParameters);
     $RedSysTmp->stringToArray($decode);
     //Si entrem sense haver passat pel TPV ( o sigui, metàl·lic o reserva o 0 euros )
     $Par = array('Error' => "");
     if (isset($RedSysTmp->vars_pay['Ds_Merchant_MerchantData'])) {
         foreach ($RedSysTmp->vars_pay as $K => $V) {
             $tmp = str_replace("_Merchant_", "_", $K);
             $RedSys->setParameter($tmp, $V);
         }
         $RedSys->setParameter('Ds_Response', '0000');
         $RedSys->setParameter('Ds_Order', '0');
         $RedSys->setParameter('Ds_AuthorisationCode', '0');
     } else {
         //No cal fer cap canvi, simplement ho passo tot junt
         $RedSys = $RedSysTmp;
     }
     //Carreguem la id de l'entrada i comencem el procés
     $tmp = explode('-', $RedSys->getParameter('Ds_MerchantData'));
     if (!isset($tmp[1])) {
         $Par['Error'] = "ENTRADA";
     } else {
         $Par['idComanda'] = intval($tmp[1]);
         $idComanda = $Par['idComanda'];
         $CTO->loadComanda($tmp[1]);
         if ($CTO->getComandaId() > 0) {
             //Generem la signatura
             $signatura_rebuda = $Ds_Signature;
             //Només generem la signatura si entrem per TPV sinó la validem automàticament
             $signatura_generada = $signatura_rebuda;
             if (!isset($RedSysTmp->vars_pay['Ds_Merchant_MerchantData'])) {
                 $signatura_generada = $RedSys->createMerchantSignatureNotif($Config['TPV_ENT_PASSWORD'], $Ds_MerchantParameters);
             }
             //Si la signatura és correcta i no ha donat error, marquem la matrícula com a pagada
             if ($signatura_rebuda != $signatura_generada) {
                 $Par['Error'] = "SIGNATURA";
             } elseif ($RedSys->getParameter('Ds_Response') != '0000') {
                 $Par['Error'] = "RESPONSE";
             } else {
                 //Si estem a la crida automàtica del GetTPV fem les tasques que toquen
                 if ($getTPV) {
                     $CTO->comanda['co_estat'] = ComandaTableObject::TIPUS_ESTAT_PAGAT;
                     $CTO->comanda['co_TpvCode'] = $RedSys->getParameter('Ds_AuthorisationCode');
                     $CTO->comanda['co_TpvOrder'] = $RedSys->getParameter('Ds_Order');
                     $CTO->doSave();
                     //Guardem les dades de la targeta
                     $CTO->doMarcarPagatsOK();
                     //Tots els seients en estat P, passen a O
                     //Actualitzem les places lliures
                     foreach (array_keys($CTO->getLlistatLocalitats()) as $idSessio) {
                         //Carreguem les sessions de la comanda i actualitzem
                         $STO = new SessioTableObject(null, SessioTableObject::FROM_EMPTY);
                         $STO->loadById($idSessio);
                         //Carrego els seients lliures i els guardo
                         $STO->updateLocalitatsLliures();
                     }
                     //Només enviem el correu amb entrades si és una venda i existeix el correu.
                     self::sendEmailComanda($CTO);
                 }
             }
         } else {
             $Par['Error'] = 'COMANDA';
         }
     }
     $Par['Ds_Response'] = $RedSys->getParameter('Ds_Response');
     $Par['Ds_MerchantData'] = $RedSys->getParameter('Ds_MerchantData');
     $Par['CTO'] = $CTO;
     return $Par;
 }
Exemplo n.º 3
0
 /**
  * Aquesta funció genera una nova comanda còpia de l'actual amb un codi nou per enviar al TPV.
  **/
 public function generaNovaComanda()
 {
     //Creo una nova comanda
     $CTO = new ComandaTableObject(null, ComandaTableObject::FROM_EMPTY);
     $CTO->newComandaId($this->comanda['co_TipusPagament'], $this->comanda['co_LlocCompra'], $this->comanda['co_TipusComanda']);
     //Canviem els codis de comanda pel nou codi de comanda i també actualitzo
     $this->db->update("localitats", array('l_idComanda' => $CTO->getComandaId()), array('l_idComanda' => $this->getComandaId()));
     $this->comanda['co_idComanda'] = $CTO->getComandaId();
     $this->comanda['co_Codi'] = $CTO->comanda['co_Codi'];
 }
Exemplo n.º 4
0
 public function setLocalitatClick($idLocalitat, $Accio)
 {
     //Carreguem la possible comanda on s'haurà de registrar
     $CTO = new ComandaTableObject();
     $CTO->loadComanda();
     //Carrego la localitat o en creo una de nova
     $this->loadLocalitatByIdString($idLocalitat, $CTO->getComandaId());
     //Fem l'update
     $e = $this->localitat['l_estat'];
     switch ($Accio) {
         case self::ACCIO_VENTA:
             if ($e == 'L') {
                 $this->updateLocalitat($CTO, 'P');
             } elseif ($e == 'P' && $this->IsModificable($CTO) && $this->inTempsPreCompra()) {
                 $this->updateLocalitat($CTO, 'L');
             } elseif ($e == 'P' && !$this->inTempsPreCompra()) {
                 $this->updateLocalitat($CTO, 'P');
             } elseif ($e == 'R' && $this->IsModificable($CTO)) {
                 $this->updateLocalitat($CTO, 'P');
             } elseif ($e == 'O' && $this->IsModificable($CTO)) {
                 $this->updateLocalitat($CTO, 'L');
             }
             break;
         case self::ACCIO_RESERVA:
             if ($e == 'L') {
                 $this->updateLocalitat($CTO, 'P');
             } elseif ($e == 'P' && $this->inTempsPreCompra() && $this->IsModificablePreCompra($CTO)) {
                 $this->updateLocalitat($CTO, 'L');
             } elseif ($e == 'P' && !$this->inTempsPreCompra()) {
                 $this->updateLocalitat($CTO, 'P');
             } elseif ($e == 'R' && $this->IsModificable($CTO)) {
                 $this->updateLocalitat($CTO, 'L');
             } elseif ($e == 'O' && $this->IsModificable($CTO)) {
                 $this->updateLocalitat($CTO, 'O');
             }
             break;
         case self::ACCIO_BAIXA:
             if ($e == 'L') {
                 $this->updateLocalitat($CTO, 'L');
             } elseif ($e == 'P' && $this->IsModificablePreCompra($CTO)) {
                 $this->updateLocalitat($CTO, 'L');
             } elseif ($e == 'R' && $this->IsModificable($CTO)) {
                 $this->updateLocalitat($CTO, 'L');
             } elseif ($e == 'O' && $this->IsModificable($CTO)) {
                 $this->updateLocalitat($CTO, 'L');
             }
             break;
     }
     $this->doSave();
 }