protected function private_core() { $this->desde = Date('01-m-Y'); if (isset($_POST['desde'])) { $this->desde = $_POST['desde']; } $this->hasta = Date('d-m-Y'); if (isset($_POST['hasta'])) { $this->hasta = $_POST['hasta']; } $this->cliente = FALSE; $this->codcliente = FALSE; if (!isset($_POST['todos']) and isset($_POST['codcliente'])) { $this->codcliente = $_POST['codcliente']; $cli0 = new cliente(); $this->cliente = $cli0->get($this->codcliente); } $this->serie = new serie(); $this->codserie = FALSE; if (isset($_POST['codserie'])) { $this->codserie = $_POST['codserie']; } if (isset($_REQUEST['buscar_cliente'])) { $this->buscar_cliente(); } else { if (in_array('tesoreria', $GLOBALS['plugins'])) { $this->new_error_msg('Si usas el <b>plugin Tesorería</b> no puedes usar este' . ' asistente para pagar todas las facturas.'); } else { if (isset($_POST['idfactura'])) { /// ¿Marcamos ya las facturas? $num = 0; $asi0 = new asiento(); $asifac = new asiento_factura(); $fact0 = new factura_cliente(); foreach ($_POST['idfactura'] as $id) { $factura = $fact0->get($id); if ($factura) { $asiento = $asi0->get($factura->idasiento); if ($asiento) { $factura->idasientop = $asifac->generar_asiento_pago($asiento, $factura->codpago); if ($factura->idasientop) { $factura->pagada = TRUE; if ($factura->save()) { $num++; } } } else { $factura->pagada = TRUE; if ($factura->save()) { $num++; } } } } foreach ($asifac->errors as $err) { $this->new_error_msg($err); } $this->new_message($num . ' facturas marcadas como pagadas, estas son las siguientes.'); } else { $this->share_extensions(); } } } $this->resultados = FALSE; if (isset($_POST['desde'])) { $this->resultados = $this->buscar_facturas(); } }
private function pagar($pagada = TRUE) { /// ¿Hay asiento? if (is_null($this->factura->idasiento)) { $this->factura->pagada = $pagada; $this->factura->save(); } else { if (!$pagada and $this->factura->pagada) { /// marcar como impagada $this->factura->pagada = FALSE; /// ¿Eliminamos el asiento de pago? $as1 = new asiento(); $asiento = $as1->get($this->factura->idasientop); if ($asiento) { $asiento->delete(); $this->new_message('Asiento de pago eliminado.'); } $this->factura->idasientop = NULL; if ($this->factura->save()) { $this->new_message('Factura marcada como impagada.'); } else { $this->new_error_msg('Error al modificar la factura.'); } } else { if ($pagada and !$this->factura->pagada) { /// marcar como pagada $asiento = $this->factura->get_asiento(); if ($asiento) { /// nos aseguramos que el cliente tenga subcuenta en el ejercicio actual $subcli = FALSE; $eje = $this->ejercicio->get_by_fecha($this->today()); if ($eje) { $subcli = $this->cliente->get_subcuenta($eje->codejercicio); } $asiento_factura = new asiento_factura(); $this->factura->idasientop = $asiento_factura->generar_asiento_pago($asiento, $this->factura->codpago, $this->today(), $subcli); if ($this->factura->idasientop) { $this->factura->pagada = TRUE; if ($this->factura->save()) { $this->new_message('<a href="' . $this->factura->asiento_pago_url() . '">Asiento de pago</a> generado.'); } else { $this->new_error_msg('Error al marcar la factura como pagada.'); } } foreach ($asiento_factura->errors as $err) { $this->new_error_msg($err); } } else { $this->new_error_msg('No se ha encontrado el asiento de la factura.'); } } } } }