UNPKG

@cityssm/dynamics-gp

Version:

Read only inquiries into Microsoft Dynamics GP using a SQL Server connection.

52 lines (42 loc) 1.61 kB
import { connect } from '@cityssm/mssql-multi-pool' import type { config as MSSQLConfig } from 'mssql' import type { GPInvoice } from '../gp/types.js' import type { DiamondExtendedGPInvoice, DiamondTrialBalanceCode } from './types.js' /** * Extends a GP invoice with information from the Diamond tables. * @param mssqlConfig - The configuration for the SQL Server connection. * @param gpInvoice - The GP invoice to extend with Diamond information. * @returns A promise that resolves to the extended GP invoice with Diamond information. */ export default async function _extendGpInvoice( mssqlConfig: MSSQLConfig, gpInvoice: GPInvoice ): Promise<DiamondExtendedGPInvoice> { const diamondInvoice = gpInvoice as DiamondExtendedGPInvoice // Trial Balance Code const pool = await connect(mssqlConfig) const tbcResult = await pool .request() .input('invoiceNumber', gpInvoice.invoiceNumber) .query<DiamondTrialBalanceCode>(/* sql */ ` SELECT TOP 1 t.dCUSTTBCODE AS trialBalanceCode, t.dDESC AS trialBalanceCodeDescription FROM SF120 i INNER JOIN SF023 t ON i.dcusttbcode = t.dcusttbcode WHERE docnumbr = @invoiceNumber `) const trialBalanceCode = tbcResult.recordset.length > 0 ? tbcResult.recordset[0] : undefined if (trialBalanceCode !== undefined) { diamondInvoice.trialBalanceCode = trialBalanceCode.trialBalanceCode diamondInvoice.trialBalanceCodeDescription = trialBalanceCode.trialBalanceCodeDescription } return diamondInvoice }