231 lines
6.6 KiB
PHP
231 lines
6.6 KiB
PHP
|
<?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]));
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
?>
|