feat: add per-provider allow_user_refund control and align wildcard matching
allow_user_refund: - Add allow_user_refund field to PaymentProviderInstance ent schema - Migration 103: ALTER TABLE payment_provider_instances ADD COLUMN - Cascade logic: disabling refund_enabled auto-disables allow_user_refund - User refund validation: check provider instance allows user refund - Admin refund validation: check provider instance allows admin refund - Subscription refund: deduct days on refund, rollback on failure - New endpoint: GET /payment/orders/refund-eligible-providers - Frontend: ToggleSwitch in ProviderCard/Dialog, cascade in SettingsView Wildcard matching: - Change findPricingForModel from "longest prefix wins" to "config order priority (first match wins)", aligning with channel service behavior
This commit is contained in:
@@ -132,6 +132,20 @@ func (_c *PaymentProviderInstanceCreate) SetNillableRefundEnabled(v *bool) *Paym
|
||||
return _c
|
||||
}
|
||||
|
||||
// SetAllowUserRefund sets the "allow_user_refund" field.
|
||||
func (_c *PaymentProviderInstanceCreate) SetAllowUserRefund(v bool) *PaymentProviderInstanceCreate {
|
||||
_c.mutation.SetAllowUserRefund(v)
|
||||
return _c
|
||||
}
|
||||
|
||||
// SetNillableAllowUserRefund sets the "allow_user_refund" field if the given value is not nil.
|
||||
func (_c *PaymentProviderInstanceCreate) SetNillableAllowUserRefund(v *bool) *PaymentProviderInstanceCreate {
|
||||
if v != nil {
|
||||
_c.SetAllowUserRefund(*v)
|
||||
}
|
||||
return _c
|
||||
}
|
||||
|
||||
// SetCreatedAt sets the "created_at" field.
|
||||
func (_c *PaymentProviderInstanceCreate) SetCreatedAt(v time.Time) *PaymentProviderInstanceCreate {
|
||||
_c.mutation.SetCreatedAt(v)
|
||||
@@ -223,6 +237,10 @@ func (_c *PaymentProviderInstanceCreate) defaults() {
|
||||
v := paymentproviderinstance.DefaultRefundEnabled
|
||||
_c.mutation.SetRefundEnabled(v)
|
||||
}
|
||||
if _, ok := _c.mutation.AllowUserRefund(); !ok {
|
||||
v := paymentproviderinstance.DefaultAllowUserRefund
|
||||
_c.mutation.SetAllowUserRefund(v)
|
||||
}
|
||||
if _, ok := _c.mutation.CreatedAt(); !ok {
|
||||
v := paymentproviderinstance.DefaultCreatedAt()
|
||||
_c.mutation.SetCreatedAt(v)
|
||||
@@ -282,6 +300,9 @@ func (_c *PaymentProviderInstanceCreate) check() error {
|
||||
if _, ok := _c.mutation.RefundEnabled(); !ok {
|
||||
return &ValidationError{Name: "refund_enabled", err: errors.New(`ent: missing required field "PaymentProviderInstance.refund_enabled"`)}
|
||||
}
|
||||
if _, ok := _c.mutation.AllowUserRefund(); !ok {
|
||||
return &ValidationError{Name: "allow_user_refund", err: errors.New(`ent: missing required field "PaymentProviderInstance.allow_user_refund"`)}
|
||||
}
|
||||
if _, ok := _c.mutation.CreatedAt(); !ok {
|
||||
return &ValidationError{Name: "created_at", err: errors.New(`ent: missing required field "PaymentProviderInstance.created_at"`)}
|
||||
}
|
||||
@@ -351,6 +372,10 @@ func (_c *PaymentProviderInstanceCreate) createSpec() (*PaymentProviderInstance,
|
||||
_spec.SetField(paymentproviderinstance.FieldRefundEnabled, field.TypeBool, value)
|
||||
_node.RefundEnabled = value
|
||||
}
|
||||
if value, ok := _c.mutation.AllowUserRefund(); ok {
|
||||
_spec.SetField(paymentproviderinstance.FieldAllowUserRefund, field.TypeBool, value)
|
||||
_node.AllowUserRefund = value
|
||||
}
|
||||
if value, ok := _c.mutation.CreatedAt(); ok {
|
||||
_spec.SetField(paymentproviderinstance.FieldCreatedAt, field.TypeTime, value)
|
||||
_node.CreatedAt = value
|
||||
@@ -525,6 +550,18 @@ func (u *PaymentProviderInstanceUpsert) UpdateRefundEnabled() *PaymentProviderIn
|
||||
return u
|
||||
}
|
||||
|
||||
// SetAllowUserRefund sets the "allow_user_refund" field.
|
||||
func (u *PaymentProviderInstanceUpsert) SetAllowUserRefund(v bool) *PaymentProviderInstanceUpsert {
|
||||
u.Set(paymentproviderinstance.FieldAllowUserRefund, v)
|
||||
return u
|
||||
}
|
||||
|
||||
// UpdateAllowUserRefund sets the "allow_user_refund" field to the value that was provided on create.
|
||||
func (u *PaymentProviderInstanceUpsert) UpdateAllowUserRefund() *PaymentProviderInstanceUpsert {
|
||||
u.SetExcluded(paymentproviderinstance.FieldAllowUserRefund)
|
||||
return u
|
||||
}
|
||||
|
||||
// SetUpdatedAt sets the "updated_at" field.
|
||||
func (u *PaymentProviderInstanceUpsert) SetUpdatedAt(v time.Time) *PaymentProviderInstanceUpsert {
|
||||
u.Set(paymentproviderinstance.FieldUpdatedAt, v)
|
||||
@@ -715,6 +752,20 @@ func (u *PaymentProviderInstanceUpsertOne) UpdateRefundEnabled() *PaymentProvide
|
||||
})
|
||||
}
|
||||
|
||||
// SetAllowUserRefund sets the "allow_user_refund" field.
|
||||
func (u *PaymentProviderInstanceUpsertOne) SetAllowUserRefund(v bool) *PaymentProviderInstanceUpsertOne {
|
||||
return u.Update(func(s *PaymentProviderInstanceUpsert) {
|
||||
s.SetAllowUserRefund(v)
|
||||
})
|
||||
}
|
||||
|
||||
// UpdateAllowUserRefund sets the "allow_user_refund" field to the value that was provided on create.
|
||||
func (u *PaymentProviderInstanceUpsertOne) UpdateAllowUserRefund() *PaymentProviderInstanceUpsertOne {
|
||||
return u.Update(func(s *PaymentProviderInstanceUpsert) {
|
||||
s.UpdateAllowUserRefund()
|
||||
})
|
||||
}
|
||||
|
||||
// SetUpdatedAt sets the "updated_at" field.
|
||||
func (u *PaymentProviderInstanceUpsertOne) SetUpdatedAt(v time.Time) *PaymentProviderInstanceUpsertOne {
|
||||
return u.Update(func(s *PaymentProviderInstanceUpsert) {
|
||||
@@ -1073,6 +1124,20 @@ func (u *PaymentProviderInstanceUpsertBulk) UpdateRefundEnabled() *PaymentProvid
|
||||
})
|
||||
}
|
||||
|
||||
// SetAllowUserRefund sets the "allow_user_refund" field.
|
||||
func (u *PaymentProviderInstanceUpsertBulk) SetAllowUserRefund(v bool) *PaymentProviderInstanceUpsertBulk {
|
||||
return u.Update(func(s *PaymentProviderInstanceUpsert) {
|
||||
s.SetAllowUserRefund(v)
|
||||
})
|
||||
}
|
||||
|
||||
// UpdateAllowUserRefund sets the "allow_user_refund" field to the value that was provided on create.
|
||||
func (u *PaymentProviderInstanceUpsertBulk) UpdateAllowUserRefund() *PaymentProviderInstanceUpsertBulk {
|
||||
return u.Update(func(s *PaymentProviderInstanceUpsert) {
|
||||
s.UpdateAllowUserRefund()
|
||||
})
|
||||
}
|
||||
|
||||
// SetUpdatedAt sets the "updated_at" field.
|
||||
func (u *PaymentProviderInstanceUpsertBulk) SetUpdatedAt(v time.Time) *PaymentProviderInstanceUpsertBulk {
|
||||
return u.Update(func(s *PaymentProviderInstanceUpsert) {
|
||||
|
||||
Reference in New Issue
Block a user