
| Path : /home/gujo45me/public_html/delpueblo2/app/Http/Controllers/ |
| Disable Functions : exec,passthru,shell_exec,system System : Linux server-604606.appsiete.com 3.10.0-1160.119.1.el7.tuxcare.els25.x86_64 #1 SMP Wed Oct 1 17:37:27 UTC 2025 x86_64 [ Home ][ Zone-h ][ Jumping ][ Symlink ][ Mass Depes ][ Command ] |
| Current File : /home/gujo45me/public_html/delpueblo2/app/Http/Controllers/NotaController.php |
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use Auth;
use App\Models\Nota;
use App\Models\Local;
use App\Models\Venta;
use App\Models\Empresa;
use App\Models\TipoComprobante;
use App\Models\DetalleVenta;
use App\Models\ProductoLocal;
use App\Http\Controllers\XmlController;
class NotaController extends Controller
{
public function __construct()
{
$this->middleware('auth:usuario');
}
public function listar_credito()
{
$res = Nota::with(['local', 'venta', 'tipo_comprobante'])->where('id_tipo_comprobante', 3)->where('estado_envio', '<>',null)->where('estado', 1)->orderBy('created_at', 'desc')->paginate(20);
return view('nota.listar_credito', [ 'data' => $res]);
}
public function estado_credito($id)
{
$estado = ['ACEPTADO', 'RECHAZADO', 'NO ENVIADO', 'PENDIENTE', 'REGISTRADO'];
$res = Nota::with(['local', 'venta', 'tipo_comprobante'])->where('estado_envio', $estado[$id])->where('id_tipo_comprobante', 3)->where('estado_envio', '<>',null)->where('estado', 1)->orderBy('created_at', 'desc')->paginate(20);
return view('nota.listar_credito', [ 'data' => $res]);
}
public function listar_debito()
{
$res = Nota::with(['local', 'venta', 'tipo_comprobante'])->where('id_tipo_comprobante', 4)->where('estado_envio', '<>',null)->where('estado', 1)->orderBy('created_at', 'desc')->paginate(20);
return view('nota.listar_debito', [ 'data' => $res]);
}
public function estado_debito($id)
{
$estado = ['ACEPTADO', 'RECHAZADO', 'NO ENVIADO', 'REGISTRADO'];
$res = Nota::with(['local', 'venta', 'tipo_comprobante'])->where('estado_envio', $estado[$id])->where('id_tipo_comprobante', 4)->where('estado_envio', '<>',null)->where('estado', 1)->orderBy('created_at', 'desc')->paginate(20);
return view('nota.listar_debito', [ 'data' => $res]);
}
public function credito($id)
{
return view('nota.nuevo_credito', [
'data' => Venta::with(['local', 'cliente', 'usuario', 'tipo_comprobante'])->where('id_nota' , null)->where(['id_venta' => $id])->first(),
]);
}
public function registrar_credito(Request $request)
{
if ($request->ajax())
{
$prev = Venta::where('id_nota' , null)->where(['id_venta' => $request->id_venta])->first();
if ($prev) {
$id_local = Auth::guard("usuario")->user()->id_local;
$correl = $this->getCorrelativo($request->id_tipo_comprobante, $id_local, $request->id_venta);
$request->request->add(['id_usuario' => Auth::guard("usuario")->user()->id_usuario]);
$request->request->add(['id_local' => $id_local]);
$request->request->add(['serie_nota' => $correl['serie']]);
$request->request->add(['numero_nota' => $correl['numero']]);
$request->request->add(['nombre_nota' => $correl['nombre']]);
$request->request->add(['fecha_emision' => date('Y-m-d')]);//ojo
$request->request->add(['estado_envio' => 'REGISTRADO']);
$request->request->add(['mensaje_envio' => 'La nota fue emitida correctamente']);
$res = Nota::create($request->all());
if ($res) {
$data = Venta::find($res->id_venta);
$data->id_nota = $res->id_nota;
$data->save();
$data2 = DetalleVenta::where('id_venta', $request->id_venta)->get();
foreach ($data2 as $row) {
$data2 = ProductoLocal::where(['id_producto' => $row->id_producto, 'id_local' => $request->id_local])->first();
$res2 = ProductoLocal::find($data2->id_producto_local);
$res2->stock = $data2->stock + $row->cantidad;
$res2->save();
}
$xml = new XmlController();
$xml->crearNotaCredito($res->id_nota);
}
$res ? $res['message'] = 'success' : $res['message'] = 'error';
}
else {
$res['message'] = 'error';
}
return response()->json($res);
}
}
public function registrar_debito(Request $request)
{
if ($request->ajax())
{
$id_local = Auth::guard("usuario")->user()->id_local;
$correl = $this->getCorrelativo($request->id_tipo_comprobante, $id_local, $request->id_venta);
$request->request->add(['id_usuario' => Auth::guard("usuario")->user()->id_usuario]);
$request->request->add(['id_local' => $id_local]);
$request->request->add(['serie_nota' => $correl['serie']]);
$request->request->add(['numero_nota' => $correl['numero']]);
$request->request->add(['nombre_nota' => $correl['nombre']]);
$request->request->add(['fecha_emision' => date('Y-m-d')]);//ojo
$request->request->add(['estado_envio' => 'REGISTRADO']);
$request->request->add(['mensaje_envio' => 'La nota fue emitida correctamente']);
$res = Nota::create($request->all());
if ($res) {
//Modificar total venta
$data = Venta::find($res->id_venta);
$data->total_venta = $request->monto;
$data->save();
$xml = new XmlController();
$xml->crearNotaDebito($res->id_nota);
}
$res ? $res['message'] = 'success' : $res['message'] = 'error';
return response()->json($res);
}
}
public function getCorrelativo($tipo, $id_local, $id_venta)
{
$venta = Venta::where('id_venta', $id_venta)->first();
$serie = $venta->serie_comprobante;
$num = Nota::where(['id_tipo_comprobante' => $tipo, 'id_local' => $id_local, 'serie_nota' => $serie, 'estado' => 1, 'contingencia' => 0])->max('numero_nota');
if ($num == null) {
$num = 0;
}
return ['numero' => $num + 1, 'serie' => $serie, 'nombre' => $serie.'-'.($num+1)];
}
public function detalles($id)
{
$data = Nota::with(['local', 'venta', 'usuario', 'tipo_comprobante'])->where(['id_nota' => $id , 'estado' => 1])->first();
$empresa = Empresa::where(['id_empresa' => 1 , 'estado' => 1])->first();
return view('nota.detalles', [
'data' => $data,
'empresa' => $empresa,
'detalle_venta' => DetalleVenta::with(['producto'])->where(['id_venta' => $data->id_venta , 'estado' => 1])->get(),
]);
}
public function debito($id)
{
return view('nota.nuevo_debito', [
'data' => Venta::with(['local', 'cliente', 'usuario', 'tipo_comprobante'])->where(['id_venta' => $id])->first(),
]);
}
}