funcion/arreglar-planillas #43
3 changed files with 74 additions and 11 deletions
|
@ -4,9 +4,11 @@ namespace App;
|
||||||
|
|
||||||
use App\Helpers\CsvHelper;
|
use App\Helpers\CsvHelper;
|
||||||
use App\Helpers\TransporteHelper;
|
use App\Helpers\TransporteHelper;
|
||||||
|
use Illuminate\Database\Eloquent\Builder;
|
||||||
use Illuminate\Database\Eloquent\Model;
|
use Illuminate\Database\Eloquent\Model;
|
||||||
use Illuminate\Database\Eloquent\Relations\HasMany;
|
use Illuminate\Database\Eloquent\Relations\HasMany;
|
||||||
use Illuminate\Support\Facades\DB;
|
use Illuminate\Support\Facades\DB;
|
||||||
|
use Illuminate\Support\Facades\Log;
|
||||||
use Mpdf\Mpdf;
|
use Mpdf\Mpdf;
|
||||||
|
|
||||||
class GrupoDeCompra extends Model
|
class GrupoDeCompra extends Model
|
||||||
|
@ -115,6 +117,52 @@ class GrupoDeCompra extends Model
|
||||||
$mpdf->Output($filename, "D");
|
$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
|
static function filaVacia(string $product, int $columns): array
|
||||||
{
|
{
|
||||||
$fila = [$product];
|
$fila = [$product];
|
||||||
|
@ -151,14 +199,11 @@ class GrupoDeCompra extends Model
|
||||||
|
|
||||||
public function generarColumnaCantidades()
|
public function generarColumnaCantidades()
|
||||||
{
|
{
|
||||||
$productos_en_pedido = DB::table('pedidos_aprobados')
|
$productos_en_pedido = $this->productosPedidos();
|
||||||
->where('grupo_de_compra_id', $this->id)
|
|
||||||
->get()
|
|
||||||
->keyBy('producto_id');
|
|
||||||
|
|
||||||
//si no hay pedidos aprobados, salir
|
//si no hay pedidos aprobados, salir
|
||||||
if ($productos_en_pedido->count() == 0) {
|
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 [];
|
return [];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -176,11 +221,11 @@ class GrupoDeCompra extends Model
|
||||||
|
|
||||||
public function exportarPedidoConNucleosEnCSV()
|
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
|
// si no hay pedidos aprobados, salir
|
||||||
if ($productos_en_pedido->count() == 0) {
|
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;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -218,10 +263,7 @@ class GrupoDeCompra extends Model
|
||||||
return array($records, $i, $cantidad);
|
return array($records, $i, $cantidad);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
public static function barriosMenosPrueba(): Builder
|
||||||
* @return \Illuminate\Database\Eloquent\Builder
|
|
||||||
*/
|
|
||||||
public static function barriosMenosPrueba(): \Illuminate\Database\Eloquent\Builder
|
|
||||||
{
|
{
|
||||||
return self::where('nombre', '<>', 'PRUEBA')
|
return self::where('nombre', '<>', 'PRUEBA')
|
||||||
->orderBy('region')
|
->orderBy('region')
|
||||||
|
@ -239,4 +281,20 @@ class GrupoDeCompra extends Model
|
||||||
|
|
||||||
return $result;
|
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);
|
return response()->download($file);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function pdf() {
|
||||||
|
GrupoDeCompra::exportarPedidosBarrialesAPdf();
|
||||||
|
}
|
||||||
|
|
||||||
public function show()
|
public function show()
|
||||||
{
|
{
|
||||||
return view('auth/compras_login');
|
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', 'ComprasController@indexPedidos')->name('compras.pedidos');
|
||||||
Route::get('/compras/pedidos/descargar', 'ComprasController@descargarPedidos')->name('compras.pedidos.descargar');
|
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/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::post('/compras/canasta', 'ComprasController@cargarCanasta')->name('compras.canasta');
|
||||||
Route::get('/compras/canasta/ejemplo', 'ComprasController@descargarCanastaEjemplo')->name('compras.canasta.ejemplo');
|
Route::get('/compras/canasta/ejemplo', 'ComprasController@descargarCanastaEjemplo')->name('compras.canasta.ejemplo');
|
||||||
});
|
});
|
||||||
|
|
Loading…
Add table
Reference in a new issue