From 3c73540b4e7fd8771b1fa76762b7a6aeef2680d6 Mon Sep 17 00:00:00 2001 From: elforjani13 <39470382+elforjani13@users.noreply.github.com> Date: Sat, 1 Jan 2022 15:34:04 +0200 Subject: [PATCH] BIG-210 Refund credit & vendor drawer detail. --- src/common/drawers.js | 2 + src/components/DrawersContainer.js | 8 ++++ .../RefundCreditNoteDeleteAlert.js | 12 ++++- .../RefundVendorCreditDeleteAlert.js | 12 ++++- .../CashFlow/AccountTransactions/utils.js | 8 ++++ .../RefundCreditNoteDetail.js | 39 +++++++++++++++ .../RefundCreditNoteDetailActionsBar.js | 46 ++++++++++++++++++ .../RefundCreditNoteDetailHeader.js | 47 +++++++++++++++++++ .../RefundCreditNoteDetailTab.js | 16 +++++++ .../RefundCreditNoteDrawerContent.js | 18 +++++++ .../RefundCreditNoteDrawerProvider.js | 40 ++++++++++++++++ .../RefundCreditNoteDetailDrawer/index.js | 37 +++++++++++++++ .../RefundVendorCreditDetail.js | 39 +++++++++++++++ .../RefundVendorCreditDetailActionsBar.js | 45 ++++++++++++++++++ .../RefundVendorCreditDetailHeader.js | 47 +++++++++++++++++++ .../RefundVendorCreditDetailTab.js | 15 ++++++ .../RefundVendorCreditDrawerContent.js | 21 +++++++++ .../RefundVendorCreditDrawerProvider.js | 43 +++++++++++++++++ .../RefundVendorCreditDetailDrawer/index.js | 38 +++++++++++++++ src/hooks/query/creditNote.js | 21 +++++++++ src/hooks/query/types.js | 2 + src/hooks/query/vendorCredit.js | 25 ++++++++++ src/lang/ar/index.json | 15 +++++- src/lang/en/index.json | 9 +++- 24 files changed, 599 insertions(+), 6 deletions(-) create mode 100644 src/containers/Drawers/RefundCreditNoteDetailDrawer/RefundCreditNoteDetail.js create mode 100644 src/containers/Drawers/RefundCreditNoteDetailDrawer/RefundCreditNoteDetailActionsBar.js create mode 100644 src/containers/Drawers/RefundCreditNoteDetailDrawer/RefundCreditNoteDetailHeader.js create mode 100644 src/containers/Drawers/RefundCreditNoteDetailDrawer/RefundCreditNoteDetailTab.js create mode 100644 src/containers/Drawers/RefundCreditNoteDetailDrawer/RefundCreditNoteDrawerContent.js create mode 100644 src/containers/Drawers/RefundCreditNoteDetailDrawer/RefundCreditNoteDrawerProvider.js create mode 100644 src/containers/Drawers/RefundCreditNoteDetailDrawer/index.js create mode 100644 src/containers/Drawers/RefundVendorCreditDetailDrawer/RefundVendorCreditDetail.js create mode 100644 src/containers/Drawers/RefundVendorCreditDetailDrawer/RefundVendorCreditDetailActionsBar.js create mode 100644 src/containers/Drawers/RefundVendorCreditDetailDrawer/RefundVendorCreditDetailHeader.js create mode 100644 src/containers/Drawers/RefundVendorCreditDetailDrawer/RefundVendorCreditDetailTab.js create mode 100644 src/containers/Drawers/RefundVendorCreditDetailDrawer/RefundVendorCreditDrawerContent.js create mode 100644 src/containers/Drawers/RefundVendorCreditDetailDrawer/RefundVendorCreditDrawerProvider.js create mode 100644 src/containers/Drawers/RefundVendorCreditDetailDrawer/index.js diff --git a/src/common/drawers.js b/src/common/drawers.js index b42c44b9f..5ec6d05a2 100644 --- a/src/common/drawers.js +++ b/src/common/drawers.js @@ -16,4 +16,6 @@ export const DRAWERS = { QUICK_CREATE_ITEM: 'quick-create-item', CREDIT_NOTE_DETAIL_DRAWER: 'credit-note-detail-drawer', VENDOR_CREDIT_DETAIL_DRAWER: 'vendor-credit-detail-drawer', + REFUND_CREDIT_NOTE_DETAIL_DRAWER:'refund-credit-detail-drawer', + REFUND_VENDOR_CREDIT_DETAIL_DRAWER:'refund-vendor-detail-drawer' }; diff --git a/src/components/DrawersContainer.js b/src/components/DrawersContainer.js index b7c0e8fe6..e508519bd 100644 --- a/src/components/DrawersContainer.js +++ b/src/components/DrawersContainer.js @@ -19,6 +19,8 @@ import QuickCreateItemDrawer from '../containers/Drawers/QuickCreateItemDrawer'; import QuickWriteVendorDrawer from '../containers/Drawers/QuickWriteVendorDrawer'; import CreditNoteDetailDrawer from '../containers/Drawers/CreditNoteDetailDrawer'; import VendorCreditDetailDrawer from '../containers/Drawers/VendorCreditDetailDrawer'; +import RefundCreditNoteDetailDrawer from '../containers/Drawers/RefundCreditNoteDetailDrawer'; +import RefundVendorCreditDetailDrawer from '../containers/Drawers/RefundVendorCreditDetailDrawer'; import { DRAWERS } from 'common/drawers'; @@ -51,6 +53,12 @@ export default function DrawersContainer() { + + ); } diff --git a/src/containers/Alerts/CreditNotes/RefundCreditNoteDeleteAlert.js b/src/containers/Alerts/CreditNotes/RefundCreditNoteDeleteAlert.js index 9fe3774ad..da575c2af 100644 --- a/src/containers/Alerts/CreditNotes/RefundCreditNoteDeleteAlert.js +++ b/src/containers/Alerts/CreditNotes/RefundCreditNoteDeleteAlert.js @@ -7,6 +7,7 @@ import { useDeleteRefundCreditNote } from 'hooks/query'; import withAlertActions from 'containers/Alert/withAlertActions'; import withAlertStoreConnect from 'containers/Alert/withAlertStoreConnect'; +import withDrawerActions from 'containers/Drawer/withDrawerActions'; import { compose } from 'utils'; @@ -20,6 +21,9 @@ function RefundCreditNoteDeleteAlert({ payload: { creditNoteId }, // #withAlertActions closeAlert, + + // #withDrawerActions + closeDrawer, }) { const { mutateAsync: deleteRefundCreditMutate, isLoading } = useDeleteRefundCreditNote(); @@ -37,9 +41,12 @@ function RefundCreditNoteDeleteAlert({ message: intl.get('refund_credit_transactions.alert.delete_message'), intent: Intent.SUCCESS, }); - closeAlert(name); + closeDrawer('refund-credit-detail-drawer'); }) - .catch(() => {}); + .catch(() => {}) + .finally(() => { + closeAlert(name); + }); }; return ( @@ -65,4 +72,5 @@ function RefundCreditNoteDeleteAlert({ export default compose( withAlertStoreConnect(), withAlertActions, + withDrawerActions, )(RefundCreditNoteDeleteAlert); diff --git a/src/containers/Alerts/VendorCeditNotes/RefundVendorCreditDeleteAlert.js b/src/containers/Alerts/VendorCeditNotes/RefundVendorCreditDeleteAlert.js index 526d92bfb..4e17eb2ec 100644 --- a/src/containers/Alerts/VendorCeditNotes/RefundVendorCreditDeleteAlert.js +++ b/src/containers/Alerts/VendorCeditNotes/RefundVendorCreditDeleteAlert.js @@ -7,6 +7,7 @@ import { useDeleteRefundVendorCredit } from 'hooks/query'; import withAlertActions from 'containers/Alert/withAlertActions'; import withAlertStoreConnect from 'containers/Alert/withAlertStoreConnect'; +import withDrawerActions from 'containers/Drawer/withDrawerActions'; import { compose } from 'utils'; @@ -20,6 +21,9 @@ function RefundVendorCreditDeleteAlert({ payload: { vendorCreditId }, // #withAlertActions closeAlert, + + // #withDrawerActions + closeDrawer, }) { const { mutateAsync: deleteRefundVendorCreditMutate, isLoading } = useDeleteRefundVendorCredit(); @@ -39,9 +43,12 @@ function RefundVendorCreditDeleteAlert({ ), intent: Intent.SUCCESS, }); - closeAlert(name); + closeDrawer('refund-vendor-detail-drawer'); }) - .catch(() => {}); + .catch(() => {}) + .finally(() => { + closeAlert(name); + }); }; return ( @@ -67,4 +74,5 @@ function RefundVendorCreditDeleteAlert({ export default compose( withAlertStoreConnect(), withAlertActions, + withDrawerActions, )(RefundVendorCreditDeleteAlert); diff --git a/src/containers/CashFlow/AccountTransactions/utils.js b/src/containers/CashFlow/AccountTransactions/utils.js index 59f8b43ea..567422ea6 100644 --- a/src/containers/CashFlow/AccountTransactions/utils.js +++ b/src/containers/CashFlow/AccountTransactions/utils.js @@ -71,6 +71,14 @@ export const handleCashFlowTransactionType = (reference, openDrawer) => { return openDrawer('payment-made-detail-drawer', { paymentMadeId: reference.reference_id, }); + case 'RefundCreditNote': + return openDrawer('refund-credit-detail-drawer', { + refundTransactionId: reference.reference_id, + }); + case 'RefundVendorCredit': + return openDrawer('refund-vendor-detail-drawer', { + refundTransactionId: reference.reference_id, + }); default: return openDrawer('cashflow-transaction-drawer', { diff --git a/src/containers/Drawers/RefundCreditNoteDetailDrawer/RefundCreditNoteDetail.js b/src/containers/Drawers/RefundCreditNoteDetailDrawer/RefundCreditNoteDetail.js new file mode 100644 index 000000000..1eef75ad7 --- /dev/null +++ b/src/containers/Drawers/RefundCreditNoteDetailDrawer/RefundCreditNoteDetail.js @@ -0,0 +1,39 @@ +import React from 'react'; +import { Tab } from '@blueprintjs/core'; +import intl from 'react-intl-universal'; +import styled from 'styled-components'; + +import { DrawerMainTabs } from 'components'; +import RefundCreditNoteDetailTab from './RefundCreditNoteDetailTab'; +import RefundCreditNoteDetailActionsBar from './RefundCreditNoteDetailActionsBar'; + +/** + * Refund credit note detail. + * @returns {React.JSX} + */ +export default function RefundCreditNoteDetail() { + return ( + + + + + ); +} + +/** + * Refund credit note detail tabs. + * @returns {React.JSX} + */ +function RefundCreditNoteDetailTabs() { + return ( + + } + /> + + ); +} + +const RefundCreditNoteDetailRoot = styled.div``; diff --git a/src/containers/Drawers/RefundCreditNoteDetailDrawer/RefundCreditNoteDetailActionsBar.js b/src/containers/Drawers/RefundCreditNoteDetailDrawer/RefundCreditNoteDetailActionsBar.js new file mode 100644 index 000000000..8d66d7852 --- /dev/null +++ b/src/containers/Drawers/RefundCreditNoteDetailDrawer/RefundCreditNoteDetailActionsBar.js @@ -0,0 +1,46 @@ +import React from 'react'; +import { Button, NavbarGroup, Classes, Intent } from '@blueprintjs/core'; + +import { useRefundCreditNoteDrawerContext } from './RefundCreditNoteDrawerProvider'; + +import withAlertsActions from 'containers/Alert/withAlertActions'; +import { Icon, DrawerActionsBar, FormattedMessage as T, Can } from 'components'; +import { + CreditNoteAction, + AbilitySubject, +} from '../../../common/abilityOption'; + +import { compose } from 'utils'; + +/** + * Refund credit note actions bar. + */ +function RefundCreditNoteDetailActionsBar({ + // #withAlertsActions + openAlert, +}) { + const { refundTransactionId } = useRefundCreditNoteDrawerContext(); + + // Handle delete refund credit. + const handleDeleteRefundCreditNote = () => { + openAlert('refund-credit-delete', { creditNoteId: refundTransactionId }); + }; + + return ( + + + +