Add grouping by outlet_id
This commit is contained in:
@@ -184,6 +184,23 @@ func PurchasingAnalyticsModelToContract(resp *models.PurchasingAnalyticsResponse
|
||||
}
|
||||
}
|
||||
|
||||
outletData := make([]contract.PurchasingOutletData, len(resp.OutletData))
|
||||
for i, item := range resp.OutletData {
|
||||
outletData[i] = contract.PurchasingOutletData{
|
||||
OutletID: item.OutletID,
|
||||
OutletName: item.OutletName,
|
||||
Purchases: item.Purchases,
|
||||
RawMaterialPurchases: item.RawMaterialPurchases,
|
||||
ExpensePurchases: item.ExpensePurchases,
|
||||
PurchaseOrders: item.PurchaseOrders,
|
||||
RawMaterialPurchaseOrders: item.RawMaterialPurchaseOrders,
|
||||
ExpenseCount: item.ExpenseCount,
|
||||
Quantity: item.Quantity,
|
||||
Ingredients: item.Ingredients,
|
||||
Vendors: item.Vendors,
|
||||
}
|
||||
}
|
||||
|
||||
ingredientData := make([]contract.PurchasingIngredientData, len(resp.IngredientData))
|
||||
for i, item := range resp.IngredientData {
|
||||
ingredientData[i] = contract.PurchasingIngredientData{
|
||||
@@ -228,6 +245,7 @@ func PurchasingAnalyticsModelToContract(resp *models.PurchasingAnalyticsResponse
|
||||
TotalVendors: resp.Summary.TotalVendors,
|
||||
},
|
||||
Data: data,
|
||||
OutletData: outletData,
|
||||
IngredientData: ingredientData,
|
||||
VendorData: vendorData,
|
||||
}
|
||||
|
||||
@@ -105,6 +105,40 @@ func TestPurchasingAnalyticsModelToContractOmitsNilOutletName(t *testing.T) {
|
||||
require.NotContains(t, string(payload), "outlet_name")
|
||||
}
|
||||
|
||||
func TestPurchasingAnalyticsModelToContractCopiesOutletData(t *testing.T) {
|
||||
outletID := uuid.New()
|
||||
|
||||
result := PurchasingAnalyticsModelToContract(&models.PurchasingAnalyticsResponse{
|
||||
OrganizationID: uuid.New(),
|
||||
GroupBy: "outlet_id",
|
||||
OutletData: []models.PurchasingOutletData{
|
||||
{
|
||||
OutletID: &outletID,
|
||||
OutletName: "Outlet A",
|
||||
Purchases: 500,
|
||||
RawMaterialPurchases: 350,
|
||||
ExpensePurchases: 150,
|
||||
PurchaseOrders: 4,
|
||||
RawMaterialPurchaseOrders: 3,
|
||||
ExpenseCount: 2,
|
||||
Quantity: 10,
|
||||
Ingredients: 5,
|
||||
Vendors: 2,
|
||||
},
|
||||
},
|
||||
})
|
||||
|
||||
require.NotNil(t, result)
|
||||
require.Equal(t, "outlet_id", result.GroupBy)
|
||||
require.Len(t, result.OutletData, 1)
|
||||
require.Equal(t, &outletID, result.OutletData[0].OutletID)
|
||||
require.Equal(t, "Outlet A", result.OutletData[0].OutletName)
|
||||
require.Equal(t, float64(500), result.OutletData[0].Purchases)
|
||||
require.Equal(t, float64(350), result.OutletData[0].RawMaterialPurchases)
|
||||
require.Equal(t, float64(150), result.OutletData[0].ExpensePurchases)
|
||||
require.Equal(t, int64(4), result.OutletData[0].PurchaseOrders)
|
||||
}
|
||||
|
||||
func TestProfitLossAnalyticsContractToModelParsesDateRange(t *testing.T) {
|
||||
orgID := uuid.New()
|
||||
outletID := uuid.New().String()
|
||||
|
||||
Reference in New Issue
Block a user