summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/containers/ContractorForm.tsx1
-rw-r--r--src/containers/Service/ServiceContext.tsx1
-rw-r--r--src/containers/Service/ServiceForm.tsx3
-rw-r--r--src/containers/WaybillForm.tsx33
-rw-r--r--src/index.tsx8
-rw-r--r--src/services.js30
6 files changed, 70 insertions, 6 deletions
diff --git a/src/containers/ContractorForm.tsx b/src/containers/ContractorForm.tsx
index 4e83fae..c78ed9b 100644
--- a/src/containers/ContractorForm.tsx
+++ b/src/containers/ContractorForm.tsx
@@ -8,7 +8,6 @@ const ContractorForm: React.FC = () => {
<div className="max-w-lg">
<Input name="name" label="Название" />
<Input name="vatId" label="УНП" />
- <Input name="debt" type="number" label="Долг ($)" />
</div>
</Form>
);
diff --git a/src/containers/Service/ServiceContext.tsx b/src/containers/Service/ServiceContext.tsx
index 2602936..8f23d9d 100644
--- a/src/containers/Service/ServiceContext.tsx
+++ b/src/containers/Service/ServiceContext.tsx
@@ -6,6 +6,7 @@ export interface ServiceParams {
nameSingular: string;
tableFields: any[];
Form: React.FC<any>;
+ default: Record<string, any>;
}
const ServiceContext = React.createContext<ServiceParams>({
diff --git a/src/containers/Service/ServiceForm.tsx b/src/containers/Service/ServiceForm.tsx
index 273f5bd..62e4521 100644
--- a/src/containers/Service/ServiceForm.tsx
+++ b/src/containers/Service/ServiceForm.tsx
@@ -1,6 +1,7 @@
import React, { useContext } from 'react';
import { useParams, useHistory } from 'react-router-dom';
import { Formik } from 'formik';
+import _ from 'lodash';
import Page, { Action } from '../Page';
import hooks from '../../hooks/useAPIClient';
import { post, patch } from '../../requests';
@@ -32,7 +33,7 @@ const ServiceForm: React.FC = () => {
<Page title={id ? item?.name : `Новый ${service.nameSingular}`} actions={actions}>
{(!id || item) && (
<Formik
- initialValues={item || { name: '', debt: '', vatId: '' }}
+ initialValues={_.defaults(item, service.default)}
onSubmit={onSubmit}
>
<service.Form />
diff --git a/src/containers/WaybillForm.tsx b/src/containers/WaybillForm.tsx
new file mode 100644
index 0000000..e4d7d82
--- /dev/null
+++ b/src/containers/WaybillForm.tsx
@@ -0,0 +1,33 @@
+import React from 'react';
+import { Form, Field } from 'formik';
+import Input from '../components/Input';
+import hooks from '../hooks/useAPIClient';
+
+const WaybillForm: React.FC = () => {
+ const { data: contractors } = hooks.contractors.useList();
+ const { data: products } = hooks.products.useList();
+
+ return (
+ <Form id="form">
+ <div className="max-w-lg">
+ <Field name="operation" as="select">
+ <option value="in">Приход</option>
+ <option value="out">Расход</option>
+ </Field>
+ <Field name="contractorId" as="select">
+ {contractors?.map(contractor => (
+ <option value={contractor._id}>{contractor.name}</option>
+ ))}
+ </Field>
+ <Field name="productId" as="select">
+ {products?.map(product => (
+ <option value={product._id}>{product.name}</option>
+ ))}
+ </Field>
+ <Input name="quantity" type="number" label="Количество" />
+ </div>
+ </Form>
+ );
+};
+
+export default WaybillForm;
diff --git a/src/index.tsx b/src/index.tsx
index 1005a9d..e637e68 100644
--- a/src/index.tsx
+++ b/src/index.tsx
@@ -11,6 +11,14 @@ import Home from './containers/Home';
import Service from './containers/Service/Service';
import { ServiceProvider } from './containers/Service/ServiceContext';
import services from './services';
+import WaybillForm from './containers/WaybillForm';
+import ContractorForm from './containers/ContractorForm';
+import ProductForm from './containers/ProductForm';
+
+services[0].Form = ProductForm;
+services[1].Form = ContractorForm;
+services[2].Form = WaybillForm;
+
const navigation = [
{ name: 'Главная', route: '/' },
diff --git a/src/services.js b/src/services.js
index 83fc425..dbfedd5 100644
--- a/src/services.js
+++ b/src/services.js
@@ -1,5 +1,3 @@
-import ContractorForm from './containers/ContractorForm';
-import ProductForm from './containers/ProductForm';
import { ServiceParams } from './containers/Service/ServiceContext';
const services: ServiceParams[] = [
@@ -10,8 +8,13 @@ const services: ServiceParams[] = [
tableFields: [
{ key: 'name', label: 'Название' },
{ key: 'price', label: 'Цена' },
+ { key: 'quantity', label: 'На складе' },
],
- Form: ProductForm,
+ default: {
+ name: '',
+ price: '',
+ quantity: 0,
+ },
},
{
route: 'contractors',
@@ -22,7 +25,26 @@ const services: ServiceParams[] = [
{ key: 'name', label: 'Название' },
{ key: 'debt', label: 'Долг' },
],
- Form: ContractorForm,
+ default: {
+ name: '',
+ vatId: '',
+ debt: 0,
+ },
+ },
+ {
+ route: 'waybills',
+ name: 'Накладные',
+ nameSingular: 'Накладная',
+ tableFields: [
+ { key: 'operation', label: 'Операция' },
+ { key: 'productId', label: 'Товар' },
+ { key: 'contractorId', label: 'Поставщик' },
+ { key: 'status', label: 'Статус' },
+ { key: 'quantity', label: 'Количество' },
+ ],
+ default: {
+ quantity: 1,
+ },
},
];