Arreglado metodo para generar csv con totales de todos los barrios

This commit is contained in:
Alejandro Tasistro 2024-09-17 21:48:44 -03:00
parent 07289b01e9
commit 88e3532418
1 changed files with 41 additions and 11 deletions

View File

@ -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);