62 lines
2.2 KiB
JavaScript
62 lines
2.2 KiB
JavaScript
import { http } from './http.js';
|
|
|
|
/**
|
|
* Append-only stock and payment ledger.
|
|
* Entry = { id, manifestarticle_id, sku, transaction_type, amount, transaction_text, hash_version, prev_hash, created_at }
|
|
* Input = { manifestarticle_id, transaction_type, amount, transaction_text }
|
|
*/
|
|
export const ledger = {
|
|
/**
|
|
* POST /api/ledger
|
|
* Body: { manifestarticle_id, transaction_type, amount, transaction_text }
|
|
* → 201 { ledger: LedgerEntry }
|
|
*/
|
|
// #region POST /api/ledger — add
|
|
add(body) {
|
|
return http('/api/ledger', { method: 'POST', body });
|
|
},
|
|
// #endregion
|
|
|
|
/**
|
|
* GET /api/ledger/manifestarticle/:manifestarticleId
|
|
* Query: ?transaction_type=...
|
|
* → 200 { ledger: LedgerEntry[] }
|
|
*/
|
|
// #region GET /api/ledger/manifestarticle/:manifestarticleId — listByManifestarticleId
|
|
listByManifestarticleId(manifestarticleId, transactionType) {
|
|
const query = transactionType ? `?transaction_type=${encodeURIComponent(transactionType)}` : '';
|
|
return http(`/api/ledger/manifestarticle/${encodeURIComponent(manifestarticleId)}${query}`);
|
|
},
|
|
// #endregion
|
|
|
|
/**
|
|
* GET /api/ledger/sku/:sku
|
|
* Query: ?transaction_type=...
|
|
* → 200 { ledger: LedgerEntry[] }
|
|
*/
|
|
// #region GET /api/ledger/sku/:sku — listBySku
|
|
listBySku(sku, transactionType) {
|
|
const query = transactionType ? `?transaction_type=${encodeURIComponent(transactionType)}` : '';
|
|
return http(`/api/ledger/sku/${encodeURIComponent(sku)}${query}`);
|
|
},
|
|
// #endregion
|
|
|
|
/**
|
|
* GET /api/ledger
|
|
* Query: { manifestarticle_id?, sku?, transaction_type? }
|
|
* → 200 { ledger: LedgerEntry[] }
|
|
*/
|
|
// #region GET /api/ledger — list
|
|
list(query) {
|
|
const params = new URLSearchParams();
|
|
if (query?.manifestarticle_id != null) params.set('manifestarticle_id', query.manifestarticle_id);
|
|
if (query?.manifestarticleId != null) params.set('manifestarticle_id', query.manifestarticleId);
|
|
if (query?.sku != null) params.set('sku', query.sku);
|
|
if (query?.transaction_type != null) params.set('transaction_type', query.transaction_type);
|
|
if (query?.transactionType != null) params.set('transaction_type', query.transactionType);
|
|
const qs = params.toString();
|
|
return http(`/api/ledger${qs ? `?${qs}` : ''}`);
|
|
},
|
|
// #endregion
|
|
};
|