Compare commits

...

19 Commits

Author SHA1 Message Date
Ahmed Bouhuolia
69f16d1977 Merge pull request #17 from bigcapitalhq/BIG-270-publish-and-draft-cashflow-transaction-should-be-always-publish
BIG-270 Publish and draft cashflow transaction.
2022-01-08 17:02:54 +02:00
elforjani13
9973693a86 BIG-270 Publish and draft cashflow transaction. 2022-01-08 16:59:31 +02:00
elforjani13
3a3dd7a565 fix(VendorForm): placeholder phone number. 2022-01-04 22:31:01 +02:00
elforjani13
687dda1e7c fix(inviteUserFrom): fix localiztion. 2022-01-04 21:31:58 +02:00
elforjani13
bfa809c831 feat(VendorList): add note accessor & personal phone. 2022-01-04 20:47:43 +02:00
elforjani13
07145e92ab feat(CustomerList): add note accessor & personal phone. 2022-01-04 20:47:28 +02:00
a.bouhuolia
4a46c00a07 chore: bump version. 2022-01-03 19:42:05 +02:00
a.bouhuolia
5c7ac0593d feat(GlobalErrors): localize the global errors. 2022-01-03 18:31:52 +02:00
a.bouhuolia
fa25fb4ede fix(TrialBalanceSheet): expand account name column. 2022-01-03 18:02:24 +02:00
a.bouhuolia
3566d3b855 Merge branch 'develop' of https://github.com/bigcapitalhq/client into develop 2022-01-03 13:53:40 +02:00
a.bouhuolia
c5da97bce0 chore: changlog. 2022-01-03 13:53:04 +02:00
a.bouhuolia
0cfbe633bd feat: add .env.example file. 2022-01-03 13:53:02 +02:00
a.bouhuolia
55098d7b78 chore: remove repo logo. 2022-01-03 13:53:00 +02:00
a.bouhuolia
78610cd519 chore: upload repo logo. 2022-01-03 13:52:59 +02:00
a.bouhuolia
828a28b976 chore: update package-lock.json. 2022-01-03 13:52:58 +02:00
a.bouhuolia
daf5fc8aba feat: add version numebr on sidebar footer. 2022-01-03 13:49:55 +02:00
a.bouhuolia
97d890bcef chore: remove repo logo. 2022-01-03 12:30:15 +02:00
a.bouhuolia
521df8511d chore: upload repo logo. 2022-01-03 12:24:28 +02:00
a.bouhuolia
73ec49b36a chore: update package-lock.json. 2022-01-03 12:06:07 +02:00
15 changed files with 908 additions and 31 deletions

1
.env.example Normal file
View File

@@ -0,0 +1 @@
APP_VERSION=$npm_package_version

1
.gitignore vendored
View File

@@ -13,6 +13,7 @@
# misc # misc
.DS_Store .DS_Store
.env
.env.local .env.local
.env.development.local .env.development.local
.env.test.local .env.test.local

View File

