diff --git a/src/containers/Purchases/Bills/BillForm/BillFormHeader.js b/src/containers/Purchases/Bills/BillForm/BillFormHeader.js index 03b99c3a3..aeabceee5 100644 --- a/src/containers/Purchases/Bills/BillForm/BillFormHeader.js +++ b/src/containers/Purchases/Bills/BillForm/BillFormHeader.js @@ -8,24 +8,17 @@ import { CLASSES } from 'common/classes'; import BillFormHeaderFields from './BillFormHeaderFields'; import { PageFormBigNumber } from 'components'; -import withCurrentOrganization from 'containers/Organization/withCurrentOrganization'; - -import { compose } from 'redux'; /** * Fill form header. */ -function BillFormHeader({ - // #withCurrentOrganization - organization: { base_currency }, -}) { - const { values } = useFormikContext(); +function BillFormHeader() { + const { + values: { currency_code, entries }, + } = useFormikContext(); // Calculate the total due amount of bill entries. - const totalDueAmount = useMemo( - () => sumBy(values.entries, 'amount'), - [values.entries], - ); + const totalDueAmount = useMemo(() => sumBy(entries, 'amount'), [entries]); return (
@@ -33,9 +26,9 @@ function BillFormHeader({
); } -export default compose(withCurrentOrganization())(BillFormHeader); +export default BillFormHeader; diff --git a/src/containers/Purchases/Bills/BillForm/BillFormHeaderFields.js b/src/containers/Purchases/Bills/BillForm/BillFormHeaderFields.js index a2d0d97b2..9f96afca3 100644 --- a/src/containers/Purchases/Bills/BillForm/BillFormHeaderFields.js +++ b/src/containers/Purchases/Bills/BillForm/BillFormHeaderFields.js @@ -70,6 +70,7 @@ function BillFormHeader() { onContactSelected={(contact) => { form.setFieldValue('vendor_id', contact.id); form.setFieldValue('exchange_rate', ''); + form.setFieldValue('currency_code', contact?.currency_code); setSelectVendor(contact); }} popoverFill={true} diff --git a/src/containers/Purchases/CreditNotes/CreditNoteForm/VendorCreditNoteFormHeader.js b/src/containers/Purchases/CreditNotes/CreditNoteForm/VendorCreditNoteFormHeader.js index 921100831..715f8c309 100644 --- a/src/containers/Purchases/CreditNotes/CreditNoteForm/VendorCreditNoteFormHeader.js +++ b/src/containers/Purchases/CreditNotes/CreditNoteForm/VendorCreditNoteFormHeader.js @@ -8,23 +8,17 @@ import VendorCreditNoteFormHeaderFields from './VendorCreditNoteFormHeaderFields import { getEntriesTotal } from 'containers/Entries/utils'; import { PageFormBigNumber } from 'components'; -import withCurrentOrganization from 'containers/Organization/withCurrentOrganization'; - -import { compose } from 'utils'; /** * Vendor Credit note header. */ -function VendorCreditNoteFormHeader({ - // #withCurrentOrganization - organization: { base_currency }, -}) { - const { values } = useFormikContext(); +function VendorCreditNoteFormHeader() { + const { values:{entries ,currency_code} } = useFormikContext(); // Calculate the total amount. const totalAmount = React.useMemo( - () => getEntriesTotal(values.entries), - [values.entries], + () => getEntriesTotal(entries), + [entries], ); return ( @@ -33,10 +27,10 @@ function VendorCreditNoteFormHeader({ ); } -export default compose(withCurrentOrganization())(VendorCreditNoteFormHeader); +export default VendorCreditNoteFormHeader; diff --git a/src/containers/Purchases/CreditNotes/CreditNoteForm/VendorCreditNoteFormHeaderFields.js b/src/containers/Purchases/CreditNotes/CreditNoteForm/VendorCreditNoteFormHeaderFields.js index 01c58b345..5d3ae714f 100644 --- a/src/containers/Purchases/CreditNotes/CreditNoteForm/VendorCreditNoteFormHeaderFields.js +++ b/src/containers/Purchases/CreditNotes/CreditNoteForm/VendorCreditNoteFormHeaderFields.js @@ -108,6 +108,7 @@ function VendorCreditNoteFormHeaderFields({ onContactSelected={(contact) => { form.setFieldValue('vendor_id', contact.id); form.setFieldValue('exchange_rate', ''); + form.setFieldValue('currency_code', contact?.currency_code); setSelectVendor(contact); }} popoverFill={true} diff --git a/src/containers/Purchases/PaymentMades/PaymentForm/PaymentMadeFormHeader.js b/src/containers/Purchases/PaymentMades/PaymentForm/PaymentMadeFormHeader.js index 3669fc648..3d0487811 100644 --- a/src/containers/Purchases/PaymentMades/PaymentForm/PaymentMadeFormHeader.js +++ b/src/containers/Purchases/PaymentMades/PaymentForm/PaymentMadeFormHeader.js @@ -3,23 +3,18 @@ import classNames from 'classnames'; import { useFormikContext } from 'formik'; import { sumBy } from 'lodash'; import { CLASSES } from 'common/classes'; -import { compose } from 'utils'; import { Money } from 'components'; import { FormattedMessage as T } from 'components'; import PaymentMadeFormHeaderFields from './PaymentMadeFormHeaderFields'; -import withCurrentOrganization from 'containers/Organization/withCurrentOrganization'; /** * Payment made header form. */ -function PaymentMadeFormHeader({ - // #withCurrentOrganization - organization: { base_currency }, -}) { +function PaymentMadeFormHeader() { // Formik form context. const { - values: { entries }, + values: { entries, currency_code }, } = useFormikContext(); // Calculate the payment amount of the entries. @@ -36,7 +31,7 @@ function PaymentMadeFormHeader({

- +

@@ -45,4 +40,4 @@ function PaymentMadeFormHeader({ ); } -export default compose(withCurrentOrganization())(PaymentMadeFormHeader); +export default PaymentMadeFormHeader; diff --git a/src/containers/Purchases/PaymentMades/PaymentForm/PaymentMadeFormHeaderFields.js b/src/containers/Purchases/PaymentMades/PaymentForm/PaymentMadeFormHeaderFields.js index 77aca7375..729895e08 100644 --- a/src/containers/Purchases/PaymentMades/PaymentForm/PaymentMadeFormHeaderFields.js +++ b/src/containers/Purchases/PaymentMades/PaymentForm/PaymentMadeFormHeaderFields.js @@ -111,6 +111,7 @@ function PaymentMadeFormHeaderFields({ organization: { base_currency } }) { onContactSelected={(contact) => { form.setFieldValue('vendor_id', contact.id); form.setFieldValue('exchange_rate', ''); + form.setFieldValue('currency_code', contact?.currency_code); setPaymentVendorId(contact.id); setSelectVendor(contact); }} @@ -162,7 +163,13 @@ function PaymentMadeFormHeaderFields({ organization: { base_currency } }) { {/* ------------ Full amount ------------ */} - {({ form, field: { value }, meta: { error, touched } }) => ( + {({ + form: { + values: { currency_code }, + }, + field: { value }, + meta: { error, touched }, + }) => ( } inline={true} @@ -172,7 +179,7 @@ function PaymentMadeFormHeaderFields({ organization: { base_currency } }) { helperText={} > - + { @@ -189,7 +196,7 @@ function PaymentMadeFormHeaderFields({ organization: { base_currency } }) { minimal={true} > ( - ) + ) )} diff --git a/src/containers/Sales/CreditNotes/CreditNoteForm/CreditNoteFormHeader.js b/src/containers/Sales/CreditNotes/CreditNoteForm/CreditNoteFormHeader.js index 6c6690662..43f8ead83 100644 --- a/src/containers/Sales/CreditNotes/CreditNoteForm/CreditNoteFormHeader.js +++ b/src/containers/Sales/CreditNotes/CreditNoteForm/CreditNoteFormHeader.js @@ -8,24 +8,16 @@ import CreditNoteFormHeaderFields from './CreditNoteFormHeaderFields'; import { getEntriesTotal } from 'containers/Entries/utils'; import { PageFormBigNumber } from 'components'; -import withCurrentOrganization from 'containers/Organization/withCurrentOrganization'; - -import { compose } from 'utils'; - /** * Credit note header. */ -function CreditNoteFormHeader({ - // #withCurrentOrganization - organization: { base_currency }, -}) { - const { values } = useFormikContext(); +function CreditNoteFormHeader() { + const { + values: { entries, currency_code }, + } = useFormikContext(); // Calculate the total amount. - const totalAmount = React.useMemo( - () => getEntriesTotal(values.entries), - [values.entries], - ); + const totalAmount = React.useMemo(() => getEntriesTotal(entries), [entries]); return (
@@ -33,10 +25,10 @@ function CreditNoteFormHeader({
); } -export default compose(withCurrentOrganization())(CreditNoteFormHeader); +export default CreditNoteFormHeader; diff --git a/src/containers/Sales/CreditNotes/CreditNoteForm/CreditNoteFormHeaderFields.js b/src/containers/Sales/CreditNotes/CreditNoteForm/CreditNoteFormHeaderFields.js index 47692a51d..fc4fd95bd 100644 --- a/src/containers/Sales/CreditNotes/CreditNoteForm/CreditNoteFormHeaderFields.js +++ b/src/containers/Sales/CreditNotes/CreditNoteForm/CreditNoteFormHeaderFields.js @@ -108,6 +108,7 @@ function CreditNoteFormHeaderFields({ onContactSelected={(customer) => { form.setFieldValue('customer_id', customer.id); form.setFieldValue('exchange_rate', ''); + form.setFieldValue('currency_code', customer?.currency_code); setSelectCustomer(customer); }} popoverFill={true} diff --git a/src/containers/Sales/Estimates/EstimateForm/EstimateFormHeader.js b/src/containers/Sales/Estimates/EstimateForm/EstimateFormHeader.js index d07f28e40..abb7288a6 100644 --- a/src/containers/Sales/Estimates/EstimateForm/EstimateFormHeader.js +++ b/src/containers/Sales/Estimates/EstimateForm/EstimateFormHeader.js @@ -6,23 +6,20 @@ import intl from 'react-intl-universal'; import { CLASSES } from 'common/classes'; import EstimateFormHeaderFields from './EstimateFormHeaderFields'; -import withCurrentOrganization from 'containers/Organization/withCurrentOrganization'; - import { getEntriesTotal } from 'containers/Entries/utils'; import { PageFormBigNumber } from 'components'; -import { compose } from 'utils'; // Estimate form top header. -function EstimateFormHeader({ - // #withCurrentOrganization - organization: { base_currency }, -}) { - const { values } = useFormikContext(); +function EstimateFormHeader() { + const { + values: { entries, currency_code }, + } = useFormikContext(); + // Calculate the total due amount of bill entries. const totalDueAmount = useMemo( - () => getEntriesTotal(values.entries), - [values.entries], + () => getEntriesTotal(entries), + [entries], ); return ( @@ -32,10 +29,10 @@ function EstimateFormHeader({ ); } -export default compose(withCurrentOrganization())(EstimateFormHeader); +export default EstimateFormHeader; diff --git a/src/containers/Sales/Estimates/EstimateForm/EstimateFormHeaderFields.js b/src/containers/Sales/Estimates/EstimateForm/EstimateFormHeaderFields.js index fd36a2015..f2adc28bd 100644 --- a/src/containers/Sales/Estimates/EstimateForm/EstimateFormHeaderFields.js +++ b/src/containers/Sales/Estimates/EstimateForm/EstimateFormHeaderFields.js @@ -100,6 +100,7 @@ function EstimateFormHeader({ onContactSelected={(customer) => { form.setFieldValue('customer_id', customer.id); form.setFieldValue('exchange_rate', ''); + form.setFieldValue('currency_code', customer?.currency_code); setSelectCustomer(customer); }} popoverFill={true} diff --git a/src/containers/Sales/Invoices/InvoiceForm/InvoiceFormHeader.js b/src/containers/Sales/Invoices/InvoiceForm/InvoiceFormHeader.js index ab5140b50..c7fce181a 100644 --- a/src/containers/Sales/Invoices/InvoiceForm/InvoiceFormHeader.js +++ b/src/containers/Sales/Invoices/InvoiceForm/InvoiceFormHeader.js @@ -9,24 +9,16 @@ import InvoiceFormHeaderFields from './InvoiceFormHeaderFields'; import { getEntriesTotal } from 'containers/Entries/utils'; import { PageFormBigNumber } from 'components'; -import withCurrentOrganization from 'containers/Organization/withCurrentOrganization'; - -import { compose } from 'redux'; - /** * Invoice form header section. */ -function InvoiceFormHeader({ - // #withCurrentOrganization - organization: { base_currency }, -}) { - const { values } = useFormikContext(); +function InvoiceFormHeader() { + const { + values: { currency_code, entries }, + } = useFormikContext(); // Calculate the total due amount of invoice entries. - const totalDueAmount = useMemo( - () => getEntriesTotal(values.entries), - [values.entries], - ); + const totalDueAmount = useMemo(() => getEntriesTotal(entries), [entries]); return (
@@ -34,9 +26,9 @@ function InvoiceFormHeader({
); } -export default compose(withCurrentOrganization())(InvoiceFormHeader); +export default InvoiceFormHeader; diff --git a/src/containers/Sales/Invoices/InvoiceForm/InvoiceFormHeaderFields.js b/src/containers/Sales/Invoices/InvoiceForm/InvoiceFormHeaderFields.js index a83a1a219..0268caf3c 100644 --- a/src/containers/Sales/Invoices/InvoiceForm/InvoiceFormHeaderFields.js +++ b/src/containers/Sales/Invoices/InvoiceForm/InvoiceFormHeaderFields.js @@ -116,6 +116,7 @@ function InvoiceFormHeaderFields({ onContactSelected={(customer) => { form.setFieldValue('customer_id', customer.id); form.setFieldValue('exchange_rate', ''); + form.setFieldValue('currency_code', customer?.currency_code); setSelectCustomer(customer); }} popoverFill={true} diff --git a/src/containers/Sales/Invoices/InvoiceForm/InvoiceFormProvider.js b/src/containers/Sales/Invoices/InvoiceForm/InvoiceFormProvider.js index ded42d067..4a331d4be 100644 --- a/src/containers/Sales/Invoices/InvoiceForm/InvoiceFormProvider.js +++ b/src/containers/Sales/Invoices/InvoiceForm/InvoiceFormProvider.js @@ -91,6 +91,10 @@ function InvoiceFormProvider({ invoiceId, baseCurrency, ...props }) { !isEqual(selectCustomer?.currency_code, baseCurrency) && !isUndefined(selectCustomer?.currency_code); + const currencyCode = isForeignCustomer + ? selectCustomer?.currency_code + : baseCurrency; + const provider = { invoice, items, @@ -103,6 +107,7 @@ function InvoiceFormProvider({ invoiceId, baseCurrency, ...props }) { baseCurrency, branches, warehouses, + currencyCode, isInvoiceLoading, isItemsLoading, diff --git a/src/containers/Sales/PaymentReceives/PaymentReceiveForm/PaymentReceiveFormHeader.js b/src/containers/Sales/PaymentReceives/PaymentReceiveForm/PaymentReceiveFormHeader.js index cdf9bcfd1..7cbb2efea 100644 --- a/src/containers/Sales/PaymentReceives/PaymentReceiveForm/PaymentReceiveFormHeader.js +++ b/src/containers/Sales/PaymentReceives/PaymentReceiveForm/PaymentReceiveFormHeader.js @@ -7,24 +7,21 @@ import { FormattedMessage as T } from 'components'; import { CLASSES } from 'common/classes'; import PaymentReceiveHeaderFields from './PaymentReceiveHeaderFields'; -import withCurrentOrganization from 'containers/Organization/withCurrentOrganization'; -import { compose } from 'utils'; /** * Payment receive form header. */ -function PaymentReceiveFormHeader({ - // #withCurrentOrganization - organization: { base_currency }, -}) { +function PaymentReceiveFormHeader() { // Formik form context. - const { values } = useFormikContext(); + const { + values: { currency_code, entries }, + } = useFormikContext(); // Calculates the total payment amount from due amount. const paymentFullAmount = useMemo( - () => sumBy(values.entries, 'payment_amount'), - [values.entries], + () => sumBy(entries, 'payment_amount'), + [entries], ); return ( @@ -38,7 +35,7 @@ function PaymentReceiveFormHeader({

- +

@@ -47,4 +44,4 @@ function PaymentReceiveFormHeader({ ); } -export default compose(withCurrentOrganization())(PaymentReceiveFormHeader); +export default PaymentReceiveFormHeader; diff --git a/src/containers/Sales/PaymentReceives/PaymentReceiveForm/PaymentReceiveHeaderFields.js b/src/containers/Sales/PaymentReceives/PaymentReceiveForm/PaymentReceiveHeaderFields.js index 61583145d..63ce759eb 100644 --- a/src/containers/Sales/PaymentReceives/PaymentReceiveForm/PaymentReceiveHeaderFields.js +++ b/src/containers/Sales/PaymentReceives/PaymentReceiveForm/PaymentReceiveHeaderFields.js @@ -153,6 +153,8 @@ function PaymentReceiveHeaderFields({ onContactSelected={(customer) => { form.setFieldValue('customer_id', customer.id); form.setFieldValue('full_amount', ''); + form.setFieldValue('exchange_rate', ''); + form.setFieldValue('currency_code', customer?.currency_code); setSelectCustomer(customer); }} popoverFill={true} @@ -207,7 +209,10 @@ function PaymentReceiveHeaderFields({ {/* ------------ Full amount ------------ */} {({ - form: { setFieldValue }, + form: { + setFieldValue, + values: { currency_code }, + }, field: { value, onChange }, meta: { error, touched }, }) => ( @@ -220,7 +225,7 @@ function PaymentReceiveHeaderFields({ helperText={} > - + { @@ -237,7 +242,7 @@ function PaymentReceiveHeaderFields({ minimal={true} > ( - ) + ) )} diff --git a/src/containers/Sales/Receipts/ReceiptForm/ReceiptFormHeader.js b/src/containers/Sales/Receipts/ReceiptForm/ReceiptFormHeader.js index 41e329e0f..18d0e5619 100644 --- a/src/containers/Sales/Receipts/ReceiptForm/ReceiptFormHeader.js +++ b/src/containers/Sales/Receipts/ReceiptForm/ReceiptFormHeader.js @@ -7,10 +7,7 @@ import { CLASSES } from 'common/classes'; import { PageFormBigNumber } from 'components'; import ReceiptFormHeaderFields from './ReceiptFormHeaderFields'; -import withCurrentOrganization from 'containers/Organization/withCurrentOrganization'; - import { getEntriesTotal } from 'containers/Entries/utils'; -import { compose } from 'redux'; /** * Receipt form header section. @@ -18,16 +15,13 @@ import { compose } from 'redux'; function ReceiptFormHeader({ // #ownProps onReceiptNumberChanged, - // #withCurrentOrganization - organization: { base_currency }, }) { - const { values } = useFormikContext(); + const { + values: { currency_code, entries }, + } = useFormikContext(); // Calculate the total due amount of bill entries. - const totalDueAmount = useMemo( - () => getEntriesTotal(values.entries), - [values.entries], - ); + const totalDueAmount = useMemo(() => getEntriesTotal(entries), [entries]); return (
@@ -37,10 +31,10 @@ function ReceiptFormHeader({
); } -export default compose(withCurrentOrganization())(ReceiptFormHeader); +export default ReceiptFormHeader; diff --git a/src/containers/Sales/Receipts/ReceiptForm/ReceiptFormHeaderFields.js b/src/containers/Sales/Receipts/ReceiptForm/ReceiptFormHeaderFields.js index 03836f441..8d5f1dde8 100644 --- a/src/containers/Sales/Receipts/ReceiptForm/ReceiptFormHeaderFields.js +++ b/src/containers/Sales/Receipts/ReceiptForm/ReceiptFormHeaderFields.js @@ -108,6 +108,7 @@ function ReceiptFormHeader({ onContactSelected={(customer) => { form.setFieldValue('customer_id', customer.id); form.setFieldValue('exchange_rate', ''); + form.setFieldValue('currency_code', customer?.currency_code); setSelectCustomer(customer); }} popoverFill={true}