first
This commit is contained in:
@@ -0,0 +1,26 @@
|
||||
// Package pricing implements quantity-based pricing for products (spec
|
||||
// section 16): a product can have several price tiers, each pairing a
|
||||
// quantity with a unit (from the units module) and a price. Pricing logic
|
||||
// (computing an order line's total from a chosen tier) is centralized here
|
||||
// in the backend -- the frontend only ever displays tiers and sends back a
|
||||
// tier ID + multiplier; it never sends a price the backend has to trust.
|
||||
package pricing
|
||||
|
||||
import (
|
||||
"time"
|
||||
|
||||
"github.com/google/uuid"
|
||||
)
|
||||
|
||||
type PriceTier struct {
|
||||
ID uuid.UUID `gorm:"type:uuid;primaryKey"`
|
||||
ProductID uuid.UUID `gorm:"type:uuid;not null;index"`
|
||||
UnitID uuid.UUID `gorm:"type:uuid;not null"`
|
||||
Quantity float64 `gorm:"not null"`
|
||||
PriceCents int64 `gorm:"not null"`
|
||||
Position int `gorm:"not null;default:0"`
|
||||
CreatedAt time.Time
|
||||
UpdatedAt time.Time
|
||||
}
|
||||
|
||||
func (PriceTier) TableName() string { return "price_tiers" }
|
||||
Reference in New Issue
Block a user