u
This commit is contained in:
@@ -17,6 +17,7 @@ import OrderDocumentsTiles from './OrderDocumentsTiles';
|
||||
import OrderShipmentDialog from './OrderShipmentDialog';
|
||||
import artikelAutomat, { getArticle } from '../../automats/artikelAutomat';
|
||||
import entityAutomat from '../../automats/entityAutomat';
|
||||
import customergroupAutomat from '../../automats/customergroupAutomat';
|
||||
import supplierAutomat from '../../automats/supplierAutomat';
|
||||
import orderAutomat from '../../automats/orderAutomat';
|
||||
import companyAutomat, { selectCompanyTaxrate } from '../../automats/companyAutomat';
|
||||
@@ -33,6 +34,7 @@ import {
|
||||
manifestConfig,
|
||||
apiFor,
|
||||
parseNum,
|
||||
filterNonSupplierEntities,
|
||||
} from './manifestConfig';
|
||||
import { ensureDocumentNumber, getNextDocumentNumber } from '../../utils/documentNumber';
|
||||
import {
|
||||
@@ -44,12 +46,15 @@ class ManifestForm extends PureComponent {
|
||||
constructor(props) {
|
||||
super(props);
|
||||
this.cfg = manifestConfig(props.kind);
|
||||
const groups = customergroupAutomat.state.items ?? [];
|
||||
const initialParties = props.kind === 'delivery'
|
||||
? (supplierAutomat.state.status === 'ready' ? (supplierAutomat.state.suppliers ?? []) : [])
|
||||
: (entityAutomat.state.status === 'ready' ? (entityAutomat.state.items ?? []) : []);
|
||||
: (entityAutomat.state.status === 'ready'
|
||||
? filterNonSupplierEntities(entityAutomat.state.items ?? [], groups)
|
||||
: []);
|
||||
const partiesReady = props.kind === 'delivery'
|
||||
? supplierAutomat.state.status === 'ready'
|
||||
: entityAutomat.state.status === 'ready';
|
||||
: (entityAutomat.state.status === 'ready' && customergroupAutomat.state.status === 'ready');
|
||||
|
||||
this.draftAutomat = props.mode === 'create' ? getManifestDraftAutomat(props.kind) : null;
|
||||
this.editAutomat = props.mode === 'edit' ? getManifestEditAutomat(props.kind) : null;
|
||||
@@ -150,10 +155,25 @@ class ManifestForm extends PureComponent {
|
||||
partiesLoading: state.status === 'loading',
|
||||
}));
|
||||
} else {
|
||||
this.unsubParties = entityAutomat.subscribe(this, (state) => ({
|
||||
parties: state.items ?? [],
|
||||
partiesLoading: state.status === 'loading',
|
||||
}));
|
||||
const updateParties = () => {
|
||||
const entities = entityAutomat.state.items ?? [];
|
||||
const groups = customergroupAutomat.state.items ?? [];
|
||||
this.setState({
|
||||
parties: filterNonSupplierEntities(entities, groups),
|
||||
partiesLoading:
|
||||
entityAutomat.state.status === 'loading' ||
|
||||
customergroupAutomat.state.status === 'loading',
|
||||
});
|
||||
};
|
||||
this.unsubParties = entityAutomat.subscribe(this, () => {
|
||||
updateParties();
|
||||
return null;
|
||||
});
|
||||
this.unsubGroups = customergroupAutomat.subscribe(this, () => {
|
||||
updateParties();
|
||||
return null;
|
||||
});
|
||||
void customergroupAutomat.actions.ensureLoaded();
|
||||
}
|
||||
|
||||
if (companyAutomat.state.status === 'idle') {
|
||||
@@ -231,6 +251,38 @@ class ManifestForm extends PureComponent {
|
||||
}
|
||||
|
||||
componentDidUpdate(prevProps, prevState) {
|
||||
if (prevProps.kind !== this.props.kind) {
|
||||
this.cfg = manifestConfig(this.props.kind);
|
||||
this.unsubParties?.();
|
||||
this.unsubGroups?.();
|
||||
if (this.props.kind === 'delivery') {
|
||||
this.unsubParties = supplierAutomat.subscribe(this, (state) => ({
|
||||
parties: state.status === 'ready' ? (state.suppliers ?? []) : [],
|
||||
partiesLoading: state.status === 'loading',
|
||||
}));
|
||||
} else {
|
||||
const updateParties = () => {
|
||||
const entities = entityAutomat.state.items ?? [];
|
||||
const groups = customergroupAutomat.state.items ?? [];
|
||||
this.setState({
|
||||
parties: filterNonSupplierEntities(entities, groups),
|
||||
partiesLoading:
|
||||
entityAutomat.state.status === 'loading' ||
|
||||
customergroupAutomat.state.status === 'loading',
|
||||
});
|
||||
};
|
||||
this.unsubParties = entityAutomat.subscribe(this, () => {
|
||||
updateParties();
|
||||
return null;
|
||||
});
|
||||
this.unsubGroups = customergroupAutomat.subscribe(this, () => {
|
||||
updateParties();
|
||||
return null;
|
||||
});
|
||||
void customergroupAutomat.actions.ensureLoaded();
|
||||
}
|
||||
}
|
||||
|
||||
if (
|
||||
this.props.mode === 'edit' &&
|
||||
prevProps.docId !== this.props.docId
|
||||
@@ -291,6 +343,7 @@ class ManifestForm extends PureComponent {
|
||||
this.unsubDraft?.();
|
||||
this.unsubEdit?.();
|
||||
this.unsubParties?.();
|
||||
this.unsubGroups?.();
|
||||
this.unsubCompany?.();
|
||||
if (this._parseAbortController) {
|
||||
this._parseAbortController.abort();
|
||||
|
||||
Reference in New Issue
Block a user