Agregados productos centrales y refactor de cantidad pedida de productos
This commit is contained in:
parent
5703e92f8d
commit
bc2d131f06
|
@ -91,7 +91,6 @@ function exportarPedidoACsv() {
|
|||
}
|
||||
|
||||
private function armarColumnasPedido() : array {
|
||||
$productosPedidos = $this->productosCantidadesPedidas();
|
||||
$columnaProductos = [];
|
||||
$filasVaciasAgregadas = false;
|
||||
|
||||
|
@ -100,8 +99,7 @@ private function armarColumnasPedido() : array {
|
|||
|
||||
if ($categoria->name == 'TRANSPORTE, BONOS Y FINANCIAMIENTO SORORO')
|
||||
$columnaProductos[] = ['name' => 'Bono de Transporte', 'cantidad' => TransporteUtils::cantidad($this->totalParaTransporte)];
|
||||
|
||||
if ($categoria->name == 'PRODUCTOS DE GESTIÓN MENSTRUAL')
|
||||
else if ($categoria->name == 'PRODUCTOS DE GESTIÓN MENSTRUAL')
|
||||
$columnaProductos[] = ['name' => '¿Cuántas copas quieren y pueden comprar en el grupo?', 'cantidad' => null];
|
||||
|
||||
foreach ($categoria->productos()->orderBy('id')->get() as $keyP => $producto) {
|
||||
|
@ -109,25 +107,22 @@ private function armarColumnasPedido() : array {
|
|||
$columnaProductos[] = ['name' => '¿Cuántas copas quieren adquirir a través del financiamiento sororo?', 'cantidad' => null];
|
||||
$filasVaciasAgregadas = true;
|
||||
}
|
||||
$columnaProductos[] = ['name' => $producto->name, 'cantidad' => $productosPedidos[$producto->id]];
|
||||
$columnaProductos[] = ['name' => $producto->name, 'cantidad' => $this->cantidadPedida($producto->id)];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private function productosCantidadesPedidas() : array {
|
||||
return $this->pedidos()
|
||||
->where('confirmed',true)
|
||||
->with('productos')
|
||||
->get()
|
||||
->flatMap(fn($pedido) => $pedido->productos->map(
|
||||
fn($producto) => [
|
||||
'producto_id' => $producto->id,
|
||||
'cantidad' => $producto->pivot->cantidad,
|
||||
]
|
||||
))
|
||||
->groupBy('producto_id')
|
||||
->map(fn($productosAgrupados) => [
|
||||
$productosAgrupados->first()['producto_id'] => $productosAgrupados->sum('cantidad'),
|
||||
]);
|
||||
private function cantidadPedida($productoId)
|
||||
{
|
||||
$pedidos = $this->pedidos()
|
||||
->whereHas('productos',
|
||||
function ($query) use ($productoId) {
|
||||
$query->where('producto_id', $productoId);})
|
||||
->get();
|
||||
|
||||
return $pedidos->sum(function ($pedido) use ($productoId) {
|
||||
return $pedido->productos
|
||||
->where('id', $productoId)
|
||||
->first()->pivot->cantidad ?? 0;});
|
||||
}
|
||||
}
|
||||
|
|
|
@ -49,6 +49,15 @@ 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;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue