208 lines
5.6 KiB
PHP
208 lines
5.6 KiB
PHP
|
<?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'));
|
||
|
}
|
||
|
}
|
||
|
?>
|