diff --git a/app/GrupoDeCompra.php b/app/GrupoDeCompra.php index 866ed62..33c8043 100644 --- a/app/GrupoDeCompra.php +++ b/app/GrupoDeCompra.php @@ -17,7 +17,34 @@ class GrupoDeCompra extends Model protected $table = 'grupos_de_compra'; protected $hidden = ['password']; - public function toggleDevoluciones() + /** + * @param $gdcs + * @param array $planilla + * @return array + */ + public static function getPlanilla($gdcs, array $planilla): array + { + $barrios = [""]; + foreach ($gdcs as $i => $gdc) { + $barrios[] = $gdc->nombre; + $productos_en_pedido = DB::table('pedidos_aprobados')->where('grupo_de_compra_id', $gdc->id)->get()->keyBy('producto_id'); + $pedidos = $gdc->pedidosAprobados(); + foreach ($productos_en_pedido as $id => $producto_pedido) { + $total = 0; + // Poner cantidad de cada producto para cada núcleo + foreach ($pedidos as $pedido) { + list($_, $_, $cantidad) = $gdc->agregarCantidad($pedido, $id, [], 0, 0); + $total = $total + $cantidad; + } + $fila = Producto::productosIdFila()[$id]; + $planilla[$fila][$i+1] = $total; + } + } + array_splice($planilla, 0, 0, array($barrios)); + return $planilla; + } + + public function toggleDevoluciones() { $this->devoluciones_habilitadas = !$this->devoluciones_habilitadas; $this->save(); @@ -85,7 +112,7 @@ class GrupoDeCompra extends Model throw new Exception('No hay bono de transporte'); } - private function totalPedidosSinBonos() { + private function totalPedidosSinBonos() { $total = 0; foreach ($this->pedidosAprobados() as $pedido) { $total += ceil($pedido->totalSinBonos()); @@ -166,9 +193,7 @@ class GrupoDeCompra extends Model $i = 1; // Poner cantidad de cada producto para cada núcleo foreach ($pedidos as $pedido) { - $producto = $pedido->productos()->find($id); - $records[$fila][$i] = $producto == NULL ? 0 : $producto["pivot"]["cantidad"]; - $i++; + list($records, $i, $_) = $this->agregarCantidad($pedido, $id, $records, $fila, $i); } } // Insertar lista de núcleos en la primera fila @@ -189,16 +214,21 @@ class GrupoDeCompra extends Model } } + public function agregarCantidad($pedido, $id, array $records, $fila, int $i): array + { + $producto = $pedido->productos()->find($id); + $cantidad = $producto == NULL ? 0 : $producto->pivot->cantidad; + $records[$fila][$i] = $cantidad; + $i++; + return array($records, $i, $cantidad); + } + public static function exportarTodosLosPedidosEnCSV(){ $gdcs = GrupoDeCompra::all(); $planilla = GrupoDeCompra::obtenerTemplateDeFilasVacias($gdcs->count()); - $barrios = [""]; - foreach ($gdcs as $gdc) { - $barrios[] = $gdc->nombre; - } - array_splice($planilla, 0, 0, array($barrios)); + $planilla = self::getPlanilla($gdcs, $planilla); - // Guardar en un archivo .csv + // Guardar en un archivo .csv try { $writer = Writer::createFromPath(resource_path('csv/exports/total-pedidos.csv'), 'w'); $writer->insertAll($planilla);