/** * ESCRIBE EN EL FICHERO lastConnection.yml LOS DATOS DE LA * ULTIMA CONEXIÓN QUE ESTAN EN $_POST */ public function saveCurrentParametersConnection() { $texto = sfYaml::dump($this->connection); $archivo = new Archivo("lastConnection.yml"); $archivo->write($texto); unset($archivo); }
private function leeArchivo($fileName) { $archivo = new Archivo($fileName); $detalle = array(); if ($archivo->open("r")) { set_time_limit(0); while (($linea = $archivo->readLine()) !== FALSE) { $resto = json_decode($linea[3], true); $metodo = $resto['METHOD']; switch ($metodo) { case 'GET': $controller = $resto[0]; $action = $resto[1]; $mas = $resto[2] . "/" . $resto[3]; break; case 'POST': $controller = $resto['controller']; $action = $resto['action']; $accion = $resto['accion']; $mas = print_r($resto[$resto['controller']], true); break; } $detalle[] = array('ip' => $linea[0], 'fecha' => $linea[1], 'usuario' => json_decode($linea[2], true), 'controller' => $controller, 'action' => $action, 'accion' => $accion, 'mas' => $mas, 'metodo' => $metodo); } $archivo->close(); } else { $this->values['errores'][] = "El archivo " . $fileName . " no existe o no tiene permisos de lectura"; } return $detalle; }
public function mostrarIndex() { $buscarArchivos = new Archivo(); $portfolio_1 = $buscarArchivos->buscarArchivosEnCarpeta("assets/img/portfolio/Producto_1/"); $portfolio_2 = $buscarArchivos->buscarArchivosEnCarpeta("assets/img/portfolio/Producto_2/"); $portfolio_3 = $buscarArchivos->buscarArchivosEnCarpeta("assets/img/portfolio/Producto_3/"); return View::make('index', array('portfolio_1' => $portfolio_1, 'portfolio_2' => $portfolio_2, 'portfolio_3' => $portfolio_3)); }
public function AdminFotos() { //Lo de las visitas hay que arreglarlo. No tiene que mostrar visitas esta view y si no las pongo me tira error $visitas = new Visitas(); $cant_visitas = count($visitas->All()); //Fotos Portfolio $buscarArchivos = new Archivo(); $portfolio_1 = $buscarArchivos->buscarArchivosEnCarpeta("assets/img/portfolio/Producto_1/"); return View::make('Admin.fotosCajaUno', array('cant_visitas' => $cant_visitas, 'todas_visitas' => $visitas->Cant_Mes(15), 'portfolio_1' => $portfolio_1)); }
public function borrar() { //Aca se manda a la funcion borrarItem de la clase Item //y se queda con la respuesta para redirigir cual sea el caso $respuesta = Archivo::borrar(Input::all()); return $respuesta; }
static function openCuaderno() { //CREAR FICHERO DESTINO self::$idRemesa = date('YmdHis'); $log = "Remesa" . self::$idRemesa; self::$fileName = Archivo::getTemporalFileName('remesas', 'txt'); //"docs/docs{$_SESSION['emp']}/remesas/$log"; $ok = self::$fp = fopen(self::$fileName, 'w'); if ($ok) { $reg = ""; self::$nRegistros = 2; self::$nOrdenantes = 0; self::$nDomiciliaciones = 0; self::$total = 0; $fecha = new Fecha(self::$parametros['fechaRemesa']); self::$parametros['fechaRemesa'] = $fecha->getddmmaa(); $fecha = new Fecha(self::$parametros['fechaCobro']); self::$parametros['fechaCobro'] = $fecha->getddmmaa(); unset($fecha); //CABECERA PRESENTADOR self::$parametros['cif'] = str_pad(self::$parametros['cif'], 9, " ", STR_PAD_RIGHT); self::$parametros['razonSocial'] = str_pad(self::$parametros['razonSocial'], 40, " ", STR_PAD_RIGHT); $reg = "5180" . self::$parametros['cif'] . "000" . self::$parametros['fechaRemesa'] . self::Vacio(6) . self::$parametros['razonSocial'] . self::Vacio(20) . self::$parametros['entidad'] . self::$parametros['oficina'] . self::Vacio(66); $ok = self::Escribe(self::$fp, $reg); } return $ok; }
/** * Importa familias desde fichero externo csv según * el formato de facturaplus */ public function ImportarAction() { $fileName = "docs/docs{$_SESSION['emp']}/tmp/familias.csv"; $archivo = new Archivo($fileName); $archivo->setColumnsDelimiter(";"); //$archivo->setColumnsEnclosure('"'); if ($archivo->open("r")) { set_time_limit(0); // Me salto la primera línea de cabecera $linea = $archivo->readLine(); while (($linea = $archivo->readLine()) !== FALSE) { print_r($linea); $fp = new Familias(); $fp->setFamilia(utf8_encode($linea[1])); $fp->setObservations($linea[0]); $fp->setInventario(1); $id = $fp->create(); if (!$id) { $nErrores += 1; print_r($fp->getErrores()); } else { $nAciertos += 1; } unset($fp); } $archivo->close(); } else { $this->values['errores'][] = "El fichero de importación " . $fileName . " no existe"; } echo "Aciertos: {$nAciertos}, Errores: {$nErrores}"; unset($archivo); }
/** * Store a newly created resource in storage. * * @return Response */ public function store() { // var_dump(Input::All()); // die; // // 'categorias_id' => 'exists:rubros,id' $rules = ['clasificado' => 'required', 'precio' => 'required', 'telefono' => 'required']; if (!Clasificado::isValid(Input::all(), $rules)) { return Redirect::back()->withInput()->withErrors(Clasificado::$errors); } $clasificado = new Clasificado(); $clasificado->users_id = Sentry::getUser()->id; $clasificado->operacion = Input::get('operacion'); $clasificado->clasificadoscategorias_id = Input::get('clasificadoscategorias_id'); $clasificado->clasificado = Input::get('clasificado'); $clasificado->precio = Input::get('precio'); $clasificado->telefono = Input::get('telefono'); $url_seo = Input::get('clasificado'); $url_seo = $this->url_slug($url_seo) . date('ljSFY'); $clasificado->url_seo = $url_seo; $clasificado->save(); $file = Input::file('file'); if ($file) { $filename = $file->getClientOriginalName(); $extension = $file->getClientOriginalExtension(); $destinationPath = public_path() . '/uploads/original/'; $destinationPath_big = public_path() . '/uploads/big/'; $destinationPath_crop = public_path() . '/uploads/crop/'; $upload_success = Input::file('file')->move($destinationPath, $filename); if ($upload_success) { $image = Image::make($destinationPath . $filename)->resize(800, null, true)->save($destinationPath_big . $filename); $image = Image::make($destinationPath . $filename)->resize(640, null, true)->crop(240, 160, true)->save($destinationPath_crop . $filename); File::delete($destinationPath . $filename); $arch = new Archivo(); $arch->archivo = $filename; $arch->descripcion = ""; $arch->padre_id = $clasificado->id; $arch->padre = "clasificado"; $arch->save(); } } // return Redirect::to('/clasificados/ver'); }
/** * Remove the specified resource from storage. * * @param int $id * @return Response */ public function destroy($id) { $archivo = Archivo::find($id); $articulos_id = $archivo->articulos_id; $filename = $archivo->archivo; $archivo = Archivo::find($id)->delete(); $destinationPath_big = public_path() . '/uploads/big/'; File::delete($destinationPath_big . $filename); return Redirect::to('/articulos/' . $articulos_id . '/archivos'); }
public function ImportarAction() { $fileName = "docs/docs{$_SESSION['emp']}/tmp/formasPago.csv"; $archivo = new Archivo($fileName); $archivo->setColumnsDelimiter(";"); //$archivo->setColumnsEnclosure('"'); if ($archivo->open("r")) { set_time_limit(0); while (($linea = $archivo->readLine()) !== FALSE) { $fp = new FormasPago(); $fp->setDescripcion(utf8_encode($linea[1])); $fp->setObservations($linea[0]); $fp->setNumeroVctos(1); $fp->setAnotarEnCaja(0); $id = $fp->create(); if (!$id) { $nErrores += 1; print_r($fp->getErrores()); } else { $nAciertos += 1; } unset($fp); } $archivo->close(); } else { $this->values['errores'][] = "El fichero de importación " . $fileName . " no existe"; } echo "Aciertos: {$nAciertos}, Errores: {$nErrores}"; unset($archivo); }
private function cargarLineas($idFirma, $idFamilia, $archivoCsv) { $nLinea = 0; $errores = array(); $items = array(); $articulo = new Articulos(); $csv = new Archivo($archivoCsv); $csv->setColumnsDelimiter(";"); if ($csv->open()) { $columnas = $csv->readline(); //print_r($columnas); while (($linea = $csv->readLine()) && $nLinea < 1000) { $nLinea++; //print_r($linea); foreach ($linea as $key => $value) { $items[$nLinea][$columnas[$key]] = $value; } } $csv->close(); } else { $errores[] = "No se ha podido abrir el archivo cargado"; } //print_r($items); unset($articulo); return array('titulos' => $columnas, 'items' => $items, 'errores' => $errores); }
public function postRunfileangular() { $fileId = Input::get('fileId'); $file = Archivo::find($fileId); $path = ""; if ($file->clientOriginalExtension == 'py') { $path = "python " . $file->rutaNormal; } else { $path = $file->rutaNormal; } exec($path, $output, $return_var); return Response::json(array('resultado' => $output, 'msg' => "se completo: " . $file->nombreNormal, 'status' => $return_var, 'path' => $path)); }
public function crearArchivo($asset, $content) { $file = pathinfo(static::$paths[$asset]); switch ($file['extension']) { case 'js': $path = static::$jsDirectory . $file['basename']; break; case 'css': default: $path = static::$cssDirectory . $file['basename']; break; } Archivo::crear($path, $content); }
/** * Importa artículos desde fichero externo csv según * el formato de facturaplus * * NOTA IMPORTANTE: SE HAN DE IMPORTAR LAS FAMILIAS ANTES. */ public function ImportarAction() { $fileName = "docs/docs{$_SESSION['emp']}/tmp/articulos.csv"; $archivo = new Archivo($fileName); $archivo->setColumnsDelimiter(";"); //$archivo->setColumnsEnclosure('"'); if ($archivo->open("r")) { set_time_limit(0); // Me salto la primera línea de cabecera $linea = $archivo->readLine(); while (($linea = $archivo->readLine()) !== FALSE) { //print_r($linea); $fam = new Familias(); $fam = $fam->find('Observations', trim($linea[2])); $idFamilia = $fam->getIDFamilia(); if (!$idFamilia) { $idFamilia = 1; } $arti = new Articulos(); $arti->setCodigo($linea[0]); $arti->setDescripcion(utf8_encode($linea[1])); $arti->setIDCategoria($idFamilia); $arti->setAllowsChildren($linea[4]); $arti->setInventario(1); $arti->setIDIva(1); $arti->setPmc(str_replace(",", ".", $linea[6])); $arti->setPvd(str_replace(",", ".", $linea[7])); $arti->setPvp(str_replace(",", ".", $linea[8])); $arti->setMargen(str_replace(",", ".", $linea[9])); $arti->setPeso(str_replace(",", ".", $linea[5])); $arti->setStockMaximo($linea[11]); $arti->setStockMinimo($linea[12]); $arti->setGarantia("S/F"); $idArti = $arti->create(); if (!$idArti) { $nErrores += 1; print_r($arti->getErrores()); } else { $nAciertos += 1; } unset($arti); } $archivo->close(); } else { $this->values['errores'][] = "El fichero de importación " . $fileName . " no existe"; } echo "Aciertos: {$nAciertos}, Errores: {$nErrores}"; unset($archivo); }
public static function borrar($input) { $respuesta = array(); $reglas = array('id' => array('integer')); $validator = Validator::make($input, $reglas); if ($validator->fails()) { $respuesta['mensaje'] = $validator; $respuesta['error'] = true; } else { $archivo = Archivo::find($input['id']); $archivo->fecha_baja = date("Y-m-d H:i:s"); $archivo->estado = 'B'; $archivo->usuario_id_baja = Auth::user()->id; $archivo->save(); $respuesta['mensaje'] = 'Archivo eliminado.'; $respuesta['error'] = false; $respuesta['data'] = $archivo; } return $respuesta; }
/** * Carga facturas emitidas desde un archivo de texto externo * Las columnas deben venir separadas por tabuladores * Las facturas se cargan en la sucursal en curso * * @param string $fileName El path completo del archivo a importar */ private function importarArchivo($fileName) { $archivo = new Archivo($fileName); if ($archivo->open("r")) { set_time_limit(0); // Lee contador $contador = new Contadores(); $contador = $contador->dameContador($_SESSION['suc'], 2); $idContador = $contador->getIDContador(); // Buscar la cuenta contable de ventas para la sucursal $sucursal = new Sucursales($_SESSION['suc']); $ctaVentas = $sucursal->getCtaContableVentas(); unset($sucursal); while (($linea = $archivo->readLine()) !== FALSE) { $fecha = explode("-", $linea[2]); $cliente = new Clientes(); $cliente = $cliente->find('CContable', $linea[3]); if ($cliente->getIDCliente() != '') { // Pongo los valores a cero en caso de que no venga nada for ($i = 6; $i <= 11; $i++) { if ($linea[$i] == '') { $linea[$i] = 0; } } $b1 = $linea[6]; $i1 = $linea[7]; $ci1 = round($b1 * $i1 / 100, 2); $r1 = $linea[8]; $cr1 = round($b1 * $r1 / 100, 2); $b2 = $linea[9]; $i2 = $linea[10]; $ci2 = round($b2 * $i2 / 100, 2); $r2 = $linea[11]; $cr2 = round($b2 * $r2 / 100, 2); $factura = new FemitidasCab(); $factura->setIDContador($idContador); if ($this->request['RespectarNumerosFactura'] == 'on') { $numeroFactura = $contador->getSerie() . (1200000 + $linea[1]); } else { $numeroFactura = $contador->asignaContador(); } $factura->setNumeroFactura($numeroFactura); $factura->setIDSucursal($_SESSION['suc']); $factura->setIDAgente($_SESSION['usuarioPortal']['Id']); $factura->setIDComercial(1); $factura->setFecha($fecha[0] . "/" . $fecha[1] . "/20" . $fecha[2]); $factura->setIDCliente($cliente->getIDCliente()); $factura->setImporte($b1 + $b2); $factura->setBaseImponible1($b1); $factura->setIva1($i1); $factura->setCuotaIva1($ci1); $factura->setRecargo1($r1); $factura->setCuotaRecargo1($cr1); $factura->setBaseImponible2($b2); $factura->setIva2($i2); $factura->setCuotaIva2($ci2); $factura->setRecargo2($r2); $factura->setCuotaRecargo2($cr2); $factura->setTotalBases($b1 + $b2); $factura->setTotalIva($ci1 + $ci2); $factura->setTotalRecargo($cr1 + $cr2); $factura->setTotal($b1 + $b2 + $ci1 + $ci2 + $cr1 + $cr2); $factura->setIDFP($this->request['IDFP']); $factura->setAsiento(9999); $factura->setCuentaVentas($ctaVentas); if ($factura->create()) { $factura->creaVctos(); } else { $this->values['errores'] = $factura->getErrores(); } } else { $this->values['errores'][] = "No existe el cliente " . $linea[3] . " " . $linea[5] . ". No se carga la factura " . $linea[1]; } } $archivo->close(); } else { $this->values['errores'][] = "El fichero de importación " . $fileName . " no existe"; } unset($archivo); }
private function cargarLineas($idPedido, $idFirma, $idCliente, $archivoCsv) { $nLinea = 0; $errores = array(); $csv = new Archivo($archivoCsv); $csv->setColumnsDelimiter(";"); if ($csv->open()) { $articulo = new Articulos(); while ($linea = $csv->readLine()) { $nLinea++; $codigo = trim($linea[0]); $unidades = trim($linea[1]); if ($codigo != '') { $filtro = "IdFirma='{$idFirma}' and (Codigo='{$codigo}' or CodigoEAN='{$codigo}')"; //echo $filtro,"\n"; $rows = $articulo->cargaCondicion("Id,IdFamilia,Codigo,Descripcion,Pvd", $filtro); $row = $rows[0]; if ($row['Id'] != '') { $articulo = new Articulos($row['Id']); $pedidoLinea = new PedidosLineas(); $pedidoLinea->setIdPedido($idPedido); $pedidoLinea->setIdFirma($idFirma); $pedidoLinea->setIdFamilia($row['IdFamilia']); $pedidoLinea->setIdCliente($idCliente); $pedidoLinea->setIdArticulo($row['Id']); $pedidoLinea->setDescripcion($row['Descripcion']); $pedidoLinea->setUnidades($unidades); $pedidoLinea->setPrecio($row['Pvd']); $pedidoLinea->setIva($articulo->getIdIva()->getIva()); $pedidoLinea->setImporte($unidades * $row['Pvd']); $id = $pedidoLinea->create(); if (!$id) { $errores[] = "Línea {$nLinea}: No se pudo crear la línea de pedido."; } } else { $errores[] = "Línea {$nLinea}: El artículo {$codigo} no existe o no pertenece a la firma del pedido."; } } } $csv->close(); unset($articulo); unset($pedidoLinea); // Recalcular los totales del pedido if (count($errores) == 0) { $pedido = new PedidosCab($idPedido); $pedido->save(); unset($pedido); } } else { $errores[] = "No se ha podido abrir el archivo cargado"; } return $errores; }
/** * Genera un documento pdf * * @param string $tipoDocumento El tipo de documento: albaranes, pedidos, etc. * @param array $idsDocumento Array con los ids de la entidad a imprimir. Ej. id de albaran, pedido, etc. * @param integer $formato El formato del documento (defecto=0) * @return string Nombre del archivo pdf generado con la ruta completa */ protected function generaPdf($tipoDocumento, array $idsDocumento, $formato = 0) { // Cargo en un array el archivo de configuracion // del tipo de documento y formato $config = DocumentoPdf::getConfigFormato($tipoDocumento, $formato); // LLamo al método específico de cada controlador para que obtenga // la información necesaria del documento. // Le paso el array con los ids de documentos (ej: id de albaran, pedido, factura, etc) $datos = $this->getDatosDocumento($idsDocumento); // CREAR EL DOCUMENTO---------------------------------------------------- $fichero = Archivo::getTemporalFileName(); if ($fichero) { $pdf = new DocumentoPdf($config['orientation'], $config['unit'], $config['format']); $pdf->generaDocumento($config, $datos['master'], $datos['detail'], $fichero); } return $fichero; }
protected function nuevoAviso() { set_time_limit(1); $Usuario = $this->checkAccess('aviso'); $ops = array('tipo' => 'string', 'descripcion' => array('string', 12, null), 'destacado' => 'boolean', 'emergente' => 'boolean', 'visible' => 'boolean', 'estado' => 'boolean', 'nombre' => array('string', 5, 45)); $type = filter_input(INPUT_POST, 'tipo'); if ($type === 'link') { $ops['nombre'] = 'url'; } else { if ($type !== 'img' && $type !== 'doc') { $this->responder(false, 'Tipo de aviso inválido'); } } $file; $ipts = $this->getFilterInputs('post', $ops); if ($type === 'doc') { $file = $this->getFileUpload('archivo', array('application/pdf')); } else { $file = $this->getFileUpload('archivo', array('image/jpeg', 'image/jpg', 'image/png')); } //Abrir coneccion en modo NO autoconfirmado $mysqli = $this->getMysqli(); $mysqli->autocommit(false); //Creando el archivo $archivo = new Archivo($mysqli); $archivo->nombre = $ipts['nombre']; $archivo->type = $type; $archivo->rutaArch = ''; if (!$archivo->set()) { //Insertar archivo $this->responder(false, 'No se pudo insertar archivo', $archivo->md_detalle, $ipts, $mysqli); } //Crear el nombre a partir del id del archivo $nombre = md5($archivo->id) . '.' . substr(strrchr($file['type'], "/"), 1); //Actualizar ruta del archivo $archivo->rutaArch = config::$path_avisos . $nombre; if (!$archivo->edit()) { $this->responder(false, 'No se pudo insertar archivo (ruta)', $archivo->md_detalle, null, $mysqli); } //Creando el aviso $aviso = new Aviso($mysqli); $aviso->texto = $ipts['descripcion']; $aviso->destacado = $ipts['destacado']; $aviso->emergente = $ipts['emergente']; $aviso->visible = $ipts['visible']; $aviso->estado = $ipts['estado']; $aviso->bloqueado = false; $aviso->idArchivo = $archivo->id; $aviso->idUsuario = $Usuario['id']; if (!$aviso->set()) { //Insertando el aviso $this->responder(false, "No se pudo guardar el aviso", $aviso->md_detalle, null, $mysqli); } $rutaNueva = $_SERVER['DOCUMENT_ROOT'] . config::getPath(false, config::$path_avisos . $nombre); if (!move_uploaded_file($file['tmp'], $rutaNueva)) { $this->responder(false, "No se pudo guardar archivo", 'Error al almacear el archivo subido', null, $mysqli); } if (!$mysqli->commit()) { $this->responder(false, "No se pudo confirmar cambios", $mysqli->error, null, $mysqli); } $this->responder(true, "Aviso creado!", "redirect", '/'); }
</ul> </div> </div> </nav> <div class="container"> <div class="jumbotron" id="space"> <h1>Memestime</h1> <p> <fb:login-button scope="public_profile,email" onlogin="******"> </fb:login-button> </p> </div> <div class="row"> <?php $archivos = new Archivo(); $cursor = $archivos->getArchivos(12); foreach ($cursor as $fila) { ?> <div class="col-sm-12 col-md-4 col-lg-4"> <div class="thumbnail"> <?php echo '<img class="img-responsive img-circle" src="http://' . $global->getFtpServer() . '/' . $fila['url'] . '">'; ?> <div class="caption"> <h3><?php echo implode(' ', $fila["nombreImagen"]); ?> </h3> </div> </div>
<?php require_once 'clases/Archivo.php'; require_once 'clases/Global.php'; require_once 'clases/eliminarContenido.php'; $global = new G(); $archivo = new Archivo(); $eliminar = new eliminarContenido(); $strRespuesta = ""; $cursor = $archivo->getArchivo($_GET['image']); $dato = array(); foreach ($cursor as $fila) { $dato = $fila; } if (isset($_POST['btnEliminar'])) { if ($eliminar->eliminarArchivo($_GET['image'], 'files/' . $dato['url'], $strRespuesta)) { echo $strRespuesta; header('location: index.php'); } else { echo $strRespuesta; } } include 'header.php'; head('Memestime', implode(' ', $dato['nombreImagen'])); ?> <head> <meta property="og:url" content="http://<?php echo $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI']; ?> " /> <meta property="og:type" content="Repositorio de memes" />
static function getCsv($idPedido) { $pedido = new PedidosCab($idPedido); $cabecera = '"Firma";"' . $pedido->getIdFirma()->getRazonSocial() . '"\\n'; $cabecera .= '"Cliente";"' . $pedido->getIdCliente()->getRazonSocial() . '"\\n'; $cabecera .= '"Dir. Entrega";"' . $pedido->getIdDirec()->getDireccion() . '"\\n'; $cabecera .= '"Fecha";"' . $pedido->getFecha() . '"\\n'; $cabecera .= '"S/Pedido";"' . $pedido->getSuPedido() . '"\\n'; $cabecera .= '"Observaciones";"' . $pedido->getObservations() . '"\\n'; $cabecera .= '"Forma de Pago";"' . $pedido->getFormaPago() . '"\\n'; $cabecera .= '"Agencia Tte.";"' . $pedido->getAgencia() . '"\\n\\n'; $lineas = '"Articulo";"Descripcion";"Unidades";"Precio";"Descuento1";"Descuento2";"Descuento3";"Importe"\\n'; foreach ($pedido->getLineas() as $linea) { $lineas .= '"' . $linea->getIdArticulo()->getCodigo() . '";' . '"' . $linea->getIdArticulo()->getDescripcion() . '";' . '"' . $linea->getUnidades() . '";' . '"' . $linea->getPrecio() . '";' . '"' . $linea->getDescuento1() . '";' . '"' . $linea->getDescuento2() . '";' . '"' . $linea->getDescuento3() . '";' . '"' . $linea->getImporte() . '"\\n'; } $csv = $lineas; $fileCsv = Archivo::getTemporalFileName("export", "csv"); $archivo = new Archivo($fileCsv); if (!$archivo->write($csv)) { $fileCsv = ""; } return $fileCsv; }
/** * Importar el contenido del archivo $filename, genera un archivo log * cuyo path devuelve. * * Comprueba la existencias de los lotes y ubicaciones indicados * Si no existe el lote, lo crea. * * @param string $fileName * @return string El path al archivo log generado en la importación */ private function importarArchivo($fileName) { set_time_limit(0); $archivoImportar = new Archivo($fileName); if ($archivoImportar->open("r")) { // Abrir en modo escritura el archivo de log. $usuario = new Agentes($_SESSION['usuarioPortal']['Id']); $pathArchivoLog = "docs/docs" . $_SESSION['emp'] . "/tmp/logImportarInventario.txt"; $archivoLog = new Archivo($pathArchivoLog); $archivoLog->open("w"); $archivoLog->writeLine("IMPORTACIÓN DE ARCHIVO DE INVENTARIO"); $archivoLog->writeLine("FECHA: " . date('d-m-Y H:i:s')); $archivoLog->writeLine("ARCHIVO: " . $archivoImportar->getBaseName()); $archivoLog->writeLine("USUARIO: " . $usuario->getNombre()); $archivoLog->writeLine(str_repeat("-", 50)); unset($usuario); $fila = 1; $fallidos = 0; $cargados = 0; $primeraLinea = $archivoImportar->readLine(); // Pongo los títulos con la primera letra en mayúscula y le doy // la vuelta al array $titulos = $primeraLinea; foreach ($titulos as $key => $value) { $titulos[$key] = ucwords(trim($value)); } $titulos = array_flip($titulos); while (($linea = $archivoImportar->readLine()) !== FALSE) { $fila++; $lineaInventario = new InventariosLineas(); $lineaInventario->setIDInventario($this->request['InventariosCab']['IDInventario']); // Buscar el id del articulo a partir del codigo $articulo = new Articulos(); $articulo = $articulo->find("Codigo", trim($linea[$titulos['Codigo']])); $lineaInventario->setIDArticulo($articulo->getIDArticulo()); // Buscar el id del lote a partir del nombre de lote $nombreLote = trim($linea[$titulos['Lote']]); $lote = new Lotes(); $rows = $lote->cargaCondicion("IDLote", "IDArticulo='{$articulo->getIDArticulo()}' and Lote='" . $nombreLote . "'"); $idLote = $rows[0]['IDLote']; // Si no existe el lote, lo creo. if ($idLote == '' and $nombreLote != '') { $lote->setIDArticulo($articulo->getIDArticulo()); $lote->setLote($nombreLote); $idLote = $lote->create(); } $lineaInventario->setIDLote($idLote); // Buscar la id de la ubicacion del almacen en curso $ubicacion = new AlmacenesMapas(); $rows = $ubicacion->cargaCondicion("IDUbicacion", "IDAlmacen='{$this->request['InventariosCab']['IDAlmacen']}' and Ubicacion='" . trim($linea[$titulos['Ubicacion']]) . "'"); $lineaInventario->setIDUbicacion($rows[0]['IDUbicacion']); // A los valores numéricos les cambio la coma decimal por el punto $lineaInventario->setStock(str_replace(",", ".", $linea[$titulos['Stock']])); $lineaInventario->setCajas(str_replace(",", ".", $linea[$titulos['Cajas']])); $lineaInventario->validaLogico(); if (count($lineaInventario->getErrores()) == 0) { $lineaInventario->create(); $cargados++; } else { // Si hay errores de validacion muestro la linea y los errores $fallidos++; $archivoLog->writeLine("Error en línea: " . $fila); foreach ($linea as $key => $value) { $string = "\t" . $primeraLinea[$key] . " : " . $value; $archivoLog->writeLine($string); } foreach ($lineaInventario->getErrores() as $error) { $archivoLog->writeLine("\t* " . $error); } } } $archivoLog->writeLine("" . str_repeat("-", 50)); $archivoLog->writeLine("Total registros : " . ($fila - 1)); $archivoLog->writeLine("Registros cargados: " . $cargados); $archivoLog->writeLine("Registros fallidos: " . $fallidos); $archivoImportar->close(); $archivoLog->close(); unset($archivoLog); } else { $resultado[] = "El archivo de importación no existe"; } unset($archivoImportar); return $pathArchivoLog; }
public function cambiarFotoAction($usuario_id) { $usuario_id = strip_tags(htmlspecialchars($usuario_id)); $usuario_id = intval($usuario_id); $usuario_id = filter_var($usuario_id, FILTER_VALIDATE_INT); if (!$usuario_id) { $this->app->redirect('/usuario/0/foto/'); } $usuario = Perfil::find($usuario_id); if (count($usuario) == 0) { $action = '/usuario/' . $usuario_id . '/foto/'; $this->app->redirect($action); } $file = $_FILES['file']; foreach ($file['error'] as $key => $error) { if ($error == 0) { $finfo = finfo_open(FILEINFO_MIME_TYPE); $mime = finfo_file($finfo, $file['tmp_name'][$key]); if (strcmp($mime, 'image/jpg') == 0) { $dirname = 'uploads/avatar/'; $filename = uniqid() . '.jpg'; $uploadfile = $dirname . $filename; if (move_uploaded_file($file['tmp_name'][$key], $uploadfile)) { $archivo = new Archivo(); $archivo->tipo_id = 4; $archivo->nombre = $filename; $archivo->peso = $file['size'][$key]; $archivo->extension = $file['type'][$key]; $archivo->save(); $usuario->fotoPerfil = $archivo->archivo_id; $usuario->save(); $_SESSION['upload'] = 1; } else { $action = '/usuario/' . $usuario->usuario_id . '/foto/?attempt=2'; $this->app->redirect($action); } } } else { $action = '/usuario/' . $usuario->usuario_id . '/foto/?attempt=3'; $this->app->redirect($action); } } }
/** * Genera un archivo pdf con el listado * @param array $parametros Array con los parámetros de configuración del listado * @param string $aditionalFilter * @return string $archivo El nombre completo (con la ruta) del archivo pdf generado */ public function getPdf($parametros, $aditionalFilter = '') { set_time_limit(0); // Orientación de página, unidad de medida y tipo de papel $orientation = strtoupper(trim($parametros['orientation'])); if ($orientation != 'P' and $orientation != 'L') { $orientation = 'P'; } $unit = strtolower(trim($parametros['unit'])); if ($unit != 'pt' and $unit != 'mm' and $unit != 'cm' and $unit != 'in') { $unit = 'mm'; } $format = strtolower(trim($parametros['format'])); if ($format != 'a4' and $format != 'a3' and $format != 'a5' and $format != 'letter' and $format != 'legal') { $format = 'A4'; } // Márgenes: top,right,bottom,left $margenes = explode(',', trim($parametros['margins'])); if (count($margenes) != 4) { $margenes = array('10', '10', '15', '10'); } // Tipo y tamaño de letra para el cuerpo del listado $bodyFont = explode(',', trim($parametros['body_font'])); if (count($bodyFont) != 3) { $bodyFont = array('Courier', '', '8'); } else { $bodyFont[0] = trim($bodyFont[0]); $bodyFont[1] = trim($bodyFont[1]); $bodyFont[2] = trim($bodyFont[2]); } // Altura de la línea. Por defecto 4 mm. $lineHeight = trim($parametros['line_height']); if ($lineHeight <= 0) { $lineHeight = 4; } // Construir la leyenda del filtro $leyendaFiltro = array(); if (is_array($this->filter['columnsSelected'])) { foreach ($this->filter['columnsSelected'] as $key => $column) { if ($this->filter['valuesSelected'][$key] != '') { $entidad = $this->circulares[$this->idCircular]['filters'][$key]['entity']; if ($entidad) { $aux = explode(",", $entidad); $entidad = $aux[0]; $idEntidad = $this->filter['valuesSelected'][$key]; $objeto = new $entidad($idEntidad); $valor = $objeto->__toString(); } else { $valor = $this->filter['valuesSelected'][$key]; } $leyendaFiltro[] = array('Column' => $parametros['filters'][$key]['caption'], 'Value' => $valor); } } } // CREAR EL DOCUMENTO $pdf = new ListadoPDF($orientation, $unit, $format, array('title' => $parametros['title'], 'titleFont' => $bodyFont, 'columns' => $parametros['columns'], 'leyendaFiltro' => $leyendaFiltro)); $pdf->SetTopMargin($margenes[0]); $pdf->SetRightMargin($margenes[1]); $pdf->SetLeftMargin($margenes[3]); $pdf->SetAuthor("Informatica ALBATRONIC, SL"); $pdf->SetTitle($parametros['title']); $pdf->AliasNbPages(); $pdf->SetFillColor(210); $pdf->AddPage(); $pdf->SetAutoPageBreak(true, $margenes[2]); // CUERPO $pdf->SetFont($bodyFont[0], $bodyFont[1], $bodyFont[2]); $em = new EntityManager($_SESSION['project']['conection']); $em->query($this->query); $rows = $em->fetchResult(); $nRegistros = $em->numRows(); $em->desConecta(); unset($em); $breakPage = strtoupper(trim((string) $parametros['break_page'])) == 'YES'; // ---------------------------------------------- // Cargo la configuración de la línea del listado // En el array $columnasMulticell guardo el nombre de los // campos que se imprimirán en Multicell y su anchura en la unidad de medida // establecida para calcular la altura máxima y controlar el salto de página // ---------------------------------------------- $configLinea = array(); $columnsMulticell = array(); $caracteresLinea = 0; foreach ($parametros['columns'] as $key => $value) { $caracteres = (int) $value['length']; $anchoColumna = $pdf->getStringWidth(str_pad(" ", $caracteres)) + 1; //Le sumo 1 para que haya 1 mm de separación entre cada columna $caracteresLinea += $caracteres; $tipo = trim((string) $value['type']); $align = strtoupper(trim((string) $value['align'])); if ($align != 'R' and $align != 'C' and $align != 'L' and $align != 'J') { $align = "L"; } $formato = trim((string) $value['format']); $total = strtoupper(trim((string) $value['total'])) == 'YES'; $configLinea[$value['field']] = array('field' => $value['field'], 'caracteres' => $caracteres, 'ancho' => $anchoColumna, 'align' => $align, 'formato' => $formato, 'type' => $tipo, 'total' => $total); if ($tipo == "text") { $columnsMulticell[] = array('field' => $value['field'], 'width' => $anchoColumna); } } // ----------------- $valorAnterior = array(); $subtotalRegistros = 0; // Itero el array con los datos para generar cada renglón del listado $totales = array(); $subTotales = array(); foreach ($rows as $row) { $subtotalRegistros++; // Control (si se ha definido) del(los) campo(s) de ruptura if (count($this->breakFields)) { // Recorro en orden inverso el array de campos de ruptura para // comprobar si ha cambiado el valor actual respecto al anterior. for ($i = 0; $i < count($this->breakFields); $i++) { //for ($i = count($breakField)-1; $i >= 0 ; $i--) { $columnaRuptura = $this->breakFields[$i]; $valorActual[$columnaRuptura] = $row[$columnaRuptura]; if ($valorAnterior[$columnaRuptura] != $valorActual[$columnaRuptura]) { if ($valorAnterior[$columnaRuptura] != '') { $this->pintaTotales($pdf, $parametros['columns'], $subTotales); $subTotales = array(); // Pinta el subtotal de registos if ($parametros['print_total_records']) { $pdf->Cell(0, 4, 'Subtotal Registos ' . $subtotalRegistros, 0, 1); $subtotalRegistros = 0; } // Cambio de página si procede if ($breakPage) { $pdf->AddPage(); } } // Pinto el valor del campo de ruptura $pdf->SetFont($bodyFont[0], 'B', $bodyFont[2]); $pdf->Cell(0, 10, $valorActual[$columnaRuptura]); $pdf->Ln(); $pdf->SetFont($bodyFont[0], $bodyFont[1], $bodyFont[2]); } $valorAnterior[$columnaRuptura] = $valorActual[$columnaRuptura]; } } $pdf->CheckLinePageBreak($lineHeight, $row, $columnsMulticell); // Coordenadas X e Y del renglón $x0 = $pdf->GetX(); $y0 = $pdf->GetY(); // Para controlar el desplazamiento vertical de los multicell $y1 = 0; // Recorro las columnas que componen cada renglón foreach ($configLinea as $value) { $texto = trim($row[$value['field']]); if ($value['formato']) { if ($value['type'] == 'money') { $texto = money_format($value['formato'], $texto); } else { $texto = sprintf($value['formato'], $texto); } } if ($value['type'] == 'text') { // Pinto un multicell sin recortar el texto $x = $pdf->GetX() + $value['ancho']; $pdf->MultiCell($value['ancho'], $lineHeight, $texto, 0, $value['align']); if ($pdf->GetY() > $y1) { $y1 = $pdf->GetY(); } $pdf->SetXY($x, $y0); } else { // Pinto una celda normal $pdf->Cell($value['ancho'], $lineHeight, $pdf->DecodificaTexto($texto, $value['caracteres']), 0, 0, $value['align']); } // Calcular Eventuales totales y subtotales de cada columna if ($value['total']) { $totales[(string) $value['field']] += (double) trim($row[$value['field']]); $subTotales[(string) $value['field']] += (double) trim($row[$value['field']]); } } // Si ha habido algun multicell, cambio la coordenada Y // al desplazamiento vertical mayor producido ($y1) if ($y1 != 0) { $pdf->SetXY($margenes[3], $y1); } else { $pdf->Ln(); } // Si se ha definido interlinea, se imprime a todo lo ancho if ($parametros['print_interline']) { $pdf->Cell(0, $lineHeight, str_repeat($parametros['print_interline'], $caracteresLinea + 5), 0, 1); } } unset($objeto); // Pintar los subtotales y totales si hay if (count($totales)) { if (count($this->breakFields)) { $this->pintaTotales($pdf, $parametros['columns'], $subTotales); } $pdf->Ln(); $this->pintaTotales($pdf, $parametros['columns'], $totales); } elseif (count($this->breakFields)) { // Pinta el subtotal de registos $pdf->Cell(0, 4, 'Subtotal Registos ' . $subtotalRegistros, 0, 1); } if ($parametros['print_total_records']) { if (count($this->breakFields)) { // Pinta el subtotal de registos //$subtotalRegistros++; $pdf->Cell(0, 4, 'Subtotal Registos ' . $subtotalRegistros, 0, 1); } // Total de registros impresos $pdf->Ln(); $pdf->SetFont('Arial', 'B', '8'); $pdf->Cell(0, 4, "Total Registros: " . $nRegistros); } // Pintar el gráfico if (is_array($parametros['grafico'])) { $this->pintaGrafico($pdf, $query, $parametros); } // Leyenda a pie de la última página if ($parametros['comment']) { $pdf->SetY(-25); $pdf->Write(4, $parametros['comment']); } $fichero = Archivo::getTemporalFileName(); if ($fichero) { $pdf->Output($fichero, 'F'); } unset($objeto); unset($pdf); return $fichero; }
/** * Carga facturas recibidas desde un archivo de texto externo * Las columnas deben venir separadas por tabuladores * Las facturas se cargan en la sucursal en curso * * @param string $fileName El path completo del archivo a importar * @return array */ public function ImportarAction($fileName = '') { if ($this->values['permisos']['permisosModulo']['IN']) { if ($fileName == '') { $fileName = $this->request[2]; } if ($fileName != '') { $fileName = "docs/docs{$_SESSION['emp']}/tmp/" . $fileName; } $archivo = new Archivo($fileName); if ($archivo->open("r")) { set_time_limit(0); // Lee contador $contador = new Contadores(); $contador = $contador->dameContador($_SESSION['suc'], 4); $idContador = $contador->getIDContador(); // Buscar la cuenta contable de compras para la sucursal $sucursal = new Sucursales($_SESSION['suc']); $ctaCompras = $sucursal->getCtaContableCompras(); unset($sucursal); while (($linea = $archivo->readLine()) !== FALSE) { $fecha = explode("-", $linea[1]); $proveedor = new Proveedores(); $proveedor = $proveedor->find('CContable', $linea[2]); if ($proveedor->getIDProveedor() != '') { $b1 = $linea[5]; $i1 = $linea[6]; $ci1 = round($b1 * $i1 / 100, 2); $r1 = $linea[7]; $cr1 = round($b1 * $r1 / 100, 2); $b2 = $linea[8]; $i2 = $linea[9]; $ci2 = round($b2 * $i2 / 100, 2); $r2 = $linea[10]; $cr2 = round($b2 * $r2 / 100, 2); $factura = new FrecibidasCab(); $factura->setIDContador($idContador); $factura->setIDSucursal($_SESSION['suc']); $factura->setNumeroFactura($contador->asignaContador()); $factura->setSuFactura($linea[0]); $factura->setFecha($fecha[0] . "/" . $fecha[1] . "/20" . $fecha[2]); $factura->setIDProveedor($proveedor->getIDProveedor()); $factura->setImporte($b1 + $b2); $factura->setBaseImponible1($b1); $factura->setIva1($i1); $factura->setCuotaIva1($ci1); $factura->setRecargo1($r1); $factura->setCuotaRecargo1($cr1); $factura->setBaseImponible2($b2); $factura->setIva2($i2); $factura->setCuotaIva2($ci2); $factura->setRecargo2($r2); $factura->setCuotaRecargo2($cr2); $factura->setTotalBases($b1 + $b2); $factura->setTotalIva($ci1 + $ci2); $factura->setTotalRecargo($cr1 + $cr2); $factura->setTotal($b1 + $b2 + $ci1 + $ci2 + $cr1 + $cr2); $factura->setIDFP(1); $factura->setAsiento(9999); $factura->setCuentaCompras($ctaCompras); if ($factura->create()) { $factura->creaVctos(); } else { $this->values['errores'][] = $factura->getErrores(); } //print_r($factura->getErrores()); } else { $this->values['errores'][] = "No existe el proveedor " . $linea[2] . " " . $linea[4] . ". No se carga la factura " . $linea[0]; } } $archivo->close(); } else { $this->values['errores'][] = "El fichero de importación " . $fileName . " no existe"; } unset($archivo); return array('template' => $this->entity . '/edit.html.twig', 'values' => $this->values); } else { return array('template' => '_global/forbiden.html.twig'); } }
public function actionBuscar() { if (isset($_POST["busqueda"])) { $q = new CDbCriteria(); $q->addSearchCondition('folio', $_POST["busqueda"]); $detalle = Archivo::model()->findAll($q); $this->renderPartial("_verdetalle", array("detalles" => $detalle)); } }
$controller = new CursoController($app); $controller->callAction('cc', $app->request->post()); })->name('admin-curso-post'); /* Rutas para visualizar y descargar archivos de una leccion */ //Descarga de un archivo => file_id $app->get('/file/:file_id/download', function ($file_id) use($app) { Connection::conecting(); $file_id = strip_tags(htmlspecialchars($file_id)); $file_id = filter_var($file_id, FILTER_SANITIZE_NUMBER_INT); $file_id = filter_var($file_id, FILTER_VALIDATE_INT); if (!$file_id) { echo 'no es un id valido'; } else { $archivo = Archivo::find($file_id); if (count($archivo) == 0) { echo 'no existe el archivo'; } else { $dirname = 'uploads/lecciones/'; $filename = $dirname . $archivo->nombre; if (file_exists($filename)) { header('Content-Descripcion: File Transfer'); header('Content-Type: application/octet-stream'); header('Content-Descripcion: File Transfer'); header('Content-Disposition: attachment; filename=leccion-' . $archivo->nombre); header('Content-Transfer-Enconding: binary'); header('Expires: 0'); header('Cache-Control: must-revalidate, post-check=0, pre-check=0'); header('Program: public ='); header('Content-Length: ' . filesize($filename));
/** * Importa clientes desde fichero externo csv según * el formato de facturaplus */ public function ImportarAction() { $fileName = "docs/docs{$_SESSION['emp']}/tmp/clientes.csv"; $archivo = new Archivo($fileName); $archivo->setColumnsDelimiter(";"); $archivo->setColumnsEnclosure('"'); $idPais = 68; // España // Crear array de poblaciones if ($archivo->open("r")) { set_time_limit(0); while (($linea = $archivo->readLine()) !== FALSE) { $poblaciones[trim($linea[4])] = 0; } $pobla = new Municipios(); foreach ($poblaciones as $key => $value) { $rows = $pobla->cargaCondicion("IDMunicipio", "Municipio='{$key}'"); if ($rows[0]['IDMunicipio'] != '') { $poblaciones[$key] = $rows[0]['IDMunicipio']; } } unset($pobla); $archivo->close(); } else { $this->values['errores'][] = "El fichero de importación " . $fileName . " no existe"; } if ($archivo->open("r")) { set_time_limit(0); while (($linea = $archivo->readLine()) !== FALSE) { //print_r($linea); $fp = new FormasPago(); $fp = $fp->find('Observations', trim($linea[20])); $idFp = $fp->getIDFP(); if (!$idFp) { $idFp = 1; } $cliente = new Clientes(); $cliente->setIDCliente($linea[0]); $cliente->setRazonSocial(utf8_encode($linea[1])); $cliente->setNombreComercial(utf8_encode($linea[2])); $cliente->setDireccion(utf8_encode($linea[3])); $cliente->setIDPoblacion($poblaciones[trim($linea[4])]); $cliente->setIDProvincia($linea[5]); $cliente->setCodigoPostal($linea[6]); $cliente->setIDPais($idPais); $cliente->setTelefono($linea[7]); $cliente->setMovil($linea[8]); $cliente->setFax($linea[9]); $cliente->setCif(str_replace("-", "", $linea[10])); $cliente->setObservaciones($linea[11] . " " . $linea[19]); $cliente->setBanco($linea[15]); $cliente->setOficina($linea[16]); $cliente->setDigito(substr($linea[17], 2, 2)); $cliente->setCuenta($linea[18]); $cliente->setIDFP($idFp); $cliente->setEMail($linea[41]); $cliente->setLimiteRiesgo($linea[38]); $cliente->setIDZona(1); $cliente->setIDSucursal($_SESSION['suc']); $cliente->setIDTipo(1); $cliente->setIDGrupo(1); $idCliente = $cliente->create(); if (!$idCliente) { $nErrores += 1; print_r($cliente->getErrores()); } else { $nAciertos += 1; } unset($cliente); } $archivo->close(); } else { $this->values['errores'][] = "El fichero de importación " . $fileName . " no existe"; } echo "Aciertos: {$nAciertos}, Errores: {$nErrores}"; unset($archivo); }
/** * Genera un archivo pdf con el listado * @param array $parametros Array con los parámetros de configuración del listado * @param string $aditionalFilter * @return string $archivo El nombre completo (con la ruta) del archivo pdf generado */ public function getPdf($parametros, $aditionalFilter = '') { set_time_limit(0); // Orientación de página, unidad de medida y tipo de papel $orientation = strtoupper(trim($parametros['orientation'])); if ($orientation != 'P' and $orientation != 'L') { $orientation = 'P'; } $unit = strtolower(trim($parametros['unit'])); if ($unit != 'pt' and $unit != 'mm' and $unit != 'cm' and $unit != 'in') { $unit = 'mm'; } $format = strtolower(trim($parametros['format'])); if ($format != 'a4' and $format != 'a3' and $format != 'a5' and $format != 'letter' and $format != 'legal') { $format = 'A4'; } // Márgenes: top,right,bottom,left $margenes = explode(',', trim($parametros['margins'])); if (count($margenes) != 4) { $margenes = array('10', '10', '15', '10'); } // Tipo y tamaño de letra para el cuerpo del listado $bodyFont = explode(',', trim($parametros['body_font'])); if (count($bodyFont) != 3) { $bodyFont = array('Courier', '', '8'); } else { $bodyFont[0] = trim($bodyFont[0]); $bodyFont[1] = trim($bodyFont[1]); $bodyFont[2] = trim($bodyFont[2]); } // Altura de la línea. Por defecto 4 mm. $lineHeight = trim($parametros['line_height']); if ($lineHeight <= 0) { $lineHeight = 4; } // Construir la leyenda del filtro del listado $leyendaFiltro = array(); if (is_array($this->filter['columnsSelected'])) { foreach ($this->filter['columnsSelected'] as $key => $column) { if ($this->filter['valuesSelected'][$key]) { $objeto = new $this->entity(); $objeto->{"set{$column}"}($this->filter['valuesSelected'][$key]); $valor = ""; $valor = trim($objeto->{"get{$column}"}()); if (!$valor) { $valor = $this->filter['valuesSelected'][$key]; } $leyendaFiltro[] = array('Column' => $this->form->getTitleColumn($column), 'Value' => $valor); } } } //$leyendaFiltro[] = array('Column' => 'Orden', 'Value' => $parametros['order_by']); unset($objeto); // CREAR EL DOCUMENTO $pdf = new ListadoPDF($orientation, $unit, $format, array('title' => $parametros['title'], 'titleFont' => $bodyFont, 'columns' => $parametros['columns'], 'leyendaFiltro' => $leyendaFiltro)); $pdf->SetTopMargin($margenes[0]); $pdf->SetRightMargin($margenes[1]); $pdf->SetLeftMargin($margenes[3]); $pdf->SetAuthor("Informatica ALBATRONIC, SL"); $pdf->SetTitle($parametros['title']); $pdf->AliasNbPages(); $pdf->SetFillColor(210); $pdf->AddPage(); $pdf->SetAutoPageBreak(1, $margenes[2]); // CUERPO $pdf->SetFont($bodyFont[0], $bodyFont[1], $bodyFont[2]); // Construyo el array con los datos a listar. // Sustituyo el ORDERBY que hay en el filtro por pantalla // con el que viene de los parametros del listado if ($this->getQuery() == '') { $this->filter['orderBy'] = $parametros['order_by']; $this->makeQuery($aditionalFilter); } $em = new EntityManager($this->form->getConection()); $em->query($this->getQuery()); $rows = $em->fetchResult(); $nRegistros = $em->numRows(); $em->desConecta(); unset($em); $breakField = trim((string) $parametros['break_field']); $breakField = $breakField ? explode(",", $breakField) : array(); $breakPage = strtoupper(trim((string) $parametros['break_page'])) == 'YES'; // ---------------------------------------------- // Cargo la configuracion de la línea del listado $configLinea = array(); $columnsMulticell = array(); $caracteresLinea = 0; foreach ($parametros['columns'] as $key => $value) { $caracteres = (int) $value['length']; $anchoColumna = $pdf->getStringWidth(str_pad(" ", $caracteres)) + 1; //Le sumo 1 para que haya 1 mm de separación entre cada columna $caracteresLinea += $caracteres; $tipo = trim((string) $value['type']); $align = strtoupper(trim((string) $value['align'])); if ($align != 'R' and $align != 'C' and $align != 'L' and $align != 'J') { $align = "L"; } $formato = trim((string) $value['format']); $total = strtoupper(trim((string) $value['total'])) == 'YES'; $params = explode(",", trim($value['params'])); $parametrosMetodo = ""; foreach ($params as $valor) { $parametrosMetodo .= "{$valor},"; } $parametrosMetodo = substr($parametrosMetodo, 0, -1); $configLinea[$value['field']] = array('field' => $value['field'], 'params' => $parametrosMetodo, 'caracteres' => $caracteres, 'ancho' => $anchoColumna, 'align' => $align, 'formato' => $formato, 'type' => $tipo, 'total' => $total); if ($tipo == "text") { $columnsMulticell[] = array('field' => $value['field'], 'width' => $anchoColumna); } } // ----------------- $valorAnterior = ''; $subtotalRegistros = -1; // Itero el array con los datos para generar cada renglón del listado $totales = array(); $subTotales = array(); $objeto = new $this->entity(); foreach ($rows as $row) { $subtotalRegistros++; $objeto->bind($row); // Control (si se ha definido) del campo de ruptura if (count($breakField)) { // Instancio el objeto por el que se hace el break $objetoBreak = $objeto->{"get{$breakField['0']}"}(); $valorActual = is_object($objetoBreak) ? $objetoBreak->__toString() : $objetoBreak; if ($valorAnterior != $valorActual) { if ($valorAnterior != '') { $this->pintaTotales($pdf, $parametros['columns'], $subTotales); $subTotales = array(); // Pinta el subtotal de registos $pdf->Cell(0, 4, 'Subtotal Registos ' . $subtotalRegistros, 0, 1); $subtotalRegistros = 0; // Cambio de página si procede if ($breakPage) { $pdf->AddPage(); } } $pdf->SetFont($bodyFont[0], 'B', $bodyFont[2]); // Pinto el valor del campo de ruptura y los eventuales valores // adicionales que se hayan indicado en el nodo yml <break_field> $texto = $valorActual; for ($i = 1; $i < count($breakField); $i++) { $texto .= " " . $objetoBreak->{"get{$breakField[$i]}"}(); } $pdf->Cell(0, 10, $texto); $pdf->Ln(); $pdf->SetFont($bodyFont[0], $bodyFont[1], $bodyFont[2]); } $valorAnterior = $valorActual; unset($objetoBreak); } $pdf->CheckLinePageBreak($lineHeight, $row, $columnsMulticell); // Coordenadas X e Y del renglón $x0 = $pdf->GetX(); $y0 = $pdf->GetY(); // Para controlar los multicell $y1 = 0; // Recorro las columnas que componen cada renglón foreach ($configLinea as $value) { if ($value['params']) { $texto = trim($objeto->{"get{$value['field']}"}($value['params'])); } else { $texto = trim($objeto->{"get{$value['field']}"}()); } if ($value['formato']) { $texto = sprintf($value['formato'], $texto); } if ($value['type'] == 'text') { // Pinto un multicell sin recortar el texto $x = $pdf->GetX() + $value['ancho']; $pdf->MultiCell($value['ancho'], $lineHeight, $pdf->DecodificaTexto($texto), 0, $value['align']); if ($pdf->GetY() > $y1) { $y1 = $pdf->GetY(); } $pdf->SetXY($x, $y0); } else { // Pinto una celda normal $pdf->Cell($value['ancho'], $lineHeight, $pdf->DecodificaTexto($texto, $value['caracteres']), 0, 0, $value['align']); } // Calcular Eventuales totales y subtotales de cada columna if ($value['total']) { $totales[(string) $value['field']] += (double) $texto; $subTotales[(string) $value['field']] += (double) $texto; } } // Si ha habido algun multicell, cambio la coordenada Y if ($y1 != 0) { $pdf->SetXY($margenes[3], $y1); } else { $pdf->Ln(); } // Si se ha definido interlinea, se imprime a todo lo ancho if ($parametros['print_interline']) { $pdf->Cell(0, $lineHeight, str_repeat($parametros['print_interline'], $caracteresLinea + 5), 0, 1); } } unset($objeto); // Pintar los subtotales y totales si hay if (count($totales)) { if ($breakField) { $this->pintaTotales($pdf, $parametros['columns'], $subTotales); } $pdf->Ln(); $this->pintaTotales($pdf, $parametros['columns'], $totales); } elseif ($breakField) { // Pinta el subtotal de registos $subtotalRegistros++; $pdf->Cell(0, 4, 'Subtotal Registos ' . $subtotalRegistros, 0, 1); } // Total de registros impresos $pdf->Ln(); $pdf->SetFont('Arial', 'B', '8'); $pdf->Cell(0, 4, "Total Registros: " . $nRegistros); // Leyenda a pie de la última página if ($parametros['legend_text']) { $pdf->SetY(-25); $pdf->Write(4, $parametros['legend_text']); } $archivo = Archivo::getTemporalFileName(); if ($archivo) { $pdf->Output($archivo, 'F'); } unset($objeto); unset($pdf); return $archivo; }