filter gp documents
parent
721f6059d0
commit
bbcfed5f45
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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('.')
|
||||
|
||||
|
|
|
|||
|
|
@ -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',
|
||||
|
|
|
|||
|
|
@ -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 = {
|
||||
|
|
|
|||
|
|
@ -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"
|
||||
|
|
|
|||
|
|
@ -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",
|
||||
|
|
|
|||
|
|
@ -65,6 +65,8 @@ export interface Config {
|
|||
integrationIsEnabled: boolean;
|
||||
mssqlConfig?: MSSQLConfig;
|
||||
lookupOrder?: DynamicsGPLookup[];
|
||||
accountCodes?: string[];
|
||||
itemNumbers?: string[];
|
||||
};
|
||||
};
|
||||
}
|
||||
|
|
|
|||
|
|
@ -66,6 +66,8 @@ export interface Config {
|
|||
integrationIsEnabled: boolean
|
||||
mssqlConfig?: MSSQLConfig
|
||||
lookupOrder?: DynamicsGPLookup[]
|
||||
accountCodes?: string[]
|
||||
itemNumbers?: string[]
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue