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 League\Csv\Writer;
use App\Producto; use App\Producto;
use DB; use DB;
use League\Csv\Reader;
class GrupoDeCompra extends Model class GrupoDeCompra extends Model
{ {
@ -47,9 +48,34 @@ class GrupoDeCompra extends Model
$template[$fila] = [$productosIDNombre[$id], "0"]; $template[$fila] = [$productosIDNombre[$id], "0"];
$num_fila = $fila+1; $num_fila = $fila+1;
} }
$template[$this->obtenerFilaDeBonoTransporte()] = ["Bonos de transporte", 0];
return $template; 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(){ public function exportarPedidoEnCSV(){
$productos_en_pedido = DB::table('pedidos_aprobados')->where('grupo_de_compra_id',$this->id)->get()->keyBy('producto_id'); $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[$fila][1] = $producto_pedido->cantidad_pedida;
} }
$records[$this->obtenerFilaDeBonoTransporte()][1] = $this->calcularCantidadBDT();
try { try {
$writer = Writer::createFromPath(resource_path('csv/exports/'.$this->nombre.'.csv'), 'w'); $writer = Writer::createFromPath(resource_path('csv/exports/'.$this->nombre.'.csv'), 'w');
$writer->insertAll($records); $writer->insertAll($records);

View File

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

View File

@ -17,7 +17,7 @@ class SubpedidoResource extends JsonResource
return [ return [
'id' => $this->id, 'id' => $this->id,
'nombre' => $this->nombre, 'nombre' => $this->nombre,
'subtotal_productos' => number_format($this->getSubtotalProductos(),0), 'subtotal_productos' => number_format($this->totalSinBDT(),0),
'subtotal_bonos' => number_format($this->getSubtotalBonos(),0), 'subtotal_bonos' => number_format($this->getSubtotalBonos(),0),
'bonos_de_transporte' => $this->cantidadBDT(), 'bonos_de_transporte' => $this->cantidadBDT(),
'subtotal_bonos_de_transporte' => number_format($this->getSubtotalBDT(),0), '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 //Subtotal de dinero de productos del pedido, sin bonos ni transporte
public function getSubtotalProductos() public function totalSinBDT()
{ {
return $this->productosSinBonos()->sum('total'); return $this->productosSinBonos()->sum('total');
} }
@ -49,7 +49,7 @@ class Subpedido extends Model
//Cantidad de bonos de transporte //Cantidad de bonos de transporte
public function cantidadBDT() public function cantidadBDT()
{ {
return ceil($this->getSubtotalProductos() / 500); return ceil($this->totalSinBDT() / 500);
} }
//Subtotal de dinero de bonos de transporte //Subtotal de dinero de bonos de transporte
@ -66,7 +66,7 @@ class Subpedido extends Model
public function getTotal() 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. //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.