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 (
+
+
+
+ }
+ text={}
+ intent={Intent.DANGER}
+ onClick={handleDeleteRefundCreditNote}
+ />
+
+
+
+ );
+}
+
+export default compose(withAlertsActions)(RefundCreditNoteDetailActionsBar);
diff --git a/src/containers/Drawers/RefundCreditNoteDetailDrawer/RefundCreditNoteDetailHeader.js b/src/containers/Drawers/RefundCreditNoteDetailDrawer/RefundCreditNoteDetailHeader.js
new file mode 100644
index 000000000..de38a473b
--- /dev/null
+++ b/src/containers/Drawers/RefundCreditNoteDetailDrawer/RefundCreditNoteDetailHeader.js
@@ -0,0 +1,47 @@
+import React from 'react';
+import intl from 'react-intl-universal';
+import { defaultTo } from 'lodash';
+
+import {
+ CommercialDocHeader,
+ FormatDate,
+ DetailsMenu,
+ DetailItem,
+} from 'components';
+
+import { useRefundCreditNoteDrawerContext } from './RefundCreditNoteDrawerProvider';
+
+export default function RefundCreditNoteDetailHeader() {
+ const { refundCreditTransaction } = useRefundCreditNoteDrawerContext();
+
+ return (
+
+
+
+ }
+ />
+
+ {refundCreditTransaction.formtted_amount}
+
+
+
+
+
+ {defaultTo(refundCreditTransaction.reference_no, '—')}
+
+
+ {defaultTo(refundCreditTransaction.description, '—')}
+
+
+
+ );
+}
diff --git a/src/containers/Drawers/RefundCreditNoteDetailDrawer/RefundCreditNoteDetailTab.js b/src/containers/Drawers/RefundCreditNoteDetailDrawer/RefundCreditNoteDetailTab.js
new file mode 100644
index 000000000..808a30fad
--- /dev/null
+++ b/src/containers/Drawers/RefundCreditNoteDetailDrawer/RefundCreditNoteDetailTab.js
@@ -0,0 +1,16 @@
+import React from 'react';
+
+import { CommercialDocBox } from 'components';
+import RefundCreditNoteDetailHeader from './RefundCreditNoteDetailHeader';
+
+/**
+ * Refund credit note detail tab.
+ * @returns
+ */
+export default function RefundCreditNoteDetailTab() {
+ return (
+
+
+
+ );
+}
diff --git a/src/containers/Drawers/RefundCreditNoteDetailDrawer/RefundCreditNoteDrawerContent.js b/src/containers/Drawers/RefundCreditNoteDetailDrawer/RefundCreditNoteDrawerContent.js
new file mode 100644
index 000000000..912385421
--- /dev/null
+++ b/src/containers/Drawers/RefundCreditNoteDetailDrawer/RefundCreditNoteDrawerContent.js
@@ -0,0 +1,18 @@
+import React from 'react';
+import { DrawerBody } from 'components';
+
+import RefundCreditNoteDetail from './RefundCreditNoteDetail';
+import { RefundCreditNoteDrawerProvider } from './RefundCreditNoteDrawerProvider';
+
+/**
+ * Refund credit note drawer content.
+ */
+export default function RefundCreditNoteDrawerContent({ refundTransactionId }) {
+ return (
+
+
+
+
+
+ );
+}
diff --git a/src/containers/Drawers/RefundCreditNoteDetailDrawer/RefundCreditNoteDrawerProvider.js b/src/containers/Drawers/RefundCreditNoteDetailDrawer/RefundCreditNoteDrawerProvider.js
new file mode 100644
index 000000000..37f465f61
--- /dev/null
+++ b/src/containers/Drawers/RefundCreditNoteDetailDrawer/RefundCreditNoteDrawerProvider.js
@@ -0,0 +1,40 @@
+import React from 'react';
+import intl from 'react-intl-universal';
+import { DrawerHeaderContent, DrawerLoading } from 'components';
+import { useRefundCreditTransaction } from 'hooks/query';
+
+const RefundCreditNoteDrawerContext = React.createContext();
+
+/**
+ * Refund credit note drawer provider.
+ */
+function RefundCreditNoteDrawerProvider({ refundTransactionId, ...props }) {
+ // Handle fetch refund credit note transaction.
+ const {
+ data: refundCreditTransaction,
+ isLoading: isRefundCreditTransaction,
+ } = useRefundCreditTransaction(refundTransactionId, {
+ enabled: !!refundTransactionId,
+ });
+
+ // provider
+ const provider = {
+ refundTransactionId,
+ refundCreditTransaction,
+ };
+
+ return (
+
+
+
+
+ );
+}
+
+const useRefundCreditNoteDrawerContext = () =>
+ React.useContext(RefundCreditNoteDrawerContext);
+
+export { RefundCreditNoteDrawerProvider, useRefundCreditNoteDrawerContext };
diff --git a/src/containers/Drawers/RefundCreditNoteDetailDrawer/index.js b/src/containers/Drawers/RefundCreditNoteDetailDrawer/index.js
new file mode 100644
index 000000000..44defcdb2
--- /dev/null
+++ b/src/containers/Drawers/RefundCreditNoteDetailDrawer/index.js
@@ -0,0 +1,37 @@
+import React from 'react';
+
+import { Drawer, DrawerSuspense } from 'components';
+import withDrawers from 'containers/Drawer/withDrawers';
+
+import { compose } from 'utils';
+
+const RefundCreditNoteDrawerContent = React.lazy(() =>
+ import('./RefundCreditNoteDrawerContent'),
+);
+
+/**
+ * Refund credit note detail.
+ * @returns
+ */
+function RefundCreditNoteDetailDrawer({
+ name,
+ // #withDrawer
+ isOpen,
+ payload: { refundTransactionId },
+}) {
+ return (
+
+
+
+
+
+ );
+}
+export default compose(withDrawers())(RefundCreditNoteDetailDrawer);
diff --git a/src/containers/Drawers/RefundVendorCreditDetailDrawer/RefundVendorCreditDetail.js b/src/containers/Drawers/RefundVendorCreditDetailDrawer/RefundVendorCreditDetail.js
new file mode 100644
index 000000000..b9ad02b71
--- /dev/null
+++ b/src/containers/Drawers/RefundVendorCreditDetailDrawer/RefundVendorCreditDetail.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 RefundVendorCreditDetailTab from './RefundVendorCreditDetailTab'
+import RefundVendorCreditDetailActionsBar from './RefundVendorCreditDetailActionsBar';
+
+/**
+ * Refund vendor credit detail.
+ * @returns {React.JSX}
+ */
+export default function RefundVendorCreditDetail() {
+ return (
+
+
+
+
+ );
+}
+
+/**
+ * Refund vendor credit detail tabs.
+ * @returns {React.JSX}
+ */
+function RefundVendorCreditDetailTabs() {
+ return (
+
+ }
+ />
+
+ );
+}
+
+const RefundVendorCreditDetailRoot = styled.div``;
diff --git a/src/containers/Drawers/RefundVendorCreditDetailDrawer/RefundVendorCreditDetailActionsBar.js b/src/containers/Drawers/RefundVendorCreditDetailDrawer/RefundVendorCreditDetailActionsBar.js
new file mode 100644
index 000000000..a31694c51
--- /dev/null
+++ b/src/containers/Drawers/RefundVendorCreditDetailDrawer/RefundVendorCreditDetailActionsBar.js
@@ -0,0 +1,45 @@
+import React from 'react';
+import { Button, NavbarGroup, Classes, Intent } from '@blueprintjs/core';
+
+import withAlertsActions from 'containers/Alert/withAlertActions';
+import { useRefundVendorCreditNoteDrawerContext } from './RefundVendorCreditDrawerProvider';
+import { Icon, DrawerActionsBar, FormattedMessage as T, Can } from 'components';
+import {
+ VendorCreditAction,
+ AbilitySubject,
+} from '../../../common/abilityOption';
+
+import { compose } from 'utils';
+
+/**
+ * Refund vendor credit actions bar.
+ */
+function RefundVendorCreditDetailActionsBar({
+ // #withAlertsActions
+ openAlert,
+}) {
+ const { refundTransactionId } = useRefundVendorCreditNoteDrawerContext();
+
+ // Handle delete refund vendor credit.
+ const handleDeleteRefundVendorCredit = () => {
+ openAlert('refund-vendor-delete', { vendorCreditId: refundTransactionId });
+ };
+
+ return (
+
+
+
+ }
+ text={}
+ intent={Intent.DANGER}
+ onClick={handleDeleteRefundVendorCredit}
+ />
+
+
+
+ );
+}
+
+export default compose(withAlertsActions)(RefundVendorCreditDetailActionsBar);
diff --git a/src/containers/Drawers/RefundVendorCreditDetailDrawer/RefundVendorCreditDetailHeader.js b/src/containers/Drawers/RefundVendorCreditDetailDrawer/RefundVendorCreditDetailHeader.js
new file mode 100644
index 000000000..4140abe88
--- /dev/null
+++ b/src/containers/Drawers/RefundVendorCreditDetailDrawer/RefundVendorCreditDetailHeader.js
@@ -0,0 +1,47 @@
+import React from 'react';
+import intl from 'react-intl-universal';
+import { defaultTo } from 'lodash';
+
+import {
+ CommercialDocHeader,
+ FormatDate,
+ DetailsMenu,
+ DetailItem,
+} from 'components';
+
+import { useRefundVendorCreditNoteDrawerContext } from './RefundVendorCreditDrawerProvider';
+
+export default function RefundVendorCreditDetailHeader() {
+ const { refundVendorTransaction } = useRefundVendorCreditNoteDrawerContext();
+
+ return (
+
+
+
+ }
+ />
+
+ {refundVendorTransaction.formtted_amount}
+
+
+
+
+
+ {defaultTo(refundVendorTransaction.reference_no, '—')}
+
+
+ {defaultTo(refundVendorTransaction.description, '—')}
+
+
+
+ );
+}
diff --git a/src/containers/Drawers/RefundVendorCreditDetailDrawer/RefundVendorCreditDetailTab.js b/src/containers/Drawers/RefundVendorCreditDetailDrawer/RefundVendorCreditDetailTab.js
new file mode 100644
index 000000000..3e01d4a2d
--- /dev/null
+++ b/src/containers/Drawers/RefundVendorCreditDetailDrawer/RefundVendorCreditDetailTab.js
@@ -0,0 +1,15 @@
+import React from 'react';
+
+import { CommercialDocBox } from 'components';
+import RefundVendorCreditDetailHeader from './RefundVendorCreditDetailHeader';
+
+/**
+ * Refund vendor credit detail tab.
+ */
+export default function RefundVendorCreditDetailTab() {
+ return (
+
+
+
+ );
+}
diff --git a/src/containers/Drawers/RefundVendorCreditDetailDrawer/RefundVendorCreditDrawerContent.js b/src/containers/Drawers/RefundVendorCreditDetailDrawer/RefundVendorCreditDrawerContent.js
new file mode 100644
index 000000000..eb2353d05
--- /dev/null
+++ b/src/containers/Drawers/RefundVendorCreditDetailDrawer/RefundVendorCreditDrawerContent.js
@@ -0,0 +1,21 @@
+import React from 'react';
+import { DrawerBody } from 'components';
+
+import RefundVendorCreditDetail from './RefundVendorCreditDetail';
+import { RefundVendorCreditDrawerProvider } from './RefundVendorCreditDrawerProvider';
+
+/**
+ * Refund vendor credit drawer content.
+ * @returns
+ */
+export default function RefundVendorCreditDrawerContent({
+ refundTransactionId,
+}) {
+ return (
+
+
+
+
+
+ );
+}
diff --git a/src/containers/Drawers/RefundVendorCreditDetailDrawer/RefundVendorCreditDrawerProvider.js b/src/containers/Drawers/RefundVendorCreditDetailDrawer/RefundVendorCreditDrawerProvider.js
new file mode 100644
index 000000000..dbca85739
--- /dev/null
+++ b/src/containers/Drawers/RefundVendorCreditDetailDrawer/RefundVendorCreditDrawerProvider.js
@@ -0,0 +1,43 @@
+import React from 'react';
+import intl from 'react-intl-universal';
+import { DrawerHeaderContent, DrawerLoading } from 'components';
+import { useRefundVendorCreditTransaction } from 'hooks/query';
+
+const RefundVendorCreditDrawerContent = React.createContext();
+
+/**
+ * Refund vendor credit drawer provider.
+ */
+function RefundVendorCreditDrawerProvider({ refundTransactionId, ...props }) {
+ // Handle fetch refund credit note transaction.
+ const {
+ data: refundVendorTransaction,
+ isLoading: isRefundVendorTransaction,
+ } = useRefundVendorCreditTransaction(refundTransactionId, {
+ enabled: !!refundTransactionId,
+ });
+
+ // provider
+ const provider = {
+ refundTransactionId,
+ refundVendorTransaction,
+ };
+
+ return (
+
+
+
+
+ );
+}
+
+const useRefundVendorCreditNoteDrawerContext = () =>
+ React.useContext(RefundVendorCreditDrawerContent);
+
+export {
+ RefundVendorCreditDrawerProvider,
+ useRefundVendorCreditNoteDrawerContext,
+};
diff --git a/src/containers/Drawers/RefundVendorCreditDetailDrawer/index.js b/src/containers/Drawers/RefundVendorCreditDetailDrawer/index.js
new file mode 100644
index 000000000..a99cd279e
--- /dev/null
+++ b/src/containers/Drawers/RefundVendorCreditDetailDrawer/index.js
@@ -0,0 +1,38 @@
+import React from 'react';
+
+import { Drawer, DrawerSuspense } from 'components';
+import withDrawers from 'containers/Drawer/withDrawers';
+
+import { compose } from 'utils';
+
+const RefundVendorCreditDrawerContent = React.lazy(() =>
+ import('./RefundVendorCreditDrawerContent'),
+);
+
+/**
+ * Refund credit note detail.
+ * @returns
+ */
+function RefundCreditNoteDetailDrawer({
+ name,
+ // #withDrawer
+ isOpen,
+ payload: { refundTransactionId },
+}) {
+ return (
+
+
+
+
+
+ );
+}
+
+export default compose(withDrawers())(RefundCreditNoteDetailDrawer);
diff --git a/src/hooks/query/creditNote.js b/src/hooks/query/creditNote.js
index 8bed87936..6e06ce622 100644
--- a/src/hooks/query/creditNote.js
+++ b/src/hooks/query/creditNote.js
@@ -26,6 +26,7 @@ const commonInvalidateQueries = (queryClient) => {
// Invalidate refund credit
queryClient.invalidateQueries(t.REFUND_CREDIT_NOTE);
+ queryClient.invalidateQueries(t.REFUND_CREDIT_NOTE_TRANSACTION);
// Invalidate reconcile.
queryClient.invalidateQueries(t.RECONCILE_CREDIT_NOTE);
@@ -35,6 +36,9 @@ const commonInvalidateQueries = (queryClient) => {
queryClient.invalidateQueries(t.SALE_INVOICES);
queryClient.invalidateQueries(t.SALE_INVOICE);
+ // Invalidate cashflow accounts.
+ queryClient.invalidateQueries(t.CASHFLOW_ACCOUNT_TRANSACTIONS_INFINITY);
+
// Invalidate financial reports.
queryClient.invalidateQueries(t.FINANCIAL_REPORT);
};
@@ -320,3 +324,20 @@ export function useDeleteReconcileCredit(props) {
},
);
}
+
+/**
+ * Retrieve refund credit transaction detail.
+ * @param {number} id
+ *
+ */
+export function useRefundCreditTransaction(id, props, requestProps) {
+ return useRequestQuery(
+ [t.REFUND_CREDIT_NOTE_TRANSACTION, id],
+ { method: 'get', url: `sales/credit_notes/refunds/${id}`, ...requestProps },
+ {
+ select: (res) => res.data.refund_credit,
+ defaultData: {},
+ ...props,
+ },
+ );
+}
diff --git a/src/hooks/query/types.js b/src/hooks/query/types.js
index e22b8bedf..d98f99db8 100644
--- a/src/hooks/query/types.js
+++ b/src/hooks/query/types.js
@@ -118,6 +118,7 @@ const CREDIT_NOTES = {
CREDIT_NOTE: 'CREDIT_NOTE',
CREDIT_NOTES: 'CREDIT_NOTES',
REFUND_CREDIT_NOTE: 'REFUND_CREDIT_NOTE',
+ REFUND_CREDIT_NOTE_TRANSACTION: 'REFUND_CREDIT_NOTE_TRANSACTION',
RECONCILE_CREDIT_NOTE: 'RECONCILE_CREDIT_NOTE',
RECONCILE_CREDIT_NOTES: 'RECONCILE_CREDIT_NOTES',
};
@@ -126,6 +127,7 @@ const VENDOR_CREDIT_NOTES = {
VENDOR_CREDITS: 'VENDOR_CREDITS',
VENDOR_CREDIT: 'VENDOR_CREDIT',
REFUND_VENDOR_CREDIT: 'REFUND_VENDOR_CREDIT',
+ REFUND_VENDOR_CREDIT_TRANSACTION: 'REFUND_VENDOR_CREDIT_TRANSACTION',
RECONCILE_VENDOR_CREDIT: 'RECONCILE_VENDOR_CREDIT',
RECONCILE_VENDOR_CREDITS: 'RECONCILE_VENDOR_CREDITS',
};
diff --git a/src/hooks/query/vendorCredit.js b/src/hooks/query/vendorCredit.js
index 8e6af88aa..927456d94 100644
--- a/src/hooks/query/vendorCredit.js
+++ b/src/hooks/query/vendorCredit.js
@@ -26,6 +26,7 @@ const commonInvalidateQueries = (queryClient) => {
// Invalidate refund vendor credit
queryClient.invalidateQueries(t.REFUND_VENDOR_CREDIT);
+ queryClient.invalidateQueries(t.REFUND_VENDOR_CREDIT_TRANSACTION);
// Invalidate reconcile vendor credit.
queryClient.invalidateQueries(t.RECONCILE_VENDOR_CREDIT);
@@ -35,6 +36,9 @@ const commonInvalidateQueries = (queryClient) => {
queryClient.invalidateQueries(t.BILL);
queryClient.invalidateQueries(t.BILLS);
+ // Invalidate cashflow accounts.
+ queryClient.invalidateQueries(t.CASHFLOW_ACCOUNT_TRANSACTIONS_INFINITY);
+
// Invalidate financial reports.
queryClient.invalidateQueries(t.FINANCIAL_REPORT);
};
@@ -333,3 +337,24 @@ export function useDeleteReconcileVendorCredit(props) {
},
);
}
+
+/**
+ * Retrieve refund vendor transaction detail.
+ * @param {number} id
+ *
+ */
+export function useRefundVendorCreditTransaction(id, props, requestProps) {
+ return useRequestQuery(
+ [t.REFUND_VENDOR_CREDIT_TRANSACTION, id],
+ {
+ method: 'get',
+ url: `purchases/vendor-credit/refunds/${id}`,
+ ...requestProps,
+ },
+ {
+ select: (res) => res.data.refund_credit,
+ defaultData: {},
+ ...props,
+ },
+ );
+}
diff --git a/src/lang/ar/index.json b/src/lang/ar/index.json
index fdec423dc..a2e774069 100644
--- a/src/lang/ar/index.json
+++ b/src/lang/ar/index.json
@@ -1735,6 +1735,19 @@
"permissions.cashflow_account_transactions":"معاملات حسابات التدفقات النقدية",
"permissions.more_permissions":"عرض المزيد ",
- "estimate.status.expired": "منتهية الصلاحية"
+ "estimate.status.expired": "منتهية الصلاحية",
+ "refund_credit.drawer.title":" تفاصيل استرجاع الأموال لإشعار الدائن ",
+ "refund_credit.drawer.label.amount":"القيمة",
+ "refund_credit.drawer.label.credit_note_no":"رقم الإشعار",
+ "refund_credit.drawer.label.withdrawal_account":"حساب السحب",
+ "refund_credit.drawer.label.reference_no":"رقم المرجع",
+ "refund_credit.drawer.label.description":"الوصف",
+ "refund_vendor_credit.drawer.title":" تفاصيل استرجاع الأموال لإشعار المدين ",
+ "refund_vendor_credit.drawer.label.amount":"القيمة",
+ "refund_vendor_credit.drawer.label.vendor_credit_no":"رقم الإشعار",
+ "refund_vendor_credit.drawer.label.deposit_account":"حساب إيداع",
+ "refund_vendor_credit.drawer.label.reference_no":"رقم المرجع",
+ "refund_vendor_credit.drawer.label.description":"الوصف"
}
+
diff --git a/src/lang/en/index.json b/src/lang/en/index.json
index 7456ead45..dfd5d5ed9 100644
--- a/src/lang/en/index.json
+++ b/src/lang/en/index.json
@@ -1722,6 +1722,13 @@
"permissions.cashflow_account_transactions":"Cashflow account transactions",
"permissions.more_permissions":"More Permissions",
- "estimate.status.expired": "Expired"
+ "estimate.status.expired": "Expired",
+ "refund_credit.drawer.title":"Refund credit note",
+ "refund_credit.drawer.label.amount":"Amount",
+ "refund_credit.drawer.label.credit_note_no":"Credit note number",
+ "refund_credit.drawer.label.withdrawal_account":"Withdrawal account",
+ "refund_credit.drawer.label.reference_no":"Reference number",
+ "refund_credit.drawer.label.description":"Description"
+
}