Modernizacion de repo Cuota

This commit is contained in:
Juan Pablo Vial
2024-10-03 20:38:35 -03:00
parent b9c2972fe9
commit 196c5b947f

View File

@ -74,69 +74,96 @@ class Cuota extends Ideal\Repository
public function fetchHoy(): array
{
$query = "SELECT a.*
FROM `{$this->getTable()}` a
JOIN `pago` ON `pago`.`id` = a.`pago`
JOIN (SELECT e1.* FROM `estado_pago` e1 JOIN (SELECT MAX(`id`) AS `id`, `pago` FROM `estado_pago` GROUP BY `pago`) e0 ON e0.`id` = e1.`id`) ep ON ep.`pago` = `pago`.`id`
JOIN `tipo_estado_pago` tep ON tep.`id` = ep.`estado`
JOIN `venta` ON `venta`.`pie` = a.`pie`
JOIN (SELECT ev1.* FROM `estado_venta` ev1 JOIN (SELECT MAX(`id`) AS 'id', `venta` FROM `estado_venta` GROUP BY `venta`) ev0 ON ev0.`id` = ev1.`id`) ev ON ev.`venta` = `venta`.`id`
JOIN `tipo_estado_venta` tev ON tev.`id` = ev.`estado`
WHERE tep.`descripcion` = 'no pagado' AND `pago`.`fecha` = CURDATE()
AND tev.`descripcion` IN ('vigente', 'escriturando', 'firmado por inmobiliaria')";
return $this->fetchMany($query);
$query = $this->connection->getQueryBuilder()
->select('a.*')
->from("{$this->getTable()} a")
->joined('JOIN pago ON pago.id = a.pago')
->joined('JOIN (SELECT e1.* FROM estado_pago e1 JOIN (SELECT MAX(id) AS id, pago FROM estado_pago GROUP BY pago) e0 ON e0.id = e1.id) ep ON ep.pago = pago.id')
->joined('JOIN tipo_estado_pago tep ON tep.id = ep.estado')
->joined('JOIN venta ON venta.pie = a.pie')
->joined('JOIN (SELECT ev1.* FROM estado_venta ev1 JOIN (SELECT MAX(id) AS id, venta FROM estado_venta GROUP BY venta) ev0 ON ev0.id = ev1.id) ev ON ev.venta = venta.id')
->joined('JOIN tipo_estado_venta tev ON tev.id = ev.estado')
->where('tep.descripcion = ?')
->where('pago.fecha = CURDATE()')
->where('tev.descripcion IN (?, ?, ?)');
return $this->fetchMany($query, ['no pagado', 'vigente', 'escriturando', 'firmado por inmobiliaria']);
}
public function fetchPendientes(): array
{
$query = "SELECT a.`id` AS 'cuota_id', `venta`.`id` AS 'venta_id', `proyecto`.`descripcion` AS 'Proyecto', `unidad`.`descripcion` AS 'Departamento',
`pago`.`valor` AS 'Valor', `pago`.`fecha`, CONCAT_WS(' - ', a.`numero`, `pie`.`cuotas`) AS 'Numero', `banco`.`nombre` AS 'Banco',
CONCAT_WS(' ', `propietario`.`nombres`, `propietario`.`apellido_paterno`, `propietario`.`apellido_materno`) AS 'Propietario'
FROM `{$this->getTable()}` a
JOIN `pago` ON `pago`.`id` = a.`pago`
JOIN (SELECT e1.* FROM `estado_pago` e1 JOIN (SELECT MAX(`id`) AS 'id', `pago` FROM `estado_pago` GROUP BY `pago`) e0 ON e0.`id` = e1.`id`) ep ON ep.`pago` = `pago`.`id`
JOIN `tipo_estado_pago` tep ON tep.`id` = ep.`estado`
JOIN `pie` ON `pie`.`id` = a.`pie`
JOIN `venta` ON `venta`.`pie` = a.`pie`
JOIN (SELECT ev1.* FROM `estado_venta` ev1 JOIN (SELECT MAX(`id`) AS 'id', `venta` FROM `estado_venta` GROUP BY `venta`) ev0 ON ev0.`id` = ev1.`id`) ev ON ev.`venta` = `venta`.`id`
JOIN `tipo_estado_venta` tev ON tev.`id` = ev.`estado`
JOIN `propietario` ON `propietario`.`rut` = `venta`.`propietario`
JOIN `propiedad_unidad` pu ON pu.`propiedad` = `venta`.`propiedad`
JOIN `unidad` ON `unidad`.`id` = pu.`unidad` AND pu.`principal` = 1
JOIN `proyecto_tipo_unidad` ptu ON ptu.`id` = `unidad`.`pt`
JOIN `proyecto` ON `proyecto`.`id` = ptu.`proyecto`
JOIN `banco` ON `banco`.`id` = `pago`.`banco`
WHERE tep.`descripcion` = 'no pagado' AND `pago`.`fecha` < CURDATE()
AND tev.`descripcion` IN ('vigente', 'escriturando', 'firmado por inmobiliaria')
ORDER BY `pago`.`fecha` DESC";
return $this->fetchAsArray($query);
$query = $this->connection->getQueryBuilder()
->select(['a.`id` AS cuota_id', 'venta.id AS venta_id', 'proyecto.descripcion AS Proyecto', 'unidad.descripcion AS Departamento',
'pago.valor AS Valor', 'pago.fecha', 'CONCAT_WS(" - ", a.numero, pie.cuotas) AS Numero', 'banco.nombre AS Banco',
'CONCAT_WS(" ", propietario.nombres, propietario.apellido_paterno, propietario.apellido_materno) AS Propietario'])
->from("{$this->getTable()} a")
->joined('JOIN pago ON pago.id = a.pago')
->joined('JOIN (SELECT e1.* FROM estado_pago e1 JOIN (SELECT MAX(id) AS id, pago FROM estado_pago GROUP BY pago) e0 ON e0.id = e1.id) ep ON ep.pago = pago.id')
->joined('JOIN tipo_estado_pago tep ON tep.id = ep.estado')
->joined('JOIN pie ON pie.id = a.pie')
->joined('JOIN venta ON venta.pie = a.pie')
->joined('JOIN (SELECT ev1.* FROM estado_venta ev1 JOIN (SELECT MAX(id) AS id, venta FROM estado_venta GROUP BY venta) ev0 ON ev0.id = ev1.id) ev ON ev.venta = venta.id')
->joined('JOIN tipo_estado_venta tev ON tev.id = ev.estado')
->joined('JOIN propietario ON propietario.rut = venta.propietario')
->joined('JOIN propiedad_unidad pu ON pu.propiedad = venta.propiedad')
->joined('JOIN unidad ON unidad.id = pu.unidad AND pu.principal = 1')
->joined('JOIN proyecto_tipo_unidad ptu ON ptu.id = unidad.pt')
->joined('JOIN proyecto ON proyecto.id = ptu.proyecto')
->joined('JOIN banco ON banco.id = pago.banco')
->where('tep.descripcion = ?')
->where('pago.fecha < CURDATE()')
->where('tev.descripcion IN (?, ?, ?)')
->order('pago.fecha DESC');
return $this->fetchAsArray($query, ['no pagado', 'vigente', 'escriturando', 'firmado por inmobiliaria']);
}
public function fetchDepositadas(): array
{
$query = "SELECT a.`id` AS 'cuota_id', `venta`.`id` AS 'venta_id', `proyecto`.`descripcion` AS 'Proyecto', `unidad`.`descripcion` AS 'Departamento',
`pago`.`valor` AS 'Valor', `pago`.`fecha`, CONCAT_WS(' - ', a.`numero`, `pie`.`cuotas`) AS 'Numero', `banco`.`nombre` AS 'Banco', ep.`fecha` AS 'Fecha Depositada',
CONCAT_WS(' ', `propietario`.`nombres`, `propietario`.`apellido_paterno`, `propietario`.`apellido_materno`) AS 'Propietario'
FROM `{$this->getTable()}` a
JOIN `pago` ON `pago`.`id` = a.`pago`
JOIN (SELECT e1.* FROM `estado_pago` e1 JOIN (SELECT MAX(`id`) AS 'id', `pago` FROM `estado_pago` GROUP BY `pago`) e0 ON e0.`id` = e1.`id`) ep ON ep.`pago` = `pago`.`id`
JOIN `tipo_estado_pago` tep ON tep.`id` = ep.`estado`
JOIN `pie` ON `pie`.`id` = a.`pie`
JOIN `venta` ON `venta`.`pie` = a.`pie`
JOIN (SELECT ev1.* FROM `estado_venta` ev1 JOIN (SELECT MAX(`id`) AS 'id', `venta` FROM `estado_venta` GROUP BY `venta`) ev0 ON ev0.`id` = ev1.`id`) ev ON ev.`venta` = `venta`.`id`
JOIN `tipo_estado_venta` tev ON tev.`id` = ev.`estado`
JOIN `propietario` ON `propietario`.`rut` = `venta`.`propietario`
JOIN `propiedad_unidad` pu ON pu.`propiedad` = `venta`.`propiedad`
JOIN `unidad` ON `unidad`.`id` = pu.`unidad` AND pu.`principal` = 1
JOIN `proyecto_tipo_unidad` ptu ON ptu.`id` = `unidad`.`pt`
JOIN `proyecto` ON `proyecto`.`id` = ptu.`proyecto`
JOIN `banco` ON `banco`.`id` = `pago`.`banco`
WHERE tep.`descripcion` = 'depositado' AND `pago`.`fecha` < CURDATE()
AND tev.`descripcion` IN ('vigente', 'escriturando', 'firmado por inmobiliaria')
ORDER BY `pago`.`fecha` DESC";
return $this->fetchAsArray($query);
$query = $this->connection->getQueryBuilder()
->select(['a.`id` AS cuota_id', 'venta.id AS venta_id', 'proyecto.descripcion AS Proyecto', 'unidad.descripcion AS Departamento',
'pago.valor AS Valor', 'pago.fecha', 'CONCAT_WS(" - ", a.numero, pie.cuotas) AS Numero', 'banco.nombre AS Banco', 'ep.fecha AS Fecha Depositada',
'CONCAT_WS(" ", propietario.nombres, propietario.apellido_paterno, propietario.apellido_materno) AS Propietario'])
->from("{$this->getTable()} a")
->joined('JOIN pago ON pago.id = a.pago')
->joined('JOIN (SELECT e1.* FROM estado_pago e1 JOIN (SELECT MAX(id) AS id, pago FROM estado_pago GROUP BY pago) e0 ON e0.id = e1.id) ep ON ep.pago = pago.id')
->joined('JOIN tipo_estado_pago tep ON tep.id = ep.estado')
->joined('JOIN pie ON pie.id = a.pie')
->joined('JOIN venta ON venta.pie = a.pie')
->joined('JOIN (SELECT ev1.* FROM estado_venta ev1 JOIN (SELECT MAX(id) AS id, venta FROM estado_venta GROUP BY venta) ev0 ON ev0.id = ev1.id) ev ON ev.venta = venta.id')
->joined('JOIN tipo_estado_venta tev ON tev.id = ev.estado')
->joined('JOIN propietario ON propietario.rut = venta.propietario')
->joined('JOIN propiedad_unidad pu ON pu.propiedad = venta.propiedad')
->joined('JOIN unidad ON unidad.id = pu.unidad AND pu.principal = 1')
->joined('JOIN proyecto_tipo_unidad ptu ON ptu.id = unidad.pt')
->joined('JOIN proyecto ON proyecto.id = ptu.proyecto')
->joined('JOIN banco ON banco.id = pago.banco')
->where('tep.descripcion = ?')
->where('pago.fecha < CURDATE()')
->where('tev.descripcion IN (?, ?, ?)')
->order('pago.fecha DESC');
return $this->fetchAsArray($query, ['depositado', 'vigente', 'escriturando', 'firmado por inmobiliaria']);
}
public function fetchDatosPorVencer(): array
{
$query = "SELECT p1.`fecha` AS 'Fecha', v1.`descripcion` AS 'Proyecto', COUNT(a.`id`) AS 'Cantidad'
$query = $this->connection->getQueryBuilder()
->select(['p1.`fecha` AS Fecha', 'v1.`descripcion` AS Proyecto', 'COUNT(a.`id`) AS Cantidad'])
->from("{$this->getTable()} a")
->joined('JOIN (
SELECT `pago`.`id`, `pago`.`fecha` FROM `pago`
JOIN (SELECT e1.* FROM `estado_pago` e1
JOIN (SELECT MAX(`id`) AS `id`, `pago` FROM `estado_pago` GROUP BY `pago`) e0 ON e0.`id` = e1.`id`) ep ON ep.`pago` = `pago`.`id`
JOIN `tipo_estado_pago` tep ON tep.`id` = ep.`estado` AND tep.`descripcion` = :tep) p1 ON p1.id = a.`pago`')
->joined('JOIN (
SELECT `venta`.`pie`, `venta`.`propiedad`, `proyecto`.`descripcion` FROM `venta`
JOIN (SELECT ev1.* FROM `estado_venta` ev1
JOIN (SELECT MAX(`id`) AS `id`, `venta` FROM `estado_venta` GROUP BY `venta`) ev0 ON ev0.`id` = ev1.`id`) ev ON ev.`venta` = `venta`.`id`
JOIN `tipo_estado_venta` tev ON tev.`id` = ev.`estado` AND tev.`descripcion` IN (:tev1, :tev2, :tev3)
JOIN `propiedad_unidad` pu ON pu.`propiedad` = `venta`.`propiedad`
JOIN `unidad` ON `unidad`.`id` = pu.`unidad` JOIN `proyecto_tipo_unidad` ptu ON ptu.`id` = `unidad`.`pt`
JOIN `proyecto` ON `proyecto`.`id` = ptu.`proyecto`) v1 ON v1.`pie` = a.`pie`')
->where('p1.`fecha` BETWEEN DATE_ADD(CURDATE(), INTERVAL 1 DAY) AND DATE_ADD(CURDATE(), INTERVAL 1 MONTH)')
->group('p1.`fecha`, v1.`descripcion`')
->order('p1.`fecha`, v1.`descripcion`');
return $this->fetchAsArray($query, ['tep' => 'no pagado', 'tev1' => 'vigente', 'tev2' => 'escriturando', 'tev3' => 'firmado por inmobiliaria']);
/*$query = "SELECT p1.`fecha` AS 'Fecha', v1.`descripcion` AS 'Proyecto', COUNT(a.`id`) AS 'Cantidad'
FROM `{$this->getTable()}` a
JOIN (
SELECT `pago`.`id`, `pago`.`fecha`
@ -150,7 +177,7 @@ FROM `{$this->getTable()}` a
GROUP BY `pago`
) e0 ON e0.`id` = e1.`id`
) ep ON ep.`pago` = `pago`.`id`
JOIN `tipo_estado_pago` tep ON tep.`id` = ep.`estado` AND tep.`descripcion` = 'no pagado'
JOIN `tipo_estado_pago` tep ON tep.`id` = ep.`estado` AND tep.`descripcion` = :no_pagado
) p1 ON p1.id = a.`pago`
JOIN (
SELECT `venta`.`pie`, `venta`.`propiedad`, `proyecto`.`descripcion`
@ -164,7 +191,7 @@ FROM `{$this->getTable()}` a
GROUP BY `venta`
) ev0 ON ev0.`id` = ev1.`id`
) ev ON ev.`venta` = `venta`.`id`
JOIN `tipo_estado_venta` tev ON tev.`id` = ev.`estado` AND tev.`descripcion` IN ('vigente', 'escriturando', 'firmado por inmobiliaria')
JOIN `tipo_estado_venta` tev ON tev.`id` = ev.`estado` AND tev.`descripcion` IN (:estados)
JOIN `propiedad_unidad` pu ON pu.`propiedad` = `venta`.`propiedad` AND pu.`principal` = 1
JOIN `unidad` ON `unidad`.`id` = pu.`unidad`
JOIN `proyecto_tipo_unidad` ptu ON ptu.`id` = `unidad`.`pt`
@ -173,27 +200,37 @@ FROM `{$this->getTable()}` a
WHERE p1.`fecha` BETWEEN DATE_ADD(CURDATE(), INTERVAL 1 DAY) AND DATE_ADD(CURDATE(), INTERVAL 1 MONTH)
GROUP BY p1.`fecha`, v1.`descripcion`
ORDER BY p1.`fecha`, v1.`descripcion`";
return $this->fetchAsArray($query);
return $this->fetchAsArray($query);*/
}
public function fetchByPie(int $pie_id): array
{
$query = $this->connection->getQueryBuilder()
->select()
->from($this->getTable())
->where('pie = ?')
->where('pie = :pie_id')
->group('id');
return $this->fetchMany($query, [$pie_id]);
return $this->fetchMany($query, compact('pie_id'));
}
public function fetchVigenteByPie(int $pie_id): array
{
$query = "SELECT a.*
$query = $this->connection->getQueryBuilder()
->select('a.*')
->from("{$this->getTable()} a")
->joined('JOIN pago ON pago.id = a.pago')
->joined('JOIN (SELECT e1.* FROM estado_pago e1 JOIN (SELECT MAX(id) AS id, pago FROM estado_pago GROUP BY pago) e0 ON e0.id = e1.id) ep ON ep.pago = pago.id')
->joined('JOIN tipo_estado_pago tep ON tep.id = ep.estado')
->where('a.pie = :pie_id')
->where('tep.active = 1')
->group('a.id');
return $this->fetchMany($query, compact('pie_id'));
/*$query = "SELECT a.*
FROM `{$this->getTable()}` a
JOIN `pago` ON `pago`.`id` = a.`pago`
JOIN (SELECT e1.* FROM `estado_pago` e1 JOIN (SELECT MAX(`id`) AS 'id', `pago` FROM `estado_pago` GROUP BY `pago`) e0 ON e0.`id` = e1.`id`) ep ON ep.`pago` = `pago`.`id`
JOIN `tipo_estado_pago` tep ON tep.`id` = ep.`estado`
WHERE a.`pie` = ? AND tep.`active` = 1
GROUP BY a.`id`";
return $this->fetchMany($query, [$pie_id]);
return $this->fetchMany($query, [$pie_id]);*/
}
public function fetchByPago(int $pago_id): Model\Venta\Cuota
{