diff --git a/client/src/common/homepageOptions.js b/client/src/common/homepageOptions.js index 681ceef20..8389a4a70 100644 --- a/client/src/common/homepageOptions.js +++ b/client/src/common/homepageOptions.js @@ -6,33 +6,30 @@ export const accountsReceivable = [ sectionTitle: , shortcuts: [ { - title: 'Sales invoices', - description: 'Tracking sales invoices with your customers with payment due date.', + title: , + description: , link: '/invoices', }, { - title: 'Sales estimates', - description: - 'Manage your sales estimates to create quotes that can later be turned to a sale invoice.', - + title: , + description: , link: '/estimates', }, { - title: 'Sales receipts', - description: - 'Manage sales receipts for sales that get paid immediately from the customer.', - + title: , + description: , link: '/receipts', }, { - title: 'Customers', - description: 'Manage the customers relations with customer receivable and credit balances.', + title: , + description: , link: '/customers', }, { - title: 'Customers payment', - description: - 'Manage payment transactions from your customers with sale invoices.', + title: , + description: ( + + ), link: '/payment-receives', }, ], @@ -44,20 +41,22 @@ export const accountsPayable = [ sectionTitle: , shortcuts: [ { - title: 'Purchase invoices', - description: 'Manage the purchase invoices with your vendors with payment due date.', + title: , + description: ( + + ), link: '/bills', }, { - title: 'Vendors', - description: 'Manage the vendors relations with vendor payable and debit balances.', + title: , + description: ( + + ), link: '/vendors', }, { - title: 'Vendors payments', - description: - 'Manage payments transactions to your vendors with purchase invoices.', - + title: , + description: , link: '/payment-mades', }, ], @@ -69,26 +68,29 @@ export const financialAccounting = [ sectionTitle: , shortcuts: [ { - title: 'Chart of accounts', - description: - 'Manage your accounts chart to record your transactions and categorise your transactions in parent accounts.', + title: , + description: ( + + ), link: '/accounts', }, { - title: 'Manual journal', - description: 'Manage manual journal transactions on accounts, cost centra and projects.', + title: , + description:, link: '/manual-journals', }, { - title: 'Expenses', - description: - 'Track your indirect expenses under specific categories such as payroll, rent.', + title: , + description:, link: '/expenses', }, { - title: 'Financial statements', - description: - 'Show financial reports about your organization to summarize your business’s financial performance.', + title: , + description:, link: '/financial-reports', }, ], @@ -100,20 +102,18 @@ export const productsServices = [ sectionTitle: , shortcuts: [ { - title: 'Products & Services', - description: - 'Manage your products (inventory or non-inventory) and services and place them into categories.', + title: , + description:, link: '/items', }, { - title: 'Products & Services Categories', - description: - 'Group your products and service into different categories.', + title: , + description:, link: 'items/categories', }, { - title: 'Inventory Adjustments', - description: 'Manage your inventory adjustment of inventory items.', + title: , + description: , link: '/inventory-adjustments', }, ], diff --git a/client/src/components/Dashboard/DashboardBackLink.js b/client/src/components/Dashboard/DashboardBackLink.js index 06700039e..096177057 100644 --- a/client/src/components/Dashboard/DashboardBackLink.js +++ b/client/src/components/Dashboard/DashboardBackLink.js @@ -3,6 +3,7 @@ import withBreadcrumbs from 'react-router-breadcrumbs-hoc'; import { useHistory } from 'react-router-dom'; import routes from 'routes/dashboard'; import { If, Icon } from 'components'; +import { FormattedMessage as T } from 'react-intl'; import withDashboard from 'containers/Dashboard/withDashboard'; import { compose } from 'utils'; @@ -23,7 +24,7 @@ function DashboardBackLink({ dashboardBackLink, breadcrumbs }) { diff --git a/client/src/components/DataTableCells/ItemsListCell.js b/client/src/components/DataTableCells/ItemsListCell.js index fdf5ee99e..0413e5fc6 100644 --- a/client/src/components/DataTableCells/ItemsListCell.js +++ b/client/src/components/DataTableCells/ItemsListCell.js @@ -4,6 +4,7 @@ import ItemsSuggestField from 'components/ItemsSuggestField'; import classNames from 'classnames'; import { FormGroup, Classes, Intent } from '@blueprintjs/core'; +import { formatMessage } from 'services/intl'; import { useCellAutoFocus } from 'hooks'; @@ -40,7 +41,7 @@ export default function ItemsListCell({ purchasable={filterPurchasable} inputProps={{ inputRef: (ref) => (fieldRef.current = ref), - placeholder: 'Enter an item...' + placeholder: formatMessage({ id: 'enter_an_item' }), }} openOnKeyDown={true} blurOnSelectClose={false} diff --git a/client/src/components/Dragzone.js b/client/src/components/Dragzone.js index fe627ac01..f7dbe5d21 100644 --- a/client/src/components/Dragzone.js +++ b/client/src/components/Dragzone.js @@ -1,7 +1,8 @@ -import React, { useState, useCallback, useEffect } from 'react' -import { useDropzone } from 'react-dropzone' +import React, { useState, useCallback, useEffect } from 'react'; +import { useDropzone } from 'react-dropzone'; import classNames from 'classnames'; import Icon from 'components/Icon'; +import { formatMessage } from 'services/intl'; // const initialFile: { // file: ?File, @@ -11,7 +12,7 @@ import Icon from 'components/Icon'; // }; export default function Dropzone({ - text = 'Drag/Drop files here or click here', + text = formatMessage({ id: 'drag_drop_files_here_or_click_here' }), onDrop, initialFiles = [], onDeleteFile, @@ -21,10 +22,10 @@ export default function Dropzone({ const [files, setFiles] = useState([]); useEffect(() => { - setFiles([ ...initialFiles ]); + setFiles([...initialFiles]); }, [initialFiles]); - const {getRootProps, getInputProps} = useDropzone({ + const { getRootProps, getInputProps } = useDropzone({ accept: 'image/*', onDrop: (acceptedFiles) => { const _files = acceptedFiles.map((file) => ({ @@ -33,27 +34,35 @@ export default function Dropzone({ uploaded: false, })); setFiles(_files); - } + }, }); - const handleRemove = useCallback((index) => { - const deletedFile = files.splice(index, 1); - setFiles([...files]); - onDeleteFile && onDeleteFile(deletedFile); - }, [files, onDeleteFile]); + const handleRemove = useCallback( + (index) => { + const deletedFile = files.splice(index, 1); + setFiles([...files]); + onDeleteFile && onDeleteFile(deletedFile); + }, + [files, onDeleteFile], + ); const thumbs = files.map((file, index) => (
-
+
+ +
)); - useEffect(() => () => { - files.forEach(file => URL.revokeObjectURL(file.preview)); - }, [files, onDrop]); + useEffect( + () => () => { + files.forEach((file) => URL.revokeObjectURL(file.preview)); + }, + [files, onDrop], + ); useEffect(() => { onDrop && onDrop(files); @@ -61,16 +70,14 @@ export default function Dropzone({ return (
- {(hint) &&
{ hint }
} + {hint &&
{hint}
}
-

{ text }

+

{text}

-
- { thumbs } -
+
{thumbs}
); -} \ No newline at end of file +} diff --git a/client/src/components/Pagination.js b/client/src/components/Pagination.js index cfea6da6c..9be89b476 100644 --- a/client/src/components/Pagination.js +++ b/client/src/components/Pagination.js @@ -115,7 +115,7 @@ function Pagination({ const page = state.currentPage - 1; const { size: pageSize } = state; - + onPageChange({ page, pageSize }); }} minimal={true} @@ -187,7 +187,7 @@ function Pagination({
- Page size + , label: true, }, { diff --git a/client/src/containers/Accounting/MakeJournal/MakeJournalEntriesHeaderFields.js b/client/src/containers/Accounting/MakeJournal/MakeJournalEntriesHeaderFields.js index df68373c9..d7ee23438 100644 --- a/client/src/containers/Accounting/MakeJournal/MakeJournalEntriesHeaderFields.js +++ b/client/src/containers/Accounting/MakeJournal/MakeJournalEntriesHeaderFields.js @@ -131,7 +131,9 @@ function MakeJournalEntriesHeader({ }} tooltip={true} tooltipProps={{ - content: 'Setting your auto-generated journal number', + content: ( + + ), position: Position.BOTTOM_LEFT, }} /> diff --git a/client/src/containers/Entries/components.js b/client/src/containers/Entries/components.js index 70118e59b..98202d78c 100644 --- a/client/src/containers/Entries/components.js +++ b/client/src/containers/Entries/components.js @@ -27,7 +27,7 @@ export function ItemHeaderCell() { * Item column footer cell. */ export function ItemFooterCell() { - return Total; + return ; } /** diff --git a/client/src/containers/ItemsCategories/ItemCategoriesTable.js b/client/src/containers/ItemsCategories/ItemCategoriesTable.js index c2e515f87..b30080492 100644 --- a/client/src/containers/ItemsCategories/ItemCategoriesTable.js +++ b/client/src/containers/ItemsCategories/ItemCategoriesTable.js @@ -1,4 +1,5 @@ import React from 'react'; +import { formatMessage } from 'services/intl'; import { useItemsCategoriesTableColumns, ActionMenuList } from './components'; import DataTable from 'components/DataTable'; @@ -25,11 +26,8 @@ function ItemsCategoryTable({ openAlert, }) { // Items categories context. - const { - isCategoriesLoading, - isCategoriesFetching, - itemsCategories, - } = useItemsCategoriesContext(); + const { isCategoriesLoading, isCategoriesFetching, itemsCategories } = + useItemsCategoriesContext(); // Table columns. const columns = useItemsCategoriesTableColumns(); @@ -56,7 +54,9 @@ function ItemsCategoryTable({ sticky={true} selectionColumn={true} TableLoadingRenderer={TableSkeletonRows} - noResults={'There is no items categories in table yet.'} + noResults={formatMessage({ + id: 'there_is_no_items_categories_in_table_yet', + })} payload={{ onDeleteCategory: handleDeleteCategory, onEditCategory: handleEditCategory, diff --git a/client/src/containers/JournalNumber/ReferenceNumberFormContent.js b/client/src/containers/JournalNumber/ReferenceNumberFormContent.js index 8988c7b2b..feb7ad3f9 100644 --- a/client/src/containers/JournalNumber/ReferenceNumberFormContent.js +++ b/client/src/containers/JournalNumber/ReferenceNumberFormContent.js @@ -73,7 +73,7 @@ export default function ReferenceNumberFormContent() { {({ form, field, meta: { error, touched } }) => ( } value="manual" onChange={() => { form.setFieldValue('incrementMode', 'manual'); @@ -88,7 +88,7 @@ export default function ReferenceNumberFormContent() { {({ form, field, meta: { error, touched } }) => ( } value="manual" onChange={() => { form.setFieldValue('incrementMode', 'manual-transaction'); diff --git a/client/src/containers/Sales/Estimates/EstimateForm/EstimateFormFooter.js b/client/src/containers/Sales/Estimates/EstimateForm/EstimateFormFooter.js index af311ced4..b28c057bf 100644 --- a/client/src/containers/Sales/Estimates/EstimateForm/EstimateFormFooter.js +++ b/client/src/containers/Sales/Estimates/EstimateForm/EstimateFormFooter.js @@ -15,7 +15,7 @@ import { inputIntent } from 'utils'; export default function EstiamteFormFooter({}) { return (
- + } defaultOpen={false}> {/* --------- Customer Note --------- */} @@ -50,7 +50,7 @@ export default function EstiamteFormFooter({}) { initialFiles={[]} // onDrop={handleDropFiles} // onDeleteFile={handleDeleteFile} - hint={'Attachments: Maxiumum size: 20MB'} + hint={} /> diff --git a/client/src/containers/Sales/Estimates/EstimateForm/EstimateFormHeader.js b/client/src/containers/Sales/Estimates/EstimateForm/EstimateFormHeader.js index cf95b5a09..7c49b2b4d 100644 --- a/client/src/containers/Sales/Estimates/EstimateForm/EstimateFormHeader.js +++ b/client/src/containers/Sales/Estimates/EstimateForm/EstimateFormHeader.js @@ -2,6 +2,7 @@ import React, { useMemo } from 'react'; import classNames from 'classnames'; import { sumBy } from 'lodash'; import { useFormikContext } from 'formik'; +import { formatMessage } from 'services/intl'; import { CLASSES } from 'common/classes'; @@ -18,15 +19,16 @@ function EstimateFormHeader({ const { values } = useFormikContext(); // Calculate the total due amount of bill entries. - const totalDueAmount = useMemo(() => sumBy(values.entries, 'total'), [ - values.entries, - ]); + const totalDueAmount = useMemo( + () => sumBy(values.entries, 'total'), + [values.entries], + ); return (
diff --git a/client/src/containers/Sales/Estimates/EstimateForm/EstimateFormHeaderFields.js b/client/src/containers/Sales/Estimates/EstimateForm/EstimateFormHeaderFields.js index 3c33a93fd..7e3317c3d 100644 --- a/client/src/containers/Sales/Estimates/EstimateForm/EstimateFormHeaderFields.js +++ b/client/src/containers/Sales/Estimates/EstimateForm/EstimateFormHeaderFields.js @@ -170,7 +170,7 @@ function EstimateFormHeader({ }} tooltip={true} tooltipProps={{ - content: 'Setting your auto-generated estimate number', + content: , position: Position.BOTTOM_LEFT, }} /> diff --git a/client/src/containers/Sales/Estimates/EstimatesLanding/EstimatesEmptyStatus.js b/client/src/containers/Sales/Estimates/EstimatesLanding/EstimatesEmptyStatus.js index 7b49174bd..2334b270a 100644 --- a/client/src/containers/Sales/Estimates/EstimatesLanding/EstimatesEmptyStatus.js +++ b/client/src/containers/Sales/Estimates/EstimatesLanding/EstimatesEmptyStatus.js @@ -2,17 +2,17 @@ import React from 'react'; import { Button, Intent } from '@blueprintjs/core'; import { useHistory } from 'react-router-dom'; import { EmptyStatus } from 'components'; +import { FormattedMessage as T } from 'react-intl'; export default function EstimatesEmptyStatus() { const history = useHistory(); return ( } description={

- It is a long established fact that a reader will be distracted by the - readable content of a page when looking at its layout. +

} action={ @@ -24,10 +24,10 @@ export default function EstimatesEmptyStatus() { history.push('/estimates/new'); }} > - New sale estimate + } diff --git a/client/src/containers/Sales/Invoices/InvoiceForm/InvoiceFormFooter.js b/client/src/containers/Sales/Invoices/InvoiceForm/InvoiceFormFooter.js index 81a1087ad..d3a6f3c9b 100644 --- a/client/src/containers/Sales/Invoices/InvoiceForm/InvoiceFormFooter.js +++ b/client/src/containers/Sales/Invoices/InvoiceForm/InvoiceFormFooter.js @@ -12,7 +12,7 @@ import { inputIntent } from 'utils'; export default function InvoiceFormFooter() { return (
- + } defaultOpen={false}> {/* --------- Invoice message --------- */} @@ -47,7 +47,7 @@ export default function InvoiceFormFooter() { initialFiles={[]} // onDrop={handleDropFiles} // onDeleteFile={handleDeleteFile} - hint={'Attachments: Maxiumum size: 20MB'} + hint={} /> diff --git a/client/src/containers/Sales/Invoices/InvoiceForm/InvoiceFormHeader.js b/client/src/containers/Sales/Invoices/InvoiceForm/InvoiceFormHeader.js index 37b18e5eb..c541ca8ca 100644 --- a/client/src/containers/Sales/Invoices/InvoiceForm/InvoiceFormHeader.js +++ b/client/src/containers/Sales/Invoices/InvoiceForm/InvoiceFormHeader.js @@ -2,6 +2,7 @@ import React, { useMemo } from 'react'; import classNames from 'classnames'; import { sumBy } from 'lodash'; import { useFormikContext } from 'formik'; +import { formatMessage } from 'services/intl'; import { CLASSES } from 'common/classes'; import InvoiceFormHeaderFields from './InvoiceFormHeaderFields'; @@ -21,15 +22,16 @@ function InvoiceFormHeader({ const { values } = useFormikContext(); // Calculate the total due amount of invoice entries. - const totalDueAmount = useMemo(() => sumBy(values.entries, 'total'), [ - values.entries, - ]); + const totalDueAmount = useMemo( + () => sumBy(values.entries, 'total'), + [values.entries], + ); return (
diff --git a/client/src/containers/Sales/Invoices/InvoiceForm/InvoiceFormHeaderFields.js b/client/src/containers/Sales/Invoices/InvoiceForm/InvoiceFormHeaderFields.js index db28cada2..4ddfc0665 100644 --- a/client/src/containers/Sales/Invoices/InvoiceForm/InvoiceFormHeaderFields.js +++ b/client/src/containers/Sales/Invoices/InvoiceForm/InvoiceFormHeaderFields.js @@ -168,7 +168,7 @@ function InvoiceFormHeaderFields({ }} tooltip={true} tooltipProps={{ - content: 'Setting your auto-generated invoice number', + content: , position: Position.BOTTOM_LEFT, }} /> diff --git a/client/src/containers/Sales/PaymentReceives/PaymentReceiveForm/PaymentReceiveFormFooter.js b/client/src/containers/Sales/PaymentReceives/PaymentReceiveForm/PaymentReceiveFormFooter.js index b9714c173..fbb414b5d 100644 --- a/client/src/containers/Sales/PaymentReceives/PaymentReceiveForm/PaymentReceiveFormFooter.js +++ b/client/src/containers/Sales/PaymentReceives/PaymentReceiveForm/PaymentReceiveFormFooter.js @@ -12,7 +12,7 @@ import { CLASSES } from 'common/classes'; export default function PaymentReceiveFormFooter({ getFieldProps }) { return (
- + } defaultOpen={false}> {/* --------- Statement --------- */} diff --git a/client/src/containers/Sales/PaymentReceives/PaymentReceiveForm/PaymentReceiveFormHeader.js b/client/src/containers/Sales/PaymentReceives/PaymentReceiveForm/PaymentReceiveFormHeader.js index ee2a95d4f..72f6f5294 100644 --- a/client/src/containers/Sales/PaymentReceives/PaymentReceiveForm/PaymentReceiveFormHeader.js +++ b/client/src/containers/Sales/PaymentReceives/PaymentReceiveForm/PaymentReceiveFormHeader.js @@ -3,6 +3,7 @@ import { sumBy } from 'lodash'; import { useFormikContext } from 'formik'; import classNames from 'classnames'; import { Money } from 'components'; +import { FormattedMessage as T } from 'react-intl'; import { CLASSES } from 'common/classes'; import PaymentReceiveHeaderFields from './PaymentReceiveHeaderFields'; @@ -33,7 +34,9 @@ function PaymentReceiveFormHeader({
- Amount Received + + +

diff --git a/client/src/containers/Sales/PaymentReceives/PaymentReceiveForm/PaymentReceiveHeaderFields.js b/client/src/containers/Sales/PaymentReceives/PaymentReceiveForm/PaymentReceiveHeaderFields.js index 091d38e24..71cd16e45 100644 --- a/client/src/containers/Sales/PaymentReceives/PaymentReceiveForm/PaymentReceiveHeaderFields.js +++ b/client/src/containers/Sales/PaymentReceives/PaymentReceiveForm/PaymentReceiveHeaderFields.js @@ -70,9 +70,10 @@ function PaymentReceiveHeaderFields({ const customerFieldRef = useAutofocus(); // Calculates the full-amount received. - const totalDueAmount = useMemo(() => safeSumBy(entries, 'due_amount'), [ - entries, - ]); + const totalDueAmount = useMemo( + () => safeSumBy(entries, 'due_amount'), + [entries], + ); // Handle receive full-amount link click. const handleReceiveFullAmountClick = () => { const newEntries = fullAmountPaymentEntries(entries); @@ -200,7 +201,7 @@ function PaymentReceiveHeaderFields({ small={true} minimal={true} > - Receive full amount ( + ( ) @@ -232,7 +233,11 @@ function PaymentReceiveHeaderFields({ }} tooltip={true} tooltipProps={{ - content: 'Setting your auto-generated Payment Receive number', + content: ( + + ), position: Position.BOTTOM_LEFT, }} /> diff --git a/client/src/containers/Sales/PaymentReceives/PaymentReceiveForm/PaymentReceiveItemsTable.js b/client/src/containers/Sales/PaymentReceives/PaymentReceiveForm/PaymentReceiveItemsTable.js index 192ba8ecd..c31f0d804 100644 --- a/client/src/containers/Sales/PaymentReceives/PaymentReceiveForm/PaymentReceiveItemsTable.js +++ b/client/src/containers/Sales/PaymentReceives/PaymentReceiveForm/PaymentReceiveItemsTable.js @@ -2,6 +2,7 @@ import React, { useCallback } from 'react'; import { CloudLoadingIndicator } from 'components'; import classNames from 'classnames'; import { useFormikContext } from 'formik'; +import { FormattedMessage as T } from 'react-intl'; import { CLASSES } from 'common/classes'; import { usePaymentReceiveInnerContext } from './PaymentReceiveInnerProvider'; @@ -15,32 +16,37 @@ import { compose, updateTableRow } from 'utils'; export default function PaymentReceiveItemsTable({ entries, onUpdateData, - currencyCode + currencyCode, }) { // Payment receive form context. - const { - isDueInvoicesFetching, - } = usePaymentReceiveInnerContext(); + const { isDueInvoicesFetching } = usePaymentReceiveInnerContext(); // Payment receive entries form context. const columns = usePaymentReceiveEntriesColumns(); // Formik context. - const { values: { customer_id } } = useFormikContext(); + const { + values: { customer_id }, + } = useFormikContext(); // No results message. - const noResultsMessage = customer_id - ? 'There is no receivable invoices for this customer that can be applied for this payment' - : 'Please select a customer to display all open invoices for it.'; + const noResultsMessage = customer_id ? ( + + ) : ( + + ); // Handle update data. - const handleUpdateData = useCallback((rowIndex, columnId, value) => { - const newRows = compose( - updateTableRow(rowIndex, columnId, value), - )(entries); + const handleUpdateData = useCallback( + (rowIndex, columnId, value) => { + const newRows = compose(updateTableRow(rowIndex, columnId, value))( + entries, + ); - onUpdateData(newRows); - }, [entries, onUpdateData]); + onUpdateData(newRows); + }, + [entries, onUpdateData], + ); return ( @@ -53,11 +59,11 @@ export default function PaymentReceiveItemsTable({ payload={{ errors: [], updateData: handleUpdateData, - currencyCode + currencyCode, }} noResults={noResultsMessage} footer={true} /> ); -} \ No newline at end of file +} diff --git a/client/src/containers/Sales/PaymentReceives/PaymentsLanding/PaymentReceivesEmptyStatus.js b/client/src/containers/Sales/PaymentReceives/PaymentsLanding/PaymentReceivesEmptyStatus.js index f307dc64a..53bd652f2 100644 --- a/client/src/containers/Sales/PaymentReceives/PaymentsLanding/PaymentReceivesEmptyStatus.js +++ b/client/src/containers/Sales/PaymentReceives/PaymentsLanding/PaymentReceivesEmptyStatus.js @@ -2,17 +2,17 @@ import React from 'react'; import { Button, Intent } from '@blueprintjs/core'; import { useHistory } from 'react-router-dom'; import { EmptyStatus } from 'components'; +import { FormattedMessage as T } from 'react-intl'; export default function PaymentReceivesEmptyStatus() { const history = useHistory(); return ( } description={

- It is a long established fact that a reader will be distracted by the - readable content of a page when looking at its layout. +

} action={ @@ -24,11 +24,11 @@ export default function PaymentReceivesEmptyStatus() { history.push('/payment-receives/new'); }} > - New payment receive + } diff --git a/client/src/containers/Sales/Receipts/ReceiptForm/ReceiptFormHeaderFields.js b/client/src/containers/Sales/Receipts/ReceiptForm/ReceiptFormHeaderFields.js index a3e2ecb7b..49c7396c5 100644 --- a/client/src/containers/Sales/Receipts/ReceiptForm/ReceiptFormHeaderFields.js +++ b/client/src/containers/Sales/Receipts/ReceiptForm/ReceiptFormHeaderFields.js @@ -65,10 +65,7 @@ function ReceiptFormHeader({ }; // Synsc receipt number settings with the form. - useObserveReceiptNoSettings( - receiptNumberPrefix, - receiptNextNumber, - ); + useObserveReceiptNoSettings(receiptNumberPrefix, receiptNextNumber); return (
@@ -175,7 +172,11 @@ function ReceiptFormHeader({ }} tooltip={true} tooltipProps={{ - content: 'Setting your auto-generated receipt number', + content: ( + + ), position: Position.BOTTOM_LEFT, }} inputProps={{ diff --git a/client/src/lang/en/index.js b/client/src/lang/en/index.js index 15e63018b..789c8bb58 100644 --- a/client/src/lang/en/index.js +++ b/client/src/lang/en/index.js @@ -1066,5 +1066,6 @@ export default { transaction_number: 'Transaction number', cash_flow_statement: 'Cash Flow Statement', statement_of_cash_flow: 'Statement of Cash Flow ', - inventory_item_details:'Inventory Item Details' + inventory_item_details: 'Inventory Item Details', }; + diff --git a/client/src/lang/en/index.json b/client/src/lang/en/index.json index 4770e810e..ec4e325f1 100644 --- a/client/src/lang/en/index.json +++ b/client/src/lang/en/index.json @@ -31,7 +31,7 @@ "phone_number": "Phone Number", "you_email_address_is": "You email address is", "you_will_use_this_address_to_sign_in_to_bigcapital": "You will use this address to sign in to Bigcapital.", - "signing_in_or_creating":"By signing in or creating an account, you agree with our Terms & Conditions and Privacy Statement ", + "signing_in_or_creating": "By signing in or creating an account, you agree with our Terms & Conditions and Privacy Statement ", "and": "And", "create_account": "Create Account", "success": "Success", @@ -878,5 +878,58 @@ "transaction_number": "Transaction number", "cash_flow_statement": "Cash Flow Statement", "statement_of_cash_flow": "Statement of Cash Flow ", - "inventory_item_details": "Inventory Item Details" + "inventory_item_details": "Inventory Item Details", + "sales_invoices": "Sales invoices", + "tracking_sales_invoices_with_your_customers": "Tracking sales invoices with your customers with payment due date.", + "sales_estimates": "Sales estimates", + "manage_your_sales_estimates_to_create_quotes": "Manage your sales estimates to create quotes that can later be turned to a sale invoice.", + "sales_receipts": "Sales receipts", + "manage_sales_receipts_for_sales_that_get_paid": "Manage sales receipts for sales that get paid immediately from the customer.", + "manage_the_customers_relations_with_customer": "Manage the customers relations with customer receivable and credit balances.", + "customers_payment": "Customers payment", + "manage_payment_transactions_from_your_customers": "Manage payment transactions from your customers with sale invoices.", + "purchase_invoices": "Purchase invoices", + "manage_the_purchase_invoices_with_your_vendors": "Manage the purchase invoices with your vendors with payment due date.", + "manage_the_vendors_relations_with_vendor_relations": "Manage the vendors relations with vendor payable and debit balances.", + "vendors_payments": "Vendors payments", + "manage_payments_transactions_to_your_vendors": "Manage payments transactions to your vendors with purchase invoices.", + "manage_your_accounts_chart_to_record_your_transactions_and_categories": "Manage your accounts chart to record your transactions and categories your transactions in parent accounts.", + "manage_manual_journal_transactions_on_accounts": "Manage manual journal transactions on accounts, cost centra and projects.", + "track_your_indirect_expenses_under_specific_categories": "Track your indirect expenses under specific categories such as payroll, rent.", + "financial_statements": "Financial statements", + "show_financial_reports_about_your_organization": "Show financial reports about your organization to summarize your business’s financial performance.", + "products_services": "Products & Services", + "manage_your_products_inventory_or_non_inventory": "Manage your products (inventory or non-inventory) and services and place them into categories.", + "products_services_categories": "Products & Services Categories", + "group_your_products_and_service": "Group your products and service into different categories.", + "inventory_adjustments": "Inventory Adjustments", + "manage_your_inventory_adjustment_of_inventory_items": "Manage your inventory adjustment of inventory items.", + "page_size": "Page size", + "there_is_no_items_categories_in_table_yet": "There is no items categories in table yet.", + "sales_inventory": "Sales & inventory", + "accounting": "Accounting", + "system": "SYSTEM", + "it_s_time_to_send_estimates_to_your_customers": "It's time to send estimates to your customers", + "it_is_a_long_established_fact_that_a_reader": " It is a long established fact that a reader will be distracted by the readable content of a page when looking at its layout.", + "new_sale_estimate": "New sale estimate", + "learn_more": "Learn more", + "back_to_list": "Back to list.", + "estimate_details": "Estimate details", + "attachments_maximum": "Attachments: Maximum size: 20MB", + "drag_drop_files_here_or_click_here": "Drag/Drop files here or click here.", + "enter_an_item": "Enter an item...", + "i_will_enter_them_manually_each_time": "I will enter them manually each time", + "manual_entering_for_this_transaction": "Manual entering for this transaction.", + "due_amount": "Due Amount", + "invoice_details": "Invoice details", + "setting_your_auto_generated_estimate_number": "Setting your auto-generated estimate number", + "setting_your_auto_generated_journal_number": "Setting your auto-generated journal number", + "setting_your_auto_generated_invoice_number": "Setting your auto-generated invoice number", + "setting_your_auto_generated_payment_receive_number": "Setting your auto-generated Payment Receive number", + "the_organization_doesn_t_receive_money_yet": "The organization doesn't receive money, yet!", + "new_payment_receive": "New payment receive", + "there_is_no_receivable_invoices_for_this_customer": "There is no receivable invoices for this customer that can be applied for this payment", + "please_select_a_customer_to_display_all_open_invoices_for_it": "Please select a customer to display all open invoices for it.", + "payment_receive_details": "Payment receive details", + "receive_full_amount": "Receive full amount" } \ No newline at end of file