filter diamond invoices by trial balance code

deepsource-autofix-76c6eb20
Dan Gowans 2023-04-18 10:59:28 -04:00
parent 18207de4cb
commit d74598c877
9 changed files with 100 additions and 6 deletions

View File

@ -60,6 +60,6 @@ config.settings.workOrders.workOrderMilestoneDateRecentBeforeDays = 7;
config.settings.workOrders.workOrderMilestoneDateRecentAfterDays = 30;
config.settings.dynamicsGP = {
integrationIsEnabled: true,
lookupOrder: ['diamond/cashReceipt', 'invoice']
lookupOrder: ['diamond/cashReceipt', 'diamond/extendedInvoice']
};
export default config;

View File

@ -83,7 +83,7 @@ config.settings.workOrders.workOrderMilestoneDateRecentAfterDays = 30
config.settings.dynamicsGP = {
integrationIsEnabled: true,
lookupOrder: ['diamond/cashReceipt', 'invoice']
lookupOrder: ['diamond/cashReceipt', 'diamond/extendedInvoice']
}
export default config

View File

@ -54,4 +54,5 @@ export declare function getProperty(propertyName: 'settings.dynamicsGP.mssqlConf
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 function getProperty(propertyName: 'settings.dynamicsGP.trialBalanceCodes'): string[];
export declare const keepAliveMillis: number;

View File

@ -54,6 +54,7 @@ configFallbackValues.set('settings.dynamicsGP.integrationIsEnabled', false);
configFallbackValues.set('settings.dynamicsGP.lookupOrder', ['invoice']);
configFallbackValues.set('settings.dynamicsGP.accountCodes', []);
configFallbackValues.set('settings.dynamicsGP.itemNumbers', []);
configFallbackValues.set('settings.dynamicsGP.trialBalanceCodes', []);
export function getProperty(propertyName) {
const propertyNameSplit = propertyName.split('.');
let currentObject = config;

View File

@ -101,6 +101,7 @@ configFallbackValues.set('settings.dynamicsGP.integrationIsEnabled', false)
configFallbackValues.set('settings.dynamicsGP.lookupOrder', ['invoice'])
configFallbackValues.set('settings.dynamicsGP.accountCodes', [])
configFallbackValues.set('settings.dynamicsGP.itemNumbers', [])
configFallbackValues.set('settings.dynamicsGP.trialBalanceCodes', [])
/*
* Set up function overloads
@ -239,6 +240,10 @@ export function getProperty(
propertyName: 'settings.dynamicsGP.itemNumbers'
): string[]
export function getProperty(
propertyName: 'settings.dynamicsGP.trialBalanceCodes'
): string[]
export function getProperty(propertyName: string): unknown {
const propertyNameSplit = propertyName.split('.')

View File

@ -34,6 +34,17 @@ function filterInvoice(invoice) {
}
return invoice;
}
function filterExtendedInvoice(invoice) {
if (filterInvoice(invoice) === undefined) {
return undefined;
}
const trialBalanceCodes = configFunctions.getProperty('settings.dynamicsGP.trialBalanceCodes');
if (trialBalanceCodes.length > 0 &&
trialBalanceCodes.includes(invoice.trialBalanceCode ?? '')) {
return invoice;
}
return undefined;
}
async function _getDynamicsGPDocument(documentNumber, lookupType) {
let document;
switch (lookupType) {
@ -78,6 +89,28 @@ async function _getDynamicsGPDocument(documentNumber, lookupType) {
documentTotal: receipt.total
};
}
break;
}
case 'diamond/extendedInvoice': {
let invoice = await diamond.getDiamondExtendedGPInvoice(documentNumber);
if (invoice !== undefined) {
invoice = filterExtendedInvoice(invoice);
}
if (invoice !== undefined) {
document = {
documentType: 'Invoice',
documentNumber: invoice.invoiceNumber,
documentDate: invoice.documentDate,
documentDescription: [
invoice.comment1,
invoice.comment2,
invoice.comment3,
invoice.comment4
],
documentTotal: invoice.documentAmount
};
}
break;
}
}
return document;

View File

@ -8,8 +8,12 @@ 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'
import type {
DiamondExtendedGPInvoice,
DiamondCashReceipt
} from '@cityssm/dynamics-gp/diamond/types'
import type { GPInvoice } from '@cityssm/dynamics-gp/gp/types'
if (configFunctions.getProperty('settings.dynamicsGP.integrationIsEnabled')) {
gp.setMSSQLConfig(
@ -64,6 +68,27 @@ function filterInvoice(invoice: GPInvoice): GPInvoice | undefined {
return invoice
}
function filterExtendedInvoice(
invoice: DiamondExtendedGPInvoice
): DiamondExtendedGPInvoice | undefined {
if (filterInvoice(invoice) === undefined) {
return undefined
}
const trialBalanceCodes = configFunctions.getProperty(
'settings.dynamicsGP.trialBalanceCodes'
)
if (
trialBalanceCodes.length > 0 &&
trialBalanceCodes.includes(invoice.trialBalanceCode ?? '')
) {
return invoice
}
return undefined
}
async function _getDynamicsGPDocument(
documentNumber: string,
lookupType: DynamicsGPLookup
@ -118,6 +143,32 @@ async function _getDynamicsGPDocument(
documentTotal: receipt.total
}
}
break
}
case 'diamond/extendedInvoice': {
let invoice = await diamond.getDiamondExtendedGPInvoice(documentNumber)
if (invoice !== undefined) {
invoice = filterExtendedInvoice(invoice)
}
if (invoice !== undefined) {
document = {
documentType: 'Invoice',
documentNumber: invoice.invoiceNumber,
documentDate: invoice.documentDate,
documentDescription: [
invoice.comment1,
invoice.comment2,
invoice.comment3,
invoice.comment4
],
documentTotal: invoice.documentAmount
}
}
break
}
}

View File

@ -67,10 +67,11 @@ export interface Config {
lookupOrder?: DynamicsGPLookup[];
accountCodes?: string[];
itemNumbers?: string[];
trialBalanceCodes?: string[];
};
};
}
export type DynamicsGPLookup = 'diamond/cashReceipt' | 'invoice';
export type DynamicsGPLookup = 'diamond/cashReceipt' | 'diamond/extendedInvoice' | 'invoice';
interface ConfigApplication {
applicationName?: string;
backgroundURL?: string;

View File

@ -1,3 +1,4 @@
// eslint-disable-next-line node/no-extraneous-import
import type { config as MSSQLConfig } from 'mssql'
export interface Config {
@ -68,11 +69,12 @@ export interface Config {
lookupOrder?: DynamicsGPLookup[]
accountCodes?: string[]
itemNumbers?: string[]
trialBalanceCodes?: string[]
}
}
}
export type DynamicsGPLookup = 'diamond/cashReceipt' | 'invoice'
export type DynamicsGPLookup = 'diamond/cashReceipt' | 'diamond/extendedInvoice' | 'invoice'
interface ConfigApplication {
applicationName?: string