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
.DS_Store
.env
.env.local
.env.development.local
.env.test.local

View File

@@ -2,8 +2,17 @@
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
### Added
- Add credit note on sales module.
- Add vendor credit on purchases module.
- Optimize landed costs on purchase invoices.
@@ -15,23 +24,29 @@ All notable changes to Bigcapital server-side will be in this file.
- Optimize readonly details style of invoice, receipt, estimate, payment receive,
purchase invoice, expense, manual journal, inventory adjustment and cashflow transaction.
### Changed
### Changed
- Dashboard meta boot and authenticated user request query.
- Optimize Arabic localization.
## [1.4.0] - 11-09-2021
### Added
- Add SMS notification on sale invoice, receipt, customers payments modules.
- Customer quick create in customers list.
- Item quick create in items list.
### Changes
change: BIG-171 alerts in global scope and lazy loading.
change: BIG-171 alerts in global scope and lazy loading.
### Fixed
fix: BIG-140 - Reordering sell, cost and inventory account on item details.
fix: BIG-144 - Typo adjustment dialog success message.
fix: BIG-148 - Items entries ordered by index.
fix: BIG-132 AR/AP aging summary report filter by none transactions/zero contacts.
fix: BIG-140 - Reordering sell, cost and inventory account on item details.
fix: BIG-144 - Typo adjustment dialog success message.
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
@@ -39,6 +54,7 @@ Here we write upgrading notes for brands. It's a team effort to make them as
straightforward as possible.
### Added
- Add slidable sub-sidebar to improve user experience instead of sub-menu.
- Add Subscription guard to ensure the organization's subscription is active or
redirect all routes to subscription billing page.
@@ -62,14 +78,16 @@ straightforward as possible.
- Inventory adjustment publish action.
- Customers and vendors activate and inactivate action.
- Add refresh button on dashboard actions bar to all datatables resources.
- Add clickable datatable rows to display each row details.
- Add clickable datatable rows to display each row details.
### Changed
- Optimize style of datatable selection checkbox.
- Disable animation in dashboard views tabs.
- Optimize Arabic localization.
### Fixed
- fix: disable submit buttons in pereferences pages.
- fix: inventory adjustment cost field max/min range to avoid out of range error.
- 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",
"version": "1.2.0",
"version": "1.5.3",
"private": true,
"dependencies": {
"@babel/core": "7.8.4",

View File

@@ -1,4 +1,5 @@
import React from 'react';
import SidebarContainer from 'components/Sidebar/SidebarContainer';
import SidebarHead from 'components/Sidebar/SidebarHead';
import SidebarMenu from 'components/Sidebar/SidebarMenu';
@@ -17,7 +18,20 @@ export default function Sidebar({ dashboardContentRef }) {
<SidebarMenu menu={menu} />
</div>
<div class="sidebar__version">0.0.1-beta version.</div>
<SidebarFooterVersion />
</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 { Menu, MenuItem, MenuDivider, Intent } from '@blueprintjs/core';
import {
Menu,
MenuItem,
MenuDivider,
Intent,
Tooltip,
Position,
Classes,
} from '@blueprintjs/core';
import clsx from 'classnames';
import intl from 'react-intl-universal';
@@ -79,7 +87,7 @@ export function ActionsMenu({
* Phone number accessor.
*/
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} />;
}
/**
* 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.
*/
@@ -123,12 +149,20 @@ export function useCustomersTableColumns() {
},
{
id: 'work_phone',
Header: intl.get('work_phone'),
Header: intl.get('phone_number'),
accessor: PhoneNumberAccessor,
className: 'phone_number',
width: 100,
clickable: true,
},
{
id: 'note',
Header: intl.get('note'),
accessor: NoteAccessor,
disableSortBy: true,
width: 85,
clickable: true,
},
{
id: 'balance',
Header: intl.get('receivable_balance'),

View File

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

View File

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

View File

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

View File

@@ -43,7 +43,7 @@ function GlobalErrors({
if (globalErrors.access_denied) {
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,
onDismiss: () => {
globalErrorsSet({ access_denied: false });
@@ -53,11 +53,10 @@ function GlobalErrors({
);
}
if (globalErrors.transactionsLocked) {
const lockedToDate =
globalErrors.transactionsLocked.formatted_locked_to_date;
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,
onDismiss: () => {
globalErrorsSet({ transactionsLocked: false });
@@ -66,7 +65,7 @@ function GlobalErrors({
}
if (globalErrors.userInactive) {
AppToaster.show({
message: 'The authorized user is inactive.',
message: intl.get('global_error.authorized_user_inactive'),
intent: Intent.DANGER,
onDismiss: () => {
globalErrorsSet({ userInactive: false });

View File

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

View File

@@ -6,7 +6,9 @@ import {
MenuItem,
MenuDivider,
Position,
Tooltip,
Intent,
Classes,
} from '@blueprintjs/core';
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} />;
}
/**
* 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.
*/
@@ -148,12 +168,20 @@ export function useVendorsTableColumns() {
},
{
id: 'work_phone',
Header: intl.get('work_phone'),
Header: intl.get('phone_number'),
accessor: PhoneNumberAccessor,
className: 'work_phone',
width: 100,
clickable: true,
},
{
id: 'note',
Header: intl.get('note'),
accessor: NoteAccessor,
disableSortBy: true,
width: 85,
clickable: true,
},
{
id: 'balance',
Header: intl.get('receivable_balance'),

View File

@@ -78,7 +78,7 @@
"new": "جديد",
"invite_user": "دعوة مستخدم",
"your_access_to_your_team": "سيتلقى زميلك في الفريق رسالة بريد إلكتروني تتيح له الوصول إلى فريقك.",
"invite": "التصنيف",
"invite": "دعوة",
"count": "العدد",
"item_type": "نوع المنتج",
"item_name": "اسم المنتج",
@@ -1753,5 +1753,9 @@
"payment_receive.drawer.title": "تفاصيل سند الزبون ({number})",
"payment_made.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_made.drawer.title": "Payment made 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."
}