Sistema de Gestión de Negocios "Hexa"

Base de datos de conocimiento.

Doc. Ref. 32010
Título: Los métodos XDoc en Hexa V9
Autor: Soltec
Última actualización: 17/08/2018
#pedido #albaran #factura #orden #fabricacion #duplicado


Los métodos XDoc en Hexa V.9

El objeto XDoc, de la clase cXDoc, agrupa procesos que crean, transforman, validan y eliminan documentos de Hexa. Incluye pedidos, albaranes y facturas, gestión de recibos y pagos, contratos, fabricación y facturación de proyectos. Sus operaciones pueden actualizar movimientos, existencias, vencimientos y contabilidad.

En los métodos con Condicion, Orden y Opciones, el criterio SQL se indica sin WHERE y el orden sin ORDER BY, salvo las particularidades descritas en cada caso. Opciones contiene valores con el formato Nombre=Valor; los textos con espacios se delimitan con comillas simples. Una condición vacía puede abarcar todos los registros. Los ejemplos utilizan datos ilustrativos.

Los métodos disponibles son los siguientes:

  • XDoc.CreaDocumento(Documento, Persona, Fecha, Concepto, Estado, ContadorEspecial)

    Crea la cabecera de Pedido, Albaran, Factura, sus equivalentes de proveedor o AlbaranInterno. Persona es el cliente o proveedor y puede ser cero para un albarán interno. Fecha, Concepto y Estado definen los datos iniciales; ContadorEspecial selecciona un contador alternativo. Comprueba persona y cierre contable, consume numeración y actualiza los datos dependientes de la persona. Devuelve un texto con Prefijo y Numero o el motivo de rechazo.

    Ejemplo:

    Main = XDoc.CreaDocumento("Pedido", 1234, DateSerial(2026, 9, 30), "Pedido de ejemplo", "Pendiente", "")
  • XDoc.CreaDocumentoLinea(Documento, Prefijo, Numero, Proyecto, Contrato, Fecha, Articulo, NumeroSerie, Lote, DenominacionArticulo, Cantidad, PrecioArticulo, Descuento, Calcular, Agrupar, Asignar)

    Añade una línea al documento Prefijo/Numero o un movimiento a Proyecto. Contrato permite asociar el contrato; Fecha se utiliza directamente para movimientos de proyecto. Articulo debe existir. NumeroSerie y Lote añaden el detalle de unidad o lote. Si DenominacionArticulo está vacía obtiene la denominación correspondiente a la persona.

    Cantidad, PrecioArticulo y Descuento determinan la base. PrecioArticulo=Nothing permite obtener el precio del cliente o proveedor, mientras que cero fuerza un precio cero. Calcular recalcula, Agrupar permite acumular una línea compatible y Asignar solicita la asignación al stock. Devuelve un texto con el código del movimiento o el error.

    Ejemplo:

    Main = XDoc.CreaDocumentoLinea("Pedido", "A", 1234, "", 0, DateSerial(2026, 9, 30), "ART001", "", "", "", 2, 10, 0, True, False, True)
  • XDoc.ValDoc(Condicion, Orden, Opciones)

    Valida o desvalida los documentos seleccionados. Documento en Opciones admite pedidos, albaranes y facturas de clientes o proveedores; Desvalidar=Si invierte el proceso. Comprueba el cierre contable y el estado, calcula o anula los totales y realiza las operaciones asociadas de vencimientos y contabilización cuando corresponden. Devuelve Procesados y No procesados.

    Ejemplo:

    Main = XDoc.ValDoc("Prefijo='A' AND Numero=1234", "Numero", "Documento=Factura Desvalidar=No")
  • XDoc.FAP(Condicion, Orden, Opciones)

    Convierte, copia o agrupa documentos comerciales. Origen y Destino en Opciones deben ser Pedido, Albaran, Factura o sus equivalentes de proveedor. Condicion y Orden seleccionan los documentos de origen. PrefijoExistente y NumeroExistente permiten añadir al destino existente, que debe estar sin validar. PersonaDestino permite cambiar la persona y es necesaria al cambiar entre cliente y proveedor.

    FechaDestino usa por defecto la fecha de trabajo; ConceptoDestino, EstadoFinal, NombreDoc y Especial ajustan la cabecera y el contador. Agrupar agrupa documentos. CalcularLineas, SumarLineas y CalcularDocumento controlan los cálculos. IgnorarEstado e IgnorarRiesgos omiten las comprobaciones correspondientes. Invertir cambia signos al copiar entre documentos del mismo tipo; Referencia conserva la referencia original; TramitarMovimientos permite usar cantidades a tramitar fuera de pedidos y LotesUnidades copia esos detalles. Comprueba el cierre contable y devuelve los documentos generados o las incidencias.

    Ejemplo:

    Main = XDoc.FAP("Prefijo='A' AND Numero=1234", "Prefijo, Numero", "Origen=Pedido Destino=Albaran CalcularLineas=Si SumarLineas=Si CalcularDocumento=Si")
  • XDoc.BFAP(Condicion, Orden, Opciones)

    Borra los documentos seleccionados del tipo indicado por Documento en Opciones. Admite pedidos, albaranes, facturas, sus variantes de proveedor, AlbaranInterno y OrdenFabricacion. Comprueba su estado mediante EstFAP, salvo BorradoForzado=Si. NoVariarExistencias=Si evita la variación de existencias al eliminar. Trata movimientos, relaciones y vencimientos según el tipo de documento y devuelve CantidadBorrados o el error.

    Ejemplo:

    Main = XDoc.BFAP("Prefijo='A' AND Numero=1234", "Numero", "Documento=Pedido BorradoForzado=No NoVariarExistencias=No")
  • XDoc.GenVtos(Condicion, Orden, Opciones)

    Genera los vencimientos y la descripción de pago de los documentos indicados por Documento en Opciones. Para Factura crea recibos y para FacturaProveedor pagos, eliminando primero los anteriores relacionados. Omite provisiones de fondos. Eliminar=Si solo elimina los vencimientos existentes.

    Inverso=Si, para facturas de clientes, interpreta DescripcionPago como grupos de fecha, importe y forma de pago separados por punto y coma. En el modo normal utiliza las condiciones de pago del documento y la configuración NumeraReciboFactura. Devuelve el resultado preparado por el proceso o el error; no debe asumirse que un texto vacío signifique que no se han modificado registros.

    Ejemplo:

    Main = XDoc.GenVtos("Prefijo='A' AND Numero=1234", "Numero", "Documento=Factura Eliminar=No Inverso=No")
  • XDoc.MarcaRecibo(Condicion, Orden, Opciones)

    Modifica el estado de los recibos seleccionados. Accion en Opciones admite Banco, AnularBanco, Recibido, NoRecibido, Tramitado, NoTramitado, Descontado, NoDescontado, Cobrado, NoCobrado, CobradoDescontado, NoCobradoDescontado, Devuelto y NoDevuelto.

    BancoCobro asigna el banco; FechaRecepcion, FechaTramitacion, FechaDescontado, FechaCobro, FechaDisponible y FechaDevolucion corresponden a cada gestión. FormaPago indica la forma real y Gastos modifica los gastos. Comprueba fechas, bancos, estado y cierre contable, y puede contabilizar, descontabilizar o duplicar recibos devueltos según la acción y configuración. Devuelve un texto del proceso o el error.

    Ejemplo:

    Main = XDoc.MarcaRecibo("Prefijo='A' AND Numero=1234", "Numero", "Accion=Cobrado BancoCobro=1 FechaCobro='30/09/2026'")
  • XDoc.MarcaPago(Condicion, Orden, Opciones)

    Modifica los registros seleccionados de Pago. Accion admite Banco, AnularBanco, Enviado, NoEnviado, Tramitado, NoTramitado, Pagado y NoPagado. Opciones: BancoPago, FechaRecepcion para el envío, FechaTramitacion, FechaPago y FormaPago. Para Pagado, si no se especifica una fecha válida utiliza el vencimiento; una forma de pago vacía o "Copia Prevista" copia la prevista. Comprueba el cierre y llama a contabilización cuando está activada. Devuelve un resumen del marcado o el error.

    Ejemplo:

    Main = XDoc.MarcaPago("Prefijo='P' AND Numero=1234", "Numero", "Accion=Pagado BancoPago=1 FechaPago='30/09/2026'")
  • XDoc.DuplicaRecibo(ReciboPrefijo, ReciboNumero)

    Duplica el recibo identificado por ReciboPrefijo y ReciboNumero, dejando la copia sin cobrar ni devolver. Rechaza recibos ya duplicados y registra la relación entre ambos. Utiliza NumeraReciboFactura y, cuando está configurada, ReciboDevueltoFormaPago. Devuelve "Duplicado a " y la nueva referencia.

    Ejemplo:

    Main = XDoc.DuplicaRecibo("A", 1234)
  • XDoc.CompensaRecibos(Condicion, Orden, Opciones)

    Compensa recibos positivos y negativos de un mismo cliente, marcándolos como cobrados y dividiendo alguno cuando es necesario para ajustar el importe. Requiere Condicion no vacía, un único cliente y recibos no cobrados ni incobrables. Opciones: BancoCobro, FechaCobro y FormaPago. Comprueba el banco y devuelve el detalle del saldo y las operaciones realizadas.

    Ejemplo:

    Main = XDoc.CompensaRecibos("Cliente=1234 AND Cobrado=0", "Vencimiento", "BancoCobro=1 FechaCobro='30/09/2026' FormaPago='Compensacion'")
  • XDoc.DivideRecibo(ReciboPrefijo, ReciboNumero, ImporteRestante, NuevaFormaPago)

    Deja ImporteRestante en el recibo original y crea otro con la diferencia respecto a su importe anterior. NuevaFormaPago permite cambiar la forma de pago del nuevo recibo. La numeración depende de NumeraReciboFactura. Devuelve un texto con ambos importes y el identificador nuevo.

    Ejemplo:

    Main = XDoc.DivideRecibo("A", 1234, 100, "Transferencia")
  • XDoc.DividePago(PagoPrefijo, PagoNumero, ImporteRestante)

    Deja ImporteRestante en el pago original y crea otro pago por la diferencia con el importe anterior. Utiliza la configuración de numeración y devuelve un texto con los importes y el nuevo número.

    Ejemplo:

    Main = XDoc.DividePago("P", 1234, 100)
  • XDoc.MarcaPedidoEstado(Condicion, Orden, Opciones)

    Aplica Accion a los pedidos seleccionados y llama a MarcaMovPrevEstado para sus líneas con Cantidad='Todo'. Proveedor='Proveedor' en Opciones selecciona pedidos de proveedor; vacío selecciona clientes. La cabecera admite cualquier texto de Accion, pero las cantidades solo cambian para acciones reconocidas por MarcaMovPrevEstado. Devuelve la cantidad procesada.

    Ejemplo:

    Main = XDoc.MarcaPedidoEstado("Prefijo='A' AND Numero=1234", "Numero", "Accion=Pendiente")
  • XDoc.MarcaMovPrevEstado(Condicion, Orden, Opciones)

    Modifica cantidades de MovimientoPrevisto. Accion admite Pendiente, Tramitar, Anular, Tramitado y Cantidad. Cantidad en Opciones puede ser un número o Todo, excepto para cambiar la cantidad total. Comprueba que la cantidad solicitada sea compatible con las ya tramitadas o anuladas, desasigna y reasigna existencias alrededor del cambio y devuelve un resumen de registros modificados.

    Ejemplo:

    Main = XDoc.MarcaMovPrevEstado("PedidoPrefijo='A' AND PedidoNumero=1234", "Codigo", "Accion=Tramitar Cantidad=Todo")
  • XDoc.CreaPedidoLineasHistorico(Prefijo, Numero, Maximo, CantidadMinima, FechaMaxima)

    Intenta añadir al pedido Prefijo/Numero artículos del histórico de facturas del cliente. Maximo limita el número de artículos y CantidadMinima filtra la suma de unidades. Aunque se llama FechaMaxima, el filtro utiliza movimientos con fecha posterior o igual a ese valor.

    El código actual obtiene el cliente del campo Numero del pedido en lugar de Cliente, utiliza sintaxis de Access en parte de las consultas y no actualiza el stock. Estas particularidades pueden impedir que la generación corresponda al histórico esperado.

  • XDoc.CreaContrato(Persona, TipoPersona, Fecha, Concepto)

    Crea un contrato para Persona, comprobando su existencia en TipoPersona. Cliente utiliza Contrato y Proveedor su variante. Asigna numeración, Fecha, Concepto y los datos iniciales de IVA, y actualiza datos dependientes. Devuelve el número del contrato creado o el error.

    Ejemplo:

    Main = XDoc.CreaContrato(1234, "Cliente", DateSerial(2026, 9, 30), "Mantenimiento")
  • XDoc.ValContr(Condicion, Orden, Opciones)

    Valida o desvalida contratos calculando o anulando sus totales. TipoPersona en Opciones selecciona Cliente o Proveedor; Desvalidar=Si anula la validación. Aplica Condicion y Orden a la tabla de contratos correspondiente y devuelve Procesados y No procesados.

    Ejemplo:

    Main = XDoc.ValContr("Numero=25", "Numero", "TipoPersona=Cliente Desvalidar=No")
  • XDoc.GenFacContr(Condicion, Orden, Opciones)

    Genera documentos de las líneas de contrato con vencimiento hasta FechaHasta, que es obligatoria en Opciones. TipoPersona selecciona clientes o proveedores; Especial permite elegir contador; GenerarAlbaran=Si genera albaranes y ProporcionMes=Si aplica el prorrateo previsto para el primer periodo. Revisa fechas y cierre contable, avanza las próximas fechas y puede generar vencimientos y contabilizar las facturas. Devuelve el número de documentos de contrato generados o el error.

    Ejemplo:

    Main = XDoc.GenFacContr("Numero=25", "Numero", "TipoPersona=Cliente FechaHasta='30/09/2026' GenerarAlbaran=No")
  • XDoc.BContr(Condicion, Orden, Opciones)

    Borra los contratos seleccionados y sus líneas. TipoPersona en Opciones selecciona Cliente o Proveedor. Devuelve CantidadBorrados o el texto del error.

    Ejemplo:

    Main = XDoc.BContr("Numero=25", "Numero", "TipoPersona=Cliente")
  • XDoc.SimpAlbInt(Condicion, Orden, Opciones)

    Simplifica los albaranes internos seleccionados reuniendo movimientos del mismo artículo y reorganizando sus detalles de lotes y unidades. Desasigna y vuelve a asignar existencias alrededor de la modificación. Opciones no se utiliza. Devuelve "Albaranes Internos Simplificados=" y la cantidad.

    Ejemplo:

    Main = XDoc.SimpAlbInt("Prefijo='I' AND Numero=25", "Numero", "")
  • XDoc.CreaOF(Fecha, Descripcion, Estado, ContadorEspecial)

    Crea una OrdenFabricacion con Fecha, Descripcion y Estado, utilizando ContadorEspecial para su numeración. Devuelve un texto con Prefijo y Numero o un error de creación.

    Ejemplo:

    Main = XDoc.CreaOF(DateSerial(2026, 9, 30), "Fabricacion de ejemplo", "Pendiente", "")
  • XDoc.CreaOFLinea(Prefijo, Numero, Articulo, DenominacionArticulo, Cantidad)

    Añade un MovimientoPrevisto a la orden Prefijo/Numero, con Articulo y Cantidad. Comprueba la existencia de la orden y del artículo. Si DenominacionArticulo está vacía utiliza la del artículo. Devuelve el resultado con Codigo del movimiento creado.

    Ejemplo:

    Main = XDoc.CreaOFLinea("OF", 25, "ART001", "", 10)
  • XDoc.AIOF(Condicion, Orden, Opciones)

    Genera albaranes internos de producción a partir de las órdenes de fabricación seleccionadas y sus cantidades a tramitar. Desarrollar=Si en Opciones permite producir recursivamente componentes que quedarían con existencias negativas. Actualiza movimientos previstos, cantidades y estado de la orden y simplifica el albarán. Devuelve los contadores de generados, estado incorrecto y ausencia de cantidades a fabricar.

    Ejemplo:

    Main = XDoc.AIOF("Prefijo='OF' AND Numero=25", "Numero", "Desarrollar=No")
  • XDoc.DesarrollaComponentes(Articulo, Denominacion, Cantidad, AlbaranInternoPrefijo, AlbaranInternoNumero, OFPrefijo, OFNumero, Desarrollar)

    Procedimiento auxiliar público de producción. Genera los movimientos del artículo y sus componentes por Cantidad, vinculándolos al albarán interno y a la orden indicados. Desarrollar permite la generación recursiva de componentes con stock insuficiente. Es un Sub y no devuelve resultado.

  • XDoc.MarcaOFEstado(Condicion, Orden, Opciones)

    Aplica Accion de Opciones a las órdenes seleccionadas y la transmite a MarcaMovPrevEstado con Cantidad='Todo'. Para Accion=Anular establece el estado final Anulado. Devuelve el número de órdenes procesadas.

    Ejemplo:

    Main = XDoc.MarcaOFEstado("Prefijo='OF' AND Numero=25", "Numero", "Accion=Pendiente")
  • XDoc.DupOF(Condicion, Orden, Opciones)

    Duplica las órdenes seleccionadas creando otras con fecha de trabajo, estado Pendiente y descripción que referencia la original. Copia artículos, denominaciones y cantidades de sus líneas y marca toda la cantidad para tramitar. Opciones no se utiliza. Devuelve la cantidad de órdenes procesadas.

    Ejemplo:

    Main = XDoc.DupOF("Prefijo='OF' AND Numero=25", "Numero", "")
  • XDoc.FacProy8(Condicion, Orden, Opciones)

    Genera facturas a partir de la dedicación facturable de los proyectos seleccionados. Opciones: Agrupar reúne proyectos del mismo cliente y exige ordenar inicialmente por Proyecto.Cliente cuando hay varios; FacturaPrefijo y FacturaNumero permiten añadir a una factura sin validar; SoloTarea, FechaDesde y FechaHasta limitan la dedicación.

    AgruparDedicacion, DesglosarArticulos e IndicarUnidades controlan las líneas. IncluirAlbaranes, IncluirGastos e IncluirSuplidos amplían los conceptos tratados; CerrarProyecto permite el cierre cuando procede y CalcularDocumento solicita el cálculo final. Utiliza ArticuloProyecto y XDocFacProyDenominacion, marca la dedicación facturada y puede generar vencimientos y contabilización.

    La implementación conserva referencias SQL inconsistentes, como Artoiculo y Dedicaion, y ramas que mezclan FacturaNumero con el número generado. Su resultado depende de la rama ejecutada; devuelve un informe de lo realizado o de la incidencia.

  • XDoc.CambiaClienteCodigo(Codigo, NuevoCodigo)

    Cambia Codigo por NuevoCodigo, que debe ser positivo, libre y corresponder a un cliente original existente. Rechaza clientes con albaranes, facturas o recibos según sus comprobaciones. Actualiza también Contacto, Almacen, Pedido, MovimientoPrevisto y Proyecto. Devuelve un resumen de registros afectados. Las comprobaciones de Albaran y Factura usan Count(Codigo), lo que requiere ese campo en dichas tablas.

    Ejemplo:

    Main = XDoc.CambiaClienteCodigo(1234, 5678)
  • XDoc.CambiaProyectoCodigo(Codigo, NuevoCodigo)

    Cambia el código de un proyecto existente por otro que no exista y actualiza las referencias de Tarea, Dedicacion, DedicacionPrevista y Cita. Devuelve un mensaje de cambio o de rechazo. No recorre automáticamente otras tablas que puedan contener referencias al proyecto.

    Ejemplo:

    Main = XDoc.CambiaProyectoCodigo("P2026", "P2026B")

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

Volver a la búsqueda anterior