Sistema de Gestión de Negocios "Hexa"

Base de datos de conocimiento.

Doc. Ref. 32000
Título: Los métodos Cntb en Hexa V9
Autor: Soltec
Última actualización: 17/08/2018
#asiento #apunte #cuenta #contabilidad #documento


Los métodos Cntb en Hexa V.9

El objeto Cntb es una instancia de la clase cCntb y reúne los métodos de contabilización de documentos de Hexa. Permite generar y eliminar los asientos de facturas de clientes y proveedores, cobros, descuentos, devoluciones y pagos, así como contabilizar remesas, amortizaciones y regularizaciones de existencias. También permite generar asientos a partir de modelos periódicos y obtener las cuentas contables que corresponden a cada documento.

En los métodos con los parámetros Condicion, Orden y Opciones, Condicion indica el criterio SQL de selección, sin la palabra WHERE, y Orden los campos de ordenación, sin ORDER BY. Una condición vacía selecciona todos los registros de la tabla correspondiente. Opciones contiene los parámetros propios de cada método, con el formato "Nombre=Valor". Cuando no se indica ninguna opción específica, puede pasarse una cadena vacía.

Los métodos de contabilización utilizan los datos de los documentos y la configuración contable de Hexa. Los textos de resultado indican los registros procesados; en los métodos de descontabilización, el contador no comprueba individualmente que el borrado del asiento haya tenido éxito. Los ejemplos utilizan códigos y números de documento ilustrativos.

