Team-API, Sidebar-Zaehler und Format-Hilfen fuer Gutschriften, Angebote und E-Mail-Speicher
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
1 parent
813c6a7e18
commit
91d526e909
13 files changed
+487
-47
No files matched your search
@@ -59,3 +59,43 @@ export const chatUploadUrl = (customerId) => `${PORTAL_URL}/api/team/chats/${enc
|
||||
export async function teamAuthHeaders() {
|
||||
return { Authorization: `Bearer ${await jwtCache.get()}` }
|
||||
}
|
||||
|
||||
// --- Gutschriften (Uebernahmegutschriften) ---
|
||||
|
||||
const query = (params) => {
|
||||
const q = new URLSearchParams(Object.entries(params).filter(([, v]) => v !== undefined && v !== null && v !== '')).toString()
|
||||
return q ? `?${q}` : ''
|
||||
}
|
||||
|
||||
/** { requests, openCount }; status 'open' (Standard) oder 'all', optional nur ein Kunde */
|
||||
export const listCredits = ({ status = 'open', customerId } = {}) => request(`/takeover-credits${query({ status, customerId })}`)
|
||||
export const getCreditOpenCount = () => request('/takeover-credits/open-count')
|
||||
export const getCredit = (id) => request(`/takeover-credits/${enc(id)}`)
|
||||
export const calcCredit = (body) => request('/takeover-credits/calc', { method: 'POST', body })
|
||||
export const decideCredit = (id, body) => request(`/takeover-credits/${enc(id)}/decision`, { method: 'POST', body })
|
||||
export const applyCredit = (id) => request(`/takeover-credits/${enc(id)}/apply`, { method: 'POST', body: {} })
|
||||
|
||||
// --- Abo-Angebote ---
|
||||
|
||||
export const listOffers = ({ customerId } = {}) => request(`/offers${query({ customerId })}`)
|
||||
export const getOfferContext = (customerId) => request(`/offers/context/${enc(customerId)}`)
|
||||
export const createOffer = (body) => request('/offers', { method: 'POST', body })
|
||||
export const withdrawOffer = (id) => request(`/offers/${enc(id)}/withdraw`, { method: 'POST', body: {} })
|
||||
export const notifyOffer = (id) => request(`/offers/${enc(id)}/notify`, { method: 'POST', body: {} })
|
||||
|
||||
// --- E-Mail-Speicher ---
|
||||
|
||||
export const listStorageTasks = () => request('/storage-tasks')
|
||||
export const getStorageOpenCount = () => request('/storage-tasks/open-count')
|
||||
export const markStorageDone = (id) => request(`/storage-tasks/${enc(id)}/done`, { method: 'POST', body: {} })
|
||||
|
||||
// --- Funktionen (News-Pinnwand je Projekt) ---
|
||||
|
||||
export const getFunktionen = (customerId) => request(`/funktionen/${enc(customerId)}`)
|
||||
export const setNewsFeature = (customerId, { projectId, action, note }) =>
|
||||
request(`/funktionen/${enc(customerId)}/news`, { method: 'POST', body: { projectId, action, note } })
|
||||
|
||||
// --- Abo-Status (alle Mitarbeiter) ---
|
||||
|
||||
/** { productKey, active, status, storageUnits, startedAt, serviceStart, currentPeriodEnd, cancelAt } */
|
||||
export const getCustomerAboStatus = (customerId) => request(`/customers/${enc(customerId)}/abo`)
|
||||
Reference in new issue
Block a user