/** * Devuelve el ejercicio para la fecha indicada. * Si no existe, lo crea. */ public function get_by_fecha($fecha, $solo_abierto = TRUE, $crear = TRUE) { $sql = "SELECT * FROM " . $this->table_name . " WHERE fechainicio <= " . $this->var2str($fecha) . " AND fechafin >= " . $this->var2str($fecha) . ";"; $data = $this->db->select($sql); if ($data) { $eje = new ejercicio($data[0]); if ($eje->abierto() or !$solo_abierto) { return $eje; } else { return FALSE; } } else { if ($crear) { $eje = new ejercicio(); $eje->codejercicio = $eje->get_new_codigo(Date('Y', strtotime($fecha))); $eje->nombre = Date('Y', strtotime($fecha)); $eje->fechainicio = Date('1-1-Y', strtotime($fecha)); $eje->fechafin = Date('31-12-Y', strtotime($fecha)); if (strtotime($fecha) < 1) { $this->new_error_msg("Fecha no válida: " . $fecha); } else { if ($eje->save()) { return $eje; } else { return FALSE; } } } else { return FALSE; } } }
/** * * @param recibo_cliente $recibo * @param pago_recibo_cliente $pago * @param ejercicio $ejercicio * @param subcuenta $subcli * @return type */ private function nuevo_asiento_pago(&$recibo, &$pago, &$ejercicio, &$subcli) { $asiento = new asiento(); $asiento->fecha = $pago->fecha; $asiento->codejercicio = $ejercicio->codejercicio; $asiento->editable = FALSE; $asiento->importe = $recibo->importe; if ($pago->tipo == 'Pago') { $asiento->concepto = 'Cobro recibo ' . $recibo->codigo . ' - ' . $recibo->nombrecliente; } else { $asiento->concepto = $pago->tipo . ' recibo ' . $recibo->codigo . ' - ' . $recibo->nombrecliente; } if (!$ejercicio->abierto()) { $this->new_error_msg('El ejercicio ' . $ejercicio->codejercicio . ' está cerrado.'); } else { if ($asiento->save()) { $partida1 = new partida(); $partida1->idasiento = $asiento->idasiento; $partida1->concepto = $asiento->concepto; $partida1->idsubcuenta = $subcli->idsubcuenta; $partida1->codsubcuenta = $subcli->codsubcuenta; $partida1->haber = $recibo->importe; $partida1->coddivisa = $recibo->coddivisa; $partida1->tasaconv = $recibo->tasaconv; $partida1->codserie = $recibo->codserie; $partida1->save(); $partida2 = new partida(); $partida2->idasiento = $asiento->idasiento; $partida2->concepto = $asiento->concepto; $partida2->idsubcuenta = $pago->idsubcuenta; $partida2->codsubcuenta = $pago->codsubcuenta; $partida2->debe = $recibo->importe; $partida2->coddivisa = $recibo->coddivisa; $partida2->tasaconv = $recibo->tasaconv; $partida2->codserie = $recibo->codserie; $partida2->save(); } else { $this->new_error_msg('Error al guardar el asiento.'); } } return $asiento->idasiento; }