u
This commit is contained in:
@@ -25,6 +25,7 @@ import {
|
||||
company as companyApi,
|
||||
number as numberApi,
|
||||
posterminal as posterminalApi,
|
||||
printeragent as printeragentApi,
|
||||
supplier as supplierApi,
|
||||
unit as unitApi,
|
||||
warehouse as warehouseApi,
|
||||
@@ -168,6 +169,15 @@ const sortTerminals = (terminals) => {
|
||||
});
|
||||
};
|
||||
|
||||
const sortPrinterAgents = (agents) => {
|
||||
if (!Array.isArray(agents)) return [];
|
||||
return [...agents].sort((a, b) => {
|
||||
const sDiff = (Number(a.sort) || 0) - (Number(b.sort) || 0);
|
||||
if (sDiff !== 0) return sDiff;
|
||||
return (Number(a.id) || 0) - (Number(b.id) || 0);
|
||||
});
|
||||
};
|
||||
|
||||
const sortAccounts = (items) =>
|
||||
[...items].sort((a, b) => String(a.name ?? '').localeCompare(String(b.name ?? ''), 'de'));
|
||||
|
||||
@@ -237,6 +247,12 @@ const initialState = {
|
||||
terminalsStatus: 'idle',
|
||||
terminalsError: null,
|
||||
|
||||
// Printer agents
|
||||
printeragents: [],
|
||||
printeragentsCompanyId: null,
|
||||
printeragentsStatus: 'idle',
|
||||
printeragentsError: null,
|
||||
|
||||
// 4. Suppliers
|
||||
suppliers: [],
|
||||
articlesBySupplier: {},
|
||||
@@ -303,6 +319,7 @@ let companyAutomat;
|
||||
let inflightCompany = null;
|
||||
let inflightNumbers = null;
|
||||
let inflightTerminals = null;
|
||||
let inflightPrinterAgents = null;
|
||||
let inflightSuppliers = null;
|
||||
let inflightUnits = null;
|
||||
let inflightWarehouses = null;
|
||||
@@ -496,6 +513,7 @@ const actions = {
|
||||
actions.load(),
|
||||
actions.loadNumbers(),
|
||||
actions.loadTerminals(),
|
||||
actions.loadPrinterAgents(),
|
||||
actions.loadSuppliers(),
|
||||
actions.loadUnits(),
|
||||
actions.loadWarehouses(),
|
||||
@@ -512,6 +530,7 @@ const actions = {
|
||||
inflightCompany = null;
|
||||
inflightNumbers = null;
|
||||
inflightTerminals = null;
|
||||
inflightPrinterAgents = null;
|
||||
inflightSuppliers = null;
|
||||
inflightUnits = null;
|
||||
inflightWarehouses = null;
|
||||
@@ -698,6 +717,72 @@ const actions = {
|
||||
},
|
||||
// #endregion
|
||||
|
||||
// #region Printer agents (printeragent)
|
||||
// MARK: calls printeragent.list from ../api/index.js
|
||||
async loadPrinterAgents() {
|
||||
const companyId =
|
||||
authAutomat.state.user?.selectedCompanyId ?? companyAutomat.state.current?.id;
|
||||
if (!companyId) return [];
|
||||
if (inflightPrinterAgents) return inflightPrinterAgents;
|
||||
companyAutomat.setState({ printeragentsStatus: 'loading', printeragentsError: null });
|
||||
inflightPrinterAgents = (async () => {
|
||||
try {
|
||||
const res = await printeragentApi.list();
|
||||
const printeragents = sortPrinterAgents(Array.isArray(res.printeragents) ? res.printeragents : []);
|
||||
companyAutomat.setState({
|
||||
printeragents,
|
||||
printeragentsCompanyId: companyId,
|
||||
printeragentsStatus: 'succeeded',
|
||||
printeragentsError: null,
|
||||
});
|
||||
return printeragents;
|
||||
} catch (err) {
|
||||
companyAutomat.setState({
|
||||
printeragentsStatus: 'failed',
|
||||
printeragentsError: err?.message ?? String(err),
|
||||
});
|
||||
throw err;
|
||||
} finally {
|
||||
inflightPrinterAgents = null;
|
||||
}
|
||||
})();
|
||||
return inflightPrinterAgents;
|
||||
},
|
||||
|
||||
reloadPrinterAgents() {
|
||||
return actions.loadPrinterAgents();
|
||||
},
|
||||
|
||||
async createPrinterAgent(payload) {
|
||||
const res = await printeragentApi.create(payload);
|
||||
const agent = res.printeragent;
|
||||
companyAutomat.setState({
|
||||
printeragents: sortPrinterAgents([...companyAutomat.state.printeragents, agent]),
|
||||
});
|
||||
return agent;
|
||||
},
|
||||
|
||||
async updatePrinterAgent(agentId, patch) {
|
||||
const res = await printeragentApi.update(agentId, patch);
|
||||
const updated = res.printeragent;
|
||||
companyAutomat.setState({
|
||||
printeragents: sortPrinterAgents(
|
||||
companyAutomat.state.printeragents.map((a) =>
|
||||
a.id === agentId ? { ...a, ...updated } : a,
|
||||
),
|
||||
),
|
||||
});
|
||||
return updated;
|
||||
},
|
||||
|
||||
async deletePrinterAgent(agentId) {
|
||||
await printeragentApi.delete(agentId);
|
||||
companyAutomat.setState({
|
||||
printeragents: companyAutomat.state.printeragents.filter((a) => a.id !== agentId),
|
||||
});
|
||||
},
|
||||
// #endregion
|
||||
|
||||
// #region 4. Suppliers (supplier)
|
||||
// MARK: calls supplier.list from ../api/index.js
|
||||
loadSuppliers() {
|
||||
@@ -1553,6 +1638,9 @@ sseAutomat.actions.on('carrier', () => {
|
||||
sseAutomat.actions.on('posterminal', () => {
|
||||
void companyAutomat.actions.loadTerminals().catch(() => {});
|
||||
});
|
||||
sseAutomat.actions.on('printeragent', () => {
|
||||
void companyAutomat.actions.loadPrinterAgents().catch(() => {});
|
||||
});
|
||||
sseAutomat.actions.on('customergroup', () => {
|
||||
void companyAutomat.actions.reloadCustomergroups().catch(() => {});
|
||||
});
|
||||
@@ -1593,6 +1681,11 @@ export const selectPosterminals = () => companyAutomat.state.terminals;
|
||||
export const selectPosterminalStatus = () => companyAutomat.state.terminalsStatus;
|
||||
export const selectHasPosterminals = () => companyAutomat.state.terminals.length > 0;
|
||||
|
||||
// Printer agents selectors
|
||||
export const selectPrinterAgents = () => companyAutomat.state.printeragents;
|
||||
export const selectPrinterAgentStatus = () => companyAutomat.state.printeragentsStatus;
|
||||
export const selectHasPrinterAgents = () => companyAutomat.state.printeragents.length > 0;
|
||||
|
||||
// Suppliers selectors
|
||||
export const selectSuppliers = () => companyAutomat.state.suppliers;
|
||||
export const selectSuppliersStatus = () => companyAutomat.state.suppliersStatus;
|
||||
|
||||
@@ -151,6 +151,9 @@ export {
|
||||
selectPosterminals,
|
||||
selectPosterminalStatus,
|
||||
selectHasPosterminals,
|
||||
selectPrinterAgents,
|
||||
selectPrinterAgentStatus,
|
||||
selectHasPrinterAgents,
|
||||
selectSuppliers,
|
||||
selectSuppliersStatus,
|
||||
selectUnits,
|
||||
|
||||
Reference in New Issue
Block a user