'min:0', 'venta.pago_efectivo' => 'numeric', 'venta.pago_tarjeta' => 'numeric', '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', ]; public function updatingBuscador() { $this->resetPage(); } public function render() { $ventas = Movimiento::where([['codigo','like','%'.$this->buscador.'%'],['estado_movimiento_id','=',VentaController::CODIGO_VENTA]])->paginate(10); return view('venta.venta',[ 'ventas' => $ventas, 'estadoVentas' => EstadoMovimiento::all(), ]); } public function create() { $this->clearInputs(); $this->venta = new Movimiento([ 'codigo' => 0, 'precio_venta' => 0, 'pago_efectivo' => 0, 'pago_tarjeta' => 0, 'pago_vales' => 0, 'pago_transferencia' => 0, 'nota_credito' => 0, 'estado_movimiento_id' => 1, ]); $this->cambio; $this->showModal(); } public function updated() { if(!$this->modal) return; if($this->venta->cambio()>0) { $this->cambio = $this->venta->cambio(); $this->faltante = 0; } else { $this->faltante = $this->venta->faltante(); $this->cambio = 0; } } 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([ 'venta.pago_efectivo' => 'numeric', 'venta.precio_venta' => 'required|numeric|gte:1', 'venta.pago_tarjeta' => 'required|numeric', 'venta.pago_vales' => 'numeric', 'venta.pago_transferencia' => 'numeric', 'venta.nota_credito' => 'numeric', 'venta.estado_movimiento_id' => 'numeric', ]); if($this->venta->isTotalMayorCambio()) { session()->flash("error","Pago diferente al efectivo no pueden superar el total de venta."); 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; $this->venta->save(); session()->flash('message',"La venta se ha registrado correctamente!"); $this->clearInputs(); $this->closeModal(); } public function delete(Movimiento $venta) { if(auth()->user()->hasRole('admin')) { $venta->delete(); session()->flash('message',"La venta se ha eliminado del sistema."); } } public function showModal($modal = "modal") { $this->{$modal} = true; } public function closeModal($modal = "modal") { $this->{$modal} = false; } public function clearInputs() { $this->reset(); } }