@@ -2,8 +2,17 @@
All notable changes to Bigcapital server-side will be in this file. All notable changes to Bigcapital server-side will be in this file.
## [1.5.3] - 03-01-2020
### Fixed
- Localize the global errors.
- Expand account name column on trial balance sheet.
## [1.5.0] - 20-12-2021 ## [1.5.0] - 20-12-2021
### Added ### Added
- Add credit note on sales module. - Add credit note on sales module.
- Add vendor credit on purchases module. - Add vendor credit on purchases module.
- Optimize landed costs on purchase invoices. - Optimize landed costs on purchase invoices.
@@ -16,22 +25,28 @@ All notable changes to Bigcapital server-side will be in this file.
purchase invoice, expense, manual journal, inventory adjustment and cashflow transaction. purchase invoice, expense, manual journal, inventory adjustment and cashflow transaction.
### Changed ### Changed
- Dashboard meta boot and authenticated user request query. - Dashboard meta boot and authenticated user request query.
- Optimize Arabic localization.
## [1.4.0] - 11-09-2021 ## [1.4.0] - 11-09-2021
### Added ### Added
- Add SMS notification on sale invoice, receipt, customers payments modules. - Add SMS notification on sale invoice, receipt, customers payments modules.
- Customer quick create in customers list. - Customer quick create in customers list.
- Item quick create in items list. - Item quick create in items list.
### Changes ### Changes
change: BIG-171 alerts in global scope and lazy loading.
change: BIG-171 alerts in global scope and lazy loading.
### Fixed ### Fixed
fix: BIG-140 - Reordering sell, cost and inventory account on item details.
fix: BIG-144 - Typo adjustment dialog success message. fix: BIG-140 - Reordering sell, cost and inventory account on item details.
fix: BIG-148 - Items entries ordered by index. fix: BIG-144 - Typo adjustment dialog success message.
fix: BIG-132 AR/AP aging summary report filter by none transactions/zero contacts. fix: BIG-148 - Items entries ordered by index.
fix: BIG-132 AR/AP aging summary report filter by none transactions/zero contacts.
## [1.2.0-RC] - 03-09-2021 ## [1.2.0-RC] - 03-09-2021
@@ -39,6 +54,7 @@ Here we write upgrading notes for brands. It's a team effort to make them as
straightforward as possible. straightforward as possible.
### Added ### Added
- Add slidable sub-sidebar to improve user experience instead of sub-menu. - Add slidable sub-sidebar to improve user experience instead of sub-menu.
- Add Subscription guard to ensure the organization's subscription is active or - Add Subscription guard to ensure the organization's subscription is active or
redirect all routes to subscription billing page. redirect all routes to subscription billing page.
@@ -65,11 +81,13 @@ straightforward as possible.
- Add clickable datatable rows to display each row details. - Add clickable datatable rows to display each row details.
### Changed ### Changed
- Optimize style of datatable selection checkbox. - Optimize style of datatable selection checkbox.
- Disable animation in dashboard views tabs. - Disable animation in dashboard views tabs.
- Optimize Arabic localization. - Optimize Arabic localization.
### Fixed ### Fixed
- fix: disable submit buttons in pereferences pages. - fix: disable submit buttons in pereferences pages.
- fix: inventory adjustment cost field max/min range to avoid out of range error. - fix: inventory adjustment cost field max/min range to avoid out of range error.
- fix: transactions by customers/vendors report localization. - fix: transactions by customers/vendors report localization.

