Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Error detectado consulta créditos históricos #1

Closed
DanielRivera03 opened this issue Aug 25, 2022 · 1 comment
Closed

Error detectado consulta créditos históricos #1

DanielRivera03 opened this issue Aug 25, 2022 · 1 comment

Comments

@DanielRivera03
Copy link
Owner

En los próximos días se dará solución a este error. La causa principal es debido a una consulta no estandarizada hacia la vista SQL.
Motivo por el cuál algunos comprobantes lanzan error 404 dentro de la plataforma.

Solventado dicho error, se actualizarán los componentes en este repositorio y en la demo de pruebas.

error

@DanielRivera03
Copy link
Owner Author

DanielRivera03 commented Aug 31, 2022

Error al mostrar comprobantes históricos, ha sido resuelto con éxito.

  • Para la resolución de este problema lógico, a nivel de base de datos y sistema, se han seguido los siguientes pasos:

Añadir variable global a modelo de datos gestiones cashmanha -- además de incluir sus modificadores de acceso get y set

private $IdCuotasClientesHistorico; //-> PARA MOSTRAR COMPROBANTES HISTORICOS DE CLIENTES [CREDITOS CANCELADOS Y FINALIZADOS]
public function setIdCuotasClientesHistorico($valor_retorno)
    {
        $this->IdCuotasClientesHistorico = $valor_retorno;
    }
    public function getIdCuotasClientesHistorico()
    {
        return $this->IdCuotasClientesHistorico;
    }
  • [ Lo anterior, dentro del archivo mGestionesCashmanha.php]

Llamado modificador de acceso get dentro del archivo modelo-facturacion-pagos-cuotas-creditos-clientes-historico.php

$Gestiones->getIdCuotasClientesHistorico()
  • [ Únicamente se realizó ese cambio]

Modificar modelo de datos (ConsultarDetallesFacturacion_OrdenPagosCreditosClientes_Historicos) línea 2699 del archivo modelo/mGestionesCashmanha.php

// CONSULTA ESPECIFICA -> DATOS CLIENTES FACTURACION -> ORDEN DE PAGOS CLIENTES
    public function ConsultarDetallesFacturacion_OrdenPagosCreditosClientes_Historicos($conectarsistema, $IdCreditoHistoricoClientes, $IdUsuarios, $IdCreditos, $IdCuotas)
    {
        $resultado = mysqli_query($conectarsistema, "CALL MostrarDetallesDatosClientes_FacturacionCreditosHistoricos('" . $IdCreditoHistoricoClientes . "','" . $IdUsuarios . "','" . $IdCreditos . "','" . $IdCuotas . "');");
        $Gestiones = mysqli_fetch_array($resultado); // RECORRIDO EN BUSCA DE REGISTRO CONSULTADO
        // EXTRAER DETALLES DE USUARIOS SOLAMENTE SI EXISTEN REGISTROS QUE SE SEAN ASOCIADOS
        // AL USUARIO QUE ESTA SIENDO CONSULTADO EN CUESTION Y NO SEA CONSULTA VACIA [NULA]
        if (mysqli_num_rows($resultado) > 0) {
            // OBTENER VALORES EXTRAIDOS EN LA CONSULTA
            $this->setIdCuotasClientesHistorico($Gestiones['idhistoricotransaccion']);
            $this->setIdUsuarios($Gestiones['idusuarios']);
            $this->setIdCreditos($Gestiones['idcreditos']);
            $this->setIdCuotasClientes($Gestiones['idcuotas']);
            $this->setIdProductos($Gestiones['idproducto']);
            $this->setNombresUsuarios($Gestiones['nombres']);
            $this->setApellidosUsuarios($Gestiones['apellidos']);
            $this->setDuiUsuarios($Gestiones['dui']);
            $this->setNitUsuarios($Gestiones['nit']);
            $this->setCuotaMensualCreditos($Gestiones['cuotamensual']);
            $this->setMontoCuotaCancelar($Gestiones['montocancelar']);
            $this->setNombreProductos($Gestiones['nombreproducto']);
            $this->setCodigoProductos($Gestiones['codigo']);
            //$this->setMontoCapitalClientes($Gestiones['montocapital']);
            $this->setFechaVencimientoCuotasClientes($Gestiones['fecha']);
            $this->setReferenciaTransaccionCreditosClientes($Gestiones['referencia']);
            $this->setFechaTransaccionCreditosClientes($Gestiones['fecha']);
            $this->setDiasIncumplimientoCuotasClientes($Gestiones['dias_incumplimiento']);
            $this->setEmpleadoGestionTransaccionCreditosClientes($Gestiones['empleado_gestion']);
        } // CIERRE if(mysqli_num_rows($resultado)>0){
    }

