update expense coa

This commit is contained in:
2026-06-02 16:32:20 +07:00
parent 47fa21d739
commit 7c8c7fb7db
2 changed files with 150 additions and 48 deletions
@@ -165,3 +165,79 @@ func TestAnalyticsProcessorGetProfitLossAnalyticsMapsOverviewAndReportFields(t *
require.NotEmpty(t, result.MainSummary)
require.Equal(t, "total_omset", result.MainSummary[0].ID)
}
func TestAnalyticsProcessorGetProfitLossAnalyticsDynamicExpenseCategories(t *testing.T) {
now := time.Date(2026, 5, 1, 0, 0, 0, 0, time.UTC)
processor := NewAnalyticsProcessorImpl(analyticsRepositoryStub{
profitLossResult: &entities.ProfitLossAnalytics{
Summary: entities.ProfitLossSummary{
TotalRevenue: 10000,
TotalCost: 4000,
},
TodayRevenue: 10000,
TodayCost: 4000,
MtdRevenue: 20000,
MtdCost: 8000,
TodayExpenseByCategory: []entities.ExpenseCategoryTotal{
{CategoryName: "Gaji", Amount: 1500},
{CategoryName: "Promosi", Amount: 300},
{CategoryName: "Sewa", Amount: 500},
},
MtdExpenseByCategory: []entities.ExpenseCategoryTotal{
{CategoryName: "Gaji", Amount: 3000},
{CategoryName: "Promosi", Amount: 600},
{CategoryName: "Sewa", Amount: 1000},
},
},
}, expenseRepositoryStub{})
result, err := processor.GetProfitLossAnalytics(context.Background(), &models.ProfitLossAnalyticsRequest{
OrganizationID: uuid.New(),
DateFrom: now,
DateTo: now,
})
require.NoError(t, err)
require.NotNil(t, result)
require.Len(t, result.MainSummary, 5)
require.Equal(t, "total_omset", result.MainSummary[0].ID)
require.Equal(t, float64(10000), result.MainSummary[0].TodayNominal)
require.Equal(t, float64(20000), result.MainSummary[0].MtdNominal)
require.Equal(t, "hpp", result.MainSummary[1].ID)
require.Equal(t, float64(4000), result.MainSummary[1].TodayNominal)
require.Equal(t, float64(8000), result.MainSummary[1].MtdNominal)
require.Equal(t, "laba_kotor", result.MainSummary[2].ID)
require.Equal(t, float64(6000), result.MainSummary[2].TodayNominal)
require.Equal(t, float64(12000), result.MainSummary[2].MtdNominal)
require.Equal(t, "biaya_ops", result.MainSummary[3].ID)
require.Equal(t, float64(2300), result.MainSummary[3].TodayNominal)
require.Equal(t, float64(4600), result.MainSummary[3].MtdNominal)
require.Len(t, result.MainSummary[3].SubItems, 4) // 3 categories + 1 total
require.Equal(t, "by_gaji", result.MainSummary[3].SubItems[0].ID)
require.Equal(t, float64(1500), result.MainSummary[3].SubItems[0].TodayNominal)
require.Equal(t, float64(3000), result.MainSummary[3].SubItems[0].MtdNominal)
require.Equal(t, "by_promosi", result.MainSummary[3].SubItems[1].ID)
require.Equal(t, float64(300), result.MainSummary[3].SubItems[1].TodayNominal)
require.Equal(t, float64(600), result.MainSummary[3].SubItems[1].MtdNominal)
require.Equal(t, "by_sewa", result.MainSummary[3].SubItems[2].ID)
require.Equal(t, float64(500), result.MainSummary[3].SubItems[2].TodayNominal)
require.Equal(t, float64(1000), result.MainSummary[3].SubItems[2].MtdNominal)
require.Equal(t, "total_biaya_ops", result.MainSummary[3].SubItems[3].ID)
require.True(t, result.MainSummary[3].SubItems[3].IsBold)
require.Equal(t, float64(2300), result.MainSummary[3].SubItems[3].TodayNominal)
require.Equal(t, float64(4600), result.MainSummary[3].SubItems[3].MtdNominal)
require.Equal(t, "laba_rugi", result.MainSummary[4].ID)
require.Equal(t, float64(3700), result.MainSummary[4].TodayNominal)
require.Equal(t, float64(7400), result.MainSummary[4].MtdNominal)
require.True(t, result.MainSummary[4].IsBold)
}