Los métodos disponibles son los siguientes:

  • Cntb.ContabilizaFactura(Condicion, Orden, Opciones)

    Genera el asiento de cada registro seleccionado de la tabla Factura. Si ya existe un asiento de la factura, lo elimina antes de procesarla. Omite las facturas cuyo campo Contabilizar no sea afirmativo y las de total cero.

    Contabiliza el cliente, las ventas, el IVA, el recargo de equivalencia, los descuentos, el IRPF, el recargo financiero y los suplidos Según los importes y la configuración. Las opciones de configuración DesglosarDebitos y DesglosarVentas permiten distribuir los apuntes por movimientos. Las cuentas se obtienen mediante CuentaFactura y los parámetros contables; las cuentas de IVA pueden definirse por tipo y ubicación o tomarse de la tabla TipoIVA. Si hay IVA y la ubicación no es Nacional ni está vacía, genera también el apunte de IVA soportado.

    Parámetros en Opciones: "Interno" indica si el asiento se genera como interno. Al terminar cada asiento, actualiza sus importes y contrapartidas. Devuelve "Facturas contabilizadas=" seguido del número de facturas procesadas, o el texto del error.

    Ejemplo:

    Main = Cntb.ContabilizaFactura("Prefijo='A' AND Numero=1234", "Prefijo, Numero", "Interno=No")
  • Cntb.DesContabilizaFactura(Condicion, Orden, Opciones)

    Recorre las facturas de cliente seleccionadas y elimina su asiento, identificado por el prefijo, el número y el tipo de documento FACTURA. Conserva los registros de las facturas. No utiliza parámetros en Opciones.

    Devuelve "Facturas descontabilizadas=" seguido del número de facturas recorridas, o el texto del error.

    Ejemplo:

    Main = Cntb.DesContabilizaFactura("Prefijo='A' AND Numero=1234", "Prefijo, Numero", "")
  • Cntb.ContabilizaFacturaProveedor(Condicion, Orden, Opciones)

    Genera los asientos de los registros seleccionados de FacturaProveedor, eliminando previamente el asiento existente. Contabiliza proveedor, compras, IVA soportado, recargo de equivalencia, descuentos, IRPF, recargo financiero y suplidos. Cuando hay IVA y la ubicación no es Nacional ni está vacía, genera también el apunte de IVA repercutido.

    La configuración DesglosarCreditos y DesglosarCompras permite distribuir los importes por movimientos. Si la factura tiene CuentaCompras, no desglosa las compras. Las cuentas de IVA se buscan en los parámetros por tipo y ubicación y, en su defecto, en TipoIVA.

    Parámetros en Opciones: "Interno" indica si el asiento es interno. Las facturas de total cero se omiten. Si encuentra una factura con Contabilizar desactivado, termina el proceso completo devolviendo "Marcada como a no contabilizar". Al completar el recorrido devuelve "Facturas de proveedor contabilizadas=" y la cantidad procesada.

    Ejemplo:

    Main = Cntb.ContabilizaFacturaProveedor("Prefijo='P' AND Numero=1234", "Prefijo, Numero", "Interno=No")
  • Cntb.DesContabilizaFacturaProveedor(Condicion, Orden, Opciones)

    Elimina el asiento de las facturas de proveedor seleccionadas, buscando el tipo de documento FacturaProveedor y su prefijo y número. Conserva las facturas. Opciones no se utiliza.

    Devuelve "Facturas de proveedor descontabilizadas=" y la cantidad recorrida, o el texto del error.

    Ejemplo:

    Main = Cntb.DesContabilizaFacturaProveedor("Prefijo='P' AND Numero=1234", "Prefijo, Numero", "")
  • Cntb.ContabilizaReciboCobro(Condicion, Orden, Opciones)

    Contabiliza el cobro de los registros seleccionados de Recibo, sustituyendo el asiento de cobro anterior. Requiere Contabilizar activado y un banco de cobro existente. Con DesglosarDebitos activado, necesita una factura de origen y distribuye el apunte del cliente entre sus movimientos.

    Para los recibos cobrados utiliza FechaCobro. Si está activado el parámetro de configuración ContabilizarPrevisiones, admite recibos pendientes con vencimiento y banco, generando un asiento de tipo Previsión. El asiento de un cobro efectivo puede ser Pendiente si así lo indica el banco.

    Abona la cuenta del cliente y carga la cuenta Contabilidad del banco o su cuenta ContabilidadDescuento cuando el recibo está descontado; también tiene en cuenta las previsiones de descuento. Los asientos son internos. Opciones se transmite a los eventos del método, sin opciones propias de contabilización.

    Devuelve el texto "Cobros Contabilizadas=" y la cantidad procesada, o el texto del error.

    Ejemplo:

    Main = Cntb.ContabilizaReciboCobro("Prefijo='A' AND Numero=1234", "Prefijo, Numero", "")
  • Cntb.DesContabilizaReciboCobro(Condicion, Orden, Opciones)

    Elimina el asiento de tipo COBRO de los recibos seleccionados, sin eliminar los recibos ni sus asientos de descuento o devolución. Opciones no se utiliza.

    El texto devuelto por el código es "Recibos de proveedor descontabilizados=" seguido del contador, aunque este método trabaja sobre la tabla Recibo de clientes. Si se produce un error, devuelve su descripción.

    Ejemplo:

    Main = Cntb.DesContabilizaReciboCobro("Prefijo='A' AND Numero=1234", "Prefijo, Numero", "")
  • Cntb.ContabilizaReciboDescuento(Condicion, Orden, Opciones)

    Genera el asiento del descuento bancario de los recibos seleccionados. Utiliza Contabilidad y ContabilidadDescuento del banco de cobro: carga la primera y abona la segunda por el importe del recibo convertido a la moneda de contabilidad. Sustituye el asiento de descuento anterior y genera el nuevo como interno.

    Requiere Contabilizar activado y un banco existente. Con DesglosarDebitos activado omite los recibos sin factura de origen. Si ContabilizarPrevisiones está activado, puede generar una Previsión con FechaDescontar; para el descuento efectivo utiliza FechaDescontado. En el código actual, la comprobación previa de FechaDescontado evalúa directamente el campo como condición, por lo que no equivale a comprobar una fecha válida.

    Opciones se transmite a los eventos, sin parámetros propios. Devuelve "Descuentos Contabilizados=" y la cantidad procesada, o el texto del error.

    Ejemplo:

    Main = Cntb.ContabilizaReciboDescuento("Prefijo='A' AND Numero=1234", "Prefijo, Numero", "")
  • Cntb.DesContabilizaReciboDescuento(Condicion, Orden, Opciones)

    Elimina el asiento de tipo DESCUENTO de los recibos seleccionados. Conserva los recibos y sus otros asientos. Opciones no se utiliza. Devuelve "Recibos descontabilizados=" y la cantidad recorrida, o el texto del error.

    Ejemplo:

    Main = Cntb.DesContabilizaReciboDescuento("Prefijo='A' AND Numero=1234", "Prefijo, Numero", "")
  • Cntb.ContabilizaReciboDevolucion(Condicion, Orden, Opciones)

    Contabiliza la devolución de los recibos seleccionados que tengan Devuelto activado, una FechaDevolucion válida y un banco de cobro existente. Si el recibo deja de estar devuelto o no tiene una fecha válida, elimina su asiento de devolución anterior.

    Carga la cuenta del cliente y abona la cuenta del banco, o su cuenta de descuento si el recibo estaba descontado. Con DesglosarDebitos activado reparte el importe entre los movimientos de la factura y omite los recibos sin factura de origen. Sustituye el asiento anterior, actualiza los importes y establece las contrapartidas.

    El código lee "Interno" de Opciones, pero al crear el asiento utiliza siempre verdadero. Opciones también se transmite a los eventos. Devuelve "Devoluciones contabilizados=" y la cantidad procesada, o el texto del error.

    Ejemplo:

    Main = Cntb.ContabilizaReciboDevolucion("Prefijo='A' AND Numero=1234", "Prefijo, Numero", "")
  • Cntb.DesContabilizaReciboDevolucion(Condicion, Orden, Opciones)

    Elimina el asiento de tipo DEVOLUCION de los recibos seleccionados, conservando sus registros y los demás tipos de asiento. Opciones no se utiliza. Devuelve "Recibos descontabilizados=" y la cantidad recorrida, o el texto del error.

    Ejemplo:

    Main = Cntb.DesContabilizaReciboDevolucion("Prefijo='A' AND Numero=1234", "Prefijo, Numero", "")
  • Cntb.ContabilizaPago(Condicion, Orden, Opciones)

    Genera el asiento de los registros seleccionados de Pago, sustituyendo el anterior. Carga la cuenta del proveedor y abona la cuenta Contabilidad del banco de pago, convirtiendo el importe a la moneda de contabilidad. Incluye la referencia de la factura de proveedor en el concepto.

    Requiere Contabilizar activado y un banco existente. Para pagos realizados utiliza FechaPago; con ContabilizarPrevisiones activado admite pagos pendientes con vencimiento y banco y genera asientos de tipo Previsión. Con DesglosarCreditos activado distribuye el importe por movimientos y omite los pagos sin factura de proveedor de origen.

    Los asientos son internos. Opciones no se utiliza. Devuelve "Pagos contabilizados=" y la cantidad procesada, o el texto del error.

    Ejemplo:

    Main = Cntb.ContabilizaPago("Prefijo='P' AND Numero=1234", "Prefijo, Numero", "")
  • Cntb.DesContabilizaPago(Condicion, Orden, Opciones)

    Elimina el asiento de tipo PAGO correspondiente al prefijo y número de cada pago seleccionado. Conserva los registros de Pago. Opciones no se utiliza. Devuelve "Pagos descontabilizados=" y la cantidad recorrida, o el texto del error.

    Ejemplo:

    Main = Cntb.DesContabilizaPago("Prefijo='P' AND Numero=1234", "Prefijo, Numero", "")
  • Cntb.ContabilizaRemesaCobro(Condicion, Orden, Opciones)

    Genera un asiento conjunto de cobro por cada registro seleccionado de Remesa. Utiliza FechaCobro, abona la cuenta de cliente de cada recibo incluido y carga la cuenta del banco por el importe total. Redondea a dos decimales y utiliza directamente los importes de los recibos, sin conversión de moneda.

    Parámetros en Opciones: "Banco" indica el código del banco que se utilizará. Debe tener configurada Contabilidad y esa cuenta debe existir como subcuenta. El método no elimina asientos anteriores de la remesa.

    Devuelve los contadores no nulos "Contabilizadas=", "Sin Fecha=", "Sin Banco=" y "Sin Cuenta=". Sin Banco indica que no se ha obtenido una cuenta contable del banco; Sin Cuenta indica que no existe como subcuenta. Si no hay registros, devuelve una cadena vacía; ante un error, devuelve su descripción.

    Ejemplo:

    Main = Cntb.ContabilizaRemesaCobro("Numero=25", "Numero", "Banco=1")
  • Cntb.ContabilizaRemesaPagos(Condicion, Orden, Opciones)

    Genera un asiento conjunto por cada registro seleccionado de RemesaPagos, con FechaTramitacion. Carga la cuenta del proveedor correspondiente a cada pago de la remesa y abona la cuenta del banco por el total. Utiliza los importes de Pago redondeados a dos decimales, sin conversión de moneda.

    Parámetros en Opciones: "Banco" es el código del banco. Requiere fecha válida, cuenta Contabilidad configurada y existente como subcuenta. No elimina asientos anteriores.

    Devuelve los contadores no nulos "Contabilizadas=", "Sin Fecha=", "Sin Banco=" y "Sin Cuenta=", con el mismo significado que en ContabilizaRemesaCobro, o el texto del error.

    Ejemplo:

    Main = Cntb.ContabilizaRemesaPagos("Numero=25", "Numero", "Banco=1")
  • Cntb.ContabilizaRemesaDescuento(Condicion, Orden, Opciones)

    Genera un asiento de descuento por cada registro seleccionado de Remesa, utilizando FechaDescontado. Abona ContabilidadDescuento del banco por cada recibo y carga Contabilidad por el total de la remesa. Utiliza los importes de los recibos redondeados a dos decimales, sin conversión de moneda.

    Parámetros en Opciones: "Banco" indica el código del banco. Debe tener configuradas ambas cuentas; además comprueba que Contabilidad exista como subcuenta. No elimina asientos anteriores.

    Devuelve los contadores no nulos "Contabilizadas=", "Sin Fecha=", "Sin Banco=" y "Sin Cuenta=". En este método Sin Banco también incluye la falta de cuenta de descuento. Si se produce un error, devuelve su descripción.

    Ejemplo:

    Main = Cntb.ContabilizaRemesaDescuento("Numero=25", "Numero", "Banco=1")
  • Cntb.SeleccionaDocumentoNoContabilizado(FechaDesde, SeleccionMultiple)

    Busca documentos sin asiento desde FechaDesde, incluida esa fecha. Revisa facturas de clientes y proveedores por Fecha, recibos cobrados por FechaCobro, descontados por FechaDescontado, devueltos por FechaDevolucion y pagos realizados por FechaPago. Comprueba la ausencia del asiento correspondiente a cada tipo, prefijo y número.

    Con SeleccionMultiple falso marca el campo Seleccionado de los registros encontrados, sin desmarcar selecciones anteriores. Con verdadero prepara selecciones mediante Sel.CSel, una por cada tipo de documento con registros pendientes. Devuelve un resumen por tipo con las cantidades y, en su caso, el código de selección.

    En la rama de selección múltiple, el código actual añade una comilla doble al separador de condiciones, por lo que puede generar un criterio SQL incorrecto. El ejemplo utiliza la selección mediante el campo Seleccionado.

    Ejemplo:

    Main = Cntb.SeleccionaDocumentoNoContabilizado(DateSerial(2026, 1, 1), False)
  • Cntb.GeneraAsientoPeriodico(Codigo, Fecha)

    Genera un asiento en la fecha indicada a partir del modelo de AsientoPeriodico identificado por Codigo. Copia el concepto, proyecto y etiquetas del modelo y crea los apuntes definidos en ApuntePeriodico con sus cuentas, importes Debe menos Haber, conceptos, contrapartidas, proyectos y etiquetas. Finalmente actualiza el asiento y sus contrapartidas.

    Devuelve "No existe" si no encuentra el modelo, "La fecha corresponde a un periodo cerrado" si Fecha es anterior o igual a CierreContable, o "Generado asiento " seguido del número creado.

    Ejemplo:

    Main = Cntb.GeneraAsientoPeriodico("ALQUILER", DateSerial(2026, 9, 30))
  • Cntb.DigitosCuenta(Tipo, Persona, Articulo)

    Devuelve los dígitos con los que se construye una cuenta Según el grupo del cliente o proveedor, el grupo del artículo y el propio artículo. Tipo admite "Debito", "Credito", "Compra", "Venta" y "Existencias". Persona es el código numérico del cliente o proveedor y Articulo el código del artículo, que puede estar vacío.

    Para Debito y Credito concatena los dígitos del grupo de la persona con los del grupo del artículo y del artículo; si no hay dígitos, devuelve el código de Persona. Para Compra y Venta coloca primero los dígitos del artículo y su grupo, y después los del grupo de la persona. Para Existencias utiliza únicamente CuentaExistencias del grupo del artículo y del artículo.

    No añade la cabecera contable ni completa con ceros. Tampoco concatena la cuenta individual del cliente o proveedor.

    Ejemplo:

    Main = Cntb.DigitosCuenta("Debito", 1234, "ART001")
  • Cntb.CuentaFactura(Tipo, Documento, Prefijo, Numero)

    Devuelve la cuenta contable para un documento. Tipo admite "Debito", "Credito", "Compra" y "Venta". Documento admite "Factura", "FacturaProveedor", "Recibo", "Pago" y "Movimiento". Prefijo y Numero identifican el documento; para Movimiento, Numero es su Codigo y Prefijo puede estar vacío.

    Localiza la factura de origen y el cliente o proveedor. Para recibos o pagos sin prefijo de factura, obtiene la persona del propio registro. Si el documento consultado tiene una cuenta explícita en CuentaCliente, CuentaProveedor, CuentaVentas o CuentaCompras, la devuelve directamente. Para Recibo y Pago consulta esa cuenta en la factura de origen.

    En los demás casos combina DigitosCuenta con la cabecera configurada en CuentaClientes, CuentaProveedores, CuentaVentas o CuentaCompras, añadiendo ceros hasta la longitud DigitosCuenta, con un mínimo de cuatro dígitos. Devuelve una cadena vacía si se produce un error al obtener o construir la cuenta.

    Ejemplo:

    Main = Cntb.CuentaFactura("Debito", "Factura", "A", 1234)
  • Cntb.ContAmo(Condicion, Orden, Opciones)

    Recorre los registros seleccionados de Amortizacion y llama al método individual de contabilización o descontabilización con los campos Bien y Orden de cada registro.

    Parámetros en Opciones: "Descontabilizar". En la implementación actual su comportamiento está invertido: con Descontabilizar=Si llama a ContabilizaAmortizacion, y con Descontabilizar=No llama a DesContabilizaAmortizacion. El mensaje final, en cambio, indica "descontabilizadas" para Si y "contabilizadas" para No. El contador refleja los registros recorridos y no comprueba el resultado de cada llamada.

    Ejemplo de la llamada que actualmente intenta contabilizar las amortizaciones de un bien:

    Main = Cntb.ContAmo("Bien='B0001'", "Orden", "Descontabilizar=Si")
  • Cntb.ContabilizaAmortizacion(Bien, Orden)

    Genera el asiento del registro de Amortizacion identificado por el código Bien y su número de Orden. Comprueba la existencia del registro y del bien, y busca un asiento anterior para eliminarlo antes de generar el nuevo.

    Utiliza la fecha del registro, convierte el importe desde la moneda del bien a la moneda de contabilidad y crea un asiento interno. Según el Tipo del registro, utiliza las cuentas configuradas en el bien para Adquisición, Amortización, Amortización anticipada o Venta. En la venta también contempla las cuentas de beneficio o pérdida. Actualiza el asiento y sus contrapartidas.

    Devuelve "Contabilizada", "El registro de amortizacion especificado no existe" o "No se encuentra el bien correspondiente al registro de Amortización". El manejador de errores no asigna un texto de error. El prefijo del asiento creado se limita a los cinco primeros caracteres de Bien, aunque la búsqueda del asiento anterior utiliza el código completo.

    Ejemplo:

    Main = Cntb.ContabilizaAmortizacion("B0001", 1)
  • Cntb.DesContabilizaAmortizacion(Bien, Orden)

    Busca el asiento de tipo Amortizacion identificado por Bien como prefijo y Orden como número de documento, para eliminarlo mediante CAsi.BorraAsiento. Devuelve el resultado de ese método o "El asiento especificado no existe" si no encuentra el asiento.

    En el código actual la consulta contiene una coma entre las condiciones TipoDocumento y PrefijoDocumento, donde debería haber un AND. Esto puede impedir el borrado; el manejador de errores no devuelve una descripción del fallo.

    Ejemplo:

    Main = Cntb.DesContabilizaAmortizacion("B0001", 1)
  • Cntb.ContRegExist(Condicion, Orden, Opciones)

    Genera un asiento de regularización de existencias. Primero salda las cuentas cuyo campo Anterior es "300". Después contabiliza los artículos con Existencias activado y Cantidad distinta de cero, valorándolos como Coste por Cantidad y redondeando a dos decimales.

    Construye las cuentas de existencias con la cabecera 300, los dígitos obtenidos por DigitosCuenta y la longitud configurada en DigitosCuenta. Genera la contrapartida de cada saldo en la cuenta con cabecera 610 y el mismo sufijo. Estas cabeceras están fijadas en el código.

    Condicion y Orden no se utilizan: el método procesa todos los artículos que cumplen su criterio interno. Parámetros en Opciones: "Fecha" indica la fecha del asiento; si no es válida o no se indica, utiliza BD.FechaTrabajo. El texto de resultado preparado es "Generado asiento " seguido del número y de la fecha de regularización.

    En la implementación actual, al finalizar vuelve a llamar a Cerrar sobre objetos que ya ha puesto a Nothing. Al estar desactivado su On Error, puede producirse un error después de haber generado el asiento, antes de devolver el resultado.

    Ejemplo:

    Main = Cntb.ContRegExist("", "", "Fecha='30/09/2026'")

Indice: Las clases y sus métodos en Hexa V.9

Volver a la búsqueda anterior