@cityssm/dynamics-gp
Version:
Read only inquiries into Microsoft Dynamics GP using a SQL Server connection.
132 lines (131 loc) • 4.71 kB
JavaScript
import { connect } from '@cityssm/mssql-multi-pool';
import _getAccountByAccountIndex from '../gp/getAccountByAccountIndex.js';
export default async function _getCashReceiptByDocumentNumber(mssqlConfig, documentNumber) {
if (typeof documentNumber === 'string' &&
Number.isNaN(Number.parseFloat(documentNumber))) {
return undefined;
}
const pool = await connect(mssqlConfig);
const receiptResult = await pool
.request()
.input('documentNumber', documentNumber)
.query(`
SELECT
TOP 1 0 AS isHistorical,
'' AS transactionSource,
[] AS documentNumber,
rtrim([BACHNUMB]) AS batchNumber,
rtrim([BCHSOURC]) AS batchSource,
rtrim([dINITIALS]) AS initials,
[] AS documentDate,
rtrim([dDESC]) AS description1,
rtrim([dDESC2]) AS description2,
rtrim([dDESC3]) AS description3,
rtrim([dDESC4]) AS description4,
rtrim([dDESC5]) AS description5,
rtrim([dDESC6]) AS description6,
[] AS totalBalance,
[] AS totalTaxes,
[] + [dTXAMOUNT] AS total,
[] AS cashAmount,
[] AS chequeAmount,
rtrim([dCHEQUENMBR]) AS chequeNumber,
[] AS creditCardAmount,
rtrim([dCREDITCARDNAME]) AS creditCardName,
[] AS otherAmount,
[] AS dateCreated,
[] AS dateModified
FROM
[]
WHERE
dDOCSUFFIX = @documentNumber
UNION
SELECT
TOP 1 1 AS isHistorical,
rtrim([dTRXSRC]) AS transactionSource,
[] AS documentNumber,
rtrim([BACHNUMB]) AS batchNumber,
rtrim([BCHSOURC]) AS batchSource,
rtrim([dINITIALS]) AS initials,
[] AS documentDate,
rtrim([dDESC]) AS description1,
rtrim([dDESC2]) AS description2,
rtrim([dDESC3]) AS description3,
rtrim([dDESC4]) AS description4,
rtrim([dDESC5]) AS description5,
rtrim([dDESC6]) AS description6,
[] AS totalBalance,
[] AS totalTaxes,
[] AS total,
[] AS cashAmount,
[] AS chequeAmount,
rtrim([dCHEQUENMBR]) AS chequeNumber,
[] AS creditCardAmount,
rtrim([dCREDITCARDNAME]) AS creditCardName,
[] AS otherAmount,
[] AS dateCreated,
[] AS dateModified
FROM
[]
WHERE
dDOCSUFFIX = @documentNumber
ORDER BY
isHistorical
`);
const receipt = receiptResult.recordset.length > 0 ? receiptResult.recordset[0] : undefined;
if (receipt !== undefined) {
const detailsResult = await pool
.request()
.input('documentNumber', documentNumber)
.query(`
SELECT
dSEQNMBR AS sequenceNumber,
rtrim(dCRACCT) AS accountCode,
dAMOUNTOUTSTANDING AS outstandingAmount,
dNMBRITEMS AS quantity,
dLINEAMOUNT AS lineAmount,
dDISCAMOUNT AS discountAmount,
dTXAMOUNT AS taxAmount,
dAMOUNTPAID AS paidAmount,
dPOSTAMOUNT AS postAmount,
rtrim(dCRDTLDESC) AS description
FROM
${receipt.isHistorical === 1 ? 'CR30102' : 'CR10102'}
WHERE
dDOCSUFFIX = @documentNumber
ORDER BY
dSEQNMBR
`);
receipt.details = detailsResult.recordset;
receipt.distributions = [];
if (receipt.isHistorical === 1) {
const distributionResult = await pool
.request()
.input('documentNumber', documentNumber)
.query(`
SELECT
dACCTINDEX AS accountIndex,
rtrim(dQUICKCD) AS accountCode,
rtrim(dTXDTLID) AS taxDetailCode,
[] AS paidAmount
FROM
CR30103
WHERE
dDOCSUFFIX = @documentNumber
ORDER BY
dACCTINDEX,
dQUICKCD,
dTXDTLID
`);
receipt.distributions = distributionResult.recordset;
for (const distribution of receipt.distributions) {
const account = await _getAccountByAccountIndex(mssqlConfig, distribution.accountIndex);
if (account !== undefined) {
distribution.accountNumber = account.accountNumber;
distribution.accountDescription = account.accountDescription;
}
}
}
}
return receipt;
}