function jsaSetDesvincularPersona($credito, $fecha, $observaciones)
{
    $msg = "";
    $xLng = new cLang();
    $xCred = new cCredito($credito);
    $xCred->init();
    $xdat = new cFecha(0);
    $fecha = $xdat->getFechaISO($fecha);
    $xCred->setResetPersonaAsociada($fecha, $observaciones);
    $oP = $xCred->getOPersona();
    $xEmp = new cEmpresas($xCred->getClaveDeEmpresa());
    $xEmp->init();
    $xRN = new cReglaDeNegocio();
    $xRN->setVariables(array("nombre_de_persona" => $oP->getNombreCompleto(), "mensaje" => $observaciones, "saldo_del_credito" => $xCred->getSaldoActual(), "nombre_de_la_empresa" => $xEmp->getNombreCorto()));
    $xRN->setExecuteActions($xRN->reglas()->RN_NOMINA_AL_DESVINCULAR);
    return $xLng->get(MSG_READY_SAVE);
}
function jsaListadoDeEventos($generadoEn, $programado)
{
    $xPRG = new cAlertasDelSistema();
    $cnt = "";
    $xSel = new cHSelect();
    $xRuls = new cReglaDeNegocio();
    if ($generadoEn == SYS_ALERTA_POR_EVENTO) {
        $xProg = new cAlertasDelSistema();
        $xSel->addOptions($xRuls->getEventos());
        $cnt = $xSel->get("idprogramacion", "TR.Evento Marcado");
    } else {
        $xTxtA = new cHTextArea();
        $xFld = new cHFieldset("TR.Programacion");
        if ($programado == "") {
            //$xFld->addHElem(  );
        } else {
            //$xFld->addHElem(  );
        }
        $xFld->addHElem($xTxtA->get("idprogramacion", "", "TR.programacion"));
        $cnt .= $xFld->get();
    }
    return $cnt;
}
 function setCastigado($razones = "", $fecha = false)
 {
     $fecha = $fecha == false ? fechasys() : $fecha;
     $xRuls = new cReglaDeNegocio();
     $xRuls->setExecuteActions($xRuls->reglas()->RN_CASTIGAR_CREDITO);
     /*`creditos_solicitud`.`estatus_actual`,
     		`creditos_solicitud`.`nivel_riesgo`,
     		`creditos_solicitud`.`fecha_castigo`,
     		`creditos_solicitud`.``*/
     $this->setUpdate(array("estatus_actual" => CREDITO_ESTADO_CASTIGADO, "fecha_revision" => $fecha, "fecha_castigo" => $fecha, "nivel_riesgo" => SYS_RIESGO_ALTO, "notas_auditoria" => $razones));
     $this->mMessages .= "WARN\tCredito Castigado\r\n";
 }
 /**
  * Revierte las Afectaciones del Recibo
  */
 function setRevertir($ForzarEliminar = false)
 {
     $sucess = true;
     $arrValuesRev = array("-1" => "1", "1" => "-1", "0" => "0");
     $xQL = new MQL();
     $xLog = new cCoreLog();
     $sqlM = "SELECT\n\t\t\t\t\t\t`operaciones_mvtos`.*,\n\t\t\t\t\t\t`operaciones_tipos`.*,\n\t\t\t\t\t\t`operaciones_mvtos`.`recibo_afectado`\n\t\t\t\t\tFROM\n\t\t\t\t\t\t`operaciones_mvtos` `operaciones_mvtos`\n\t\t\t\t\t\t\tINNER JOIN `operaciones_tipos` `operaciones_tipos`\n\t\t\t\t\t\t\tON `operaciones_mvtos`.`tipo_operacion` = `operaciones_tipos`.\n\t\t\t\t\t\t\t`idoperaciones_tipos`\n\t\t\t\t\tWHERE\n\t\t\t\t\t\t(`operaciones_mvtos`.`recibo_afectado` =" . $this->mCodigoDeRecibo . ")";
     $xLog->add("======================== REVERSION DE RECIBO[" . $this->mCodigoDeRecibo . "] \r\n");
     $original = "";
     $rs = $xQL->getDataRecord($sqlM);
     //getRecordset($sqlM);
     if ($this->init() == true) {
         $original = "====[" . base64_encode(json_encode($this->getDatosInArray())) . "]====";
         if ($rs) {
             foreach ($rs as $rw) {
                 //$rw = mysql_fetch_array($rs)){
                 $codigo = $rw["idoperaciones_mvtos"];
                 $docto = $rw["docto_afectado"];
                 $socio = $rw["socio_afectado"];
                 $preservar_mvto = $rw["preservar_movimiento"];
                 $CodeRevertir = $rw["formula_de_cancelacion"];
                 $monto = $rw["afectacion_real"];
                 $afectacion = $rw["valor_afectacion"];
                 $recibo = $rw["recibo_afectado"];
                 $colocacion = array();
                 $captacion = array();
                 //selecciona un comportamiento segun el Origen del Recibo
                 switch ($this->mAplicadoA) {
                     case "colocacion":
                         //cargar datos del credito
                         $Credito = new cCredito($docto, $socio);
                         $Credito->init();
                         $colocacion = $Credito->getDatosDeCredito();
                         break;
                     case "captacion":
                         //cargar datos de la cuenta
                         $Cuenta = new cCuentaALaVista($docto);
                         $Cuenta->init();
                         $captacion = $Cuenta->getDatosInArray();
                         break;
                     case "mixto":
                         //cargar datos de la cuenta y del credito
                         $Credito = new cCredito($docto, $socio);
                         $Credito->init();
                         $colocacion = $Credito->getDatosDeCredito();
                         $Cuenta = new cCuentaALaVista($docto);
                         $Cuenta->init();
                         $captacion = $Cuenta->getDatosInArray();
                         $this->mMessages .= "WARN\tEL Recibo es Mixto, se carga tanto Captacion como Colocacion\r\n";
                         break;
                     default:
                         $this->mMessages .= "WARN\tEL Recibo es " . $this->mAplicadoA . ", NO SE CARGA CODIGO\r\n";
                         break;
                 }
                 eval($CodeRevertir);
                 if ($preservar_mvto == '1' and $ForzarEliminar == false) {
                     $SQL_DM = "UPDATE operaciones_mvtos\n\t\t\t\t\t\t\t\t\t\t\tSET afectacion_estadistica=afectacion_real,\n\t\t\t\t\t\t\t\t\t\t\tafectacion_real = 0, afectacion_contable=0,\n\t\t\t\t\t\t\t\t\t\t\tafectacion_cobranza=0, valor_afectacion=0,\n\t\t\t\t\t\t\t\t\t\t\testatus_mvto = 99,\n\t\t\t\t\t\t\t\t\t\t\tdocto_neutralizador = " . $this->mCodigoDeRecibo . ",\n\t\t\t\t\t\t\t\t\t\t\trecibo_afectado\t= " . DEFAULT_RECIBO . "\n\t\t\t\t\t\t\t\t\t\t\tWHERE idoperaciones_mvtos = {$codigo}\n\t\t\t\t\t\t\t\t\t\t\t";
                     $xLog->add("Actualizando el Movimiento {$codigo}\r\n", $xLog->DEVELOPER);
                 } else {
                     $SQL_DM = "DELETE FROM operaciones_mvtos\n\t\t\t\t\t\t\t\t\t\t\tWHERE idoperaciones_mvtos = {$codigo}";
                     $xLog->add("Eliminado el Movimiento {$codigo}\r\n", $xLog->DEVELOPER);
                 }
                 my_query($SQL_DM);
                 //Actualizar Saldos
                 if (isset($Cuenta)) {
                     $Cuenta->setUpdateSaldoByMvtos();
                 }
                 if (isset($Credito)) {
                     $xUtil = new cUtileriasParaCreditos();
                     $xUtil->setCuadrarCreditosByMvtos($docto);
                 }
             }
         }
         //Elimnar Prepoliza
         $xLog->add("WARN\tEliminando Prepolizas\r\n", $xLog->DEVELOPER);
         $sqlDP = "DELETE FROM contable_polizas_proforma\tWHERE numero_de_recibo = " . $this->mCodigoDeRecibo . "";
         my_query($sqlDP);
         //Eliminar Recibo
         $sqlDR = "DELETE FROM operaciones_recibos WHERE idoperaciones_recibos =" . $this->mCodigoDeRecibo . "";
         my_query($sqlDR);
         //Agregar Tesoreria y Bancos
         $xLog->add("WARN\tEliminando Operaciones de Caja\r\n", $xLog->DEVELOPER);
         $DelTesoreria = "DELETE FROM `tesoreria_cajas_movimientos` WHERE `recibo`= " . $this->mCodigoDeRecibo . "";
         my_query($DelTesoreria);
         $xLog->add("WARN\tEliminando Operaciones de Bancos\r\n", $xLog->DEVELOPER);
         $DelBancos = "DELETE FROM `bancos_operaciones` WHERE `recibo_relacionado` = " . $this->mCodigoDeRecibo . "";
         my_query($DelBancos);
     }
     $xCE = new cErrorCodes();
     //setLog($this->mMessages .  json_encode($this->getDatosInArray()), $xCE->RECIBO_ELIMINADO);
     $xLog->guardar($xLog->OCat()->RECIBO_ELIMINADO);
     $this->mMessages .= $xLog->getMessages();
     if ($this->isPagable() == true) {
         //agregar Aviso.
         $xRuls = new cReglaDeNegocio();
         $xRuls->setVariables(array("mensaje" => $this->getMessages(), "original" => $original));
         $xRuls->setExecuteActions($xRuls->reglas()->RN_DATOS_AL_ELIMINAR_RECIBO);
     }
     return $sucess;
 }
 function setCloseBox($oficial_de_cierre = false, $fondos_arqueados = 0)
 {
     $result = true;
     if ($oficial_de_cierre == false) {
         $this->mMessages .= "ERROR\tEl Oficial de Cierre no existe\r\n";
         $result = false;
     } else {
         if ($this->mCajaIniciada == false) {
             $this->mMessages .= "ERROR\tNo se cierra una NO inicializada\r\n";
             $result = false;
         } else {
             $this->init();
             if ($this->getEstatus() == TESORERIA_CAJA_CERRADA) {
                 $result = false;
                 $this->mMessages .= "ERROR\tLa Caja ya esta cerrada\r\n";
             } else {
                 //actualizar estado
                 $sql = "UPDATE tesoreria_cajas SET estatus='" . TESORERIA_CAJA_CERRADA . "', usuario_que_autoriza={$oficial_de_cierre}, firma_digital='', fondos_arqueados={$fondos_arqueados}  WHERE idtesoreria_cajas='" . $this->mKey . "' ";
                 $rs = my_query($sql);
                 $result = $rs[SYS_ESTADO];
                 //Ejecutar regla de negocio
                 $xRegla = new cReglaDeNegocio(RN_CAJA_AL_CERRAR);
                 $xRegla->setVariables(array("clave_de_usuario" => $this->mCajero, "fecha" => $this->mFecha));
                 $xRegla->setExecuteActions();
                 unset($_SESSION["codigo_de_caja"]);
             }
         }
     }
     return $result;
 }
 function setEliminarPeriodo($periodo, $periocidad)
 {
     $periodo = setNoMenorQueCero($periodo);
     $periocidad = setNoMenorQueCero($periocidad);
     $this->mMessages .= "WARN\tEliminar Periodo {$periodo} con periocidad {$periocidad}\r\n";
     $sqlID = " SELECT `idempresas_operaciones` AS 'id' FROM `empresas_operaciones` \n\t\t\t\tWHERE (`empresas_operaciones`.`clave_de_empresa` =" . $this->mClave . ") AND\t(`empresas_operaciones`.`periodo_marcado` ={$periodo}) AND (`empresas_operaciones`.`periocidad` ={$periocidad})\n\t\t\t\tAND `tipo_de_operacion` = 1 LIMIT 0,1\t";
     $id = mifila($sqlID, "id");
     $sql = "DELETE FROM\t`empresas_operaciones` WHERE  `idempresas_operaciones` = {$id} ";
     $sql2 = "DELETE FROM `empresas_cobranza` WHERE clave_de_nomina={$id} ";
     $xRegla = new cReglaDeNegocio();
     $xRegla->setVariables(array("clave_de_periodo" => $id, "periocidad" => $periocidad, "periodo" => $periodo));
     $xRegla->setExecuteActions($xRegla->reglas()->ELIMINAR_PERIODO_NOMINA);
     my_query($sql);
     my_query($sql2);
 }