Files
stradaautopartes/app/Models/Movimiento.php
2024-03-30 08:18:49 -07:00

113 lines
2.7 KiB
PHP

<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
class Movimiento extends Model
{
use HasFactory;
protected $fillable = [
'codigo',
'pago_efectivo',
'pago_tarjeta',
'pago_vales',
'pago_transferencia',
'precio_venta',
'nota_credito',
'estado_movimiento_id',
'user_id',
'is_liquidado',
'motivo',
];
public function estadoMovimiento()
{
return $this->belongsTo(EstadoMovimiento::class);
}
public function user()
{
return $this->belongsTo(User::class);
}
public function totalAbono()
{
return ((float)$this->pago_efectivo +
(float)$this->pago_tarjeta +
(float)$this->pago_vales +
(float)$this->pago_transferencia +
(float)$this->nota_credito);
}
public function cambio()
{
return (
((float)$this->pago_efectivo +
(float)$this->pago_tarjeta +
(float)$this->pago_vales +
(float)$this->nota_credito +
(float)$this->pago_transferencia) -
(float)$this->precio_venta
);
}
public function faltante()
{
return (
(float)$this->precio_venta -
((float)$this->pago_efectivo +
(float)$this->pago_tarjeta +
(float)$this->pago_vales +
(float)$this->pago_transferencia +
(float)$this->nota_credito)
);
}
public function ajusteCambio()
{
if(((float)$this->pago_efectivo) - $this->cambio()>=0)
{
$this->pago_efectivo-= $this->cambio();
}
}
/**
* Create a new Eloquent model instance.
*
* @return void
*/
public function isTotalMayorCambio() : bool
{
return ($this->pago_tarjeta + $this->pago_vales + $this->pago_transferencia + $this->nota_credito)>$this->precio_venta;
}
public function getAbonos()
{
$collecion = collect($this->getFillable());
$elements = [];
foreach ($collecion as $value) {
if(str_contains($value,"pago_"))
{
if($this->{$value} > 0)
{
$elements[] = [$this->{$value},str_replace("pago_","",$value)];
}
}
else if(str_contains($value,"nota_credito"))
{
if($this->{$value} > 0)
{
$elements[] = [$this->{$value},str_replace("nota_","Nota de ",$value)];
}
}
}
return $elements;
}
}