protected function private_core() { $this->share_extensions(); $this->cliente = new cliente(); $this->grupo = new grupo_clientes(); // cargamos la configuración $fsvar = new fs_var(); $this->nuevocli_setup = $fsvar->array_get(array('nuevocli_cifnif_req' => 0, 'nuevocli_direccion' => 0, 'nuevocli_direccion_req' => 0, 'nuevocli_codpostal' => 0, 'nuevocli_codpostal_req' => 0, 'nuevocli_pais' => 0, 'nuevocli_pais_req' => 0, 'nuevocli_provincia' => 0, 'nuevocli_provincia_req' => 0, 'nuevocli_ciudad' => 0, 'nuevocli_ciudad_req' => 0, 'nuevocli_telefono1' => 0, 'nuevocli_telefono1_req' => 0, 'nuevocli_telefono2' => 0, 'nuevocli_telefono2_req' => 0, 'nuevocli_codgrupo' => '', 'cal_inicio' => "09:00"), FALSE); $this->mostrar = 'todo'; if (isset($_GET['mostrar'])) { $this->mostrar = $_GET['mostrar']; } $this->offset = 0; if (isset($_GET['offset'])) { $this->offset = intval($_GET['offset']); } $contrato = new contrato_servicio(); if (isset($_POST['cliente'])) { $cliente_s = $this->cliente->get($_POST['cliente']); /** * Nuevo cliente */ if (isset($_POST['nuevo_cliente'])) { if ($_POST['nuevo_cliente'] != '') { $cliente_s = FALSE; if ($_POST['nuevo_cifnif'] != '') { $cliente_s = $this->cliente->get_by_cifnif($_POST['nuevo_cifnif']); if ($cliente_s) { $this->new_advice('Ya existe un cliente con ese ' . FS_CIFNIF . '. Se ha seleccionado.'); } } if (!$cliente_s) { $cliente_s = new cliente(); $cliente_s->codcliente = $cliente_s->get_new_codigo(); $cliente_s->nombre = $cliente_s->razonsocial = $_POST['nuevo_cliente']; $cliente_s->cifnif = $_POST['nuevo_cifnif']; $cliente_s->codserie = $this->empresa->codserie; if (isset($_POST['nuevo_grupo'])) { if ($_POST['nuevo_grupo'] != '') { $cliente_s->codgrupo = $_POST['nuevo_grupo']; } } if (isset($_POST['nuevo_telefono1'])) { $cliente_s->telefono1 = $_POST['nuevo_telefono1']; } if (isset($_POST['nuevo_telefono2'])) { $cliente_s->telefono2 = $_POST['nuevo_telefono2']; } if ($cliente_s->save()) { $dircliente = new direccion_cliente(); $dircliente->codcliente = $cliente_s->codcliente; $dircliente->codpais = $this->empresa->codpais; $dircliente->provincia = $this->empresa->provincia; $dircliente->ciudad = $this->empresa->ciudad; $dircliente->descripcion = 'Principal'; if (isset($_POST['nuevo_pais'])) { $dircliente->codpais = $_POST['nuevo_pais']; } if (isset($_POST['nuevo_provincia'])) { $dircliente->provincia = $_POST['nuevo_provincia']; } if (isset($_POST['nuevo_ciudad'])) { $dircliente->ciudad = $_POST['nuevo_ciudad']; } if (isset($_POST['nuevo_codpostal'])) { $dircliente->codpostal = $_POST['nuevo_codpostal']; } if (isset($_POST['nuevo_direccion'])) { $dircliente->direccion = $_POST['nuevo_direccion']; } if ($dircliente->save()) { $this->new_message('Cliente agregado correctamente.'); } } else { $this->new_error_msg("¡Imposible guardar la dirección del cliente!"); } } } } $con = new contrato_servicio(); $con->codcliente = $cliente_s->codcliente; $con->codagente = $this->user->codagente; $con->codpago = $cliente_s->codpago; if ($con->save()) { $this->new_message('Contrato guardado correctamente.'); header('Location: ' . $con->url()); } else { $this->new_error_msg('Error al guardar el contrato.'); } } else { if (isset($_GET['test'])) { $cli0 = new cliente(); foreach ($cli0->all(mt_rand(0, 1000)) as $cliente) { $con = new contrato_servicio(); $con->codcliente = $cliente->codcliente; $con->codagente = $this->user->codagente; $con->codpago = $this->empresa->codpago; $con->fecha_alta = date(mt_rand(1, 29) . '-3-Y'); $con->fecha_renovacion = date(mt_rand(1, 29) . '-11-Y'); $con->importe_anual = mt_rand(600, 60000); $con->observaciones = $this->random_string(); $con->periodo = '+' . mt_rand(7, 120) . 'days'; $con->fsiguiente_servicio = date('d-m-Y', strtotime($con->fecha_alta . ' ' . $con->periodo)); $con->save(); } } else { if (isset($_GET['delete'])) { $con = $contrato->get($_GET['delete']); if ($con) { if ($con->delete()) { $this->new_message('Contrato eliminado correctamente.'); } else { $this->new_error_msg('Error al eliminar el contrato.'); } } else { $this->new_error_msg('Contrato no encontrado.'); } } } } if (isset($_REQUEST['buscar_cliente'])) { $this->buscar_cliente(); } else { if (isset($_GET['minicron'])) { $this->minicron(); } else { if ($this->mostrar == 'renovacion') { $this->resultados = $contrato->all($this->offset, 'fecha_renovacion ASC'); } else { if ($this->mostrar == 'servicio') { $this->resultados = $contrato->all($this->offset, 'fsiguiente_servicio ASC'); } else { $this->resultados = $contrato->all($this->offset); } } } } $this->total = $contrato->count(); }
private function importar_xml() { $import_step = 0; $this->importar_url = FALSE; if (isset($_POST['fuente'])) { if (file_exists('tmp/' . FS_TMP_NAME . 'ejercicio.xml')) { unlink('tmp/' . FS_TMP_NAME . 'ejercicio.xml'); } if ($_POST['fuente'] == 'archivo' and isset($_POST['archivo'])) { if (copy($_FILES['farchivo']['tmp_name'], 'tmp/' . FS_TMP_NAME . 'ejercicio.xml')) { $import_step = 1; $this->importar_url = $this->url() . '&importar=' . (1 + $import_step); } else { $this->new_error_msg('Error al copiar el archivo.'); } } else { if ($_POST['fuente'] != '') { if (copy($_POST['fuente'], 'tmp/' . FS_TMP_NAME . 'ejercicio.xml')) { $import_step = 1; $this->importar_url = $this->url() . '&importar=' . (1 + $import_step); } else { $this->new_error_msg('Error al copiar el archivo.'); } } else { $this->new_error_msg('Has seleccionado importar desde un archivo externo, pero no has seleccionado ningún archivo.'); } } } else { if (isset($_GET['importar'])) { $import_step = intval($_GET['importar']); if ($import_step < 7) { $this->importar_url = $this->url() . '&importar=' . (1 + $import_step); } else { $this->new_advice('Datos importados correctamente <span class="glyphicon glyphicon-ok" aria-hidden="true"></span>'); $import_step = 0; } } } if (file_exists('tmp/' . FS_TMP_NAME . 'ejercicio.xml') and $import_step > 0) { $offset = 0; if (isset($_GET['offset'])) { $offset = intval($_GET['offset']); } if ($offset == 0) { $this->new_message('Importando ejercicio: paso ' . $import_step . ' de 6 ...'); } else { $this->new_message('Importando ejercicio: paso ' . $import_step . '.' . $offset / 1000 . ' de 6 ...'); } $xml = simplexml_load_file('tmp/' . FS_TMP_NAME . 'ejercicio.xml'); if ($xml) { if ($xml->balance and $import_step == 1) { foreach ($xml->balance as $b) { $balance = new balance(); if (!$balance->get($b->codbalance)) { $balance->codbalance = $b->codbalance; $balance->naturaleza = $b->naturaleza; $balance->nivel1 = $b->nivel1; $balance->descripcion1 = base64_decode($b->descripcion1); $balance->nivel2 = $balance->intval($b->nivel2); $balance->descripcion2 = base64_decode($b->descripcion2); $balance->nivel3 = $b->nivel3; $balance->descripcion3 = base64_decode($b->descripcion3); $balance->orden3 = $b->orden3; $balance->nivel4 = $b->nivel4; $balance->descripcion4 = base64_decode($b->descripcion4); $balance->descripcion4ba = base64_decode($b->descripcion4ba); if (!$balance->save()) { $this->importar_url = FALSE; } } } if ($xml->balance_cuenta) { $balance_cuenta = new balance_cuenta(); $all_bcs = $balance_cuenta->all(); foreach ($xml->balance_cuenta as $bc) { $encontrado = FALSE; foreach ($all_bcs as $bc2) { if ($bc2->codbalance == $bc->codbalance and $bc2->codcuenta == $bc->codcuenta) { $encontrado = TRUE; break; } } if (!$encontrado) { $new_bc = new balance_cuenta(); $new_bc->codbalance = $bc->codbalance; $new_bc->codcuenta = $bc->codcuenta; $new_bc->desccuenta = base64_decode($bc->descripcion); if (!$new_bc->save()) { $this->importar_url = FALSE; } } } } if ($xml->balance_cuenta_a) { $balance_cuenta_a = new balance_cuenta_a(); $all_bcas = $balance_cuenta_a->all(); foreach ($xml->balance_cuenta_a as $bc) { $encontrado = FALSE; foreach ($all_bcas as $bc2) { if ($bc2->codbalance == $bc->codbalance and $bc2->codcuenta == $bc->codcuenta) { $encontrado = TRUE; break; } } if (!$encontrado) { $new_bc = new balance_cuenta_a(); $new_bc->codbalance = $bc->codbalance; $new_bc->codcuenta = $bc->codcuenta; $new_bc->desccuenta = base64_decode($bc->descripcion); if (!$new_bc->save()) { $this->importar_url = FALSE; } } } } } if ($import_step == 2) { if ($xml->cuenta_especial) { foreach ($xml->cuenta_especial as $ce) { $cuenta_especial = new cuenta_especial(); if (!$cuenta_especial->get($ce->idcuentaesp)) { $cuenta_especial->idcuentaesp = $ce->idcuentaesp; $cuenta_especial->descripcion = base64_decode($ce->descripcion); if (!$cuenta_especial->save()) { $this->importar_url = FALSE; } } } } if ($xml->grupo_epigrafes) { foreach ($xml->grupo_epigrafes as $ge) { $grupo_epigrafes = new grupo_epigrafes(); if (!$grupo_epigrafes->get_by_codigo($ge->codgrupo, $this->ejercicio->codejercicio)) { $grupo_epigrafes->codejercicio = $this->ejercicio->codejercicio; $grupo_epigrafes->codgrupo = $ge->codgrupo; $grupo_epigrafes->descripcion = base64_decode($ge->descripcion); if (!$grupo_epigrafes->save()) { $this->importar_url = FALSE; } } } } if ($xml->epigrafe) { $grupo_epigrafes = new grupo_epigrafes(); foreach ($xml->epigrafe as $ep) { $epigrafe = new epigrafe(); if (!$epigrafe->get_by_codigo($ep->codepigrafe, $this->ejercicio->codejercicio)) { $ge = $grupo_epigrafes->get_by_codigo($ep->codgrupo, $this->ejercicio->codejercicio); if ($ge) { /// si encuentra el grupo, lo añade con el grupo $epigrafe->idgrupo = $ge->idgrupo; $epigrafe->codgrupo = $ge->codgrupo; $epigrafe->codejercicio = $this->ejercicio->codejercicio; $epigrafe->codepigrafe = $ep->codepigrafe; $epigrafe->descripcion = base64_decode($ep->descripcion); if (!$epigrafe->save()) { $this->importar_url = FALSE; } } else { if ($ep->codpadre) { $padre = $epigrafe->get_by_codigo($ep->codpadre, $this->ejercicio->codejercicio); if ($padre) { /// si encuentra al padre, lo añade con el padre $epigrafe->idpadre = $padre->idepigrafe; $epigrafe->codejercicio = $this->ejercicio->codejercicio; $epigrafe->codepigrafe = $ep->codepigrafe; $epigrafe->descripcion = base64_decode($ep->descripcion); if (!$epigrafe->save()) { $this->importar_url = FALSE; } } } } } } } } if ($xml->cuenta and $import_step == 3) { $epigrafe = new epigrafe(); foreach ($xml->cuenta as $c) { $cuenta = new cuenta(); if (!$cuenta->get_by_codigo($c->codcuenta, $this->ejercicio->codejercicio)) { $ep = $epigrafe->get_by_codigo($c->codepigrafe, $this->ejercicio->codejercicio); if ($ep) { $cuenta->idepigrafe = $ep->idepigrafe; $cuenta->codepigrafe = $ep->codepigrafe; $cuenta->codcuenta = $c->codcuenta; $cuenta->codejercicio = $this->ejercicio->codejercicio; $cuenta->descripcion = base64_decode($c->descripcion); $cuenta->idcuentaesp = $c->idcuentaesp; if (!$cuenta->save()) { $this->importar_url = FALSE; } } } } } if ($xml->subcuenta and $import_step == 4) { $cuenta = new cuenta(); foreach ($xml->subcuenta as $sc) { $subcuenta = new subcuenta(); if (!$subcuenta->get_by_codigo($sc->codsubcuenta, $this->ejercicio->codejercicio)) { $cu = $cuenta->get_by_codigo($sc->codcuenta, $this->ejercicio->codejercicio); if ($cu) { $subcuenta->idcuenta = $cu->idcuenta; $subcuenta->codcuenta = $cu->codcuenta; $subcuenta->coddivisa = $this->empresa->coddivisa; if (isset($sc->coddivisa)) { $subcuenta->coddivisa = $sc->coddivisa; } $subcuenta->codejercicio = $this->ejercicio->codejercicio; $subcuenta->codsubcuenta = $sc->codsubcuenta; $subcuenta->descripcion = base64_decode($sc->descripcion); if (!$subcuenta->save()) { $this->importar_url = FALSE; } } } } } if ($import_step == 5) { $cliente = new cliente(); $clientes = $cliente->all($offset); while ($clientes) { foreach ($clientes as $cli) { /// forzamos la generación y asociación de una subcuenta para el cliente $cli->get_subcuenta($this->ejercicio->codejercicio); $offset++; } if ($offset % 1000 == 0) { /// cada 1000 clientes volvemos a recargar la página para continuar $this->importar_url = $this->url() . '&importar=' . $import_step . '&offset=' . $offset; break; } else { $clientes = $cliente->all($offset); } } } if ($import_step == 6) { $proveedor = new proveedor(); $proveedores = $proveedor->all($offset); while ($proveedores) { foreach ($proveedores as $pro) { /// forzamos la generación y asociación de una subcuenta para cada proveedor $pro->get_subcuenta($this->ejercicio->codejercicio); $offset++; } if ($offset % 1000 == 0) { /// cada 1000 proveedores volvemos a recargar la página para continuar $this->importar_url = $this->url() . '&importar=' . $import_step . '&offset=' . $offset; break; } else { $proveedores = $proveedor->all($offset); } } } } else { $this->new_error("Imposible leer el archivo."); } } }