Implementacion de modulo de pedidos
This commit is contained in:
@@ -12,9 +12,9 @@ class CancelacionController extends Component
|
||||
use WithPagination;
|
||||
|
||||
const CODIGO_CANCELACION = 3;
|
||||
public $buscador = '' , $modal = false;
|
||||
public $buscador = '' , $modal = false, $modalDate = false;
|
||||
|
||||
public $cancelacion;
|
||||
public $cancelacion, $created_at;
|
||||
|
||||
protected $rules = [
|
||||
'cancelacion.codigo' => 'min:0',
|
||||
@@ -71,6 +71,26 @@ class CancelacionController extends Component
|
||||
$this->closeModal();
|
||||
}
|
||||
|
||||
public function editDate(Movimiento $movimiento)
|
||||
{
|
||||
$this->cancelacion = $movimiento;
|
||||
$this->showModal('modalDate');
|
||||
}
|
||||
|
||||
public function saveDate()
|
||||
{
|
||||
$this->validate([
|
||||
'created_at' => 'required',
|
||||
]);
|
||||
|
||||
$this->cancelacion->created_at = $this->created_at;
|
||||
$this->cancelacion->save();
|
||||
session()->flash('message',"La fecha ha sido cambiada correctamente.");
|
||||
|
||||
$this->clearInputs();
|
||||
$this->closeModal('modalDate');
|
||||
}
|
||||
|
||||
public function delete(Movimiento $venta)
|
||||
{
|
||||
|
||||
@@ -82,14 +102,14 @@ class CancelacionController extends Component
|
||||
}
|
||||
|
||||
|
||||
public function showModal()
|
||||
public function showModal($modal = "modal")
|
||||
{
|
||||
$this->modal = true;
|
||||
$this->{$modal} = true;
|
||||
}
|
||||
|
||||
public function closeModal()
|
||||
public function closeModal($modal = "modal")
|
||||
{
|
||||
$this->modal = false;
|
||||
$this->{$modal} = false;
|
||||
}
|
||||
|
||||
public function clearInputs()
|
||||
|
||||
@@ -58,7 +58,11 @@ class DashboardController extends Component
|
||||
Movimiento::where([
|
||||
['estado_movimiento_id','=', $tipo_movimiento],
|
||||
[DB::raw('DATE(created_at)'),'=',Carbon::now()->format('Y-m-d')],
|
||||
])->sum('pago_vales');
|
||||
])->sum('pago_vales') +
|
||||
Movimiento::where([
|
||||
['estado_movimiento_id','=', $tipo_movimiento],
|
||||
[DB::raw('DATE(created_at)'),'=',Carbon::now()->format('Y-m-d')],
|
||||
])->sum('pago_transferencia');
|
||||
}
|
||||
|
||||
public function validarCaja()
|
||||
|
||||
102
app/Http/Livewire/ImpresoraController.php
Normal file
102
app/Http/Livewire/ImpresoraController.php
Normal file
@@ -0,0 +1,102 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Livewire;
|
||||
|
||||
use App\Models\Impresora;
|
||||
use App\Models\User;
|
||||
use App\Printer\PrinterHandler;
|
||||
use Livewire\Component;
|
||||
use Mike42\Escpos\PrintConnectors\WindowsPrintConnector;
|
||||
use Mike42\Escpos\Printer;
|
||||
|
||||
class ImpresoraController extends Component
|
||||
{
|
||||
public $impresora, $impresoraUser;
|
||||
public $modal = false;
|
||||
|
||||
protected $rules = [
|
||||
'impresora.estacion' => 'required',
|
||||
'impresora.nombre_impresora' => 'required',
|
||||
'impresora.is_compartida' => 'required'
|
||||
];
|
||||
public function render()
|
||||
{
|
||||
$impresoraUser = auth()->user()->impresora_id;
|
||||
return view('impresora.impresora',[
|
||||
'impresoras' => Impresora::paginate(10),
|
||||
]);
|
||||
}
|
||||
|
||||
public function create()
|
||||
{
|
||||
$this->impresora = new Impresora();
|
||||
$this->impresora->is_compartida = false;
|
||||
$this->openModal();
|
||||
}
|
||||
|
||||
public function saveImpresora()
|
||||
{
|
||||
$user = User::findOrFail(auth()->user()->id);
|
||||
|
||||
$user->impresora_id = $this->impresoraUser;
|
||||
$user->save();
|
||||
session()->flash('messageImpresora','Impresora vinculada correctamente.');
|
||||
}
|
||||
|
||||
public function save()
|
||||
{
|
||||
$this->validate([
|
||||
'impresora.estacion' => 'required',
|
||||
]);
|
||||
|
||||
if($this->impresora->is_compartida)
|
||||
{
|
||||
$this->validate([
|
||||
'impresora.nombre_impresora' => 'required'
|
||||
]);
|
||||
}
|
||||
else if(!is_numeric($this->impresora->nombre_impresora))
|
||||
{
|
||||
$this->impresora->nombre_impresora = 9100;
|
||||
}
|
||||
|
||||
$this->impresora->save();
|
||||
|
||||
session()->flash('message','La impresora se guardo correctamente.');
|
||||
$this->closeModal();
|
||||
$this->clearInputs();
|
||||
}
|
||||
|
||||
public function imprimir(Impresora $impresora)
|
||||
{
|
||||
try {
|
||||
$printer = new PrinterHandler($impresora, $impresora->is_compartida?PrinterHandler::PRINTER_BY_SHARED:PrinterHandler::PRINTER_BY_IP);
|
||||
// 32 caracteres
|
||||
$printer->testPage();
|
||||
|
||||
session()->flash('message','Impresion enviada a: '.'smb://'.$impresora->estacion.'/'.$impresora->nombre_impresora);
|
||||
} catch (\Throwable $th) {
|
||||
session()->flash('error','No se pudo establecer conexión con la impresora, verifica configuración.'.$th->getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
public function delete(Impresora $impresora)
|
||||
{
|
||||
$impresora->delete();
|
||||
session()->flash('message','La impresora se ha eliminado correctamente.');
|
||||
}
|
||||
public function openModal()
|
||||
{
|
||||
$this->modal = true;
|
||||
}
|
||||
|
||||
public function closeModal()
|
||||
{
|
||||
$this->modal = false;
|
||||
}
|
||||
|
||||
public function clearInputs()
|
||||
{
|
||||
$this->reset();
|
||||
}
|
||||
}
|
||||
410
app/Http/Livewire/PedidoController.php
Normal file
410
app/Http/Livewire/PedidoController.php
Normal file
@@ -0,0 +1,410 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Livewire;
|
||||
|
||||
use App\Models\Impresora;
|
||||
use App\Models\Movimiento;
|
||||
use App\Models\Pedido;
|
||||
use App\Models\Producto;
|
||||
use App\Models\Ruta;
|
||||
use App\Printer\PrinterHandler;
|
||||
use Carbon\Carbon;
|
||||
use Illuminate\Support\Collection;
|
||||
use Livewire\Component;
|
||||
|
||||
class PedidoController extends Component
|
||||
{
|
||||
public $buscador ="", $buscadorProducto = "" ,$modal = false, $modalPedido = false;
|
||||
|
||||
public $pedido, $productos = [],$totalPagar = 0, $IVA = 0, $ventaEspecial;
|
||||
public $pago_efectivo, $cambio;
|
||||
public $totals = [];
|
||||
protected $rules =[
|
||||
'productos.*.linea' => 'required',
|
||||
'productos.*.codigo' => 'required',
|
||||
'productos.*.descripcion' => 'required',
|
||||
'productos.*.ruta_id' => 'required',
|
||||
'productos.*.cantidad' => 'required',
|
||||
'productos.*.precio_unitario' => 'required',
|
||||
'pedido.cuenta' => 'required',
|
||||
'pedido.folio_proveedor' => 'required',
|
||||
'pedido.telefono' => 'required',
|
||||
'pedido.year' => 'required',
|
||||
'pedido.marca' => 'required',
|
||||
'pedido.modelo' => 'required',
|
||||
'pedido.motor' => 'required',
|
||||
'pedido.user_id' => 'required',
|
||||
'pedido.comentarios' => 'required',
|
||||
'pedido.numero_remision' => 'required',
|
||||
'totals.*' => 'required',
|
||||
'ventaEspecial.codigo' => 'min:0',
|
||||
'ventaEspecial.pago_efectivo' => 'numeric',
|
||||
'ventaEspecial.pago_tarjeta' => 'numeric',
|
||||
'ventaEspecial.pago_vales' => 'numeric',
|
||||
'ventaEspecial.precio_venta' => 'numeric',
|
||||
'ventaEspecial.pago_transferencia' => 'numeric',
|
||||
'ventaEspecial.nota_credito' => 'numeric',
|
||||
'ventaEspecial.estado_movimiento_id' => 'numeric',
|
||||
];
|
||||
|
||||
protected $messages = [
|
||||
'productos.*.linea.required' => 'Campo obligatorio.',
|
||||
'productos.*.codigo.required' => 'Campo obligatorio.',
|
||||
'productos.*.descripcion.required' => 'Campo obligatorio.',
|
||||
'productos.*.ruta_id.required' => 'Campo obligatorio.',
|
||||
'productos.*.cantidad.required' => 'Campo obligatorio.',
|
||||
'productos.*.precio_unitario.required' => 'Campo obligatorio.',
|
||||
'productos.*.unidades.required' => 'Campo obligatorio.',
|
||||
|
||||
'productos.*.linea.max' => 'Campo debe ser menor a :max.',
|
||||
'productos.*.codigo.max' => 'Campo debe ser menor a :max.',
|
||||
'productos.*.descripcion.max' => 'Campo debe ser menor a :max.',
|
||||
'productos.*.ruta_id.max' => 'Campo debe ser menor a :max.',
|
||||
'productos.*.cantidad.max' => 'Campo debe ser menor a :max.',
|
||||
'productos.*.precio_unitario.max' => 'Campo debe ser menor a :max.',
|
||||
];
|
||||
|
||||
protected $listeners = ['agregar','save','saveArrivo','cerrarVenta','entregarVenta'];
|
||||
|
||||
public function render()
|
||||
{
|
||||
if($this->buscador != "")
|
||||
{
|
||||
$pedidos = Pedido::where('pedido','like','%'.$this->buscador.'%')
|
||||
->orderBy('is_venta_cerrada','asc')
|
||||
->orderBy('is_venta_entregada','asc')
|
||||
->orderBy('id','desc')
|
||||
->paginate(10);
|
||||
}
|
||||
else
|
||||
{
|
||||
$pedidos = Pedido::Where('user_id',"=",auth()->user()->id)
|
||||
->orderBy('is_venta_cerrada','ASC')
|
||||
->orderBy('is_venta_entregada','ASC')
|
||||
->orderBy('id','desc')
|
||||
->paginate(10);
|
||||
}
|
||||
return view('pedido.pedido',[
|
||||
// 'pedidos' => Pedido::where('pedido','like','%'.$this->buscador.'%')->orWhere('user_id',"=",auth()->user()->id)->orderBy('id','desc')->paginate(10),
|
||||
'pedidos' => $pedidos,
|
||||
'productosList' => Producto::where('descripcion','like','%'.$this->buscadorProducto.'%')
|
||||
->orWhere('codigo','like','%'.$this->buscadorProducto.'%')->paginate(10),
|
||||
'rutas' => Ruta::all(),
|
||||
]);
|
||||
}
|
||||
|
||||
public function create()
|
||||
{
|
||||
$this->reset();
|
||||
$this->pago_efectivo = 0;
|
||||
$this->cambio = 0;
|
||||
$this->pedido = new Pedido();
|
||||
$this->ventaEspecial = new Movimiento([
|
||||
'codigo' => 0,
|
||||
'pago_efectivo' => 0,
|
||||
'pago_tarjeta' => 0,
|
||||
'pago_vales' => 0,
|
||||
'pago_transferencia' => 0,
|
||||
'nota_credito' => 0,
|
||||
'precio_venta' => 0,
|
||||
'estado_movimiento_id' => VentaEspecialController::CODIGO_VENTA_ESPECIAL,
|
||||
|
||||
]);
|
||||
$this->showModal();
|
||||
}
|
||||
|
||||
public function agregar($id = '')
|
||||
{
|
||||
// if(auth()->user()->hasRole('admin'))
|
||||
$this->buscadorProducto = '';
|
||||
$this->productos[] = Producto::firstOrNew(['id' => $id]);
|
||||
$this->totals[] = 0;
|
||||
$this->emit('addProductEvent');
|
||||
}
|
||||
|
||||
public function agregarProductoArrivo($id = '')
|
||||
{
|
||||
if(auth()->user()->hasRole('admin'))
|
||||
{
|
||||
$this->buscadorProducto = '';
|
||||
$this->productos[] = Producto::firstOrNew(['id' => $id]);
|
||||
$this->totals[] = 0;
|
||||
$this->emit('addProductEvent');
|
||||
}
|
||||
}
|
||||
|
||||
public function total($id)
|
||||
{
|
||||
return ((key_exists('cantidad',$this->productos[$id]) && key_exists('precio_unitario',$this->productos[$id]) ) &&
|
||||
(is_numeric($this->productos[$id]['cantidad']) && is_numeric($this->productos[$id]['precio_unitario'])))
|
||||
?$this->productos[$id]['cantidad'] * $this->productos[$id]['precio_unitario']
|
||||
:'0';
|
||||
}
|
||||
|
||||
public function updatedPagoEfectivo($value)
|
||||
{
|
||||
if($value)
|
||||
{
|
||||
$this->cambio = $this->pago_efectivo - $this->ventaEspecial->pago_efectivo;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public function updatedProductos($value, $key)
|
||||
{
|
||||
$key = intval(explode('.',$key)[0]);
|
||||
$this->totals[$key] = $this->total($key);
|
||||
if($this->totals[$key] != 0)
|
||||
{
|
||||
$this->updateTotal($this->totals);
|
||||
}
|
||||
}
|
||||
|
||||
public function updateTotal($totals)
|
||||
{
|
||||
$total = array_sum(array_filter($totals,'is_numeric'));
|
||||
$this->totalPagar = $total/1.08;
|
||||
$this->IVA = $this->totalPagar*0.08;
|
||||
$this->totalPagar += $this->IVA;
|
||||
}
|
||||
|
||||
public function updatedModal()
|
||||
{
|
||||
if(!$this->modal){
|
||||
$this->clearInputs();
|
||||
}
|
||||
}
|
||||
|
||||
public function updatedModalPedido()
|
||||
{
|
||||
if(!$this->modalPedido){
|
||||
$this->clearInputs();
|
||||
}
|
||||
}
|
||||
|
||||
public function show(Pedido $pedido)
|
||||
{
|
||||
// dd($pedido->is_venta_cerrada,$pedido->is_venta_entregada);
|
||||
$this->totalPagar = 0;
|
||||
$this->IVA = 0;
|
||||
$this->pedido = $pedido;
|
||||
foreach ($this->pedido->productos as $producto) {
|
||||
$producto->unidades = $producto->pivot->unidades;
|
||||
$producto->precio_unitario = $producto->pivot->precio_unitario;
|
||||
$producto->producto_id = $producto->pivot->producto_id;
|
||||
$producto->is_arrivo = $producto->pivot->is_arrivo;
|
||||
$this->productos[] = $producto;
|
||||
$this->totalPagar+= ($producto->pivot->unidades*$producto->pivot->precio_unitario);
|
||||
}
|
||||
|
||||
$this->totalPagar/= 1.08;
|
||||
$this->IVA = $this->totalPagar*0.08;
|
||||
$this->totalPagar += $this->IVA;
|
||||
|
||||
$this->showModal('modalPedido');
|
||||
}
|
||||
public function save()
|
||||
{
|
||||
if(!$this->productos)
|
||||
{
|
||||
return;
|
||||
}
|
||||
$this->pedido->user_id = auth()->user()->id;
|
||||
$this->validate([
|
||||
'pedido.cuenta' => 'required',
|
||||
'pedido.telefono' => 'required',
|
||||
'pedido.year' => 'required',
|
||||
'pedido.marca' => 'required',
|
||||
'pedido.modelo' => 'required',
|
||||
'pedido.motor' => 'required',
|
||||
'productos.*.linea' => 'required|max:20',
|
||||
'productos.*.codigo' => 'required|max:20',
|
||||
'productos.*.descripcion' => 'required|max:100',
|
||||
'productos.*.ruta_id' => 'required',
|
||||
'productos.*.cantidad' => 'required|max:4',
|
||||
'productos.*.precio_unitario' => 'required|max:8',
|
||||
|
||||
'ventaEspecial.pago_efectivo' => 'numeric',
|
||||
'ventaEspecial.pago_tarjeta' => 'numeric',
|
||||
'ventaEspecial.pago_vales' => 'numeric',
|
||||
'ventaEspecial.pago_transferencia' => 'numeric',
|
||||
'ventaEspecial.nota_credito' => 'numeric',
|
||||
'ventaEspecial.estado_movimiento_id' => 'numeric',
|
||||
]);
|
||||
|
||||
$this->pedido->is_venta_cerrada = 0;
|
||||
$this->pedido->is_venta_entregada = 0;
|
||||
|
||||
$this->pedido->save();
|
||||
|
||||
$this->ventaEspecial->user_id = auth()->user()->id;
|
||||
$this->ventaEspecial->precio_venta = $this->totalPagar;
|
||||
$this->ventaEspecial->codigo = $this->pedido->pedido;
|
||||
$this->ventaEspecial->save();
|
||||
// $this->ventaEspecial->save();
|
||||
|
||||
foreach ($this->productos as $producto) {
|
||||
$productoCreated = Producto::firstOrCreate(
|
||||
['linea' => $producto['linea'], 'codigo' => $producto['codigo']],
|
||||
[
|
||||
'linea' => $producto['linea'],
|
||||
'codigo' => $producto['codigo'],
|
||||
'descripcion' => $producto['descripcion'],
|
||||
'ruta_id' => $producto['ruta_id'],
|
||||
'precio_unitario' => $producto['precio_unitario'],
|
||||
]
|
||||
);
|
||||
|
||||
$productoCreated->precio_unitario = $producto['precio_unitario'];
|
||||
$productoCreated->save();
|
||||
|
||||
$this->pedido->productos()->attach($productoCreated->id,['unidades' => $producto['cantidad'], 'precio_unitario' => $producto['precio_unitario'], 'is_arrivo' => false]);
|
||||
}
|
||||
$this->pedido->cambio = $this->cambio;
|
||||
// $this->imprimirTicket($this->pedido);
|
||||
// $this->imprimirTicket($this->pedido,false);
|
||||
session()->flash('message','El pedido se ha generado correctamente.');
|
||||
$this->closeModal();
|
||||
$this->clearInputs();
|
||||
}
|
||||
|
||||
public function entregarVenta()
|
||||
{
|
||||
$this->pedido->is_venta_entregada = true;
|
||||
$this->pedido->venta_entregada_user_id = auth()->user()->id;
|
||||
$this->pedido->venta_entregada_at = Carbon::now();
|
||||
$this->pedido->save();
|
||||
|
||||
$this->closeModal('modalPedido');
|
||||
session()->flash('message','El pedido se ha entregado correctamente.');
|
||||
$this->clearInputs();
|
||||
}
|
||||
|
||||
public function cerrarVenta()
|
||||
{
|
||||
if(!$this->pedido->is_venta_entregada)
|
||||
{
|
||||
session()->flash('error','No puedes cerrar la venta si no la has entregado.');
|
||||
$this->closeModal('modalPedido');
|
||||
return;
|
||||
}
|
||||
$this->pedido->is_venta_cerrada = true;
|
||||
$this->pedido->venta_cerrada_user_id = auth()->user()->id;
|
||||
$this->pedido->venta_cerrada_at = Carbon::now();
|
||||
$this->pedido->save();
|
||||
|
||||
$this->closeModal('modalPedido');
|
||||
session()->flash('message','El pedido se ha cerrado correctamente.');
|
||||
$this->clearInputs();
|
||||
}
|
||||
|
||||
public function saveArrivo()
|
||||
{
|
||||
if(auth()->user()->hasRole('admin'))
|
||||
{
|
||||
$this->validate([
|
||||
'pedido.cuenta' => 'required',
|
||||
'pedido.telefono' => 'required',
|
||||
'pedido.year' => 'required',
|
||||
'pedido.marca' => 'required',
|
||||
'pedido.modelo' => 'required',
|
||||
'pedido.motor' => 'required',
|
||||
'productos.*.linea' => 'required|max:20',
|
||||
'productos.*.codigo' => 'required|max:20',
|
||||
'productos.*.descripcion' => 'required|max:100',
|
||||
'productos.*.ruta_id' => 'required',
|
||||
'productos.*.unidades' => 'required|max:10',
|
||||
'productos.*.precio_unitario' => 'required|max:8',
|
||||
]);
|
||||
|
||||
foreach ($this->productos as $index => $producto) {
|
||||
$productoCreado = Producto::updateOrCreate(
|
||||
['id' => $producto['id']??""],
|
||||
[
|
||||
'linea' => $producto['linea'],
|
||||
'codigo' => $producto['codigo'],
|
||||
'descripcion' => $producto['descripcion'],
|
||||
'ruta_id' => $producto['ruta_id'],
|
||||
'precio_unitario' => $producto['precio_unitario'],
|
||||
]
|
||||
);
|
||||
$this->productos[$index]['producto_id'] = $productoCreado->id;
|
||||
$this->productos[$index]['id'] = $productoCreado->id;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// if(auth()->user()->hasRole('admin'))
|
||||
// {
|
||||
$this->validate([
|
||||
'pedido.cuenta' => 'required',
|
||||
'pedido.telefono' => 'required',
|
||||
'pedido.year' => 'required',
|
||||
]);
|
||||
|
||||
$this->pedido->save();
|
||||
$productosSync = [];
|
||||
foreach ($this->productos as $producto) {
|
||||
$productosSync[$producto['id']] = [
|
||||
'unidades' => $producto['unidades'],
|
||||
'precio_unitario' => $producto['precio_unitario'],
|
||||
'is_arrivo' => $producto['is_arrivo'] ?? 0
|
||||
];
|
||||
}
|
||||
$this->pedido->productos()->sync($productosSync);
|
||||
|
||||
session()->flash('message','El pedido se ha actualizado correctamente.');
|
||||
// }
|
||||
$this->closeModal('modalPedido');
|
||||
$this->clearInputs();
|
||||
}
|
||||
|
||||
public function delete(Pedido $pedido)
|
||||
{
|
||||
if(auth()->user()->hasRole('admin'))
|
||||
{
|
||||
$pedido->productos()->detach();
|
||||
$pedido->delete();
|
||||
session()->flash('message','El pedido se ha eliminado correctamente.');
|
||||
}
|
||||
}
|
||||
|
||||
public function eliminarProducto($id)
|
||||
{
|
||||
unset($this->productos[$id]);
|
||||
unset($this->totals[$id]);
|
||||
}
|
||||
|
||||
public function imprimirTicket(Pedido $pedido,$hashed = true)
|
||||
{
|
||||
// foreach ($pedido->productos as $producto) {
|
||||
// dd('Codigo:'.$producto->codigo.' desc:'.substr($producto->descripcion,0,11).' Cant:'.$producto->pivot->unidades.' Total:'.round($producto->pivot->unidades*$producto->pivot->precio_unitario/1.16,2));
|
||||
// // dd($producto->pivot);
|
||||
// }
|
||||
// try {
|
||||
$impresora = Impresora::findOrFail(auth()->user()->impresora_id);
|
||||
$printer = new PrinterHandler($impresora,$impresora->is_compartida?PrinterHandler::PRINTER_BY_SHARED:PrinterHandler::PRINTER_BY_IP);
|
||||
$printer->printPedido($pedido,$hashed);
|
||||
$printer->feed();
|
||||
$printer->cut();
|
||||
$printer->close();
|
||||
// } catch (\Throwable $th) {
|
||||
// throw $th;
|
||||
// }
|
||||
}
|
||||
|
||||
public function showModal($modal = 'modal')
|
||||
{
|
||||
$this->{$modal} = true;
|
||||
}
|
||||
|
||||
public function closeModal($modal = 'modal')
|
||||
{
|
||||
$this->{$modal} = false;
|
||||
}
|
||||
|
||||
public function clearInputs()
|
||||
{
|
||||
$this->reset();
|
||||
}
|
||||
}
|
||||
63
app/Http/Livewire/ReportePedidoController.php
Normal file
63
app/Http/Livewire/ReportePedidoController.php
Normal file
@@ -0,0 +1,63 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Livewire;
|
||||
|
||||
use App\Exports\PedidosExport;
|
||||
use App\Models\Pedido;
|
||||
use Carbon\Carbon;
|
||||
use Livewire\Component;
|
||||
use Maatwebsite\Excel\Facades\Excel;
|
||||
|
||||
class ReportePedidoController extends Component
|
||||
{
|
||||
public $fecha_inicio, $fecha_final;
|
||||
public $fn_inicio, $fn_final;
|
||||
public $is_venta_cerrada = "", $is_venta_entregada ="";
|
||||
|
||||
public function render()
|
||||
{
|
||||
$query = Pedido::query();
|
||||
|
||||
$query->when($this->is_venta_entregada, function ($query) {
|
||||
return $query->where('is_venta_entregada',"=",$this->is_venta_entregada);
|
||||
});
|
||||
$query->when($this->is_venta_cerrada, function ($query) {
|
||||
return $query->where('is_venta_cerrada',"=",$this->is_venta_cerrada);
|
||||
});
|
||||
|
||||
$query->when(($this->fn_inicio && $this->fn_final), function ($query) {
|
||||
return $query->whereBetween('created_at', [$this->fn_inicio, $this->fn_final]);
|
||||
});
|
||||
return view('pedido.reporte-pedido',[
|
||||
'pedidos' => $query->get(),
|
||||
]);
|
||||
}
|
||||
|
||||
public function updatedFechaInicio()
|
||||
{
|
||||
$this->fn_inicio= Carbon::parse($this->fecha_inicio)->startOfDay();
|
||||
}
|
||||
|
||||
public function updatedFechaFinal()
|
||||
{
|
||||
$this->fn_final= Carbon::parse($this->fecha_final)->endOfDay();
|
||||
}
|
||||
|
||||
public function export()
|
||||
{
|
||||
$query = Pedido::query();
|
||||
|
||||
$query->when($this->is_venta_entregada, function ($query) {
|
||||
return $query->where('is_venta_entregada',"=",$this->is_venta_entregada);
|
||||
});
|
||||
$query->when($this->is_venta_cerrada, function ($query) {
|
||||
return $query->where('is_venta_cerrada',"=",$this->is_venta_cerrada);
|
||||
});
|
||||
|
||||
$query->when(($this->fn_inicio && $this->fn_final), function ($query) {
|
||||
return $query->whereBetween('created_at', [$this->fn_inicio, $this->fn_final]);
|
||||
});
|
||||
|
||||
return Excel::download(new PedidosExport($this->fn_inicio, $this->fn_final,$this->is_venta_cerrada,$this->is_venta_entregada),'pedido-'.Carbon::now()->format('Y-m-d').'.xlsx');
|
||||
}
|
||||
}
|
||||
79
app/Http/Livewire/RutaController.php
Normal file
79
app/Http/Livewire/RutaController.php
Normal file
@@ -0,0 +1,79 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Livewire;
|
||||
|
||||
use App\Models\Ruta;
|
||||
use Livewire\Component;
|
||||
|
||||
class RutaController extends Component
|
||||
{
|
||||
public $ruta, $buscador, $modal = false;
|
||||
|
||||
protected $rules = [
|
||||
'ruta.ruta' => 'required',
|
||||
'ruta.prefijo' => 'required',
|
||||
];
|
||||
public function render()
|
||||
{
|
||||
$rutas = Ruta::where('ruta','like','%'.$this->buscador.'%')->paginate(10);
|
||||
return view('ruta.ruta',[
|
||||
'rutas' => $rutas,
|
||||
]);
|
||||
}
|
||||
|
||||
public function create()
|
||||
{
|
||||
$this->clearInputs();
|
||||
$this->ruta = new Ruta();
|
||||
$this->showModal();
|
||||
}
|
||||
|
||||
public function save()
|
||||
{
|
||||
$this->validate([
|
||||
'ruta.ruta' => 'required|max:50',
|
||||
'ruta.prefijo' => 'required|max:10',
|
||||
]);
|
||||
|
||||
$id = $this->ruta->id;
|
||||
|
||||
$this->ruta->save();
|
||||
|
||||
session()->flash('message',$id?"La ruta se a modificado correctamente.":"La ruta se ha registrado correctamente!");
|
||||
|
||||
$this->clearInputs();
|
||||
$this->closeModal();
|
||||
}
|
||||
|
||||
public function edit(Ruta $ruta)
|
||||
{
|
||||
$this->ruta = $ruta;
|
||||
$this->showModal();
|
||||
}
|
||||
|
||||
public function delete(Ruta $ruta)
|
||||
{
|
||||
|
||||
if(auth()->user()->hasRole('admin'))
|
||||
{
|
||||
$ruta->delete();
|
||||
session()->flash('message',"La ruta se ha eliminado del sistema.");
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public function showModal()
|
||||
{
|
||||
$this->modal = true;
|
||||
}
|
||||
|
||||
public function closeModal()
|
||||
{
|
||||
$this->modal = false;
|
||||
}
|
||||
|
||||
public function clearInputs()
|
||||
{
|
||||
$this->reset();
|
||||
}
|
||||
}
|
||||
@@ -58,7 +58,7 @@ class UserController extends Component
|
||||
}
|
||||
$this->validate([
|
||||
'user.name' => 'required|min:3',
|
||||
'password' => 'required|min:6'
|
||||
// 'password' => 'required|min:6'
|
||||
]);
|
||||
|
||||
$this->user->password = Hash::make($this->password);
|
||||
|
||||
@@ -14,8 +14,8 @@ class VentaController extends Component
|
||||
|
||||
const CODIGO_VENTA = 1;
|
||||
|
||||
public $buscador = '', $modal = false;
|
||||
public $venta, $cambio, $faltante;
|
||||
public $buscador = '', $modal = false, $modalDate = false;
|
||||
public $venta, $cambio, $faltante, $created_at;
|
||||
|
||||
protected $rules = [
|
||||
'venta.codigo' => 'min:0',
|
||||
@@ -24,6 +24,7 @@ class VentaController extends Component
|
||||
'venta.pago_vales' => 'numeric',
|
||||
'venta.precio_venta' => 'required|numeric|gte:1',
|
||||
'venta.pago_transferencia' => 'numeric',
|
||||
'venta.nota_credito' => 'numeric',
|
||||
'venta.estado_movimiento_id' => 'numeric',
|
||||
'venta.user_id',
|
||||
];
|
||||
@@ -52,6 +53,7 @@ class VentaController extends Component
|
||||
'pago_tarjeta' => 0,
|
||||
'pago_vales' => 0,
|
||||
'pago_transferencia' => 0,
|
||||
'nota_credito' => 0,
|
||||
'estado_movimiento_id' => 1,
|
||||
]);
|
||||
$this->cambio;
|
||||
@@ -74,6 +76,33 @@ class VentaController extends Component
|
||||
}
|
||||
}
|
||||
|
||||
public function calcularTotalPagar($venta)
|
||||
{
|
||||
return ((float)$venta->precio_venta - ((float)$venta->pago_efectivo +
|
||||
(float)$venta->pago_tarjeta + (float)$venta->pago_vales +
|
||||
(float)$venta->pago_transferencia + (float)$venta->nota_credito));
|
||||
}
|
||||
|
||||
public function editDate(Movimiento $movimiento)
|
||||
{
|
||||
$this->venta = $movimiento;
|
||||
$this->showModal('modalDate');
|
||||
}
|
||||
|
||||
public function saveDate()
|
||||
{
|
||||
$this->validate([
|
||||
'created_at' => 'required',
|
||||
]);
|
||||
|
||||
$this->venta->created_at = $this->created_at;
|
||||
$this->venta->save();
|
||||
session()->flash('message',"La fecha ha sido cambiada correctamente.");
|
||||
|
||||
$this->clearInputs();
|
||||
$this->closeModal('modalDate');
|
||||
}
|
||||
|
||||
public function save()
|
||||
{
|
||||
$this->validate([
|
||||
@@ -82,6 +111,7 @@ class VentaController extends Component
|
||||
'venta.pago_tarjeta' => 'required|numeric',
|
||||
'venta.pago_vales' => 'numeric',
|
||||
'venta.pago_transferencia' => 'numeric',
|
||||
'venta.nota_credito' => 'numeric',
|
||||
'venta.estado_movimiento_id' => 'numeric',
|
||||
]);
|
||||
|
||||
@@ -91,6 +121,12 @@ class VentaController extends Component
|
||||
return;
|
||||
}
|
||||
|
||||
if($this->calcularTotalPagar($this->venta)>0)
|
||||
{
|
||||
session()->flash("error","El pago debe ser igual o mayor a la venta.");
|
||||
return;
|
||||
}
|
||||
|
||||
$this->venta->ajusteCambio();
|
||||
|
||||
$this->venta->user_id = Auth::user()->id;
|
||||
@@ -112,15 +148,14 @@ class VentaController extends Component
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public function showModal()
|
||||
public function showModal($modal = "modal")
|
||||
{
|
||||
$this->modal = true;
|
||||
$this->{$modal} = true;
|
||||
}
|
||||
|
||||
public function closeModal()
|
||||
public function closeModal($modal = "modal")
|
||||
{
|
||||
$this->modal = false;
|
||||
$this->{$modal} = false;
|
||||
}
|
||||
|
||||
public function clearInputs()
|
||||
|
||||
@@ -12,7 +12,7 @@ class VentaEspecialController extends Component
|
||||
use WithPagination;
|
||||
|
||||
const CODIGO_VENTA_ESPECIAL = 2;
|
||||
public $buscador = '', $modal = false, $modalLiquidar;
|
||||
public $buscador = '', $modal = false, $modalDate = false, $created_at, $modalLiquidar;
|
||||
public $ventaEspecial, $total_pagar, $ventaAnterior, $abonado, $cambio, $faltante;
|
||||
|
||||
protected $rules = [
|
||||
@@ -22,6 +22,7 @@ class VentaEspecialController extends Component
|
||||
'ventaEspecial.pago_vales' => 'numeric',
|
||||
'ventaEspecial.precio_venta' => 'numeric',
|
||||
'ventaEspecial.pago_transferencia' => 'numeric',
|
||||
'ventaEspecial.nota_credito' => 'numeric',
|
||||
'ventaEspecial.estado_movimiento_id' => 'numeric',
|
||||
];
|
||||
|
||||
@@ -47,6 +48,7 @@ class VentaEspecialController extends Component
|
||||
'pago_tarjeta' => 0,
|
||||
'pago_vales' => 0,
|
||||
'pago_transferencia' => 0,
|
||||
'nota_credito' => 0,
|
||||
'precio_venta' => 0,
|
||||
'estado_movimiento_id' => VentaEspecialController::CODIGO_VENTA_ESPECIAL,
|
||||
|
||||
@@ -64,6 +66,7 @@ class VentaEspecialController extends Component
|
||||
'pago_tarjeta' => 0,
|
||||
'pago_vales' => 0,
|
||||
'pago_transferencia' => 0,
|
||||
'nota_credito' => 0,
|
||||
'precio_venta' => $this->ventaAnterior->faltante(),
|
||||
'estado_movimiento_id' => VentaEspecialController::CODIGO_VENTA_ESPECIAL,
|
||||
]);
|
||||
@@ -93,7 +96,9 @@ class VentaEspecialController extends Component
|
||||
|
||||
public function calcularTotalPagar($venta)
|
||||
{
|
||||
return ($venta->precio_venta - $venta->pago_efectivo - $venta->pago_tarjeta - $venta->pago_vales - $venta->pago_transferencia);
|
||||
return ((float)$venta->precio_venta - ((float)$venta->pago_efectivo +
|
||||
(float)$venta->pago_tarjeta + (float)$venta->pago_vales +
|
||||
(float)$venta->pago_transferencia + (float)$venta->nota_credito));
|
||||
}
|
||||
|
||||
|
||||
@@ -104,6 +109,7 @@ class VentaEspecialController extends Component
|
||||
'ventaEspecial.pago_tarjeta' => 'numeric',
|
||||
'ventaEspecial.pago_vales' => 'numeric',
|
||||
'ventaEspecial.pago_transferencia' => 'numeric',
|
||||
'ventaEspecial.nota_credito' => 'numeric',
|
||||
'ventaEspecial.precio_venta' => 'numeric|gte:2',
|
||||
'ventaEspecial.estado_movimiento_id' => 'numeric',
|
||||
]);
|
||||
@@ -124,10 +130,12 @@ class VentaEspecialController extends Component
|
||||
'ventaEspecial.pago_tarjeta' => 'numeric',
|
||||
'ventaEspecial.pago_vales' => 'numeric',
|
||||
'ventaEspecial.pago_transferencia' => 'numeric',
|
||||
'ventaEspecial.nota_credito' => 'numeric',
|
||||
'ventaEspecial.precio_venta' => 'numeric|gte:2',
|
||||
'ventaEspecial.estado_movimiento_id' => 'numeric',
|
||||
]);
|
||||
|
||||
|
||||
if(($this->calcularTotalPagar($this->ventaEspecial) - $this->ventaAnterior->totalAbono()) >0){
|
||||
session()->flash("message_abono","Debes liquidar la deuda para cerrarla.");
|
||||
return;
|
||||
@@ -137,7 +145,7 @@ class VentaEspecialController extends Component
|
||||
session()->flash("error","Pago diferente al efectivo no pueden superar el total de venta.");
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
$this->ventaAnterior->is_liquidado = true;
|
||||
$this->ventaAnterior->save();
|
||||
|
||||
@@ -156,6 +164,26 @@ class VentaEspecialController extends Component
|
||||
$this->closeModalLiquidar();
|
||||
}
|
||||
|
||||
public function editDate(Movimiento $movimiento)
|
||||
{
|
||||
$this->ventaEspecial = $movimiento;
|
||||
$this->showModal('modalDate');
|
||||
}
|
||||
|
||||
public function saveDate()
|
||||
{
|
||||
$this->validate([
|
||||
'created_at' => 'required',
|
||||
]);
|
||||
|
||||
$this->ventaEspecial->created_at = $this->created_at;
|
||||
$this->ventaEspecial->save();
|
||||
session()->flash('message',"La fecha ha sido cambiada correctamente.");
|
||||
|
||||
$this->clearInputs();
|
||||
$this->closeModal('modalDate');
|
||||
}
|
||||
|
||||
public function delete(Movimiento $venta)
|
||||
{
|
||||
|
||||
@@ -167,14 +195,14 @@ class VentaEspecialController extends Component
|
||||
}
|
||||
|
||||
|
||||
public function showModal()
|
||||
public function showModal($modal = "modal")
|
||||
{
|
||||
$this->modal = true;
|
||||
$this->{$modal} = true;
|
||||
}
|
||||
|
||||
public function closeModal()
|
||||
public function closeModal($modal = "modal")
|
||||
{
|
||||
$this->modal = false;
|
||||
$this->{$modal} = false;
|
||||
}
|
||||
|
||||
public function showModalLiquidar()
|
||||
|
||||
Reference in New Issue
Block a user