Eliminados metodos no usados + nombres mas descriptivos
This commit is contained in:
parent
3b0ad4b4f0
commit
197230a4ba
|
@ -39,36 +39,20 @@ function crearPedido(string $nombre) : Pedido {
|
|||
return $this->pedidos()->create(['nombre' => $name]);
|
||||
}
|
||||
|
||||
function pedidosPagados() {
|
||||
return $this->pedidos()->where('pagado',true);
|
||||
}
|
||||
|
||||
function totalARecaudar() : float {
|
||||
return $this->calcularTotalPagados();
|
||||
}
|
||||
|
||||
function totalNoBarriales() : float {
|
||||
return $this->calcularTotalPagados(
|
||||
fn($p) => $p->total($p->productosNoBarriales())
|
||||
);
|
||||
}
|
||||
|
||||
function totalParaTransporte() : float {
|
||||
return $this->calcularTotalPagados(
|
||||
fn($p) => $p->total($p->productosConTransporte())
|
||||
);
|
||||
}
|
||||
|
||||
function totalATransferir() : float {
|
||||
return $this->totalNoBarriales() + TransporteUtils::total($this->totalParaTransporte());
|
||||
}
|
||||
|
||||
private function calcularTotalPagados(Closure $closure = null) : float {
|
||||
if (!$closure)
|
||||
$closure = fn($p) => $p->totalChismosa();
|
||||
return $this->pedidosPagados()->sum($closure);
|
||||
}
|
||||
|
||||
function totalATransferir() : float {
|
||||
return $this->calcularTotalPagados($p->totalATransferir());
|
||||
}
|
||||
|
||||
/**
|
||||
* Los productos que pertenecen al barrio.
|
||||
*/
|
||||
|
@ -112,8 +96,7 @@ private function armarColumnasPedido() : array {
|
|||
}
|
||||
}
|
||||
|
||||
private function cantidadPedida($productoId)
|
||||
{
|
||||
private function cantidadPedida($productoId) {
|
||||
$pedidos = $this->pedidos()
|
||||
->whereHas('productos',
|
||||
function ($query) use ($productoId) {
|
||||
|
@ -122,7 +105,7 @@ function ($query) use ($productoId) {
|
|||
|
||||
return $pedidos->sum(function ($pedido) use ($productoId) {
|
||||
return $pedido->productos
|
||||
->where('id', $productoId)
|
||||
->first()->pivot->cantidad ?? 0;});
|
||||
->find($productoId)
|
||||
->pivot->cantidad ?? 0;});
|
||||
}
|
||||
}
|
||||
|
|
|
@ -26,6 +26,18 @@ public function barrio(): BelongsTo {
|
|||
return $this->belongsTo(Barrio::class);
|
||||
}
|
||||
|
||||
function togglePagado() : bool {
|
||||
$this->pagado = !$this->pagado;
|
||||
$this->save();
|
||||
return $this->pagado;
|
||||
}
|
||||
|
||||
function toggleTerminado() : bool {
|
||||
$this->terminado = !$this->terminado;
|
||||
$this->save();
|
||||
return $this->terminado;
|
||||
}
|
||||
|
||||
/**
|
||||
* Los productos que pertenecen al pedido.
|
||||
*/
|
||||
|
@ -33,34 +45,28 @@ public function productos(): BelongsToMany {
|
|||
return $this->belongsToMany(Producto::class)->withPivot(['cantidad']);
|
||||
}
|
||||
|
||||
/**
|
||||
* Los productos del pedido que no aportan para el
|
||||
* bono de transporte
|
||||
*/
|
||||
function productosSinTransporte() {
|
||||
return $this->productos()->orWhere(['bono' => true, 'barrial' => true]);
|
||||
function agregarProducto(Producto $producto, int $cantidad) {
|
||||
$productoEnChismosa = $this->productos()->where('id', $producto->id)->first();
|
||||
if ($productoEnChismosa) {
|
||||
$productoEnChismosa->pivot->cantidad += $cantidad;
|
||||
$productoEnChismosa->save();
|
||||
return $productoEnChismosa;
|
||||
} else {
|
||||
$this->productos()->attach($producto, ['cantidad' => $cantidad]);
|
||||
return $this->productos()->where('id', $producto->id)->first();
|
||||
}
|
||||
}
|
||||
|
||||
function quitarProducto(Producto $producto) {
|
||||
$this->productos()->detach($producto);
|
||||
}
|
||||
|
||||
/**
|
||||
* Los productos del pedido que aportan para el
|
||||
* bono de transporte.
|
||||
* El total de los productos del pedido
|
||||
* sumado al total de los bonos de transporte
|
||||
*/
|
||||
function productosConTransporte() {
|
||||
return $this->productos()->where(['bono' => false, 'barrial' => false]);
|
||||
}
|
||||
|
||||
/**
|
||||
* Los productos no barriales del pedido.
|
||||
*/
|
||||
function productosNoBarriales() {
|
||||
return $this->productos()->where('barrial',false);
|
||||
}
|
||||
|
||||
/**
|
||||
* Los bonos del pedido.
|
||||
*/
|
||||
function bonos() {
|
||||
return $this->productos()->where('bono',true);
|
||||
function totalChismosa() : float {
|
||||
return $this->totalProductos() + $this->totalTransporte();
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -71,7 +77,7 @@ function bonos() {
|
|||
* Si la colección es null o no se pasa ningún parámetro
|
||||
* se toman todos los productos del pedido.
|
||||
*/
|
||||
function total($productos = null) : float {
|
||||
function totalProductos($productos = null) : float {
|
||||
if (!$productos)
|
||||
$productos = $this->productos();
|
||||
|
||||
|
@ -81,38 +87,12 @@ function total($productos = null) : float {
|
|||
/**
|
||||
* El total de bonos de transporte del pedido
|
||||
*/
|
||||
function totalTransporte() : int {
|
||||
if ($this->productos()->every(fn($prod) => !$prod->pagaTransporte()))
|
||||
return 0;
|
||||
|
||||
return TransporteUtils::total($this->productosConTransporte());
|
||||
function totalBonosDeTransporte() : int {
|
||||
return TransporteUtils::calcularTotal($this->productosConTransporte());
|
||||
}
|
||||
|
||||
/**
|
||||
* El total de los productos del pedido
|
||||
* sumado al total de los bonos de transporte
|
||||
*/
|
||||
function totalChismosa() : float {
|
||||
return $this->total() + $this->totalTransporte();
|
||||
}
|
||||
|
||||
function toggleConfirm() : bool {
|
||||
$this->confirmed = !$this->confirmed;
|
||||
$this->save();
|
||||
return $this->confirmed;
|
||||
}
|
||||
|
||||
function agregarProducto(Producto $producto, int $cantidad) {
|
||||
$productoEnChismosa = $this->productos()->where('id', $producto->id)->first();
|
||||
if ($productoEnChismosa) {
|
||||
$productoEnChismosa->pivot->cantidad += $cantidad;
|
||||
$productoEnChismosa->save();
|
||||
} else {
|
||||
$this->productos()->attach($producto, ['cantidad' => $cantidad]);
|
||||
}
|
||||
}
|
||||
|
||||
function quitarProducto(Producto $producto) {
|
||||
$this->productos()->detach($producto);
|
||||
function totalATransferir() : float {
|
||||
$productos = $this->productos()->where(['bono' => false, 'barrial' => false])->get();
|
||||
return $this->totalProductos($productos);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -48,17 +48,4 @@ public function barrio(): BelongsTo
|
|||
{
|
||||
return $this->belongsTo(Barrio::class);
|
||||
}
|
||||
|
||||
/**
|
||||
* Los productos centrales.
|
||||
*/
|
||||
public static function centrales() {
|
||||
return Producto::where([
|
||||
'barrial' => false,
|
||||
]);
|
||||
}
|
||||
|
||||
function pagaTransporte() : bool {
|
||||
return !$this->bono && !$this->barrial;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -13,7 +13,7 @@ static function cantidad(float $total) : int {
|
|||
return 0;
|
||||
}
|
||||
|
||||
static function total(float $total) : int {
|
||||
static function calcularTotal(float $total) : int {
|
||||
return cantidad($total) * COSTO_TRANSPORTE;
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue