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 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); }
/** * 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); }
/** * 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); }
/** * 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); }
/** * 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; }
/** * 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'); } }
/** * 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; }
/** * Activa o desactiva el modo debuger de Twig * * Para activar: Index/Debuger/true * Para desactivar: Index/Debuger/false * * @return void */ public function DebugerAction() { $fileConfig = 'config/config.yml'; $array = sfYaml::load($fileConfig); $array['config']['twig']['debug_mode'] = $this->request[2] == 'true' ? true : false; $yml = sfYaml::dump($array, 4); $archivo = new Archivo($fileConfig); $archivo->write($yml); $archivo->close(); echo "Modo debuger Twig: ", $array['config']['twig']['debug_mode'], "----"; return $this->IndexAction(); }
private function leeCsv($file) { $archivo = new Archivo($file); $archivo->setColumnsDelimiter(";"); $archivo->setColumnsEnclosure("\""); $array = array(); if ($archivo->open()) { // Leer la cabecera $titulos = $archivo->readLine(); // Leer el contenido $i = -1; while ($row = $archivo->readLine()) { $i++; foreach ($titulos as $key => $titulo) { $array[$i][$titulo] = $row[$key]; } } $archivo->close(); } else { echo "No he podido leer {$file}"; } unset($archivo); return $array; }