Agregado método y ruta para bajar pedidos barriales en pdf

This commit is contained in:
Alejandro Tasistro 2025-05-09 18:08:14 -03:00
parent b04e7e8f45
commit 8887a1970c
3 changed files with 74 additions and 11 deletions

View file

@ -4,9 +4,11 @@ namespace App;
use App\Helpers\CsvHelper;
use App\Helpers\TransporteHelper;
use Illuminate\Database\Eloquent\Builder;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Relations\HasMany;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Log;
use Mpdf\Mpdf;
class GrupoDeCompra extends Model
@ -115,6 +117,52 @@ class GrupoDeCompra extends Model
$mpdf->Output($filename, "D");
}
function pedidoParaPdf()
{
$productos = $this->productosPedidos(true);
$pedido = [];
$pedido['productos'] = [];
$pedido['nombre'] = $this->nombre;
foreach ($productos as $producto) {
$productoParaPdf = [];
$productoParaPdf['pivot'] = [];
$productoParaPdf['nombre'] = $producto->producto_nombre;
$productoParaPdf['pivot']['cantidad'] = $producto->cantidad_pedida;
$productoParaPdf['pivot']['notas'] = false;
$productoParaPdf['bono'] = false; // para que no lo saltee
$pedido['productos'][] = $productoParaPdf;
}
Log::debug($pedido);
return $pedido;
}
public function generarHTML()
{
$view = view("pdfgen.pedido_tabla", ["pedido" => $this->pedidoParaPdf()]);
return $view->render();
}
public static function exportarPedidosBarrialesAPdf()
{
$barrios = GrupoDeCompra::barriosMenosPrueba()
->get();
$mpdf = new Mpdf();
foreach ($barrios as $barrio) {
$tabla = $barrio->generarHTML();
$mpdf->WriteHTML($tabla);
$mpdf->AddPage();
}
$filename = 'pedidos_por_barrio.pdf';
// imprimir el pdf
$mpdf->Output($filename, "D");
}
static function filaVacia(string $product, int $columns): array
{
$fila = [$product];
@ -151,14 +199,11 @@ class GrupoDeCompra extends Model
public function generarColumnaCantidades()
{
$productos_en_pedido = DB::table('pedidos_aprobados')
->where('grupo_de_compra_id', $this->id)
->get()
->keyBy('producto_id');
$productos_en_pedido = $this->productosPedidos();
//si no hay pedidos aprobados, salir
if ($productos_en_pedido->count() == 0) {
\Log::debug("El grupo de compra " . $this->nombre . " no tiene pedidos aprobados.");
Log::debug("El grupo de compra " . $this->nombre . " no tiene pedidos aprobados.");
return [];
}
@ -176,11 +221,11 @@ class GrupoDeCompra extends Model
public function exportarPedidoConNucleosEnCSV()
{
$productos_en_pedido = DB::table('pedidos_aprobados')->where('grupo_de_compra_id', $this->id)->get()->keyBy('producto_id');
$productos_en_pedido = $this->productosPedidos();
// si no hay pedidos aprobados, salir
if ($productos_en_pedido->count() == 0) {
\Log::debug("El grupo de compra " . $this->nombre . " no tiene pedidos aprobados.");
Log::debug("El grupo de compra " . $this->nombre . " no tiene pedidos aprobados.");
return;
}
@ -218,10 +263,7 @@ class GrupoDeCompra extends Model
return array($records, $i, $cantidad);
}
/**
* @return \Illuminate\Database\Eloquent\Builder
*/
public static function barriosMenosPrueba(): \Illuminate\Database\Eloquent\Builder
public static function barriosMenosPrueba(): Builder
{
return self::where('nombre', '<>', 'PRUEBA')
->orderBy('region')
@ -239,4 +281,20 @@ class GrupoDeCompra extends Model
return $result;
}
/**
* @return \Illuminate\Support\Collection
*/
public function productosPedidos($excluirBarriales = false): \Illuminate\Support\Collection
{
$query = DB::table('pedidos_aprobados')
->where('grupo_de_compra_id', $this->id);
if ($excluirBarriales)
$query = $query->where('producto_nombre','NOT LIKE','%barrial%');
return $query
->get()
->keyBy('producto_id');
}
}

View file

@ -27,6 +27,10 @@ class ComprasController
return response()->download($file);
}
public function pdf() {
GrupoDeCompra::exportarPedidosBarrialesAPdf();
}
public function show()
{
return view('auth/compras_login');

View file

@ -82,6 +82,7 @@ Route::middleware(['compras'])->group( function() {
Route::get('/compras/pedidos', 'ComprasController@indexPedidos')->name('compras.pedidos');
Route::get('/compras/pedidos/descargar', 'ComprasController@descargarPedidos')->name('compras.pedidos.descargar');
Route::get('/compras/pedidos/notas', 'ComprasController@descargarNotas')->name('compras.pedidos.descargar');
Route::get('/compras/pedidos/pdf', 'ComprasController@pdf')->name('compras.pedidos.pdf');
Route::post('/compras/canasta', 'ComprasController@cargarCanasta')->name('compras.canasta');
Route::get('/compras/canasta/ejemplo', 'ComprasController@descargarCanastaEjemplo')->name('compras.canasta.ejemplo');
});