From b3b7c6f61aeaa203ddb80106c47c674de7ecc13a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9rgio=20Salgado?= Date: Fri, 4 Dec 2020 14:42:11 +0000 Subject: [PATCH 1/5] feat: cashbox on notifications --- .../sections/FiatBalanceAlerts.js | 124 +++++++++++------- 1 file changed, 79 insertions(+), 45 deletions(-) diff --git a/new-lamassu-admin/src/pages/Notifications/sections/FiatBalanceAlerts.js b/new-lamassu-admin/src/pages/Notifications/sections/FiatBalanceAlerts.js index f17c08f2..f7368b67 100644 --- a/new-lamassu-admin/src/pages/Notifications/sections/FiatBalanceAlerts.js +++ b/new-lamassu-admin/src/pages/Notifications/sections/FiatBalanceAlerts.js @@ -17,7 +17,8 @@ import styles from './FiatBalanceAlerts.styles.js' const useStyles = makeStyles(styles) -const NAME = 'fiatBalanceAlerts' +const CASH_IN_KEY = 'fiatBalanceAlertsCashIn' +const CASH_OUT_KEY = 'fiatBalanceAlertsCashOut' const DEFAULT_NUMBER_OF_CASSETTES = 2 const FiatBalance = ({ section, min = 0, max = 100, fieldWidth = 80 }) => { @@ -36,9 +37,13 @@ const FiatBalance = ({ section, min = 0, max = 100, fieldWidth = 80 }) => { DEFAULT_NUMBER_OF_CASSETTES ) - const editing = isEditing(NAME) - const schema = Yup.object().shape({ + fillingPercentageCashbox: Yup.number() + .transform(transformNumber) + .integer() + .min(min) + .max(max) + .nullable(), fillingPercentageCassette1: Yup.number() .transform(transformNumber) .integer() @@ -71,6 +76,7 @@ const FiatBalance = ({ section, min = 0, max = 100, fieldWidth = 80 }) => { validateOnChange={false} enableReinitialize initialValues={{ + fillingPercentageCashbox: data?.fillingPercentageCashbox ?? '', fillingPercentageCassette1: data?.fillingPercentageCassette1 ?? '', fillingPercentageCassette2: data?.fillingPercentageCassette2 ?? '', fillingPercentageCassette3: data?.fillingPercentageCassette3 ?? '', @@ -79,52 +85,80 @@ const FiatBalance = ({ section, min = 0, max = 100, fieldWidth = 80 }) => { validationSchema={schema} onSubmit={it => save(section, schema.cast(it))} onReset={() => { - setEditing(NAME, false) + setEditing(CASH_IN_KEY, false) + setEditing(CASH_OUT_KEY, false) }}> {({ values }) => ( -
- -
setEditing(NAME, it)} - /> -
- {R.map( - it => ( - <> -
- + + +
setEditing(CASH_IN_KEY, it)} + /> +
+
+
+
+ (x === '' ? '-' : x)} + decoration="%" + width={fieldWidth} /> -
- Cassette {it + 1} - (x === '' ? '-' : x)} - decoration="%" - width={fieldWidth} - /> -
- - ), - R.times(R.identity, maxNumberOfCassettes) - )} -
- +
+
+
+ +
+ +
setEditing(CASH_OUT_KEY, it)} + /> +
+ {R.map( + it => ( + <> +
+ +
+ Cassette {it + 1} + (x === '' ? '-' : x)} + decoration="%" + width={fieldWidth} + /> +
+
+ + ), + R.times(R.identity, maxNumberOfCassettes) + )} +
+ + )} ) From e3dc1ef4fda2750d53bf9e7f7e9632fbb3e9edc5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9rgio=20Salgado?= Date: Fri, 4 Dec 2020 15:31:31 +0000 Subject: [PATCH 2/5] feat: cashbox on overrides --- .../sections/FiatBalanceAlerts.js | 2 +- .../sections/FiatBalanceOverrides.js | 27 ++++++++++++++++++- 2 files changed, 27 insertions(+), 2 deletions(-) diff --git a/new-lamassu-admin/src/pages/Notifications/sections/FiatBalanceAlerts.js b/new-lamassu-admin/src/pages/Notifications/sections/FiatBalanceAlerts.js index f7368b67..027915ac 100644 --- a/new-lamassu-admin/src/pages/Notifications/sections/FiatBalanceAlerts.js +++ b/new-lamassu-admin/src/pages/Notifications/sections/FiatBalanceAlerts.js @@ -93,7 +93,7 @@ const FiatBalance = ({ section, min = 0, max = 100, fieldWidth = 80 }) => {
setEditing(CASH_IN_KEY, it)} diff --git a/new-lamassu-admin/src/pages/Notifications/sections/FiatBalanceOverrides.js b/new-lamassu-admin/src/pages/Notifications/sections/FiatBalanceOverrides.js index 6c16c111..bb94a72d 100644 --- a/new-lamassu-admin/src/pages/Notifications/sections/FiatBalanceOverrides.js +++ b/new-lamassu-admin/src/pages/Notifications/sections/FiatBalanceOverrides.js @@ -10,12 +10,14 @@ import { transformNumber } from 'src/utils/number' import NotificationsCtx from '../NotificationsContext' +const CASHBOX_KEY = 'cashbox' const CASSETTE_1_KEY = 'fillingPercentageCassette1' const CASSETTE_2_KEY = 'fillingPercentageCassette2' const CASSETTE_3_KEY = 'fillingPercentageCassette3' const CASSETTE_4_KEY = 'fillingPercentageCassette4' const MACHINE_KEY = 'machine' const NAME = 'fiatBalanceOverrides' +const DEFAULT_NUMBER_OF_CASSETTES = 2 const CASSETTE_LIST = [ CASSETTE_1_KEY, @@ -60,15 +62,19 @@ const FiatBalanceOverrides = ({ config, section }) => { const initialValues = { [MACHINE_KEY]: null, + [CASHBOX_KEY]: '', [CASSETTE_1_KEY]: '', [CASSETTE_2_KEY]: '', [CASSETTE_3_KEY]: '', [CASSETTE_4_KEY]: '' } + const notesMin = 0 + const notesMax = 9999999 + const maxNumberOfCassettes = Math.max( ...R.map(it => it.numberOfCassettes, machines), - 2 + DEFAULT_NUMBER_OF_CASSETTES ) const percentMin = 0 @@ -79,6 +85,13 @@ const FiatBalanceOverrides = ({ config, section }) => { .label('Machine') .nullable() .required(), + [CASHBOX_KEY]: Yup.number() + .label('Cash box') + .transform(transformNumber) + .integer() + .min(notesMin) + .max(notesMax) + .nullable(), [CASSETTE_1_KEY]: Yup.number() .label('Cassette 1') .transform(transformNumber) @@ -134,6 +147,18 @@ const FiatBalanceOverrides = ({ config, section }) => { valueProp: 'deviceId', labelProp: 'name' } + }, + { + name: CASHBOX_KEY, + display: 'Cashbox', + width: 155, + textAlign: 'right', + bold: true, + input: NumberInput, + suffix: 'notes', + inputProps: { + decimalPlaces: 0 + } } ] From 978f33b49891d189f8c234c642e39bd999f386a9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9rgio=20Salgado?= Date: Fri, 4 Dec 2020 15:50:28 +0000 Subject: [PATCH 3/5] fix: cashin notifications --- .../Notifications/sections/FiatBalanceAlerts.js | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/new-lamassu-admin/src/pages/Notifications/sections/FiatBalanceAlerts.js b/new-lamassu-admin/src/pages/Notifications/sections/FiatBalanceAlerts.js index 027915ac..52b94777 100644 --- a/new-lamassu-admin/src/pages/Notifications/sections/FiatBalanceAlerts.js +++ b/new-lamassu-admin/src/pages/Notifications/sections/FiatBalanceAlerts.js @@ -20,6 +20,8 @@ const useStyles = makeStyles(styles) const CASH_IN_KEY = 'fiatBalanceAlertsCashIn' const CASH_OUT_KEY = 'fiatBalanceAlertsCashOut' const DEFAULT_NUMBER_OF_CASSETTES = 2 +const notesMin = 0 +const notesMax = 9999999 const FiatBalance = ({ section, min = 0, max = 100, fieldWidth = 80 }) => { const { @@ -38,11 +40,11 @@ const FiatBalance = ({ section, min = 0, max = 100, fieldWidth = 80 }) => { ) const schema = Yup.object().shape({ - fillingPercentageCashbox: Yup.number() + cashInAlertThreshold: Yup.number() .transform(transformNumber) .integer() - .min(min) - .max(max) + .min(notesMin) + .max(notesMax) .nullable(), fillingPercentageCassette1: Yup.number() .transform(transformNumber) @@ -76,7 +78,7 @@ const FiatBalance = ({ section, min = 0, max = 100, fieldWidth = 80 }) => { validateOnChange={false} enableReinitialize initialValues={{ - fillingPercentageCashbox: data?.fillingPercentageCashbox ?? '', + cashInAlertThreshold: data?.cashInAlertThreshold ?? '', fillingPercentageCassette1: data?.fillingPercentageCassette1 ?? '', fillingPercentageCassette2: data?.fillingPercentageCassette2 ?? '', fillingPercentageCassette3: data?.fillingPercentageCassette3 ?? '', @@ -104,10 +106,10 @@ const FiatBalance = ({ section, min = 0, max = 100, fieldWidth = 80 }) => {
(x === '' ? '-' : x)} - decoration="%" + decoration="notes" width={fieldWidth} />
From 8a50dbf43590e5b227638698e94ca237821c64a2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9=20S=C3=A1?= Date: Tue, 30 Aug 2022 17:58:52 +0100 Subject: [PATCH 4/5] fix: correctly fetch bills --- new-lamassu-admin/src/pages/Machines/Machines.js | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/new-lamassu-admin/src/pages/Machines/Machines.js b/new-lamassu-admin/src/pages/Machines/Machines.js index 955d40f4..ab899697 100644 --- a/new-lamassu-admin/src/pages/Machines/Machines.js +++ b/new-lamassu-admin/src/pages/Machines/Machines.js @@ -74,11 +74,11 @@ const MachineRoute = () => { setLoading(false) }, variables: { - deviceId: id - }, - billFilters: { deviceId: id, - batch: 'none' + billFilters: { + deviceId: id, + batch: 'none' + } } }) From 8b4109ee368018d2b4fc597f3dc95c323e47af48 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9=20S=C3=A1?= Date: Wed, 31 Aug 2022 18:07:46 +0100 Subject: [PATCH 5/5] feat: show alerts for full cash boxes --- lib/notifier/notificationCenter.js | 21 +++++++++++++++------ 1 file changed, 15 insertions(+), 6 deletions(-) diff --git a/lib/notifier/notificationCenter.js b/lib/notifier/notificationCenter.js index 9dbc63d9..08007852 100644 --- a/lib/notifier/notificationCenter.js +++ b/lib/notifier/notificationCenter.js @@ -71,7 +71,9 @@ const fiatBalancesNotify = (fiatWarnings) => { const { cassette, deviceId } = o.detail return cassette === balance.cassette && deviceId === balance.deviceId }, notInvalidated)) return - const message = `Cash-out cassette ${balance.cassette} low or empty!` + const message = balance.code === 'LOW_CASH_OUT' ? + `Cash-out cassette ${balance.cassette} low or empty!` : + `Cash box full or almost full!` const detailB = utils.buildDetail({ deviceId: balance.deviceId, cassette: balance.cassette }) return queries.addNotification(FIAT_BALANCE, message, detailB) }) @@ -111,11 +113,18 @@ const cryptoBalancesNotify = (cryptoWarnings) => { } const balancesNotify = (balances) => { - const cryptoFilter = o => o.code === 'HIGH_CRYPTO_BALANCE' || o.code === 'LOW_CRYPTO_BALANCE' - const fiatFilter = o => o.code === 'LOW_CASH_OUT' - const cryptoWarnings = _.filter(cryptoFilter, balances) - const fiatWarnings = _.filter(fiatFilter, balances) - return Promise.all([cryptoBalancesNotify(cryptoWarnings), fiatBalancesNotify(fiatWarnings)]) + const isCryptoCode = c => _.includes(c, ['HIGH_CRYPTO_BALANCE', 'LOW_CRYPTO_BALANCE']) + const isFiatCode = c => _.includes(c, ['LOW_CASH_OUT', 'CASH_BOX_FULL']) + const by = o => + isCryptoCode(o) ? 'crypto' : + isFiatCode(o) ? 'fiat' : + undefined + const warnings = _.flow( + _.groupBy(_.flow(_.get(['code']), by)), + _.update('crypto', _.defaultTo([])), + _.update('fiat', _.defaultTo([])), + )(balances) + return Promise.all([cryptoBalancesNotify(warnings.crypto), fiatBalancesNotify(warnings.fiat)]) } const clearOldErrorNotifications = alerts => {