예제 #1
0
파일: Servicios.php 프로젝트: cicb/tpc
 public function reimprimir()
 {
     try {
         $this->validarEntrada($this->referencia, 'reimpresion');
         if ($this->pv != 0) {
             $this->validarPv($this->pv);
         }
         $refreimps = $this->buscarReimpresion($this->referencia);
         if (empty($refreimps)) {
             # Si no se encontraron registros
             return false;
         } else {
             $numerosBoletos = array();
             $transaction = Yii::app()->db->beginTransaction();
             foreach ($refreimps as $refreimp) {
                 # Por cada refreimp
                 ##-------------------------------------------[ Actualiza Logreimp ]
                 $logreimp = new Logreimp();
                 $logreimp->LogReimpTip = $refreimp->ventalevel1->VentasBolTip;
                 $logreimp->LogCosAnt = $refreimp->ventalevel1->VentasCosBol;
                 $logreimp->LogReimpTipAnt = $refreimp->ventalevel1->VentasBolTip;
                 $logreimp->LogReimpUsuId = 2;
                 if ($this->pv == 0) {
                     # Cuando sea 0 toma el punto de venta que vendio y no el que esta reimprimiendo
                     $logreimp->LogReimpPunVenId = $refreimp->venta->PuntosventaId;
                 } else {
                     $logreimp->LogReimpPunVenId = $this->pv;
                 }
                 $logreimp->EventoId = $refreimp->ventalevel1->EventoId;
                 $logreimp->FuncionesId = $refreimp->ventalevel1->FuncionesId;
                 $logreimp->ZonasId = $refreimp->ventalevel1->ZonasId;
                 $logreimp->SubzonaId = $refreimp->ventalevel1->SubzonaId;
                 $logreimp->FilasId = $refreimp->ventalevel1->FilasId;
                 $logreimp->LugaresId = $refreimp->ventalevel1->LugaresId;
                 $logreimp->save();
                 #---------------------------------------------------[ Actualiza la contraseña]
                 $contra = $refreimp->ventalevel1->VentasCon;
                 $contrav = explode('R', $contra);
                 if (sizeof($contrav) > 1) {
                     # Significa que la contraseña ya tenia reimpresiones previas
                     $contrav[1] = (int) $contrav[1] + 1;
                     $contra = implode('R', $contrav);
                 } else {
                     $contra .= "R1";
                 }
                 $refreimp->ventalevel1->VentasCon = $contra;
                 #------------------------------------------------[ Actualizar numero de boleto]
                 $reimp = new Reimpresiones();
                 $reimp->attributes = $refreimp->ventalevel1->getAttributes();
                 $reimp->ReimpresionesMod = "FARMATODO";
                 $reimp->UsuarioId = 2;
                 $reimp->save(false);
                 $refreimp->ventalevel1->LugaresNumBol = $this->generarCodigoBarras($refreimp->ventalevel1->LugaresNumBol);
                 $refreimp->ventalevel1->save(false);
                 $numerosBoletos[] = $refreimp->ventalevel1->LugaresNumBol;
                 #----------------------------[ Actualiza el estatus de reimpresion]
                 $refreimp->RefReimpSta = 0;
                 $refreimp->save(false);
             }
             ##-----------------------------------------------[ Escribe cambios en BD*]
             $transaction->commit();
             return $numerosBoletos;
         }
     } catch (Exception $e) {
         $this->registrarError($e);
         throw $e;
     }
 }