Su Plantilla de Datos para el Procesamiento de Pagos de Cuentas por Pagar
Su Plantilla de Datos para el Procesamiento de Pagos de Cuentas por Pagar
- Campos de `data` esenciales para Sage Intacct
- Hitos de proceso estandarizados
- Instrucciones de extracción específicas
Atributos de Gestión de Pagos de Cuentas por Pagar
| Nombre | Descripción | ||
|---|---|---|---|
| Nombre de la Actividad ActivityName | La acción o `evento` específico que ocurre en el ciclo de vida de la factura. | ||
| Descripción Este Por qué es importante Define los pasos en el mapa de procesos y es obligatorio para cualquier análisis de Dónde obtener Registros de pista de auditoría o tablas de historial de transacciones del sistema Ejemplos Borrador de Factura CreadoFactura AprobadaPago Generado | |||
| Número de Factura InvoiceNumber | El identificador único para el documento de factura del proveedor. | ||
| Descripción El Número de Factura sirve como identificador definitivo de Por qué es importante Es la clave fundamental para vincular todas las actividades del proceso a una única instancia de Dónde obtener Sage Intacct AP Bill object, field DOCNUMBER or RECORDNO Ejemplos INV-2023-001988722-AFEB-23-991 | |||
| Timestamp del Evento EventTime | La fecha y hora específicas en que ocurrió una actividad. | ||
| Descripción Este Por qué es importante Requerido para secuenciar Dónde obtener
Ejemplos 2023-10-12T08:30:00Z2023-10-12T14:45:12Z2023-10-15T09:15:00Z | |||
| Source System SourceSystem | El nombre del sistema donde se originó el `evento`. | ||
| Descripción Este Por qué es importante Asegura la trazabilidad del linaje de Dónde obtener Codificado de forma rígida durante la extracción o derivado de la configuración de conexión Ejemplos Sage IntacctBill.comExpensify | |||
| Última actualización de datos LastDataUpdate | La `timestamp` de la última extracción o actualización del registro. | ||
| Descripción Este Por qué es importante Campo técnico requerido para cargas incrementales y verificaciones de actualidad de Dónde obtener Hora del sistema en el momento de la extracción de Ejemplos 2023-11-01T12:00:00Z2023-11-02T01:00:00Z | |||
| Creado Por Usuario CreatedBy | El ID de usuario de la persona que ingresó la factura. | ||
| Descripción Este Por qué es importante Permite el análisis del rendimiento de recursos e identifica oportunidades de capacitación. Dónde obtener Sage Intacct AP Bill object, field CREATEDBY Ejemplos jsmithap_automation_botmdoe | |||
| Departamento Department | El departamento interno responsable del gasto. | ||
| Descripción Este Por qué es importante Permite la exploración organizativa ( Dónde obtener Sage Intacct AP Bill object, field DEPTID or DEPTNAME Ejemplos Servicios de TIMarketingOperaciones | |||
| Estado de la Factura InvoiceStatus | El estado actual del ciclo de vida de la factura en el sistema. | ||
| Descripción Este Por qué es importante Identifica rápidamente el estado del Dónde obtener Sage Intacct AP Bill object, field STATE Ejemplos ContabilizadoPagadoBorradorParcialmente Pagado | |||
| Fecha de Factura InvoiceDate | La fecha en que el proveedor emitió la factura. | ||
| Descripción Este Por qué es importante El punto de partida para el análisis de antigüedad y los cálculos de términos de pago. Dónde obtener Sage Intacct AP Bill object, field WHENTOCREATE or DATECREATED Ejemplos 2023-10-012023-10-05 | |||
| Fecha de Pago PaymentDate | La fecha en que se ejecutó el pago. | ||
| Descripción Este Por qué es importante Marca la finalización del ciclo de proceso principal. Dónde obtener Sage Intacct AP Payment Detail, field WHENPAID Ejemplos 2023-11-052023-11-10 | |||
| Fecha de Vencimiento DueDate | La fecha límite contractual para el pago. | ||
| Descripción Este Por qué es importante Base para determinar el rendimiento a Dónde obtener Sage Intacct AP Bill object, field WHENDUE Ejemplos 2023-11-012023-11-15 | |||
| Importe de Factura InvoiceAmount | El valor monetario total de la factura. | ||
| Descripción Este Por qué es importante Esencial para el análisis de impacto financiero y la puntuación de riesgos. Dónde obtener Sage Intacct AP Bill object, field TOTALENTERED or TOTALDUE Ejemplos 1500.00250.5010000.00 | |||
| Nombre de Proveedor VendorName | El nombre del proveedor o prestador de servicios que emite la factura. | ||
| Descripción Este Por qué es importante Crítico para segmentar el análisis por rendimiento y comportamiento del proveedor. Dónde obtener Sage Intacct AP Bill object, field VENDORNAME Ejemplos Acme CorpGlobal Services IncOffice Depot | |||
| Purchase Order Number PurchaseOrderNumber | El número de referencia de la orden de compra relacionada. | ||
| Descripción Este Por qué es importante Distingue entre facturas respaldadas por OC y no respaldadas por OC para el análisis de Dónde obtener Objeto AP Bill de Sage Intacct, campo PONUMBER o enlace al documento relacionado Ejemplos PO-9912PO-1002null | |||
| Condiciones de Pago PaymentTerms | Las condiciones acordadas para los plazos de pago y los descuentos. | ||
| Descripción Este Por qué es importante Contexto para analizar estrategias de flujo de caja y oportunidades de descuento perdidas. Dónde obtener Sage Intacct AP Bill object, field TERMNAME Ejemplos Neto 30Vencimiento al Recibo2/10 Net 30 | |||
| Está Respaldado por OC IsPOBacked | Indicador de si la factura está asociada a una Orden de Compra. | ||
| Descripción Este Por qué es importante Diferenciador clave para el análisis de la ruta del proceso. Dónde obtener Calculado: El Número de Orden de Compra no es nulo Ejemplos truefalse | |||
| Estado de Retención HoldStatus | Indica si la factura está actualmente en retención de pago. | ||
| Descripción Este Por qué es importante Identifica Dónde obtener Sage Intacct AP Bill object, field ONHOLD Ejemplos truefalse | |||
| Se Paga Tarde IsPaidLate | Indicador de si la fecha de pago excedió la fecha de vencimiento. | ||
| Descripción Este Por qué es importante Simplifica el filtrado de violaciones de SLA. Dónde obtener Calculado: Fecha de Pago > Fecha de Vencimiento Ejemplos truefalse | |||
| Tiempo de Ciclo (Días) CycleTimeDays | El número de días desde la recepción de la factura hasta el pago. | ||
| Descripción Esta métrica cuantifica la velocidad del proceso para cada Por qué es importante Métrica de rendimiento estándar para la eficiencia. Dónde obtener Calculado: Días entre Fecha de Factura y Fecha de Pago Ejemplos 15.530.05.2 | |||
| Unidad de Negocio BusinessUnit | La entidad legal o ubicación asociada a la factura. | ||
| Descripción Este Por qué es importante Esencial para los puntos de referencia multientidad. Dónde obtener Sage Intacct AP Bill object, field LOCATIONID or ENTITY Ejemplos USA-HQEMEA-LondonAPAC-Singapore | |||
Actividades de Gestión de Pagos de Cuentas por Pagar
| Actividad | Descripción | ||
|---|---|---|---|
| Borrador de Factura Creado | La creación inicial del registro de AP Bill en Sage Intacct, normalmente en estado Borrador. Esto captura el punto de entrada de los `datos` de la factura antes de que entre en `workflows` de aprobación o contabilización. | ||
| Por qué es importante Establece el Dónde obtener Consultar la pista de auditoría del objeto APBILL para la acción 'Crear' o la Capturar Registrado cuando el registro Tipo de evento explicit | |||
| Factura Aprobada | Una acción de aprobación distinta registrada dentro del `workflow` de aprobación designado. Esto significa que un usuario con autoridad suficiente ha autorizado la factura para el pago. | ||
| Por qué es importante Crítico para el KPI de 'Duración Media de Aprobación' y para identificar Dónde obtener Consultar el registro de 'Historial de Aprobación' asociado a la AP Bill para encontrar acciones 'Aprobadas'. Capturar Registrado cuando se ejecuta la acción de aprobación Tipo de evento explicit | |||
| Factura Contabilizada | El punto donde la factura se registra en el Libro Mayor. En sistemas sin `workflows` de aprobación, esto puede ocurrir simultáneamente con la presentación. | ||
| Por qué es importante Indica que la obligación financiera se reconoce oficialmente en los libros contables. Dónde obtener Consultar la pista de auditoría de la APBILL para el cambio de estado a 'Contabilizado'. Capturar Registrado cuando la transacción se contabiliza en el Libro Mayor Tipo de evento explicit | |||
| Factura Cotejada con la Orden de Compra | Identifica cuándo se crea una factura de proveedor al convertir o vincular una Orden de Compra o un Recibo. Esta actividad valida la eficiencia de la coincidencia a 3 vías. | ||
| Por qué es importante Crítico para el KPI de 'Tasa de Coincidencia en el Primer Intento' y para determinar el Dónde obtener Verifique el objeto Capturar Comparar ID de Registro con ID de Transacción de Origen Tipo de evento inferred | |||
| Factura Presentada | La transición de la factura de un estado Borrador a un estado Presentado, desencadenando el `workflow` de aprobación. Esto marca el final de la entrada de `datos` y el inicio del ciclo de aprobación. | ||
| Por qué es importante Esencial para segmentar la duración de la 'Entrada de Dónde obtener Inferir de la pista de auditoría de Capturar Comparar campo de estado antes/después Tipo de evento inferred | |||
| Pago Generado | La creación del registro de Pago (Cheque, ACH, EFT) vinculado a la factura. Este es el momento en que se inicia la transferencia de fondos en el sistema. | ||
| Por qué es importante La Dónde obtener Identifique la creación de un registro Capturar Registrado cuando se crea el registro Tipo de evento explicit | |||
| Factura Actualizada | Registra modificaciones en la cabecera o las líneas de la factura después de su creación inicial. Una alta frecuencia de esta actividad indica retrabajo manual o errores en la extracción de `datos`. | ||
| Por qué es importante Clave para calcular la 'Tasa de Procesamiento sin Intervención' e identificar bucles ineficientes de corrección manual de Dónde obtener Consultar el historial de auditoría de la APBILL para acciones de 'Actualización' realizadas por un usuario antes de la contabilización. Capturar Registrado cuando la transacción es modificada Tipo de evento explicit | |||
| Factura Liberada de Retención | La eliminación del bloqueo de pago, permitiendo que la factura avance a la selección de pago. Esto marca la resolución de la disputa o problema. | ||
| Por qué es importante Marca el final de un período de Dónde obtener Inferir de la pista de auditoría de Capturar Comparar campo de estado antes/después Tipo de evento inferred | |||
| Factura Rechazada | Registra cuando un aprobador rechaza la factura, devolviéndola a un estado Borrador o parcialmente aprobado. Esto indica un bucle de proceso o un problema de calidad de `datos`. | ||
| Por qué es importante Destaca los puntos de fricción en el Dónde obtener Consultar el registro de 'Historial de Aprobación' asociado a la AP Bill para acciones 'Rechazadas' o 'Declinadas'. Capturar Registrado cuando se ejecuta la acción de rechazo Tipo de evento explicit | |||
| Factura Retenida | La aplicación de un bloqueo de pago o estado 'En Espera' a la factura. Esto evita que la factura sea seleccionada para el procesamiento de pagos. | ||
| Por qué es importante Impacta directamente en el 'Tiempo de Resolución de Bloqueo de Pago' y visualiza los retrasos en la tubería de pagos. Dónde obtener Inferir de la pista de auditoría de Capturar Comparar campo de estado antes/después Tipo de evento inferred | |||
| Factura Seleccionada para Pago | La inclusión de la factura en un lote de pago o ejecución de selección. El estado suele cambiar a 'Seleccionado', impidiendo su inclusión en otras tandas de pago. | ||
| Por qué es importante Analiza la 'Optimización de Lotes de Pago' y el retraso entre la decisión de pagar y la emisión real del cheque. Dónde obtener Inferir del cambio de estado de Capturar Comparar campo de estado antes/después Tipo de evento inferred | |||
| Pago Anulado | La cancelación de un pago previamente generado. Esto reabre la obligación de la factura y requiere que el proceso de pago se reinicie. | ||
| Por qué es importante Identificar fallas graves en procesos posteriores donde los pagos se generan pero se retractan. Dónde obtener Consultar el objeto APPYMT para el estado 'Anulado' o 'Anulada' y la Capturar Registrado cuando ocurre una transacción de anulación Tipo de evento explicit | |||
| Pago Conciliado | La confirmación de que el pago ha sido compensado por el banco, marcado durante el proceso de conciliación bancaria en Gestión de Tesorería. | ||
| Por qué es importante Proporciona el 'Tiempo de Ciclo de Extremo a Extremo' desde una perspectiva de flujo de caja, confirmando que los fondos realmente salieron de la cuenta. Dónde obtener Verifique el estado de Conciliación o el campo 'Fecha de Liquidación' en el objeto Capturar Comparar estado de conciliación Tipo de evento inferred | |||
Guías de Extracción
Pasos
Preparar la Vista de Facturas de Cuentas por Pagar Inicie sesión en Sage Intacct y navegue a Cuentas por Pagar > Pestaña Todas > Facturas. Seleccione 'Crear Nueva Vista'. Asigne el nombre 'Process Mining - Extracción de Facturas' a la vista. Seleccione las siguientes columnas en orden: Número de Factura (Número de Documento), Nombre del Proveedor, Fecha de Creación, Fecha de Registro, Fecha de Vencimiento, Monto Total, Estado, Moneda, Número de Orden de Compra, Departamento, Creado Por, En Retención, Descripción, Número de Registro (ID del Sistema). Configure filtros para excluir facturas 'Borrador' si solo desea
dataregistrada, o déjelos abiertos para capturar el ciclo de vida completo. Asegúrese de que el rango de fechas cubra su período de análisis (ej., Fecha de Creación = Últimos 365 Días). Guarde la vista.Exportar
Datade Facturas de Cuentas por Pagar Abra la vista 'Process Mining - Extracción de Facturas'. Haga clic en el botón 'Exportar' y seleccione el formato 'CSV'. Guarde el archivo como 'AP_Bills.csv'.Preparar la Vista de Pagos Registrados Navegue a Cuentas por Pagar > Pestaña Todas > Pagos Registrados. Cree una nueva vista llamada 'Process Mining - Pagos'. Seleccione columnas: Número de Cheque/Pago, Fecha de Pago, Nombre del Proveedor, Monto de Transacción, Método de Pago, Estado (Anulado/Liquidado), Fecha de Conciliación, Número de Factura (Referencia), Número de Registro. Guarde la vista.
Exportar
Datade Pagos Abra la vista 'Process Mining - Pagos'. Haga clic en 'Exportar' y seleccione 'CSV'. Guarde el archivo como 'AP_Payments.csv'.Opcional: Pista de Auditoría para el Historial del
WorkflowLas vistas personalizadas estándar en Intacct solo muestran el estado actual y la última fecha de modificación. Para capturareventos históricos como 'Factura Rechazada' otimestampsde aprobación específicos, debe exportar el Historial de Auditoría. Navegue a Informes > Configuración > Pista de Auditoría. Configure la pista de auditoría para que revise el objeto 'AP Bill'. Seleccione los tipos de Acción: Añadir, Modificar, Aprobar, Rechazar. Exporte este informe como 'AP_Audit_History.csv'.Ejecutar Script de Transformación Utilice el script de Python proporcionado en la sección de Consulta para fusionar estos archivos. El script ingiere 'AP_Bills.csv', 'AP_Payments.csv' y el opcional 'AP_Audit_History.csv' para generar la estructura de
Registro de eventosrequerida.Verificar y Formatear Abra el archivo 'Event_Log_Output.csv' resultante. Asegúrese de que 'EventTime' esté en formato ISO 8601 (YYYY-MM-DD HH:MM:SS). Verifique que 'InvoiceNumber' esté lleno para todas las filas. Suba el CSV final a ProcessMind.
Configuración
- Configuración de Vista: Asegúrese de que el 'Número de registros' en la configuración de la vista sea lo suficientemente alto para capturar todas las transacciones, o use la función de exportación 'Página Siguiente' si aplican límites.
- Manejo de Fechas: Intacct exporta las fechas en el formato local del usuario (ej., MM/DD/YYYY). El script de transformación asume un formato estándar de EE. UU.; ajuste el script si su perfil de usuario utiliza DD/MM/YYYY.
- Permisos de Campo: Asegúrese de que el usuario que crea la vista tenga permisos de 'Lista' y 'Ver' en Facturas de Cuentas por Pagar y Pagos Registrados.
- Granularidad Histórica: Sin la exportación de la Pista de Auditoría, actividades como 'Factura Aprobada' dependerán del proxy 'Fecha de Registro', y 'Factura Actualizada' solo reflejará la última hora de modificación.
- Filtrado: Aplique un filtro en 'Fecha de Creación' >= [Fecha de Inicio] para limitar el volumen de datos. Evite filtrar por 'Estado' a menos que desee excluir específicamente registros Anulados o Históricos.
a Consulta de ejemplo config
import pandas as pd
import numpy as np
from datetime import datetime
# CONFIGURATION
# Update these filenames to match your exported files
FILE_BILLS = 'AP_Bills.csv'
FILE_PAYMENTS = 'AP_Payments.csv'
# Set to None if Audit History is unavailable
FILE_AUDIT = 'AP_Audit_History.csv'
# COLUMNS MAPPING (Adjust based on your View column headers)
COL_BILL_NUM = 'Invoice Number'
COL_VENDOR = 'Vendor Name'
COL_AMOUNT = 'Total Amount'
COL_CREATED = 'Date Created'
COL_POSTED = 'Date Posted'
COL_DUE = 'Due Date'
COL_STATE = 'State'
COL_PO = 'PO Number'
COL_HOLD = 'On Hold'
COL_PAY_DATE = 'Payment Date'
COL_PAY_REF = 'Check/Payment Number'
COL_PAY_BILL_REF = 'Bill Number'
COL_PAY_STATE = 'State'
# OUTPUT STRUCTURE
event_log_columns = [
'InvoiceNumber', 'ActivityName', 'EventTime', 'SourceSystem',
'LastDataUpdate', 'VendorName', 'InvoiceAmount', 'PurchaseOrderNumber',
'InvoiceDate', 'DueDate', 'InvoiceStatus'
]
def run_extraction():
events = []
current_time = datetime.now().isoformat()
# 1. LOAD BILLS
try:
df_bills = pd.read_csv(FILE_BILLS)
# Clean formatting (remove currency symbols if present)
df_bills[COL_AMOUNT] = df_bills[COL_AMOUNT].replace('[\\$,]', '', regex=True).astype(float)
except FileNotFoundError:
print('Bills file not found.')
return
# 2. LOAD PAYMENTS
try:
df_pay = pd.read_csv(FILE_PAYMENTS)
except FileNotFoundError:
print('Payments file not found.')
df_pay = pd.DataFrame()
# PROCESSING BILLS
for index, row in df_bills.iterrows():
invoice_num = str(row[COL_BILL_NUM])
vendor = row[COL_VENDOR]
amount = row[COL_AMOUNT]
po_num = str(row[COL_PO]) if pd.notna(row[COL_PO]) else None
due_date = row[COL_DUE]
status = row[COL_STATE]
# Common attributes for this invoice
base_attr = {
'InvoiceNumber': invoice_num,
'SourceSystem': 'Sage Intacct',
'LastDataUpdate': current_time,
'VendorName': vendor,
'InvoiceAmount': amount,
'PurchaseOrderNumber': po_num,
'DueDate': due_date,
'InvoiceStatus': status
}
# Activity: Invoice Draft Created
if pd.notna(row[COL_CREATED]):
events.append({**base_attr,
'ActivityName': 'Invoice Draft Created',
'EventTime': row[COL_CREATED],
'InvoiceDate': row[COL_CREATED]})
# Activity: Invoice Matched to PO
if po_num and pd.notna(row[COL_CREATED]):
events.append({**base_attr,
'ActivityName': 'Invoice Matched to PO',
'EventTime': row[COL_CREATED],
'InvoiceDate': row[COL_CREATED]})
# Activity: Invoice Posted
if pd.notna(row[COL_POSTED]):
events.append({**base_attr,
'ActivityName': 'Invoice Posted',
'EventTime': row[COL_POSTED]})
# In standard views, Posted often implies Submission and Approval if no audit trail
# We generate proxy events if Audit Trail is missing
if not FILE_AUDIT:
events.append({**base_attr,
'ActivityName': 'Invoice Submitted',
'EventTime': row[COL_POSTED]})
events.append({**base_attr,
'ActivityName': 'Invoice Approved',
'EventTime': row[COL_POSTED]})
# Activity: Invoice Placed on Hold
if str(row[COL_HOLD]).lower() in ['true', 'yes', 'on hold']:
# Time is approximate (Last Modified) as View doesn't track hold time
events.append({**base_attr,
'ActivityName': 'Invoice Placed on Hold',
'EventTime': row.get('Date Modified', row[COL_CREATED])})
# PROCESSING PAYMENTS
# Intacct payment export might list multiple bills per check line or require join logic
# Assuming direct link via Bill Number
if not df_pay.empty:
for index, row in df_pay.iterrows():
bill_ref = str(row[COL_PAY_BILL_REF])
# Only process if this payment links to a bill we know
# (In a real scenario, merge on Bill Number)
pay_attr = {
'InvoiceNumber': bill_ref,
'SourceSystem': 'Sage Intacct',
'LastDataUpdate': current_time,
'ActivityName': 'Payment Generated',
'EventTime': row[COL_PAY_DATE]
}
events.append(pay_attr)
if str(row[COL_PAY_STATE]).lower() == 'void':
events.append({**pay_attr, 'ActivityName': 'Payment Voided', 'EventTime': row[COL_PAY_DATE]})
if 'Date Reconciled' in row and pd.notna(row['Date Reconciled']):
events.append({**pay_attr, 'ActivityName': 'Payment Reconciled', 'EventTime': row['Date Reconciled']})
# 3. OUTPUT
df_events = pd.DataFrame(events)
# Ensure dates are ISO format
df_events['EventTime'] = pd.to_datetime(df_events['EventTime']).dt.strftime('%Y-%m-%d %H:%M:%S')
# Final Select
df_final = df_events[event_log_columns]
df_final.to_csv('Event_Log_Output.csv', index=False)
print(f'Successfully exported {len(df_final)} events.')
if __name__ == '__main__':
run_extraction() Pasos
Establecer Sesión de Servicios Web: Autentíquese en el
endpointde Servicios Web 3.0 de Sage Intacct usando su ID de Remitente, Contraseña, ID de Compañía, ID de Usuario y Contraseña de Usuario para obtener un ID de sesión.Identificar Objetos Requeridos: Debe extraer
datade tres objetos primarios para capturar el ciclo de vida completo:APBILL(Encabezados de Factura),APPYMTDETAIL(Detalles de Pago vinculados a Facturas) yAUDITTRAIL(Historial delworkflow).Extraer
Datade Encabezados de Factura: Utilice el métodoreadByQueryen el objetoAPBILL. Seleccione los camposRECORDNO,DOCNUMBER,WHENCREATED,WHENPOSTED,STATE,VENDORNAME,TOTALENTERED,PONUMBER,DUE_DATE. Filtre por rango de fechas usandoWHENCREATED.Extraer
Datade Pago: UtilicereadByQueryenAPPYMTDETAIL. SeleccioneRECORDNO,WHENCREATED,PAYMENTDATE,TRX_AMOUNT,DOCNUMBER(Referencia de Pago) yBILLRECORDNO(Clave Foránea aAPBILL). Asegúrese de extraer el estadoCLEAREDo la fecha si está disponible para conciliación.Extraer Historial de Auditoría: Utilice
readByQueryen el objetoAUDITTRAIL. Filtre dondeOBJECTTYPE= 'APBILL'. Esto es crítico para capturareventos de aprobación, rechazo, retención y anulación que no se mantienen comotimestampsen la tabla de encabezado. SeleccioneOBJECTKEY,LOGTYPE,MESSAGE,WHENDOCCURREDyUSERID.Preparar
Data: Cargue las respuestas XML/JSON de estas tres llamadas a la API en unastaging database(SQL Server, Snowflake, Postgres, etc.). La API no admite uniones complejas en una sola llamada, por lo que la transformación debe ocurrir post-extracción.Ejecutar Script de Transformación: Ejecute el script SQL proporcionado en la sección de Consulta contra sus tablas preparadas. Este script unifica la
dataestática del encabezado con el registro de auditoría transaccional para crear el único registro de eventos.Validar Tipos de Actividad: Verifique la salida en busca de palabras clave específicas encontradas en los mensajes de la Pista de Auditoría (como Aprobado, Rechazado) y asegúrese de que su lógica de coincidencia de cadenas cubra la redacción específica de su configuración de Intacct.
Formatear Fechas: Asegúrese de que la columna
EventTimeesté formateada según los estándares ISO 8601 (YYYY-MM-DD THH:MM:SS) durante la exportación final.Exportar Registro de
eventos: Exporte el resultado de la consulta SQL como un archivo CSV o Parquet para cargar en ProcessMind.
Configuración
- API Endpoint: https://api.intacct.com/ia/xml/xmlgw.phtml
- Method:
readByQuery(Web Services 3.0) - Tamaño de Página: Configure
pagesizea 1000 (máximo recomendado) para minimizar la sobrecarga HTTP. Implemente un bucle usandoresultIdpara obtener páginas subsiguientes. - Filtrado por Fecha: Utilice operadores SQL estándar (>=, <, AND) en su cadena de consulta para las columnas
WHENCREATEDpara limitar la ventana de extracción (ej., Últimos 365 Días). - Permisos: El usuario de extracción requiere permisos de 'Lista' y 'Ver' en Cuentas por Pagar y el permiso de 'Pista de Auditoría' (a menudo se encuentra en Servicios de Plataforma o en la configuración de Administración de Compañía).
- Vinculación de Objetos:
APBILL.RECORDNOes la clave primaria utilizada para unir conAPPYMTDETAIL.BILLRECORDNOyAUDITTRAIL.OBJECTKEY.
a Consulta de ejemplo sql
/*
PROCESSMIND TRANSFORMATION SCRIPT
Prerequisite: Data from APBILL, APPYMTDETAIL, and AUDITTRAIL
must be extracted via API and staged in tables with those names.
*/
/* 1. Invoice Draft Created */
SELECT
H.DOCNUMBER AS InvoiceNumber,
'Invoice Draft Created' AS ActivityName,
H.WHENCREATED AS EventTime,
'Sage Intacct' AS SourceSystem,
GETDATE() AS LastDataUpdate,
H.VENDORNAME AS VendorName,
H.TOTALENTERED AS InvoiceAmount,
H.PONUMBER AS PurchaseOrderNumber,
H.WHENCREATED AS InvoiceDate,
H.DUE_DATE AS DueDate,
NULL AS Department,
H.CREATEDBY AS CreatedBy,
H.STATE AS InvoiceStatus,
NULL AS PaymentDate
FROM APBILL H
UNION ALL
/* 2. Invoice Matched to PO (Derived from existence of PO Number at creation) */
SELECT
H.DOCNUMBER,
'Invoice Matched to PO',
H.WHENCREATED, -- Occurs effectively at creation if PO links
'Sage Intacct',
GETDATE(),
H.VENDORNAME,
H.TOTALENTERED,
H.PONUMBER,
H.WHENCREATED,
H.DUE_DATE,
NULL,
H.CREATEDBY,
H.STATE,
NULL
FROM APBILL H
WHERE H.PONUMBER IS NOT NULL AND H.PONUMBER <> ''
UNION ALL
/* 3. Invoice Posted (Header Timestamp) */
SELECT
H.DOCNUMBER,
'Invoice Posted',
H.WHENPOSTED,
'Sage Intacct',
GETDATE(),
H.VENDORNAME,
H.TOTALENTERED,
H.PONUMBER,
H.WHENCREATED,
H.DUE_DATE,
NULL,
H.CREATEDBY,
H.STATE,
NULL
FROM APBILL H
WHERE H.WHENPOSTED IS NOT NULL
UNION ALL
/* 4. Payment Generated */
SELECT
H.DOCNUMBER,
'Payment Generated',
P.WHENCREATED,
'Sage Intacct',
GETDATE(),
H.VENDORNAME,
P.TRX_AMOUNT,
H.PONUMBER,
H.WHENCREATED,
H.DUE_DATE,
NULL,
P.CREATEDBY,
H.STATE,
P.PAYMENTDATE
FROM APPYMTDETAIL P
JOIN APBILL H ON P.BILLRECORDNO = H.RECORDNO
UNION ALL
/* 5. Payment Reconciled */
SELECT
H.DOCNUMBER,
'Payment Reconciled',
P.WHENCLEARED,
'Sage Intacct',
GETDATE(),
H.VENDORNAME,
P.TRX_AMOUNT,
H.PONUMBER,
H.WHENCREATED,
H.DUE_DATE,
NULL,
P.CREATEDBY,
H.STATE,
P.PAYMENTDATE
FROM APPYMTDETAIL P
JOIN APBILL H ON P.BILLRECORDNO = H.RECORDNO
WHERE P.WHENCLEARED IS NOT NULL
UNION ALL
/* 6. Workflow Activities from Audit Trail */
/* Covers: Updated, Submitted, Approved, Declined, Hold, Released, Voided, Selected */
SELECT
H.DOCNUMBER,
CASE
WHEN A.MESSAGE LIKE '%Submitted%' THEN 'Invoice Submitted'
WHEN A.MESSAGE LIKE '%Approved%' THEN 'Invoice Approved'
WHEN A.MESSAGE LIKE '%Declined%' THEN 'Invoice Declined'
WHEN A.MESSAGE LIKE '%Hold%' AND A.LOGTYPE = 'Add' THEN 'Invoice Placed on Hold'
WHEN A.MESSAGE LIKE '%Hold%' AND A.LOGTYPE = 'Remove' THEN 'Invoice Released from Hold'
WHEN A.MESSAGE LIKE '%Voided%' THEN 'Payment Voided'
WHEN A.MESSAGE LIKE '%Selected for payment%' THEN 'Invoice Selected for Payment'
WHEN A.MESSAGE LIKE '%Modified%' THEN 'Invoice Updated'
ELSE 'System Activity'
END AS ActivityName,
A.WHENDOCCURRED AS EventTime,
'Sage Intacct' AS SourceSystem,
GETDATE() AS LastDataUpdate,
H.VENDORNAME,
H.TOTALENTERED,
H.PONUMBER,
H.WHENCREATED,
H.DUE_DATE,
NULL,
A.USERID AS CreatedBy,
H.STATE,
NULL
FROM AUDITTRAIL A
JOIN APBILL H ON A.OBJECTKEY = CAST(H.RECORDNO AS VARCHAR(50))
WHERE A.OBJECTTYPE = 'APBILL'
AND (
A.MESSAGE LIKE '%Submitted%'
OR A.MESSAGE LIKE '%Approved%'
OR A.MESSAGE LIKE '%Declined%'
OR A.MESSAGE LIKE '%Hold%'
OR A.MESSAGE LIKE '%Voided%'
OR A.MESSAGE LIKE '%Selected for payment%'
OR A.MESSAGE LIKE '%Modified%'
)
/* Exclude creation updates to avoid duplication with Invoice Draft Created */
AND NOT (A.MESSAGE LIKE '%Modified%' AND ABS(DATEDIFF(second, A.WHENDOCCURRED, H.WHENCREATED)) < 60)