// $DRec["numero_socio"];
$numero_de_socio = $xRec->getCodigoDeSocio();
//$DRec["numero_socio"];
$afectaCaja = $arrQ[$DRec["afectacion_en_flujo_efvo"]];
//datos del socio
$cSoc = new cSocio($numero_de_socio);
$DSoc = $cSoc->getDatosInArray();
$numero_caja_local = $DSoc["cajalocal"];
$cCL = new cCajaLocal($numero_caja_local);
$caja_local = $cCL->getNombre();
$variable_nombre_del_socio = $idsocio == DEFAULT_SOCIO ? $DRec["cadena_distributiva"] : $cSoc->getNombreCompleto();
$tipo_de_pago = $xRec->getTipoDePago();
//$variable_nombre_del_cajero
//
$tipoderecibo = $DRec["tipo_docto"];
$docto = $xRec->getCodigoDeDocumento();
$origen = $xRec->getOrigen();
$variable_tipo_de_recibo = $xRec->getOTipoRecibo()->getNombre();
$totaloperacion = $xRec->getTotal();
//<------------- Verificar Si existe El Pago ----------------
$xCaja = new cCaja();
$TesMontoPagado = $xCaja->getReciboEnCorte($recibo);
$eventOnLoad = "";
$scripts = "";
//TODO: Resolver ajuste y permisos de ajuste
if (MODULO_CAJA_ACTIVADO == true and $xRec->isPagable() == true) {
    if ($TesMontoPagado < $totaloperacion) {
        $arrTPag = $xFRM->getAFormsDeTipoPago();
        $frm = $arrTPag[$tipo_de_pago];
        //si la caja de tesoreria esta abierta, proceder, si no cerrar
        if ($xCaja->getEstatus() == TESORERIA_CAJA_CERRADA) {
 function setNuevoDeposito($monto, $fecha = false, $descuento = 0, $socio = false, $recibo = false, $beneficiario = "", $documento = false)
 {
     $recibo = $recibo == false ? 0 : $recibo;
     $fecha = $fecha == false ? fechasys() : $fecha;
     if ($beneficiario == "" and (setNoMenorQueCero($recibo) > 0 and setNoMenorQueCero($recibo) != DEFAULT_RECIBO)) {
         $xRec = new cReciboDeOperacion(false, false, $recibo);
         $xRec->init();
         $persona = $xRec->getCodigoDeSocio();
         if ($xRec->getOPersona() != null) {
             //inicializar persona
             $beneficiario = $xRec->getOPersona()->getNombreCompleto(OUT_TXT);
         }
         if ($socio == false) {
             $socio = $persona;
         }
         if ($documento == false) {
             $documento = $xRec->getCodigoDeDocumento();
         }
     }
     $beneficiario = $beneficiario == "" ? "DEPOSITO BANCARIO DEL {$fecha}" : $beneficiario;
     $socio = $socio == false ? DEFAULT_SOCIO : $socio;
     $documento = $documento == false ? DEFAULT_CREDITO : $documento;
     $autorizo = getUsuarioActual();
     return $this->addOperacion(BANCOS_OPERACION_DEPOSITO, $documento, $recibo, $beneficiario, $monto, $socio, $fecha, "", $autorizo, $descuento);
 }
}
$xHP->setTitle($xHP->getTitle() . " # {$idrecibo}");
echo $xHP->getHeader(true);
echo $xHP->setBodyinit("window.print()");
echo $xHP->getEncabezado();
$PlanBody = $xHP->h1() . "<hr />";
$xRec = new cReciboDeOperacion(false, false, $idrecibo);
$xRec->init();
$xSoc = $xRec->getSocio();
$xSoc->init();
$xCred = $xRec->getCredito();
$xCred->init();
$xF = new cFecha();
$idsocio = $xSoc->getCodigo();
//"numero_socio"
$idsolicitud = $xRec->getCodigoDeDocumento();
// docto_afectado
$nombre = $xSoc->getNombreCompleto();
// ------------------------------------ DATOS DE LA SOLICITUD.
$tasa_ahorro = $xCred->getTasaDeAhorro() * 100;
$tasa_interes = $xCred->getTasaDeInteres() * 100;
$dias_totales = $xCred->getDiasAutorizados();
$numero_pagos = $xCred->getPagosAutorizados();
$nombre_otro = "";
$observaciones = $xRec->getObservaciones();
$extTool = "";
echo $xSoc->getFicha();
echo $xCred->getFicha(true, "", false);
$pagoactual = $xCred->getPeriodoActual();
if ($ShowAvales == true) {
    $avals = $xCred->getAvales_InText();
 $recibo = $xRisk->documento_relacionado()->v();
 $cont = array();
 $linea = "";
 $cont[1] = $xLayout->getClave();
 $cont[2] = $FechaExtraccion;
 $cont[3] = $operaciones == 0 ? 1 : $operaciones;
 $cont[4] = "01" . $xT->cSerial(3, $supervisor);
 //clave nacional de entidad supervisora 1002 = CNBV
 $cont[5] = $casfin;
 $cont[6] = $xLoc->DomicilioLocalidadClave();
 // cambiar por la UIF
 $cont[7] = $xLoc->DomicilioCodigoPostal();
 // CP de la sucursal
 $xRec = new cReciboDeOperacion(false, false, $recibo);
 $xRec->init();
 $docto_relacionado = $xRec->getCodigoDeDocumento() == DEFAULT_CREDITO ? $xRec->getCodigoDeRecibo() : $xRec->getCodigoDeDocumento();
 $cont[8] = $xEquivOps->get($xRec->getTipoDeRecibo());
 // Tipo de Operacion 01 deposito 02 retiro 03 compra divisas 04 venta divisas
 $cont[9] = $xEquivInst->get($xRec->getTipoDePago());
 //TODO: Instrumento monetario
 $cont[10] = $docto_relacionado;
 $cont[11] = $xRec->getTotal();
 $cont[12] = $xRec->getMoneda();
 $cont[13] = $xRec->getFechaDeRecibo();
 $cont[14] = $fechaDetec;
 //inusuales
 $cont[15] = $nac;
 $cont[16] = $tp;
 $nombresujeto = $xT->getCSV($xSoc->getNombre());
 $cont[17] = $tp == SYS_UNO ? "" : $nombresujeto;
 $cont[18] = $tp == SYS_UNO ? $nombresujeto : "";
 function setRecibo($recibo)
 {
     $xRec = new cReciboDeOperacion(false, false, $recibo);
     if ($xRec->init() == true) {
         $this->setPersona($xRec->getCodigoDeSocio());
         $OTipo = $xRec->getOTipoRecibo();
         $origen = $OTipo->getOrigen();
         $afectEfvo = $OTipo->getAfectacionEnEfvo();
         $xCant = new cCantidad($xRec->getTotal());
         $QL = new MQL();
         $xF = new cFecha();
         $describe = "";
         $xCta = null;
         $xCred = null;
         //Bases de Operaciones de Captacion en Inversiones
         $xB3100 = new cBases(3100);
         $DB3100 = $xB3100->getMembers_InArray();
         $xB3200 = new cBases(3200);
         $DB3200 = $xB3200->getMembers_InArray();
         switch ($origen) {
             case RECIBOS_ORIGEN_MIXTO:
                 $this->setCredito($xRec->getCodigoDeDocumento());
                 break;
             case RECIBOS_ORIGEN_COLOCACION:
                 $this->setCredito($xRec->getCodigoDeDocumento());
                 break;
             case RECIBOS_ORIGEN_CAPTACION:
                 $this->setCuentaDeCaptacion($xRec->getCodigoDeDocumento());
                 break;
         }
         $this->mArr["variable_tipo_de_recibo"] = $OTipo->getNombre();
         $this->mArr["variable_datos_del_pago"] = $xRec->getDatosDeCobro();
         $this->mArr["variable_numero_de_recibo"] = $recibo;
         $this->mArr["variable_docto_fecha_larga_actual"] = $xF->getFechaLarga($xRec->getFechaDeRecibo());
         $this->mArr["variable_observacion_del_recibo"] = $xRec->getObservaciones();
         $this->mArr["variable_monto_del_recibo_en_letras"] = $xCant->letras();
         $this->mArr["variable_monto_del_recibo"] = $xCant->moneda();
         ///$this->mArr["variable_nombre_del_cajero"] 			= $xRec->getOUsuario()->getNombreCompleto();
         $this->mEsRecibo = true;
         $this->setUsuario($xRec->getCodigoDeUsuario());
         //obtener operaciones
         $this->mRecibo = $recibo;
         $sqlmvto = "SELECT\n\t\t\t`operaciones_mvtos`.`socio_afectado`        AS `numero_de_socio`,\n\t\t\t`operaciones_mvtos`.`docto_afectado`        AS `numero_de_documento`,\n\t\t\t`operaciones_mvtos`.`recibo_afectado`       AS `numero_de_recibo`,\n\t\t\t`operaciones_mvtos`.`idoperaciones_mvtos`   AS `numero_del_movimiento`,\n\t\t\t`operaciones_tipos`.`descripcion_operacion` AS `concepto_del_movimiento`,\n\t\t\t`operaciones_mvtos`.`afectacion_real`       AS `monto_del_movimiento`,\n\t\t\t`operaciones_mvtos`.`valor_afectacion`      AS `naturaleza_del_movimiento`,\n\t\t\t`operaciones_tipos`.`nombre_corto` \t\t\tAS `concepto_nombre_corto`,\n\t\t\t`operaciones_mvtos`.`periodo_socio`        \tAS `parcialidad`,\n\t\t\t`operaciones_mvtos`.`detalles` \t\t\t\tAS `observacion_del_mvto`,\n\t\t\t`operaciones_mvtos`.`tipo_operacion`\t\tAS `tipo_de_movimiento`\n\t\t\tFROM\n\t\t\t`operaciones_mvtos` `operaciones_mvtos`\tINNER JOIN `operaciones_tipos` `operaciones_tipos` ON `operaciones_mvtos`.`tipo_operacion` = `operaciones_tipos`.`idoperaciones_tipos`\n\t\t\tWHERE (`operaciones_mvtos`.`recibo_afectado` = {$recibo} ) ORDER BY `operaciones_mvtos`.`afectacion_real` DESC";
         $rs = $QL->getDataRecord($sqlmvto);
         //destino_del_movimiento
         foreach ($rs as $row) {
             $rwx = $row;
             $tipo = $row["tipo_de_movimiento"];
             $docto = $row["numero_de_documento"];
             $rwx["monto_del_movimiento"] = getFMoney($row["monto_del_movimiento"] * $row["naturaleza_del_movimiento"] * $afectEfvo);
             $rwx["destino_del_movimiento"] = "&nbsp;" . $row["numero_de_documento"];
             if (in_array($tipo, $DB3100) == true or in_array($tipo, $DB3200)) {
                 if ($origen == RECIBOS_ORIGEN_MIXTO) {
                     //TODO: Cargar datos de la cuenta de captacion y mostrar sus caracteristicas
                 } else {
                     //if($xCta == null){ $xCta = new cCuentaDeCaptacion($docto); $xCta->init(); }
                     $rwx["destino_del_movimiento"] .= "|" . $this->mArr["variable_tipo_de_cuenta"];
                 }
             } else {
                 $rwx["destino_del_movimiento"] .= "|" . substr($this->mArr["variable_tipo_de_credito"], 0, 5);
                 $rwx["destino_del_movimiento"] .= "|" . substr($this->mArr["variable_estado_de_credito"], 0, 3);
                 $rwx["destino_del_movimiento"] .= "|" . $row["parcialidad"] . "/" . $this->mArr["variable_credito_numero_de_pagos"];
             }
             $this->mDataMvto[] = $rwx;
         }
     }
 }
function jsaAjustarTotal($recibo, $nuevoTotal, $nuevaletra)
{
    $xRec = new cReciboDeOperacion(false, true, $recibo);
    $xRec->init();
    $xRec->setGenerarBancos(false);
    $xRec->setGenerarPoliza(false);
    $xRec->setGenerarTesoreria(false);
    $xRec->setForceUpdateSaldos(true);
    $total = $xRec->getTotal();
    $QL = new MQL();
    $DMov = new cOperaciones_mvtos();
    $msg = "";
    if ($nuevoTotal < $total) {
        $NRec = new cReciboDeOperacion($xRec->getTipoDeRecibo(), false, $recibo);
        $idNRec = $NRec->setNuevoRecibo($xRec->getCodigoDeSocio(), $xRec->getCodigoDeDocumento(), $xRec->getFechaDeRecibo(), 0, $xRec->getTipoDeRecibo(), "AJUSTE DEL RECIBO {$recibo}");
        $NRec->setForceUpdateSaldos(true);
        $NRec->setGenerarBancos(false);
        $NRec->setGenerarPoliza(false);
        $NRec->setGenerarTesoreria(false);
        /*`idoperaciones_mvtos`,
        		`operaciones_mvtos`.`fecha_operacion`,
        		`operaciones_mvtos`.`fecha_afectacion`,
        		`operaciones_mvtos`.`recibo_afectado`,
        		`operaciones_mvtos`.`socio_afectado`,
        		`operaciones_mvtos`.`docto_afectado`,
        		`operaciones_mvtos`.`tipo_operacion`,
        		`operaciones_mvtos`.`afectacion_real`  */
        $sql = "SELECT\n\t\t\t`operaciones_mvtos`.*\n\n\t\tFROM\n\t\t\t`operaciones_mvtos` `operaciones_mvtos` \n\t\t\t\tINNER JOIN `operaciones_tipos` `operaciones_tipos` \n\t\t\t\tON `operaciones_mvtos`.`tipo_operacion` = `operaciones_tipos`.\n\t\t\t\t`idoperaciones_tipos` \n\t\tWHERE\n\t\t\t(`operaciones_mvtos`.`recibo_afectado` ={$recibo}) \n\t\tORDER BY\n\t\t\t`operaciones_mvtos`.`tipo_operacion` DESC ";
        $rs = $QL->getDataRecord($sql);
        $arrops = array();
        foreach ($rs as $rw) {
            $DMov->setData($rw);
            $NMonto = $DMov->afectacion_real()->v();
            $IDOpe = $DMov->idoperaciones_mvtos()->v();
            if ($nuevoTotal > 0) {
                $nuevoTotal -= $NMonto;
                $msg .= $IDOpe . " \t {$nuevoTotal} DE {$NMonto}\r\n";
                if ($nuevoTotal < 0) {
                    $msg .= "CUADRAR {$NMonto} DE {$nuevoTotal}  \r\n";
                    $nuevoTotal = $nuevoTotal * -1;
                    $dif = $NMonto - $nuevoTotal;
                    $sql = "UPDATE operaciones_mvtos \n\t\t\t\t\t\t\tSET afectacion_real={$dif}, afectacion_cobranza={$dif}, afectacion_contable={$dif},\n\t\t\t\t\t\t\tafectacion_estadistica={$dif} WHERE idoperaciones_mvtos={$IDOpe} ";
                    $x = my_query($sql);
                    $msg .= $x[SYS_INFO];
                    //agregar el movimiento al nuevo recibo con cargos
                    $NRec->setNuevoMvto($DMov->fecha_operacion()->v(), $nuevoTotal, $DMov->tipo_operacion()->v(), $DMov->periodo_socio()->v(), "SEPARACION DEL MVTO {$IDOpe} {$nuevoTotal}", $DMov->valor_afectacion()->v(), false, $DMov->socio_afectado()->v(), $DMov->docto_afectado()->v(), $DMov->fecha_afectacion()->v(), $DMov->fecha_vcto()->v(), $DMov->saldo_anterior()->v(), $DMov->saldo_actual()->v());
                    //listo
                    $nuevoTotal = 0;
                }
            } else {
                $arrops[$DMov->idoperaciones_mvtos()->v()] = $DMov->afectacion_real()->v();
            }
        }
        //$total	= $total  * -1;
        foreach ($arrops as $operacion => $monto) {
            $x = my_query("UPDATE operaciones_mvtos SET recibo_afectado={$idNRec} WHERE idoperaciones_mvtos={$operacion}");
            //100 - 50
            //$dif	= $monto - $total;
            $msg .= $x[SYS_INFO];
        }
        $NRec->setFinalizarRecibo(true);
        $msg .= $NRec->getMessages(OUT_TXT);
        $xRec->setFinalizarRecibo(true);
    } else {
        $msg .= "WARN\tNO SE MODIFICA NADA({$nuevoTotal}|{$total})\r\n";
    }
    $msg .= $xRec->getMessages(OUT_TXT);
    return $msg;
}