/**
  *
  *Genera una nueva cuenta contable en el sistema
  *
  * @param abonos_aumentan bool si abonos aumentan es igual a 1 significa que en los movimientos los abonos aumentantaran
  * @param cargos_aumentan bool Si es igual 1 significa que en los movimientos cuando se cargue a esta cuenta los cargos aumentaran
  * @param clasificacion enum `Activo Circulante`,`Activo Fijo`,`Activo Diferido`,`Pasivo Circulante`,`Pasivo Largo Plazo`,`Capital Contable`,`Ingresos`,`Egresos`
  * @param es_cuenta_mayor bool Indica si la cuenta es de mayor
  * @param es_cuenta_orden bool si la cuenta no se contemplara en los estados financieros
  * @param naturaleza enum `Acreedora`,`Deudora`
  * @param nombre_cuenta string El nombre de la cuenta
  * @param tipo_cuenta enum `Balance`,`Estado de Resultados`
  * @param id_cuenta_padre int id de la cuenta de la que depende
  **/
 public static function NuevaCuenta($abonos_aumentan, $cargos_aumentan, $clasificacion, $es_cuenta_mayor, $es_cuenta_orden, $id_catalogo_cuentas, $naturaleza, $nombre_cuenta, $tipo_cuenta, $id_cuenta_padre = "")
 {
     if ($es_cuenta_orden == 1 && $es_cuenta_mayor == 1) {
         throw new BusinessLogicException("Una cuenta de Mayor no puede ser de Orden");
     }
     if ($tipo_cuenta == "Balance" && $naturaleza == "Deudora" && ($clasificacion != "Activo Circulante" && $clasificacion != "Activo Fijo" && $clasificacion != "Activo Diferido")) {
         throw new BusinessLogicException("Clasificacion incorrecta para la cuenta de tipo Balance y Naturaleza Deudora");
     }
     if ($tipo_cuenta == "Balance" && $naturaleza == "Acreedora" && ($clasificacion != "Pasivo Circulante" && $clasificacion != "Pasivo Largo Plazo" && $clasificacion != "Capital Contable")) {
         throw new BusinessLogicException("Clasificacion incorrecta para la cuenta de tipo Balance y Naturaleza Acreedora");
     }
     if ($tipo_cuenta == "Estado de Resultados" && $naturaleza == "Acreedora" && $clasificacion != "Ingresos") {
         throw new BusinessLogicException("Clasificacion incorrecta para la cuenta de tipo Estado de Resultados y Naturaleza Acreedora");
     }
     if ($tipo_cuenta == "Estado de Resultados" && $naturaleza == "Deudora" && $clasificacion != "Egresos") {
         throw new BusinessLogicException("Clasificacion incorrecta para la cuenta de tipo Estado de Resultados y Naturaleza Deudora");
     }
     $cuenta_buscar = new CuentaContable();
     $cuenta_buscar->setNombreCuenta($nombre_cuenta);
     $cuenta_buscar->setIdCatalogoCuentas($id_catalogo_cuentas);
     $cc2 = CuentaContableDAO::search($cuenta_buscar);
     if (count($cc2) > 0) {
         Logger::log("!!!!!!Ya existe una cuenta con el nombre " . $nombre_cuenta);
         throw new BusinessLogicException(" Ya existe una cuenta con el nombre " . $nombre_cuenta);
     }
     $clave = self::NuevaClaveCuentaContable($id_catalogo_cuentas, $id_cuenta_padre, $clasificacion);
     $nivel = 1;
     $consecutivo = 1;
     if ($id_cuenta_padre != "") {
         $detalle_c = CuentaContableDAO::getByPK($id_cuenta_padre);
         if (is_null($detalle_c)) {
             throw new BusinessLogicException("La cuenta con id " . $id_cuenta_padre . " no existe");
         }
         $nivel = $detalle_c->getNivel() + 1;
         $subcuentas = self::BuscarCuenta($id_catalogo_cuentas, "", "", "", "", "", "", "", $id_cuenta_padre, "", "", "", "");
         if (count($subcuentas["resultados"]) > 0) {
             $consecutivo = $subcuentas["resultados"][count($subcuentas["resultados"]) - 1]->getConsecutivoEnNivel() + 1;
         }
     } else {
         $cuentas_clasifi = self::BuscarCuenta($id_catalogo_cuentas, "", $clasificacion, "", "", "", "", "", "", "", $nivel = 1, "", "");
         if (count($cuentas_clasifi["resultados"]) > 0) {
             $consecutivo = $cuentas_clasifi["resultados"][count($cuentas_clasifi["resultados"]) - 1]->getConsecutivoEnNivel() + 1;
         }
     }
     if ($nivel == 1 && $id_cuenta_padre != "") {
         throw new BusinessLogicException("Las cuentas de Nivel 1 no deben tener cuentas padre");
     }
     $nueva_cuenta = new CuentaContable();
     $nueva_cuenta->setClave($clave);
     $nueva_cuenta->setNivel($nivel);
     $nueva_cuenta->setConsecutivoEnNivel($consecutivo);
     $nueva_cuenta->setNombreCuenta($nombre_cuenta);
     $nueva_cuenta->setTipoCuenta($tipo_cuenta);
     $nueva_cuenta->setNaturaleza($naturaleza);
     $nueva_cuenta->setClasificacion($clasificacion);
     $nueva_cuenta->setAfectable(1);
     $nueva_cuenta->setActiva(1);
     $nueva_cuenta->setAbonosAumentan($abonos_aumentan);
     $nueva_cuenta->setCargosAumentan($cargos_aumentan);
     if ($tipo_cuenta == "Estado de Resultados" && $naturaleza == "Acreedora") {
         $nueva_cuenta->setAbonosAumentan(1);
         $nueva_cuenta->setCargosAumentan(0);
     }
     if ($tipo_cuenta == "Estado de Resultados" && $naturaleza == "Deudora") {
         $nueva_cuenta->setAbonosAumentan(0);
         $nueva_cuenta->setCargosAumentan(1);
     }
     if ($tipo_cuenta == "Balance" && $naturaleza == "Acreedora") {
         $nueva_cuenta->setAbonosAumentan(1);
         $nueva_cuenta->setCargosAumentan(0);
     }
     if ($tipo_cuenta == "Balance" && $naturaleza == "Deudora") {
         $nueva_cuenta->setAbonosAumentan(0);
         $nueva_cuenta->setCargosAumentan(1);
     }
     $nueva_cuenta->setEsCuentaOrden($es_cuenta_orden);
     $nueva_cuenta->setEsCuentaMayor($es_cuenta_mayor);
     if ($id_cuenta_padre != "") {
         $nueva_cuenta->setIdCuentaPadre($id_cuenta_padre);
     }
     $nueva_cuenta->setIdCatalogoCuentas($id_catalogo_cuentas);
     DAO::transBegin();
     try {
         CuentaContableDAO::save($nueva_cuenta);
         if ($id_cuenta_padre != "") {
             $cuenta_padre_afec = CuentaContableDAO::getByPK($id_cuenta_padre);
             if ($cuenta_padre_afec->getAfectable() == true) {
                 $cuenta_padre_afec->setAfectable(false);
                 CuentaContableDAO::save($cuenta_padre_afec);
             }
         }
     } catch (Exception $e) {
         DAO::transRollback();
         Logger::error("Desde Controller) No se ha podido guardar la nueva cuenta: " . $e);
         if ($e->getCode() == 901) {
             throw new Exception("No se ha podido guardar la nueva cuenta|: " . $e->getMessage(), 901);
         }
         throw new Exception("No se ha podido guardar la nueva cuenta", 901);
     }
     DAO::transEnd();
     return array("status" => "ok", "id_cuenta_contable" => $nueva_cuenta->getIdCuentaContable());
 }
