/** * 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; } }
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; }
public function getComanda() { $R = $this->getAjaxData(); //És una edició i envio la info d'aquesta comanda if (isset($R['idComanda'])) { $CTO = new ComandaTableObject(); $CTO->loadComanda($R['idComanda']); //És una comanda que carrego de la sessió. Pot ser que encara no l'hagi creada, llavors no la carrego. //La Comanda es crea a setLocalitat quan algú clica una localitat. } else { //Carrego les comandes guardades i segueixo $CTO = new ComandaTableObject(); if ($CTO->hasComandaSession()) { $CTO->loadComanda(); } } $Localitats = $CTO->getLlistatLocalitats(); //Ha d'anar separat perquè a dins calculo el total de la comanda $RET = array('Comanda' => $CTO, 'Localitats' => $Localitats); echo json_encode($RET); }
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(); }