forked from nathalie/pedi2
El csv del pedido incluye los bonos de transporte
This commit is contained in:
parent
3f34483fd5
commit
5c134989d2
|
@ -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);
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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),
|
||||
|
|
|
@ -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.
|
||||
|
|
Loading…
Reference in New Issue