Compare commits
4 commits
d526b944bd
...
250bfd8a33
Author | SHA1 | Date | |
---|---|---|---|
250bfd8a33 | |||
b8d1520c54 | |||
9aa5b390f8 | |||
2df7f6fc4b |
5 changed files with 139 additions and 28 deletions
72
app/Console/Commands/AgregarEsBonoAPedidosAprobados.php
Normal file
72
app/Console/Commands/AgregarEsBonoAPedidosAprobados.php
Normal file
|
@ -0,0 +1,72 @@
|
|||
<?php
|
||||
|
||||
namespace App\Console\Commands;
|
||||
|
||||
use Illuminate\Console\Command;
|
||||
use Illuminate\Support\Facades\DB;
|
||||
|
||||
class AgregarEsBonoAPedidosAprobados extends Command
|
||||
{
|
||||
/**
|
||||
* The name and signature of the console command.
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
protected $signature = 'command:AgregarEsBonoAPedidosAprobados';
|
||||
|
||||
/**
|
||||
* The console command description.
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
protected $description = 'Agrega "producto_bono" a la view PedidosAprobados';
|
||||
|
||||
/**
|
||||
* Create a new command instance.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function __construct()
|
||||
{
|
||||
parent::__construct();
|
||||
}
|
||||
|
||||
/**
|
||||
* Execute the console command.
|
||||
*
|
||||
* @return int
|
||||
*/
|
||||
public function handle(): int
|
||||
{
|
||||
DB::statement("
|
||||
ALTER VIEW pedidos_aprobados(
|
||||
grupo_de_compra_id,
|
||||
grupo_de_compra_nombre,
|
||||
grupo_de_compra_region,
|
||||
producto_id,
|
||||
producto_nombre,
|
||||
producto_precio,
|
||||
cantidad_pedida,
|
||||
total_por_producto,
|
||||
producto_es_bono
|
||||
) AS
|
||||
SELECT
|
||||
g.id as grupo_de_compra_id,
|
||||
g.nombre as grupo_de_compra_nombre,
|
||||
g.region as grupo_de_compra_region,
|
||||
pr.id AS producto_id,
|
||||
pr.nombre as producto_nombre,
|
||||
pr.precio as producto_precio,
|
||||
SUM(ps.cantidad) as cantidad_pedida,
|
||||
pr.precio*SUM(ps.cantidad) as total_por_producto,
|
||||
pr.bono
|
||||
FROM grupos_de_compra g
|
||||
JOIN subpedidos s ON (s.grupo_de_compra_id = g.id AND s.aprobado=1)
|
||||
JOIN producto_subpedido ps ON (ps.subpedido_id = s.id)
|
||||
JOIN productos pr ON (pr.id = ps.producto_id)
|
||||
GROUP BY
|
||||
g.id, g.nombre, pr.id, pr.nombre
|
||||
;");
|
||||
return 0;
|
||||
}
|
||||
}
|
|
@ -3,6 +3,7 @@
|
|||
namespace App;
|
||||
|
||||
use App\Helpers\CsvHelper;
|
||||
use App\Helpers\PdfHelper;
|
||||
use App\Helpers\TransporteHelper;
|
||||
use Illuminate\Database\Eloquent\Builder;
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
|
@ -105,22 +106,12 @@ class GrupoDeCompra extends Model
|
|||
public function exportarPedidosAPdf()
|
||||
{
|
||||
$subpedidos = $this->pedidosAprobados();
|
||||
//generar pdf
|
||||
$mpdf = new Mpdf();
|
||||
foreach ($subpedidos as $subpedido) {
|
||||
$tabla = $subpedido->generarHTML();
|
||||
// agregar la tabla al pdf en una nueva página
|
||||
$mpdf->WriteHTML($tabla);
|
||||
$mpdf->AddPage();
|
||||
}
|
||||
$filename = $this->nombre . '.pdf';
|
||||
// imprimir el pdf
|
||||
$mpdf->Output($filename, "D");
|
||||
PdfHelper::exportarPedidos($this->nombre . '.pdf', $subpedidos);
|
||||
}
|
||||
|
||||
function pedidoParaPdf(): array
|
||||
{
|
||||
$productos = $this->productosPedidos(true);
|
||||
$productos = $this->productosPedidos(true, true);
|
||||
$pedido = [];
|
||||
$pedido['productos'] = [];
|
||||
|
||||
|
@ -131,7 +122,7 @@ class GrupoDeCompra extends Model
|
|||
$productoParaPdf['nombre'] = $producto->producto_nombre;
|
||||
$productoParaPdf['pivot']['cantidad'] = $producto->cantidad_pedida;
|
||||
$productoParaPdf['pivot']['notas'] = false;
|
||||
$productoParaPdf['bono'] = false; // para que no lo saltee
|
||||
$productoParaPdf['bono'] = $producto->producto_es_bono;
|
||||
|
||||
$pedido['productos'][] = $productoParaPdf;
|
||||
}
|
||||
|
@ -147,19 +138,8 @@ class GrupoDeCompra extends Model
|
|||
|
||||
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");
|
||||
$barrios = GrupoDeCompra::barriosMenosPrueba()->get();
|
||||
PdfHelper::exportarPedidos('pedidos_por_barrio.pdf', $barrios);
|
||||
}
|
||||
|
||||
static function filaVacia(string $product, int $columns): array
|
||||
|
@ -284,13 +264,15 @@ class GrupoDeCompra extends Model
|
|||
/**
|
||||
* @return Collection
|
||||
*/
|
||||
public function productosPedidos($excluirBarriales = false): Collection
|
||||
public function productosPedidos($excluirBarriales = false, $excluirBonos = false): Collection
|
||||
{
|
||||
$query = DB::table('pedidos_aprobados')
|
||||
->where('grupo_de_compra_id', $this->id);
|
||||
|
||||
if ($excluirBarriales)
|
||||
$query = $query->where('producto_nombre','NOT LIKE','%barrial%');
|
||||
if ($excluirBonos)
|
||||
$query = $query->where('producto_es_bono',false);
|
||||
|
||||
return $query
|
||||
->get()
|
||||
|
|
|
@ -17,6 +17,7 @@ class CanastaHelper
|
|||
const TOTAL = "TOTAL";
|
||||
const ARCHIVO_SUBIDO = 'Archivo subido';
|
||||
const CANASTA_CARGADA = 'Canasta cargada';
|
||||
const TIPOS_BONO = ["B", "F", "BE"];
|
||||
|
||||
public static function guardarCanasta($data, $path): string {
|
||||
$nombre = $data->getClientOriginalName();
|
||||
|
@ -66,7 +67,7 @@ class CanastaHelper
|
|||
'nombre' => trim(str_replace('*', '',$registro['Producto'])),
|
||||
'precio' => $registro['Precio'],
|
||||
'proveedor_id' => self::obtenerProveedor($registro['Producto']),
|
||||
'bono' => $registro[self::TIPO] == "B",
|
||||
'bono' => in_array($registro[self::TIPO], self::TIPOS_BONO),
|
||||
'requiere_notas'=> $registro[self::TIPO] =="PTC",
|
||||
];
|
||||
}
|
||||
|
|
29
app/Helpers/PdfHelper.php
Normal file
29
app/Helpers/PdfHelper.php
Normal file
|
@ -0,0 +1,29 @@
|
|||
<?php
|
||||
|
||||
namespace App\Helpers;
|
||||
|
||||
use Mpdf\Mpdf;
|
||||
use Mpdf\MpdfException;
|
||||
|
||||
class PdfHelper
|
||||
{
|
||||
/**
|
||||
* Requiere que el segundo argumento tenga definida la función generarHTML()
|
||||
* para crear la tabla con los datos del pedido que se inserta en el pdf.
|
||||
*
|
||||
* @return void
|
||||
* @throws MpdfException
|
||||
*/
|
||||
public static function exportarPedidos($filepath, $pedidos)
|
||||
{
|
||||
$mpdf = new Mpdf();
|
||||
|
||||
foreach ($pedidos as $pedido) {
|
||||
$html = $pedido->generarHTML();
|
||||
$mpdf->WriteHTML($html);
|
||||
$mpdf->AddPage();
|
||||
}
|
||||
|
||||
$mpdf->Output($filepath, 'D');
|
||||
}
|
||||
}
|
|
@ -0,0 +1,27 @@
|
|||
<?php
|
||||
|
||||
use Illuminate\Database\Migrations\Migration;
|
||||
use Illuminate\Support\Facades\Artisan;
|
||||
|
||||
class CallAgregarEsBonoAPedidosAprobados extends Migration
|
||||
{
|
||||
/**
|
||||
* Run the migrations.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function up()
|
||||
{
|
||||
Artisan::call("command:AgregarEsBonoAPedidosAprobados");
|
||||
}
|
||||
|
||||
/**
|
||||
* Reverse the migrations.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function down()
|
||||
{
|
||||
//
|
||||
}
|
||||
}
|
Loading…
Add table
Reference in a new issue