示例#2
0
 /**
  *
  *Edita la informacion de una caja
  *
  * @param id_caja int Id de la caja a editar
  * @param descripcion string Descripcion de la caja
  * @param token string Token generado por el pos client
  **/
 public static function EditarCaja($id_caja, $control_billetes = null, $descripcion = null, $token = null)
 {
     Logger::log("Editando caja");
     //Valida los parametros de la caja y que la caja este activa
     $validar = self::validarParametrosCaja($id_caja, null, $token, $descripcion);
     if (is_string($validar)) {
         Logger::error($validar);
         throw new Exception($validar);
     }
     $caja = CajaDAO::getByPK($id_caja);
     if (!$caja->getActiva()) {
         Logger::error("La caja no esta activa, no se puede editar");
         throw new Exception("La caja no esta activa, no se puede editar");
     }
     //Si un parametro no es nulo, se toma como actualizacion
     if (!is_null($descripcion)) {
         $caja->setDescripcion($descripcion);
         $cc = CuentaContableDAO::getByPK($caja->getIdCuentaContable());
         if (count($cc) > 0) {
             $cc->setNombreCuenta($descripcion);
             DAO::transBegin();
             try {
                 CuentaContableDAO::save($cc);
             } catch (Exception $e) {
                 DAO::transRollback();
                 Logger::error("No se pudo editar la cuenta contable de la caja {$descripcion}: " . $e);
                 throw new Exception("No se pudo editar la cuenta contable de la caja {$descripcion}");
             }
             DAO::transEnd();
             Logger::log("Cuenta contable de la caja: {$descripcion} editada correctamente");
         }
     }
     //fin if $descripcion
     if (!is_null($token)) {
         $caja->setToken($token);
     }
     if (!is_null($control_billetes)) {
         $caja->setControlBilletes($control_billetes);
     }
     DAO::transBegin();
     try {
         CajaDAO::save($caja);
     } catch (Exception $e) {
         DAO::transRollback();
         Logger::error("No se pudo editar la caja: " . $e);
         throw new Exception("No se pudo editar la caja");
     }
     DAO::transEnd();
     Logger::log("Caja editada exitosamente");
 }
 /**
  *
  *Edita un concepto de ingreso
  *
  * @param id_concepto_ingreso int Id del concepto de ingreso a modificar
  * @param id_cuenta_contable int El id de la cuenta contable
  * @param descripcion string Descripcion larga del concepto de ingreso
  * @param nombre string Justificacion que aparecera despues de la leyenda "ingreso por concepto de"
  **/
 public static function EditarConceptoIngreso($id_concepto_ingreso, $id_cuenta_contable, $descripcion = null, $nombre = null)
 {
     Logger::log("Editando concepto de ingreso");
     //valida si ha recibido algun parametro para la edicion
     if (!$nombre && !$descripcion && !$id_cuenta_contable) {
         Logger::warn("No se ha recibido un parametro a editar, no hay nada que editar");
         throw new Exception("No se ha recibido un parametro a editar, no hay nada que editar");
     }
     //valida los parametros recibidos
     $validar = self::validarParametrosConceptoIngreso($id_concepto_ingreso, $nombre, $descripcion, $id_cuenta_contable);
     if (is_string($validar)) {
         Logger::error($validar);
         throw new Exception($validar);
     }
     $concepto_ingreso = ConceptoIngresoDAO::getByPK($id_concepto_ingreso);
     $cuenta = CuentaContableDAO::getByPK($id_cuenta_contable);
     //se toman como actualizacion aquellos parametros que no son null
     if (!is_null($nombre)) {
         $concepto_gasto->setNombre($nombre);
         $cuenta->setNombreCuenta($nombre);
     }
     if (!is_null($descripcion)) {
         $concepto_ingreso->setDescripcion($descripcion);
     }
     if (!is_null($monto)) {
         $concepto_ingreso->setIdCuentaContable($id_cuenta_contable);
     }
     DAO::transBegin();
     try {
         ConceptoIngresoDAO::save($concepto_ingreso);
         CuentaContableDAO::save($cuenta);
     } catch (Exception $e) {
         DAO::transRollback();
         Logger::error("No se pudo editar el concepto de ingreso: " . $e);
         throw new Exception("No se pudo editar el concepto de ingreso");
     }
     DAO::transEnd();
     Logger::log("Concepto de Ingreso editado exitosamente");
 }