/**
  * Converteix objecte entrades_reserva a web o bdd
  * @param  object  [$OE            = array()] Objecte entrades_reserva
  * @param  boo     $toBDD          = false  Va a BDD?
  * @param  boolean $json           = false   Ha de retornar Json o array
  * @param  integer $idS            = 1        Siteid
  * @return objecte Objecte entrades_reserva format web o bdd
  */
 public function EntradaObject($OE = array(), $toBDD = false, $json = false, $idS = 1)
 {
     //Valors per defecte que han d'aparèixer...
     if (!isset($OE['idEntrada']) || !is_numeric($OE['idEntrada'])) {
         $OE['idEntrada'] = 0;
     }
     if (!isset($OE['usuari_id'])) {
         $OE['usuari_id'] = '';
     }
     if (!isset($OE['nom_reserva'])) {
         $OE['nom_reserva'] = '';
     }
     if (!isset($OE['email_reserva'])) {
         $OE['email_reserva'] = '';
     }
     if (!isset($OE['telefon_reserva'])) {
         $OE['telefon_reserva'] = '';
     }
     if (!isset($OE['pagat'])) {
         $OE['pagat'] = 0;
     }
     if (!isset($OE['data']) || empty($OE['data'])) {
         $OE['data'] = date('Y-m-d H:i', time());
     }
     if (!isset($OE['estat'])) {
         $OE['estat'] = '-';
     }
     if (!isset($OE['tipus_pagament'])) {
         $OE['tipus_pagament'] = '';
     }
     if (!isset($OE['actiu'])) {
         $OE['actiu'] = true;
     }
     if (!isset($OE['site_id'])) {
         $OE['site_id'] = $idS;
     }
     if (!isset($OE['tpv_operacio'])) {
         $OE['tpv_operacio'] = '';
     }
     if (!isset($OE['tpv_order'])) {
         $OE['tpv_order'] = '';
     }
     if (!isset($OE['comentari'])) {
         $OE['comentari'] = '';
     }
     if (!isset($OE['idEspectacle'])) {
         $OE['idEspectacle'] = '';
     }
     if (!isset($OE['num_entrades'])) {
         $OE['num_entrades'] = 0;
     }
     //Conversions en ambdues direccions
     if ($toBDD) {
         //Comprovem que hi ha sempre dues entrades i sinó, les creem i després actualitzem.
         $OA = $this->getActivitatById($OE['idEspectacle']);
         $TMP = array(0 => array('quantitat' => 0), 1 => array('quantitat' => 0));
         $TotalEntrades = 0;
         $TotalPagat = 0;
         foreach ($TMP as $K => $V) {
             if (!isset($OE['entrades'][$K])) {
                 $OE['entrades'][$K] = $V;
             }
             if (!is_numeric($OE['entrades'][$K]['quantitat'])) {
                 throw new MyException("El nombre d'entrades ha de ser numèric", 193);
             } else {
                 $TotalEntrades += $OE['entrades'][$K]['quantitat'];
                 $TotalPagat += $OA['Preus'][$K]["Preu"] * $OE['entrades'][$K]['quantitat'];
             }
         }
         if ($TotalEntrades == 0) {
             throw new MyException("Has d'escollir un número de localitats.", 192);
         }
         $OE['num_entrades'] = $TotalEntrades;
         $OE['entrades'] = json_encode($OE['entrades']);
         $OE['pagat'] = $TotalPagat;
         //Busquem l'usuari si s'ha entrat
         $AU = explode("|", $OE['usuari_id']);
         if (sizeof($AU) == 3) {
             $OE['usuari_id'] = trim($AU[2]);
         } elseif (is_numeric($OE['usuari_id'])) {
             $OE['usuari_id'] = intval($OE['usuari_id']);
         } elseif (empty($OE['nom_reserva']) || empty($OE['email_reserva']) || empty($OE['telefon_reserva'])) {
             throw new MyException("Cal entrar un usuari o bé el nom, email i telèfon.", 191);
         }
         //Hem de comprovar que hem escollit un mitjà de pagament
         if (empty($OE['tipus_pagament'])) {
             throw new MyException("Has d'entrar algun mitjà de pagament.", 195);
         }
     } else {
         if (!isset($OE['entrades'])) {
             $OE['entrades'] = array(0 => array('quantitat' => 0), 1 => array('quantitat' => 0));
         } else {
             $OE['entrades'] = json_decode($OE['entrades'], true);
         }
         $UM = new UsuarisModel();
         if ($OE['usuari_id'] > 0) {
             $OU = $UM->getUsuariById($OE['usuari_id']);
             $OE['usuari_id'] = $OU[0]['DNI'] . ' | ' . $OU[0]['Cog1'] . ' ' . $OU[0]['Cog2'] . ', ' . $OU[0]['Nom'] . ' | ' . $OU[0]['UsuariID'];
         }
     }
     if ($json) {
         return json_encode($OE);
     } else {
         return $OE;
     }
 }
