feat: add style of vendor credit.

This commit is contained in:
elforjani13
2021-12-20 16:11:10 +02:00
parent dbe067a27c
commit 828c33bee1
8 changed files with 182 additions and 106 deletions

View File

@@ -5,10 +5,14 @@ import { useVendorCreditDetailDrawerContext } from '../VendorCreditDetailDrawerP
import { useTransactionsByReference } from 'hooks/query'; import { useTransactionsByReference } from 'hooks/query';
import { useJournalEntriesTransactionsColumns } from './components'; import { useJournalEntriesTransactionsColumns } from './components';
import JournalEntriesTable, {
AmountDisplayedBaseCurrencyMessage,
} from '../../../JournalEntriesTable/JournalEntriesTable';
/** /**
* Journal entries vendor credit transactions table. * Journal entries vendor credit transactions table.
*/ */
export default function JournalEntriesTransactionsTable() { export function VendorCreditGLEntriesTable() {
const { vendorCreditId } = useVendorCreditDetailDrawerContext(); const { vendorCreditId } = useVendorCreditDetailDrawerContext();
const columns = useJournalEntriesTransactionsColumns(); const columns = useJournalEntriesTransactionsColumns();
@@ -27,11 +31,11 @@ export default function JournalEntriesTransactionsTable() {
return ( return (
<Card> <Card>
<DataTable <AmountDisplayedBaseCurrencyMessage />
<JournalEntriesTable
columns={columns} columns={columns}
data={transactions} data={transactions}
loading={isTransactionLoading} loading={isTransactionLoading}
className={'datatable--journal-entries'}
/> />
</Card> </Card>
); );

View File

@@ -1,9 +1,9 @@
import React from 'react'; import React from 'react';
import { DataTable, Card } from 'components'; import { DataTable, Card } from 'components';
import '../../../../style/pages/RefundCreditNote/List.scss'; import { TableStyle } from 'common';
import withAlertsActions from 'containers/Alert/withAlertActions'; import withAlertsActions from 'containers/Alert/withAlertActions';
import { useVendorCreditDetailDrawerContext } from '../VendorCreditDetailDrawerProvider'; import { useVendorCreditDetailDrawerContext } from '../VendorCreditDetailDrawerProvider';
import { import {
useReconcileVendorCreditTransactionsTableColumns, useReconcileVendorCreditTransactionsTableColumns,
@@ -33,10 +33,10 @@ function ReconcileVendorCreditTransactionsTable({
columns={columns} columns={columns}
data={reconcileVendorCredits} data={reconcileVendorCredits}
ContextMenu={ActionsMenu} ContextMenu={ActionsMenu}
styleName={TableStyle.Constrant}
payload={{ payload={{
onDelete: handleDeleteReconcileVendorCredit, onDelete: handleDeleteReconcileVendorCredit,
}} }}
className={'datatable--refund-transactions'}
/> />
</Card> </Card>
); );

View File

@@ -1,7 +1,7 @@
import React from 'react'; import React from 'react';
import { DataTable, Card } from 'components'; import { DataTable, Card } from 'components';
import 'style/pages/RefundVendorCredit/List.scss'; import { TableStyle } from 'common';
import withAlertsActions from 'containers/Alert/withAlertActions'; import withAlertsActions from 'containers/Alert/withAlertActions';
import { useVendorCreditDetailDrawerContext } from '../VendorCreditDetailDrawerProvider'; import { useVendorCreditDetailDrawerContext } from '../VendorCreditDetailDrawerProvider';
@@ -34,10 +34,10 @@ function RefundVendorCreditTransactionsTable({
columns={columns} columns={columns}
data={refundVendorCredit} data={refundVendorCredit}
ContextMenu={ActionsMenu} ContextMenu={ActionsMenu}
styleName={TableStyle.Constrant}
payload={{ payload={{
onDelete: handleDeleteRefundVendorCredit, onDelete: handleDeleteRefundVendorCredit,
}} }}
className={'datatable--refund-transactions'}
/> />
</Card> </Card>
); );

View File

@@ -1,22 +1,34 @@
import React from 'react'; import React from 'react';
import { Tab } from '@blueprintjs/core'; import { Tab } from '@blueprintjs/core';
import intl from 'react-intl-universal'; import intl from 'react-intl-universal';
import { DrawerMainTabs } from 'components'; import styled from 'styled-components';
import { DrawerMainTabs } from 'components';
import VendorCreditDetailActionsBar from './VendorCreditDetailActionsBar';
import VendorCreditDetailPanel from './VendorCreditDetailPanel'; import VendorCreditDetailPanel from './VendorCreditDetailPanel';
import RefundVendorCreditTransactionsTable from './RefundVendorCreditTransactions/RefundVendorCreditTransactionsTable'; import RefundVendorCreditTransactionsTable from './RefundVendorCreditTransactions/RefundVendorCreditTransactionsTable';
import ReconcileVendorCreditTransactionsTable from './ReconcileVendorCreditTransactions/ReconcileVendorCreditTransactionsTable'; import ReconcileVendorCreditTransactionsTable from './ReconcileVendorCreditTransactions/ReconcileVendorCreditTransactionsTable';
import JournalEntriesTransactionsTable from './JournalEntriesTransactions/JournalEntriesTransactionsTable'; import { VendorCreditGLEntriesTable } from './JournalEntriesTransactions/JournalEntriesTransactionsTable';
import clsx from 'classnames';
import VendorCreditDetailCls from '../../../style/components/Drawers/VendorCreditDetail.module.scss';
/** /**
* Vendor credit view detail. * Vendor credit view detail.
*
*/ */
export default function VendorCreditDetail() { export default function VendorCreditDetail() {
return ( return (
<div className={clsx(VendorCreditDetailCls.root)}> <VendorCreditRoot>
<VendorCreditDetailActionsBar />
<VendorCreditDetailsTabs />
</VendorCreditRoot>
);
}
/**
* Vendor Credit details tabs.
* @returns {React.JSX}
*/
function VendorCreditDetailsTabs() {
return (
<DrawerMainTabs renderActiveTabPanelOnly={true}> <DrawerMainTabs renderActiveTabPanelOnly={true}>
<Tab <Tab
title={intl.get('details')} title={intl.get('details')}
@@ -26,7 +38,7 @@ export default function VendorCreditDetail() {
<Tab <Tab
title={intl.get('journal_entries')} title={intl.get('journal_entries')}
id={'journal_entries'} id={'journal_entries'}
panel={<JournalEntriesTransactionsTable />} panel={<VendorCreditGLEntriesTable />}
/> />
<Tab <Tab
title={intl.get('vendor_credit.drawer.label_refund_transactions')} title={intl.get('vendor_credit.drawer.label_refund_transactions')}
@@ -39,6 +51,7 @@ export default function VendorCreditDetail() {
panel={<ReconcileVendorCreditTransactionsTable />} panel={<ReconcileVendorCreditTransactionsTable />}
/> />
</DrawerMainTabs> </DrawerMainTabs>
</div>
); );
} }
const VendorCreditRoot = styled.div``;

View File

@@ -1,12 +1,21 @@
import React from 'react'; import React from 'react';
import intl from 'react-intl-universal'; import intl from 'react-intl-universal';
import { defaultTo } from 'lodash'; import { defaultTo } from 'lodash';
import clsx from 'classnames'; import styled from 'styled-components';
import { FormatDate, T, DetailsMenu, DetailItem } from 'components'; import {
FormatDate,
T,
Row,
Col,
DetailsMenu,
DetailItem,
ButtonLink,
CommercialDocHeader,
CommercialDocTopHeader,
} from 'components';
import { useVendorCreditDetailDrawerContext } from './VendorCreditDetailDrawerProvider'; import { useVendorCreditDetailDrawerContext } from './VendorCreditDetailDrawerProvider';
import { VendorCreditDetailsStatus } from './utils';
import VendorCreditDetailCls from '../../../style/components/Drawers/VendorCreditDetail.module.scss';
/** /**
* Vendor credit detail drawer header. * Vendor credit detail drawer header.
@@ -14,47 +23,72 @@ import VendorCreditDetailCls from '../../../style/components/Drawers/VendorCredi
export default function VendorCreditDetailHeader() { export default function VendorCreditDetailHeader() {
const { vendorCredit } = useVendorCreditDetailDrawerContext(); const { vendorCredit } = useVendorCreditDetailDrawerContext();
return ( return (
<div className={clsx(VendorCreditDetailCls.detail_panel_header)}> <CommercialDocHeader>
<CommercialDocTopHeader>
<DetailsMenu> <DetailsMenu>
<DetailItem label={intl.get('amount')}> <AmountItem label={intl.get('amount')}>
<span class="big-number">{vendorCredit.formatted_amount}</span> <span class="big-number">{vendorCredit.formatted_amount}</span>
</DetailItem> </AmountItem>
<StatusItem>
<VendorCreditDetailsStatus vendorCredit={vendorCredit} />
</StatusItem>
</DetailsMenu>
</CommercialDocTopHeader>
<Row>
<Col xs={6}>
<DetailsMenu direction={'horizantal'} minLabelSize={'180px'}>
<DetailItem <DetailItem
label={intl.get('vendor_credit.drawer.label_vendor_credit_no')} label={intl.get('vendor_credit.drawer.label_vendor_credit_no')}
children={defaultTo(vendorCredit.vendor_credit_number, '-')} >
/> {defaultTo(vendorCredit.vendor_credit_number, '-')}
<DetailItem </DetailItem>
label={intl.get('vendor_name')}
children={vendorCredit.vendor?.display_name} <DetailItem label={intl.get('vendor_name')}>
/> <ButtonLink>{vendorCredit.vendor?.display_name}</ButtonLink>
</DetailItem>
<DetailItem <DetailItem
label={intl.get('vendor_credit.drawer.label_vendor_credit_date')} label={intl.get('vendor_credit.drawer.label_vendor_credit_date')}
children={ >
<FormatDate value={vendorCredit.formatted_vendor_credit_date} /> <FormatDate value={vendorCredit.formatted_vendor_credit_date} />
} </DetailItem>
/> </DetailsMenu>
</Col>
<Col xs={6}>
<DetailsMenu
textAlign={'right'}
direction={'horizantal'}
minLabelSize={'180px'}
>
<DetailItem <DetailItem
label={intl.get('vendor_credit.drawer.label_credits_remaining')} label={intl.get('vendor_credit.drawer.label_credits_remaining')}
children={vendorCredit.formatted_credits_remaining} >
/> <strong>{vendorCredit.formatted_credits_remaining}</strong>
</DetailsMenu> </DetailItem>
<DetailsMenu direction={'horizantal'} minLabelSize={'140px'}>
<DetailItem <DetailItem
label={intl.get('reference')} label={intl.get('reference')}
children={vendorCredit.reference_no} children={defaultTo(vendorCredit.reference_no, '-')}
/> />
<DetailItem <DetailItem
label={intl.get('note')} label={intl.get('note')}
children={defaultTo(vendorCredit.note, '-')} children={defaultTo(vendorCredit.note, '-')}
/> />
<DetailItem <DetailItem
label={<T id={'vendor_credit.drawer.label_created_at'} />} label={<T id={'vendor_credit.drawer.label_created_at'} />}
children={<FormatDate value={vendorCredit.created_at} />} children={<FormatDate value={vendorCredit.created_at} />}
/> />
</DetailsMenu> </DetailsMenu>
</div> </Col>
</Row>
</CommercialDocHeader>
); );
} }
const StatusItem = styled(DetailItem)`
width: 50%;
text-align: right;
`;
const AmountItem = styled(DetailItem)`
width: 50%;
`;

View File

@@ -1,24 +1,17 @@
import React from 'react'; import React from 'react';
import clsx from 'classnames';
import { Card } from 'components'; import { CommercialDocBox } from 'components';
import VendorCreditDetailActionsBar from './VendorCreditDetailActionsBar';
import VendorCreditDetailHeader from './VendorCreditDetailHeader'; import VendorCreditDetailHeader from './VendorCreditDetailHeader';
import VendorCreditDetailTable from './VendorCreditDetailTable'; import VendorCreditDetailTable from './VendorCreditDetailTable';
import VendorCreditDetailDrawerFooter from './VendorCreditDetailDrawerFooter'; import VendorCreditDetailDrawerFooter from './VendorCreditDetailDrawerFooter';
import VendorCreditDetailCls from '../../../style/components/Drawers/VendorCreditDetail.module.scss';
export default function VendorCreditDetailPanel() { export default function VendorCreditDetailPanel() {
return ( return (
<div className={clsx(VendorCreditDetailCls.detail_panel)}> <CommercialDocBox>
<VendorCreditDetailActionsBar />
<Card>
<VendorCreditDetailHeader /> <VendorCreditDetailHeader />
<VendorCreditDetailTable /> <VendorCreditDetailTable />
<VendorCreditDetailDrawerFooter /> {/* <VendorCreditDetailDrawerFooter /> */}
</Card> </CommercialDocBox>
</div>
); );
} }

View File

@@ -1,12 +1,11 @@
import React from 'react'; import React from 'react';
import clsx from 'classnames';
import { DataTable } from 'components'; import { CommercialDocEntriesTable } from 'components';
import { useVendorCreditDetailDrawerContext } from './VendorCreditDetailDrawerProvider'; import { useVendorCreditDetailDrawerContext } from './VendorCreditDetailDrawerProvider';
import { useVendorCreditReadonlyEntriesTableColumns } from './utils'; import { useVendorCreditReadonlyEntriesTableColumns } from './utils';
import VendorCreditDetailCls from '../../../style/components/Drawers/VendorCreditDetail.module.scss'; import { TableStyle } from '../../../common';
/** /**
* Vendor Credit detail table. * Vendor Credit detail table.
@@ -20,12 +19,10 @@ export default function VendorCreditDetailTable() {
const columns = useVendorCreditReadonlyEntriesTableColumns(); const columns = useVendorCreditReadonlyEntriesTableColumns();
return ( return (
<div className={clsx(VendorCreditDetailCls.detail_panel_table)}> <CommercialDocEntriesTable
<DataTable
columns={columns} columns={columns}
data={entries} data={entries}
className={'table-constrant'} styleName={TableStyle.Constrant}
/> />
</div>
); );
} }

View File

@@ -7,11 +7,14 @@ import {
Position, Position,
MenuItem, MenuItem,
Menu, Menu,
Tag,
Intent,
} from '@blueprintjs/core'; } from '@blueprintjs/core';
import { import {
FormatNumberCell,
Icon, Icon,
FormattedMessage as T, FormattedMessage as T,
FormatNumberCell,
Choose,
} from '../../../components'; } from '../../../components';
/** /**
@@ -61,6 +64,10 @@ export const useVendorCreditReadonlyEntriesTableColumns = () =>
[], [],
); );
/**
* Vendor note more actions menu.
* @returns {React.JSX}
*/
export const VendorCreditMenuItem = ({ payload: { onReconcile } }) => { export const VendorCreditMenuItem = ({ payload: { onReconcile } }) => {
return ( return (
<Popover <Popover
@@ -83,3 +90,31 @@ export const VendorCreditMenuItem = ({ payload: { onReconcile } }) => {
</Popover> </Popover>
); );
}; };
/**
* Vendor Credit details status.
* @returns {React.JSX}
*/
export function VendorCreditDetailsStatus({ vendorCredit }) {
return (
<Choose>
<Choose.When condition={vendorCredit.is_open}>
<Tag intent={Intent.WARNING} round={true}>
<T id={'open'} />
</Tag>
</Choose.When>
<Choose.When condition={vendorCredit.is_closed}>
<Tag intent={Intent.SUCCESS} round={true}>
<T id={'closed'} />
</Tag>
</Choose.When>
<Choose.When condition={vendorCredit.is_draft}>
<Tag intent={Intent.NONE} round={true} minimal={true}>
<T id={'draft'} />
</Tag>
</Choose.When>
</Choose>
);
}