Modificar variable que controla id único de transacción - créditos históricos -- archivo consulta-especifica-solicitud-credito-cancelada-clientes-historico-creditos.php

echo '<a href="';
echo $UrlGlobal;
echo 'controlador/cGestionesCashman.php?cashmanhagestion=facturacion-pago-ordenes-pago-cuotas-clientes-historicos&idhistoricotransaccion=';echo $filas['idhistoricotransaccion'];echo '&idusuarios=';echo $filas['idusuarios'];echo '&idcreditos=';echo $filas['idcreditos'];echo '&idcuotas=';echo $filas['idcuotas'];echo '";><span class="badge badge-dark"><i class="fa fa-print "></i> Imprimir</span></a>';echo'
  • [ Únicamente se realizó ese cambio]

Actualización de comprobantes históricos (se ha eliminado campo de fecha de vencimiento) -- vista/modelo-facturacion-pago-cuotas-creditos-clientes-historico.php

<?php
// NO PERMITIR INGRESO SI PARAMETRO IDUSUARIO NO HA SIDO ESPECIFICADO
if (empty($_GET['idusuarios'])) {
    header('location:../controlador/cGestionesCashman.php?cashmanhagestion=error-404');
}
// NO PERMITIR INGRESO SI PARAMETRO IDHISTORICOTRANSACCION NO HA SIDO ESPECIFICADO
if (empty($_GET['idhistoricotransaccion'])) {
    header('location:../controlador/cGestionesCashman.php?cashmanhagestion=error-404');
}
// NO PERMITIR INGRESO SI PARAMETRO IDCREDITOS NO HA SIDO ESPECIFICADO
if (empty($_GET['idcreditos'])) {
    header('location:../controlador/cGestionesCashman.php?cashmanhagestion=error-404');
}
// NO PERMITIR INGRESO SI PARAMETRO IDCREDITOS NO HA SIDO ESPECIFICADO
if (empty($_GET['idcuotas'])) {
    header('location:../controlador/cGestionesCashman.php?cashmanhagestion=error-404');
}
// SI EXISTE AL MENOS UN CAMPO VACIO -> QUIERE DECIR QUE DATOS DE CLIENTE CONSULTADO NO COINCIDEN, POR LO TANTO BLOQUEAR VISTA
if(empty($Gestiones->getIdCuotasClientesHistorico())){
    header('location:../controlador/cGestionesCashman.php?cashmanhagestion=error-404');
}
require('../FPDF/fpdf.php');
require '../vendor/autoload.php';
// CONVERSION DE NUMEROS A LETRAS
use Luecano\NumeroALetras\NumeroALetras; // LLAMADO DE CLASE
$Conversion = new NumeroALetras(); // CREANDO OBJETO INSTANCIA DE CLASE
// DATOS DE LOCALIZACION -> IDIOMA ESPAÑOL -> ZONA HORARIA EL SALVADOR (UTC-6)
setlocale(LC_TIME, "spanish");
date_default_timezone_set('America/El_Salvador');
// FECHA DE CANCALACION [PROCESAMIENTO TRANSACCIONES CLIENTES]
$FechaCancelacion = date_create($Gestiones->getFechaTransaccionCreditosClientes());
// FECHA DE VENCIMIENTO [CUOTAS CREDITOS CLIENTES]
$FechaVencimiento = date_create($Gestiones->getFechaVencimientoCuotasClientes());
// CALCULO DE INCUMPLIMIENTO
if ($Gestiones->getDiasIncumplimientoCuotasClientes() > 0) {
    $MoraCuotasClientes = $Gestiones->getDiasIncumplimientoCuotasClientes() * 5.99;
} else {
    $MoraCuotasClientes = 0;
}
// INICIO REPORTE
class PDF extends FPDF
{
    // CABECERA DE DOCUMENTO
    function Header()
    {
        $this->Image('../vista/images/modelo-facturacion-creditos/cabecerafacturacion.png', 0, 0, 216);
    }

