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; } }