101 lines
3.3 KiB
PHP
101 lines
3.3 KiB
PHP
<?php
|
|
namespace App\Controller;
|
|
|
|
use Carbon\Carbon;
|
|
use App\Definition\Controller;
|
|
use Incoviba\old\Proyecto\Proyecto;
|
|
|
|
class Contabilidad {
|
|
use Controller;
|
|
|
|
/**
|
|
* Obtener Proyecto y fecha
|
|
* Listar Proyectos y fechas
|
|
* Listar pagos realizados en esa fecha para detalle de contabilidad
|
|
*/
|
|
public static function get_proyectos() {
|
|
$proyectos = model(Proyecto::class)->orderByAsc('descripcion')->findMany();
|
|
foreach ($proyectos as &$proyecto) {
|
|
$arr = $proyecto->asArray();
|
|
$arr['direccion'] = $proyecto->direccion()->asArray();
|
|
$arr['direccion']['comuna'] = $proyecto->direccion()->comuna()->asArray();
|
|
$arr['inmobiliaria'] = $proyecto->inmobiliaria()->asArray();
|
|
$proyecto = $arr;
|
|
}
|
|
return json_encode(compact('proyectos'));
|
|
}
|
|
public static function get_fechas() {
|
|
$id_proyecto = get('proyecto');
|
|
$proyecto = model(Proyecto::class)->findOne($id_proyecto);
|
|
$cuotas = [];
|
|
foreach ($proyecto->ventas() as $venta) {
|
|
$cs = $venta->pie()->cuotas();
|
|
$cuotas = array_merge($cs, array_filter($cs, function($item) {
|
|
$tipo = $item->pago()->estado()->tipo();
|
|
return ($tipo == 'depositado' or $tipo == 'abonado');
|
|
}));
|
|
}
|
|
$fechas = array_map(function($item) {
|
|
return [
|
|
'timestamp' => $item->pago()->estado()->fecha()->timestamp,
|
|
'short' => $item->pago()->estado()->fecha()->format('Y-m-d'),
|
|
'long' => $item->pago()->estado()->fecha()->format('d / m / Y')
|
|
];
|
|
}, $cuotas);
|
|
usort($fechas, function($a, $b) {
|
|
return $b['timestamp'] - $a['timestamp'];
|
|
});
|
|
return json_encode(compact('fechas'));
|
|
}
|
|
public static function get_pagos_fechas() {
|
|
$id_proyecto = get('proyecto');
|
|
$fecha = Carbon::parse(get('fecha'));
|
|
$proyecto = model(Proyecto::class)->findOne($id_proyecto);
|
|
$pagos = [];
|
|
foreach ($proyecto->ventas() as $venta) {
|
|
foreach ($venta->pie()->cuotas() as $cuota) {
|
|
if ($cuota->pago()->estado()->fecha() == $fecha) {
|
|
$pagos []= [
|
|
'Departamento' => $venta->propiedad()->unidad()->descripcion,
|
|
'Valor' => [
|
|
'UF' => $cuota->pago()->valor('ufs'),
|
|
'Pesos' => $cuota->pago()->valor()
|
|
],
|
|
'Numero' => $cuota->numero(),
|
|
'Total' => $venta->pie()->cuotas
|
|
];
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
return json_encode(compact('pagos'));
|
|
}
|
|
public static function pagos_fecha() {
|
|
$fecha = Carbon::now();
|
|
return view('contabilidad.pagos', compact('fecha'));
|
|
}
|
|
public static function show_pagos() {
|
|
$id_proyecto = get('proyecto');
|
|
$fecha = Carbon::parse(get('fecha'));
|
|
$proyecto = model(Proyecto::class)->findOne($id_proyecto);
|
|
$pagos = [];
|
|
foreach ($proyecto->ventas() as $venta) {
|
|
foreach ($venta->pie()->cuotas() as $cuota) {
|
|
if ($cuota->pago()->estado()->fecha() == $fecha) {
|
|
$pagos []= (object) [
|
|
'Departamento' => $venta->propiedad()->unidad()->descripcion,
|
|
'Valor' => (object) [
|
|
'UF' => $cuota->pago()->valor('ufs'),
|
|
'Pesos' => $cuota->pago()->valor()
|
|
],
|
|
'Numero' => $cuota->numero(),
|
|
'Total' => $venta->pie()->cuotas
|
|
];
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
return view('contabilidad.pago', compact('proyecto', 'fecha', 'pagos'));
|
|
}
|
|
}
|