This commit is contained in:
Alejandro Tasistro 2025-05-09 15:48:54 -03:00
parent f909a78e74
commit ead7483e19

View file

@ -12,34 +12,34 @@ class Subpedido extends Model
{ {
const COSTO_TRANSPORTE = 15; const COSTO_TRANSPORTE = 15;
public $timestamps = false; public $timestamps = false;
protected $fillable = ['grupo_de_compra_id', 'aprobado', 'nombre', 'devoluciones_total', 'devoluciones_notas']; protected $fillable = ['grupo_de_compra_id', 'aprobado', 'nombre', 'devoluciones_total', 'devoluciones_notas'];
public function productos() public function productos()
{ {
return $this->belongsToMany('App\Producto')->withPivot(["cantidad","total", "notas"]); return $this->belongsToMany('App\Producto')->withPivot(["cantidad", "total", "notas"]);
} }
//Bonos del MPS, Sororo, etc. NO devuelve bonos de transporte //Bonos del MPS, Sororo, etc. NO devuelve bonos de transporte
private function bonos() private function bonos()
{ {
return $this->productos()->where('bono',1); return $this->productos()->where('bono', 1);
} }
public function productosSinBonos() public function productosSinBonos()
{ {
return $this->productos()->where('bono',false); return $this->productos()->where('bono', false);
} }
public function grupoDeCompra() public function grupoDeCompra()
{ {
return $this->belongsTo('App\GrupoDeCompra'); return $this->belongsTo('App\GrupoDeCompra');
} }
//Permite que se apliquen los filtros al hacer una request (por ejemplo, de búsqueda) // Permite que se apliquen los filtros al hacer una request (por ejemplo, de búsqueda)
public function scopeFiltrar($query, FiltroDeSubpedido $filtros) public function scopeFiltrar($query, FiltroDeSubpedido $filtros)
{ {
return $filtros->aplicar($query); return $filtros->aplicar($query);
} }
public function total() public function total()
{ {
@ -102,36 +102,40 @@ class Subpedido extends Model
return TransporteHelper::cantidadTransporte($this->totalCentralesQuePaganTransporte()); return TransporteHelper::cantidadTransporte($this->totalCentralesQuePaganTransporte());
} }
//Actualiza el pedido, agregando o quitando del subpedido según sea necesario. Debe ser llamado desde el controlador de subpedidos, luego de validar que los parámetros $producto y $cantidad son correctos. También calcula el subtotal por producto. //Actualiza el pedido, agregando o quitando del subpedido según sea necesario. Debe ser llamado desde el controlador de subpedidos, luego de validar que los parámetros $producto y $cantidad son correctos. También calcula el subtotal por producto.
public function syncProducto(Producto $producto, Int $cantidad, string $notas) { public function syncProducto(Producto $producto, int $cantidad, string $notas)
if ($cantidad){ {
//si la cantidad es 1 o más se agrega el producto o actualiza la cantidad if ($cantidad) {
$this->productos()->syncWithoutDetaching([ //si la cantidad es 1 o más se agrega el producto o actualiza la cantidad
$producto->id => [ $this->productos()->syncWithoutDetaching([
'cantidad' => $cantidad, $producto->id => [
'total' => $cantidad * $producto->precio, 'cantidad' => $cantidad,
'notas' => $notas, 'total' => $cantidad * $producto->precio,
] 'notas' => $notas,
]); ]
]);
} else { } else {
//si la cantidad es 0, se elimina el producto del subpedido //si la cantidad es 0, se elimina el producto del subpedido
$this->productos()->detach($producto->id); $this->productos()->detach($producto->id);
} }
} }
public function toggleAprobacion(bool $aprobacion) { public function toggleAprobacion(bool $aprobacion)
$this->aprobado = $aprobacion; {
$this->save(); $this->aprobado = $aprobacion;
} $this->save();
}
public function generarHTML() { public function generarHTML()
$view = view("pdfgen.subpedido_tabla", ["subpedido" => $this]); {
return $view->render(); $view = view("pdfgen.subpedido_tabla", ["subpedido" => $this]);
} return $view->render();
}
public function syncDevoluciones(float $total, string $notas) { public function syncDevoluciones(float $total, string $notas)
$this->devoluciones_total = $total; {
$this->devoluciones_notas = $notas; $this->devoluciones_total = $total;
$this->save(); $this->devoluciones_notas = $notas;
} $this->save();
}
} }