Files
intranet/app/Controller/Creditos.php

208 lines
5.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\Venta;
use Incoviba\old\Common\Banco;
use Incoviba\old\Venta\Credito;
use Carbon\Carbon;
use Incoviba\old\Venta\Pago;
use Incoviba\old\Venta\EstadoPago;
class Creditos
{
use Controller;
protected static function setDefault()
{
self::$default = view('construccion');
}
public static function agregar()
{
$id = get('venta');
if ($id == null) {
header('Location: .');
}
$venta = \Model::factory(Venta::class)->findOne($id);
return view('ventas.creditos.add', compact('venta'));
}
public static function agregado()
{
$id = get('venta');
if ($id == null) {
header('Location: .');
}
$venta = \Model::factory(Venta::class)->findOne($id);
$banco = \Model::factory(Banco::class)->where('nombre', post('banco'))->findOne();
$f = Carbon::createFromDate(post('y'), post('m'), post('d'), config('app.timezone'));
$uf = uf($f);
$pago = \Model::factory(Pago::class)->create();
$pago->banco = $banco->id;
$pago->fecha = $f->format('Y-m-d');
$pago->uf = $uf->uf->value;
$pago->valor = post('valor') * $pago->uf;
$pago->tipo = 2;
$credito = \Model::factory(Credito::class)->create();
$credito->banco = $pago->banco;
$credito->valor = $pago->valor;
$credito->fecha = $pago->fecha;
$credito->uf = $pago->uf;
$pago->new();
$credito->pago = $pago->id;
$credito->save();
$venta->credito = $credito->id;
$venta->save();
header('Location: ' . url('', ['p' => 'ventas', 'a' => 'show', 'venta' => $venta->id]));
}
public static function pagar()
{
$id = get('venta');
$venta = \Model::factory(Venta::class)->findOne($id);
return view('ventas.creditos.pagar', compact('venta'));
}
public static function pagando()
{
$id = get('venta');
$venta = \Model::factory(Venta::class)->findOne($id);
$valor = str_replace(',', '.', str_replace('.', '', post('valor')));
$f = Carbon::createFromDate(post('year'), post('month'), post('day'), config('app.timezone'));
$pago = $venta->credito()->pago();
if ($pago->valor != $valor) {
$pago->valor = $valor;
}
$estado = \Model::factory(EstadoPago::class)->create();
$estado->pago = $pago->id;
$estado->fecha = $f->format('Y-m-d');
$estado->estado = 1;
$estado->save();
if ($pago->is_dirty('valor')) {
$pago->save();
}
header('Location: ' . url('', ['p' => 'ventas', 'a' => 'show', 'venta' => $venta->id]));
}
public static function abonar()
{
$id = get('venta');
$venta = \Model::factory(Venta::class)->findOne($id);
return view('ventas.creditos.abonar', compact('venta'));
}
public static function abonando()
{
$id = get('venta');
$venta = \Model::factory(Venta::class)->findOne($id);
$valor = str_replace(',', '.', str_replace('.', '', post('valor')));
$f = Carbon::createFromDate(post('year'), post('month'), post('day'), config('app.timezone'));
$pago = $venta->credito()->pago();
if ($pago->valor != $valor) {
$pago->valor = $valor;
}
$estado = \Model::factory(EstadoPago::class)->create();
$estado->pago = $pago->id;
$estado->fecha = $f->format('Y-m-d');
$estado->estado = 2;
$estado->save();
if ($pago->is_dirty('valor')) {
$pago->save();
}
header('Location: ' . url('', ['p' => 'ventas', 'a' => 'show', 'venta' => $venta->id]));
}
public static function show()
{
$id = get('venta');
$venta = model(Venta::class)->findOne($id);
return view('ventas.creditos.show', compact('venta'));
}
public static function edit()
{
$id = get('venta');
$venta = model(Venta::class)->findOne($id);
return view('ventas.creditos.edit', compact('venta'));
}
public static function editado()
{
$id = get('venta');
$venta = model(Venta::class)->findOne($id);
$pago = $venta->credito()->pago();
$f = Carbon::createFromDate(post('year'), post('month'), post('day'), config('app.timezone'));
$uf = uf($f);
$banco = model(Banco::class)->where('nombre', post('banco'))->findOne();
$valor = correctNumber(post('valor')) * $uf->uf->value;
$fields = ['valor', 'uf', 'fecha', 'banco'];
$data = ['valor' => $valor, 'uf' => $uf->uf->value, 'fecha' => $f->format('Y-m-d'), 'banco' => $banco->id];
$change = false;
foreach ($fields as $field) {
if ($pago->$field != $data[$field]) {
$change = true;
$pago->$field = $data[$field];
if ($field == 'fecha') {
$eps = $pago->estados();
foreach ($eps as $ep) {
if ($ep->estado == 0) {
$ep->fecha = $data[$field];
$ep->save();
break;
}
}
}
}
}
if ($change) {
$pago->save();
}
header('Location: ' . url('', ['p' => 'ventas', 'a' => 'show', 'venta' => $venta->id]));
}
public static function remove()
{
$id = get('venta');
$venta = model(Venta::class)->findOne($id);
$pago = $venta->credito()->pago();
$f = Carbon::today(config('app.timezone'));
$data = [
'pago' => $pago->id,
'estado' => -3,
'fecha' => $f->format('Y-m-d')
];
$estado = model(EstadoPago::class)->create($data);
$estado->save();
$venta->credito = 0;
$venta->save();
header('Location: ' . url('', ['p' => 'ventas', 'a' => 'show', 'venta' => $venta->id]));
}
public static function pendientes()
{
$creditos = model(Credito::class)
->select('credito.*')
->join('venta', ['venta.credito', '=', 'credito.id'])
->join('pago', ['pago.id', '=', 'credito.pago'])
->rawJoin('JOIN (SELECT ep.* FROM (SELECT pago, MAX(id) AS id FROM estado_pago GROUP BY pago) e0 JOIN estado_pago ep ON ep.id = e0.id)', ['estado_pago.pago', '=', 'pago.id'], 'estado_pago')
->whereLt('estado_pago.estado', 2)
->where('venta.estado', 1)
->orderByAsc('estado_pago.fecha')
->findMany();
return view('ventas.creditos.pendientes', compact('creditos'));
}
}
?>