@bash-app/bash-common 30.423.0 → 30.425.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/__tests__/agePolicy.test.js +6 -6
- package/dist/__tests__/agePolicy.test.js.map +1 -1
- package/dist/__tests__/bashEventCancellationPolicy.test.js +2 -2
- package/dist/__tests__/bashEventCancellationPolicy.test.js.map +1 -1
- package/dist/__tests__/bashSectionTitleForBashType.test.js +3 -3
- package/dist/__tests__/definitionsHelpers.test.js +1 -1
- package/dist/__tests__/definitionsHelpers.test.js.map +1 -1
- package/dist/__tests__/entertainmentNotableVenues.test.js +1 -1
- package/dist/__tests__/entertainmentNotableVenues.test.js.map +1 -1
- package/dist/__tests__/hostCrmCrowdPulse.test.js +1 -1
- package/dist/__tests__/hostCrmSegments.test.js +2 -2
- package/dist/__tests__/hostCrmSegments.test.js.map +1 -1
- package/dist/__tests__/hostPromoter.test.js +1 -1
- package/dist/__tests__/influencerAudience.test.js +1 -1
- package/dist/__tests__/influencerAudience.test.js.map +1 -1
- package/dist/__tests__/promoterCompetitionUtils.test.js +3 -3
- package/dist/__tests__/promoterCompetitionUtils.test.js.map +1 -1
- package/dist/__tests__/scenePulse.test.js +1 -1
- package/dist/__tests__/seatMap.test.js +1 -1
- package/dist/__tests__/seatMap.test.js.map +1 -1
- package/dist/__tests__/ticketAdmission.test.d.ts +1 -1
- package/dist/__tests__/ticketAdmission.test.js +1 -1
- package/dist/accessScreening.js +1 -1
- package/dist/aiApproval.d.ts +3 -3
- package/dist/aiApproval.js +3 -3
- package/dist/appleIapProducts.d.ts +1 -1
- package/dist/appleIapProducts.d.ts.map +1 -1
- package/dist/appleIapProducts.js +1 -1
- package/dist/appleIapProducts.js.map +1 -1
- package/dist/applicationFunnel.d.ts +1 -1
- package/dist/applicationFunnel.js +1 -1
- package/dist/audienceImport.d.ts +2 -2
- package/dist/audienceImport.d.ts.map +1 -1
- package/dist/audienceImport.js +2 -2
- package/dist/audienceImport.js.map +1 -1
- package/dist/bashEventCancellationPolicy.js +3 -3
- package/dist/bashEventCancellationPolicy.js.map +1 -1
- package/dist/budgetApproval.d.ts +1 -1
- package/dist/budgetApproval.js +1 -1
- package/dist/causeTags.js +4 -4
- package/dist/causeTags.js.map +1 -1
- package/dist/competitionIdeas.js +12 -12
- package/dist/competitionIdeas.js.map +1 -1
- package/dist/competitionValidation.d.ts +1 -1
- package/dist/competitionValidation.d.ts.map +1 -1
- package/dist/competitionValidation.js +1 -1
- package/dist/competitionValidation.js.map +1 -1
- package/dist/definitions.d.ts +35 -35
- package/dist/definitions.d.ts.map +1 -1
- package/dist/definitions.js +30 -30
- package/dist/definitions.js.map +1 -1
- package/dist/discoveryScope.d.ts +2 -2
- package/dist/discoveryScope.js +2 -2
- package/dist/entertainmentNotableVenues.js +1 -1
- package/dist/entertainmentNotableVenues.js.map +1 -1
- package/dist/extendedSchemas.d.ts +150 -150
- package/dist/extendedSchemas.d.ts.map +1 -1
- package/dist/extendedSchemas.js +11 -11
- package/dist/extendedSchemas.js.map +1 -1
- package/dist/fundingMeter.d.ts +1 -1
- package/dist/fundingMeter.js +1 -1
- package/dist/giveaway.d.ts +2 -2
- package/dist/giveaway.d.ts.map +1 -1
- package/dist/giveaway.js +2 -2
- package/dist/giveaway.js.map +1 -1
- package/dist/guestPartySize.js +3 -3
- package/dist/guestPartySize.js.map +1 -1
- package/dist/home.d.ts +1 -1
- package/dist/homepageSyntheticRows.d.ts +4 -4
- package/dist/homepageSyntheticRows.d.ts.map +1 -1
- package/dist/homepageSyntheticRows.js +3 -4
- package/dist/homepageSyntheticRows.js.map +1 -1
- package/dist/hostCrmAutomation.d.ts +11 -11
- package/dist/hostCrmAutomation.d.ts.map +1 -1
- package/dist/hostCrmAutomation.js +9 -9
- package/dist/hostCrmAutomation.js.map +1 -1
- package/dist/hostCrmConstants.d.ts +1 -1
- package/dist/hostCrmConstants.d.ts.map +1 -1
- package/dist/hostCrmConstants.js +1 -1
- package/dist/hostCrmConstants.js.map +1 -1
- package/dist/hostCrmCrowdPulse.d.ts +2 -2
- package/dist/hostCrmCrowdPulse.d.ts.map +1 -1
- package/dist/hostCrmCrowdPulse.js +1 -1
- package/dist/hostCrmInsights.d.ts +3 -3
- package/dist/hostCrmLastBashProof.d.ts +2 -2
- package/dist/hostCrmLastBashProof.d.ts.map +1 -1
- package/dist/hostCrmLastBashProof.js +1 -1
- package/dist/hostCrmSegments.d.ts +10 -10
- package/dist/hostCrmSegments.d.ts.map +1 -1
- package/dist/hostCrmSegments.js +2 -2
- package/dist/hostCrmSegments.js.map +1 -1
- package/dist/hostPromoter.d.ts +1 -1
- package/dist/hostPromoter.d.ts.map +1 -1
- package/dist/hostPromoter.js +1 -1
- package/dist/hostPromoter.js.map +1 -1
- package/dist/icebreakerPrompts.js +2 -2
- package/dist/icebreakerPrompts.js.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/influencerAudience.js +3 -3
- package/dist/influencerAudience.js.map +1 -1
- package/dist/liveActivity/liveActivityTypes.d.ts +10 -10
- package/dist/liveActivity/liveActivityTypes.d.ts.map +1 -1
- package/dist/liveActivity/liveActivityTypes.js +2 -2
- package/dist/liveActivity/liveActivityTypes.js.map +1 -1
- package/dist/locationShare.d.ts +2 -2
- package/dist/locationShare.d.ts.map +1 -1
- package/dist/locationShare.js +2 -2
- package/dist/locationShare.js.map +1 -1
- package/dist/membershipDefinitions.d.ts +5 -5
- package/dist/membershipDefinitions.d.ts.map +1 -1
- package/dist/membershipDefinitions.js +21 -21
- package/dist/membershipDefinitions.js.map +1 -1
- package/dist/mirroredPrismaEnums.d.ts +6 -6
- package/dist/mirroredPrismaEnums.js +6 -6
- package/dist/onSaleCapabilityRecommendations.d.ts +1 -1
- package/dist/onSaleCapabilityRecommendations.js +1 -1
- package/dist/partnerStoreTypes.d.ts +1 -1
- package/dist/partnerStoreTypes.d.ts.map +1 -1
- package/dist/productLaunch.d.ts +2 -2
- package/dist/productLaunch.d.ts.map +1 -1
- package/dist/productLaunch.js +2 -2
- package/dist/productLaunch.js.map +1 -1
- package/dist/relationshipHealth.d.ts +3 -3
- package/dist/relationshipHealth.d.ts.map +1 -1
- package/dist/relationshipHealth.js +3 -3
- package/dist/relationshipHealth.js.map +1 -1
- package/dist/scenePulse.d.ts +2 -2
- package/dist/scenePulse.js +1 -1
- package/dist/seatMap.d.ts +1 -1
- package/dist/seatMap.d.ts.map +1 -1
- package/dist/seatMap.js +2 -2
- package/dist/seatMap.js.map +1 -1
- package/dist/seatMapBestAvailable.js +2 -2
- package/dist/seatMapBestAvailable.js.map +1 -1
- package/dist/serviceTypeLabels.d.ts +3 -3
- package/dist/serviceTypeLabels.js +3 -3
- package/dist/sideQuestIdeas.js +8 -8
- package/dist/sideQuestIdeas.js.map +1 -1
- package/dist/sideQuestTypes.js +2 -2
- package/dist/sideQuestTypes.js.map +1 -1
- package/dist/sms/smsTemplates.d.ts +1 -1
- package/dist/sms/smsTemplates.js +1 -1
- package/dist/stripeListingSubscriptionMessages.d.ts +1 -1
- package/dist/stripeListingSubscriptionMessages.js +1 -1
- package/dist/targetAudienceLabels.d.ts +1 -1
- package/dist/targetAudienceLabels.js +1 -1
- package/dist/ticketBnplPaymentMethods.d.ts +3 -3
- package/dist/ticketBnplPaymentMethods.d.ts.map +1 -1
- package/dist/ticketBnplPaymentMethods.js +2 -2
- package/dist/userReportTypes.d.ts +1 -1
- package/dist/userReportTypes.d.ts.map +1 -1
- package/dist/userReportTypes.js +1 -1
- package/dist/userReportTypes.js.map +1 -1
- package/dist/userTaste.d.ts +2 -2
- package/dist/userTaste.d.ts.map +1 -1
- package/dist/userTaste.js +2 -2
- package/dist/userTaste.js.map +1 -1
- package/dist/utils/__tests__/badgeUtils.test.js +5 -5
- package/dist/utils/__tests__/badgeUtils.test.js.map +1 -1
- package/dist/utils/__tests__/bashPointsPaymentUtils.test.js +4 -4
- package/dist/utils/__tests__/bashPointsPaymentUtils.test.js.map +1 -1
- package/dist/utils/__tests__/contentFilterUtils.test.js +23 -23
- package/dist/utils/__tests__/contentFilterUtils.test.js.map +1 -1
- package/dist/utils/__tests__/dateTimeUtils.test.js +1 -1
- package/dist/utils/__tests__/displayDateUtils.test.js +1 -1
- package/dist/utils/__tests__/flyerUtils.test.js +1 -1
- package/dist/utils/__tests__/flyerUtils.test.js.map +1 -1
- package/dist/utils/__tests__/getBackendHost.test.js +8 -8
- package/dist/utils/__tests__/getBackendHost.test.js.map +1 -1
- package/dist/utils/__tests__/getFrontendHost.native.test.js +1 -1
- package/dist/utils/__tests__/getFrontendHost.native.test.js.map +1 -1
- package/dist/utils/__tests__/getFrontendHost.test.js +9 -9
- package/dist/utils/__tests__/getFrontendHost.test.js.map +1 -1
- package/dist/utils/__tests__/organizationEntitlements.test.js +1 -1
- package/dist/utils/__tests__/organizationEntitlements.test.js.map +1 -1
- package/dist/utils/__tests__/paymentUtils.test.js +7 -7
- package/dist/utils/__tests__/paymentUtils.test.js.map +1 -1
- package/dist/utils/__tests__/promoCodesUtils.test.js +2 -2
- package/dist/utils/__tests__/promoCodesUtils.test.js.map +1 -1
- package/dist/utils/__tests__/qrCodeUtils.test.js +4 -4
- package/dist/utils/__tests__/qrCodeUtils.test.js.map +1 -1
- package/dist/utils/__tests__/reviewDimensionUtils.test.js +1 -1
- package/dist/utils/__tests__/reviewDimensionUtils.test.js.map +1 -1
- package/dist/utils/__tests__/stripeAccountUtils.test.js +1 -1
- package/dist/utils/__tests__/ticketPrintPostageUtils.test.js +1 -1
- package/dist/utils/__tests__/ticketPrintPostageUtils.test.js.map +1 -1
- package/dist/utils/addressUtils.js +1 -1
- package/dist/utils/addressUtils.js.map +1 -1
- package/dist/utils/apiUtils.js +1 -1
- package/dist/utils/apiUtils.js.map +1 -1
- package/dist/utils/birthdayExperienceQuality.d.ts +1 -1
- package/dist/utils/birthdayExperienceQuality.js +4 -4
- package/dist/utils/birthdayExperienceQuality.js.map +1 -1
- package/dist/utils/blogUtils.d.ts +1 -1
- package/dist/utils/blogUtils.d.ts.map +1 -1
- package/dist/utils/blogUtils.js +2 -2
- package/dist/utils/blogUtils.js.map +1 -1
- package/dist/utils/discountEngine/discountCalculator.js +1 -1
- package/dist/utils/discountEngine/discountCalculator.js.map +1 -1
- package/dist/utils/displayDateUtils.d.ts +2 -2
- package/dist/utils/displayDateUtils.d.ts.map +1 -1
- package/dist/utils/displayDateUtils.js +2 -2
- package/dist/utils/displayDateUtils.js.map +1 -1
- package/dist/utils/entertainmentDrawFit.d.ts +1 -1
- package/dist/utils/entertainmentDrawFit.js +1 -1
- package/dist/utils/eventTimezoneIana.d.ts +1 -1
- package/dist/utils/eventTimezoneIana.js +4 -4
- package/dist/utils/eventTimezoneIana.js.map +1 -1
- package/dist/utils/flyerUtils.d.ts +2 -2
- package/dist/utils/flyerUtils.d.ts.map +1 -1
- package/dist/utils/flyerUtils.js +3 -3
- package/dist/utils/flyerUtils.js.map +1 -1
- package/dist/utils/groupTicketCartUtils.js +1 -1
- package/dist/utils/groupTicketCartUtils.js.map +1 -1
- package/dist/utils/guestSurface.d.ts +2 -2
- package/dist/utils/guestSurface.d.ts.map +1 -1
- package/dist/utils/guestSurface.js +4 -4
- package/dist/utils/guestSurface.js.map +1 -1
- package/dist/utils/lobFlyerUtils.d.ts +2 -2
- package/dist/utils/lobFlyerUtils.js +2 -2
- package/dist/utils/luxonUtils.d.ts +4 -4
- package/dist/utils/luxonUtils.js +5 -5
- package/dist/utils/luxonUtils.js.map +1 -1
- package/dist/utils/moodTrackUtils.d.ts +1 -1
- package/dist/utils/moodTrackUtils.js +1 -1
- package/dist/utils/nonprofitUtils.d.ts +3 -3
- package/dist/utils/nonprofitUtils.js +2 -2
- package/dist/utils/orgPromotionalPackageUtils.d.ts +1 -1
- package/dist/utils/orgPromotionalPackageUtils.js +1 -1
- package/dist/utils/organizationEntitlements.d.ts +4 -4
- package/dist/utils/organizationEntitlements.js +3 -3
- package/dist/utils/paymentUtils.d.ts +10 -10
- package/dist/utils/paymentUtils.js +9 -9
- package/dist/utils/promoterCompetitionUtils.d.ts +4 -4
- package/dist/utils/promoterCompetitionUtils.d.ts.map +1 -1
- package/dist/utils/promoterCompetitionUtils.js +7 -7
- package/dist/utils/promoterCompetitionUtils.js.map +1 -1
- package/dist/utils/promotionBlastUtils.d.ts +1 -1
- package/dist/utils/promotionBlastUtils.js +4 -4
- package/dist/utils/promotionBlastUtils.js.map +1 -1
- package/dist/utils/qrCodeUtils.d.ts +3 -3
- package/dist/utils/qrCodeUtils.d.ts.map +1 -1
- package/dist/utils/qrCodeUtils.js +3 -3
- package/dist/utils/qrCodeUtils.js.map +1 -1
- package/dist/utils/recurrenceUtils.d.ts +1 -1
- package/dist/utils/recurrenceUtils.js +1 -1
- package/dist/utils/reputationUtils.d.ts +2 -2
- package/dist/utils/reputationUtils.d.ts.map +1 -1
- package/dist/utils/reputationUtils.js +1 -1
- package/dist/utils/reputationUtils.js.map +1 -1
- package/dist/utils/reviewDimensionUtils.d.ts +2 -2
- package/dist/utils/reviewDimensionUtils.d.ts.map +1 -1
- package/dist/utils/reviewDimensionUtils.js +1 -1
- package/dist/utils/reviewDimensionUtils.js.map +1 -1
- package/dist/utils/service/__tests__/billingCapUtils.test.js +3 -3
- package/dist/utils/service/__tests__/billingCapUtils.test.js.map +1 -1
- package/dist/utils/service/__tests__/eventPromoterPhase3.test.js +1 -1
- package/dist/utils/service/__tests__/eventPromoterUtils.test.js +1 -1
- package/dist/utils/service/__tests__/eventPromoterUtils.test.js.map +1 -1
- package/dist/utils/service/__tests__/frontendServiceBookingUtils.test.js +2 -2
- package/dist/utils/service/__tests__/frontendServiceBookingUtils.test.js.map +1 -1
- package/dist/utils/service/__tests__/serviceBookingExposureUtils.test.js +1 -1
- package/dist/utils/service/__tests__/serviceBookingExposureUtils.test.js.map +1 -1
- package/dist/utils/service/__tests__/serviceBookingStatusUtils.test.js +2 -2
- package/dist/utils/service/__tests__/serviceBookingStatusUtils.test.js.map +1 -1
- package/dist/utils/service/__tests__/serviceRateUtils.test.js +6 -6
- package/dist/utils/service/__tests__/serviceRateUtils.test.js.map +1 -1
- package/dist/utils/service/apiServiceBookingApiUtils.js +1 -1
- package/dist/utils/service/apiServiceBookingApiUtils.js.map +1 -1
- package/dist/utils/service/billingCapUtils.d.ts +5 -5
- package/dist/utils/service/billingCapUtils.js +5 -5
- package/dist/utils/service/cancellationPolicyRefundResolver.d.ts +1 -1
- package/dist/utils/service/cancellationPolicyRefundResolver.d.ts.map +1 -1
- package/dist/utils/service/eventPromoterUtils.d.ts +17 -17
- package/dist/utils/service/eventPromoterUtils.d.ts.map +1 -1
- package/dist/utils/service/eventPromoterUtils.js +11 -11
- package/dist/utils/service/eventPromoterUtils.js.map +1 -1
- package/dist/utils/service/foodAndBeverageQuote.d.ts +8 -8
- package/dist/utils/service/foodAndBeverageQuote.js +8 -8
- package/dist/utils/service/offerAllowListUtils.d.ts +1 -1
- package/dist/utils/service/offerComparisonUtils.d.ts +6 -6
- package/dist/utils/service/offerComparisonUtils.js +2 -2
- package/dist/utils/service/offerComparisonUtils.js.map +1 -1
- package/dist/utils/service/serviceBookingExposureUtils.d.ts +7 -7
- package/dist/utils/service/serviceBookingExposureUtils.js +5 -5
- package/dist/utils/service/serviceBookingExposureUtils.js.map +1 -1
- package/dist/utils/service/serviceFeaturedSortUtils.js +2 -2
- package/dist/utils/service/serviceFeaturedSortUtils.js.map +1 -1
- package/dist/utils/service/serviceListingMediaUtils.d.ts +2 -2
- package/dist/utils/service/serviceListingMediaUtils.d.ts.map +1 -1
- package/dist/utils/service/serviceListingMediaUtils.js +2 -2
- package/dist/utils/service/serviceListingMediaUtils.js.map +1 -1
- package/dist/utils/service/serviceUtils.js +2 -2
- package/dist/utils/service/serviceUtils.js.map +1 -1
- package/dist/utils/service/unifiedPricingResolver.d.ts +5 -5
- package/dist/utils/service/unifiedPricingResolver.d.ts.map +1 -1
- package/dist/utils/service/venueSettlementUtils.d.ts +2 -2
- package/dist/utils/service/venueSettlementUtils.js +3 -3
- package/dist/utils/service/venueSettlementUtils.js.map +1 -1
- package/dist/utils/service/volunteerCompensationUtils.d.ts +2 -2
- package/dist/utils/service/volunteerCompensationUtils.js +1 -1
- package/dist/utils/service/volunteerCompensationUtils.js.map +1 -1
- package/dist/utils/slugUtils.d.ts +1 -1
- package/dist/utils/slugUtils.js +1 -1
- package/dist/utils/ticketPrintPostageUtils.d.ts +4 -4
- package/dist/utils/ticketPrintPostageUtils.js +5 -5
- package/dist/utils/ticketPrintPostageUtils.js.map +1 -1
- package/dist/utils/ticketTierSchedule.d.ts +1 -1
- package/dist/utils/ticketTierSchedule.js +4 -4
- package/dist/utils/ticketTierSchedule.js.map +1 -1
- package/dist/utils/trustScoreUtils.d.ts +1 -1
- package/dist/utils/trustScoreUtils.js +1 -1
- package/dist/utils/urlUtils.d.ts +2 -2
- package/dist/utils/urlUtils.js +2 -2
- package/dist/utils/userUtils.d.ts +4 -4
- package/dist/utils/userUtils.js +3 -3
- package/dist/utils/venueLoyalty/__tests__/eligibilityUtils.test.js +1 -1
- package/dist/utils/venueLoyalty/__tests__/redemptionCodeUtils.test.js +1 -1
- package/dist/utils/venueLoyalty/redemptionCodeUtils.d.ts +3 -3
- package/dist/utils/venueLoyalty/redemptionCodeUtils.js +3 -3
- package/dist/venueLoyaltyRedemption.d.ts +2 -2
- package/dist/venueLoyaltyRedemption.js +1 -1
- package/dist/venueMatch.d.ts +4 -4
- package/dist/venueMatch.d.ts.map +1 -1
- package/dist/venueMatch.js +1 -1
- package/dist/venueMatch.js.map +1 -1
- package/package.json +1 -1
- package/prisma/schema.prisma +2 -0
- package/src/__tests__/agePolicy.test.ts +6 -6
- package/src/__tests__/bashEventCancellationPolicy.test.ts +2 -2
- package/src/__tests__/bashSectionTitleForBashType.test.ts +3 -3
- package/src/__tests__/definitionsHelpers.test.ts +1 -1
- package/src/__tests__/entertainmentNotableVenues.test.ts +1 -1
- package/src/__tests__/hostCrmCrowdPulse.test.ts +1 -1
- package/src/__tests__/hostCrmSegments.test.ts +2 -2
- package/src/__tests__/hostPromoter.test.ts +1 -1
- package/src/__tests__/influencerAudience.test.ts +1 -1
- package/src/__tests__/promoterCompetitionUtils.test.ts +3 -3
- package/src/__tests__/scenePulse.test.ts +1 -1
- package/src/__tests__/seatMap.test.ts +1 -1
- package/src/__tests__/ticketAdmission.test.ts +1 -1
- package/src/accessScreening.ts +1 -1
- package/src/aiApproval.ts +3 -3
- package/src/appleIapProducts.ts +1 -1
- package/src/applicationFunnel.ts +1 -1
- package/src/audienceImport.ts +2 -2
- package/src/bashEventCancellationPolicy.ts +3 -3
- package/src/budgetApproval.ts +1 -1
- package/src/causeTags.ts +4 -4
- package/src/competitionIdeas.ts +12 -12
- package/src/competitionValidation.ts +1 -1
- package/src/definitions.ts +42 -42
- package/src/discoveryScope.ts +2 -2
- package/src/entertainmentNotableVenues.ts +1 -1
- package/src/extendedSchemas.ts +41 -41
- package/src/fundingMeter.ts +1 -1
- package/src/giveaway.ts +2 -2
- package/src/guestPartySize.ts +3 -3
- package/src/home.ts +1 -1
- package/src/homepageSyntheticRows.ts +3 -4
- package/src/hostCrmAutomation.ts +11 -11
- package/src/hostCrmConstants.ts +1 -1
- package/src/hostCrmCrowdPulse.ts +2 -2
- package/src/hostCrmInsights.ts +3 -3
- package/src/hostCrmLastBashProof.ts +2 -2
- package/src/hostCrmSegments.ts +12 -12
- package/src/hostPromoter.ts +1 -1
- package/src/icebreakerPrompts.ts +2 -2
- package/src/index.ts +1 -1
- package/src/influencerAudience.ts +3 -3
- package/src/liveActivity/liveActivityTypes.ts +10 -10
- package/src/locationShare.ts +2 -2
- package/src/membershipDefinitions.ts +21 -21
- package/src/mirroredPrismaEnums.ts +6 -6
- package/src/onSaleCapabilityRecommendations.ts +1 -1
- package/src/partnerStoreTypes.ts +1 -1
- package/src/productLaunch.ts +2 -2
- package/src/relationshipHealth.ts +5 -5
- package/src/scenePulse.ts +2 -2
- package/src/seatMap.ts +3 -3
- package/src/seatMapBestAvailable.ts +2 -2
- package/src/serviceTypeLabels.ts +3 -3
- package/src/sideQuestIdeas.ts +8 -8
- package/src/sideQuestTypes.ts +2 -2
- package/src/sms/smsTemplates.ts +1 -1
- package/src/stripeListingSubscriptionMessages.ts +1 -1
- package/src/targetAudienceLabels.ts +1 -1
- package/src/ticketBnplPaymentMethods.ts +3 -3
- package/src/userReportTypes.ts +1 -1
- package/src/userTaste.ts +2 -2
- package/src/utils/__tests__/badgeUtils.test.ts +5 -5
- package/src/utils/__tests__/bashPointsPaymentUtils.test.ts +4 -4
- package/src/utils/__tests__/contentFilterUtils.test.ts +23 -23
- package/src/utils/__tests__/dateTimeUtils.test.ts +1 -1
- package/src/utils/__tests__/displayDateUtils.test.ts +1 -1
- package/src/utils/__tests__/flyerUtils.test.ts +1 -1
- package/src/utils/__tests__/getBackendHost.test.ts +8 -8
- package/src/utils/__tests__/getFrontendHost.native.test.ts +1 -1
- package/src/utils/__tests__/getFrontendHost.test.ts +9 -9
- package/src/utils/__tests__/organizationEntitlements.test.ts +1 -1
- package/src/utils/__tests__/paymentUtils.test.ts +7 -7
- package/src/utils/__tests__/promoCodesUtils.test.ts +2 -2
- package/src/utils/__tests__/qrCodeUtils.test.ts +4 -4
- package/src/utils/__tests__/reviewDimensionUtils.test.ts +1 -1
- package/src/utils/__tests__/stripeAccountUtils.test.ts +1 -1
- package/src/utils/__tests__/ticketPrintPostageUtils.test.ts +1 -1
- package/src/utils/addressUtils.ts +1 -1
- package/src/utils/apiUtils.ts +1 -1
- package/src/utils/birthdayExperienceQuality.ts +4 -4
- package/src/utils/blogUtils.ts +2 -2
- package/src/utils/discountEngine/discountCalculator.ts +1 -1
- package/src/utils/displayDateUtils.ts +2 -2
- package/src/utils/entertainmentDrawFit.ts +1 -1
- package/src/utils/eventTimezoneIana.ts +4 -4
- package/src/utils/flyerUtils.ts +3 -3
- package/src/utils/groupTicketCartUtils.ts +1 -1
- package/src/utils/guestSurface.ts +5 -5
- package/src/utils/lobFlyerUtils.ts +2 -2
- package/src/utils/luxonUtils.ts +5 -5
- package/src/utils/moodTrackUtils.ts +1 -1
- package/src/utils/nonprofitUtils.ts +3 -3
- package/src/utils/orgPromotionalPackageUtils.ts +1 -1
- package/src/utils/organizationEntitlements.ts +4 -4
- package/src/utils/paymentUtils.ts +10 -10
- package/src/utils/promoterCompetitionUtils.ts +8 -8
- package/src/utils/promotionBlastUtils.ts +4 -4
- package/src/utils/qrCodeUtils.ts +3 -3
- package/src/utils/recurrenceUtils.ts +1 -1
- package/src/utils/reputationUtils.ts +3 -3
- package/src/utils/reviewDimensionUtils.ts +2 -2
- package/src/utils/service/__tests__/billingCapUtils.test.ts +3 -3
- package/src/utils/service/__tests__/eventPromoterPhase3.test.ts +1 -1
- package/src/utils/service/__tests__/eventPromoterUtils.test.ts +1 -1
- package/src/utils/service/__tests__/frontendServiceBookingUtils.test.ts +2 -2
- package/src/utils/service/__tests__/serviceBookingExposureUtils.test.ts +1 -1
- package/src/utils/service/__tests__/serviceBookingStatusUtils.test.ts +2 -2
- package/src/utils/service/__tests__/serviceRateUtils.test.ts +6 -6
- package/src/utils/service/apiServiceBookingApiUtils.ts +1 -1
- package/src/utils/service/billingCapUtils.ts +5 -5
- package/src/utils/service/cancellationPolicyRefundResolver.ts +1 -1
- package/src/utils/service/eventPromoterUtils.ts +27 -27
- package/src/utils/service/foodAndBeverageQuote.ts +8 -8
- package/src/utils/service/offerAllowListUtils.ts +1 -1
- package/src/utils/service/offerComparisonUtils.ts +8 -8
- package/src/utils/service/serviceBookingExposureUtils.ts +8 -8
- package/src/utils/service/serviceBookingTypes.ts +2 -2
- package/src/utils/service/serviceFeaturedSortUtils.ts +2 -2
- package/src/utils/service/serviceListingMediaUtils.ts +2 -2
- package/src/utils/service/serviceUtils.ts +2 -2
- package/src/utils/service/unifiedPricingResolver.ts +5 -5
- package/src/utils/service/venueSettlementUtils.ts +3 -3
- package/src/utils/service/volunteerCompensationUtils.ts +3 -3
- package/src/utils/slugUtils.ts +1 -1
- package/src/utils/ticketPrintPostageUtils.ts +5 -5
- package/src/utils/ticketTierSchedule.ts +4 -4
- package/src/utils/trustScoreUtils.ts +1 -1
- package/src/utils/urlUtils.ts +2 -2
- package/src/utils/userUtils.ts +4 -4
- package/src/utils/venueLoyalty/__tests__/eligibilityUtils.test.ts +1 -1
- package/src/utils/venueLoyalty/__tests__/redemptionCodeUtils.test.ts +1 -1
- package/src/utils/venueLoyalty/redemptionCodeUtils.ts +3 -3
- package/src/venueLoyaltyRedemption.ts +2 -2
- package/src/venueMatch.ts +4 -4
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Phase 0 adoption guardrails
|
|
2
|
+
* Phase 0 adoption guardrails. Host-side soft cap on variable-pricing bookings.
|
|
3
3
|
*
|
|
4
4
|
* Any booking whose `pricingModel` is not flat/hourly/daily can run up the host's
|
|
5
5
|
* tab if turnout exceeds expectations. `maxBillableCents` lets the host put a
|
|
6
6
|
* dollar ceiling on each booking. The default ceiling is `1.5x` of
|
|
7
|
-
* `expectedAttendees * baseRateCents`, rounded up to the nearest $10
|
|
7
|
+
* `expectedAttendees * baseRateCents`, rounded up to the nearest $10. Generous
|
|
8
8
|
* enough that hosts almost never trip it on a good night, but tight enough to
|
|
9
9
|
* protect against a runaway viral bash.
|
|
10
10
|
*
|
|
@@ -22,7 +22,7 @@ export const DEFAULT_MAX_BILLABLE_ROUNDING_CENTS = 1000;
|
|
|
22
22
|
* Computes the default Phase 0 soft cap for a variable-pricing booking.
|
|
23
23
|
*
|
|
24
24
|
* Returns `null` when `baseRateCents` is unusable. Returns `0` when
|
|
25
|
-
* `expectedAttendees` is zero or absent
|
|
25
|
+
* `expectedAttendees` is zero or absent. Caller decides whether that means
|
|
26
26
|
* "skip the cap" (free / comp-only bash) or "force the host to set one explicitly".
|
|
27
27
|
*
|
|
28
28
|
* Worked example: 200 expected attendees @ $5 each → 200 * 500 * 1.5 = $1500 →
|
|
@@ -49,7 +49,7 @@ export function defaultMaxBillableCents(input) {
|
|
|
49
49
|
return Math.ceil(raw / roundingCents) * roundingCents;
|
|
50
50
|
}
|
|
51
51
|
/**
|
|
52
|
-
* Parallel cap for `PER_BASHPOINTS_ATTENDEE` bookings
|
|
52
|
+
* Parallel cap for `PER_BASHPOINTS_ATTENDEE` bookings. Same formula, BashPoints
|
|
53
53
|
* units. Rounds up to the nearest 100 BashPoints by default since BashPoints
|
|
54
54
|
* are integer-only.
|
|
55
55
|
*/
|
|
@@ -74,7 +74,7 @@ export function defaultMaxBillableBashPoints(input) {
|
|
|
74
74
|
}
|
|
75
75
|
/**
|
|
76
76
|
* Default snippet to snapshot onto `ServiceBooking.payoutTimingNote` at booking
|
|
77
|
-
* time for any variable-pricing booking. Keep concise
|
|
77
|
+
* time for any variable-pricing booking. Keep concise. Surfaces in offer
|
|
78
78
|
* sheets, booking detail, and email summaries.
|
|
79
79
|
*/
|
|
80
80
|
export const DEFAULT_VARIABLE_PAYOUT_TIMING_NOTE = "Variable pricing payout: final settlement ~3 business days after the bash, after attendee numbers are locked.";
|
|
@@ -6,7 +6,7 @@ import { type ServiceCancellationRefundPolicy } from "./serviceUtils.js";
|
|
|
6
6
|
*/
|
|
7
7
|
export declare function cancellationRuleThresholdHours(rule: ServiceCancellationRefundPolicy): number;
|
|
8
8
|
export type ResolveCancellationRefundOptions = {
|
|
9
|
-
/** Event start time (UTC or local
|
|
9
|
+
/** Event start time (UTC or local. Caller must be consistent). */
|
|
10
10
|
eventStart: Date;
|
|
11
11
|
/** Defaults to `new Date()`. */
|
|
12
12
|
now?: Date;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cancellationPolicyRefundResolver.d.ts","sourceRoot":"","sources":["../../../src/utils/service/cancellationPolicyRefundResolver.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,yBAAyB,EAAE,MAAM,8BAA8B,CAAC;AACzE,OAAO,EAEL,KAAK,+BAA+B,EACrC,MAAM,mBAAmB,CAAC;AAE3B;;;GAGG;AACH,wBAAgB,8BAA8B,CAC5C,IAAI,EAAE,+BAA+B,GACpC,MAAM,CAQR;AAED,MAAM,MAAM,gCAAgC,GAAG;IAC7C,
|
|
1
|
+
{"version":3,"file":"cancellationPolicyRefundResolver.d.ts","sourceRoot":"","sources":["../../../src/utils/service/cancellationPolicyRefundResolver.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,yBAAyB,EAAE,MAAM,8BAA8B,CAAC;AACzE,OAAO,EAEL,KAAK,+BAA+B,EACrC,MAAM,mBAAmB,CAAC;AAE3B;;;GAGG;AACH,wBAAgB,8BAA8B,CAC5C,IAAI,EAAE,+BAA+B,GACpC,MAAM,CAQR;AAED,MAAM,MAAM,gCAAgC,GAAG;IAC7C,kEAAkE;IAClE,UAAU,EAAE,IAAI,CAAC;IACjB,gCAAgC;IAChC,GAAG,CAAC,EAAE,IAAI,CAAC;CACZ,CAAC;AAEF;;;GAGG;AACH,wBAAgB,oBAAoB,CAClC,UAAU,EAAE,IAAI,EAChB,GAAG,GAAE,IAAiB,GACrB,MAAM,CAMR;AAED;;;;;GAKG;AACH,wBAAgB,iCAAiC,CAC/C,MAAM,EAAE,yBAAyB,GAAG,IAAI,GAAG,SAAS,EACpD,OAAO,EAAE,gCAAgC,GACxC,MAAM,CAwBR;AAED;;GAEG;AACH,wBAAgB,iCAAiC,CAC/C,MAAM,EAAE,yBAAyB,GAAG,IAAI,GAAG,SAAS,EACpD,OAAO,EAAE,gCAAgC,GACxC,+BAA+B,GAAG,IAAI,CA0BxC"}
|
|
@@ -20,7 +20,7 @@ import { PricingModel, PromotionAndMarketingSubType } from "@prisma/client";
|
|
|
20
20
|
*
|
|
21
21
|
* Compared with the **string literal** rather than the Prisma enum object
|
|
22
22
|
* because the browser bundle (`index-browser`) does not always re-export
|
|
23
|
-
* Prisma enums as runtime values
|
|
23
|
+
* Prisma enums as runtime values. See `bash-common/src/mirroredPrismaEnums.ts`
|
|
24
24
|
* for the same pattern.
|
|
25
25
|
*/
|
|
26
26
|
export declare function isPerAttendeeLockedPromotionSubType(subType: PromotionAndMarketingSubType | string | null | undefined): boolean;
|
|
@@ -44,7 +44,7 @@ export declare const EVENT_PROMOTER_LATE_CANCEL_HOURS = 48;
|
|
|
44
44
|
/**
|
|
45
45
|
* Late-cancellation penalty as a fraction of the deposit (0..1). 0.25 means
|
|
46
46
|
* the host forfeits 25% of the deposit when they cancel inside the
|
|
47
|
-
* `EVENT_PROMOTER_LATE_CANCEL_HOURS` window
|
|
47
|
+
* `EVENT_PROMOTER_LATE_CANCEL_HOURS` window. Covers the promoter's
|
|
48
48
|
* sunk planning time.
|
|
49
49
|
*/
|
|
50
50
|
export declare const EVENT_PROMOTER_LATE_CANCEL_PENALTY_FRACTION = 0.25;
|
|
@@ -52,11 +52,11 @@ export declare const EVENT_PROMOTER_LATE_CANCEL_PENALTY_FRACTION = 0.25;
|
|
|
52
52
|
export type EventPromoterCanceller = "host" | "promoter" | "admin";
|
|
53
53
|
export interface EventPromoterCancellationInput {
|
|
54
54
|
who: EventPromoterCanceller;
|
|
55
|
-
/** ISO timestamp of "now"
|
|
55
|
+
/** ISO timestamp of "now". Injected so callers can test edge cases. */
|
|
56
56
|
nowMs: number;
|
|
57
57
|
/** Bash start time. */
|
|
58
58
|
bashStartMs: number | null;
|
|
59
|
-
/** Bash end time
|
|
59
|
+
/** Bash end time. Once we're past this, settlement takes over instead. */
|
|
60
60
|
bashEndMs: number | null;
|
|
61
61
|
/** Deposit cents already charged at booking. */
|
|
62
62
|
depositCents: number;
|
|
@@ -68,12 +68,12 @@ export interface EventPromoterCancellationDecision {
|
|
|
68
68
|
allow: boolean;
|
|
69
69
|
/**
|
|
70
70
|
* Outcome category for telemetry + thread messaging:
|
|
71
|
-
* - `FullRefund
|
|
71
|
+
* - `FullRefund`. Full deposit returned (host cancel outside window, or
|
|
72
72
|
* promoter cancel any time before the bash).
|
|
73
|
-
* - `PartialRefund
|
|
73
|
+
* - `PartialRefund`. Host cancels inside the late-cancel window; promoter
|
|
74
74
|
* keeps `EVENT_PROMOTER_LATE_CANCEL_PENALTY_FRACTION` of the deposit.
|
|
75
|
-
* - `NoRefund
|
|
76
|
-
* - `Blocked
|
|
75
|
+
* - `NoRefund`. Bash already happened; settlement handles it instead.
|
|
76
|
+
* - `Blocked`. Booking already settled, or impossible state; admin only.
|
|
77
77
|
*/
|
|
78
78
|
outcome: "FullRefund" | "PartialRefund" | "NoRefund" | "Blocked";
|
|
79
79
|
/** Refund amount in cents (0 when outcome is NoRefund/Blocked). */
|
|
@@ -113,7 +113,7 @@ export declare function decideEventPromoterCancellation(input: EventPromoterCanc
|
|
|
113
113
|
*/
|
|
114
114
|
export declare const EVENT_PROMOTER_LOCKED_PRICING_MODEL: PricingModel;
|
|
115
115
|
/**
|
|
116
|
-
* Phase 3
|
|
116
|
+
* Phase 3. Set of pricing models the locked Event Promoter subtype may use.
|
|
117
117
|
* Any of these guarantees a per-head settlement at bash close, which is the
|
|
118
118
|
* actual constraint the worker cares about. Wizard offers them as a choice;
|
|
119
119
|
* api validator accepts any.
|
|
@@ -160,7 +160,7 @@ export interface EventPromoterSettlementInput {
|
|
|
160
160
|
totalCheckedInAttendees: number;
|
|
161
161
|
/** Per-booking host-set ceiling on attributable attendees; `null` = no cap. */
|
|
162
162
|
maxAttendeesAttributable?: number | null;
|
|
163
|
-
/** Optional floor
|
|
163
|
+
/** Optional floor. Usually `EventService.minimumQuantity` at booking time. */
|
|
164
164
|
minimumQuantity?: number | null;
|
|
165
165
|
}
|
|
166
166
|
export interface EventPromoterSettlementResult {
|
|
@@ -171,7 +171,7 @@ export interface EventPromoterSettlementResult {
|
|
|
171
171
|
finalCount: number;
|
|
172
172
|
/**
|
|
173
173
|
* True iff `maxAttendeesAttributable` capped `finalCount`. Useful for
|
|
174
|
-
* analytics
|
|
174
|
+
* analytics. High `ceilingHit` rates signal v2 (per-ticket attribution).
|
|
175
175
|
*/
|
|
176
176
|
ceilingHit: boolean;
|
|
177
177
|
/**
|
|
@@ -206,12 +206,12 @@ export declare function computeEventPromoterSettlement(input: EventPromoterSettl
|
|
|
206
206
|
/**
|
|
207
207
|
* Which checked-in attendees count toward the settlement headcount?
|
|
208
208
|
*
|
|
209
|
-
* - `AllCheckedIn
|
|
210
|
-
* - `PaidUsdOnly
|
|
209
|
+
* - `AllCheckedIn`. Every checked-in, non-comp guest (legacy PER_ATTENDEE).
|
|
210
|
+
* - `PaidUsdOnly`. Only guests on USD-priced tiers (PER_PAID_ATTENDEE without
|
|
211
211
|
* `countsBashPointsTickets`).
|
|
212
|
-
* - `PaidBpOnly
|
|
212
|
+
* - `PaidBpOnly`. Only guests on BashPoints-priced tiers
|
|
213
213
|
* (PER_BASHPOINTS_ATTENDEE).
|
|
214
|
-
* - `PaidAny
|
|
214
|
+
* - `PaidAny`. Paid guests on either currency
|
|
215
215
|
* (PER_PAID_ATTENDEE with `countsBashPointsTickets = true`).
|
|
216
216
|
*/
|
|
217
217
|
export type EventPromoterCountingBasis = "AllCheckedIn" | "PaidUsdOnly" | "PaidBpOnly" | "PaidAny";
|
|
@@ -249,7 +249,7 @@ export interface EventPromoterMixedSettlementInput {
|
|
|
249
249
|
expectedBpAttendeesAtBooking?: number | null;
|
|
250
250
|
/** Snapshots from the bash checkout (see `EventPromoterAttendeeSnapshots`). */
|
|
251
251
|
snapshots: EventPromoterAttendeeSnapshots;
|
|
252
|
-
/** Optional ceilings
|
|
252
|
+
/** Optional ceilings. Separate caps for USD and BP. */
|
|
253
253
|
maxUsdAttendeesAttributable?: number | null;
|
|
254
254
|
maxBpAttendeesAttributable?: number | null;
|
|
255
255
|
/** Optional dollar cap on USD side (from `maxBillableCents`). */
|
|
@@ -300,7 +300,7 @@ export interface BashPointsPayoutResolverResult {
|
|
|
300
300
|
fromWalletBp: number;
|
|
301
301
|
/** BP that could NOT be sourced (resulting failure → dunning). */
|
|
302
302
|
shortfallBp: number;
|
|
303
|
-
/** True when fromWalletBp > 0
|
|
303
|
+
/** True when fromWalletBp > 0. Used to surface UI / push notifications. */
|
|
304
304
|
walletDebited: boolean;
|
|
305
305
|
}
|
|
306
306
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"eventPromoterUtils.d.ts","sourceRoot":"","sources":["../../../src/utils/service/eventPromoterUtils.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,YAAY,EACZ,4BAA4B,EAC7B,MAAM,gBAAgB,CAAC;AAExB;;;;;;;;;;;;;;GAcG;AAEH;;;;;;;;GAQG;AACH,wBAAgB,mCAAmC,CACjD,OAAO,EAAE,4BAA4B,GAAG,MAAM,GAAG,IAAI,GAAG,SAAS,GAChE,OAAO,CAET;AAED;;;;;;;;GAQG;AACH,wBAAgB,2BAA2B,CAAC,IAAI,EAAE;IAChD,WAAW,EAAE,MAAM,CAAC;IACpB,cAAc,EAAE,MAAM,CAAC;IACvB,2EAA2E;IAC3E,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC9B,GAAG,MAAM,CAST;AAED,6EAA6E;AAC7E,eAAO,MAAM,gCAAgC,KAAK,CAAC;AAEnD;;;;;GAKG;AACH,eAAO,MAAM,2CAA2C,OAAO,CAAC;AAEhE,2EAA2E;AAC3E,MAAM,MAAM,sBAAsB,GAAG,MAAM,GAAG,UAAU,GAAG,OAAO,CAAC;AAEnE,MAAM,WAAW,8BAA8B;IAC7C,GAAG,EAAE,sBAAsB,CAAC;IAC5B,
|
|
1
|
+
{"version":3,"file":"eventPromoterUtils.d.ts","sourceRoot":"","sources":["../../../src/utils/service/eventPromoterUtils.ts"],"names":[],"mappings":"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"}
|
|
@@ -19,7 +19,7 @@
|
|
|
19
19
|
*
|
|
20
20
|
* Compared with the **string literal** rather than the Prisma enum object
|
|
21
21
|
* because the browser bundle (`index-browser`) does not always re-export
|
|
22
|
-
* Prisma enums as runtime values
|
|
22
|
+
* Prisma enums as runtime values. See `bash-common/src/mirroredPrismaEnums.ts`
|
|
23
23
|
* for the same pattern.
|
|
24
24
|
*/
|
|
25
25
|
export function isPerAttendeeLockedPromotionSubType(subType) {
|
|
@@ -49,7 +49,7 @@ export const EVENT_PROMOTER_LATE_CANCEL_HOURS = 48;
|
|
|
49
49
|
/**
|
|
50
50
|
* Late-cancellation penalty as a fraction of the deposit (0..1). 0.25 means
|
|
51
51
|
* the host forfeits 25% of the deposit when they cancel inside the
|
|
52
|
-
* `EVENT_PROMOTER_LATE_CANCEL_HOURS` window
|
|
52
|
+
* `EVENT_PROMOTER_LATE_CANCEL_HOURS` window. Covers the promoter's
|
|
53
53
|
* sunk planning time.
|
|
54
54
|
*/
|
|
55
55
|
export const EVENT_PROMOTER_LATE_CANCEL_PENALTY_FRACTION = 0.25;
|
|
@@ -79,7 +79,7 @@ export function decideEventPromoterCancellation(input) {
|
|
|
79
79
|
outcome: "Blocked",
|
|
80
80
|
refundCents: 0,
|
|
81
81
|
penaltyFraction: 0,
|
|
82
|
-
reason: "Booking already settled
|
|
82
|
+
reason: "Booking already settled. Cancellation no longer applies.",
|
|
83
83
|
};
|
|
84
84
|
}
|
|
85
85
|
const bashHasStarted = input.bashStartMs != null && input.nowMs >= input.bashStartMs;
|
|
@@ -95,7 +95,7 @@ export function decideEventPromoterCancellation(input) {
|
|
|
95
95
|
outcome: "NoRefund",
|
|
96
96
|
refundCents: 0,
|
|
97
97
|
penaltyFraction: 0,
|
|
98
|
-
reason: "Admin cancel after bash started
|
|
98
|
+
reason: "Admin cancel after bash started. Settlement handles money.",
|
|
99
99
|
};
|
|
100
100
|
}
|
|
101
101
|
return {
|
|
@@ -103,7 +103,7 @@ export function decideEventPromoterCancellation(input) {
|
|
|
103
103
|
outcome: "FullRefund",
|
|
104
104
|
refundCents: input.depositCents,
|
|
105
105
|
penaltyFraction: 0,
|
|
106
|
-
reason: "Admin cancel
|
|
106
|
+
reason: "Admin cancel. Full refund of deposit.",
|
|
107
107
|
};
|
|
108
108
|
}
|
|
109
109
|
if (input.who === "promoter") {
|
|
@@ -113,7 +113,7 @@ export function decideEventPromoterCancellation(input) {
|
|
|
113
113
|
outcome: "Blocked",
|
|
114
114
|
refundCents: 0,
|
|
115
115
|
penaltyFraction: 0,
|
|
116
|
-
reason: "Bash already started
|
|
116
|
+
reason: "Bash already started. Promoter must coordinate with host in the thread, not auto-cancel.",
|
|
117
117
|
};
|
|
118
118
|
}
|
|
119
119
|
return {
|
|
@@ -121,7 +121,7 @@ export function decideEventPromoterCancellation(input) {
|
|
|
121
121
|
outcome: "FullRefund",
|
|
122
122
|
refundCents: input.depositCents,
|
|
123
123
|
penaltyFraction: 0,
|
|
124
|
-
reason: "Promoter cancelled
|
|
124
|
+
reason: "Promoter cancelled. Full refund of host deposit. Bash notifies the host and re-opens the slot.",
|
|
125
125
|
};
|
|
126
126
|
}
|
|
127
127
|
// who === "host"
|
|
@@ -131,7 +131,7 @@ export function decideEventPromoterCancellation(input) {
|
|
|
131
131
|
outcome: "NoRefund",
|
|
132
132
|
refundCents: 0,
|
|
133
133
|
penaltyFraction: 0,
|
|
134
|
-
reason: "Bash already in progress or over
|
|
134
|
+
reason: "Bash already in progress or over. The post-event settlement will calculate any refund automatically.",
|
|
135
135
|
};
|
|
136
136
|
}
|
|
137
137
|
if (hoursUntilStart >= EVENT_PROMOTER_LATE_CANCEL_HOURS) {
|
|
@@ -140,7 +140,7 @@ export function decideEventPromoterCancellation(input) {
|
|
|
140
140
|
outcome: "FullRefund",
|
|
141
141
|
refundCents: input.depositCents,
|
|
142
142
|
penaltyFraction: 0,
|
|
143
|
-
reason: `Host cancelled with more than ${EVENT_PROMOTER_LATE_CANCEL_HOURS}h notice
|
|
143
|
+
reason: `Host cancelled with more than ${EVENT_PROMOTER_LATE_CANCEL_HOURS}h notice. Full refund of deposit.`,
|
|
144
144
|
};
|
|
145
145
|
}
|
|
146
146
|
const penaltyFraction = EVENT_PROMOTER_LATE_CANCEL_PENALTY_FRACTION;
|
|
@@ -150,7 +150,7 @@ export function decideEventPromoterCancellation(input) {
|
|
|
150
150
|
outcome: "PartialRefund",
|
|
151
151
|
refundCents,
|
|
152
152
|
penaltyFraction,
|
|
153
|
-
reason: `Host cancelled inside the ${EVENT_PROMOTER_LATE_CANCEL_HOURS}h window
|
|
153
|
+
reason: `Host cancelled inside the ${EVENT_PROMOTER_LATE_CANCEL_HOURS}h window. Promoter keeps ${Math.round(penaltyFraction * 100)}% of the deposit to cover planning time.`,
|
|
154
154
|
};
|
|
155
155
|
}
|
|
156
156
|
/**
|
|
@@ -163,7 +163,7 @@ export function decideEventPromoterCancellation(input) {
|
|
|
163
163
|
*/
|
|
164
164
|
export const EVENT_PROMOTER_LOCKED_PRICING_MODEL = "PER_ATTENDEE";
|
|
165
165
|
/**
|
|
166
|
-
* Phase 3
|
|
166
|
+
* Phase 3. Set of pricing models the locked Event Promoter subtype may use.
|
|
167
167
|
* Any of these guarantees a per-head settlement at bash close, which is the
|
|
168
168
|
* actual constraint the worker cares about. Wizard offers them as a choice;
|
|
169
169
|
* api validator accepts any.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"eventPromoterUtils.js","sourceRoot":"","sources":["../../../src/utils/service/eventPromoterUtils.ts"],"names":[],"mappings":"AAKA;;;;;;;;;;;;;;GAcG;AAEH;;;;;;;;GAQG;AACH,MAAM,UAAU,mCAAmC,CACjD,OAAiE;IAEjE,OAAO,OAAO,KAAK,UAAU,CAAC;AAChC,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,2BAA2B,CAAC,IAK3C;IACC,MAAM,MAAM,GAAG,IAAI,eAAe,CAAC;QACjC,cAAc,EAAE,IAAI,CAAC,cAAc;QACnC,MAAM,EAAE,wBAAwB;KACjC,CAAC,CAAC;IACH,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;QACtB,MAAM,CAAC,GAAG,CAAC,cAAc,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;IAChD,CAAC;IACD,OAAO,WAAW,IAAI,CAAC,WAAW,mCAAmC,MAAM,CAAC,QAAQ,EAAE,EAAE,CAAC;AAC3F,CAAC;AAED,6EAA6E;AAC7E,MAAM,CAAC,MAAM,gCAAgC,GAAG,EAAE,CAAC;AAEnD;;;;;GAKG;AACH,MAAM,CAAC,MAAM,2CAA2C,GAAG,IAAI,CAAC;AAwChE;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,UAAU,+BAA+B,CAC7C,KAAqC;IAErC,IAAI,KAAK,CAAC,cAAc,EAAE,CAAC;QACzB,OAAO;YACL,KAAK,EAAE,KAAK;YACZ,OAAO,EAAE,SAAS;YAClB,WAAW,EAAE,CAAC;YACd,eAAe,EAAE,CAAC;YAClB,MAAM,EAAE,
|
|
1
|
+
{"version":3,"file":"eventPromoterUtils.js","sourceRoot":"","sources":["../../../src/utils/service/eventPromoterUtils.ts"],"names":[],"mappings":"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"}
|
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
* - Headcount floors at minimumQuantity if set.
|
|
7
7
|
* - Dollar total floors at minimumChargeCents if set.
|
|
8
8
|
* - Packages and add-ons still stack on top.
|
|
9
|
-
* - No check-in true-up (promoter settlement)
|
|
9
|
+
* - No check-in true-up (promoter settlement). Headcount is snapshotted
|
|
10
10
|
* at booking time only.
|
|
11
11
|
*
|
|
12
12
|
* Keep this module pure (no Prisma, no React). Import it in bash-app, api,
|
|
@@ -19,20 +19,20 @@
|
|
|
19
19
|
*/
|
|
20
20
|
export declare const FOOD_AND_BEVERAGE_SUBTYPES: Set<string>;
|
|
21
21
|
/**
|
|
22
|
-
* Custom-order celebration cakes
|
|
22
|
+
* Custom-order celebration cakes. Consultation, serving-size packages,
|
|
23
23
|
* pickup/delivery. Not a dessert station (DessertBar) and not per-guest catering.
|
|
24
24
|
*/
|
|
25
25
|
export declare function isCelebrationCakeEventService(opts: {
|
|
26
26
|
eventServiceSubType?: string | null;
|
|
27
27
|
}): boolean;
|
|
28
28
|
/**
|
|
29
|
-
* Charcuterie boards and grazing tables
|
|
29
|
+
* Charcuterie boards and grazing tables. Board/table packages, not per-guest catering.
|
|
30
30
|
*/
|
|
31
31
|
export declare function isGrazingTableEventService(opts: {
|
|
32
32
|
eventServiceSubType?: string | null;
|
|
33
33
|
}): boolean;
|
|
34
34
|
/**
|
|
35
|
-
* Wedding / ceremony officiant. Hosting Support
|
|
35
|
+
* Wedding / ceremony officiant. Hosting Support. Not F&B, not Entertainment Emcee.
|
|
36
36
|
*/
|
|
37
37
|
export declare function isOfficiantEventService(opts: {
|
|
38
38
|
eventServiceSubType?: string | null;
|
|
@@ -43,7 +43,7 @@ export declare function isPackagePricedFoodEventService(opts: {
|
|
|
43
43
|
eventServiceSubType?: string | null;
|
|
44
44
|
}): boolean;
|
|
45
45
|
/**
|
|
46
|
-
* Return true when a listing is an F&B EventService
|
|
46
|
+
* Return true when a listing is an F&B EventService. Either by top-level
|
|
47
47
|
* type or by subtype string (for legacy/alias safety).
|
|
48
48
|
*/
|
|
49
49
|
export declare function isFoodAndBeverageEventService(opts: {
|
|
@@ -51,7 +51,7 @@ export declare function isFoodAndBeverageEventService(opts: {
|
|
|
51
51
|
eventServiceSubType?: string | null;
|
|
52
52
|
}): boolean;
|
|
53
53
|
/**
|
|
54
|
-
* Per-guest F&B only. Cake and grazing use packages
|
|
54
|
+
* Per-guest F&B only. Cake and grazing use packages. Never this path.
|
|
55
55
|
*/
|
|
56
56
|
export declare function isPerGuestFoodAndBeverageEventService(opts: {
|
|
57
57
|
eventServiceType?: string | null;
|
|
@@ -65,7 +65,7 @@ export declare const FULFILLMENT_MODE_LABEL: Record<FoodAndBeverageFulfillmentMo
|
|
|
65
65
|
/**
|
|
66
66
|
* Suggested menu category chips shown in the wizard and on the listing.
|
|
67
67
|
* Providers can add custom values; these are just pre-populated starting points.
|
|
68
|
-
* Not SKUs
|
|
68
|
+
* Not SKUs. No flavors, quantities, or prices here.
|
|
69
69
|
*/
|
|
70
70
|
export declare const FB_MENU_CATEGORY_SUGGESTIONS: Record<string, readonly string[]>;
|
|
71
71
|
/**
|
|
@@ -96,7 +96,7 @@ export declare function quotedGuestCount(headcount: number, minimumQuantity?: nu
|
|
|
96
96
|
* 2. Compute rate total: baseRateCents × quotedGuests
|
|
97
97
|
* 3. Floor at minimumChargeCents
|
|
98
98
|
*
|
|
99
|
-
* Packages and add-ons are NOT included here
|
|
99
|
+
* Packages and add-ons are NOT included here. They are added on top by
|
|
100
100
|
* frontendServiceBookingUtils (same as for all other service types).
|
|
101
101
|
*/
|
|
102
102
|
export declare function foodAndBeverageQuoteCents({ baseRateCents, headcount, minimumQuantity, minimumChargeCents, }: FoodAndBeverageQuoteParams): number;
|
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
* - Headcount floors at minimumQuantity if set.
|
|
7
7
|
* - Dollar total floors at minimumChargeCents if set.
|
|
8
8
|
* - Packages and add-ons still stack on top.
|
|
9
|
-
* - No check-in true-up (promoter settlement)
|
|
9
|
+
* - No check-in true-up (promoter settlement). Headcount is snapshotted
|
|
10
10
|
* at booking time only.
|
|
11
11
|
*
|
|
12
12
|
* Keep this module pure (no Prisma, no React). Import it in bash-app, api,
|
|
@@ -42,20 +42,20 @@ export const FOOD_AND_BEVERAGE_SUBTYPES = new Set([
|
|
|
42
42
|
"Barista",
|
|
43
43
|
]);
|
|
44
44
|
/**
|
|
45
|
-
* Custom-order celebration cakes
|
|
45
|
+
* Custom-order celebration cakes. Consultation, serving-size packages,
|
|
46
46
|
* pickup/delivery. Not a dessert station (DessertBar) and not per-guest catering.
|
|
47
47
|
*/
|
|
48
48
|
export function isCelebrationCakeEventService(opts) {
|
|
49
49
|
return opts.eventServiceSubType === "CelebrationCake";
|
|
50
50
|
}
|
|
51
51
|
/**
|
|
52
|
-
* Charcuterie boards and grazing tables
|
|
52
|
+
* Charcuterie boards and grazing tables. Board/table packages, not per-guest catering.
|
|
53
53
|
*/
|
|
54
54
|
export function isGrazingTableEventService(opts) {
|
|
55
55
|
return opts.eventServiceSubType === "GrazingTable";
|
|
56
56
|
}
|
|
57
57
|
/**
|
|
58
|
-
* Wedding / ceremony officiant. Hosting Support
|
|
58
|
+
* Wedding / ceremony officiant. Hosting Support. Not F&B, not Entertainment Emcee.
|
|
59
59
|
*/
|
|
60
60
|
export function isOfficiantEventService(opts) {
|
|
61
61
|
return opts.eventServiceSubType === "Officiant";
|
|
@@ -70,7 +70,7 @@ export function isPackagePricedFoodEventService(opts) {
|
|
|
70
70
|
PACKAGE_PRICED_FOOD_SUBTYPES.has(opts.eventServiceSubType));
|
|
71
71
|
}
|
|
72
72
|
/**
|
|
73
|
-
* Return true when a listing is an F&B EventService
|
|
73
|
+
* Return true when a listing is an F&B EventService. Either by top-level
|
|
74
74
|
* type or by subtype string (for legacy/alias safety).
|
|
75
75
|
*/
|
|
76
76
|
export function isFoodAndBeverageEventService(opts) {
|
|
@@ -81,7 +81,7 @@ export function isFoodAndBeverageEventService(opts) {
|
|
|
81
81
|
return false;
|
|
82
82
|
}
|
|
83
83
|
/**
|
|
84
|
-
* Per-guest F&B only. Cake and grazing use packages
|
|
84
|
+
* Per-guest F&B only. Cake and grazing use packages. Never this path.
|
|
85
85
|
*/
|
|
86
86
|
export function isPerGuestFoodAndBeverageEventService(opts) {
|
|
87
87
|
return (isFoodAndBeverageEventService(opts) && !isPackagePricedFoodEventService(opts));
|
|
@@ -112,7 +112,7 @@ export const FULFILLMENT_MODE_LABEL = {
|
|
|
112
112
|
/**
|
|
113
113
|
* Suggested menu category chips shown in the wizard and on the listing.
|
|
114
114
|
* Providers can add custom values; these are just pre-populated starting points.
|
|
115
|
-
* Not SKUs
|
|
115
|
+
* Not SKUs. No flavors, quantities, or prices here.
|
|
116
116
|
*/
|
|
117
117
|
export const FB_MENU_CATEGORY_SUGGESTIONS = {
|
|
118
118
|
Caterer: [
|
|
@@ -220,7 +220,7 @@ export function quotedGuestCount(headcount, minimumQuantity) {
|
|
|
220
220
|
* 2. Compute rate total: baseRateCents × quotedGuests
|
|
221
221
|
* 3. Floor at minimumChargeCents
|
|
222
222
|
*
|
|
223
|
-
* Packages and add-ons are NOT included here
|
|
223
|
+
* Packages and add-ons are NOT included here. They are added on top by
|
|
224
224
|
* frontendServiceBookingUtils (same as for all other service types).
|
|
225
225
|
*/
|
|
226
226
|
export function foodAndBeverageQuoteCents({ baseRateCents, headcount, minimumQuantity, minimumChargeCents, }) {
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Phase 5 of the unified-pricing roadmap
|
|
2
|
+
* Phase 5 of the unified-pricing roadmap. Pure projection of a `ServiceBookingOffer`
|
|
3
3
|
* candidate into expected / worst-case / best-case totals (in cents).
|
|
4
4
|
*
|
|
5
5
|
* Used by:
|
|
@@ -10,17 +10,17 @@
|
|
|
10
10
|
* host's expected attendees and any host-side caps.
|
|
11
11
|
*
|
|
12
12
|
* Heuristics for `worstCaseCents` / `bestCaseCents`:
|
|
13
|
-
* - `FLAT_FEE` / `HOURLY` / `PER_DAY` / `CUSTOM
|
|
13
|
+
* - `FLAT_FEE` / `HOURLY` / `PER_DAY` / `CUSTOM`. All three bands equal the
|
|
14
14
|
* expected total (no variability).
|
|
15
|
-
* - `PER_ATTENDEE` / `PER_PAID_ATTENDEE
|
|
15
|
+
* - `PER_ATTENDEE` / `PER_PAID_ATTENDEE`. Worst case = floor (minimumQuantity
|
|
16
16
|
* * baseRateCents, capped by minimumChargeCents); best case = capped to
|
|
17
17
|
* `maxBillableCents` when present, else `expectedAttendees * 1.5`.
|
|
18
|
-
* - `PER_BASHPOINTS_ATTENDEE
|
|
18
|
+
* - `PER_BASHPOINTS_ATTENDEE`. Same shape but in BashPoints, so we surface
|
|
19
19
|
* `expectedTotalBp` and the USD bands return null.
|
|
20
|
-
* - `TICKET_REVENUE_PERCENTAGE` / `PRODUCT_SALES_PERCENTAGE
|
|
20
|
+
* - `TICKET_REVENUE_PERCENTAGE` / `PRODUCT_SALES_PERCENTAGE`. Caller passes
|
|
21
21
|
* an `expectedBasisCents` (usually the bash's projected ticket revenue or
|
|
22
22
|
* vendor gross sales). Worst case = 0 if pre-sale, best case = basis * pct.
|
|
23
|
-
* - `TIERED
|
|
23
|
+
* - `TIERED`. Worst case = lowest tier price, best case = highest tier
|
|
24
24
|
* price; expected resolves via the supplied `tieredExpectedTierCents`.
|
|
25
25
|
*/
|
|
26
26
|
import type { PricingModel } from "@prisma/client";
|
|
@@ -26,7 +26,7 @@ export function computeOfferComparisonBands(input) {
|
|
|
26
26
|
bestCaseBp: null,
|
|
27
27
|
reasoning: total > 0
|
|
28
28
|
? `Fixed price: you pay ${fmt(total)} regardless of turnout.`
|
|
29
|
-
: "Fixed price
|
|
29
|
+
: "Fixed price. Provider has not set a rate.",
|
|
30
30
|
};
|
|
31
31
|
}
|
|
32
32
|
case "PER_ATTENDEE":
|
|
@@ -102,7 +102,7 @@ export function computeOfferComparisonBands(input) {
|
|
|
102
102
|
expectedTotalBp: null,
|
|
103
103
|
worstCaseBp: null,
|
|
104
104
|
bestCaseBp: null,
|
|
105
|
-
reasoning: `Unrecognized pricing model "${input.pricingModel}"
|
|
105
|
+
reasoning: `Unrecognized pricing model "${input.pricingModel}". Treated as flat.`,
|
|
106
106
|
};
|
|
107
107
|
}
|
|
108
108
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"offerComparisonUtils.js","sourceRoot":"","sources":["../../../src/utils/service/offerComparisonUtils.ts"],"names":[],"mappings":"AAkEA,SAAS,EAAE,CAAC,CAA4B;IACtC,OAAO,CAAC,IAAI,IAAI,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACxE,CAAC;AAED,SAAS,GAAG,CAAC,KAAa;IACxB,OAAO,IAAI,CAAC,KAAK,GAAG,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;AACxC,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,2BAA2B,CACzC,KAA2B;IAE3B,MAAM,QAAQ,GAAG,EAAE,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC;IAC7C,MAAM,MAAM,GAAG,EAAE,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC;IAEzC,QAAQ,KAAK,CAAC,YAAY,EAAE,CAAC;QAC3B,KAAK,UAAU,CAAC;QAChB,KAAK,QAAQ,CAAC;QACd,KAAK,SAAS,CAAC;QACf,KAAK,QAAQ,CAAC,CAAC,CAAC;YACd,MAAM,KAAK,GACT,EAAE,CAAC,KAAK,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;YAC1D,OAAO;gBACL,kBAAkB,EAAE,KAAK;gBACzB,cAAc,EAAE,KAAK;gBACrB,aAAa,EAAE,KAAK;gBACpB,eAAe,EAAE,IAAI;gBACrB,WAAW,EAAE,IAAI;gBACjB,UAAU,EAAE,IAAI;gBAChB,SAAS,EACP,KAAK,GAAG,CAAC;oBACP,CAAC,CAAC,wBAAwB,GAAG,CAAC,KAAK,CAAC,yBAAyB;oBAC7D,CAAC,CAAC,
|
|
1
|
+
{"version":3,"file":"offerComparisonUtils.js","sourceRoot":"","sources":["../../../src/utils/service/offerComparisonUtils.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Phase 0 adoption guardrails
|
|
2
|
+
* Phase 0 adoption guardrails. Aggregate cost exposure for a bash's service
|
|
3
3
|
* bookings. Pure functions so the api endpoint (Prisma query, then this util)
|
|
4
4
|
* and bash-app (display) share one source of truth.
|
|
5
5
|
*
|
|
6
6
|
* Each booking resolves to:
|
|
7
|
-
* - `expectedCents
|
|
8
|
-
* - `worstCaseCents
|
|
7
|
+
* - `expectedCents`. The most-likely total at expected attendance.
|
|
8
|
+
* - `worstCaseCents`. The dollar ceiling if the host's caps trip. For flat
|
|
9
9
|
* models this equals `expectedCents` (no variance). For variable models it
|
|
10
10
|
* equals `maxBillableCents` if set; otherwise `1.5x expected` (matches the
|
|
11
11
|
* `defaultMaxBillableCents` heuristic in `billingCapUtils.ts`).
|
|
@@ -26,7 +26,7 @@ export interface ServiceBookingExposureInput {
|
|
|
26
26
|
label: string;
|
|
27
27
|
/**
|
|
28
28
|
* The pricing model from the booked service's subtype, if known. Phase 0
|
|
29
|
-
* bookings that predate the unified block pass `null
|
|
29
|
+
* bookings that predate the unified block pass `null`. Exposure falls
|
|
30
30
|
* back to flat-rate math.
|
|
31
31
|
*/
|
|
32
32
|
pricingModel?: string | null;
|
|
@@ -48,7 +48,7 @@ export interface ServiceBookingExposureInput {
|
|
|
48
48
|
*/
|
|
49
49
|
maxBillableCents?: number | null;
|
|
50
50
|
/**
|
|
51
|
-
* The booking's grand total (cents) when it was confirmed
|
|
51
|
+
* The booking's grand total (cents) when it was confirmed. Used as the
|
|
52
52
|
* fallback "expected" amount for non-variable bookings whose pricing model
|
|
53
53
|
* isn't yet tracked. Mirrors `ServiceBooking.totalATBCents`.
|
|
54
54
|
*/
|
|
@@ -75,7 +75,7 @@ export interface AggregateExposureSummary {
|
|
|
75
75
|
/** Sum of `worstCaseCents` across all bookings (cents). */
|
|
76
76
|
worstCaseTotalCents: number;
|
|
77
77
|
/**
|
|
78
|
-
* Per-booking breakdown
|
|
78
|
+
* Per-booking breakdown. Preserves input order so callers can render rows
|
|
79
79
|
* alongside the booking list without re-sorting.
|
|
80
80
|
*/
|
|
81
81
|
byBooking: ServiceBookingExposure[];
|
|
@@ -99,7 +99,7 @@ export declare function isVariablePricingModel(model: string | null | undefined)
|
|
|
99
99
|
* - TICKET_REVENUE_PERCENTAGE / PRODUCT_SALES_PERCENTAGE / TIERED / CUSTOM:
|
|
100
100
|
* expected = totalATBCents ?? 0
|
|
101
101
|
* worst = maxBillableCents ?? expected * 1.5 (variance unknown without
|
|
102
|
-
* settlement basis math
|
|
102
|
+
* settlement basis math. See Phase 2 for venue rev-share).
|
|
103
103
|
* - FLAT_FEE / HOURLY / PER_DAY (or null pricingModel): flat → expected = worst.
|
|
104
104
|
*/
|
|
105
105
|
export declare function computeServiceBookingExposure(input: ServiceBookingExposureInput): ServiceBookingExposure;
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Phase 0 adoption guardrails
|
|
2
|
+
* Phase 0 adoption guardrails. Aggregate cost exposure for a bash's service
|
|
3
3
|
* bookings. Pure functions so the api endpoint (Prisma query, then this util)
|
|
4
4
|
* and bash-app (display) share one source of truth.
|
|
5
5
|
*
|
|
6
6
|
* Each booking resolves to:
|
|
7
|
-
* - `expectedCents
|
|
8
|
-
* - `worstCaseCents
|
|
7
|
+
* - `expectedCents`. The most-likely total at expected attendance.
|
|
8
|
+
* - `worstCaseCents`. The dollar ceiling if the host's caps trip. For flat
|
|
9
9
|
* models this equals `expectedCents` (no variance). For variable models it
|
|
10
10
|
* equals `maxBillableCents` if set; otherwise `1.5x expected` (matches the
|
|
11
11
|
* `defaultMaxBillableCents` heuristic in `billingCapUtils.ts`).
|
|
@@ -54,7 +54,7 @@ export function isVariablePricingModel(model) {
|
|
|
54
54
|
* - TICKET_REVENUE_PERCENTAGE / PRODUCT_SALES_PERCENTAGE / TIERED / CUSTOM:
|
|
55
55
|
* expected = totalATBCents ?? 0
|
|
56
56
|
* worst = maxBillableCents ?? expected * 1.5 (variance unknown without
|
|
57
|
-
* settlement basis math
|
|
57
|
+
* settlement basis math. See Phase 2 for venue rev-share).
|
|
58
58
|
* - FLAT_FEE / HOURLY / PER_DAY (or null pricingModel): flat → expected = worst.
|
|
59
59
|
*/
|
|
60
60
|
export function computeServiceBookingExposure(input) {
|
|
@@ -81,7 +81,7 @@ export function computeServiceBookingExposure(input) {
|
|
|
81
81
|
expected = expectedAttendees * baseRate;
|
|
82
82
|
}
|
|
83
83
|
else {
|
|
84
|
-
// Revenue-share / tiered / custom
|
|
84
|
+
// Revenue-share / tiered / custom. TotalATBCents is the most we know.
|
|
85
85
|
expected = Math.max(0, flatFallback);
|
|
86
86
|
}
|
|
87
87
|
// Worst case prefers the explicit `maxBillableCents` snapshot, then the
|