Files
oficial/app/Controller/Contabilidad.php
2021-03-25 21:10:44 -03:00

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'));
}
}