/** * *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()); }
/** * *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"); }