    // PIE DE PAGINA
    function Footer()
    {
        $this->SetY(-15);
        // Arial italic 8
        $this->SetFont('Arial', 'I', 8);
        // Número de página
        //$this->Cell(0,10,'Page '.$this->PageNo().'/{nb}',0,0,'C');
    }
}
// CREACION DE INSTANCIA DE CLASE
$pdf = new PDF('P', 'mm', 'LETTER');
$pdf->SetTitle(utf8_decode("Facturación Clientes - CashMan H.A"));
$pdf->AliasNbPages();
$pdf->AddPage();
// CONTENIDO DE REPORTE [DOCUMENTO]
$pdf->SetFont('Arial', '', 10);
$pdf->setTextColor(255, 255, 255);
$pdf->MultiCell(191, 8, utf8_decode("Facturación CashMan H.A."), 0, 'R');
$pdf->setTextColor(0, 0, 0);
$pdf->Ln(3);
$pdf->SetFont('Arial', '', 8);
$pdf->MultiCell(199, 4, utf8_decode("Orden de Pago: Bol.->#" . $Gestiones->getIdCuotasClientesHistorico()), 0, 'R');
$pdf->MultiCell(199, 4, utf8_decode("Fecha: " . date_format($FechaCancelacion, "d/m/Y")), 0, 'R');
$pdf->MultiCell(199, 4, utf8_decode("Hora: " . date_format($FechaCancelacion, "H:i:s")), 0, 'R');
$pdf->MultiCell(199, 4, utf8_decode("Producto: " . $Gestiones->getNombreProductos()), 0, 'R');
$pdf->MultiCell(199, 4, utf8_decode("Transacción: " . $Gestiones->getReferenciaTransaccionCreditosClientes()), 0, 'R');
$pdf->Ln(31);
$pdf->SetFont('Arial', '', 9);
$pdf->MultiCell(190, 4, utf8_decode("Nombre del Cliente: " . $Gestiones->getNombresUsuarios() . " " . $Gestiones->getApellidosUsuarios()));
$pdf->SetTextColor(161,47,23);
$pdf->MultiCell(190, 0, utf8_decode("~~COPIA TRANSACCION~~"), 0, 'R');
$pdf->SetTextColor(0,0,0);
$pdf->MultiCell(190, 4, utf8_decode("Dui: " . $Gestiones->getDuiUsuarios()));
$pdf->MultiCell(190, 4, utf8_decode("Nit: " . $Gestiones->getNitUsuarios()));
$pdf->Ln(40);
$pdf->MultiCell(190, 4, utf8_decode("Orden de Pago ~ Cuota Mensual: " . $Gestiones->getCodigoProductos() . " | Bol->" . $Gestiones->getIdCuotasClientesHistorico() . " " . $Gestiones->getReferenciaTransaccionCreditosClientes() . " ( ~ $" . number_format($Gestiones->getCuotaMensualCreditos(), 2) . " USD)"));
$pdf->Ln(8);
$pdf->MultiCell(199, 5, utf8_decode("Subtotal: $ " . number_format($Gestiones->getCuotaMensualCreditos(), 2)), 0, 'R');
$pdf->Ln(7);
$pdf->MultiCell(199, 5, utf8_decode("Mora: $ " . number_format($MoraCuotasClientes, 2)), 0, 'R');
$pdf->Ln(6);
$pdf->MultiCell(199, 5, utf8_decode("Capital: $ " . number_format($Gestiones->getMontoCapitalClientes(), 2)), 0, 'R');
$pdf->Ln(5);
$pdf->MultiCell(199, 5, utf8_decode("Total: $ " . number_format($Gestiones->getMontoCuotaCancelar(), 2)), 0, 'R');
$pdf->Ln(6);
$pdf->SetFont('Arial', '', 7);
$pdf->MultiCell(190, 4, utf8_decode("EL TOTAL A CANCELAR ES : " . $Conversion->toWords($Gestiones->getMontoCuotaCancelar()) . " DOLARES DE LOS ESTADOS UNIDOS DE AMERICA"), 0, 'C');
$pdf->SetFont('Arial', '', 8);
$pdf->Ln(5);
$pdf->MultiCell(190, 4, utf8_decode("Estimado(a) cliente. Agradecemos su pago efectuado, le recordamos ser puntual para así tener una excelente calificación crediticia. Cualquier consulta, duda y/o reclamo puede efectuarlo en nuestros teléfonos 2255-0090, 2255-0091 y 2255-0192 o a nuestro correo electrónico servicioalcliente@cashmanha.com específicando el número de transacción que se encuentra en la parte superior de este documento. Trabajamos duro cada día para darle un excelente servicio a cada uno de nuestros clientes."));
$pdf->Ln(45);
$pdf->SetFont('Arial', '', 7);
$pdf->MultiCell(190, 4, utf8_decode("COMPROBANTE OFICIAL DE CANCELACIÓN CASHMAN H.A S.A DE C.V ~ " . $Gestiones->getReferenciaTransaccionCreditosClientes()), 0, 'C');
$pdf->MultiCell(190, 4, utf8_decode("Transacción gestionada por:  Emp->C.H" . $Gestiones->getEmpleadoGestionTransaccionCreditosClientes()), 0, 'C');
$pdf->Output();

