protected function private_core() { $this->cliente = FALSE; $this->logo = FALSE; if (file_exists('tmp/' . FS_TMP_NAME . 'logo.png')) { $this->logo = 'tmp/' . FS_TMP_NAME . 'logo.png'; } else { if (file_exists('tmp/' . FS_TMP_NAME . 'logo.jpg')) { $this->logo = 'tmp/' . FS_TMP_NAME . 'logo.jpg'; } } $this->template = FALSE; if (isset($_REQUEST['id'])) { $recibo0 = new recibo_cliente(); $this->recibo = $recibo0->get($_REQUEST['id']); if ($this->recibo) { $cliente = new cliente(); $this->cliente = $cliente->get($this->recibo->codcliente); $fact0 = new factura_cliente(); $this->factura = $fact0->get($this->recibo->idfactura); $this->generar_pdf_recibo(); } else { echo 'ERROR - Recibo no encontrado.'; } } else { $this->share_extensions(); } }
public function __construct(&$db) { $this->db = $db; $recibo_factura = new recibo_factura(); /// comprobamos los recibos de proveedores $recibo_prov = new recibo_proveedor(); $recibo_prov->cron_job(); /// alternamos distintas consultas $opcion = mt_rand(0, 2); switch ($opcion) { case 0: $sql = "SELECT * FROM facturasprov WHERE NOT pagada AND idfactura NOT IN (SELECT idfactura FROM recibosprov)"; break; case 1: $sql = "SELECT * FROM facturasprov WHERE NOT pagada ORDER BY fecha ASC"; break; default: $sql = "SELECT * FROM facturasprov WHERE NOT pagada ORDER BY fecha DESC"; break; } $data = $this->db->select_limit($sql, 500, 0); if ($data) { foreach ($data as $d) { $factura = new factura_proveedor($d); $recibo_factura->sync_factura_prov($factura); echo '.'; } } /// comprobamos los recibos de clientes $recibo_cli = new recibo_cliente(); $recibo_cli->cron_job(); switch ($opcion) { case 0: $sql = "SELECT * FROM facturascli WHERE NOT pagada AND idfactura NOT IN (SELECT idfactura FROM reciboscli)"; break; case 1: $sql = "SELECT * FROM facturascli WHERE NOT pagada ORDER BY fecha ASC"; break; default: $sql = "SELECT * FROM facturascli WHERE NOT pagada ORDER BY fecha DESC"; break; } $data = $this->db->select_limit($sql, 500, 0); if ($data) { foreach ($data as $d) { $factura = new factura_cliente($d); $recibo_factura->sync_factura_cli($factura); echo '.'; } } /// ¿Errores? foreach ($recibo_factura->errors as $err) { echo $err . "\n"; } }
/** * * @param factura_cliente $factura */ public function sync_factura_cli(&$factura) { if ($factura) { $recibos = $this->recibo_cliente->all_from_factura($factura->idfactura); if ($factura->pagada and count($recibos) == 0) { /// no hacemos nada } else { if (count($recibos) == 0) { $formap = $this->forma_pago->get($factura->codpago); if ($formap) { $plazos = $this->plazo_pago->all_from($formap->codpago); if ($plazos) { $pendiente = $factura->total; foreach ($plazos as $i => $pla) { $recibo = new recibo_cliente(); $recibo->cifnif = $factura->cifnif; $recibo->coddivisa = $factura->coddivisa; $recibo->tasaconv = $factura->tasaconv; $recibo->codpago = $factura->codpago; $recibo->codserie = $factura->codserie; $recibo->codcliente = $factura->codcliente; $recibo->nombrecliente = $factura->nombrecliente; $recibo->estado = 'Emitido'; $recibo->fecha = $factura->fecha; $recibo->fechav = Date('d-m-Y', strtotime($factura->fecha . ' +' . $pla->dias . 'days')); $recibo->idfactura = $factura->idfactura; if ($i + 1 == count($plazos)) { $recibo->importe = round($pendiente, FS_NF0); } else { $recibo->importe = round($factura->total * $pla->aplazado / 100, FS_NF0); $pendiente -= $recibo->importe; } $recibo->numero = $recibo->new_numero($recibo->idfactura); $recibo->codigo = $factura->codigo . '-' . sprintf('%02s', $recibo->numero); foreach ($this->cbc->all_from_cliente($factura->codcliente) as $cuenta) { if (is_null($recibo->codcuenta) or $cuenta->principal) { $recibo->codcuenta = $cuenta->codcuenta; $recibo->iban = $cuenta->iban; $recibo->swift = $cuenta->swift; } } if ($recibo->save()) { $recibos[] = $recibo; } else { $this->new_error_msg('Error al generar el recibo.'); } } } else { $recibo = new recibo_cliente(); $recibo->cifnif = $factura->cifnif; $recibo->coddivisa = $factura->coddivisa; $recibo->tasaconv = $factura->tasaconv; $recibo->codpago = $factura->codpago; $recibo->codserie = $factura->codserie; $recibo->codcliente = $factura->codcliente; $recibo->nombrecliente = $factura->nombrecliente; $recibo->estado = 'Emitido'; $recibo->fecha = $factura->fecha; $recibo->fechav = Date('d-m-Y', strtotime($factura->fecha . ' ' . $formap->vencimiento)); $recibo->idfactura = $factura->idfactura; $recibo->importe = $factura->total; $recibo->numero = $recibo->new_numero($recibo->idfactura); $recibo->codigo = $factura->codigo . '-' . sprintf('%02s', $recibo->numero); foreach ($this->cbc->all_from_cliente($factura->codcliente) as $cuenta) { if (is_null($recibo->codcuenta) or $cuenta->principal) { $recibo->codcuenta = $cuenta->codcuenta; $recibo->iban = $cuenta->iban; $recibo->swift = $cuenta->swift; } } if ($recibo->save()) { $recibos[] = $recibo; } else { $this->new_error_msg('Error al generar el recibo.'); } } } } else { $pagado = 0; foreach ($recibos as $res) { if ($res->estado == 'Pagado') { $pagado += $res->importe; } } $factura->pagada = $pagado >= $factura->total; $factura->save(); } } return $recibos; } else { return array(); } }
private function pagar_recibos() { $pagados = 0; $eje0 = new ejercicio(); $ejercicio = $eje0->get_by_fecha($this->remesa->fechacargo); $cuentab = $this->cuentab->get($this->remesa->codcuenta); if ($cuentab) { $subc0 = new subcuenta(); $subcaja = $subc0->get_by_codigo($cuentab->codsubcuenta, $ejercicio->codejercicio); if ($subcaja) { $cli0 = new cliente(); $recli = new recibo_cliente(); foreach ($recli->all_from_remesa($this->remesa->idremesa) as $recibo) { $cliente = $cli0->get($recibo->codcliente); if ($cliente) { $subcli = $cliente->get_subcuenta($ejercicio->codejercicio); if ($subcli) { $pago = new pago_recibo_cliente(); $pago->idrecibo = $recibo->idrecibo; $pago->idremesa = $this->remesa->idremesa; $pago->fecha = $this->remesa->fechacargo; $pago->idsubcuenta = $subcaja->idsubcuenta; $pago->codsubcuenta = $subcaja->codsubcuenta; $pago->idasiento = $this->nuevo_asiento_pago($recibo, $pago, $ejercicio, $subcli); if ($pago->save()) { $recibo->estado = 'Pagado'; $recibo->fechap = $this->remesa->fechacargo; if ($recibo->save()) { $pagados++; } } else { $this->new_error_msg('Imposible guardar el pago del recibo ' . $recibo->codigo); } } } } $this->new_message($pagados . ' recibos marcados como pagados.'); } else { $this->new_error_msg('La <a href="' . $cuentab->url() . '">cuenta bancaria</a> no está asociada a una subcuenta.'); } } else { $this->new_error_msg('Cuenta bancaria no encontrada.'); } }
private function cron_job() { $pago = new pago(); $pago->cron_job(); $recibo = new recibo_cliente(); $recibo->cron_job(); $sql = "SELECT * FROM facturascli WHERE NOT pagada AND idfactura NOT IN (SELECT idfactura FROM reciboscli)"; $data = $this->db->select_limit($sql, FS_ITEM_LIMIT, 0); if ($data) { foreach ($data as $d) { $this->factura = new factura_cliente($d); /// generamos los recibos a partir de los pagos en pedidos y albaranes $this->generar_recibos_pagos(); $this->resultados = $recibo->all_from_factura($this->factura->idfactura); $this->sync_factura(); } } }
private static function get_recibo($idRecibo) { $recibo = new recibo_cliente(); return $recibo->get($idRecibo); }
private function pagar_facturas() { $num = 0; /// ¿Generamos el asiento de pago? $asientop = NULL; if ($this->empresa->contintegrada) { /// ¿Cuanto es el total? $coddivisa = NULL; $importe = 0; $tasaconv = 1; $rec0 = new recibo_cliente(); foreach ($_POST['idfactura'] as $id) { $recibos = $rec0->all_from_factura($id); foreach ($recibos as $recibo) { if ($recibo->estado != 'Pagado') { $coddivisa = $recibo->coddivisa; $importe += $recibo->importe; $tasaconv = $recibo->tasaconv; } } } $asientop = $this->nuevo_asiento_pago($importe, $coddivisa, $tasaconv); } $fac0 = new factura_cliente(); foreach ($_POST['idfactura'] as $id) { $error = FALSE; $recibos = $rec0->all_from_factura($id); foreach ($recibos as $recibo) { if ($recibo->estado != 'Pagado') { $pago = new pago_recibo_cliente(); $pago->idrecibo = $recibo->idrecibo; if ($asientop) { $pago->idasiento = $asientop->idasiento; } if ($pago->save()) { $recibo->estado = 'Pagado'; if (!$recibo->save()) { $error = TRUE; } } } } if (!$error) { /// marcamos la factura como pagada $factura = $fac0->get($id); if ($factura) { $factura->pagada = TRUE; if ($factura->save()) { $num++; } } } } $this->new_message($num . ' facturas marcadas como pagadas, estas son las siguientes.'); }
protected function private_core() { /// ¿El usuario tiene permiso para eliminar en esta página? $this->allow_delete = $this->user->allow_delete_on(__CLASS__); $recibo = new recibo_cliente(); $this->recibo = FALSE; if (isset($_REQUEST['id'])) { $this->recibo = $recibo->get($_REQUEST['id']); } if ($this->recibo) { if (isset($_POST['fechav'])) { $this->recibo->importe = floatval($_POST['importe']); $this->recibo->fecha = $_POST['emitido']; $this->recibo->fechav = $_POST['fechav']; $this->recibo->iban = $_POST['iban']; $this->recibo->swift = $_POST['swift']; if ($this->recibo->save()) { $this->new_message('Datos guardados correctamente.'); } else { $this->new_error_msg('Error al guardar los datos.'); } } $this->page->title = 'Recibo ' . $this->recibo->codigo; $fact = new factura_cliente(); $this->factura = $fact->get($this->recibo->idfactura); $this->check_recibo(); $this->get_subcuentas(); $pago = new pago_recibo_cliente(); if (isset($_POST['nuevopago'])) { $pago->idrecibo = $this->recibo->idrecibo; $pago->fecha = $_POST['fecha']; $pago->tipo = $_POST['tipo']; foreach ($this->subcuentas_pago as $sc) { if ($sc->codsubcuenta == $_POST['codsubcuenta']) { $pago->idsubcuenta = $sc->idsubcuenta; $pago->codsubcuenta = $sc->codsubcuenta; } } if ($pago->tipo == 'Pago') { if ($this->empresa->contintegrada and isset($_POST['generarasiento'])) { $pago->idasiento = $this->nuevo_asiento_pago($pago, $this->ejercicio); } $this->recibo->estado = 'Pagado'; $this->recibo->fechap = $_POST['fecha']; } else { if ($this->empresa->contintegrada and isset($_POST['generarasiento'])) { $pago->idasiento = $this->nuevo_asiento_devolucion($pago, $this->ejercicio); } $this->recibo->estado = 'Devuelto'; } if ($pago->save()) { $this->new_message('Pago guardado correctamente.'); $this->recibo->save(); } else { $this->new_error_msg('Error al guardar los pagos.'); } } else { if (isset($_GET['deletep'])) { foreach ($pago->all_from_recibo($this->recibo->idrecibo) as $pg) { if ($pg->idpagodevol == intval($_GET['deletep'])) { if ($pg->delete()) { $this->new_message($pg->tipo . ' eliminado correctamente'); $this->recibo->estado = 'Emitido'; $this->recibo->save(); } else { $this->new_error_msg('Error al eliminar el ' . $pg->tipo); } break; } } } } $this->pagos = $pago->all_from_recibo($this->recibo->idrecibo); $this->recibos = $this->recibo->all_from_factura($this->recibo->idfactura); $this->sync_factura(); } else { $this->new_error_msg('Recibo no encontrado.'); } }