Agregada funcion que genera planilla de totales por barrio
This commit is contained in:
parent
f5f9838fc3
commit
d170f9e46e
|
@ -7,6 +7,8 @@ use Illuminate\Database\Eloquent\Model;
|
||||||
use Illuminate\Http\Request;
|
use Illuminate\Http\Request;
|
||||||
use Illuminate\Support\Facades\DB;
|
use Illuminate\Support\Facades\DB;
|
||||||
use Illuminate\Support\Str;
|
use Illuminate\Support\Str;
|
||||||
|
use League\Csv\CannotInsertRecord;
|
||||||
|
use League\Csv\Writer;
|
||||||
|
|
||||||
class Producto extends Model
|
class Producto extends Model
|
||||||
{
|
{
|
||||||
|
@ -58,7 +60,7 @@ class Producto extends Model
|
||||||
static public function cantidadesPorBarrio()
|
static public function cantidadesPorBarrio()
|
||||||
{
|
{
|
||||||
$barrios = DB::table('grupos_de_compra')
|
$barrios = DB::table('grupos_de_compra')
|
||||||
->where('nombre')
|
->where('nombre', '<>', 'PRUEBA')
|
||||||
->pluck('id', 'nombre');
|
->pluck('id', 'nombre');
|
||||||
|
|
||||||
$columnasBarrios = $barrios->map(function ($id, $nombre) {
|
$columnasBarrios = $barrios->map(function ($id, $nombre) {
|
||||||
|
@ -66,13 +68,49 @@ class Producto extends Model
|
||||||
})->toArray();
|
})->toArray();
|
||||||
|
|
||||||
return DB::table('productos')
|
return DB::table('productos')
|
||||||
|
->where('productos.nombre','not like','%barrial%')
|
||||||
->join('producto_subpedido', 'productos.id', '=', 'producto_subpedido.producto_id')
|
->join('producto_subpedido', 'productos.id', '=', 'producto_subpedido.producto_id')
|
||||||
->join('subpedidos', 'subpedidos.id', '=', 'producto_subpedido.subpedido_id')
|
->join('subpedidos', 'subpedidos.id', '=', 'producto_subpedido.subpedido_id')
|
||||||
->select(array_merge(
|
->select(array_merge(
|
||||||
['productos.nombre as Product'],
|
['productos.fila as fila'],
|
||||||
|
['productos.nombre as producto'],
|
||||||
$columnasBarrios
|
$columnasBarrios
|
||||||
))
|
))
|
||||||
->groupBy('productos.id', 'productos.nombre')
|
->groupBy('productos.fila','productos.id','productos.nombre')
|
||||||
|
->orderBy('productos.fila')
|
||||||
->get();
|
->get();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static public function planillaTotales() {
|
||||||
|
$headers = ['Producto'];
|
||||||
|
$barrios = DB::table('grupos_de_compra')->pluck('nombre')->toArray();
|
||||||
|
$headers = array_merge($headers, $barrios);
|
||||||
|
|
||||||
|
$cantidadesPorBarrio = Producto::cantidadesPorBarrio();
|
||||||
|
$planilla = [];
|
||||||
|
$ultimaFila = 1;
|
||||||
|
|
||||||
|
foreach ($cantidadesPorBarrio as $productoCantidades) {
|
||||||
|
$fila = $productoCantidades->fila;
|
||||||
|
while ($fila - $ultimaFila > 1) {
|
||||||
|
$producto = Producto::where('fila', $ultimaFila)->first();
|
||||||
|
$planilla[$ultimaFila] = [$producto ? $producto->nombre : ''];
|
||||||
|
$ultimaFila++;
|
||||||
|
}
|
||||||
|
$planilla[$fila] = [$productoCantidades->producto];
|
||||||
|
foreach ($barrios as $barrio) {
|
||||||
|
$planilla[$fila][] = $productoCantidades->$barrio ?? 0;
|
||||||
|
}
|
||||||
|
$ultimaFila = $fila;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Guardar en un archivo .csv
|
||||||
|
try {
|
||||||
|
$writer = Writer::createFromPath(resource_path('csv/exports/total-pedidos.csv'), 'w');
|
||||||
|
$writer->insertOne($headers);
|
||||||
|
$writer->insertAll($planilla);
|
||||||
|
} catch (CannotInsertRecord $e) {
|
||||||
|
var_export($e->getRecords());
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue