El csv del pedido incluye los bonos de transporte

This commit is contained in:
Ale 2022-10-14 19:14:24 -03:00
parent 3f34483fd5
commit 5c134989d2
4 changed files with 34 additions and 6 deletions

View File

@ -8,6 +8,7 @@ use League\Csv\CannotInsertRecord;
use League\Csv\Writer;
use App\Producto;
use DB;
use League\Csv\Reader;
class GrupoDeCompra extends Model
{
@ -47,9 +48,34 @@ class GrupoDeCompra extends Model
$template[$fila] = [$productosIDNombre[$id], "0"];
$num_fila = $fila+1;
}
$template[$this->obtenerFilaDeBonoTransporte()] = ["Bonos de transporte", 0];
return $template;
}
private 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+1;
throw new Exception('No hay bono de transporte');
}
private function totalPedidoSinBDT() {
$total = 0;
foreach ($this->subpedidos as $subpedido) {
$total += $subpedido->totalSinBDT();
}
return $total;
}
private function calcularCantidadBDT() {
return ceil($this->totalPedidoSinBDT() / 500);
}
public function exportarPedidoEnCSV(){
$productos_en_pedido = DB::table('pedidos_aprobados')->where('grupo_de_compra_id',$this->id)->get()->keyBy('producto_id');
@ -62,6 +88,8 @@ class GrupoDeCompra extends Model
$records[$fila][1] = $producto_pedido->cantidad_pedida;
}
$records[$this->obtenerFilaDeBonoTransporte()][1] = $this->calcularCantidadBDT();
try {
$writer = Writer::createFromPath(resource_path('csv/exports/'.$this->nombre.'.csv'), 'w');
$writer->insertAll($records);

View File

@ -6,7 +6,7 @@ use Illuminate\Support\Facades\DB;
class PedidoController extends Controller
{
public function generarTablas()
public static function generarTablas()
{
//GENERAR TABLA DE PEDIDOS APROBADOS
DB::unprepared("DROP VIEW if exists pedidos_aprobados;

View File

@ -17,7 +17,7 @@ class SubpedidoResource extends JsonResource
return [
'id' => $this->id,
'nombre' => $this->nombre,
'subtotal_productos' => number_format($this->getSubtotalProductos(),0),
'subtotal_productos' => number_format($this->totalSinBDT(),0),
'subtotal_bonos' => number_format($this->getSubtotalBonos(),0),
'bonos_de_transporte' => $this->cantidadBDT(),
'subtotal_bonos_de_transporte' => number_format($this->getSubtotalBDT(),0),

View File

@ -41,7 +41,7 @@ class Subpedido extends Model
}
//Subtotal de dinero de productos del pedido, sin bonos ni transporte
public function getSubtotalProductos()
public function totalSinBDT()
{
return $this->productosSinBonos()->sum('total');
}
@ -49,7 +49,7 @@ class Subpedido extends Model
//Cantidad de bonos de transporte
public function cantidadBDT()
{
return ceil($this->getSubtotalProductos() / 500);
return ceil($this->totalSinBDT() / 500);
}
//Subtotal de dinero de bonos de transporte
@ -66,7 +66,7 @@ class Subpedido extends Model
public function getTotal()
{
return $this->getSubtotalProductos() + $this->getSubtotalBDT() + $this->getSubtotalBonos();
return $this->totalSinBDT() + $this->getSubtotalBDT() + $this->getSubtotalBonos();
}
//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.