mirror of
https://github.com/bigcapitalhq/bigcapital.git
synced 2026-02-18 22:00:31 +00:00
feat(warehousetransfer): add api.
This commit is contained in:
@@ -4,11 +4,11 @@ import { DATATYPES_LENGTH } from 'common/dataTypes';
|
||||
|
||||
const Schema = Yup.object().shape({
|
||||
date: Yup.date().required().label(intl.get('date')),
|
||||
transfer_number: Yup.string()
|
||||
transaction_number: Yup.string()
|
||||
.max(DATATYPES_LENGTH.STRING)
|
||||
.label(intl.get('transfer_number')),
|
||||
from_warehouse: Yup.number().required().label(intl.get('from_warehouse')),
|
||||
to_warehouse: Yup.number().required().label(intl.get('from_warehouse')),
|
||||
.label(intl.get('transaction_number')),
|
||||
from_warehouse_id: Yup.number().required().label(intl.get('from_warehouse')),
|
||||
to_warehouse_id: Yup.number().required().label(intl.get('from_warehouse')),
|
||||
reason: Yup.string()
|
||||
.trim()
|
||||
.min(1)
|
||||
@@ -17,8 +17,9 @@ const Schema = Yup.object().shape({
|
||||
entries: Yup.array().of(
|
||||
Yup.object().shape({
|
||||
item_id: Yup.number().nullable(),
|
||||
source_warehouse: Yup.number().nullable(),
|
||||
destination_warehouse: Yup.number().nullable(),
|
||||
// source_warehouse: Yup.number().nullable(),
|
||||
// destination_warehouse: Yup.number().nullable(),
|
||||
description: Yup.string().nullable().max(DATATYPES_LENGTH.TEXT),
|
||||
quantity: Yup.number().nullable().max(DATATYPES_LENGTH.INT_10),
|
||||
}),
|
||||
),
|
||||
|
||||
@@ -37,7 +37,7 @@ function WarehouseTransferFormHeaderFields({
|
||||
warehouseTransferNextNumber,
|
||||
warehouseTransferNumberPrefix,
|
||||
}) {
|
||||
const { accounts } = useWarehouseTransferFormContext();
|
||||
const { warehouses } = useWarehouseTransferFormContext();
|
||||
|
||||
// Handle warehouse transfer number changing.
|
||||
const handleTransferNumberChange = () => {
|
||||
@@ -92,11 +92,11 @@ function WarehouseTransferFormHeaderFields({
|
||||
)}
|
||||
</FastField>
|
||||
{/* ----------- Transfer number ----------- */}
|
||||
<Field name={'transfer_number'}>
|
||||
<Field name={'transaction_number'}>
|
||||
{({ form, field, meta: { error, touched } }) => (
|
||||
<FormGroup
|
||||
label={<T id={'warehouse_transfer.label.transfer_no'} />}
|
||||
labelInfo={<FieldRequiredHint />}
|
||||
// labelInfo={<FieldRequiredHint />}
|
||||
inline={true}
|
||||
className={classNames('form-group--transfer-no', CLASSES.FILL)}
|
||||
intent={inputIntent({ error, touched })}
|
||||
@@ -131,7 +131,7 @@ function WarehouseTransferFormHeaderFields({
|
||||
)}
|
||||
</Field>
|
||||
{/* ----------- Form Warehouse ----------- */}
|
||||
<FastField name={'form_warehouse'} accounts={accounts}>
|
||||
<FastField name={'from_warehouse_id'} accounts={warehouses}>
|
||||
{({ form, field: { value }, meta: { error, touched } }) => (
|
||||
<FormGroup
|
||||
label={<T id={'warehouse_transfer.label.form_warehouse'} />}
|
||||
@@ -142,12 +142,12 @@ function WarehouseTransferFormHeaderFields({
|
||||
inline={true}
|
||||
labelInfo={<FieldRequiredHint />}
|
||||
intent={inputIntent({ error, touched })}
|
||||
helperText={<ErrorMessage name={'form_warehouse'} />}
|
||||
helperText={<ErrorMessage name={'from_warehouse_id'} />}
|
||||
>
|
||||
<AccountsSelectList
|
||||
accounts={accounts}
|
||||
accounts={warehouses}
|
||||
onAccountSelected={(account) => {
|
||||
form.setFieldValue('form_warehouse', account.id);
|
||||
form.setFieldValue('from_warehouse_id', account.id);
|
||||
}}
|
||||
defaultSelectText={'Select Warehouse Transfer'}
|
||||
selectedAccountId={value}
|
||||
@@ -158,7 +158,7 @@ function WarehouseTransferFormHeaderFields({
|
||||
)}
|
||||
</FastField>
|
||||
{/* ----------- To Warehouse ----------- */}
|
||||
<FastField name={'to_warehouse'} accounts={accounts}>
|
||||
<FastField name={'to_warehouse_id'} accounts={warehouses}>
|
||||
{({ form, field: { value }, meta: { error, touched } }) => (
|
||||
<FormGroup
|
||||
label={<T id={'warehouse_transfer.label.to_warehouse'} />}
|
||||
@@ -169,12 +169,12 @@ function WarehouseTransferFormHeaderFields({
|
||||
inline={true}
|
||||
labelInfo={<FieldRequiredHint />}
|
||||
intent={inputIntent({ error, touched })}
|
||||
helperText={<ErrorMessage name={'to_warehouse'} />}
|
||||
helperText={<ErrorMessage name={'to_warehouse_id'} />}
|
||||
>
|
||||
<AccountsSelectList
|
||||
accounts={accounts}
|
||||
accounts={warehouses}
|
||||
onAccountSelected={(account) => {
|
||||
form.setFieldValue('to_warehouse', account.id);
|
||||
form.setFieldValue('to_warehouse_id', account.id);
|
||||
}}
|
||||
defaultSelectText={'Select Warehouse Transfer'}
|
||||
selectedAccountId={value}
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
import React from 'react';
|
||||
import DashboardInsider from 'components/Dashboard/DashboardInsider';
|
||||
import { useItems, useAccounts } from 'hooks/query';
|
||||
import { useItems, useWarehouses } from 'hooks/query';
|
||||
import { ITEMS_FILTER_ROLES_QUERY } from './utils.js';
|
||||
|
||||
const WarehouseFormContext = React.createContext();
|
||||
@@ -19,17 +19,23 @@ function WarehouseTransferFormProvider({ warehouseTransferId, ...props }) {
|
||||
stringified_filter_roles: ITEMS_FILTER_ROLES_QUERY,
|
||||
});
|
||||
|
||||
// Fetch accounts list.
|
||||
const { data: accounts, isLoading: isAccountsLoading } = useAccounts();
|
||||
// Fetch warehouses list.
|
||||
const {
|
||||
data: warehouses,
|
||||
isFetching: isWarehouesFetching,
|
||||
isLoading: isWarehouesLoading,
|
||||
} = useWarehouses();
|
||||
|
||||
// Provider payload.
|
||||
const provider = {
|
||||
items,
|
||||
accounts,
|
||||
warehouses,
|
||||
isItemsFetching,
|
||||
isWarehouesFetching,
|
||||
};
|
||||
return (
|
||||
<DashboardInsider
|
||||
loading={isItemsLoading || isAccountsLoading}
|
||||
loading={isItemsLoading || isWarehouesLoading}
|
||||
name={'warehouseTransfer-form'}
|
||||
>
|
||||
<WarehouseFormContext.Provider value={provider} {...props} />
|
||||
|
||||
@@ -18,28 +18,15 @@ export const MIN_LINES_NUMBER = 4;
|
||||
|
||||
export const defaultWarehouseTransfer = {
|
||||
date: moment(new Date()).format('YYYY-MM-DD'),
|
||||
transfer_number: '',
|
||||
from_warehouse: '',
|
||||
to_warehouse: '',
|
||||
transaction_number: '',
|
||||
from_warehouse_id: '',
|
||||
to_warehouse_id: '',
|
||||
reason: '',
|
||||
entries: [...repeatValue(defaultWareTransferEntry, MIN_LINES_NUMBER)],
|
||||
};
|
||||
|
||||
export const ITEMS_FILTER_ROLES_QUERY = JSON.stringify([
|
||||
{
|
||||
index: 1,
|
||||
fieldKey: 'sellable',
|
||||
value: true,
|
||||
condition: '&&',
|
||||
comparator: 'equals',
|
||||
},
|
||||
{
|
||||
index: 2,
|
||||
fieldKey: 'active',
|
||||
value: true,
|
||||
condition: '&&',
|
||||
comparator: 'equals',
|
||||
},
|
||||
{ fieldKey: 'type', comparator: 'is', value: 'inventory', index: 1 },
|
||||
]);
|
||||
|
||||
/**
|
||||
@@ -50,6 +37,6 @@ export const useObserveTransferNoSettings = (prefix, nextNumber) => {
|
||||
|
||||
React.useEffect(() => {
|
||||
const transferNo = transactionNumber(prefix, nextNumber);
|
||||
setFieldValue('transfer_no', transferNo);
|
||||
setFieldValue('transaction_number', transferNo);
|
||||
}, [setFieldValue, prefix, nextNumber]);
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user