Beispiel #2
0
 public static function generateEntrada($OE)
 {
     $inici = '9099921002998';
     $entitat = '0330056';
     $idM = $OE['idEntrada'];
     $codiClient = $OE['usuari_id'] > 0 ? $OE['usuari_id'] : "-";
     $dataFactura = D::ConvertData(explode(" ", $OE['data'])[0], false);
     $tipusPagament = $OE['tipus_pagament'];
     $usuari_nom = $OE['nom_reserva'];
     $usuari_email = $OE['email_reserva'];
     $usuari_telefon = $OE['telefon_reserva'];
     if ($OE['usuari_id'] > 0) {
         $UM = new UsuarisModel();
         $OU = $UM->getUsuariById($OE['usuari_id']);
         $usuari_email = $OU[0]['Email'];
         $usuari_telefon = $OU[0]['Mobil'];
         $usuari_nom = $OU[0]['Nom'] . ', ' . $OU[0]['Cog1'] . ' ' . $OU[0]['Cog2'];
     }
     $EM = new EntradesModel();
     $OA = $EM->getActivitatById($OE['idEspectacle']);
     $nom_espectacle = $OA['Nom'];
     $entrades = json_decode($OE['entrades'], true);
     $num_entrades_normal = $entrades[0]['quantitat'];
     $num_entrades_descompte = $entrades[1]['quantitat'];
     $preu_normal = $OA['Preus'][0]['Preu'] * $entrades[0]['quantitat'];
     $preu_descompte = $OA['Preus'][1]['Preu'] * $entrades[1]['quantitat'];
     $referencia = str_pad(strval($idM), 11, '0', STR_PAD_LEFT);
     //Càlcul de valor de check
     $ponderacions = array(10 => 2, 9 => 3, 8 => 4, 7 => 5, 6 => 6, 5 => 7, 4 => 8, 3 => 9, 2 => 2, 1 => 3, 0 => 4);
     $tot = 0;
     for ($i = 10; $i >= 0; $i--) {
         $tot += $referencia[$i] * $ponderacions[$i];
     }
     $cc = $tot % 11;
     if ($cc == 10) {
         $cc = 0;
     }
     //Afegim el valor de check a la referència i seguim.
     $referencia .= $cc;
     $import = str_pad(strval($OE['pagat'] * 100), 10, '0', STR_PAD_LEFT);
     $codi = $inici . $entitat . $referencia . $import;
     $barcodeobj = new \Helpers\Tcpdf\TCPDFBarcode($codi, 'C128');
     $barcodepng = $barcodeobj->getBarcodePNGData(1, 40, array(0, 0, 0));
     file_put_contents(self::$URL_ENTRADES . $idM . '.png', $barcodepng);
     $p = new tcpdf(PDF_PAGE_ORIENTATION, PDF_UNIT, PDF_PAGE_FORMAT, true, 'UTF-8', false);
     // set document information
     $p->SetCreator(PDF_CREATOR);
     $p->SetAuthor('Casa de Cultura de Girona');
     $p->SetTitle('CCG');
     $p->SetSubject('CCG');
     $p->SetKeywords('CCG');
     //$p->SetDefaultMonospacedFont(PDF_FONT_MONOSPACED);
     $p->SetMargins(PDF_MARGIN_LEFT, PDF_MARGIN_TOP, PDF_MARGIN_RIGHT);
     $p->SetAutoPageBreak(TRUE, PDF_MARGIN_BOTTOM);
     $p->setImageScale(PDF_IMAGE_SCALE_RATIO);
     $p->SetFont('dejavusans', '', 10);
     $p->AddPage();
     $html = '
                 <table style="width:100%">
                     <tr>
                         <td style="width:30%; text-align:center;">
                             <img src="' . self::$URL_HOSPICI . 'images/front/logo_ccg.jpg" />
                             <div style="font-size:7px;">
                                 Plaça de l\'hospital, 6 – 17001 Girona<br />
                                 TELÈFON 972 20 20 13 FAX 972 21 37 72<br />
                                 HORARI DE SECRETARIA de 9 a 14h i de 16 a 20h<br />
                                 A/E secretaria@casadecultura.org<br />WEB www.casadecultura.org
                             </div>
                         </td>
                         <td style="width:70%; text-align:center;">
                             <div style="font-size:10px;">Si pagueu amb codi de barres, podeu anar a un caixer de <b>CaixaBank</b>, entreu la targeta, cliqueu la icona "Codi de Barres" i seguiu les instruccions per pantalla.</div>
                             <div><img src="' . self::$URL_HOSPICI . 'documents/entrades/' . $idM . '.png" /></div>
                             <div>' . $codi . '<br />
                                 ENTITAT: ' . $entitat . ' REFERÈNCIA: ' . $referencia . ' IMPORT: ' . $OE['pagat'] . '€
                             </div>
                         </td>
                     </tr>
                 </table>
                 <br /><br />
                 <div style="background-color: #ffece5; height:1px; width:100%"></div>
                 <br />
                 <h1 style="color: #cc3300">DADES FACTURA</h1>
                 <table style="width:100%">
                     <tr>
                         <td>Núm factura: E-' . $idM . '</td>
                         <td>Codi client: ' . $codiClient . '</td>
                         <td>Data factura: ' . $dataFactura . '</td>        
                     </tr>
                     <tr>
                         <td>Tipus pagament: ' . $tipusPagament . '</td>
                     </tr>
                 </table>
                 <br /><br />
                 <h1 style="color: #cc3300">DADES USUARI</h1>
                 <table style="width:100%">
                     <tr>
                         <td>Nom: ' . $usuari_nom . '</td>
                         <td>Telèfon: ' . $usuari_telefon . '</td>
                         <td>Email: ' . $usuari_email . '</td>        
                     </tr>    
                 </table>
                 <br /><br />
                 <h1 style="color: #cc3300">DETALL</h1>
                 <table style="border:1px solid #cc3300; border-collapse:collapse;">
                     <tr>
                         <td style="width:55%; color:white; background-color: #cc3300">Descripció</td>
                         <td style="width:15%; color:white; background-color: #cc3300">Preu</td>
                         <td style="width:15%; color:white; background-color: #cc3300">Quantitat</td>
                         <td style="width:15%; color:white; background-color: #cc3300">Import</td>        
                     </tr>
                     <tr>
                         <td style="height:70px; border:1px solid #cc3300;">' . $nom_espectacle . '<br /><i>Data: ' . $OA['Dia'] . ' ' . $OA['Hora'] . '</i></td>
                         <td style="border:1px solid #cc3300;">' . $OA['Preus'][0]['Preu'] . '€</td>
                         <td style="border:1px solid #cc3300;">' . $num_entrades_normal . '</td>
                         <td style="border:1px solid #cc3300;">' . $preu_normal . '€</td>        
                     </tr>';
     if ($num_entrades_descompte > 0) {
         $html .= '
                     <tr>
                         <td style="height:70px; border:1px solid #cc3300;">Entrades amb descompte<br /></td>
                         <td style="border:1px solid #cc3300;">' . $OA['Preus'][1]['Preu'] . '€</td>
                         <td style="border:1px solid #cc3300;">' . $num_entrades_descompte . '</td>
                         <td style="border:1px solid #cc3300;">' . $preu_descompte . '€</td>        
                     </tr>';
     }
     $html .= '
                     <tr>
                         <td></td>
                         <td></td>
                         <td style="border-left:1px solid #cc3300;">Subtotal</td>
                         <td>' . $OE['pagat'] . '€</td>        
                     </tr>
                     <tr>
                         <td></td>
                         <td></td>
                         <td style="border-left:1px solid #cc3300;">IVA</td>
                         <td>0€</td>        
                     </tr>
                     <tr>
                         <td></td>
                         <td></td>
                         <td style="border-left:1px solid #cc3300;">Total</td>
                         <td>' . $OE['pagat'] . '€</td>        
                     </tr>
                 </table>
                 <br /><br /><br />
                 <div>FUNDACIÓ CASA DE CULTURA DE GIRONA, CIF G-17759887<br />Registre de Fundacions de la Generalitat de Catalunya, núm. 2020</div>
     ';
     $p->writeHTML($html);
     $p->lastPage();
     $p->Output('/var/www/hospici_cultural/web/documents/entrades/' . $idM . '.pdf', 'F');
 }
 public function getUsuariById()
 {
     $postdata = file_get_contents("php://input");
     $request = json_decode($postdata, true);
     $UM = new UsuarisModel();
     $OU = $UM->getUsuariById($request['idUsuari']);
     $RET = array('telefon_reserva' => '', 'email_reserva' => '', 'nom_reserva' => '');
     if (sizeof($OU) == 1) {
         $RET = array('telefon_reserva' => $OU[0]['Telefon'], 'email_reserva' => $OU[0]['Email'], 'nom_reserva' => $OU[0]['Nom'] . ' ' . $OU[0]['Cog1'] . ' ' . $OU[0]['Cog2']);
     }
     echo json_encode($RET);
 }