diff --git a/src/containers/Alerts/TransactionLocking/cancelUnlockingPartialAlert.js b/src/containers/Alerts/TransactionLocking/cancelUnlockingPartialAlert.js new file mode 100644 index 000000000..487cb2805 --- /dev/null +++ b/src/containers/Alerts/TransactionLocking/cancelUnlockingPartialAlert.js @@ -0,0 +1,82 @@ +import React from 'react'; +import intl from 'react-intl-universal'; +import { FormattedMessage as T, FormattedHTMLMessage } from 'components'; +import { Intent, Alert } from '@blueprintjs/core'; +import { AppToaster } from 'components'; + +import { useCancelUnlockingPartialTransactions } from 'hooks/query'; + +import withAlertStoreConnect from 'containers/Alert/withAlertStoreConnect'; +import withAlertActions from 'containers/Alert/withAlertActions'; + +import { compose } from 'utils'; + +/** + * Cancel Unlocking partial transactions alerts. + */ +function CancelUnlockingPartialTarnsactions({ + name, + + // #withAlertStoreConnect + isOpen, + payload: { module }, + + // #withAlertActions + closeAlert, +}) { + const { mutateAsync: cancelUnlockingPartial, isLoading } = + useCancelUnlockingPartialTransactions(); + + // Handle cancel. + const handleCancel = () => { + closeAlert(name); + }; + + // Handle confirm. + const handleConfirm = () => { + const values = { + module: module, + }; + cancelUnlockingPartial(values) + .then(() => { + AppToaster.show({ + message: intl.get( + 'unlocking_partial_transactions.alert.success_message', + ), + intent: Intent.SUCCESS, + }); + }) + .catch( + ({ + response: { + data: { errors }, + }, + }) => {}, + ) + .finally(() => { + closeAlert(name); + }); + }; + + return ( + } + confirmButtonText={} + icon="trash" + intent={Intent.WARNING} + isOpen={isOpen} + onCancel={handleCancel} + onConfirm={handleConfirm} + loading={isLoading} + > +

+ +

+
+ ); +} + +export default compose( + withAlertStoreConnect(), + withAlertActions, +)(CancelUnlockingPartialTarnsactions); diff --git a/src/containers/AlertsContainer/registered.js b/src/containers/AlertsContainer/registered.js index bbab107a3..57d66288a 100644 --- a/src/containers/AlertsContainer/registered.js +++ b/src/containers/AlertsContainer/registered.js @@ -19,6 +19,7 @@ import CurrenciesAlerts from '../Preferences/Currencies/CurrenciesAlerts'; import RolesAlerts from '../Preferences/Users/Roles/RolesAlerts'; import CreditNotesAlerts from '../Sales/CreditNotes/CreditNotesAlerts'; import VendorCreditNotesAlerts from '../Purchases/CreditNotes/VendorCreditNotesAlerts'; +import TransactionsLockingAlerts from '../TransactionsLocking/TransactionsLockingAlerts' export default [ ...AccountsAlerts, @@ -42,4 +43,5 @@ export default [ ...RolesAlerts, ...CreditNotesAlerts, ...VendorCreditNotesAlerts, + ...TransactionsLockingAlerts ]; diff --git a/src/containers/Dialogs/UnlockingTransactionsDialog/UnlockingTransactionsFormProvider.js b/src/containers/Dialogs/UnlockingTransactionsDialog/UnlockingTransactionsFormProvider.js index 8ca8adc57..60efe8a10 100644 --- a/src/containers/Dialogs/UnlockingTransactionsDialog/UnlockingTransactionsFormProvider.js +++ b/src/containers/Dialogs/UnlockingTransactionsDialog/UnlockingTransactionsFormProvider.js @@ -1,30 +1,26 @@ import React from 'react'; import { DialogContent } from 'components'; -import { - useCancelLockingTransaction, - useCancelUnlockingPartialTransactions, -} from 'hooks/query'; +import { useCancelLockingTransaction } from 'hooks/query'; const UnlockingTransactionsContext = React.createContext(); /** * Unlocking transactions form provider. */ -function UnlockingTransactionsFormProvider({ moduleName, dialogName, ...props }) { +function UnlockingTransactionsFormProvider({ + moduleName, + dialogName, + ...props +}) { // Cancle locking transactions mutations. const { mutateAsync: cancelLockingTransactionMutate } = useCancelLockingTransaction(); - // Cancel unlocking partial transactions mutations. - const { mutateAsync: cancelUnLockingPartialTransactionMutate } = - useCancelUnlockingPartialTransactions(); - // State provider. const provider = { dialogName, moduleName, cancelLockingTransactionMutate, - cancelUnLockingPartialTransactionMutate, }; return ( diff --git a/src/containers/Items/ItemsAlerts.js b/src/containers/Items/ItemsAlerts.js index 6918fe4a2..ad82b4e75 100644 --- a/src/containers/Items/ItemsAlerts.js +++ b/src/containers/Items/ItemsAlerts.js @@ -16,6 +16,10 @@ const ItemBulkDeleteAlert = React.lazy(() => import('containers/Alerts/Items/ItemBulkDeleteAlert'), ); +const cancelUnlockingPartialAlert = React.lazy(() => + import('../Alerts/TransactionLocking/cancelUnlockingPartialAlert'), +); + /** * Items alert. */ diff --git a/src/containers/TransactionsLocking/TransactionsLockingAlerts.js b/src/containers/TransactionsLocking/TransactionsLockingAlerts.js new file mode 100644 index 000000000..c4e9554aa --- /dev/null +++ b/src/containers/TransactionsLocking/TransactionsLockingAlerts.js @@ -0,0 +1,15 @@ +import React from 'react'; + +const cancelUnlockingPartialAlert = React.lazy(() => + import('../Alerts/TransactionLocking/cancelUnlockingPartialAlert'), +); + +/** + * Transactions alerts. + */ +export default [ + { + name: 'cancel-unlocking-partail', + component: cancelUnlockingPartialAlert, + }, +]; diff --git a/src/containers/TransactionsLocking/TransactionsLockingList.js b/src/containers/TransactionsLocking/TransactionsLockingList.js index c04054500..933f66171 100644 --- a/src/containers/TransactionsLocking/TransactionsLockingList.js +++ b/src/containers/TransactionsLocking/TransactionsLockingList.js @@ -12,6 +12,8 @@ import { } from './components'; import { useTransactionsLockingContext } from './TransactionsLockingProvider'; import withDialogActions from 'containers/Dialog/withDialogActions'; +import withAlertsActions from 'containers/Alert/withAlertActions'; + import { validateMoveToFullLocking, validateMoveToPartialLocking, @@ -21,18 +23,35 @@ function Paragraph({ className, children }) { return

{children}

; } -function TransactionsLockingList({ items, onlock, onUnlock, onUnlockPartial }) { - return items.map(({ is_enabled, module, formatted_module, description }) => ( - - )); +function TransactionsLockingList({ + items, + onLock, + onUnlock, + onUnlockPartial, + onCancel, +}) { + return items.map( + ({ + is_enabled, + is_partial_unlock, + module, + formatted_module, + description, + }) => ( + + ), + ); } function TransactionsLockingFull({ onLock, onUnlock, onUnlockPartial }) { @@ -137,11 +156,13 @@ function TransactionsLockingAlert() { function TransactionsLockingBodyJsx({ // #withDialogActions openDialog, + + // #withAlertsActions + openAlert, }) { const { transactionsLocking: { modules }, isTransactionLockingLoading, - transactionLockingType, } = useTransactionsLockingContext(); @@ -159,25 +180,35 @@ function TransactionsLockingBodyJsx({ openDialog('unlocking-partial-transactions', { module: module }); }; + // Handle cancel. + const handleCancelUnlockingPartail = (module) => { + openAlert('cancel-unlocking-partail', { module: module }); + }; + return !isTransactionLockingLoading ? ( transactionLockingType === 'partial' ? ( ) : ( - + ) ) : ( ); } -const TransactionsLockingBody = R.compose(withDialogActions)( - TransactionsLockingBodyJsx, -); +const TransactionsLockingBody = R.compose( + withAlertsActions, + withDialogActions, +)(TransactionsLockingBodyJsx); /** * Transactions locking list. diff --git a/src/containers/TransactionsLocking/components.js b/src/containers/TransactionsLocking/components.js index afec51644..1276f20ab 100644 --- a/src/containers/TransactionsLocking/components.js +++ b/src/containers/TransactionsLocking/components.js @@ -46,6 +46,7 @@ export const TransactionLockingContent = ({ onEditLock, onUnlockFull, onUnlockPartial, + onCancle, }) => { const handleLockClick = (event) => { safeInvoke(onLock, module, event); @@ -60,6 +61,9 @@ export const TransactionLockingContent = ({ const handleUnlockFull = (event) => { safeInvoke(onUnlockFull, module, event); }; + const handleCanclel = (event) => { + safeInvoke(onCancle, module, event); + }; return ( @@ -85,7 +89,7 @@ export const TransactionLockingContent = ({ - + + diff --git a/src/lang/en/index.json b/src/lang/en/index.json index bdf26b925..006dba940 100644 --- a/src/lang/en/index.json +++ b/src/lang/en/index.json @@ -1618,5 +1618,8 @@ "unlocking_partial_transactions.dialog.success_message": "Transactions locking haas been unlocked partially successfully.", "unlocking_full_transactions.dialog.label": "Full unlocking transactions", "unlocking_full_transactions.dialog.reason": "Unlocking reason", - "unlocking_full_transactions.dialog.success_message": "Partial transaction unlocking has been canceled successfully." + "unlocking_partial_transactions.alert.success_message": "Partial transaction unlocking has been canceled successfully.", + "unlocking_partial_transactions.alert.message": "Are you sure you want to cancel this ?" + + } \ No newline at end of file