diff --git a/src/containers/Sales/Invoices/InvoiceForm/FlagKit.js b/src/components/Tags/FlagTag.js
similarity index 88%
rename from src/containers/Sales/Invoices/InvoiceForm/FlagKit.js
rename to src/components/Tags/FlagTag.js
index 0a64a8ad6..ed3623d8b 100644
--- a/src/containers/Sales/Invoices/InvoiceForm/FlagKit.js
+++ b/src/components/Tags/FlagTag.js
@@ -1,7 +1,7 @@
import React from 'react';
import styled from 'styled-components';
-export default function FlagKit({ flage }) {
+export const FlagTag = ({ flage }) => {
return (
);
-}
+};
const Img = styled.img`
display: inline-block;
diff --git a/src/components/Tags/index.js b/src/components/Tags/index.js
index 7eca83954..03795ed67 100644
--- a/src/components/Tags/index.js
+++ b/src/components/Tags/index.js
@@ -1,3 +1,4 @@
-export * from './CurrencyTag';
\ No newline at end of file
+export * from './CurrencyTag';
+export * from './FlagTag'
\ No newline at end of file
diff --git a/src/containers/Sales/Invoices/InvoiceForm/InvoiceForm.schema.js b/src/containers/Sales/Invoices/InvoiceForm/InvoiceForm.schema.js
index dd89ccbba..eaedac85f 100644
--- a/src/containers/Sales/Invoices/InvoiceForm/InvoiceForm.schema.js
+++ b/src/containers/Sales/Invoices/InvoiceForm/InvoiceForm.schema.js
@@ -3,53 +3,51 @@ import intl from 'react-intl-universal';
import { DATATYPES_LENGTH } from 'common/dataTypes';
import { isBlank } from 'utils';
-const getSchema = () => Yup.object().shape({
- customer_id: Yup.string()
- .label(intl.get('customer_name_'))
- .required(),
- invoice_date: Yup.date()
- .required()
- .label(intl.get('invoice_date_')),
- due_date: Yup.date()
- .required()
- .label(intl.get('due_date_')),
- invoice_no: Yup.string()
- .max(DATATYPES_LENGTH.STRING)
- .label(intl.get('invoice_no_')),
- reference_no: Yup.string().min(1).max(DATATYPES_LENGTH.STRING),
- delivered: Yup.boolean(),
- from_estimate_id: Yup.string(),
- invoice_message: Yup.string()
- .trim()
- .min(1)
- .max(DATATYPES_LENGTH.TEXT)
- .label(intl.get('note')),
- terms_conditions: Yup.string()
- .trim()
- .min(1)
- .max(DATATYPES_LENGTH.TEXT)
- .label(intl.get('note')),
- entries: Yup.array().of(
- Yup.object().shape({
- quantity: Yup.number()
- .nullable()
- .max(DATATYPES_LENGTH.INT_10)
- .when(['rate'], {
- is: (rate) => rate,
- then: Yup.number().required(),
- }),
- rate: Yup.number().nullable().max(DATATYPES_LENGTH.INT_10),
- item_id: Yup.number()
- .nullable()
- .when(['quantity', 'rate'], {
- is: (quantity, rate) => !isBlank(quantity) && !isBlank(rate),
- then: Yup.number().required(),
- }),
- discount: Yup.number().nullable().min(0).max(100),
- description: Yup.string().nullable().max(DATATYPES_LENGTH.TEXT),
- }),
- ),
-});
+const getSchema = () =>
+ Yup.object().shape({
+ customer_id: Yup.string().label(intl.get('customer_name_')).required(),
+ invoice_date: Yup.date().required().label(intl.get('invoice_date_')),
+ due_date: Yup.date().required().label(intl.get('due_date_')),
+ invoice_no: Yup.string()
+ .max(DATATYPES_LENGTH.STRING)
+ .label(intl.get('invoice_no_')),
+ reference_no: Yup.string().min(1).max(DATATYPES_LENGTH.STRING),
+ delivered: Yup.boolean(),
+ from_estimate_id: Yup.string(),
+ invoice_message: Yup.string()
+ .trim()
+ .min(1)
+ .max(DATATYPES_LENGTH.TEXT)
+ .label(intl.get('note')),
+ terms_conditions: Yup.string()
+ .trim()
+ .min(1)
+ .max(DATATYPES_LENGTH.TEXT)
+ .label(intl.get('note')),
+ exchange_rate: Yup.number(),
+ branch_id: Yup.string(),
+ warehouse_id: Yup.string(),
+ entries: Yup.array().of(
+ Yup.object().shape({
+ quantity: Yup.number()
+ .nullable()
+ .max(DATATYPES_LENGTH.INT_10)
+ .when(['rate'], {
+ is: (rate) => rate,
+ then: Yup.number().required(),
+ }),
+ rate: Yup.number().nullable().max(DATATYPES_LENGTH.INT_10),
+ item_id: Yup.number()
+ .nullable()
+ .when(['quantity', 'rate'], {
+ is: (quantity, rate) => !isBlank(quantity) && !isBlank(rate),
+ then: Yup.number().required(),
+ }),
+ discount: Yup.number().nullable().min(0).max(100),
+ description: Yup.string().nullable().max(DATATYPES_LENGTH.TEXT),
+ }),
+ ),
+ });
export const getCreateInvoiceFormSchema = getSchema;
export const getEditInvoiceFormSchema = getSchema;
diff --git a/src/containers/Sales/Invoices/InvoiceForm/InvoiceFormHeaderFields.js b/src/containers/Sales/Invoices/InvoiceForm/InvoiceFormHeaderFields.js
index 11a9c319a..135b78af0 100644
--- a/src/containers/Sales/Invoices/InvoiceForm/InvoiceFormHeaderFields.js
+++ b/src/containers/Sales/Invoices/InvoiceForm/InvoiceFormHeaderFields.js
@@ -4,12 +4,13 @@ import {
InputGroup,
Position,
ControlGroup,
- Classes,
} from '@blueprintjs/core';
import { DateInput } from '@blueprintjs/datetime';
import { FastField, Field, ErrorMessage } from 'formik';
import { FormattedMessage as T, Col, Row } from 'components';
import { momentFormatter, compose, tansformDateValue } from 'utils';
+import { upperCase } from 'lodash';
+
import classNames from 'classnames';
import styled from 'styled-components';
@@ -25,19 +26,22 @@ import {
Icon,
InputPrependButton,
MoneyInputGroup,
+ FlagTag,
} from 'components';
-import ItemsSuggestField from 'components/ItemsSuggestField';
import { useInvoiceFormContext } from './InvoiceFormProvider';
import withSettings from 'containers/Settings/withSettings';
import withDialogActions from 'containers/Dialog/withDialogActions';
import { inputIntent, handleDateChange } from 'utils';
import BaseCurrency from './BaseCurrency';
-import FlagKit from './FlagKit';
const Data = [
{
- id: '10',
+ id: 10,
+ name: 'Due on Receipt',
+ },
+ {
+ id: 20,
name: 'Due on Receipt',
},
];
@@ -118,7 +122,7 @@ function InvoiceFormHeaderFields({
- 1 USD =
+ 1 USD =
{/* ----------- Exchange reate ----------- */}
@@ -138,14 +142,16 @@ function InvoiceFormHeaderFields({
value={field.value}
allowDecimals={false}
allowNegativeValue={true}
- onChange={(value) => {}}
+ onChange={(value) => {
+ setFieldValue('exchange_rate', value);
+ }}
intent={inputIntent({ error, touched })}
/>
)}
- LYD
+ LYD
diff --git a/src/containers/Sales/Invoices/InvoiceForm/InvoiceFormTopBar.js b/src/containers/Sales/Invoices/InvoiceForm/InvoiceFormTopBar.js
index 3d4b4afc5..1cc828986 100644
--- a/src/containers/Sales/Invoices/InvoiceForm/InvoiceFormTopBar.js
+++ b/src/containers/Sales/Invoices/InvoiceForm/InvoiceFormTopBar.js
@@ -17,30 +17,30 @@ export default function InvoiceFormTopBar() {
return (
-
+
{({ form, field: { value }, meta: { error, touched } }) => (
{
- form.setFieldValue('name', item.id);
+ onItemSelected={({ id }) => {
+ form.setFieldValue('branch_id', id);
}}
selectedItemId={value}
buttonProps={{
- icon: ,
+ icon: ,
}}
/>
)}
-
+
{({ form, field: { value }, meta: { error, touched } }) => (
{
- form.setFieldValue('warehouse', item.id);
+ onItemSelected={({ id }) => {
+ form.setFieldValue('warehouse_id', id);
}}
selectedItemId={value}
buttonProps={{
diff --git a/src/containers/Sales/Invoices/InvoiceForm/utils.js b/src/containers/Sales/Invoices/InvoiceForm/utils.js
index 7116ba19d..cbe52c399 100644
--- a/src/containers/Sales/Invoices/InvoiceForm/utils.js
+++ b/src/containers/Sales/Invoices/InvoiceForm/utils.js
@@ -43,6 +43,9 @@ export const defaultInvoice = {
reference_no: '',
invoice_message: '',
terms_conditions: '',
+ exchange_rate: '',
+ branch_id: '',
+ warehouse_id: '',
entries: [...repeatValue(defaultInvoiceEntry, MIN_LINES_NUMBER)],
};
diff --git a/src/static/json/icons.js b/src/static/json/icons.js
index 01f4f6d57..892a994bb 100644
--- a/src/static/json/icons.js
+++ b/src/static/json/icons.js
@@ -528,7 +528,7 @@ export default {
],
viewBox: '0 0 24 24',
},
- 'domain-16': {
+ 'branch-16': {
path: [
'M12 7V3H2v18h20V7H12zM6 19H4v-2h2v2zm0-4H4v-2h2v2zm0-4H4V9h2v2zm0-4H4V5h2v2zm4 12H8v-2h2v2zm0-4H8v-2h2v2zm0-4H8V9h2v2zm0-4H8V5h2v2zm10 12h-8v-2h2v-2h-2v-2h2v-2h-2V9h8v10zm-2-8h-2v2h2v-2zm0 4h-2v2h2v-2z',
],