u
This commit is contained in:
@@ -37,8 +37,9 @@ import {
|
||||
BookDeliveryDialog,
|
||||
} from '../../components/manifest';
|
||||
import ManifestPdfDialog from '../../components/manifest/ManifestPdfDialog';
|
||||
import { loadParties } from '../../components/manifest/manifestConfig';
|
||||
import { StorageManagerContext } from '../../api/storageManagerContext';
|
||||
import { loadParties, apiFor } from '../../components/manifest/manifestConfig';
|
||||
import { article as articleApi, delivery as deliveryApi } from '../../api';
|
||||
import { getCategoryState } from '../../automats/categoryAutomat';
|
||||
import { requireArray, requireDefined, requireObject } from '../../utils/apiShape';
|
||||
import { backendErrorFrom } from '../../utils/backendError';
|
||||
import { notifyError } from '../../utils/notify';
|
||||
@@ -47,12 +48,10 @@ import { generateTextThumbnail } from '../../utils/textThumbnail';
|
||||
import { extractPdfText } from '../../utils/pdfText';
|
||||
import { getDeliveryEditorAutomat } from '../../automats/deliveryEditorAutomat';
|
||||
import { setLastDeliveryPath, userSettingsAutomat, setViewerPosition } from '../../automats';
|
||||
import { delivery as deliveryApi, ledger as defaultLedgerApi } from '../../api';
|
||||
|
||||
import { fetchDeliveryLedgerSummary } from '../../utils/deliveryLedger';
|
||||
|
||||
class LieferungNeuPage extends PureComponent {
|
||||
static contextType = StorageManagerContext;
|
||||
|
||||
constructor(props) {
|
||||
super(props);
|
||||
this.cfg = manifestConfig('delivery');
|
||||
@@ -168,7 +167,7 @@ class LieferungNeuPage extends PureComponent {
|
||||
async loadPartiesOnly() {
|
||||
this.setState({ status: 'loadingParties', error: null, partiesLoading: true });
|
||||
try {
|
||||
const parties = await loadParties('delivery', this.context);
|
||||
const parties = await loadParties('delivery');
|
||||
if (this._cancelled) return;
|
||||
this.automat.actions.setDeliveryEntities(parties);
|
||||
this.setState({
|
||||
@@ -200,8 +199,8 @@ class LieferungNeuPage extends PureComponent {
|
||||
this.setState({ status: 'loading', error: null, partiesLoading: true });
|
||||
try {
|
||||
const [docRes, parties] = await Promise.all([
|
||||
this.context[cfg.api].get(docId),
|
||||
loadParties('delivery', this.context),
|
||||
apiFor(cfg.kind).get(docId),
|
||||
loadParties('delivery'),
|
||||
]);
|
||||
if (this._cancelled) return;
|
||||
|
||||
@@ -228,12 +227,7 @@ class LieferungNeuPage extends PureComponent {
|
||||
|
||||
let ledgerSummary = null;
|
||||
try {
|
||||
const ledgerClient = this.context?.ledger || defaultLedgerApi;
|
||||
const deliveryClient = this.context?.[cfg.api] || deliveryApi;
|
||||
ledgerSummary = await fetchDeliveryLedgerSummary(docId, {
|
||||
ledgerApi: ledgerClient,
|
||||
deliveryApi: deliveryClient,
|
||||
});
|
||||
ledgerSummary = await fetchDeliveryLedgerSummary(docId);
|
||||
} catch (lErr) {
|
||||
console.error('[neu] Failed to load ledger summary:', lErr);
|
||||
}
|
||||
@@ -272,12 +266,7 @@ class LieferungNeuPage extends PureComponent {
|
||||
const { docId } = this.props;
|
||||
if (docId == null) return;
|
||||
try {
|
||||
const ledgerClient = this.context?.ledger || defaultLedgerApi;
|
||||
const deliveryClient = this.context?.[this.cfg.api] || deliveryApi;
|
||||
const ledgerSummary = await fetchDeliveryLedgerSummary(docId, {
|
||||
ledgerApi: ledgerClient,
|
||||
deliveryApi: deliveryClient,
|
||||
});
|
||||
const ledgerSummary = await fetchDeliveryLedgerSummary(docId);
|
||||
if (this._cancelled) return;
|
||||
this.setState({ ledgerSummary });
|
||||
} catch (err) {
|
||||
@@ -381,7 +370,7 @@ class LieferungNeuPage extends PureComponent {
|
||||
|
||||
try {
|
||||
// Get root category ID
|
||||
const categoryState = this.context.getCategoryState();
|
||||
const categoryState = getCategoryState();
|
||||
if (!categoryState) {
|
||||
enqueueSnackbar('Kategorie-Daten nicht verfügbar.', { variant: 'error' });
|
||||
return;
|
||||
@@ -394,7 +383,7 @@ class LieferungNeuPage extends PureComponent {
|
||||
}
|
||||
|
||||
// Create article in root category
|
||||
const articleRes = await this.context.article.create({
|
||||
const articleRes = await articleApi.create({
|
||||
parentId: rootCategoryId,
|
||||
name: categoryName,
|
||||
});
|
||||
@@ -407,7 +396,7 @@ class LieferungNeuPage extends PureComponent {
|
||||
const supplierSku = line.sku;
|
||||
|
||||
// Add supplier relationship with the supplier's SKU
|
||||
await this.context.article.addSupplier(internalSku, {
|
||||
await articleApi.addSupplier(internalSku, {
|
||||
entityId: partyId,
|
||||
sku: supplierSku || undefined,
|
||||
pu: line.pu ? Number(line.pu) : undefined,
|
||||
@@ -457,7 +446,7 @@ class LieferungNeuPage extends PureComponent {
|
||||
const supplierSku = line?.sku;
|
||||
|
||||
try {
|
||||
await this.context.article.addSupplier(internalSku, {
|
||||
await articleApi.addSupplier(internalSku, {
|
||||
entityId: partyId,
|
||||
sku: supplierSku || undefined,
|
||||
pu: line?.pu ? Number(line.pu) : undefined,
|
||||
@@ -699,10 +688,7 @@ class LieferungNeuPage extends PureComponent {
|
||||
};
|
||||
|
||||
try {
|
||||
const parser = this.context?.delivery?.parseSse;
|
||||
if (!parser) throw new Error('parseSse nicht verfügbar.');
|
||||
|
||||
for await (const { event, data } of parser(file, { signal: abortController.signal })) {
|
||||
for await (const { event, data } of deliveryApi.parseSse(file, { signal: abortController.signal })) {
|
||||
if (this._cancelled || abortController.signal.aborted) return;
|
||||
switch (event) {
|
||||
case 'status':
|
||||
@@ -914,10 +900,7 @@ class LieferungNeuPage extends PureComponent {
|
||||
}
|
||||
|
||||
try {
|
||||
const getFile =
|
||||
this.context?.delivery?.getFile?.bind(this.context.delivery) ||
|
||||
deliveryApi.getFile;
|
||||
const blob = await getFile(docId, fileId);
|
||||
const blob = await deliveryApi.getFile(docId, fileId);
|
||||
const filename = attachment.name || 'Dokument';
|
||||
const mimetype = attachment.type || blob.type || 'application/octet-stream';
|
||||
const file = new File([blob], filename, { type: mimetype });
|
||||
@@ -1164,23 +1147,24 @@ class LieferungNeuPage extends PureComponent {
|
||||
}
|
||||
|
||||
this.setState({ saving: true });
|
||||
const api = apiFor(cfg.kind);
|
||||
try {
|
||||
if (isCreate) {
|
||||
const data = await this.context[cfg.api].create(body);
|
||||
const data = await api.create(body);
|
||||
requireObject(data, cfg.postPathLabel);
|
||||
requireObject(data[cfg.docField], cfg.docField);
|
||||
requireDefined(data[cfg.docField].id, `${cfg.docField}.id`);
|
||||
await this.context[cfg.updateCache]();
|
||||
await cfg.listAutomat.actions.reload();
|
||||
if (this._cancelled) return;
|
||||
enqueueSnackbar(cfg.createdMsg, { variant: 'success' });
|
||||
this.automat.actions.resetDelivery();
|
||||
this.props.navigate(cfg.editPath(data[cfg.docField].id));
|
||||
} else {
|
||||
const data = await this.context[cfg.api].update(docId, body);
|
||||
const data = await api.update(docId, body);
|
||||
requireObject(data, cfg.patchPathLabel);
|
||||
requireObject(data[cfg.docField], cfg.docField);
|
||||
requireDefined(data[cfg.docField].id, `${cfg.docField}.id`);
|
||||
await this.context[cfg.updateCache]();
|
||||
await cfg.listAutomat.actions.reload();
|
||||
if (this._cancelled) return;
|
||||
const doc = data[cfg.docField];
|
||||
const apiLines = requireArray(doc.lines, `${cfg.docField}.lines`);
|
||||
|
||||
Reference in New Issue
Block a user