'min:0', 'ventaEspecial.pago_efectivo' => 'numeric', 'ventaEspecial.pago_tarjeta' => 'numeric', 'ventaEspecial.pago_vales' => 'numeric', 'ventaEspecial.precio_venta' => 'numeric', 'ventaEspecial.pago_transferencia' => 'numeric', 'ventaEspecial.estado_movimiento_id' => 'numeric', ]; public function render() { $ventas = Movimiento::where([['codigo','like','%'.$this->buscador.'%'],['estado_movimiento_id','=',VentaEspecialController::CODIGO_VENTA_ESPECIAL]])->paginate(10); return view('venta.venta-especial',[ 'ventas' => $ventas, ]); } public function updatingBuscador() { $this->resetPage(); } public function create() { $this->clearInputs(); $this->ventaEspecial = new Movimiento([ 'codigo' => 0, 'pago_efectivo' => 0, 'pago_tarjeta' => 0, 'pago_vales' => 0, 'pago_transferencia' => 0, 'precio_venta' => 0, 'estado_movimiento_id' => VentaEspecialController::CODIGO_VENTA_ESPECIAL, ]); $this->showModal(); } public function liquidar(Movimiento $venta) { $this->ventaAnterior = $venta; $this->ventaEspecial = new Movimiento([ 'codigo' => $venta->codigo, 'pago_efectivo' => 0, 'pago_tarjeta' => 0, 'pago_vales' => 0, 'pago_transferencia' => 0, 'precio_venta' => $this->ventaAnterior->faltante(), 'estado_movimiento_id' => VentaEspecialController::CODIGO_VENTA_ESPECIAL, ]); $this->total_pagar = $this->calcularTotalPagar($venta); $this->abonado = $venta->precio_venta - $this->total_pagar; $this->updated(); $this->showModalLiquidar(); } public function updated() { if(!isset($this->ventaAnterior) || !isset($this->ventaEspecial)) return; if($this->ventaEspecial->cambio()>0) { $this->cambio = $this->ventaEspecial->cambio(); $this->faltante = 0; } else { $this->faltante = $this->ventaEspecial->faltante(); $this->cambio = 0; } } public function calcularTotalPagar($venta) { return ($venta->precio_venta - $venta->pago_efectivo - $venta->pago_tarjeta - $venta->pago_vales - $venta->pago_transferencia); } public function save() { $this->validate([ 'ventaEspecial.pago_efectivo' => 'numeric', 'ventaEspecial.pago_tarjeta' => 'numeric', 'ventaEspecial.pago_vales' => 'numeric', 'ventaEspecial.pago_transferencia' => 'numeric', 'ventaEspecial.precio_venta' => 'numeric|gte:2', 'ventaEspecial.estado_movimiento_id' => 'numeric', ]); $this->ventaEspecial->user_id = Auth::user()->id; $this->ventaEspecial->save(); session()->flash('message',"La venta se ha registrado correctamente!"); $this->clearInputs(); $this->closeModal(); } public function saveLiquidar() { $this->validate([ 'ventaEspecial.pago_efectivo' => 'numeric', 'ventaEspecial.pago_tarjeta' => 'numeric', 'ventaEspecial.pago_vales' => 'numeric', 'ventaEspecial.pago_transferencia' => '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; } if($this->ventaEspecial->isTotalMayorCambio()) { session()->flash("error","Pago diferente al efectivo no pueden superar el total de venta."); return; } $this->ventaAnterior->is_liquidado = true; $this->ventaAnterior->save(); $this->ventaEspecial->user_id = Auth::user()->id; $this->ventaEspecial->is_liquidado = true; $this->ventaEspecial->ajusteCambio(); $this->ventaEspecial->precio_venta = $this->ventaAnterior->precio_venta; $this->ventaEspecial->save(); session()->flash('message',"La venta se ha registrado correctamente!"); $this->clearInputs(); $this->closeModalLiquidar(); } public function showModal() { $this->modal = true; } public function closeModal() { $this->modal = false; } public function showModalLiquidar() { $this->modalLiquidar = true; } public function closeModalLiquidar() { $this->modalLiquidar = false; } public function clearInputs() { $this->reset(); } }