Compare commits
10 commits
f909a78e74
...
916f963e7b
Author | SHA1 | Date | |
---|---|---|---|
916f963e7b | |||
8887a1970c | |||
b04e7e8f45 | |||
b1caed8b15 | |||
ff0a17c776 | |||
9c3b328de0 | |||
d02505a70b | |||
9fcdc5a52a | |||
b1b424897c | |||
ead7483e19 |
10 changed files with 212 additions and 197 deletions
|
@ -2,12 +2,13 @@
|
||||||
|
|
||||||
namespace App;
|
namespace App;
|
||||||
|
|
||||||
|
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\Support\Facades\DB;
|
use Illuminate\Support\Facades\DB;
|
||||||
use League\Csv\CannotInsertRecord;
|
use Illuminate\Support\Facades\Log;
|
||||||
use League\Csv\Reader;
|
|
||||||
use League\Csv\Writer;
|
|
||||||
use Mpdf\Mpdf;
|
use Mpdf\Mpdf;
|
||||||
|
|
||||||
class GrupoDeCompra extends Model
|
class GrupoDeCompra extends Model
|
||||||
|
@ -17,9 +18,9 @@ class GrupoDeCompra extends Model
|
||||||
protected $table = 'grupos_de_compra';
|
protected $table = 'grupos_de_compra';
|
||||||
protected $hidden = ['password'];
|
protected $hidden = ['password'];
|
||||||
|
|
||||||
public function subpedidos()
|
public function subpedidos(): HasMany
|
||||||
{
|
{
|
||||||
return $this->hasMany('App\Subpedido');
|
return $this->hasMany(Subpedido::class);
|
||||||
}
|
}
|
||||||
|
|
||||||
public function toggleDevoluciones()
|
public function toggleDevoluciones()
|
||||||
|
@ -100,7 +101,7 @@ class GrupoDeCompra extends Model
|
||||||
return TransporteHelper::cantidadTransporte($this->totalCentralesQuePaganTransporte());
|
return TransporteHelper::cantidadTransporte($this->totalCentralesQuePaganTransporte());
|
||||||
}
|
}
|
||||||
|
|
||||||
public function exportarPlanillasAPdf()
|
public function exportarPedidosAPdf()
|
||||||
{
|
{
|
||||||
$subpedidos = $this->pedidosAprobados();
|
$subpedidos = $this->pedidosAprobados();
|
||||||
//generar pdf
|
//generar pdf
|
||||||
|
@ -116,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];
|
||||||
|
@ -139,69 +186,24 @@ class GrupoDeCompra extends Model
|
||||||
$template[$fila] = GrupoDeCompra::filaVacia($productosIDNombre[$id], $columns);
|
$template[$fila] = GrupoDeCompra::filaVacia($productosIDNombre[$id], $columns);
|
||||||
$num_fila = $fila + 1;
|
$num_fila = $fila + 1;
|
||||||
}
|
}
|
||||||
$template[GrupoDeCompra::obtenerFilaDeBonoTransporte()] = GrupoDeCompra::filaVacia("Bonos de transporte", $columns);
|
$template[TransporteHelper::filaTransporte()] = GrupoDeCompra::filaVacia("Bonos de transporte", $columns);
|
||||||
return $template;
|
return $template;
|
||||||
}
|
}
|
||||||
|
|
||||||
private static function obtenerFilaDeBonoTransporte()
|
|
||||||
{
|
|
||||||
$csv = Reader::createFromPath(resource_path('csv/productos.csv'), 'r');
|
|
||||||
$csv->setDelimiter("|");
|
|
||||||
$csv->setEnclosure("'");
|
|
||||||
$registros = $csv->getRecords();
|
|
||||||
|
|
||||||
foreach ($registros as $key => $registro)
|
|
||||||
if ($registro[0] == 'T') return $key;
|
|
||||||
|
|
||||||
throw new Exception('No hay bono de transporte');
|
|
||||||
}
|
|
||||||
|
|
||||||
private function totalPedidosSinBonos()
|
|
||||||
{
|
|
||||||
$total = 0;
|
|
||||||
foreach ($this->pedidosAprobados() as $pedido) {
|
|
||||||
$total += ceil($pedido->totalSinBonos());
|
|
||||||
}
|
|
||||||
return $total;
|
|
||||||
}
|
|
||||||
|
|
||||||
public function totalBonosBarriales()
|
|
||||||
{
|
|
||||||
$total = 0;
|
|
||||||
$bonoBarrial = Producto::where('nombre', 'LIKE', '%barrial%')->first();
|
|
||||||
if ($bonoBarrial) {
|
|
||||||
$pedidos = $this->pedidosAprobados();
|
|
||||||
foreach ($pedidos as $pedido) {
|
|
||||||
$bonoPedido = $pedido->productos()->find($bonoBarrial["id"]);
|
|
||||||
if ($bonoPedido) {
|
|
||||||
$total += $bonoPedido["pivot"]["total"];
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return $total;
|
|
||||||
}
|
|
||||||
|
|
||||||
public function exportarPedidoEnCSV()
|
public function exportarPedidoEnCSV()
|
||||||
{
|
{
|
||||||
$records = $this->generarColumnaCantidades();
|
$records = $this->generarColumnaCantidades();
|
||||||
try {
|
|
||||||
$writer = Writer::createFromPath(resource_path('csv/exports/' . $this->nombre . '.csv'), 'w');
|
CsvHelper::generarCsv('csv/exports/' . $this->nombre . '.csv', $records);
|
||||||
$writer->insertAll($records);
|
|
||||||
} catch (CannotInsertRecord $e) {
|
|
||||||
var_export($e->getRecords());
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
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 [];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -212,18 +214,18 @@ class GrupoDeCompra extends Model
|
||||||
$records[$fila][1] = $producto_pedido->cantidad_pedida;
|
$records[$fila][1] = $producto_pedido->cantidad_pedida;
|
||||||
}
|
}
|
||||||
|
|
||||||
$records[$this->obtenerFilaDeBonoTransporte()][1] = $this->cantidadTransporte();
|
$records[TransporteHelper::filaTransporte()][1] = $this->cantidadTransporte();
|
||||||
|
|
||||||
return $records;
|
return $records;
|
||||||
}
|
}
|
||||||
|
|
||||||
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;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -249,13 +251,7 @@ class GrupoDeCompra extends Model
|
||||||
}
|
}
|
||||||
array_splice($records, 0, 0, array($nucleos));
|
array_splice($records, 0, 0, array($nucleos));
|
||||||
|
|
||||||
// Guardar en un archivo .csv
|
CsvHelper::generarCsv('csv/exports/' . $this->nombre . '-completo.csv', $records);
|
||||||
try {
|
|
||||||
$writer = Writer::createFromPath(resource_path('csv/exports/' . $this->nombre . '-completo.csv'), 'w');
|
|
||||||
$writer->insertAll($records);
|
|
||||||
} catch (CannotInsertRecord $e) {
|
|
||||||
var_export($e->getRecords());
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public function agregarCantidad($pedido, $id, array $records, $fila, int $i): array
|
public function agregarCantidad($pedido, $id, array $records, $fila, int $i): array
|
||||||
|
@ -267,52 +263,38 @@ class GrupoDeCompra extends Model
|
||||||
return array($records, $i, $cantidad);
|
return array($records, $i, $cantidad);
|
||||||
}
|
}
|
||||||
|
|
||||||
static public function totalesParaTransportePorBarrio() {
|
public static function barriosMenosPrueba(): Builder
|
||||||
return DB::table('grupos_de_compra')
|
{
|
||||||
->leftJoin('subpedidos', 'grupos_de_compra.id', '=', 'subpedidos.grupo_de_compra_id')
|
return self::where('nombre', '<>', 'PRUEBA')
|
||||||
->leftJoin('producto_subpedido', 'subpedidos.id', '=', 'producto_subpedido.subpedido_id')
|
->orderBy('region')
|
||||||
->leftJoin('productos', 'producto_subpedido.producto_id', '=', 'productos.id')
|
->orderBy('nombre');
|
||||||
->where(function ($query) {
|
|
||||||
$query->whereNull('productos.categoria')
|
|
||||||
->orWhere('productos.categoria', 'not like', '%SUBSIDIADO%');
|
|
||||||
})
|
|
||||||
->where(function ($query) {
|
|
||||||
$query->whereNull('productos.bono')
|
|
||||||
->orWhere('productos.bono', 0);
|
|
||||||
})
|
|
||||||
->where(function ($query) {
|
|
||||||
$query->whereNull('subpedidos.aprobado')
|
|
||||||
->orWhere('subpedidos.aprobado', 1);
|
|
||||||
})
|
|
||||||
->select(
|
|
||||||
'grupos_de_compra.id as id',
|
|
||||||
'grupos_de_compra.nombre as barrio',
|
|
||||||
DB::raw('COALESCE(SUM(producto_subpedido.cantidad * productos.precio), 0) as total')
|
|
||||||
)
|
|
||||||
->groupBy('grupos_de_compra.id')
|
|
||||||
->get();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static function transportePorBarrio()
|
||||||
|
{
|
||||||
|
$result = [];
|
||||||
|
$barrios = GrupoDeCompra::barriosMenosPrueba()->get();
|
||||||
|
|
||||||
static public function planillaTransporte() {
|
foreach ($barrios as $barrio) {
|
||||||
$totalesPorBarrio = self::totalesParaTransportePorBarrio();
|
$result[] = $barrio->cantidadTransporte();
|
||||||
$barrios = [];
|
|
||||||
$bonosDeTransporte = [];
|
|
||||||
|
|
||||||
foreach ($totalesPorBarrio as $totalBarrio) {
|
|
||||||
$barrios[] = $totalBarrio->barrio;
|
|
||||||
$bonosDeTransporte[] = ceil($totalBarrio->total / 500);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
$planilla = [];
|
return $result;
|
||||||
$planilla[] = array_merge(['Barrio'], $barrios);
|
|
||||||
$planilla[] = array_merge(['Cant. bonos de transporte'], $bonosDeTransporte);
|
|
||||||
|
|
||||||
try {
|
|
||||||
$writer = Writer::createFromPath(resource_path('csv/exports/transporte-por-barrio.csv'), 'w');
|
|
||||||
$writer->insertAll($planilla);
|
|
||||||
} catch (CannotInsertRecord $e) {
|
|
||||||
var_export($e->getRecords());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @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');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -4,9 +4,11 @@ namespace App\Helpers;
|
||||||
|
|
||||||
use Illuminate\Support\Facades\Log;
|
use Illuminate\Support\Facades\Log;
|
||||||
use Iterator;
|
use Iterator;
|
||||||
|
use League\Csv\CannotInsertRecord;
|
||||||
use League\Csv\Exception;
|
use League\Csv\Exception;
|
||||||
use League\Csv\InvalidArgument;
|
use League\Csv\InvalidArgument;
|
||||||
use League\Csv\Reader;
|
use League\Csv\Reader;
|
||||||
|
use League\Csv\Writer;
|
||||||
|
|
||||||
class CsvHelper
|
class CsvHelper
|
||||||
{
|
{
|
||||||
|
@ -23,4 +25,16 @@ class CsvHelper
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static function generarCsv($filePath, $contenido, $headers = null): void
|
||||||
|
{
|
||||||
|
try {
|
||||||
|
$writer = Writer::createFromPath(resource_path($filePath), 'w');
|
||||||
|
if ($headers) {
|
||||||
|
$writer->insertOne($headers);
|
||||||
|
}
|
||||||
|
$writer->insertAll($contenido);
|
||||||
|
} catch (CannotInsertRecord $e) {
|
||||||
|
var_export($e->getRecords());
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -2,6 +2,10 @@
|
||||||
|
|
||||||
namespace App\Helpers;
|
namespace App\Helpers;
|
||||||
|
|
||||||
|
use App\CanastaLog;
|
||||||
|
use Exception;
|
||||||
|
use Illuminate\Support\Facades\Log;
|
||||||
|
|
||||||
class TransporteHelper
|
class TransporteHelper
|
||||||
{
|
{
|
||||||
const COSTO_TRANSPORTE = 15;
|
const COSTO_TRANSPORTE = 15;
|
||||||
|
@ -16,4 +20,20 @@ class TransporteHelper
|
||||||
{
|
{
|
||||||
return self::cantidadTransporte($monto) * self::COSTO_TRANSPORTE;
|
return self::cantidadTransporte($monto) * self::COSTO_TRANSPORTE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static function filaTransporte()
|
||||||
|
{
|
||||||
|
$ultimaCanasta = CanastaLog::where('descripcion', CanastaHelper::CANASTA_CARGADA)
|
||||||
|
->orderBy('created_at', 'desc')
|
||||||
|
->pluck('path')
|
||||||
|
->first();
|
||||||
|
|
||||||
|
$registros = CsvHelper::getRecords($ultimaCanasta);
|
||||||
|
|
||||||
|
foreach ($registros as $key => $registro)
|
||||||
|
if ($registro[CanastaHelper::TIPO] == 'T') return $key;
|
||||||
|
|
||||||
|
Log::error('No hay fila de tipo T en la planilla: ' . $ultimaCanasta);
|
||||||
|
return null;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -17,8 +17,8 @@ class AdminController extends Controller
|
||||||
return view('auth/admin_subpedidos');
|
return view('auth/admin_subpedidos');
|
||||||
}
|
}
|
||||||
|
|
||||||
public function exportarPlanillasAPdf(GrupoDeCompra $gdc) {
|
public function exportarPedidosAPdf(GrupoDeCompra $gdc) {
|
||||||
return $gdc->exportarPlanillasAPdf();
|
return $gdc->exportarPedidosAPdf();
|
||||||
}
|
}
|
||||||
|
|
||||||
public function exportarPedidoACSV(GrupoDeCompra $gdc) {
|
public function exportarPedidoACSV(GrupoDeCompra $gdc) {
|
||||||
|
|
|
@ -27,10 +27,8 @@ class ComprasController
|
||||||
return response()->download($file);
|
return response()->download($file);
|
||||||
}
|
}
|
||||||
|
|
||||||
public function descargarTransporte() {
|
public function pdf() {
|
||||||
GrupoDeCompra::planillaTransporte();
|
GrupoDeCompra::exportarPedidosBarrialesAPdf();
|
||||||
$file = resource_path('csv/exports/transporte-por-barrio.csv');
|
|
||||||
return response()->download($file);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public function show()
|
public function show()
|
||||||
|
|
|
@ -3,12 +3,13 @@
|
||||||
namespace App;
|
namespace App;
|
||||||
|
|
||||||
use App\Filtros\FiltroDeProducto;
|
use App\Filtros\FiltroDeProducto;
|
||||||
|
use App\Helpers\CsvHelper;
|
||||||
|
use App\Helpers\TransporteHelper;
|
||||||
use Illuminate\Database\Eloquent\Model;
|
use Illuminate\Database\Eloquent\Model;
|
||||||
use Illuminate\Http\Request;
|
use Illuminate\Http\Request;
|
||||||
|
use Illuminate\Support\Collection;
|
||||||
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
|
||||||
{
|
{
|
||||||
|
@ -59,8 +60,7 @@ class Producto extends Model
|
||||||
|
|
||||||
static public function cantidadesPorBarrio()
|
static public function cantidadesPorBarrio()
|
||||||
{
|
{
|
||||||
$barrios = DB::table('grupos_de_compra')
|
$barrios = GrupoDeCompra::barriosMenosPrueba()
|
||||||
->where('nombre', '<>', 'PRUEBA')
|
|
||||||
->pluck('id', 'nombre');
|
->pluck('id', 'nombre');
|
||||||
|
|
||||||
$columnasBarrios = $barrios->map(function ($id, $nombre) {
|
$columnasBarrios = $barrios->map(function ($id, $nombre) {
|
||||||
|
@ -81,23 +81,29 @@ class Producto extends Model
|
||||||
->get();
|
->get();
|
||||||
}
|
}
|
||||||
|
|
||||||
static public function planillaTotales() {
|
static public function planillaTotales()
|
||||||
|
{
|
||||||
$headers = ['Producto'];
|
$headers = ['Producto'];
|
||||||
$barrios = DB::table('grupos_de_compra')
|
$barrios = GrupoDeCompra::barriosMenosPrueba()
|
||||||
->where('nombre', '<>', 'PRUEBA')
|
|
||||||
->pluck('nombre')->toArray();
|
->pluck('nombre')->toArray();
|
||||||
$headers = array_merge($headers, $barrios);
|
$headers = array_merge($headers, $barrios);
|
||||||
|
|
||||||
$cantidadesPorBarrio = self::cantidadesPorBarrio();
|
$cantidadesPorBarrio = self::cantidadesPorBarrio();
|
||||||
|
$transportePorBarrio = GrupoDeCompra::transportePorBarrio();
|
||||||
$planilla = [];
|
$planilla = [];
|
||||||
$ultimaFila = 1;
|
$ultimaFila = 1;
|
||||||
|
$filaTransporte = TransporteHelper::filaTransporte();
|
||||||
|
|
||||||
foreach ($cantidadesPorBarrio as $productoCantidades) {
|
foreach ($cantidadesPorBarrio as $productoCantidades) {
|
||||||
$fila = $productoCantidades->fila;
|
$fila = $productoCantidades->fila;
|
||||||
while ($fila - $ultimaFila > 1) {
|
while ($fila - $ultimaFila > 1) {
|
||||||
$ultimaFila++;
|
$ultimaFila++;
|
||||||
|
if ($ultimaFila == $filaTransporte) {
|
||||||
|
$planilla[$ultimaFila] = ['Bono de transporte'];
|
||||||
|
} else {
|
||||||
$planilla[$ultimaFila] = ['---'];
|
$planilla[$ultimaFila] = ['---'];
|
||||||
}
|
}
|
||||||
|
}
|
||||||
$planilla[$fila] = [$productoCantidades->producto];
|
$planilla[$fila] = [$productoCantidades->producto];
|
||||||
foreach ($barrios as $barrio) {
|
foreach ($barrios as $barrio) {
|
||||||
$planilla[$fila][] = $productoCantidades->$barrio ?? 0;
|
$planilla[$fila][] = $productoCantidades->$barrio ?? 0;
|
||||||
|
@ -105,16 +111,14 @@ class Producto extends Model
|
||||||
$ultimaFila = $fila;
|
$ultimaFila = $fila;
|
||||||
}
|
}
|
||||||
|
|
||||||
try {
|
foreach ($transportePorBarrio as $key => $cantidad) {
|
||||||
$writer = Writer::createFromPath(resource_path('csv/exports/pedidos-por-barrio.csv'), 'w');
|
$planilla[$filaTransporte][] = $cantidad;
|
||||||
$writer->insertOne($headers);
|
|
||||||
$writer->insertAll($planilla);
|
|
||||||
} catch (CannotInsertRecord $e) {
|
|
||||||
var_export($e->getRecords());
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public static function notasPorBarrio(): \Illuminate\Support\Collection
|
CsvHelper::generarCsv('csv/exports/pedidos-por-barrio.csv', $planilla, $headers);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static function notasPorBarrio(): Collection
|
||||||
{
|
{
|
||||||
return DB::table('productos')
|
return DB::table('productos')
|
||||||
->join('producto_subpedido', 'productos.id', '=', 'producto_subpedido.producto_id')
|
->join('producto_subpedido', 'productos.id', '=', 'producto_subpedido.producto_id')
|
||||||
|
@ -132,8 +136,7 @@ class Producto extends Model
|
||||||
|
|
||||||
static public function planillaNotas() {
|
static public function planillaNotas() {
|
||||||
$headers = ['Producto'];
|
$headers = ['Producto'];
|
||||||
$barrios = DB::table('grupos_de_compra')
|
$barrios = GrupoDeCompra::barriosMenosPrueba()
|
||||||
->where('nombre', '<>', 'PRUEBA')
|
|
||||||
->pluck('nombre')->toArray();
|
->pluck('nombre')->toArray();
|
||||||
$headers = array_merge($headers, $barrios);
|
$headers = array_merge($headers, $barrios);
|
||||||
|
|
||||||
|
@ -149,12 +152,6 @@ class Producto extends Model
|
||||||
$planilla[] = $fila;
|
$planilla[] = $fila;
|
||||||
}
|
}
|
||||||
|
|
||||||
try {
|
CsvHelper::generarCsv('csv/exports/notas-por-barrio.csv', $planilla, $headers);
|
||||||
$writer = Writer::createFromPath(resource_path('csv/exports/notas-por-barrio.csv'), 'w');
|
|
||||||
$writer->insertOne($headers);
|
|
||||||
$writer->insertAll($planilla);
|
|
||||||
} catch (CannotInsertRecord $e) {
|
|
||||||
var_export($e->getRecords());
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -16,18 +16,18 @@ class Subpedido extends Model
|
||||||
|
|
||||||
public function productos()
|
public function productos()
|
||||||
{
|
{
|
||||||
return $this->belongsToMany('App\Producto')->withPivot(["cantidad","total", "notas"]);
|
return $this->belongsToMany('App\Producto')->withPivot(["cantidad", "total", "notas"]);
|
||||||
}
|
}
|
||||||
|
|
||||||
//Bonos del MPS, Sororo, etc. NO devuelve bonos de transporte
|
//Bonos del MPS, Sororo, etc. NO devuelve bonos de transporte
|
||||||
private function bonos()
|
private function bonos()
|
||||||
{
|
{
|
||||||
return $this->productos()->where('bono',1);
|
return $this->productos()->where('bono', 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
public function productosSinBonos()
|
public function productosSinBonos()
|
||||||
{
|
{
|
||||||
return $this->productos()->where('bono',false);
|
return $this->productos()->where('bono', false);
|
||||||
}
|
}
|
||||||
|
|
||||||
public function grupoDeCompra()
|
public function grupoDeCompra()
|
||||||
|
@ -35,7 +35,7 @@ class Subpedido extends Model
|
||||||
return $this->belongsTo('App\GrupoDeCompra');
|
return $this->belongsTo('App\GrupoDeCompra');
|
||||||
}
|
}
|
||||||
|
|
||||||
//Permite que se apliquen los filtros al hacer una request (por ejemplo, de búsqueda)
|
// Permite que se apliquen los filtros al hacer una request (por ejemplo, de búsqueda)
|
||||||
public function scopeFiltrar($query, FiltroDeSubpedido $filtros)
|
public function scopeFiltrar($query, FiltroDeSubpedido $filtros)
|
||||||
{
|
{
|
||||||
return $filtros->aplicar($query);
|
return $filtros->aplicar($query);
|
||||||
|
@ -103,8 +103,9 @@ class Subpedido extends Model
|
||||||
}
|
}
|
||||||
|
|
||||||
//Actualiza el pedido, agregando o quitando del subpedido según sea necesario. Debe ser llamado desde el controlador de subpedidos, luego de validar que los parámetros $producto y $cantidad son correctos. También calcula el subtotal por producto.
|
//Actualiza el pedido, agregando o quitando del subpedido según sea necesario. Debe ser llamado desde el controlador de subpedidos, luego de validar que los parámetros $producto y $cantidad son correctos. También calcula el subtotal por producto.
|
||||||
public function syncProducto(Producto $producto, Int $cantidad, string $notas) {
|
public function syncProducto(Producto $producto, int $cantidad, string $notas)
|
||||||
if ($cantidad){
|
{
|
||||||
|
if ($cantidad) {
|
||||||
//si la cantidad es 1 o más se agrega el producto o actualiza la cantidad
|
//si la cantidad es 1 o más se agrega el producto o actualiza la cantidad
|
||||||
$this->productos()->syncWithoutDetaching([
|
$this->productos()->syncWithoutDetaching([
|
||||||
$producto->id => [
|
$producto->id => [
|
||||||
|
@ -119,17 +120,20 @@ class Subpedido extends Model
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public function toggleAprobacion(bool $aprobacion) {
|
public function toggleAprobacion(bool $aprobacion)
|
||||||
|
{
|
||||||
$this->aprobado = $aprobacion;
|
$this->aprobado = $aprobacion;
|
||||||
$this->save();
|
$this->save();
|
||||||
}
|
}
|
||||||
|
|
||||||
public function generarHTML() {
|
public function generarHTML()
|
||||||
$view = view("pdfgen.subpedido_tabla", ["subpedido" => $this]);
|
{
|
||||||
|
$view = view("pdfgen.pedido_tabla", ["pedido" => $this]);
|
||||||
return $view->render();
|
return $view->render();
|
||||||
}
|
}
|
||||||
|
|
||||||
public function syncDevoluciones(float $total, string $notas) {
|
public function syncDevoluciones(float $total, string $notas)
|
||||||
|
{
|
||||||
$this->devoluciones_total = $total;
|
$this->devoluciones_total = $total;
|
||||||
$this->devoluciones_notas = $notas;
|
$this->devoluciones_notas = $notas;
|
||||||
$this->save();
|
$this->save();
|
||||||
|
|
|
@ -20,8 +20,8 @@
|
||||||
<a href="/compras/pedidos/notas" class="dropdown-item">
|
<a href="/compras/pedidos/notas" class="dropdown-item">
|
||||||
Notas por barrio
|
Notas por barrio
|
||||||
</a>
|
</a>
|
||||||
<a href="/compras/pedidos/transporte" class="dropdown-item">
|
<a href="/compras/pedidos/pdf" class="dropdown-item">
|
||||||
Transporte por barrio
|
Pedidos por barrio en pdf
|
||||||
</a>
|
</a>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -4,7 +4,7 @@
|
||||||
background: #CCC
|
background: #CCC
|
||||||
}
|
}
|
||||||
</style>
|
</style>
|
||||||
<h3>{{$subpedido->nombre}}</h3>
|
<h3>{{$pedido['nombre']}}</h3>
|
||||||
|
|
||||||
<table style="width: 100%">
|
<table style="width: 100%">
|
||||||
<tr>
|
<tr>
|
||||||
|
@ -25,18 +25,18 @@
|
||||||
</th>
|
</th>
|
||||||
</tr>
|
</tr>
|
||||||
|
|
||||||
@foreach($subpedido->productos as $producto)
|
@foreach($pedido['productos'] as $producto)
|
||||||
@if(!$producto->bono)
|
@if(!$producto['bono'])
|
||||||
|
|
||||||
<tr>
|
<tr>
|
||||||
<td>
|
<td>
|
||||||
{{ $producto->nombre }}
|
{{ $producto['nombre'] }}
|
||||||
@if($producto->pivot->notas)
|
@if($producto['pivot']['notas'])
|
||||||
<br /><b>Talle/Color:</b> {{ $producto->pivot->notas }}
|
<br /><b>Talle/Color:</b> {{ $producto['pivot']['notas'] }}
|
||||||
@endif
|
@endif
|
||||||
</td>
|
</td>
|
||||||
<td style="text-align: center">
|
<td style="text-align: center">
|
||||||
{{ $producto->pivot->cantidad }}
|
{{ $producto['pivot']['cantidad'] }}
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
@endif
|
@endif
|
|
@ -35,7 +35,7 @@ Route::get('/admin/obtener_sesion', function() {
|
||||||
Route::middleware(['auth', 'admin'])->group( function () {
|
Route::middleware(['auth', 'admin'])->group( function () {
|
||||||
Route::get('/admin/pedidos', 'AdminController@index')->name('admin_login.index');
|
Route::get('/admin/pedidos', 'AdminController@index')->name('admin_login.index');
|
||||||
|
|
||||||
Route::get('/admin/exportar-planillas-a-pdf/{gdc}', 'AdminController@exportarPlanillasAPdf');
|
Route::get('/admin/exportar-planillas-a-pdf/{gdc}', 'AdminController@exportarPedidosAPdf');
|
||||||
|
|
||||||
Route::get('/admin/exportar-pedido-a-csv/{gdc}', 'AdminController@exportarPedidoACSV');
|
Route::get('/admin/exportar-pedido-a-csv/{gdc}', 'AdminController@exportarPedidoACSV');
|
||||||
|
|
||||||
|
@ -82,7 +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/transporte', 'ComprasController@descargarTransporte')->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