forked from nathalie/pedi2
Agregado método y ruta para bajar pedidos barriales en pdf
This commit is contained in:
parent
b04e7e8f45
commit
8887a1970c
3 changed files with 74 additions and 11 deletions
|
@ -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');
|
||||
}
|
||||
}
|
||||
|
|
|
@ -27,6 +27,10 @@ class ComprasController
|
|||
return response()->download($file);
|
||||
}
|
||||
|
||||
public function pdf() {
|
||||
GrupoDeCompra::exportarPedidosBarrialesAPdf();
|
||||
}
|
||||
|
||||
public function show()
|
||||
{
|
||||
return view('auth/compras_login');
|
||||
|
|
|
@ -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');
|
||||
});
|
||||
|
|
Loading…
Add table
Reference in a new issue