From 0ad5a9ed0308e153286b9c35a6370628eca04287 Mon Sep 17 00:00:00 2001 From: elforjani13 <39470382+elforjani13@users.noreply.github.com> Date: Mon, 15 Nov 2021 21:45:24 +0200 Subject: [PATCH] feat: item payment transactions. --- .../ItemDetailDrawer/ItemContentDetails.js | 4 +- .../BillPaymentTransactionsDataTable.js | 78 +++++++++++++++++ .../EstimatePaymentTransactionsDataTable.js | 73 ++++++++++++++++ .../InvoicePaymentTransactionsDataTable.js | 83 +++++++++++++++++++ .../ReceiptPaymentTransactionsDataTable.js | 83 +++++++++++++++++++ .../ItemPaymentTransactions/index.js | 40 +++++++++ .../ItemPaymentTransactions/utils.js | 59 +++++++++++++ .../Drawers/ItemDetailDrawer/index.js | 7 +- src/style/components/Drawers/ItemDrawer.scss | 11 +-- 9 files changed, 431 insertions(+), 7 deletions(-) create mode 100644 src/containers/Drawers/ItemDetailDrawer/ItemPaymentTransactions/BillPaymentTransactionsDataTable.js create mode 100644 src/containers/Drawers/ItemDetailDrawer/ItemPaymentTransactions/EstimatePaymentTransactionsDataTable.js create mode 100644 src/containers/Drawers/ItemDetailDrawer/ItemPaymentTransactions/InvoicePaymentTransactionsDataTable.js create mode 100644 src/containers/Drawers/ItemDetailDrawer/ItemPaymentTransactions/ReceiptPaymentTransactionsDataTable.js create mode 100644 src/containers/Drawers/ItemDetailDrawer/ItemPaymentTransactions/index.js create mode 100644 src/containers/Drawers/ItemDetailDrawer/ItemPaymentTransactions/utils.js diff --git a/src/containers/Drawers/ItemDetailDrawer/ItemContentDetails.js b/src/containers/Drawers/ItemDetailDrawer/ItemContentDetails.js index 140e72543..108b23779 100644 --- a/src/containers/Drawers/ItemDetailDrawer/ItemContentDetails.js +++ b/src/containers/Drawers/ItemDetailDrawer/ItemContentDetails.js @@ -2,6 +2,8 @@ import React from 'react'; import ItemDetailActionsBar from './ItemDetailActionsBar'; import ItemDetailHeader from './ItemDetailHeader'; +import { ItemPaymentTransactions } from './ItemPaymentTransactions'; +import DashboardActionsBar from 'components/Dashboard/DashboardActionsBar'; import { Card } from 'components'; @@ -12,7 +14,7 @@ export default function ItemDetail() { return (
- + diff --git a/src/containers/Drawers/ItemDetailDrawer/ItemPaymentTransactions/BillPaymentTransactionsDataTable.js b/src/containers/Drawers/ItemDetailDrawer/ItemPaymentTransactions/BillPaymentTransactionsDataTable.js new file mode 100644 index 000000000..08a9f7fea --- /dev/null +++ b/src/containers/Drawers/ItemDetailDrawer/ItemPaymentTransactions/BillPaymentTransactionsDataTable.js @@ -0,0 +1,78 @@ +import React from 'react'; +import intl from 'react-intl-universal'; +import clsx from 'classnames'; +import { CLASSES } from '../../../../common/classes'; +import { DataTable, Card, FormatDateCell } from '../../../../components'; + +/** + * Bill payment transactions data table. + */ +export default function BillPaymentTransactions() { + const columns = React.useMemo( + () => [ + { + id: 'bill_date', + Header: intl.get('date'), + accessor: 'bill_date', + Cell: FormatDateCell, + width: 110, + className: 'bill_date', + }, + { + id: 'bill_number', + Header: intl.get('bill_number'), + accessor: (row) => (row.bill_number ? `${row.bill_number}` : null), + width: 100, + className: 'bill_number', + }, + { + id: 'vendor', + Header: intl.get('vendor_name'), + accessor: 'vendor.display_name', + width: 180, + className: 'vendor', + }, + { + id: 'reference_no', + Header: intl.get('reference_no'), + accessor: 'reference_no', + width: 90, + className: 'reference_no', + }, + { + id: 'qunatity', + Header: 'Quantity Purchase', + }, + { + id: 'rate', + Header: 'Rate', + }, + { + id: 'total', + Header: intl.get('total'), + }, + { + id: 'status', + Header: intl.get('status'), + // accessor: (row) => statusAccessor(row), + width: 160, + className: 'status', + }, + ], + [], + ); + + return ( +
+ + + +
+ ); +} diff --git a/src/containers/Drawers/ItemDetailDrawer/ItemPaymentTransactions/EstimatePaymentTransactionsDataTable.js b/src/containers/Drawers/ItemDetailDrawer/ItemPaymentTransactions/EstimatePaymentTransactionsDataTable.js new file mode 100644 index 000000000..507c48249 --- /dev/null +++ b/src/containers/Drawers/ItemDetailDrawer/ItemPaymentTransactions/EstimatePaymentTransactionsDataTable.js @@ -0,0 +1,73 @@ +import React from 'react'; +import intl from 'react-intl-universal'; +import clsx from 'classnames'; +import { CLASSES } from '../../../../common/classes'; +import { DataTable, Card, FormatDateCell } from '../../../../components'; + +/** + * Esimtate payment transactions datatable. + */ +export default function EstimatePaymentTransactions() { + const columns = React.useMemo( + () => [ + { + id: 'estimate_date', + Header: intl.get('date'), + accessor: 'estimate_date', + Cell: FormatDateCell, + width: 110, + className: 'estimate_date', + textOverview: true, + }, + { + id: 'estimate_number', + Header: intl.get('estimate_no'), + accessor: 'estimate_number', + width: 100, + className: 'estimate_number', + textOverview: true, + }, + { + id: 'reference', + Header: intl.get('reference_no'), + accessor: 'reference', + width: 140, + className: 'reference', + }, + { + id: 'customer_id', + Header: intl.get('customer_name'), + accessor: 'customer.display_name', + width: 140, + className: 'customer_id', + }, + { + id: 'qunatity', + Header: 'Quantity Sold', + }, + { + id: 'rate', + Header: 'Rate', + }, + { + id: 'total', + Header: intl.get('total'), + }, + ], + [], + ); + + return ( +
+ + + +
+ ); +} diff --git a/src/containers/Drawers/ItemDetailDrawer/ItemPaymentTransactions/InvoicePaymentTransactionsDataTable.js b/src/containers/Drawers/ItemDetailDrawer/ItemPaymentTransactions/InvoicePaymentTransactionsDataTable.js new file mode 100644 index 000000000..d0bd96ec9 --- /dev/null +++ b/src/containers/Drawers/ItemDetailDrawer/ItemPaymentTransactions/InvoicePaymentTransactionsDataTable.js @@ -0,0 +1,83 @@ +import React from 'react'; +import intl from 'react-intl-universal'; +import clsx from 'classnames'; +import { CLASSES } from '../../../../common/classes'; +import { DataTable, Card, FormatDateCell } from '../../../../components'; + +/** + * Invoice payment transactions datatable. + */ +export default function InvoicePaymentTransactionsTable() { + const columns = React.useMemo( + () => [ + { + id: 'invoice_date', + Header: intl.get('date'), + accessor: 'invoice_date', + Cell: FormatDateCell, + width: 110, + className: 'invoice_date', + textOverview: true, + }, + { + id: 'invoice_no', + Header: intl.get('invoice_no__'), + accessor: 'invoice_no', + width: 100, + className: 'invoice_no', + textOverview: true, + }, + { + id: 'customer', + Header: intl.get('customer_name'), + accessor: 'customer.display_name', + width: 180, + className: 'customer_id', + clickable: true, + textOverview: true, + }, + { + id: 'reference_no', + Header: intl.get('reference_no'), + accessor: 'reference_no', + width: 90, + className: 'reference_no', + textOverview: true, + }, + { + id: 'qunatity', + Header: 'Quantity Sold', + }, + { + id: 'rate', + Header: 'Rate', + }, + { + id: 'total', + Header: intl.get('total'), + }, + { + id: 'status', + Header: intl.get('status'), + // accessor: (row) => statusAccessor(row), + width: 160, + className: 'status', + }, + ], + [], + ); + + return ( +
+ + + +
+ ); +} diff --git a/src/containers/Drawers/ItemDetailDrawer/ItemPaymentTransactions/ReceiptPaymentTransactionsDataTable.js b/src/containers/Drawers/ItemDetailDrawer/ItemPaymentTransactions/ReceiptPaymentTransactionsDataTable.js new file mode 100644 index 000000000..2566266ef --- /dev/null +++ b/src/containers/Drawers/ItemDetailDrawer/ItemPaymentTransactions/ReceiptPaymentTransactionsDataTable.js @@ -0,0 +1,83 @@ +import React from 'react'; +import intl from 'react-intl-universal'; +import clsx from 'classnames'; +import { CLASSES } from '../../../../common/classes'; +import { DataTable, Card, FormatDateCell } from '../../../../components'; + +/** + * Receipt payment transactions datatable. + */ +export default function ReceiptPaymentTransactions() { + const columns = React.useMemo( + () => [ + { + id: 'receipt_date', + Header: intl.get('date'), + accessor: 'receipt_date', + Cell: FormatDateCell, + width: 110, + className: 'receipt_date', + textOverview: true, + }, + { + id: 'receipt_number', + Header: intl.get('receipt_no'), + accessor: 'receipt_number', + width: 140, + className: 'receipt_number', + clickable: true, + textOverview: true, + }, + { + id: 'customer', + Header: intl.get('customer_name'), + accessor: 'customer.display_name', + width: 140, + className: 'customer_id', + textOverview: true, + }, + { + id: 'reference_no', + Header: intl.get('reference_no'), + accessor: 'reference_no', + width: 140, + className: 'reference_no', + textOverview: true, + }, + { + id: 'status', + Header: intl.get('status'), + // accessor: StatusAccessor, + width: 140, + className: 'status', + }, + { + id: 'qunatity', + Header: 'Quantity Sold', + }, + { + id: 'rate', + Header: 'Rate', + }, + { + id: 'total', + Header: intl.get('total'), + }, + ], + [], + ); + + return ( +
+ + + +
+ ); +} diff --git a/src/containers/Drawers/ItemDetailDrawer/ItemPaymentTransactions/index.js b/src/containers/Drawers/ItemDetailDrawer/ItemPaymentTransactions/index.js new file mode 100644 index 000000000..7c6b78828 --- /dev/null +++ b/src/containers/Drawers/ItemDetailDrawer/ItemPaymentTransactions/index.js @@ -0,0 +1,40 @@ +import React from 'react'; +import { Tab } from '@blueprintjs/core'; +import { DrawerMainTabs } from 'components'; +import InvoicePaymentTransactionsTable from './InvoicePaymentTransactionsDataTable'; +import EstimatePaymentTransactionsTable from './EstimatePaymentTransactionsDataTable'; +import ReceiptPaymentTransactionsTable from './ReceiptPaymentTransactionsDataTable'; +import BillPaymentTransactionsTable from './BillPaymentTransactionsDataTable'; + +import ItemSwitchMenuItem from './utils'; + +export const ItemPaymentTransactions = () => { + return ( + + } + /> + } + /> + } + /> + } + /> + + ); +}; + +{ + /* */ +} diff --git a/src/containers/Drawers/ItemDetailDrawer/ItemPaymentTransactions/utils.js b/src/containers/Drawers/ItemDetailDrawer/ItemPaymentTransactions/utils.js new file mode 100644 index 000000000..783e6dde0 --- /dev/null +++ b/src/containers/Drawers/ItemDetailDrawer/ItemPaymentTransactions/utils.js @@ -0,0 +1,59 @@ +import React from 'react'; +import intl from 'react-intl-universal'; +import { + Popover, + Menu, + Position, + Button, + MenuItem, + Classes, + NavbarGroup, + PopoverInteractionKind, +} from '@blueprintjs/core'; +import { Icon } from '../../../../components'; +import { curry } from 'lodash/fp'; +import { Select } from '@blueprintjs/select'; + +function ItemSwitchMenuItem({ onChange }) { + const Transaction = [ + { name: 'Invoice' }, + { name: 'Estimate' }, + { name: 'Bill' }, + { name: 'Receipt' }, + ]; + + const handleSwitchMenutItem = (item) => { + onChange && onChange(item); + }; + + const content = ( + + {Transaction.map((item) => ( + handleSwitchMenutItem(item.name)} + text={item.name} + /> + ))} + + ); + + return ( + +