Files
intranet/app/Controller/Cuotas.php

231 lines
6.6 KiB
PHP
Raw Normal View History

2020-12-01 17:23:13 -03:00
<?php
namespace App\Controller;
use App\Definition\Controller;
use Incoviba\old\Venta\Cuota;
use Incoviba\old\Venta\EstadoPago;
use Carbon\Carbon;
use Incoviba\old\Venta\Pie;
use Incoviba\old\Venta\Pago;
use Incoviba\old\Common\Banco;
class Cuotas
{
use Controller;
protected static function setDefault()
{
self::$default = view('construccion');
}
public static function show()
{
$id = get('cuota');
$cuota = \Model::factory(Cuota::class)->findOne($id);
return view('ventas.pies.cuotas.show', compact('cuota'));
}
public static function edit()
{
$id = get('cuota');
$cuota = \Model::factory(Cuota::class)->findOne($id);
return view('ventas.pies.cuotas.edit', compact('cuota'));
}
public static function editar()
{
$id = get('cuota');
$cuota = \Model::factory(Cuota::class)->findOne($id);
$cuota->numero = post('numero');
$cuota->{'valor_$'} = post('valor');
$banco = \Model::factory(\Incoviba\old\Common\Banco::class)->where('nombre', post('banco'))->findOne();
if ($banco) {
$cuota->banco = $banco->id;
} else {
$cuota->banco = 0;
}
$f = \Carbon\Carbon::createFromDate(post('year'), post('month'), post('day'), config('app.timezone'));
$cuota->fecha = $f->format('Y-m-d');
$pago = $cuota->pago();
$pago->valor = post('valor');
$pago->banco = $banco->id;
$pago->identificador = post('identificador');
$pago->fecha = $f->format('Y-m-d');
$uf = uf($f);
if ($uf->total > 0) {
$pago->uf = $uf->uf->value;
} else {
$pago->uf = 0;
}
$pago->save();
$cuota->save();
header('Location: ' . url('', ['p' => 'pies', 'a' => 'resumen', 'pie' => $cuota->pie()->id]));
}
public static function edited()
{
$id = get('cuota');
$cuota = \Model::factory(Cuota::class)->findOne($id);
$pago = $cuota->pago();
foreach ($_POST as $key => $value) {
$pago->$key = $value;
}
$pago->save();
}
public static function pendientes()
{
$f = \Carbon\Carbon::today(config('app.timezone'));
$cuotas = \Model::factory(Cuota::class)
->select('cuota.*')
->join('pago', ['pago.id', '=', 'cuota.pago'])
->join('venta', ['venta.pie', '=', 'cuota.pie'])
->raw_join('JOIN (SELECT e1.* FROM (SELECT pago, MAX(id) AS id FROM estado_pago GROUP BY pago) e0 JOIN estado_pago e1 ON e1.id = e0.id)', ['ep.pago', '=', 'pago.id'], 'ep')
->where('ep.estado', 0)
->where('venta.estado', 1)
->whereLte('pago.fecha', $f->format('Y-m-d'))
->order_by_asc('pago.fecha')
->findMany();
$sum = 0;
if (count($cuotas) > 0) {
$sum = array_reduce($cuotas, function($carry, $item) {
$carry += $item->pago()->valor;
return $carry;
});
}
setlocale(LC_TIME, 'es');
return view('ventas.pies.cuotas.pendientes', compact('cuotas', 'sum'));
}
public static function depositar()
{
$id = post('cuota');
$cuota = \Model::factory(Cuota::class)->findOne($id);
if ($cuota->pago()->estado()->estado == 1) {
return 'ok';
}
$estado = \Model::factory(EstadoPago::class)->create();
$estado->pago = $cuota->pago()->id;
$estado->estado = 1;
$f = Carbon::parse(post('fecha'), config('app.timezone'));
$estado->fecha = $f->format('Y-m-d');
$estado->save();
return 'ok';
}
public static function remove()
{
$id = get('cuota');
$cuota = \Model::factory(Cuota::class)->findOne($id);
$estado = \Model::factory(EstadoPago::class)->create();
$estado->pago = $cuota->pago()->id;
$estado->estado = -3;
$f = Carbon::today(config('app.timezone'));
$estado->fecha = $f->format('Y-m-d');
$estado->save();
header('Location: ' . url('', ['p' => 'pies', 'a' => 'resumen', 'pie' => $cuota->pie()->id]));
}
public static function para_abonar()
{
$cuotas = \Model::factory(Cuota::class)
->select('cuota.*')
->join('pago', ['pago.id', '=', 'cuota.pago'])
->join('venta', ['venta.pie', '=', 'cuota.pie'])
->raw_join('JOIN (SELECT e1.* FROM (SELECT pago, MAX(id) AS id FROM estado_pago GROUP BY pago) e0 JOIN estado_pago e1 ON e1.id = e0.id)', ['ep.pago', '=', 'pago.id'], 'ep')
->where('ep.estado', 1)
->where('venta.estado', 1)
->order_by_asc('ep.fecha')
->findMany();
$ini = get('start');
if ($ini == null) {
$ini = 0;
}
$n = get('step');
if ($n == 0) {
$n = 30;
}
$total = count($cuotas);
$cuotas = array_slice($cuotas, $ini, $n);
$pages = ceil($total / $n);
$current = ($ini + $n) / $n;
return view('ventas.pies.cuotas.abonar', compact('cuotas', 'total', 'pages', 'current'));
}
public static function abonar()
{
$id = post('cuota');
$cuota = \Model::factory(Cuota::class)->findOne($id);
if ($cuota->pago()->estado()->estado == 2) {
return 'ok';
}
$estado = \Model::factory(EstadoPago::class)->create();
$estado->pago = $cuota->pago()->id;
$estado->estado = 2;
$f = Carbon::parse(post('fecha'), config('app.timezone'));
$estado->fecha = $f->format('Y-m-d');
$estado->save();
return 'ok';
}
public static function rebotar()
{
$id = post('cuota');
$cuota = \Model::factory(Cuota::class)->findOne($id);
if ($cuota->pago()->estado()->estado == -1) {
return 'ok';
}
$estado = \Model::factory(EstadoPago::class)->create();
$estado->pago = $cuota->pago()->id;
$estado->estado = -1;
$f = Carbon::parse(post('fecha'), config('app.timezone'));
$estado->fecha = $f->format('Y-m-d');
$estado->save();
return 'ok';
}
public static function add()
{
$id = get('pie');
$pie = \Model::factory(Pie::class)->findOne($id);
return view('ventas.pies.cuotas.add', compact('pie'));
}
public static function agregar()
{
$id = get('pie');
$pie = \Model::factory(Pie::class)->findOne($id);
$cant = $pie->cuotas - count($pie->cuotas());
for ($i = 0; $i < $cant; $i ++) {
if (trim(post('valor' . $i)) == '') {
continue;
}
$banco = \Model::factory(Banco::class)->where('nombre', post('banco' . $i))->findOne();
$f = Carbon::createFromDate(post('year' . $i), post('month' . $i), post('day' . $i), config('app.timezone'));
$uf = uf($f);
$valor = correctNumber(post('valor' . $i));
$pago = \Model::factory(Pago::class)->create();
$pago->banco = $banco->id;
$pago->fecha = $f->format('Y-m-d');
if ($uf and $uf->total > 0) {
$pago->uf = $uf->uf->value;
} else {
$pago->uf = 0;
}
$pago->tipo = 1;
$pago->valor = $valor;
$pago->identificador = post('identificador' . $i);
$cuota = \Model::factory(Cuota::class)->create();
$cuota->pie = $pie->id;
$cuota->fecha = $pago->fecha;
$cuota->{'valor_$'} = $pago->valor;
$cuota->estado = 0;
$cuota->banco = $pago->banco;
$cuota->uf = $pago->uf;
$cuota->numero = post('numero' . $i);
$pago->new();
$cuota->pago = $pago->id;
$cuota->save();
header('Location: ' . url('', ['p' => 'ventas', 'a' => 'show', 'venta' => $pie->venta()->id]));
}
}
}
?>