package service import ( "context" "time" entity "gitlab.com/mbugroup/lti-api.git/internal/entities" ) // PurchaseExpenseBridge defines hooks that allow purchase flows to stay in sync with expense data once it exists. type PurchaseExpenseBridge interface { OnItemsCreated(ctx context.Context, purchaseID uint, items []entity.PurchaseItem) error OnItemsDeleted(ctx context.Context, purchaseID uint, itemIDs []uint) error OnItemsReceived(ctx context.Context, purchaseID uint, updates []ExpenseReceivingPayload) error } // ExpenseReceivingPayload captures the minimum data expense integration will need once available. type ExpenseReceivingPayload struct { PurchaseItemID uint ProductID uint WarehouseID uint ReceivedQty float64 ReceivedDate *time.Time } // noopPurchaseExpenseBridge is the default implementation until the expense module is ready. type noopPurchaseExpenseBridge struct{} func NewNoopPurchaseExpenseBridge() PurchaseExpenseBridge { return &noopPurchaseExpenseBridge{} } func (n *noopPurchaseExpenseBridge) OnItemsCreated(_ context.Context, _ uint, _ []entity.PurchaseItem) error { return nil } func (n *noopPurchaseExpenseBridge) OnItemsDeleted(_ context.Context, _ uint, _ []uint) error { return nil } func (n *noopPurchaseExpenseBridge) OnItemsReceived(_ context.Context, _ uint, _ []ExpenseReceivingPayload) error { return nil }