From 3e15cd42c84d55debe3fb707109e8dbb33abddee Mon Sep 17 00:00:00 2001 From: Ahmed Bouhuolia Date: Wed, 17 Jun 2020 22:06:33 +0200 Subject: [PATCH] feat: Financial statements enhancement. --- client/src/components/ContactsListField.js | 51 ++++++++ .../components/Dashboard/DashboardTopbar.js | 42 ++++--- .../DataTableCells/ContactsListFieldCell.js | 35 ++++++ client/src/components/DataTableCells/index.js | 2 + client/src/components/FieldHint.js | 4 +- client/src/components/MenuItemLabel.js | 7 ++ client/src/components/Sidebar/SidebarMenu.js | 3 + client/src/components/index.js | 8 +- client/src/config/financialReportsMenu.js | 45 +++++++ client/src/config/sidebarMenu.js | 111 ++++++++-------- .../Accounting/MakeJournalEntriesForm.js | 2 + .../Accounting/MakeJournalEntriesHeader.js | 10 +- .../Accounting/MakeJournalEntriesPage.js | 20 ++- .../Accounting/MakeJournalEntriesTable.js | 27 +++- .../src/containers/Customers/withCustomers.js | 1 + .../containers/Expenses/ExpenseDataTable.js | 14 ++- client/src/containers/Expenses/ExpenseForm.js | 50 ++++---- .../containers/Expenses/ExpenseFormHeader.js | 24 ++-- .../src/containers/Expenses/ExpenseTable.js | 27 ++-- .../src/containers/Expenses/ExpensesList.js | 16 ++- .../BalanceSheet/BalanceSheet.js | 17 ++- .../BalanceSheet/BalanceSheetActionsBar.js | 21 +++- .../BalanceSheet/BalanceSheetHeader.js | 63 +++++----- .../BalanceSheet/BalanceSheetTable.js | 26 ++-- .../BalanceSheet/withBalanceSheetActions.js | 11 +- .../BalanceSheet/withBalanceSheetDetail.js | 1 + .../FinancialStatements/FinancialReports.js | 59 +++++++++ .../FinancialStatementDateRange.js | 119 +++++++++--------- .../GeneralLedger/GeneralLedgerActionsBar.js | 18 ++- .../GeneralLedger/GeneralLedgerHeader.js | 52 ++++---- .../GeneralLedger/withGeneralLedger.js | 8 +- .../GeneralLedger/withGeneralLedgerActions.js | 2 + .../Journal/JournalActionsBar.js | 17 ++- .../Journal/JournalHeader.js | 48 +++---- .../Journal/withJournal.js | 1 + .../Journal/withJournalActions.js | 4 +- .../ProfitLossSheet/ProfitLossActionsBar.js | 15 +++ .../ProfitLossSheet/ProfitLossSheet.js | 21 ++-- .../ProfitLossSheet/ProfitLossSheetHeader.js | 48 +++---- .../ProfitLossSheet/ProfitLossSheetTable.js | 10 +- .../ProfitLossSheet/withProfitLoss.js | 1 + .../ProfitLossSheet/withProfitLossActions.js | 2 + .../ReceivableAgingSummary.js | 24 ++-- .../ReceivableAgingSummaryActionsBar.js | 23 +++- .../ReceivableAgingSummaryHeader.js | 104 ++++++++------- .../ReceivableAgingSummaryTable.js | 35 ++++-- .../withReceivableAgingSummary.js | 7 ++ .../withReceivableAgingSummaryActions.js | 14 ++- .../TrialBalanceActionsBar.js | 15 +++ .../TrialBalanceSheet/TrialBalanceSheet.js | 21 ++-- .../TrialBalanceSheetHeader.js | 37 +++--- .../TrialBalanceSheetTable.js | 29 +++-- .../TrialBalanceSheet/withTrialBalance.js | 1 + .../withTrialBalanceActions.js | 4 +- client/src/lang/en/index.js | 13 +- client/src/routes/dashboard.js | 26 ++-- client/src/static/json/icons.js | 12 +- client/src/store/expenses/expenses.reducer.js | 2 +- .../financialStatements.actions.js | 42 +++++++ .../financialStatements.reducer.js | 73 ++++++++++- .../financialStatements.types.js | 7 ++ client/src/style/App.scss | 15 +++ client/src/style/components/data-table.scss | 8 +- client/src/style/objects/form.scss | 19 ++- client/src/style/pages/dashboard.scss | 17 ++- client/src/style/pages/expense-form.scss | 93 +++++++------- .../src/style/pages/financial-statements.scss | 118 +++++++++++++---- .../src/style/pages/make-journal-entries.scss | 2 +- client/src/style/views/Sidebar.scss | 56 +++------ server/src/http/controllers/Expenses.js | 2 +- .../ReceivableAgingSummary.js | 3 +- server/src/models/Account.js | 2 +- server/src/models/AccountTransaction.js | 2 +- server/src/models/Customer.js | 2 +- server/src/models/DateSession.js | 10 +- 75 files changed, 1308 insertions(+), 593 deletions(-) create mode 100644 client/src/components/ContactsListField.js create mode 100644 client/src/components/DataTableCells/ContactsListFieldCell.js create mode 100644 client/src/components/MenuItemLabel.js create mode 100644 client/src/config/financialReportsMenu.js create mode 100644 client/src/containers/FinancialStatements/FinancialReports.js diff --git a/client/src/components/ContactsListField.js b/client/src/components/ContactsListField.js new file mode 100644 index 000000000..7e73470f2 --- /dev/null +++ b/client/src/components/ContactsListField.js @@ -0,0 +1,51 @@ +import React, { useCallback, useState } from 'react'; +import { + MenuItem, + Button, +} from '@blueprintjs/core'; +import ListSelect from 'components/ListSelect'; +import { FormattedMessage as T } from 'react-intl'; + +export default function ContactsListField({ + contacts, + onContactSelected, + error, + initialContact, + defautlSelectText = () +}) { + const [selectedContact, setSelectedContact] = useState( + initialContact || null + ); + + const contactTypeLabel = (contactType) => { + switch(contactType) { + case 'customer': + return 'Customer'; + case 'vendor': + return 'Vendor'; + } + }; + // Contact item of select accounts field. + const contactItem = useCallback((item, { handleClick, modifiers, query }) => ( + + ), []); + + const onContactSelect = useCallback((contact) => { + setSelectedContact(contact.id); + onContactSelected && onContactSelected(contact.id); + }, [setSelectedContact, onContactSelected]); + + return ( + } + itemRenderer={contactItem} + popoverProps={{ minimal: true }} + filterable={true} + onItemSelect={onContactSelect} + labelProp={'display_name'} + selectedItem={selectedContact} + selectedItemProp={'id'} + defaultText={defautlSelectText} /> + ); +} \ No newline at end of file diff --git a/client/src/components/Dashboard/DashboardTopbar.js b/client/src/components/Dashboard/DashboardTopbar.js index ecc9940dd..53e792c8d 100644 --- a/client/src/components/Dashboard/DashboardTopbar.js +++ b/client/src/components/Dashboard/DashboardTopbar.js @@ -7,6 +7,8 @@ import { NavbarDivider, Button, Classes, + Tooltip, + Position, } from '@blueprintjs/core'; import { FormattedMessage as T } from 'react-intl'; @@ -56,25 +58,27 @@ function DashboardTopbar({
-