expenses
This commit is contained in:
@@ -116,8 +116,8 @@ const API = {
|
||||
auth: () => window.location.href = '/auth/qbo'
|
||||
},
|
||||
|
||||
// Accounting API (Phase 1 — read-only)
|
||||
accounting: {
|
||||
// Phase 1
|
||||
getAccounts: (type = null, activeOnly = true) => {
|
||||
const params = new URLSearchParams();
|
||||
if (type) params.set('type', type);
|
||||
@@ -125,7 +125,6 @@ const API = {
|
||||
const qs = params.toString();
|
||||
return fetch('/api/accounting/accounts' + (qs ? '?' + qs : '')).then(r => r.json());
|
||||
},
|
||||
syncAccounts: () => fetch('/api/accounting/sync-accounts', { method: 'POST' }).then(r => r.json()),
|
||||
getRegister: (accountId, startDate, endDate) => {
|
||||
const params = new URLSearchParams({ accountId });
|
||||
if (startDate) params.set('startDate', startDate);
|
||||
@@ -139,6 +138,41 @@ const API = {
|
||||
getBalanceSheet: (asOfDate, accountingMethod = 'Accrual') => {
|
||||
const params = new URLSearchParams({ asOfDate, accountingMethod });
|
||||
return fetch('/api/accounting/reports/balance-sheet?' + params.toString()).then(r => r.json());
|
||||
},
|
||||
|
||||
// Phase 2 Lieferung 1 — Sync + Cache-Reads
|
||||
syncAccounts: () => fetch('/api/accounting/sync-accounts', { method: 'POST' }).then(r => r.json()),
|
||||
syncVendors: () => fetch('/api/accounting/sync-vendors', { method: 'POST' }).then(r => r.json()),
|
||||
getSyncStatus: () => fetch('/api/accounting/sync-status').then(r => r.json()),
|
||||
|
||||
getVendors: (search = '', limit = 200) => {
|
||||
const params = new URLSearchParams();
|
||||
if (search) params.set('search', search);
|
||||
if (limit) params.set('limit', String(limit));
|
||||
const qs = params.toString();
|
||||
return fetch('/api/accounting/vendors' + (qs ? '?' + qs : '')).then(r => r.json());
|
||||
},
|
||||
getExpenseAccounts: () => fetch('/api/accounting/expense-accounts').then(r => r.json()),
|
||||
getPaymentAccounts: () => fetch('/api/accounting/payment-accounts').then(r => r.json()),
|
||||
getPaymentMethods: () => fetch('/api/accounting/payment-methods').then(r => r.json()),
|
||||
|
||||
// Phase 2 Lieferung 2 — Mutations + List
|
||||
createVendor: (data) => fetch('/api/accounting/vendors', {
|
||||
method: 'POST',
|
||||
headers: { 'Content-Type': 'application/json' },
|
||||
body: JSON.stringify(data)
|
||||
}).then(r => r.json()),
|
||||
|
||||
createExpense: (data) => fetch('/api/accounting/expenses', {
|
||||
method: 'POST',
|
||||
headers: { 'Content-Type': 'application/json' },
|
||||
body: JSON.stringify(data)
|
||||
}).then(r => r.json()),
|
||||
|
||||
listExpenses: (startDate, endDate, onlyMine = false) => {
|
||||
const params = new URLSearchParams({ startDate, endDate });
|
||||
if (onlyMine) params.set('onlyMine', 'true');
|
||||
return fetch('/api/accounting/expenses?' + params.toString()).then(r => r.json());
|
||||
}
|
||||
},
|
||||
|
||||
|
||||
Reference in New Issue
Block a user