지능형 비용 관리: Excel 시트 그 이상
다른 사람들과 함께 이벤트를 조직한 사람이라면 누구나 문제를 알고 있습니다. "누가 무엇을 지불했습니까? 내가 누구에게 빚진 금액은 얼마입니까?". ~ 안에 이벤트를 플레이하세요 비용 관리는 단순한 비용 목록이 아닙니다. 시스템이에요 실시간으로 모든 페니를 계산, 분할 및 추적하는 지능형입니다.
이 기사에서 찾을 수 있는 내용
- 4가지 비용 분할 방법(EQUAL, PERCENTAGE, FIXED, CUSTOM)
- 실시간 환율로 다중 통화 지원
- 타임스탬프를 이용한 영수증 추적 및 정산
- 행사비와 별도의 여행비
- Univerjs를 사용한 Excel 내보내기 및 예산 템플릿
4가지 분할 방법: 모두가 올바른 비용을 지불합니다.
비용 시스템의 핵심은 세분화의 유연성입니다. 전부는 아니다 이벤트는 동일하며 모든 비용을 동일하게 나누어서는 안됩니다. 이 때문에 이벤트를 플레이하세요 네 가지 모드를 지원합니다.
EQUAL: 균등 분할
가장 간단한 경우: 전체를 모든 사람에게 균등하게 나누는 것 선정된 참가자. 저녁 식사 비용이 120유로이고 4명이 참가하는 경우, 각각 30유로를 빚지고 있습니다. 시스템이 자동으로 반올림을 관리합니다.
PERCENTAGE: 백분율 구분
기여도가 같지 않고 비례할 때 유용합니다. 예를 들어, 일부는 더 많은 기여를 원하는 집단 선물을 위해. 시스템은 백분율의 합이 정확히 100%인지 확인합니다.
고정: 고정 금액
각 참가자는 미리 정의된 금액을 지불합니다. 이벤트에 적합 비용은 이미 합의되었습니다. "당신은 DJ에게 돈을 지불하고 케이터링 비용은 내가 지불합니다."
CUSTOM: 맞춤형 세분화
가장 유연한 모드: 고정된 양과 비율을 결합할 수 있습니다. 변수. '3명이 균등하게 분할'과 같은 복잡한 시나리오를 처리합니다. 70%, 나머지 30%는 한 사람이 부담합니다."
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;
}
비용 카테고리: Order in Chaos
각 비용은 미리 정의된 범주에 속합니다. 이를 통해 다음을 수행할 수 있습니다. 자세한 보고서를 생성하고 돈이 어디로 가는지 이해하세요.
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
}
카테고리는 분석 대시보드에서도 표시하는 데 사용됩니다. 원형 및 막대 차트를 통한 비용 분배 주최자는 향후 행사를 위해 예산을 최적화합니다.
다중 통화 지원
국제행사나 단체여행의 경우에는 다른 통화. 서비스 ExchangeRateService 응 전환을 다룹니다.
@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;
}
}
변환 작동 방식
- 주최측은 기본 통화 이벤트를 위해
- 지원되는 모든 통화로 비용을 입력할 수 있습니다.
- 시스템은 자동으로 총액의 기준 통화로 변환합니다.
- 환율은 로컬 캐시를 통해 매시간 업데이트됩니다.
- 요약에는 원래 금액과 변환된 금액이 모두 표시됩니다.
정산 추적: 누가 누구에게 무엇을 빚지고 있습니까?
모든 비용을 입력하면 시스템에서 자동으로 비용을 계산합니다. 합의: 계정의 균형을 맞추는 데 필요한 이체입니다. 알고리즘은 필요한 트랜잭션 수를 최소화합니다.
각 정산에는 생성 및 완료 타임스탬프가 포함됩니다. 참가자가 빚을 갚으면 주최자는 결제가 완료되면 시스템에 정확한 날짜와 시간이 기록됩니다.
@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을 통해 영수증이 첨부될 수 있습니다. 사용자는 다음을 수행할 수 있습니다. 영수증이나 송장 사진을 업로드하면 해당 링크가 필드에 저장됩니다. urlReceipt. 이는 투명성의 기본입니다. 각 참가자는 영수증 원본을 참조하여 비용을 확인할 수 있습니다.
여행 비용: 별개의 세계
여행경비(여행경비)은 별도로 관리됩니다. 행사비부터. 고유한 수명 주기와 전용 카테고리가 있습니다. (교통, 숙박, 비자) 여행의 특정 단계와 연결됩니다.
왜 여행경비를 분리해야 하나요?
단체 여행은 이벤트와 지출 역학이 다릅니다. 참가자는 일부 단계에만 참여할 수 있으며 비용은 다양합니다. 목적지별로, 예산은 개별 단계별로 추적되어야 합니다. 두 컨텍스트를 분리하면 혼란이 방지되고 보다 정확한 보고가 가능해집니다.
Excel 요약 및 내보내기 API
백엔드는 집계된 비용 요약을 위한 전용 엔드포인트를 노출합니다. 모든 데이터: 카테고리별 합계, 참가자별 합계, 잔액 각 사람과 보류 중인 합의 목록.
공식적인 보고서가 필요한 사람들을 위해 시스템은 다음을 제공합니다.수출 엑셀 형식으로 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를 사용한 예산 템플릿
가장 인기 있는 기능 중 하나는 스프레드시트 통합. 와의 통합 덕분에 유니버스, 주최자는 브라우저에서 실제 스프레드시트를 사용할 수 있습니다. 예산을 계획하기 위해.
시스템은 다음과 같은 전용 엔터티를 제공합니다. 스프레드시트 시트용 맞춤형 전자 스프레드시트 템플릿 템플릿의 경우 재사용 가능. 주최자는 템플릿에서 시작할 수 있습니다 (예: "결혼식 예산", "팀 구성 예산") 맞춤설정 당신의 이벤트를 위해.
Univerjs 통합의 이점
- 아무것도 설치하지 않고 브라우저에서 스프레드시트를 완성하세요.
- Excel과 같은 수식, 서식 및 차트
- 여러 사용자 간의 실시간 협업
- 다양한 유형의 이벤트에 바로 사용할 수 있는 템플릿
- 이벤트에 연결된 자동 저장
실시간 계산
비용이 추가되거나 변경될 때마다 시스템은 모든 분포를 자동으로 다시 계산합니다. 누를 필요가 없습니다 "업데이트" 또는 "재계산": 잔액이 항상 업데이트됩니다.
이러한 반응적 접근 방식은 사용자 경험의 기본입니다. 주최자는 각 비용이 비용에 미치는 영향을 실시간으로 확인합니다. 전체 예산 및 각 참가자의 부채 상황.
핵심 사항
- 모든 시나리오를 포괄하는 4가지 분할 방법
- 세부 보고서를 위해 사전 정의된 10가지 카테고리
- 캐싱 및 자동 업데이트를 통한 다중 통화 변환
- 각 거래에 대한 타임스탬프를 사용한 정산 추적
- Apache POI를 사용한 전문 Excel 내보내기
- 예산 계획을 위해 Univerjs와 통합된 스프레드시트
- 전담관리를 위한 출장비 별도
프로젝트의 소스 코드는 다음에서 사용할 수 있습니다. GitHub. 전체 시스템을 사용해 보려면 다음 사이트를 방문하세요. www.playtheevent.com.