779
package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@@ -1,6 +1,6 @@
{ {
"name": "bigcapital-client", "name": "bigcapital-client",
"version": "1.2.0", "version": "1.5.3",
"private": true, "private": true,
"dependencies": { "dependencies": {
"@babel/core": "7.8.4", "@babel/core": "7.8.4",

View File

@@ -1,4 +1,5 @@
import React from 'react'; import React from 'react';
import SidebarContainer from 'components/Sidebar/SidebarContainer'; import SidebarContainer from 'components/Sidebar/SidebarContainer';
import SidebarHead from 'components/Sidebar/SidebarHead'; import SidebarHead from 'components/Sidebar/SidebarHead';
import SidebarMenu from 'components/Sidebar/SidebarMenu'; import SidebarMenu from 'components/Sidebar/SidebarMenu';
@@ -17,7 +18,20 @@ export default function Sidebar({ dashboardContentRef }) {
<SidebarMenu menu={menu} /> <SidebarMenu menu={menu} />
</div> </div>
<div class="sidebar__version">0.0.1-beta version.</div> <SidebarFooterVersion />
</SidebarContainer> </SidebarContainer>
); );
} }
/**
* Sidebar footer version.
* @returns {React.JSX}
*/
function SidebarFooterVersion() {
const { REACT_APP_VERSION: VERSION } = process.env;
if (!VERSION) {
return null;
}
return <div class="sidebar__version">v{VERSION}</div>;
}

View File

@@ -1,5 +1,13 @@
import React, { useMemo } from 'react'; import React, { useMemo } from 'react';
import { Menu, MenuItem, MenuDivider, Intent } from '@blueprintjs/core'; import {
Menu,
MenuItem,
MenuDivider,
Intent,
Tooltip,
Position,
Classes,
} from '@blueprintjs/core';
import clsx from 'classnames'; import clsx from 'classnames';
import intl from 'react-intl-universal'; import intl from 'react-intl-universal';
@@ -79,7 +87,7 @@ export function ActionsMenu({
* Phone number accessor. * Phone number accessor.
*/ */
export function PhoneNumberAccessor(row) { export function PhoneNumberAccessor(row) {
return <div className={'work_phone'}>{row.work_phone}</div>; return <div className={'work_phone'}>{row.personal_phone}</div>;
} }
/** /**
@@ -89,6 +97,24 @@ export function BalanceAccessor(row) {
return <Money amount={row.closing_balance} currency={row.currency_code} />; return <Money amount={row.closing_balance} currency={row.currency_code} />;
} }
/**
* Note column accessor.
*/
export function NoteAccessor(row) {
return (
<If condition={row.note}>
<Tooltip
className={Classes.TOOLTIP_INDICATOR}
content={row.note}
position={Position.LEFT_TOP}
hoverOpenDelay={50}
>
<Icon icon={'file-alt'} iconSize={16} />
</Tooltip>
</If>
);
}
/** /**
* Retrieve customers table columns. * Retrieve customers table columns.
*/ */
@@ -123,12 +149,20 @@ export function useCustomersTableColumns() {
}, },
{ {
id: 'work_phone', id: 'work_phone',
Header: intl.get('work_phone'), Header: intl.get('phone_number'),
accessor: PhoneNumberAccessor, accessor: PhoneNumberAccessor,
className: 'phone_number', className: 'phone_number',
width: 100, width: 100,
clickable: true, clickable: true,
}, },
{
id: 'note',
Header: intl.get('note'),
accessor: NoteAccessor,
disableSortBy: true,
width: 85,
clickable: true,
},
{ {
id: 'balance', id: 'balance',
Header: intl.get('receivable_balance'), Header: intl.get('receivable_balance'),

View File

@@ -73,7 +73,7 @@ function MoneyInForm({
const handleFormSubmit = (values, { setSubmitting, setErrors }) => { const handleFormSubmit = (values, { setSubmitting, setErrors }) => {
const form = { const form = {
...omit(values, ['currency_code']), ...omit(values, ['currency_code']),
published: submitPayload.publish, published: true,
}; };
setSubmitting(true); setSubmitting(true);
createCashflowTransactionMutate(form) createCashflowTransactionMutate(form)

View File

@@ -73,7 +73,7 @@ function MoneyOutForm({
const handleFormSubmit = (values, { setSubmitting, setErrors }) => { const handleFormSubmit = (values, { setSubmitting, setErrors }) => {
const form = { const form = {
...omit(values, ['currency_code']), ...omit(values, ['currency_code']),
published: submitPayload.publish, published: true,
}; };
setSubmitting(true); setSubmitting(true);
createCashflowTransactionMutate(form) createCashflowTransactionMutate(form)

View File

@@ -11,8 +11,6 @@ import FinancialLoadingBar from '../FinancialLoadingBar';
* Retrieve trial balance sheet table columns. * Retrieve trial balance sheet table columns.
*/ */
export const useTrialBalanceTableColumns = () => { export const useTrialBalanceTableColumns = () => {
// Trial balance sheet context. // Trial balance sheet context.
const { const {
trialBalanceSheet: { tableRows }, trialBalanceSheet: { tableRows },
@@ -24,7 +22,7 @@ export const useTrialBalanceTableColumns = () => {
Header: intl.get('account_name'), Header: intl.get('account_name'),
accessor: (row) => (row.code ? `${row.name} - ${row.code}` : row.name), accessor: (row) => (row.code ? `${row.name} - ${row.code}` : row.name),
className: 'name', className: 'name',
width: 180, width: 350,
textOverview: true, textOverview: true,
}, },
{ {
@@ -35,12 +33,14 @@ export const useTrialBalanceTableColumns = () => {
width: getColumnWidth(tableRows, `credit`, { width: getColumnWidth(tableRows, `credit`, {
minWidth: 80, minWidth: 80,
}), }),
textOverview: true,
}, },
{ {
Header: intl.get('debit'), Header: intl.get('debit'),
Cell: CellTextSpan, Cell: CellTextSpan,
accessor: 'formatted_debit', accessor: 'formatted_debit',
width: getColumnWidth(tableRows, `debit`, { minWidth: 80 }), width: getColumnWidth(tableRows, `debit`, { minWidth: 80 }),
textOverview: true,
}, },
{ {
Header: intl.get('balance'), Header: intl.get('balance'),
@@ -50,6 +50,7 @@ export const useTrialBalanceTableColumns = () => {
width: getColumnWidth(tableRows, `balance`, { width: getColumnWidth(tableRows, `balance`, {
minWidth: 80, minWidth: 80,
}), }),
textOverview: true,
}, },
], ],
[tableRows], [tableRows],

View File

@@ -43,7 +43,7 @@ function GlobalErrors({
if (globalErrors.access_denied) { if (globalErrors.access_denied) {
toastKeySomethingWrong = AppToaster.show( toastKeySomethingWrong = AppToaster.show(
{ {
message: 'You do not have permissions to access this page.', message: intl.get('global_error.you_dont_have_permissions'),
intent: Intent.DANGER, intent: Intent.DANGER,
onDismiss: () => { onDismiss: () => {
globalErrorsSet({ access_denied: false }); globalErrorsSet({ access_denied: false });
@@ -53,11 +53,10 @@ function GlobalErrors({
); );
} }
if (globalErrors.transactionsLocked) { if (globalErrors.transactionsLocked) {
const lockedToDate =
globalErrors.transactionsLocked.formatted_locked_to_date;
AppToaster.show({ AppToaster.show({
message: `Transactions before ${lockedToDate} has been locked. Hence action cannot be performed.`, message: intl.get('global_error.transactions_locked', {
lockedToDate: globalErrors.transactionsLocked.formatted_locked_to_date,
}),
intent: Intent.DANGER, intent: Intent.DANGER,
onDismiss: () => { onDismiss: () => {
globalErrorsSet({ transactionsLocked: false }); globalErrorsSet({ transactionsLocked: false });
@@ -66,7 +65,7 @@ function GlobalErrors({
} }
if (globalErrors.userInactive) { if (globalErrors.userInactive) {
AppToaster.show({ AppToaster.show({
message: 'The authorized user is inactive.', message: intl.get('global_error.authorized_user_inactive'),
intent: Intent.DANGER, intent: Intent.DANGER,
onDismiss: () => { onDismiss: () => {
globalErrorsSet({ userInactive: false }); globalErrorsSet({ userInactive: false });

View File

@@ -48,7 +48,7 @@ function VendorFormAfterPrimarySection() {
{({ field, meta: { error, touched } }) => ( {({ field, meta: { error, touched } }) => (
<InputGroup <InputGroup
intent={inputIntent({ error, touched })} intent={inputIntent({ error, touched })}
placeholder={intl.get('Mobile')} placeholder={intl.get('mobile')}
{...field} {...field}
/> />
)} )}

View File

@@ -6,7 +6,9 @@ import {
MenuItem, MenuItem,
MenuDivider, MenuDivider,
Position, Position,
Tooltip,
Intent, Intent,
Classes,
} from '@blueprintjs/core'; } from '@blueprintjs/core';
import intl from 'react-intl-universal'; import intl from 'react-intl-universal';
@@ -114,6 +116,24 @@ export function BalanceAccessor({ closing_balance, currency_code }) {
return <Money amount={closing_balance} currency={currency_code} />; return <Money amount={closing_balance} currency={currency_code} />;
} }
/**
* Note column accessor.
*/
export function NoteAccessor(row) {
return (
<If condition={row.note}>
<Tooltip
className={Classes.TOOLTIP_INDICATOR}
content={row.note}
position={Position.LEFT_TOP}
hoverOpenDelay={50}
>
<Icon icon={'file-alt'} iconSize={16} />
</Tooltip>
</If>
);
}
/** /**
* Retrieve the vendors table columns. * Retrieve the vendors table columns.
*/ */
@@ -148,12 +168,20 @@ export function useVendorsTableColumns() {
}, },
{ {
id: 'work_phone', id: 'work_phone',
Header: intl.get('work_phone'), Header: intl.get('phone_number'),
accessor: PhoneNumberAccessor, accessor: PhoneNumberAccessor,
className: 'work_phone', className: 'work_phone',
width: 100, width: 100,
clickable: true, clickable: true,
}, },
{
id: 'note',
Header: intl.get('note'),
accessor: NoteAccessor,
disableSortBy: true,
width: 85,
clickable: true,
},
{ {
id: 'balance', id: 'balance',
Header: intl.get('receivable_balance'), Header: intl.get('receivable_balance'),

View File

@@ -78,7 +78,7 @@
"new": "جديد", "new": "جديد",
"invite_user": "دعوة مستخدم", "invite_user": "دعوة مستخدم",
"your_access_to_your_team": "سيتلقى زميلك في الفريق رسالة بريد إلكتروني تتيح له الوصول إلى فريقك.", "your_access_to_your_team": "سيتلقى زميلك في الفريق رسالة بريد إلكتروني تتيح له الوصول إلى فريقك.",
"invite": "التصنيف", "invite": "دعوة",
"count": "العدد", "count": "العدد",
"item_type": "نوع المنتج", "item_type": "نوع المنتج",
"item_name": "اسم المنتج", "item_name": "اسم المنتج",
@@ -1753,5 +1753,9 @@
"payment_receive.drawer.title": "تفاصيل سند الزبون ({number})", "payment_receive.drawer.title": "تفاصيل سند الزبون ({number})",
"payment_made.drawer.title": "تفاصيل سند المورد {number}", "payment_made.drawer.title": "تفاصيل سند المورد {number}",
"manual_journal.drawer.title": "تفاصيل قيد يدوي ({number})", "manual_journal.drawer.title": "تفاصيل قيد يدوي ({number})",
"expense.drawer.title": " تفاصيل المصروف" "expense.drawer.title": " تفاصيل المصروف",
"global_error.you_dont_have_permissions": "ليس لديك صلاحية الوصول إلى هذه الصفحة.",
"global_error.transactions_locked": "تم قفل المعاملات التي تمت قبل {lockedToDate}. ومن ثم لا يمكن القيام بأي عمل.",
"global_error.authorized_user_inactive": "المستخدم المصرح له تم تعطيلة."
} }

View File

@@ -1733,5 +1733,9 @@
"payment_receive.drawer.title": "Payment receive details ({number})", "payment_receive.drawer.title": "Payment receive details ({number})",
"payment_made.drawer.title": "Payment made details {number}", "payment_made.drawer.title": "Payment made details {number}",
"manual_journal.drawer.title": "Manual journal details ({number})", "manual_journal.drawer.title": "Manual journal details ({number})",
"expense.drawer.title": "Expense details" "expense.drawer.title": "Expense details",
"global_error.you_dont_have_permissions": "You do not have permissions to access this page.",
"global_error.transactions_locked": "Transactions before {lockedToDate} has been locked. Hence action cannot be performed.",
"global_error.authorized_user_inactive": "The authorized user is inactive."
} }