This commit is contained in:
mr
2026-05-28 08:15:02 +02:00
parent 3be023b9af
commit 55c1b70064
7 changed files with 97 additions and 19 deletions
+9 -4
View File
@@ -9,9 +9,10 @@ import (
"time"
"cloud.o-forge.io/core/oc-lib/dbs"
"cloud.o-forge.io/core/oc-lib/models/bill"
"cloud.o-forge.io/core/oc-lib/models/billing"
"cloud.o-forge.io/core/oc-lib/models/booking"
"cloud.o-forge.io/core/oc-lib/models/common/enum"
"cloud.o-forge.io/core/oc-lib/models/common/pricing"
"cloud.o-forge.io/core/oc-lib/models/order"
"cloud.o-forge.io/core/oc-lib/models/resources/purchase_resource"
"cloud.o-forge.io/core/oc-lib/models/utils"
@@ -261,6 +262,7 @@ func GenerateOrder(
ExecutionsID: executionsID,
Purchases: []*purchase_resource.PurchaseResource{},
Bookings: []*booking.Booking{},
Billing: map[pricing.BillingStrategy][]*booking.Booking{},
Status: enum.PENDING,
}
for _, purch := range purchases {
@@ -268,14 +270,17 @@ func GenerateOrder(
scheduling_resources.FromSchedulerObject(tools.PURCHASE_RESOURCE, purch).(*purchase_resource.PurchaseResource))
}
for _, b := range bookings {
newOrder.Bookings = append(newOrder.Bookings,
scheduling_resources.FromSchedulerObject(tools.BOOKING, b).(*booking.Booking))
bk := scheduling_resources.FromSchedulerObject(tools.BOOKING, b).(*booking.Booking)
newOrder.Bookings = append(newOrder.Bookings, bk)
// Groupe les bookings par stratégie de facturation pour permettre
// à DraftFirstBill de savoir quand et comment facturer chaque item.
newOrder.Billing[bk.BillingStrategy] = append(newOrder.Billing[bk.BillingStrategy], bk)
}
res, _, err := order.NewAccessor(request).StoreOne(newOrder)
if err != nil {
return "", err
}
if _, err := bill.DraftFirstBill(res.(*order.Order), request); err != nil {
if _, err := billing.DraftFirstBill(res.(*order.Order), request); err != nil {
return res.GetID(), err
}
return res.GetID(), nil