hasMany('App\Subpedido'); } public function pedidosAprobados() { return $this->subpedidos->where('aprobado',1); } public function exportarPlanillasAPdf() { $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"); } //Asume que los productos están gruadados en orden de fila private function obtenerTemplateDeFilasVacias(){ $productosFilaID = Producto::productosFilaID(); $productosIDNombre = Producto::productosIDNombre(); $num_fila = 1; $template = []; foreach ($productosFilaID as $fila => $id) { for ($i = $num_fila; $i < $fila; $i++) { $template[$i] = ["", "0"]; } $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'); //si no hay pedidos aprobados, salir if ($productos_en_pedido->count() == 0) { \Log::debug("El grupo de compra ". $this->nombre . " no tiene pedidos aprobados."); return; } $records = $this->obtenerTemplateDeFilasVacias(); $productos_id_fila = Producto::productosIdFila(); foreach ($productos_en_pedido as $id => $producto_pedido){ $fila = $productos_id_fila[$id]; $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); } catch (CannotInsertRecord $e) { var_export($e->getRecords()); } } public static function exportarTodosLosPedidosEnCSV(){ $gdcs=GrupoDeCompra::all(); foreach ($gdcs as $gdc){ $gdc->exportarPedidoEnCSV(); } } }