package constants // Loyalty setting keys (docs/prd-point-coin.md F1, F2, F12). Outlet keys live in // outlet_settings and organization keys in organization_settings. A key that was // never set takes the default in the PRD. // Per outlet (F1): what an order earns. const ( LoyaltyPointEnabledKey = "loyalty.point.enabled" LoyaltyPointEarnModeKey = "loyalty.point.earn_mode" LoyaltyPointEarnPercentKey = "loyalty.point.earn_percent" LoyaltyPointEarnPerAmountKey = "loyalty.point.earn_per_amount" LoyaltyPointEarnValueKey = "loyalty.point.earn_value" LoyaltyPointMinOrderAmountKey = "loyalty.point.min_order_amount" LoyaltyPointMaxPerOrderKey = "loyalty.point.max_per_order" LoyaltyCoinEnabledKey = "loyalty.coin.enabled" LoyaltyCoinEarnModeKey = "loyalty.coin.earn_mode" LoyaltyCoinEarnPercentKey = "loyalty.coin.earn_percent" LoyaltyCoinEarnPerAmountKey = "loyalty.coin.earn_per_amount" LoyaltyCoinEarnValueKey = "loyalty.coin.earn_value" LoyaltyCoinMinOrderAmountKey = "loyalty.coin.min_order_amount" LoyaltyCoinMaxPerOrderKey = "loyalty.coin.max_per_order" ) // Per organization (F2, F12): the value of EnakPoint, the exchange rate, transfers and // expiry, which must be the same in every outlet. const ( LoyaltyPointValueKey = "loyalty.point.value" LoyaltyExchangeCoinAmountKey = "loyalty.exchange.coin_amount" LoyaltyExchangePointAmountKey = "loyalty.exchange.point_amount" LoyaltyTransferEnabledKey = "loyalty.transfer.enabled" LoyaltyTransferMinAmountKey = "loyalty.transfer.min_amount" LoyaltyTransferMaxPerTransactionKey = "loyalty.transfer.max_per_transaction" LoyaltyTransferDailyLimitKey = "loyalty.transfer.daily_limit" // Suffixes after "loyalty.point." or "loyalty.coin.". LoyaltyExpiryEnabledSuffix = "expiry_enabled" LoyaltyExpiryPeriodSuffix = "expiry_period" LoyaltyExpiryUnitSuffix = "expiry_unit" LoyaltyExpiryEndOfMonthSuffix = "expiry_end_of_month" LoyaltyExpiryReminderDaysSuffix = "expiry_reminder_days" LoyaltyExpiryModeSuffix = "expiry_mode" LoyaltyExpiryFixedDatesSuffix = "expiry_fixed_dates" LoyaltyExpiryGraceMonthsSuffix = "expiry_grace_months" ) // Modes of loyalty.{point,coin}.earn_mode. const ( // earn_value for every earn_per_amount rupiah of the basis. LoyaltyEarnModePerAmount = "PER_AMOUNT" // earn_percent percent of the basis. LoyaltyEarnModePercentage = "PERCENTAGE" ) // Units of loyalty.{point,coin}.expiry_unit. const ( LoyaltyExpiryUnitDay = "DAY" LoyaltyExpiryUnitMonth = "MONTH" ) // Modes of loyalty.{point,coin}.expiry_mode (note N4, decided: both are supported). const ( // Every balance expires on the same fixed dates of the year, such as 31 Dec. LoyaltyExpiryModeFixedDate = "FIXED_DATE" // Every balance lasts a period from when it was received. LoyaltyExpiryModeRolling = "ROLLING" ) // Defaults from the PRD. const ( LoyaltyPointEarnPerAmountDefault = int64(100) LoyaltyCoinEarnPerAmountDefault = int64(25000) LoyaltyEarnValueDefault = int64(1) LoyaltyEarnModeDefault = LoyaltyEarnModePerAmount LoyaltyEarnPercentDefault = float64(1) LoyaltyPointValueDefault = int64(1) LoyaltyExchangeAmountDefault = int64(1) LoyaltyTransferEnabledDefault = true LoyaltyTransferMinAmountDefault = int64(1) LoyaltyExpiryPeriodDefault = int64(12) LoyaltyExpiryUnitDefault = LoyaltyExpiryUnitMonth LoyaltyExpiryReminderDaysDefault = int64(7) LoyaltyExpiryModeDefault = LoyaltyExpiryModeFixedDate // Once a year on 31 December, as MM-DD. LoyaltyExpiryFixedDatesDefault = "12-31" LoyaltyExpiryGraceMonthsDefault = int64(3) )