-
}>
-
-
- Dashboard
-
-
-
- {machineName}
-
-
-
+ !loading && (
+
+
+
+
+ }>
+
+
+ Dashboard
+
+
+
+ {machineName}
+
+
+
+
+
+
+
+
+
+ {'Details'}
+
+
+
+ {'Cash cassettes'}
+
+
+
+ {'Latest transactions'}
+
+
+
+ {'Commissions'}
+
+
-
-
-
- {'Details'}
-
-
-
- {'Cash cassettes'}
-
-
-
- {'Latest transactions'}
-
-
-
- {'Commissions'}
-
-
-
-
-
+ )
)
}
diff --git a/new-lamassu-admin/src/pages/Maintenance/CashCassettes.js b/new-lamassu-admin/src/pages/Maintenance/CashCassettes.js
index eef88947..07c58300 100644
--- a/new-lamassu-admin/src/pages/Maintenance/CashCassettes.js
+++ b/new-lamassu-admin/src/pages/Maintenance/CashCassettes.js
@@ -62,14 +62,6 @@ const ValidationSchema = Yup.object().shape({
.max(500)
})
-const CREATE_BATCH = gql`
- mutation createBatch($deviceId: ID, $cashboxCount: Int) {
- createBatch(deviceId: $deviceId, cashboxCount: $cashboxCount) {
- id
- }
- }
-`
-
const GET_MACHINES_AND_CONFIG = gql`
query getData {
machines {
@@ -146,7 +138,6 @@ const CashCassettes = () => {
const [setCassetteBills, { error }] = useMutation(SET_CASSETTE_BILLS, {
refetchQueries: () => ['getData']
})
- const [createBatch] = useMutation(CREATE_BATCH)
const [saveConfig] = useMutation(SAVE_CONFIG, {
onCompleted: () => setEditingSchema(false),
refetchQueries: () => ['getData']
@@ -163,32 +154,17 @@ const CashCassettes = () => {
...R.map(it => it.numberOfCassettes, machines),
0
)
- const cashboxCounts = R.reduce(
- (ret, m) => R.assoc(m.id, m.cashbox, ret),
- {},
- machines
- )
- const onSave = (id, cashbox, cassette1, cassette2, cassette3, cassette4) => {
- const oldCashboxCount = cashboxCounts[id]
- if (cashbox < oldCashboxCount) {
- createBatch({
- variables: {
- deviceId: id,
- cashboxCount: oldCashboxCount
- }
- })
- }
+ const getCashoutSettings = id => fromNamespace(id)(cashout)
+ const isCashOutDisabled = ({ id }) => !getCashoutSettings(id).active
+ const onSave = (id, cashbox, cassettes) => {
return setCassetteBills({
variables: {
action: 'setCassetteBills',
deviceId: id,
cashbox,
- cassette1,
- cassette2,
- cassette3,
- cassette4
+ ...cassettes
}
})
}
@@ -208,9 +184,6 @@ const CashCassettes = () => {
}
}
- const getCashoutSettings = id => fromNamespace(id)(cashout)
- const isCashOutDisabled = ({ id }) => !getCashoutSettings(id).active
-
const radioButtonOptions = [
{ display: 'Automatic', code: AUTOMATIC },
{ display: 'Manual', code: MANUAL }
diff --git a/new-lamassu-admin/src/pages/Maintenance/Wizard/Wizard.js b/new-lamassu-admin/src/pages/Maintenance/Wizard/Wizard.js
index 2d4ba2b0..09673dd3 100644
--- a/new-lamassu-admin/src/pages/Maintenance/Wizard/Wizard.js
+++ b/new-lamassu-admin/src/pages/Maintenance/Wizard/Wizard.js
@@ -3,6 +3,8 @@ import React, { useState } from 'react'
import * as Yup from 'yup'
import Modal from 'src/components/Modal'
+import { MAX_NUMBER_OF_CASSETTES } from 'src/utils/constants'
+import { defaultToZero } from 'src/utils/number'
import WizardSplash from './WizardSplash'
import WizardStep from './WizardStep'
@@ -11,6 +13,11 @@ const MODAL_WIDTH = 554
const MODAL_HEIGHT = 520
const CASHBOX_DEFAULT_CAPACITY = 500
+const CASSETTE_FIELDS = R.map(
+ it => `cassette${it}`,
+ R.range(1, MAX_NUMBER_OF_CASSETTES + 1)
+)
+
const Wizard = ({ machine, cashoutSettings, locale, onClose, save, error }) => {
const [{ step, config }, setState] = useState({
step: 0,
@@ -27,6 +34,17 @@ const Wizard = ({ machine, cashoutSettings, locale, onClose, save, error }) => {
const title = `Update counts`
const isLastStep = step === LAST_STEP
+ const buildCassetteObj = cassetteInput => {
+ return R.reduce(
+ (acc, value) => {
+ acc[value] = defaultToZero(cassetteInput[value])
+ return acc
+ },
+ {},
+ CASSETTE_FIELDS
+ )
+ }
+
const onContinue = it => {
const newConfig = R.merge(config, it)
@@ -37,9 +55,9 @@ const Wizard = ({ machine, cashoutSettings, locale, onClose, save, error }) => {
].includes('YES')
const cashbox = wasCashboxEmptied ? 0 : machine?.cashbox
+ const cassettes = buildCassetteObj(it)
- const { cassette1, cassette2, cassette3, cassette4 } = R.map(parseInt, it)
- save(machine.id, cashbox, cassette1, cassette2, cassette3, cassette4)
+ save(machine.id, cashbox, cassettes)
return onClose()
}
@@ -66,6 +84,18 @@ const Wizard = ({ machine, cashoutSettings, locale, onClose, save, error }) => {
}))
)
+ const makeInitialValues = () =>
+ !R.isEmpty(cashoutSettings)
+ ? R.reduce(
+ (acc, value) => {
+ acc[`cassette${value}`] = ''
+ return acc
+ },
+ {},
+ R.range(1, numberOfCassettes + 1)
+ )
+ : {}
+
const steps = R.prepend(
{
type: 'cashbox',
@@ -99,6 +129,7 @@ const Wizard = ({ machine, cashoutSettings, locale, onClose, save, error }) => {
steps={steps}
fiatCurrency={locale.fiatCurrency}
onContinue={onContinue}
+ initialValues={makeInitialValues()}
/>
)}
diff --git a/new-lamassu-admin/src/utils/constants.js b/new-lamassu-admin/src/utils/constants.js
index 5a211c45..6201e948 100644
--- a/new-lamassu-admin/src/utils/constants.js
+++ b/new-lamassu-admin/src/utils/constants.js
@@ -1,6 +1,14 @@
const CURRENCY_MAX = 9999999
+const MIN_NUMBER_OF_CASSETTES = 2
+const MAX_NUMBER_OF_CASSETTES = 4
const AUTOMATIC = 'automatic'
const MANUAL = 'manual'
-export { CURRENCY_MAX, AUTOMATIC, MANUAL }
+export {
+ CURRENCY_MAX,
+ MIN_NUMBER_OF_CASSETTES,
+ MAX_NUMBER_OF_CASSETTES,
+ AUTOMATIC,
+ MANUAL
+}
diff --git a/new-lamassu-admin/src/utils/number.js b/new-lamassu-admin/src/utils/number.js
index e05d5796..f0c7e15c 100644
--- a/new-lamassu-admin/src/utils/number.js
+++ b/new-lamassu-admin/src/utils/number.js
@@ -4,4 +4,7 @@ const isValidNumber = R.both(R.is(Number), R.complement(R.equals(NaN)))
const transformNumber = value => (isValidNumber(value) ? value : null)
-export { transformNumber }
+const defaultToZero = value =>
+ isValidNumber(parseInt(value)) ? parseInt(value) : 0
+
+export { defaultToZero, transformNumber }