Beispiel #1
0
 /**
  * actualizar el codigo segun los parametros contenidos en $array y $sql
  *  Si encuentra -> 
  *    1.1 Si en ultimos_movimientos, estado_legado='LIQUIDADO' => FIN (msg: LIQ EN LEGADO)
  *    1.2 Si estado en webPSI = 'CANCELADO' => FIN (msg: ORDEN CANCELADA)
  *    1.3 Si tiene fecha_agenda fecha_agenda >= hoy
  *        1.3.1   Si forzar cambio => UPDATE ultimos_movimientos, fecha_agenda = '', estado='pendiente'
  *                     => UPDATE gestiones_detalles
  *                     => INSERT GESTIONES_MOVIMIENTOS
  *            (msg: Se actualiza ... )
  *        1.3.2   Si no fuerza cambio => FIN (msg: NO se actualiza por...)
  *    1.4 actualizar sin cambiar ultimos_movimientos
  *  No encuentra -> Buscar en temporal
  *    2.1 Buscar en averias_criticos_final => Actualiza => FIN
  *    2.2 Buscar en tmp_provision  => Actualiza => FIN
  *  Si no encuentra (gestion , temporal)
  * @param type string $codigo
  * @param type array $array
  * @param type $sql
  * @return type array
  *           $row = array(
  *          'codigo'=>$averia,
  *          'quiebre'=>$quiebre,
  *          'contrata'=>$empresa,
  *          'estado'=>$respuesta
  *          );
  */
 public static function actualizarQuiebre($codigo, $quiebreId, $quiebre, $empresaId, $empresa, $forzar)
 {
     $gestion = GestionDetalle::getGestiones($codigo);
     $cantGestion = count($gestion);
     $temporal = GestionDetalle::getGestionesTemporales($codigo);
     $cantTemporal = count($temporal);
     $hoy = date("Y-m-d");
     $mensaje = '';
     if ($cantGestion > 0) {
         //1
         $gestionId = $gestion[0]->id;
         $estadoLegado = $gestion[0]->estadoLegado;
         $estadoId = $gestion[0]->estadoId;
         $fechaAgenda = $gestion[0]->fechaAgenda;
         $oldQuiebreId = $gestion[0]->quiebreId;
         $oldEmpresaId = $gestion[0]->empresaId;
         $oldQuiebre = $gestion[0]->quiebre;
         $oldEmpresa = $gestion[0]->empresa;
         //validar empresa y/o quiebre igual
         if ($quiebre != '' && $empresa != '') {
             //selecciona quiebre y contrata
             if ($oldQuiebreId != $quiebreId && $oldEmpresaId != $empresaId) {
                 $array['quiebre_id'] = $quiebreId;
                 $array['empresa_id'] = $empresaId;
                 $mensaje = "Se actualizo Quiebre y Contrata en PSI";
             } elseif ($oldQuiebreId != $quiebreId) {
                 $array['quiebre_id'] = $quiebreId;
                 $mensaje = "Se actualizo solo quiebre, No se actualizo Contrata de " . $oldEmpresa . " a " . $empresa;
             } elseif ($oldEmpresaId != $empresaId) {
                 $array['empresa_id'] = $empresaId;
                 $mensaje = "Se actualizo solo Contrata, No se actualizo Quiebre de " . $oldQuiebre . " a " . $quiebre;
             } else {
                 //igual ambos
                 return "No se actualizo Quiebre de " . $oldQuiebre . " a " . $quiebre . ', ni Contrata ' . $oldEmpresa . " a " . $empresa;
             }
         } elseif ($quiebre != '') {
             //selecciona solo quiebre
             if ($oldQuiebreId != $quiebreId) {
                 //el quiebre anterior y el actual son diferentes
                 $array['quiebre_id'] = $quiebreId;
                 $mensaje = "Se actualizo Quiebre en PSI";
             } else {
                 return "No se actualizo Quiebre de " . $oldQuiebre . " a " . $quiebre;
             }
         } elseif ($empresa != '') {
             //selecciona solo empresa
             if ($oldEmpresaId != $empresaId) {
                 //la contrata anterior es diferente a la actual
                 $array['empresa_id'] = $empresaId;
                 $mensaje = "Se actualizo Contrata en PSI";
             } else {
                 return "No se actualizo Contrata de " . $oldEmpresa . " a " . $empresa;
             }
         } else {
             return "No se actualizo, no ha seleccionado quiebre ni contrata";
         }
         if ($estadoLegado == 'LIQUIDADO') {
             //1.1
             return "No se actualizo, se encuentra LIQUIDADO en LEGADO";
         } elseif ($estadoId == 4) {
             //1.2
             return "No se actualizo, orden CANCELADA";
         } elseif ($fechaAgenda >= $hoy) {
             //1.3
             if ($forzar == '1') {
                 //1.3.1
                 $respuesta = GestionDetalle::updateGestiones($codigo, $gestionId, $array, 'agendado', $oldQuiebre, $oldEmpresa);
                 //si hubo un error
                 if ($respuesta == 0) {
                     return "Ocurrio un error al intentar actualizar";
                 } else {
                     return $mensaje;
                 }
             } else {
                 //1.3.2
                 return "No se actualizo, tiene agenda pendiente";
             }
         } else {
             //1.4
             $respuesta = GestionDetalle::updateGestiones($codigo, $gestionId, $array, '', $oldQuiebre, $oldEmpresa);
             //si hubo un error
             if ($respuesta == 0) {
                 return "Ocurrio un error al intentar actualizar";
             } else {
                 return $mensaje;
             }
         }
     } else {
         if ($cantTemporal > 0) {
             //2
             $actividad = $temporal[0]->actividad;
             $oldQuiebre = $temporal[0]->quiebre;
             $oldEmpresa = $temporal[0]->empresa;
             //validar cambio de quiebre y/o empresa
             if ($quiebre != '' && $empresa != '') {
                 if ($oldQuiebre != $quiebre && $oldEmpresa != $empresa) {
                     $sql = " eecc_final='{$empresa}', quiebre='{$quiebre}' ";
                     $mensaje = "Se actualizo  Quiebre y Contrata en Temporales";
                 } elseif ($oldQuiebre != $quiebre) {
                     $sql = "  quiebre='{$quiebre}' ";
                     $mensaje = "Se actualizo solo quiebre, No se actualizo Contrata de " . $oldEmpresa . " a " . $empresa;
                 } elseif ($oldEmpresa != $empresa) {
                     $sql = " eecc_final='{$empresa}' ";
                     $mensaje = "Se actualizo solo Contrata, No se actualizo Quiebre de " . $oldQuiebre . " a " . $quiebre;
                 } else {
                     //igual ambos
                     return "No se actualizo Quiebre de " . $oldQuiebre . " a " . $quiebre . ', ni Contrata ' . $oldEmpresa . " a " . $empresa;
                 }
             } elseif ($quiebre != '') {
                 if ($oldQuiebre != $quiebre) {
                     //el quiebre anterior y el actual son diferentes
                     $sql = " quiebre='{$quiebre}' ";
                     $mensaje = "Se actualizo Quiebre en Temporales";
                 } else {
                     return "No se actualizo Quiebre de " . $oldQuiebre . " a " . $quiebre;
                 }
             } elseif ($empresa != '') {
                 if ($oldEmpresa != $empresa) {
                     //la contrata anterior es diferente a la actual
                     $sql = " eecc_final='{$empresa}' ";
                     $mensaje = "Se actualizo Contrata en Temporales";
                 } else {
                     return "No se actualizo Contrata de " . $oldEmpresa . " a " . $empresa;
                 }
             } else {
                 return "No se actualizo, no ha seleccionado quiebre ni contrata";
             }
             //2.1
             //2.2
             try {
                 GestionDetalle::updateGestionesTemporales($actividad, $sql, $codigo);
             } catch (Exception $exc) {
                 $this->_errorController->saveError($exc);
                 if ($exc->errorInfo['0'] == '42S02') {
                     //id, tabla not found
                     return 'No se actualizo, vuelva a intentar';
                 }
                 return "No se actualizo, hubo un error";
             }
             return $mensaje;
         } else {
             return "No se actualizo, orden no existe";
         }
     }
     return '';
 }