/** * Devuelve la subcuenta asignada al proveedor para el ejercicio $eje, * si no hay una subcuenta asignada, intenta crearla. Si falla devuelve FALSE. * @param type $eje * @return subcuenta */ public function get_subcuenta($eje) { $subcuenta = FALSE; foreach ($this->get_subcuentas() as $s) { if ($s->codejercicio == $eje) { $subcuenta = $s; break; } } if (!$subcuenta) { /// intentamos crear la subcuenta y asociarla $continuar = TRUE; $cuenta = new cuenta(); if ($this->acreedor) { $cpro = $cuenta->get_cuentaesp('ACREED', $eje); if (!$cpro) { $cpro = $cuenta->get_by_codigo('410', $eje); } } else { $cpro = $cuenta->get_cuentaesp('PROVEE', $eje); } if ($cpro) { $subc0 = $cpro->new_subcuenta($this->codproveedor); $subc0->descripcion = $this->razonsocial; if (!$subc0->save()) { $this->new_error_msg('Imposible crear la subcuenta para el proveedor ' . $this->codproveedor); $continuar = FALSE; } if ($continuar) { $scpro = new subcuenta_proveedor(); $scpro->codejercicio = $eje; $scpro->codproveedor = $this->codproveedor; $scpro->codsubcuenta = $subc0->codsubcuenta; $scpro->idsubcuenta = $subc0->idsubcuenta; if ($scpro->save()) { $subcuenta = $subc0; } else { $this->new_error_msg('Imposible asociar la subcuenta para el proveedor ' . $this->codproveedor); } } } else { $this->new_error_msg('No se encuentra ninguna cuenta especial para proveedores.'); } } return $subcuenta; }
protected function private_core() { $this->tipo = FALSE; $this->subcuenta = FALSE; $this->cuenta = new cuenta(); /// seleccionamos el ejercicio $ejercicio = new ejercicio(); $eje0 = $ejercicio->get_by_fecha(date('d-m-Y')); if (isset($_POST['codejercicio'])) { $this->codejercicio = $_POST['codejercicio']; } else { if ($eje0) { $this->codejercicio = $eje0->codejercicio; } else { $this->codejercicio = $this->default_items->codejercicio(); } } if (isset($_POST['ejercicio']) and isset($_POST['query'])) { $this->new_search(); } else { if (isset($_REQUEST['cli'])) { $this->tipo = 'cli'; $cliente = new cliente(); $this->cliente = $cliente->get($_REQUEST['cli']); if ($this->cliente) { $subcuenta_cliente = new subcuenta_cliente(); if (isset($_GET['delete_sca'])) { $aux_sca = $subcuenta_cliente->get2($_GET['delete_sca']); if ($aux_sca) { if ($aux_sca->delete()) { $this->new_message('El cliente ya no está asocuado a esa subcuenta.'); } else { $this->new_error_msg('Imposible quitar la subcuenta.'); } } else { $this->new_error_msg('Relación con la subcuenta no encontrada.'); } } else { if (isset($_GET['idsc'])) { $this->subcuenta_a = $subcuenta_cliente->get($_GET['cli'], $_GET['idsc']); if ($this->subcuenta_a) { $this->subcuenta = $this->subcuenta_a->get_subcuenta(); $this->codejercicio = $this->subcuenta_a->codejercicio; } } else { if (isset($_POST['idsc'])) { $this->subcuenta_a = $subcuenta_cliente->get($_POST['cli'], $_POST['idsc']); if ($this->subcuenta_a) { $subc = new subcuenta(); $subc0 = $subc->get($_POST['idsc2']); if ($subc0) { $this->subcuenta_a->idsubcuenta = $subc0->idsubcuenta; $this->subcuenta_a->codsubcuenta = $subc0->codsubcuenta; $this->subcuenta_a->codejercicio = $subc0->codejercicio; if ($this->subcuenta_a->save()) { $this->new_message('Datos guardados correctamente.'); } else { $this->new_error_msg('Imposible asignar la subcuenta al cliente.'); } $this->subcuenta = $subc0; } else { $this->new_error_msg('Subcuenta no encontrada.'); $this->subcuenta = $this->subcuenta_a->get_subcuenta(); } } } else { if (isset($_POST['idsc2'])) { $subc = new subcuenta(); $subc0 = $subc->get($_POST['idsc2']); if ($subc0) { $subcuenta_cliente->codcliente = $this->cliente->codcliente; $subcuenta_cliente->idsubcuenta = $subc0->idsubcuenta; $subcuenta_cliente->codsubcuenta = $subc0->codsubcuenta; $subcuenta_cliente->codejercicio = $subc0->codejercicio; if ($subcuenta_cliente->save()) { $this->new_message('Datos guardados correctamente.'); } else { $this->new_error_msg('Imposible asignar la subcuenta al cliente.'); } $this->subcuenta = $subc0; } else { $this->new_error_msg('Subcuenta no encontrada.'); } } else { if (isset($_POST['cuenta'])) { $cuenta0 = $this->cuenta->get($_POST['cuenta']); if ($cuenta0) { $subc0 = new subcuenta(); $subc0->codcuenta = $cuenta0->codcuenta; $subc0->coddivisa = $this->default_items->coddivisa(); $subc0->codejercicio = $cuenta0->codejercicio; $subc0->codsubcuenta = $_POST['codsubcuenta']; $subc0->descripcion = $this->cliente->nombre; $subc0->idcuenta = $cuenta0->idcuenta; if ($subc0->save()) { $subcuenta_cliente->codcliente = $this->cliente->codcliente; $subcuenta_cliente->idsubcuenta = $subc0->idsubcuenta; $subcuenta_cliente->codsubcuenta = $subc0->codsubcuenta; $subcuenta_cliente->codejercicio = $subc0->codejercicio; if ($subcuenta_cliente->save()) { $this->new_message('Datos guardados correctamente.'); } else { $this->new_error_msg('Imposible asignar la subcuenta al cliente.'); } $this->subcuenta = $subc0; } else { $this->new_error_msg('Imposible crear la sucuenta.'); } } else { $this->new_error_msg('Cuenta no encontrada.'); } } else { foreach ($subcuenta_cliente->all_from_cliente($_REQUEST['cli']) as $sca) { if ($sca->codejercicio == $this->codejercicio) { $this->subcuenta_a = $sca; $this->subcuenta = $sca->get_subcuenta(); break; } } } } } } } } } else { if (isset($_REQUEST['pro'])) { $this->tipo = 'pro'; $proveedor = new proveedor(); $this->proveedor = $proveedor->get($_REQUEST['pro']); if ($this->proveedor) { $subcuenta_proveedor = new subcuenta_proveedor(); if (isset($_GET['delete_sca'])) { $aux_sca = $subcuenta_proveedor->get2($_GET['delete_sca']); if ($aux_sca) { if ($aux_sca->delete()) { $this->new_message('El proveedor ya no está asocuado a esa subcuenta.'); } else { $this->new_error_msg('Imposible quitar la subcuenta.'); } } else { $this->new_error_msg('Relación con la subcuenta no encontrada.'); } } else { if (isset($_GET['idsc'])) { $this->subcuenta_a = $subcuenta_proveedor->get($_GET['pro'], $_GET['idsc']); if ($this->subcuenta_a) { $this->subcuenta = $this->subcuenta_a->get_subcuenta(); $this->codejercicio = $this->subcuenta_a->codejercicio; } } else { if (isset($_POST['idsc'])) { $this->subcuenta_a = $subcuenta_proveedor->get($_POST['pro'], $_POST['idsc']); if ($this->subcuenta_a) { $subc = new subcuenta(); $subc0 = $subc->get($_POST['idsc2']); if ($subc0) { $this->subcuenta_a->idsubcuenta = $subc0->idsubcuenta; $this->subcuenta_a->codsubcuenta = $subc0->codsubcuenta; $this->subcuenta_a->codejercicio = $subc0->codejercicio; if ($this->subcuenta_a->save()) { $this->new_message('Datos guardados correctamente.'); } else { $this->new_error_msg('Imposible asignar la subcuenta al proveedor.'); } $this->subcuenta = $subc0; } else { $this->new_error_msg('Subcuenta no encontrada.'); $this->subcuenta = $this->subcuenta_a->get_subcuenta(); } } } else { if (isset($_POST['idsc2'])) { $subc = new subcuenta(); $subc0 = $subc->get($_POST['idsc2']); if ($subc0) { $subcuenta_proveedor->codproveedor = $this->proveedor->codproveedor; $subcuenta_proveedor->idsubcuenta = $subc0->idsubcuenta; $subcuenta_proveedor->codsubcuenta = $subc0->codsubcuenta; $subcuenta_proveedor->codejercicio = $subc0->codejercicio; if ($subcuenta_proveedor->save()) { $this->new_message('Datos guardados correctamente.'); } else { $this->new_error_msg('Imposible asignar la subcuenta al cliente.'); } $this->subcuenta = $subc0; } else { $this->new_error_msg('Subcuenta no encontrada.'); } } else { if (isset($_POST['cuenta'])) { $cuenta0 = $this->cuenta->get($_POST['cuenta']); if ($cuenta0) { $subc0 = new subcuenta(); $subc0->codcuenta = $cuenta0->codcuenta; $subc0->coddivisa = $this->default_items->coddivisa(); $subc0->codejercicio = $cuenta0->codejercicio; $subc0->codsubcuenta = $_POST['codsubcuenta']; $subc0->descripcion = $this->proveedor->nombre; $subc0->idcuenta = $cuenta0->idcuenta; if ($subc0->save()) { $subcuenta_proveedor->codproveedor = $this->proveedor->codproveedor; $subcuenta_proveedor->idsubcuenta = $subc0->idsubcuenta; $subcuenta_proveedor->codsubcuenta = $subc0->codsubcuenta; $subcuenta_proveedor->codejercicio = $subc0->codejercicio; if ($subcuenta_proveedor->save()) { $this->new_message('Datos guardados correctamente.'); } else { $this->new_error_msg('Imposible asignar la subcuenta al proveedor.'); } $this->subcuenta = $subc0; } else { $this->new_error_msg('Imposible crear la sucuenta.'); } } else { $this->new_error_msg('Cuenta no encontrada.'); } } else { foreach ($subcuenta_proveedor->all_from_proveedor($_REQUEST['pro']) as $sca) { if ($sca->codejercicio == $this->codejercicio) { $this->subcuenta_a = $sca; $this->subcuenta = $sca->get_subcuenta(); break; } } } } } } } } } } } }