/** * *Cambiar los atributos de una categoria especifica. * * @param id int El ID de la cateforia a editar. * @param activa bool El nuevo estado de la categoria especificada. * @param descripcion string La nueva descripcion de la categoria especificada. * @param id_padre int El ID del nuevo padre de la categoria especificada. * @param nombre string El nuevo nombre de la categoria especificada. **/ public static function EditarCategoria($id, $activa = null, $descripcion = null, $id_padre = null, $nombre = null) { $categoria = CategoriaContactoDAO::getByPK($id); if (!is_null($activa)) { $categoria->setActiva($activa); } if (!is_null($descripcion)) { $categoria->setDescripcion($descripcion); } if (!is_null($id_padre)) { $categoria->setIdPadre($id_padre); } if (!is_null($nombre)) { $categoria->setNombre($nombre); } if (CategoriaContactoDAO::ChecarRecursion($categoria->getId(), $categoria->getIdPadre())) { try { ContabilidadController::EditarNombreCuentasCategoriaContactos($id, $categoria->nombre, $categoria->id_padre); CategoriaContactoDAO::save($categoria); } catch (Exception $e) { throw new Exception("Error al modificar categoria, verifique sus datos.", 901); } } else { throw new Exception("Una categoria no puede ser hija de otra categoria descendiente, verifique sus datos.", 901); } }
$page = new GerenciaComponentPage(); $page->addComponent(new TitleComponent("Nueva Cuenta")); $page->requireParam("idcc", "GET", "Este catalogo de cuentas no existe."); //forma de nueva caja $page->addComponent("<div class='POS Boton' onClick='window.location=\"contabilidad.cuentas.php?idcc={$_GET["idcc"]}\"'> << Regresar</div> "); $form = new DAOFormComponent(array(new CuentaContable())); $controller = new ContabilidadController(); $catalogo = $controller::DetalleCatalogoCuentas($_GET["idcc"]); $form->hideField(array("id_cuenta_contable", "clave", "nivel", "consecutivo_en_nivel", "afectable", "activa")); $form->addApiCall("api/contabilidad/cuenta/nueva"); $form->onApiCallSuccessRedirect("contabilidad.cuentas.nueva.php?idcc={$_GET['idcc']}"); $form->createComboBoxJoin("id_catalogo_cuentas", "id_catalogo_cuentas", array(array("id" => $_GET["idcc"], "caption" => $catalogo["descripcion"])), $_GET["idcc"]); $form->createComboBoxJoin("naturaleza", "naturaleza", array(array("id" => "Acreedora", "caption" => "Acreedora"), array("id" => "Deudora", "caption" => "Deudora"))); $form->createComboBoxJoin("tipo_cuenta", "tipo_cuenta", array(array("id" => "Balance", "caption" => "Balance"), array("id" => "Estado de Resultados", "caption" => "Estado de Resultados"))); $form->createComboBoxJoin("es_cuenta_orden", "es_cuenta_orden", array(array("id" => 0, "caption" => "No"), array("id" => 1, "caption" => "Si"))); $form->createComboBoxJoin("es_cuenta_mayor", "es_cuenta_mayor", array(array("id" => 0, "caption" => "No"), array("id" => 1, "caption" => "Si"))); $form->createComboBoxJoin("clasificacion", "clasificacion", array(array("id" => "Activo Circulante", "caption" => "Activo Circulante"), array("id" => "Activo Fijo", "caption" => "Activo Fijo"), array("id" => "Activo Diferido", "caption" => "Activo Diferido"), array("id" => "Pasivo Circulante", "caption" => "Pasivo Circulante"), array("id" => "Pasivo Largo Plazo", "caption" => "Pasivo Largo Plazo"), array("id" => "Capital Contable", "caption" => "Capital Contable"), array("id" => "Ingresos", "caption" => "Ingresos"), array("id" => "Egresos", "caption" => "Egresos"))); $form->createComboBoxJoin("abonos_aumentan", "abonos_aumentan", array(array("id" => 0, "caption" => "No"), array("id" => 1, "caption" => "Si"))); $form->createComboBoxJoin("cargos_aumentan", "cargos_aumentan", array(array("id" => 0, "caption" => "No"), array("id" => 1, "caption" => "Si"))); $form->makeObligatory(array("nombre_cuenta", "naturaleza", "clasificacion", "tipo_cuenta", "es_cuenta_mayor", "es_cuenta_orden", "abonos_aumentan", "cargos_aumentan", "id_catalogo_cuentas")); $ctas = ContabilidadController::BuscarCuenta($_GET["idcc"]); $cuentas = array(); //para enviar el id de cuenta contable en el combo de id_cuenta_padre se debe hacer este foreach foreach ($ctas["resultados"] as $cta) { array_push($cuentas, array("id" => $cta->getIdCuentaContable(), "caption" => $cta->getNombreCuenta())); } //se llena el combo con los ids cambiados para que no se envien los id_cuenta_padre si no el id de la cuenta $form->createComboBoxJoin("id_cuenta_padre", "nombre_cuenta", $cuentas); $page->addComponent($form); //render the page $page->render();
/** * @expectedException BusinessLogicException */ public function testNuevaCuentaEstadoResultadosDeudoraNoIngresos() { $id_catalogo_cuentas = self::NuevoCatalogoCuentas(); ContabilidadController::NuevaCuenta(0, 1, 'Ingresos', 1, 0, $id_catalogo_cuentas, "Deudora", "Bancos", "Estado de Resultados", $id_cuenta_padre = ""); }
protected function GenerateResponse() { try { $this->response = ContabilidadController::DetalleCuenta(isset($_POST['id_cuenta_contable']) ? $_POST['id_cuenta_contable'] : null); } catch (Exception $e) { //Logger::error($e); throw new ApiException($this->error_dispatcher->invalidDatabaseOperation($e->getMessage())); } }
/** * *Este metodo creara una caja asociada a una sucursal. Debe haber una caja por CPU. * * @param token string el token que pos_client otorga por equipo * @param codigo_caja string El codigo de uso interno de la caja * @param impresoras json Un objeto con las impresoras asociadas a esta sucursal. * @param basculas json Un objeto con las basculas conectadas a esta caja. * @param descripcion string Descripcion de esta caja * @return id_caja int Id de la caja generada por la isnercion **/ public static function NuevaCaja($token, $basculas = null, $control_billetes = 0, $descripcion = null, $id_sucursal = null, $impresoras = null) { Logger::log("Creando nueva caja"); //Se validan los parametros de caja, si no se recibe sucursal, se intenta //tomar de la sesion $validar = self::validarParametrosCaja(null, $id_sucursal, $token, $descripcion); if (is_string($validar)) { Logger::error($validar); throw new Exception($validar); } if (is_null($id_sucursal)) { $id_sucursal = self::getSucursal(); if (is_null($id_sucursal)) { Logger::error("No se pudo obtener la sucursal actual y no se obtuvo ninguna sucursal"); throw new Exception("No se pudo obtener la sucursal actual y no se obtuvo ninguna sucursal"); } } //si no recibimos control de billetes, lo ponemos en cero. if (is_null($control_billetes)) { $control_billetes = 0; } $caja = ContabilidadController::BuscarCuenta(1, $afectable = "", $clasificacion = "Activo Circulante", $clave = "", $consecutivo_en_nivel = "", $es_cuenta_mayor = "", $es_cuenta_orden = "", $id_cuenta_contable = "", $id_cuenta_padre = "", $naturaleza = "Deudora", $nivel = "", $nombre_cuenta = "Caja", $tipo_cuenta = "Balance"); if (count($caja["resultados"]) < 1) { Logger::Log("Debe de existir la cuenta contable 'Caja' para dar de alta una caja"); throw new BusinessLogicException("Debe de existir la cuenta contable 'Caja' para dar de alta una caja"); } //se inserta la cuenta contable $res = ContabilidadController::NuevaCuenta($caja["resultados"][0]->getAbonosAumentan(), $caja["resultados"][0]->getCargosAumentan(), $caja["resultados"][0]->getClasificacion(), $caja["resultados"][0]->getEsCuentaMayor(), $caja["resultados"][0]->getEsCuentaOrden(), $caja["resultados"][0]->getIdCatalogoCuentas(), $caja["resultados"][0]->getNaturaleza(), $descripcion, $caja["resultados"][0]->getTipoCuenta(), $caja["resultados"][0]->getIdCuentaContable()); //Se inicializa el registro de caja $caja = new Caja(); $caja->setIdSucursal($id_sucursal); $caja->setAbierta(0); $caja->setActiva(1); $caja->setControlBilletes($control_billetes); $caja->setDescripcion($descripcion); $caja->setIdSucursal($id_sucursal); $caja->setSaldo(0); $caja->setToken($token); $caja->setIdCuentaContable($res["id_cuenta_contable"]); DAO::transBegin(); try { //Se guarda el registro de caja y si se recibieron impresoras se registran con la caja //en la tabla impresora_caja. CajaDAO::save($caja); if (!is_null($impresoras)) { $impresoras = object_to_array($impresoras); if (!is_array($impresoras)) { throw new Exception("Las impresoras son invalidas", 901); } $impresora_caja = new ImpresoraCaja(array("id_caja" => $caja->getIdCaja())); foreach ($impresoras as $id_impresora) { if (is_null(ImpresoraDAO::getByPK($id_impresora))) { throw new Exception("La impresora con id: " . $id_impresora . " no existe", 901); } $impresora_caja->setIdImpresora($id_impresora); ImpresoraCajaDAO::save($impresora_caja); } } } catch (Exception $e) { DAO::transRollback(); Logger::error("No se pudo crear la caja: " . $e); if ($e->getCode() == 901) { throw new Exception("No se pudo crear la caja: " . $e->getMessage(), 901); } throw new Exception("No se pudo crear la caja", 901); } DAO::transEnd(); Logger::log("caja creada exitosamente"); return array("id_caja" => $caja->getIdCaja()); }
/** * * Crear una nueva empresa. Por default una nueva empresa no tiene sucursales. * Varios RFC`s pueden repetirse siempre y cuando solo exista una empresa activa. * * @author Juan Manuel García Carmona <*****@*****.**> * * @param contabilidad json JSON donde se describe la moneda que usara como base la empresa, indica la descripción del ejercicio, el periodo inicial y la duración de cada periodo * @param direccion json { "calle": "Francisco I Madero", "numero_exterior": "1009A", "numero_interior": 12, "colonia": "centro", "codigo_postal": "38000", "telefono1": "4611223312", "telefono2": "", "id_ciudad": 3, "referencia": "El local naranja"} * @param razon_social string El nombre de la nueva empresa. * @param rfc string RFC de la nueva empresa. * @param cuentas_bancarias json arreglo que contiene los id de las cuentas bancarias * @param direccion_web string Direccion del sitio de la empresa * @param duplicar bool Significa que se duplicara una empresa, solo es una bandera, en caso de que exista y sea = true , significa que duplicara todo lo referente a la empresa (direccion, impuestos asociados, cuentas bancarias, etc..) * @param email string Correo electronico de la empresa * @param impuestos_compra json Impuestos de compra por default que se heredan a los productos * @param impuestos_venta json Impuestos de venta por default que se heredan a los productos * @param mensaje_morosos string mensaje enviado a los clientes cuando un pago es demorado * @param representante_legal string El nombre del representante legal de la nueva empresa. * @param uri_logo string url del logo de la empresa * @return id_empresa int El ID autogenerado de la nueva empresa. **/ static function Nuevo($contabilidad, $direccion, $razon_social, $rfc, $cuentas_bancarias = null, $direccion_web = null, $duplicar = false, $email = null, $impuestos_compra = null, $impuestos_venta = null, $mensaje_morosos = null, $representante_legal = null, $uri_logo = null) { //verificamos los impuestos de compra if ($impuestos_compra !== NULL && !is_array($impuestos_compra)) { Logger::error("Error : Verifique los datos especiicados en los impuestos de compra, debe ser una array no vacio"); throw new InvalidDataException("Error : Verifique los datos especiicados en los impuestos de compra, debe ser una array no vacio"); } //verificamos los impuestos de venta if ($impuestos_venta !== NULL && !is_array($impuestos_venta)) { Logger::error("Error : Verifique los datos especiicados en los impuestos de venta, debe ser una array no vacio"); throw new InvalidDataException("Error : Verifique los datos especiicados en los impuestos de venta, debe ser una array no vacio"); } //verificamos si se enviaron todos los parametros if (empty($contabilidad->id_moneda) || empty($contabilidad->ejercicio) || empty($contabilidad->periodo_actual) || empty($contabilidad->duracion_periodo)) { Logger::error("Error : Verifique que la información de contabilidad este completa"); throw new InvalidDataException("Verifique que la información de contabilidad este completa : " . $contabilidad); } //verificamos si se enviaron valores correctos if (!is_numeric($contabilidad->id_moneda) || !is_numeric($contabilidad->periodo_actual) || !is_numeric($contabilidad->duracion_periodo)) { Logger::error("Error : Verifique que la información de contabilidad sea correcta"); throw new InvalidDataException("Verifique que la información de contabilidad sea correcta"); } //validamos decimales if ($contabilidad->id_moneda - (int) $contabilidad->id_moneda !== 0 || $contabilidad->periodo_actual - (int) $contabilidad->periodo_actual !== 0 || $contabilidad->duracion_periodo - (int) $contabilidad->duracion_periodo !== 0) { Logger::error("Error : Verifique que la información de contabilidad sea correcta, el id_moneda, periodo_actual y duracion_periodo deben ser valores enteros"); throw new InvalidDataException("Error : Verifique que la información de contabilidad sea correcta, el id_moneda, periodo_actual y duracion_periodo deben ser valores enteros"); } if ($contabilidad->duracion_periodo < "1" || $contabilidad->duracion_periodo === "5" || $contabilidad->duracion_periodo > "6") { Logger::error("Error : Verifique que la duracion de los perodos, solo pueden durar 1, 2, 3, 4 y 6 meses"); throw new InvalidDataException("Error : Verifique que la duracion de los perodos, solo pueden durar 1, 2, 3, 4 y 6 meses"); } if ($contabilidad->periodo_actual > 12 / $contabilidad->duracion_periodo) { Logger::error("Error : Verifique el valor del periodo actual, debe concordar con la relacion de la duracion de los periodos"); throw new InvalidDataException("Error : Verifique el valor del periodo actual, debe concordar con la relacion de la duracion de los periodos"); } if (is_null($direccion)) { throw new InvalidDataException("Missing direccion"); } if (!is_array($direccion)) { $direccion = object_to_array($direccion); } $id_direccion = DireccionController::NuevaDireccion(isset($direccion["calle"]) ? $direccion["calle"] : null, isset($direccion["numero_exterior"]) ? $direccion["numero_exterior"] : null, isset($direccion["colonia"]) ? $direccion["colonia"] : null, isset($direccion["id_ciudad"]) ? $direccion["id_ciudad"] : null, isset($direccion["codigo_postal"]) ? $direccion["codigo_postal"] : null, isset($direccion["numero_interior"]) ? $direccion["numero_interior"] : null, isset($direccion["referencia"]) ? $direccion["referencia"] : null, isset($direccion["telefono1"]) ? $direccion["telefono1"] : null, isset($direccion["telefono2"]) ? $direccion["telefono2"] : null); DAO::transBegin(); $id_logo = -1; //verificamos si se ha enviado informacion sobre un logo if (!empty($uri_logo)) { $logo = new Logo(array("imagen" => $uri_logo, "tipo" => "-")); try { LogoDAO::save($logo); } catch (Exception $e) { DAO::transRollback(); Logger::error("No se pudo crear la empresa, error al crear el logo: " . $e->getMessage()); throw new Exception("No se pudo crear la empresa, consulte a su administrador de sistema", 901); } $id_logo = $logo->getIdLogo(); } //Se crea la empresa con los parametros obtenidos. $empresa = new Empresa(array("id_direccion" => $id_direccion, "rfc" => $rfc, "razon_social" => trim($razon_social), "representante_legal" => $representante_legal, "fecha_alta" => time(), "fecha_baja" => null, "activo" => true, "direccion_web" => $direccion_web, "cedula" => "", "id_logo" => $id_logo, "mensaje_morosos" => $mensaje_morosos)); //Se busca el rfc en la base de datos. Si hay una empresa activa con el mismo rfc se lanza un error $empresas = EmpresaDAO::search(new Empresa(array("rfc" => $rfc, "activo" => 1))); if (!empty($empresas)) { Logger::error("Este rfc ya esta en uso por la empresa activa"); throw new InvalidDataException("El rfc: " . $rfc . " ya esta en uso", 901); } /* * Se busca la razon social en la base de datos. * Si hay una empresa activa con la misma razon zocial se lanza un error. * Se usa trim para cubrir los casos "caffeina" y " caffeina ". */ $empresas = EmpresaDAO::search(new Empresa(array("razon_social" => trim($razon_social), "activo" => 1))); if (!empty($empresas)) { Logger::error("La razon social: " . $razon_social . " ya esta en uso por la empresa: " . $empresas[0]->getIdEmpresa()); throw new InvalidDataException("La razon social: " . $razon_social . " ya esta en uso", 901); } try { EmpresaDAO::save($empresa); } catch (Exception $e) { DAO::transRollback(); Logger::error("No se pudo crear la empresa: " . $e->getMessage()); throw new Exception("No se pudo crear la empresa, consulte a su administrador de sistema", 901); } //verificamos si la moneda que se esta indicando exista if (!($moneda = MonedaDAO::getByPK($contabilidad->id_moneda))) { DAO::transRollback(); Logger::error("Error : No existe la moneda indicada."); throw new InvalidDataException("Error : No existe la moneda indicada.", 901); } //creamos la configuracion de la moneda para esta empresa $moneda_base = new Configuracion(array("descripcion" => "id_moneda_base", "valor" => $contabilidad->id_moneda, "id_usuario" => "", "fecha" => time())); try { ConfiguracionDAO::save($moneda_base); } catch (Exception $e) { DAO::transRollback(); Logger::error("No se pudo crear la configuracion de la moneda base para la empresa: " . $e->getMessage()); throw new Exception("No se pudo crear la configuracion de la moneda base para la empresa", 901); } //relacionamos la configuracion con la empresa que estamos creando $configuracion_empresa = new ConfiguracionEmpresa(array("id_configuracion" => $moneda_base->getIdConfiguracion(), "id_empresa" => $empresa->getIdEmpresa())); try { ConfiguracionEmpresaDAO::save($configuracion_empresa); } catch (Exception $e) { DAO::transRollback(); Logger::error("No se pudo crear la relacion entre la moneda base y la empresa: " . $e->getMessage()); throw new Exception("No se pudo crear la relacion entre la moneda base y la empresa", 901); } //creamos la configuracion del tipo de cambio para esta empresa $tc = new Configuracion(array("descripcion" => "tipo_cambio", "valor" => "", "id_usuario" => "", "fecha" => time())); try { ConfiguracionDAO::save($tc); } catch (Exception $e) { DAO::transRollback(); Logger::error("No se pudo crear la configuracion del tipo de cambio para la empresa: " . $e->getMessage()); throw new Exception("No se pudo crear la configuracion del tipo de cambio para la empresa", 901); } //relacionamos la configuracion con la empresa que estamos creando $conf_empresa = new ConfiguracionEmpresa(array("id_configuracion" => $tc->getIdConfiguracion(), "id_empresa" => $empresa->getIdEmpresa())); try { ConfiguracionEmpresaDAO::save($conf_empresa); } catch (Exception $e) { DAO::transRollback(); Logger::error("No se pudo crear la relacion entre el tipo de cambio y la empresa: " . $e->getMessage()); throw new Exception("No se pudo crear la relacion entre el tipo de cambio y la empresa", 901); } //creamos los periodos necesarios $_p = 1; $_periodo = NULL; $_ejercicio = NULL; $_mes_inicial = 1; $_mes_final = 1; $_anio = date("Y"); $_inicio = 0; $_fin = 0; for ($i = $contabilidad->duracion_periodo; $i <= 12; $i += $contabilidad->duracion_periodo) { //obtenemos la fecha inicial $_inicio = mktime(0, 0, 0, $_mes_inicial, 1, $_anio); //obtenemos la fecha final $_mes_final = $_mes_inicial * $_p; $_fin = mktime(23, 59, 59, $_mes_final, getUltimoDiaDelMes($_mes_final, $_anio), $_anio); //damos de alta los periodos try { $_periodo = new Periodo(array("periodo" => $_p, "inicio" => $_inicio, "fin" => $_fin)); PeriodoDAO::save($_periodo); } catch (Exception $e) { DAO::transRollback(); Logger::error("Error al crear los periodos : " . $e->getMessage()); throw new Exception("Error al crear los periodos", 901); } //damos de alta el ejercicio if ($_p == $contabilidad->periodo_actual) { try { $_ejercicio = new Ejercicio(array("anio" => $_anio, "id_periodo" => $_periodo->getIdPeriodo(), "inicio" => $_inicio, "fin" => $_fin, "vigente" => 1)); EjercicioDAO::save($_ejercicio); } catch (Exception $e) { DAO::transRollback(); Logger::error("Error al crear el ejercicio : " . $e->getMessage()); throw new Exception("Error al crear el ejercicio", 901); } } $_mes_inicial = $_mes_final + 1; $_p++; } //relacionamos a la empresa con el ejercicio try { EjercicioEmpresaDAO::save(new EjercicioEmpresa(array("id_ejercicio" => $_ejercicio->getIdEjercicio(), "id_empresa" => $empresa->getIdEmpresa()))); } catch (Exception $e) { DAO::transRollback(); Logger::error("Error al relacionar la empresa con el ejercicio: " . $e->getMessage()); throw new Exception("Error al relacionar la empresa con el ejercicio", 901); } if (!empty($impuestos_compra)) { for ($i = 0; $i < count($impuestos_compra); $i++) { try { ImpuestoEmpresaDAO::save(new ImpuestoEmpresa(array("id_empresa" => $empresa->getIdEmpresa(), "id_impuesto" => $impuestos_compra[$i]))); } catch (Exception $e) { Logger::warn("Error al guardar un impuesto de compra : " . $e->getMessage()); } } } if (!empty($impuestos_venta)) { for ($i = 0; $i < count($impuestos_venta); $i++) { try { ImpuestoEmpresaDAO::save(new ImpuestoEmpresa(array("id_empresa" => $empresa->getIdEmpresa(), "id_impuesto" => $impuestos_venta[$i]))); } catch (Exception $e) { Logger::warn("Error al guardar un impuesto de venta : " . $e->getMessage()); } } } if (!empty($cuentas_bancarias)) { foreach ($cuentas_bancarias as $cuenta_bancarias) { //Pendiente hasta que se haga el SPEC de cuentas bancarias } } DAO::transEnd(); //Creamos el catalogo de cuentas por default para esta nueva empresa ContabilidadController::NuevoCatalogoCuentasEmpresa($empresa->getIdEmpresa()); Logger::log("Empresa creada exitosamente, id=" . $empresa->getIdEmpresa()); return array("id_empresa" => (int) $empresa->getIdEmpresa()); }
$page->addComponent(new TitleComponent("Ingresos", 3)); $lista = CargosYAbonosController::ListaIngreso(); $tabla = new TableComponent(array("id_empresa" => "Empresa", "id_concepto_ingreso" => "Concepto", "id_usuario" => "Usuario", "descripcion" => "Descripcion", "fecha_del_ingreso" => "Fecha", "monto" => "Monto"), $lista["resultados"]); $tabla->addColRender("cancelado", "funcion_cancelado"); $tabla->addColRender("id_empresa", "R::RazonSocialFromIdEmpresa"); $tabla->addColRender("monto", "R::MoneyFromDouble"); $tabla->addColRender("id_concepto_ingreso", "R::ConceptoIngresoFromId"); $tabla->addColRender("fecha_del_ingreso", "R::FriendlyDateFromUnixTime"); $tabla->addColRender("id_usuario", "R::UserFullNameFromId"); $tabla->addColRender("cancelado", "funcion_cancelado"); $page->addComponent($tabla); /* * Conceptos de ingresos **/ $gastos = ContabilidadController::ListarCuentasConceptosGastos(); $ingresos = ContabilidadController::ListarCuentasConceptosIngresos(); $page->nextTab("Conceptos"); $page->addComponent(new TitleComponent("Nuevo concepto de ingreso", 3)); $form = new DAOFormComponent(new ConceptoIngreso()); $form->addApiCall("api/cargosyabonos/ingreso/concepto/nuevo", "POST"); $form->onApiCallSuccessRedirect("cargos_y_abonos.php"); $form->hideField(array("id_concepto_ingreso")); $form->hideField(array("activo")); $form->createComboBoxJoin("id_cuenta_contable", "nombre_cuenta", $ingresos["resultados"]); $form->makeObligatory(array("nombre")); $form->makeObligatory(array("id_cuenta_contable")); $page->addComponent($form); /* * Conceptos de gasto **/ $form = new DAOFormComponent(new ConceptoGasto());
/** * *Crea un nuevo concepto de ingreso *Update : En la respuesta basta con solo indicar success : true | false, y en caso de fallo indicar el por que. * * @param id_cuenta_contable int El id de la cuenta contable a donde se registraran los ingresos correspondientes a este concepto * @param nombre string Justificacion que aparecer despus de la leyenda "ingreso por concepto de" * @param descripcion string Descripcion larga de este concepto de ingreso * @return id_concepto_ingreso int Id autogenerado por la creacion del nuevo concepto de ingreso **/ public static function NuevoConceptoIngreso($id_cuenta_contable, $nombre, $descripcion = null) { Logger::log("Creando nuevo concepto de ingreso"); //valida los parametros de concepto ingreso $validar = self::validarParametrosConceptoIngreso(null, $nombre, $descripcion, $id_cuenta_contable); if (is_string($validar)) { Logger::error($validar); throw new Exception($validar); } //Inicializa el registro de ingreso $concepto_ingreso = new ConceptoIngreso(); $concepto_ingreso->setNombre(trim($nombre)); $concepto_ingreso->setIdCuentaContable($id_cuenta_contable); $concepto_ingreso->setDescripcion($descripcion); $concepto_ingreso->setActivo(1); DAO::transBegin(); try { ConceptoIngresoDAO::save($concepto_ingreso); } catch (Exception $e) { DAO::transRollback(); Logger::error("No se pudo crear el nuevo concepto de ingreso: " . $e); throw new Exception("No se pudo crear el nuevo concepto de ingreso"); } DAO::transEnd(); Logger::log("Concepto de ingreso creado exitosamente"); $cuenta_padre = CuentaContableDAO::getByPK($id_cuenta_contable); ContabilidadController::NuevaCuenta($cuenta_padre->getAbonosAumentan(), $cuenta_padre->getCargosAumentan(), $cuenta_padre->getClasificacion(), $cuenta_padre->getEsCuentaMayor(), $cuenta_padre->getEsCuentaOrden(), $cuenta_padre->getIdCatalogoCuentas(), $cuenta_padre->getNaturaleza(), $nombre, $cuenta_padre->getTipoCuenta(), $id_cuenta_contable); return array("id_concepto_ingreso" => $concepto_ingreso->getIdConceptoIngreso()); }