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