feat(lang): drawer lang.

This commit is contained in:
elforjani3
2021-06-07 15:19:02 +02:00
parent c6eadaca09
commit 23450a09cd
22 changed files with 152 additions and 121 deletions

View File

@@ -10,6 +10,7 @@ import {
useAsyncDebounce, useAsyncDebounce,
} from 'react-table'; } from 'react-table';
import { useSticky } from 'react-table-sticky'; import { useSticky } from 'react-table-sticky';
import { formatMessage } from 'services/intl';
import { useUpdateEffect } from 'hooks'; import { useUpdateEffect } from 'hooks';
import { saveInvoke } from 'utils'; import { saveInvoke } from 'utils';
@@ -52,7 +53,7 @@ export default function DataTable(props) {
payload, payload,
expandable = false, expandable = false,
noInitialFetch = false, noInitialFetch = false,
pagesCount: controlledPageCount, pagesCount: controlledPageCount,
// Pagination props. // Pagination props.
@@ -122,7 +123,7 @@ export default function DataTable(props) {
autoResetFilters, autoResetFilters,
autoResetRowState, autoResetRowState,
...restProps ...restProps,
}, },
useSortBy, useSortBy,
useExpanded, useExpanded,
@@ -181,7 +182,6 @@ export default function DataTable(props) {
); );
} }
DataTable.defaultProps = { DataTable.defaultProps = {
pagination: false, pagination: false,
spinnerProps: { size: 30 }, spinnerProps: { size: 30 },
@@ -209,6 +209,6 @@ DataTable.defaultProps = {
TablePaginationRenderer: TablePagination, TablePaginationRenderer: TablePagination,
TableNoResultsRowRenderer: TableNoResultsRow, TableNoResultsRowRenderer: TableNoResultsRow,
noResults: 'There is no results in the table.', noResults: formatMessage({ id: 'there_is_no_results_in_the_table' }),
payload: {}, payload: {},
}; };

View File

@@ -42,9 +42,7 @@ function ManualJournalActionsBar({
}; };
// Handle delete button click. // Handle delete button click.
const handleBulkDelete = () => { const handleBulkDelete = () => {};
};
// Handle tab change. // Handle tab change.
const handleTabChange = (customView) => { const handleTabChange = (customView) => {
@@ -77,7 +75,7 @@ function ManualJournalActionsBar({
className={classNames(Classes.MINIMAL, 'button--filter', { className={classNames(Classes.MINIMAL, 'button--filter', {
'has-active-filters': false, 'has-active-filters': false,
})} })}
text="Filter" text={<T id={'filter'} />}
icon={<Icon icon="filter-16" iconSize={16} />} icon={<Icon icon="filter-16" iconSize={16} />}
/> />
</Popover> </Popover>

View File

@@ -2,17 +2,17 @@ import React from 'react';
import { Button, Intent } from '@blueprintjs/core'; import { Button, Intent } from '@blueprintjs/core';
import { useHistory } from 'react-router-dom'; import { useHistory } from 'react-router-dom';
import { EmptyStatus } from 'components'; import { EmptyStatus } from 'components';
import { FormattedMessage as T } from 'react-intl';
export default function ManualJournalsEmptyStatus() { export default function ManualJournalsEmptyStatus() {
const history = useHistory(); const history = useHistory();
return ( return (
<EmptyStatus <EmptyStatus
title={'Create your first journal entries on accounts chart.'} title={<T id={'create_your_first_journal_entries_on_accounts_chart'} />}
description={ description={
<p> <p>
It is a long established fact that a reader will be distracted by the <T id={'it_is_a_long_established_fact_that_a_reader'} />
readable content of a page when looking at its layout.
</p> </p>
} }
action={ action={
@@ -24,11 +24,11 @@ export default function ManualJournalsEmptyStatus() {
history.push('/make-journal-entry'); history.push('/make-journal-entry');
}} }}
> >
Make journal <T id={'make_journal'} />
</Button> </Button>
<Button intent={Intent.NONE} large={true}> <Button intent={Intent.NONE} large={true}>
Learn more <T id={'learn_more'} />
</Button> </Button>
</> </>
} }

View File

@@ -2,6 +2,7 @@ import React from 'react';
import classNames from 'classnames'; import classNames from 'classnames';
import { useFormikContext } from 'formik'; import { useFormikContext } from 'formik';
import { CLASSES } from 'common/classes'; import { CLASSES } from 'common/classes';
import { FormattedMessage as T } from 'react-intl';
import MakeJournalEntriesHeaderFields from './MakeJournalEntriesHeaderFields'; import MakeJournalEntriesHeaderFields from './MakeJournalEntriesHeaderFields';
import { PageFormBigNumber } from 'components'; import { PageFormBigNumber } from 'components';
import { safeSumBy } from 'utils'; import { safeSumBy } from 'utils';
@@ -20,7 +21,7 @@ export default function MakeJournalEntriesHeader() {
<MakeJournalEntriesHeaderFields /> <MakeJournalEntriesHeaderFields />
<PageFormBigNumber <PageFormBigNumber
label={'Due Amount'} label={<T id={'due_amount'} />}
amount={total} amount={total}
currencyCode={currency_code} currencyCode={currency_code}
/> />

View File

@@ -11,7 +11,7 @@ import { inputIntent } from 'utils';
export default function MakeJournalFormFooter() { export default function MakeJournalFormFooter() {
return ( return (
<div className={classNames(CLASSES.PAGE_FORM_FOOTER)}> <div className={classNames(CLASSES.PAGE_FORM_FOOTER)}>
<Postbox title={'Journal details'} defaultOpen={false}> <Postbox title={<T id={'journal_details'} />} defaultOpen={false}>
<Row> <Row>
<Col md={8}> <Col md={8}>
<FastField name={'description'}> <FastField name={'description'}>
@@ -34,7 +34,7 @@ export default function MakeJournalFormFooter() {
initialFiles={[]} initialFiles={[]}
// onDrop={handleDropFiles} // onDrop={handleDropFiles}
// onDeleteFile={handleDeleteFile} // onDeleteFile={handleDeleteFile}
hint={'Attachments: Maxiumum size: 20MB'} hint={<T id={'attachments_maximum'} />}
/> />
</Col> </Col>
</Row> </Row>

View File

@@ -44,7 +44,11 @@ export function DebitHeaderCell({ payload: { currencyCode } }) {
* Account footer cell. * Account footer cell.
*/ */
function AccountFooterCell({ payload: { currencyCode } }) { function AccountFooterCell({ payload: { currencyCode } }) {
return <span>{`Total ${currencyCode} `}</span>; return (
<span>
{formatMessage({ id: 'total_currency' }, { currency: currencyCode })}
</span>
);
} }
/** /**

View File

@@ -18,7 +18,9 @@ export default function AccountDrawerHeader({
return ( return (
<div className={'account-drawer__content'}> <div className={'account-drawer__content'}>
<div> <div>
<span>Closing Balance</span> <span>
<T id={'closing_balance'} />
</span>
<p className={'balance'}> <p className={'balance'}>
{<Money amount={amount} currency={currency_code} />} {<Money amount={amount} currency={currency_code} />}
</p> </p>

View File

@@ -11,13 +11,11 @@ import withDrawerActions from 'containers/Drawer/withDrawerActions';
/** /**
* account drawer table. * account drawer table.
*/ */
function AccountDrawerTable({ function AccountDrawerTable({ closeDrawer }) {
closeDrawer
}) {
const { const {
account: { currency_code }, account: { currency_code },
accounts, accounts,
drawerName drawerName,
} = useAccountDrawerContext(); } = useAccountDrawerContext();
const columns = React.useMemo( const columns = React.useMemo(
@@ -69,14 +67,15 @@ function AccountDrawerTable({
<DataTable columns={columns} data={accounts} /> <DataTable columns={columns} data={accounts} />
<div class="account-drawer__table-footer"> <div class="account-drawer__table-footer">
<Link to={`/financial-reports/general-ledger`} onClick={handleLinkClick}> <Link
View more transactions. to={`/financial-reports/general-ledger`}
onClick={handleLinkClick}
>
{formatMessage({ id: 'view_more_transactions' })}
</Link> </Link>
</div> </div>
</div> </div>
); );
} }
export default compose( export default compose(withDrawerActions)(AccountDrawerTable);
withDrawerActions
)(AccountDrawerTable);

View File

@@ -1,5 +1,6 @@
import React from 'react'; import React from 'react';
import { If, Money } from 'components'; import { If, Money } from 'components';
import { FormattedMessage as T } from 'react-intl';
export default function ExpenseDrawerFooter({ export default function ExpenseDrawerFooter({
expense: { total_amount, currency_code }, expense: { total_amount, currency_code },
@@ -8,11 +9,11 @@ export default function ExpenseDrawerFooter({
<div className="expense-drawer__content--footer"> <div className="expense-drawer__content--footer">
<div className="wrapper"> <div className="wrapper">
<div> <div>
<span>Sub Total</span> <span><T id={'sub_total'}/></span>
<p>{<Money amount={total_amount} currency={currency_code} />}</p> <p>{<Money amount={total_amount} currency={currency_code} />}</p>
</div> </div>
<div> <div>
<span>Total</span> <span><T id={'total'}/></span>
<p>{<Money amount={total_amount} currency={currency_code} />}</p> <p>{<Money amount={total_amount} currency={currency_code} />}</p>
</div> </div>
</div> </div>

View File

@@ -12,12 +12,12 @@ export default function ExpenseDrawerTable({
const columns = React.useMemo( const columns = React.useMemo(
() => [ () => [
{ {
Header: formatMessage({ id: 'Expense account' }), Header: formatMessage({ id: 'expense_account' }),
accessor: 'expense_account.name', accessor: 'expense_account.name',
width: 110, width: 110,
}, },
{ {
Header: formatMessage({ id: 'Amount' }), Header: formatMessage({ id: 'amount' }),
accessor: ({ amount }) => ( accessor: ({ amount }) => (
<Money amount={amount} currency={currency_code} /> <Money amount={amount} currency={currency_code} />
), ),

View File

@@ -1,4 +1,5 @@
import React from 'react'; import React from 'react';
import { FormattedMessage as T } from 'react-intl';
export default function ManualJournalDrawerFooter({ export default function ManualJournalDrawerFooter({
manualJournal: { amount_formatted }, manualJournal: { amount_formatted },
@@ -7,11 +8,15 @@ export default function ManualJournalDrawerFooter({
<div className="journal-drawer__content--footer"> <div className="journal-drawer__content--footer">
<div className="wrapper"> <div className="wrapper">
<div> <div>
<span>Sub Total</span> <span>
<T id={'sub_total'} />
</span>
<p>{amount_formatted}</p> <p>{amount_formatted}</p>
</div> </div>
<div> <div>
<span>Total</span> <span>
<T id={'total'} />
</span>
<p>{amount_formatted}</p> <p>{amount_formatted}</p>
</div> </div>
</div> </div>

View File

@@ -3,18 +3,19 @@ import PaperTemplateHeader from './PaperTemplateHeader';
import PaperTemplateTable from './PaperTemplateTable'; import PaperTemplateTable from './PaperTemplateTable';
import PaperTemplateFooter from './PaperTemplateFooter'; import PaperTemplateFooter from './PaperTemplateFooter';
import { updateItemsEntriesTotal } from 'containers/Entries/utils'; import { updateItemsEntriesTotal } from 'containers/Entries/utils';
import { formatMessage } from 'services/intl';
import 'style/components/Drawer/DrawerTemplate.scss'; import 'style/components/Drawer/DrawerTemplate.scss';
function PaperTemplate({ labels: propLabels, paperData, entries }) { function PaperTemplate({ labels: propLabels, paperData, entries }) {
const labels = { const labels = {
name: 'Estimate', name: formatMessage({ id: 'estimate_' }),
billedTo: 'Billed to', billedTo: formatMessage({ id: 'billed_to' }),
date: 'Estimate date', date: formatMessage({ id: 'estimate_date' }),
refNo: 'Estimate No.', refNo: formatMessage({ id: 'estimate_no' }),
billedFrom: 'Billed from', billedFrom: formatMessage({ id: 'billed_from' }),
amount: 'Estimate amount', amount: formatMessage({ id: 'estimate_amount' }),
dueDate: 'Due date', dueDate: formatMessage({ id: 'due_date_' }),
...propLabels, ...propLabels,
}; };

View File

@@ -19,7 +19,7 @@ export default function DrawerTemplateTable({ tableData, currencyCode }) {
width: 80, width: 80,
}, },
{ {
Header: formatMessage({ id: 'Qty' }), Header: formatMessage({ id: 'qty' }),
accessor: 'quantity', accessor: 'quantity',
disableSortBy: true, disableSortBy: true,
width: 50, width: 50,

View File

@@ -1,6 +1,7 @@
import React from 'react'; import React from 'react';
import PaymentPaperTemplateHeader from './PaymentPaperTemplateHeader'; import PaymentPaperTemplateHeader from './PaymentPaperTemplateHeader';
import PaymentPaperTemplateTable from './PaymentPaperTemplateTable'; import PaymentPaperTemplateTable from './PaymentPaperTemplateTable';
import { formatMessage } from 'services/intl';
import 'style/components/Drawer/DrawerTemplate.scss'; import 'style/components/Drawer/DrawerTemplate.scss';
@@ -9,14 +10,14 @@ export default function PaymentPaperTemplate({
paperData, paperData,
}) { }) {
const labels = { const labels = {
name: 'Payment receive', name: formatMessage({ id: 'payment_receive' }),
billedTo: 'Billed to', billedTo: formatMessage({ id: 'billed_to' }),
date: 'Payment date', date: formatMessage({ id: 'payment_date_' }),
refNo: 'Payment No.', refNo: formatMessage({ id: 'payment_no' }),
billedFrom: 'Billed from', billedFrom: formatMessage({ id: 'billed_from' }),
referenceNo: 'Reference No', referenceNo: formatMessage({ id: 'reference_no' }),
amount: 'Amount received', amount: formatMessage({ id: 'amount_received' }),
dueDate: 'Due date', dueDate: formatMessage({ id: 'due_date_' }),
...propLabels, ...propLabels,
}; };
const defaultValues = { const defaultValues = {

View File

@@ -10,7 +10,7 @@ import { CLASSES } from 'common/classes';
export default function ExpenseFormFooter() { export default function ExpenseFormFooter() {
return ( return (
<div className={classNames(CLASSES.PAGE_FORM_FOOTER)}> <div className={classNames(CLASSES.PAGE_FORM_FOOTER)}>
<Postbox title={'Expense details'} defaultOpen={false}> <Postbox title={<T id={'expense_details'} />} defaultOpen={false}>
<Row> <Row>
<Col md={8}> <Col md={8}>
<FastField name={'description'}> <FastField name={'description'}>
@@ -31,7 +31,7 @@ export default function ExpenseFormFooter() {
initialFiles={[]} initialFiles={[]}
// onDrop={handleDropFiles} // onDrop={handleDropFiles}
// onDeleteFile={handleDeleteFile} // onDeleteFile={handleDeleteFile}
hint={'Attachments: Maxiumum size: 20MB'} hint={<T id={'attachments_maximum'} />}
/> />
</Col> </Col>
</Row> </Row>

View File

@@ -2,6 +2,7 @@ import React, { useMemo } from 'react';
import classNames from 'classnames'; import classNames from 'classnames';
import { sumBy } from 'lodash'; import { sumBy } from 'lodash';
import { useFormikContext } from 'formik'; import { useFormikContext } from 'formik';
import { FormattedMessage as T } from 'react-intl';
import { CLASSES } from 'common/classes'; import { CLASSES } from 'common/classes';
@@ -21,7 +22,7 @@ export default function ExpenseFormHeader() {
<div className={classNames(CLASSES.PAGE_FORM_HEADER)}> <div className={classNames(CLASSES.PAGE_FORM_HEADER)}>
<ExpenseFormHeaderFields /> <ExpenseFormHeaderFields />
<PageFormBigNumber <PageFormBigNumber
label={'Expense Amount'} label={<T id={'expense_amount'}/>}
amount={totalExpenseAmount} amount={totalExpenseAmount}
currencyCode={values?.currency_code} currencyCode={values?.currency_code}
/> />

View File

@@ -60,7 +60,7 @@ function AmountFooterCell({ payload: { currencyCode }, rows }) {
/** /**
* Expense amount header cell. * Expense amount header cell.
*/ */
export function ExpenseAmountHeaderCell({ payload: { currencyCode } }) { export function ExpenseAmountHeaderCell({ payload: { currencyCode } }) {
return formatMessage({ id: 'amount_currency' }, { currency: currencyCode }); return formatMessage({ id: 'amount_currency' }, { currency: currencyCode });
} }
@@ -68,14 +68,13 @@ function AmountFooterCell({ payload: { currencyCode }, rows }) {
* Expense account footer cell. * Expense account footer cell.
*/ */
function ExpenseAccountFooterCell() { function ExpenseAccountFooterCell() {
return 'Total'; return <T id={'total'} />;
} }
/** /**
* Retrieve expense form table entries columns. * Retrieve expense form table entries columns.
*/ */
export function useExpenseFormTableColumns() { export function useExpenseFormTableColumns() {
return React.useMemo( return React.useMemo(
() => [ () => [
{ {

View File

@@ -81,7 +81,7 @@ function ExpensesActionsBar({
className={classNames(Classes.MINIMAL, 'button--filter', { className={classNames(Classes.MINIMAL, 'button--filter', {
'has-active-filters': filterCount > 0, 'has-active-filters': filterCount > 0,
})} })}
text="Filter" text={<T id={'filter'}/>}
icon={<Icon icon="filter-16" iconSize={16} />} icon={<Icon icon="filter-16" iconSize={16} />}
/> />
</Popover> </Popover>

View File

@@ -2,17 +2,17 @@ import React from 'react';
import { Button, Intent } from '@blueprintjs/core'; import { Button, Intent } from '@blueprintjs/core';
import { useHistory } from 'react-router-dom'; import { useHistory } from 'react-router-dom';
import { EmptyStatus } from 'components'; import { EmptyStatus } from 'components';
import { FormattedMessage as T } from 'react-intl';
export default function InvoicesEmptyStatus() { export default function InvoicesEmptyStatus() {
const history = useHistory(); const history = useHistory();
return ( return (
<EmptyStatus <EmptyStatus
title={"Create and manage your organization's expenses"} title={<T id={'create_and_manage_your_organization_s_expenses'} />}
description={ description={
<p> <p>
It is a long established fact that a reader will be distracted by the <T id={'it_is_a_long_established_fact_that_a_reader'} />
readable content of a page when looking at its layout.
</p> </p>
} }
action={ action={
@@ -24,11 +24,11 @@ export default function InvoicesEmptyStatus() {
history.push('/expenses/new'); history.push('/expenses/new');
}} }}
> >
New expense <T id={'new_expense'} />
</Button> </Button>
<Button intent={Intent.NONE} large={true}> <Button intent={Intent.NONE} large={true}>
Learn more <T id={'learn_more'} />
</Button> </Button>
</> </>
} }

View File

@@ -1,19 +1,20 @@
import React from 'react'; import React from 'react';
import { useInvoiceDrawerContext } from './InvoiceDrawerProvider'; import { useInvoiceDrawerContext } from './InvoiceDrawerProvider';
import PaperTemplate from 'containers/Drawers/PaperTemplate/PaperTemplate'; import PaperTemplate from 'containers/Drawers/PaperTemplate/PaperTemplate';
import { formatMessage } from 'services/intl';
export default function InvoicePaper() { export default function InvoicePaper() {
const { invoice, entries } = useInvoiceDrawerContext(); const { invoice, entries } = useInvoiceDrawerContext();
const propLabels = { const propLabels = {
labels: { labels: {
name: 'Invoice', name: formatMessage({ id: 'invoice' }),
billedTo: 'Billed to', billedTo: formatMessage({ id: 'billed_to' }),
date: 'Invoice date', date: formatMessage({ id: 'invoice_date_' }),
refNo: 'Invoice No.', refNo: formatMessage({ id: 'invoice_no__' }),
billedFrom: 'Billed from', billedFrom: formatMessage({ id: 'billed_from' }),
amount: 'Invoice amount', amount: formatMessage({ id: 'invoice_amount' }),
dueDate: 'Due date', dueDate: formatMessage({ id: 'due_date_' }),
}, },
}; };

View File

@@ -1,19 +1,20 @@
import React from 'react'; import React from 'react';
import { useReceiptDrawerContext } from './ReceiptDrawerProvider'; import { useReceiptDrawerContext } from './ReceiptDrawerProvider';
import PaperTemplate from 'containers/Drawers/PaperTemplate/PaperTemplate'; import PaperTemplate from 'containers/Drawers/PaperTemplate/PaperTemplate';
import { formatMessage } from 'services/intl';
export default function ReceiptPaper() { export default function ReceiptPaper() {
const { receipt, entries } = useReceiptDrawerContext(); const { receipt, entries } = useReceiptDrawerContext();
const propLabels = { const propLabels = {
labels: { labels: {
name: 'Receipt', name: formatMessage({ id: 'receipt_' }),
billedTo: 'Billed to', billedTo: formatMessage({ id: 'billed_to' }),
date: 'Receipt date', date: formatMessage({ id: 'receipt_date_' }),
refNo: 'Receipt No.', refNo: formatMessage({ id: 'receipt_no' }),
billedFrom: 'Billed from', billedFrom: formatMessage({ id: 'billed_from' }),
amount: 'Receipt amount', amount: formatMessage({ id: 'receipt_amount' }),
dueDate: 'Due date', dueDate: formatMessage({ id: 'due_date_' }),
}, },
}; };

View File

@@ -939,48 +939,65 @@
"there_is_no_payable_bills_for_this_vendor_that_can_be_applied_for_this_payment": "There is no payable bills for this vendor that can be applied for this payment", "there_is_no_payable_bills_for_this_vendor_that_can_be_applied_for_this_payment": "There is no payable bills for this vendor that can be applied for this payment",
"please_select_a_vendor_to_display_all_open_bills_for_it": "Please select a vendor to display all open bills for it.", "please_select_a_vendor_to_display_all_open_bills_for_it": "Please select a vendor to display all open bills for it.",
"payment_made_details": "Payment made details", "payment_made_details": "Payment made details",
"there_is_no_inventory_adjustments_transactions_yet":"There is no inventory adjustments transactions yet.", "there_is_no_inventory_adjustments_transactions_yet": "There is no inventory adjustments transactions yet.",
"create_and_manage_your_organization_s_customers":"Create and manage your organization's customers.", "create_and_manage_your_organization_s_customers": "Create and manage your organization's customers.",
"salutation":"Salutation", "salutation": "Salutation",
"work":"work", "work": "work",
"mobile":"Mobile", "mobile": "Mobile",
"phone":"Phone", "phone": "Phone",
"create_and_manage_your_organization_s_vendors":"Create and manage your organization's vendors.", "create_and_manage_your_organization_s_vendors": "Create and manage your organization's vendors.",
"balance_sheet_report":"Balance Sheet Report", "balance_sheet_report": "Balance Sheet Report",
"reports_a_company_s_assets_liabilities_and_shareholders":"Reports a company's assets, liabilities and shareholders' equity at a specific point in time with comparison period(s).", "reports_a_company_s_assets_liabilities_and_shareholders": "Reports a company's assets, liabilities and shareholders' equity at a specific point in time with comparison period(s).",
"summarizes_the_credit_and_debit_balance_of_each_account":"Summarizes the credit and debit balance of each account in your chart of accounts at a specific point in time.", "summarizes_the_credit_and_debit_balance_of_each_account": "Summarizes the credit and debit balance of each account in your chart of accounts at a specific point in time.",
"profit_loss_report":"Profit/Loss Report", "profit_loss_report": "Profit/Loss Report",
"reports_the_revenues_costs_and_expenses":"Reports the revenues, costs and expenses incurred during a specific point in time with comparison period(s).", "reports_the_revenues_costs_and_expenses": "Reports the revenues, costs and expenses incurred during a specific point in time with comparison period(s).",
"reports_inflow_and_outflow_of_cash_and_cash_equivalents":"Reports inflow and outflow of cash and cash equivalents between a specific two points of time.", "reports_inflow_and_outflow_of_cash_and_cash_equivalents": "Reports inflow and outflow of cash and cash equivalents between a specific two points of time.",
"journal_report":"Journal Report", "journal_report": "Journal Report",
"the_debit_and_credit_entries_of_system_transactions":"The debit and credit entries of system transactions, sorted by date.", "the_debit_and_credit_entries_of_system_transactions": "The debit and credit entries of system transactions, sorted by date.",
"general_ledger_report":"General Ledger Report", "general_ledger_report": "General Ledger Report",
"reports_every_transaction_going_in_and_out_of_your":"Reports every transaction going in and out of your accounts and organized by accounts and date to monitoring activity of accounts.", "reports_every_transaction_going_in_and_out_of_your": "Reports every transaction going in and out of your accounts and organized by accounts and date to monitoring activity of accounts.",
"summarize_total_unpaid_balances_of_customers_invoices":"Summarize total unpaid balances of customers invoices with number of days the unpaid invoice is overdue.", "summarize_total_unpaid_balances_of_customers_invoices": "Summarize total unpaid balances of customers invoices with number of days the unpaid invoice is overdue.",
"summarize_total_unpaid_balances_of_vendors_purchase":"Summarize total unpaid balances of vendors purchase invoices with the number of days the unpaid invoice is overdue.", "summarize_total_unpaid_balances_of_vendors_purchase": "Summarize total unpaid balances of vendors purchase invoices with the number of days the unpaid invoice is overdue.",
"sales_purchases_reports":"Sales/Purchases Reports", "sales_purchases_reports": "Sales/Purchases Reports",
"reports_every_transaction_going_in_and_out_of_your_items":"Reports every transaction going in and out of your items to monitoring activity of items.", "reports_every_transaction_going_in_and_out_of_your_items": "Reports every transaction going in and out of your items to monitoring activity of items.",
"reports_every_transaction_going_in_and_out_of_each_vendor_supplier":"Reports every transaction going in and out of each vendor/supplier.", "reports_every_transaction_going_in_and_out_of_each_vendor_supplier": "Reports every transaction going in and out of each vendor/supplier.",
"reports_every_transaction_going_in_and_out_of_each_customer":"Reports every transaction going in and out of each customer.", "reports_every_transaction_going_in_and_out_of_each_customer": "Reports every transaction going in and out of each customer.",
"summerize_the_total_amount_your_business_owes_each_vendor":"Summarize the total amount your business owes each vendor.", "summerize_the_total_amount_your_business_owes_each_vendor": "Summarize the total amount your business owes each vendor.",
"summerize_the_total_amount_of_each_customer_owes_your_business":"Summarize the total amount of each customer owes your business.", "summerize_the_total_amount_of_each_customer_owes_your_business": "Summarize the total amount of each customer owes your business.",
"summarize_the_business_s_purchase_items_quantity_cost_and_average":"Summarize the businesss purchase items quantity, cost and average cost rate of each item during a specific point in time.", "summarize_the_business_s_purchase_items_quantity_cost_and_average": "Summarize the businesss purchase items quantity, cost and average cost rate of each item during a specific point in time.",
"summarize_the_business_s_sold_items_quantity_income_and_average_income_rate":"Summarize the businesss sold items quantity, income and average income rate of each item during a specific point in time.", "summarize_the_business_s_sold_items_quantity_income_and_average_income_rate": "Summarize the businesss sold items quantity, income and average income rate of each item during a specific point in time.",
"shows_the_average_age_of_unresolved_issues_for_a_project_or_filter":"Shows the average age of unresolved issues for a project or filter. This helps you see whether your backlog is being kept up to date", "shows_the_average_age_of_unresolved_issues_for_a_project_or_filter": "Shows the average age of unresolved issues for a project or filter. This helps you see whether your backlog is being kept up to date",
"categories":"Categories", "categories": "Categories",
"duplicate_item":"Duplicate item", "duplicate_item": "Duplicate item",
"summerize_your_transactions_for_each_inventory_item":"Summarize your transactions for each inventory item and how they affect quantity, valuation and weighted average.", "summerize_your_transactions_for_each_inventory_item": "Summarize your transactions for each inventory item and how they affect quantity, valuation and weighted average.",
"summerize_how_much_each_customer_owes_your_business":"Summarize how much each customer owes your business.", "summerize_how_much_each_customer_owes_your_business": "Summarize how much each customer owes your business.",
"duplicate_customer":"Duplicate customer", "duplicate_customer": "Duplicate customer",
"duplicate_vendor":"Duplicate vendor", "duplicate_vendor": "Duplicate vendor",
"new_billing":"New Billing", "new_billing": "New Billing",
"shown_on_sales_forms_and_purchase_orders":"Shown on sales forms and purchase orders.", "shown_on_sales_forms_and_purchase_orders": "Shown on sales forms and purchase orders.",
"for_reporting_you_can_specify_any_month":"For reporting, you can specify any month as the start of your financial year (also called your financial reporting year or accounting year).", "for_reporting_you_can_specify_any_month": "For reporting, you can specify any month as the start of your financial year (also called your financial reporting year or accounting year).",
"you_can_t_change_the_base_currency_as_there_are_transactions":"You can't change the base currency as there are transactions recorded in your organization.", "you_can_t_change_the_base_currency_as_there_are_transactions": "You can't change the base currency as there are transactions recorded in your organization.",
"make_account_code_required_when_create_a_new_accounts":"Make account code required when create a new accounts.", "make_account_code_required_when_create_a_new_accounts": "Make account code required when create a new accounts.",
"should_account_code_be_unique_when_create_a_new_account":"Should account code be unique when create a new account.", "should_account_code_be_unique_when_create_a_new_account": "Should account code be unique when create a new account.",
"select_a_preferred_account_to_deposit_into_it_after_customer_make_payment":"Select a preferred account to deposit into it after customer make payment.", "select_a_preferred_account_to_deposit_into_it_after_customer_make_payment": "Select a preferred account to deposit into it after customer make payment.",
"select_a_preferred_account_to_deposit_into_it_vendor_advanced_deposits":"Select a preferred account to deposit into it vendor advanced deposits.", "select_a_preferred_account_to_deposit_into_it_vendor_advanced_deposits": "Select a preferred account to deposit into it vendor advanced deposits.",
"roles":"Roles" "roles": "Roles",
} "closing_balance": "Closing Balance",
"view_more_transactions": "View more transactions.",
"there_is_no_results_in_the_table": "There is no results in the table.",
"create_your_first_journal_entries_on_accounts_chart": "Create your first journal entries on accounts chart.",
"journal_details": "Journal details",
"create_and_manage_your_organization_s_expenses": "Create and manage your organization's expenses",
"expense_amount": "Expense Amount",
"expense_details": "Expense details",
"sub_total": "Sub Total",
"estimate_": "Estimate",
"billed_to": "Billed to",
"estimate_no": "Estimate No.",
"billed_from": "Billed from",
"estimate_amount": "Estimate amount",
"invoice": "Invoice",
"receipt_": "Receipt",
"receipt_no": "Receipt No.",
"receipt_amount": "Receipt amount"
}