/** * 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 ''; }