インテリジェントな経費管理: Excel シートを超えて
他の人と一緒にイベントを企画したことのある人なら誰でも、次の問題を知っています。 「誰が何を払ったのか?誰にいくら借りているのか?」。で イベントをプレイする 経費管理は単純なコストのリストではありません。それはシステムです リアルタイムであらゆるペニーを計算、分割、追跡するインテリジェントなシステムです。
この記事でわかること
- 4つの経費分割方法(均等、割合、固定、カスタム)
- リアルタイム為替レートによる複数通貨のサポート
- タイムスタンプによる受領追跡と決済
- イベント費用とは別の旅費
- Univerjs を使用した Excel エクスポートと予算テンプレート
4 つの分割方法: 誰もが正しいものを支払う
経費システムの核心は、細分化の柔軟性です。全部ではない イベントは同じであり、すべての費用を均等に分割する必要はありません。 このため イベントをプレイする は 4 つの異なるモードをサポートします。
EQUAL: 均等分割
最も単純なケース: 合計が全員に均等に分割されます。 選ばれた参加者たち。ディナー120ユーロで4人参加の場合、 それぞれ30ユーロの借金があります。システムは丸めを自動的に管理します。
PERCENTAGE: パーセンテージの除算
寄与が等しくなく、比例している場合に便利です。たとえば、 もっと貢献したい人がいる集団的な贈り物に。 システムは、パーセンテージの合計が正確に 100% になることを検証します。
FIXED: 固定金額
各参加者は事前に定義された金額を支払います。イベントに最適です。 費用についてはすでに合意されています。「あなたはDJに支払い、私はケータリングを支払います。」
CUSTOM: パーソナライズされた細分化
最も柔軟なモード: 固定量と比率を組み合わせることができます 変数。 「3 人が均等に分割される」などの複雑なシナリオを処理します。 70%、残りの 30% を 1 人が支払います。」
public enum TipoSuddivisione {
EQUAL, // Divisione equa tra partecipanti
PERCENTAGE, // Suddivisione per percentuale
FIXED, // Importi fissi per persona
CUSTOM // Combinazione personalizzata
}
// Entità Spesa (semplificata)
@Entity
public class Spesa {
private Long id;
private String descrizione;
private BigDecimal importo;
private String valuta; // EUR, USD, GBP...
private CategoriaSpesa categoria;
private TipoSuddivisione tipoSuddivisione;
private LocalDateTime dataCreazione;
private String urlRicevuta; // Link alla ricevuta
private Long eventoId;
private Long creatoDaUtenteId;
private List<RipartizionePartecipante> ripartizioni;
}
経費カテゴリ: 混沌とした秩序
各経費は、事前定義されたカテゴリに属します。これにより、次のことが可能になります 詳細なレポートを作成し、お金がどこに使われているかを理解します。
public enum CategoriaSpesa {
FOOD, // Cibo e bevande
TRANSPORT, // Trasporti
ACCOMMODATION, // Alloggio
ENTERTAINMENT, // Intrattenimento
DECORATION, // Decorazioni
EQUIPMENT, // Attrezzature
VENUE, // Affitto location
STAFF, // Personale
MARKETING, // Promozione
OTHER // Altro
}
カテゴリは分析ダッシュボードでも表示するために使用されます。 円グラフと棒グラフによるコスト分布。 主催者は将来のイベントの予算を最適化できます。
複数通貨のサポート
国際的なイベントやグループ旅行の場合、費用がかかる場合があります。 異なる通貨。サービス 為替レートサービス はい 変換を扱います。
@Service
public class ExchangeRateService {
// Cache dei tassi con TTL di 1 ora
private final Map<String, CachedRate> rateCache;
public BigDecimal convert(BigDecimal amount,
String fromCurrency,
String toCurrency) {
if (fromCurrency.equals(toCurrency)) {
return amount;
}
BigDecimal rate = getExchangeRate(fromCurrency, toCurrency);
return amount.multiply(rate)
.setScale(2, RoundingMode.HALF_UP);
}
// Recupera tasso da API esterna con fallback su cache
private BigDecimal getExchangeRate(String from, String to) {
String key = from + "_" + to;
CachedRate cached = rateCache.get(key);
if (cached != null && !cached.isExpired()) {
return cached.getRate();
}
// Chiamata API esterna per tasso aggiornato
BigDecimal freshRate = fetchFromExternalApi(from, to);
rateCache.put(key, new CachedRate(freshRate));
return freshRate;
}
}
変換の仕組み
- 主催者が設定するのは、 基本通貨 イベントに向けて
- 経費はサポートされている通貨で入力できます
- システムは合計を基本通貨に自動的に換算します。
- 為替レートはローカル キャッシュを使用して 1 時間ごとに更新されます
- 概要には元の金額と換算された金額の両方が表示されます
決済追跡: 誰が誰に何を負っているのか
すべての経費を入力すると、システムが自動的に経費を計算します。 決済: 口座の残高を均衡させるために必要な送金。 このアルゴリズムにより、必要なトランザクションの数が最小限に抑えられます。
各決済には、作成および完了のタイムスタンプが含まれます。 参加者が借金を完済すると、主催者は 支払いが完了すると、システムは正確な日時を記録します。
@Entity
public class RipartizionePartecipante {
private Long id;
private Long partecipanteId;
private Long spesaId;
private BigDecimal importoDovuto;
private BigDecimal importoPagato;
private Boolean saldato;
private LocalDateTime dataSaldamento;
private String note;
}
領収書と書類
各経費には URL 経由で領収書を添付できます。ユーザーは次のことができます 領収書または請求書の写真をアップロードすると、リンクがフィールドに保存されます URL領収書。これは透明性の基本です。 各参加者は領収書の原本を参照して経費を確認できます。
旅費: 別世界
旅費(旅費) は個別に管理されます イベント費用から。独自のライフサイクルと専用のカテゴリがあります (交通機関、宿泊施設、ビザ) は旅の特定の段階に関連付けられています。
なぜ旅費を別にするのか?
グループ旅行には、イベントとは異なる支出動向があります。 参加者は一部のステージのみ参加可能、費用は異なります 目的地ごとに予算を追跡し、個別の段階ごとに予算を追跡する必要があります。 2 つのコンテキストを分離することで混乱が回避され、より正確なレポートが可能になります。
Excel の概要とエクスポート API
バックエンドは、集約した経費概要用の専用エンドポイントを公開します。 すべてのデータ: カテゴリごとの合計、参加者ごとの合計、残高 各人物と保留中の和解のリスト。
正式なレポートが必要な場合は、システムが提供します。輸出 Excel形式で Apache POI で生成されました。ファイルにはシートが含まれています 概要、カテゴリ別の詳細、および 各参加者の借金状況。
GET /api/eventi/{eventoId}/spese/riepilogo
Response:
{
"totaleEvento": 1250.00,
"valuta": "EUR",
"numeroSpese": 15,
"perCategoria": {
"FOOD": 450.00,
"VENUE": 500.00,
"ENTERTAINMENT": 200.00,
"DECORATION": 100.00
},
"perPartecipante": [ ... ],
"settlementPendenti": [ ... ]
}
GET /api/eventi/{eventoId}/spese/export/excel
Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet
Univerjs の予算テンプレート
最も人気のある機能の 1 つは、 スプレッドシート 統合された。との統合のおかげで、 大学、 主催者はブラウザで利用できる実際のスプレッドシートを持っています 予算を計画するために。
システムは専用のエンティティを提供します。 スプレッドシート シーツ用 パーソナライズされた電子 スプレッドシートのテンプレート テンプレート用 再利用可能。主催者はテンプレートから開始できる (例: 「結婚式の予算」、「チームビルディングの予算」) をカスタマイズします。 あなたのイベントのために。
Univerjs統合のメリット
- 何もインストールせずにブラウザでスプレッドシートを完成させます
- Excel のような数式、書式設定、グラフ
- 複数のユーザー間のリアルタイムのコラボレーション
- さまざまな種類のイベントにすぐに使用できるテンプレート
- イベントに連動した自動保存
リアルタイム計算
経費が追加または変更されるたびに、システムは すべての分布を自動的に再計算します。押す必要はありません 「更新」または「再計算」: 残高は常に更新されます。
この反応的なアプローチは、ユーザー エクスペリエンスの基本です。 主催者は、各経費がイベントに与える影響をリアルタイムで確認できます。 全体の予算と各参加者の負債状況。
重要なポイント
- あらゆるシナリオに対応する 4 つの分割方法
- 詳細レポート用の 10 個の定義済みカテゴリ
- キャッシュと自動更新による複数通貨換算
- 各取引のタイムスタンプによる決済追跡
- Apache POI を使用したプロフェッショナルな Excel エクスポート
- 予算計画のために Univerjs と統合されたスプレッドシート
- 専任管理のための旅費別途
プロジェクトのソースコードは次の場所から入手できます。 GitHub。 完全なシステムを試すには、次のサイトにアクセスしてください。 www.playtheevent.com.







