filter gp documents

deepsource-autofix-76c6eb20
Dan Gowans 2023-04-13 14:15:52 -04:00
parent 721f6059d0
commit bbcfed5f45
9 changed files with 123 additions and 16 deletions

View File

@ -52,4 +52,6 @@ export declare function getProperty(propertyName: 'settings.printPdf.contentDisp
export declare function getProperty(propertyName: 'settings.dynamicsGP.integrationIsEnabled'): boolean;
export declare function getProperty(propertyName: 'settings.dynamicsGP.mssqlConfig'): MSSQLConfig;
export declare function getProperty(propertyName: 'settings.dynamicsGP.lookupOrder'): configTypes.DynamicsGPLookup[];
export declare function getProperty(propertyName: 'settings.dynamicsGP.accountCodes'): string[];
export declare function getProperty(propertyName: 'settings.dynamicsGP.itemNumbers'): string[];
export declare const keepAliveMillis: number;

View File

@ -52,6 +52,8 @@ configFallbackValues.set('settings.adminCleanup.recordDeleteAgeDays', 60);
configFallbackValues.set('settings.printPdf.contentDisposition', 'attachment');
configFallbackValues.set('settings.dynamicsGP.integrationIsEnabled', false);
configFallbackValues.set('settings.dynamicsGP.lookupOrder', ['invoice']);
configFallbackValues.set('settings.dynamicsGP.accountCodes', []);
configFallbackValues.set('settings.dynamicsGP.itemNumbers', []);
export function getProperty(propertyName) {
const propertyNameSplit = propertyName.split('.');
let currentObject = config;

View File

@ -99,6 +99,8 @@ configFallbackValues.set('settings.printPdf.contentDisposition', 'attachment')
configFallbackValues.set('settings.dynamicsGP.integrationIsEnabled', false)
configFallbackValues.set('settings.dynamicsGP.lookupOrder', ['invoice'])
configFallbackValues.set('settings.dynamicsGP.accountCodes', [])
configFallbackValues.set('settings.dynamicsGP.itemNumbers', [])
/*
* Set up function overloads
@ -229,6 +231,14 @@ export function getProperty(
propertyName: 'settings.dynamicsGP.lookupOrder'
): configTypes.DynamicsGPLookup[]
export function getProperty(
propertyName: 'settings.dynamicsGP.accountCodes'
): string[]
export function getProperty(
propertyName: 'settings.dynamicsGP.itemNumbers'
): string[]
export function getProperty(propertyName: string): unknown {
const propertyNameSplit = propertyName.split('.')

View File

@ -5,11 +5,43 @@ if (configFunctions.getProperty('settings.dynamicsGP.integrationIsEnabled')) {
gp.setMSSQLConfig(configFunctions.getProperty('settings.dynamicsGP.mssqlConfig'));
diamond.setMSSQLConfig(configFunctions.getProperty('settings.dynamicsGP.mssqlConfig'));
}
function filterCashReceipt(cashReceipt) {
const accountCodes = configFunctions.getProperty('settings.dynamicsGP.accountCodes');
for (const accountCode of accountCodes) {
let found = cashReceipt.details.some((detailRecord) => {
return detailRecord.accountCode === accountCode;
});
if (!found) {
found = cashReceipt.distributions.some((distributionRecord) => {
return distributionRecord.accountCode === accountCode;
});
}
if (!found) {
return undefined;
}
}
return cashReceipt;
}
function filterInvoice(invoice) {
const itemNumbers = configFunctions.getProperty('settings.dynamicsGP.itemNumbers');
for (const itemNumber of itemNumbers) {
const found = invoice.lineItems.some((itemRecord) => {
return itemRecord.itemNumber === itemNumber;
});
if (!found) {
return undefined;
}
}
return invoice;
}
async function _getDynamicsGPDocument(documentNumber, lookupType) {
let document;
switch (lookupType) {
case 'invoice': {
const invoice = await gp.getInvoiceByInvoiceNumber(documentNumber);
let invoice = await gp.getInvoiceByInvoiceNumber(documentNumber);
if (invoice !== undefined) {
invoice = filterInvoice(invoice);
}
if (invoice !== undefined) {
document = {
documentType: 'Invoice',
@ -27,7 +59,10 @@ async function _getDynamicsGPDocument(documentNumber, lookupType) {
break;
}
case 'diamond/cashReceipt': {
const receipt = await diamond.getCashReceiptByDocumentNumber(documentNumber);
let receipt = await diamond.getCashReceiptByDocumentNumber(documentNumber);
if (receipt !== undefined) {
receipt = filterCashReceipt(receipt);
}
if (receipt !== undefined) {
document = {
documentType: 'Cash Receipt',

View File

@ -8,6 +8,9 @@ import * as configFunctions from './functions.config.js'
import type { DynamicsGPLookup } from '../types/configTypes'
import type { DynamicsGPDocument } from '../types/recordTypes.js'
import { type DiamondCashReceipt } from '@cityssm/dynamics-gp/diamond/types.js'
import { type GPInvoice } from '@cityssm/dynamics-gp/gp/types.js'
if (configFunctions.getProperty('settings.dynamicsGP.integrationIsEnabled')) {
gp.setMSSQLConfig(
configFunctions.getProperty('settings.dynamicsGP.mssqlConfig')
@ -17,6 +20,50 @@ if (configFunctions.getProperty('settings.dynamicsGP.integrationIsEnabled')) {
)
}
function filterCashReceipt(
cashReceipt: DiamondCashReceipt
): DiamondCashReceipt | undefined {
const accountCodes = configFunctions.getProperty(
'settings.dynamicsGP.accountCodes'
)
for (const accountCode of accountCodes) {
let found = cashReceipt.details.some((detailRecord) => {
return detailRecord.accountCode === accountCode
})
if (!found) {
found = cashReceipt.distributions.some((distributionRecord) => {
return distributionRecord.accountCode === accountCode
})
}
if (!found) {
return undefined
}
}
return cashReceipt
}
function filterInvoice(invoice: GPInvoice): GPInvoice | undefined {
const itemNumbers = configFunctions.getProperty(
'settings.dynamicsGP.itemNumbers'
)
for (const itemNumber of itemNumbers) {
const found = invoice.lineItems.some((itemRecord) => {
return itemRecord.itemNumber === itemNumber
})
if (!found) {
return undefined
}
}
return invoice
}
async function _getDynamicsGPDocument(
documentNumber: string,
lookupType: DynamicsGPLookup
@ -25,7 +72,11 @@ async function _getDynamicsGPDocument(
switch (lookupType) {
case 'invoice': {
const invoice = await gp.getInvoiceByInvoiceNumber(documentNumber)
let invoice = await gp.getInvoiceByInvoiceNumber(documentNumber)
if (invoice !== undefined) {
invoice = filterInvoice(invoice)
}
if (invoice !== undefined) {
document = {
@ -45,9 +96,12 @@ async function _getDynamicsGPDocument(
break
}
case 'diamond/cashReceipt': {
const receipt = await diamond.getCashReceiptByDocumentNumber(
documentNumber
)
let receipt: DiamondCashReceipt | undefined =
await diamond.getCashReceiptByDocumentNumber(documentNumber)
if (receipt !== undefined) {
receipt = filterCashReceipt(receipt)
}
if (receipt !== undefined) {
document = {

18
package-lock.json generated
View File

@ -12,7 +12,7 @@
"@cityssm/bulma-js": "^0.4.0",
"@cityssm/bulma-webapp-js": "^1.5.0",
"@cityssm/date-diff": "^2.2.3",
"@cityssm/dynamics-gp": "^0.4.0",
"@cityssm/dynamics-gp": "^0.4.1",
"@cityssm/expressjs-server-js": "^2.3.3",
"@cityssm/ntfy-publish": "^0.2.2",
"@cityssm/pdf-puppeteer": "^2.0.0-beta.1",
@ -523,11 +523,11 @@
}
},
"node_modules/@cityssm/dynamics-gp": {
"version": "0.4.0",
"resolved": "https://registry.npmjs.org/@cityssm/dynamics-gp/-/dynamics-gp-0.4.0.tgz",
"integrity": "sha512-bbgZxUYAOfN3xFigX501UvEaCfVZ0ReyagcN+ZcKTWtOGrMnUOKK850l+xRnYymfaaUQ2amp4Uj9O6gP+Bj3gQ==",
"version": "0.4.1",
"resolved": "https://registry.npmjs.org/@cityssm/dynamics-gp/-/dynamics-gp-0.4.1.tgz",
"integrity": "sha512-gj3zC7SMEZCLX1OihpxMH4zc6VYP+vkwkX8g8Yf5csJwVFq3l8PkKrCCC2WSaya/Cd9JdMacMl2m9XnT4TYPiA==",
"dependencies": {
"@cityssm/mssql-multi-pool": "^2.2.0",
"@cityssm/mssql-multi-pool": "^2.2.1",
"debug": "^4.3.4",
"mssql": "^9.1.1",
"node-cache": "^5.1.2"
@ -12929,11 +12929,11 @@
"integrity": "sha512-GmRXmBQxBPnt/oJ4V7iM1UszRzv/NjvfZDqVB0NdVZ8Mw+udT7G8+VZuo8pLBmiSMcijNYvJ/hV0AW2Vi5nDJA=="
},
"@cityssm/dynamics-gp": {
"version": "0.4.0",
"resolved": "https://registry.npmjs.org/@cityssm/dynamics-gp/-/dynamics-gp-0.4.0.tgz",
"integrity": "sha512-bbgZxUYAOfN3xFigX501UvEaCfVZ0ReyagcN+ZcKTWtOGrMnUOKK850l+xRnYymfaaUQ2amp4Uj9O6gP+Bj3gQ==",
"version": "0.4.1",
"resolved": "https://registry.npmjs.org/@cityssm/dynamics-gp/-/dynamics-gp-0.4.1.tgz",
"integrity": "sha512-gj3zC7SMEZCLX1OihpxMH4zc6VYP+vkwkX8g8Yf5csJwVFq3l8PkKrCCC2WSaya/Cd9JdMacMl2m9XnT4TYPiA==",
"requires": {
"@cityssm/mssql-multi-pool": "^2.2.0",
"@cityssm/mssql-multi-pool": "^2.2.1",
"debug": "^4.3.4",
"mssql": "^9.1.1",
"node-cache": "^5.1.2"

View File

@ -36,7 +36,7 @@
"@cityssm/bulma-js": "^0.4.0",
"@cityssm/bulma-webapp-js": "^1.5.0",
"@cityssm/date-diff": "^2.2.3",
"@cityssm/dynamics-gp": "^0.4.0",
"@cityssm/dynamics-gp": "^0.4.1",
"@cityssm/expressjs-server-js": "^2.3.3",
"@cityssm/ntfy-publish": "^0.2.2",
"@cityssm/pdf-puppeteer": "^2.0.0-beta.1",

View File

@ -65,6 +65,8 @@ export interface Config {
integrationIsEnabled: boolean;
mssqlConfig?: MSSQLConfig;
lookupOrder?: DynamicsGPLookup[];
accountCodes?: string[];
itemNumbers?: string[];
};
};
}

View File

@ -66,6 +66,8 @@ export interface Config {
integrationIsEnabled: boolean
mssqlConfig?: MSSQLConfig
lookupOrder?: DynamicsGPLookup[]
accountCodes?: string[]
itemNumbers?: string[]
}
}
}