Modificar vista_consultacuotashistoricocreditosclientes dónde se añaden los campos faltantes únicos para hacer referencia a los créditos históricos dentro de la plataforma

SELECT historicotransacciones.idhistoricotransaccion, historicotransacciones.idusuarios, historicotransacciones.idproducto, historicotransacciones.idcreditos, historicotransacciones.idcuotas, historicocreditos.montocredito, historicocreditos.interescredito, historicocreditos.plazocredito, historicocreditos.cuotamensual, historicotransacciones.monto, historicotransacciones.referencia, historicotransacciones.monto, historicotransacciones.fecha, historicotransacciones.dias_incumplimiento, historicotransacciones.empleado_gestion FROM historicotransacciones INNER JOIN historicocreditos ON historicotransacciones.idcreditos = historicocreditos.idcreditos;

Modificar vista --> vista_detallesfacturacioncreditosclienteshistoricos dónde se añaden los campos faltantes únicos para hacer referencia a los créditos históricos dentro de la plataforma

SELECT historicotransacciones.idhistoricotransaccion, historicotransacciones.idusuarios, historicotransacciones.idcreditos, historicotransacciones.idcuotas, historicotransacciones.idproducto, productos.codigo, productos.nombreproducto, usuarios.nombres, usuarios.apellidos, detalleusuarios.dui, detalleusuarios.nit, historicotransacciones.referencia, historicocreditos.montocredito, historicocreditos.cuotamensual, historicotransacciones.monto AS montocancelar, historicotransacciones.fecha, historicotransacciones.dias_incumplimiento, historicotransacciones.empleado_gestion FROM historicotransacciones INNER JOIN historicocreditos ON historicotransacciones.idcreditos = historicocreditos.idcreditos INNER JOIN usuarios ON historicotransacciones.idusuarios = usuarios.idusuarios INNER JOIN detalleusuarios ON historicotransacciones.idusuarios = detalleusuarios.idusuarios INNER JOIN productos ON historicotransacciones.idproducto = productos.idproducto

Modificar disparador CambioEstadoCancelacionCreditosClientes_UltimaCuotaPagada dónde se corrige la actualización automática en saldo final a $0.00 - dónde debe realizar el cambio de estado a CANCELADO y así poder continuar con las demás gestiones dentro de la plataforma a esos clientes.

-- VARIABLE DE DATO SALDO CREDITO CLIENTES
   DECLARE _saldocredito decimal(15,6);
   -- OBTENER LAS CONSULTA DE LOS DATOS REQUERIDOS
   SET
    _saldocredito := (
      SELECT saldocredito
      FROM creditos
      WHERE idcreditos = NEW.idcreditos
    );
   -- SI EL SALDO ES IGUAL A CERO "0" ENTONCES CLIENTE HA TERMINADO DE PAGAR SU RESPONSABILIDAD CREDITICIA Y AUTOMATICAMENTE EL CREDITO TOMA EL ESTADO << CANCELADO >>
   IF _saldocredito<1 THEN
   UPDATE creditos SET estado="cancelado" WHERE idcreditos=new.idcreditos;
   END IF;
   IF _saldocredito<0 THEN
   UPDATE creditos SET estado="cancelado" WHERE idcreditos=new.idcreditos;
   END IF;
   IF _saldocredito = 0 THEN
   UPDATE creditos SET estado="cancelado" WHERE idcreditos=new.idcreditos;
   END IF;
  • [Y de este modo, se ha resuelto con éxito el problema detectado]

Imágenes de constancia solución a la problemática:

image

image

Se han actualizado con éxito todos los componentes en este repositorio y en la demo de pruebas.

image

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant