diff --git a/src/containers/Alerts/CreditNotes/RefundCreditNoteDeleteAlert.js b/src/containers/Alerts/CreditNotes/RefundCreditNoteDeleteAlert.js new file mode 100644 index 000000000..9fe3774ad --- /dev/null +++ b/src/containers/Alerts/CreditNotes/RefundCreditNoteDeleteAlert.js @@ -0,0 +1,68 @@ +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 { useDeleteRefundCreditNote } from 'hooks/query'; + +import withAlertActions from 'containers/Alert/withAlertActions'; +import withAlertStoreConnect from 'containers/Alert/withAlertStoreConnect'; + +import { compose } from 'utils'; + +/** + * Refund credit transactions delete alert + */ +function RefundCreditNoteDeleteAlert({ + name, + // #withAlertStoreConnect + isOpen, + payload: { creditNoteId }, + // #withAlertActions + closeAlert, +}) { + const { mutateAsync: deleteRefundCreditMutate, isLoading } = + useDeleteRefundCreditNote(); + + // Handle cancel delete. + const handleCancelAlert = () => { + closeAlert(name); + }; + + // Handle confirm delete . + const handleConfirmRefundCreditDelete = () => { + deleteRefundCreditMutate(creditNoteId) + .then(() => { + AppToaster.show({ + message: intl.get('refund_credit_transactions.alert.delete_message'), + intent: Intent.SUCCESS, + }); + closeAlert(name); + }) + .catch(() => {}); + }; + + return ( + } + confirmButtonText={} + icon="trash" + intent={Intent.DANGER} + isOpen={isOpen} + onCancel={handleCancelAlert} + onConfirm={handleConfirmRefundCreditDelete} + loading={isLoading} + > +

+ +

+
+ ); +} + +export default compose( + withAlertStoreConnect(), + withAlertActions, +)(RefundCreditNoteDeleteAlert); diff --git a/src/containers/Alerts/VendorCeditNotes/RefundVendorCreditDeleteAlert.js b/src/containers/Alerts/VendorCeditNotes/RefundVendorCreditDeleteAlert.js new file mode 100644 index 000000000..526d92bfb --- /dev/null +++ b/src/containers/Alerts/VendorCeditNotes/RefundVendorCreditDeleteAlert.js @@ -0,0 +1,70 @@ +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 { useDeleteRefundVendorCredit } from 'hooks/query'; + +import withAlertActions from 'containers/Alert/withAlertActions'; +import withAlertStoreConnect from 'containers/Alert/withAlertStoreConnect'; + +import { compose } from 'utils'; + +/** + * Refund Vendor transactions delete alert. + */ +function RefundVendorCreditDeleteAlert({ + name, + // #withAlertStoreConnect + isOpen, + payload: { vendorCreditId }, + // #withAlertActions + closeAlert, +}) { + const { mutateAsync: deleteRefundVendorCreditMutate, isLoading } = + useDeleteRefundVendorCredit(); + + // Handle cancel delete. + const handleCancelAlert = () => { + closeAlert(name); + }; + + // Handle confirm delete . + const handleConfirmRefundVendorCreditDelete = () => { + deleteRefundVendorCreditMutate(vendorCreditId) + .then(() => { + AppToaster.show({ + message: intl.get( + 'refund_vendor_credit_transactions.alert.delete_message', + ), + intent: Intent.SUCCESS, + }); + closeAlert(name); + }) + .catch(() => {}); + }; + + return ( + } + confirmButtonText={} + icon="trash" + intent={Intent.DANGER} + isOpen={isOpen} + onCancel={handleCancelAlert} + onConfirm={handleConfirmRefundVendorCreditDelete} + loading={isLoading} + > +

+ +

+
+ ); +} + +export default compose( + withAlertStoreConnect(), + withAlertActions, +)(RefundVendorCreditDeleteAlert); diff --git a/src/containers/Drawers/CreditNoteDetailDrawer/CreditNoteDetail.js b/src/containers/Drawers/CreditNoteDetailDrawer/CreditNoteDetail.js index 74f7e760b..3e992afda 100644 --- a/src/containers/Drawers/CreditNoteDetailDrawer/CreditNoteDetail.js +++ b/src/containers/Drawers/CreditNoteDetailDrawer/CreditNoteDetail.js @@ -4,6 +4,7 @@ import intl from 'react-intl-universal'; import { DrawerMainTabs } from 'components'; import CreditNoteDetailPanel from './CreditNoteDetailPanel'; +import RefundCreditNoteTransactionsTable from './RefundCreditNoteTransactions/RefundCreditNoteTransactionsTable'; import clsx from 'classnames'; import CreditNoteDetailCls from '../../../style/components/Drawers/CreditNoteDetails.module.scss'; @@ -20,6 +21,11 @@ export default function CreditNoteDetail() { id={'details'} panel={} /> + } + /> ); diff --git a/src/containers/Drawers/CreditNoteDetailDrawer/CreditNoteDetailActionsBar.js b/src/containers/Drawers/CreditNoteDetailDrawer/CreditNoteDetailActionsBar.js index a7b92ae21..b6e876638 100644 --- a/src/containers/Drawers/CreditNoteDetailDrawer/CreditNoteDetailActionsBar.js +++ b/src/containers/Drawers/CreditNoteDetailDrawer/CreditNoteDetailActionsBar.js @@ -42,6 +42,10 @@ function CreditNoteDetailActionsBar({ closeDrawer('credit-note-detail-drawer'); }; + const handleRefundCreditNote = () => { + openDialog('refund-credit-note', { creditNoteId }); + }; + // Handle delete credit note. const handleDeleteCreditNote = () => { openAlert('credit-note-delete', { creditNoteId }); @@ -57,6 +61,15 @@ function CreditNoteDetailActionsBar({ onClick={handleEditCreditNote} /> +