Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions assets/js/const.template.js
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,8 @@ const PADDLE_HUB_MANAGED_MONTHLY_PLAN_ID = {{ .Site.Params.paddleHubManagedMonth
const PADDLE_PRICES_URL = '{{ .Site.Params.paddlePricesUrl }}';
const PADDLE_DESKTOP_SALE_PRICE_ID = '{{ .Site.Params.paddleDesktopSalePriceId }}';
const PADDLE_ANDROID_SALE_PRICE_ID = '{{ .Site.Params.paddleAndroidSalePriceId }}';
const ESPOCRM_HUB_SELF_HOSTED_PRODUCT_ID = '{{ .Site.Params.espocrmHubSelfHostedProductId }}';
const ESPOCRM_HUB_MANAGED_PRODUCT_ID = '{{ .Site.Params.espocrmHubManagedProductId }}';
const LEGACY_STORE_URL = '{{ .Site.Params.legacyStoreUrl }}';
const HUB_MANAGED_DOMAIN = '{{ .Site.Params.hubManagedDomain }}';
const STRIPE_PK = '{{ .Site.Params.stripePk }}';
494 changes: 310 additions & 184 deletions assets/js/hubsubscription.js

Large diffs are not rendered by default.

2 changes: 2 additions & 0 deletions config/_default/hugo.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -44,6 +44,8 @@ module:
target: assets/js/jquery
- source: node_modules/alpinejs/dist
target: assets/js/alpinejs
- source: node_modules/@alpinejs/focus/dist
target: assets/js/alpinejs-focus
- source: node_modules/lazysizes
target: assets/js/lazysizes
- source: node_modules/js-yaml/dist
Expand Down
4 changes: 4 additions & 0 deletions config/development/params.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -21,5 +21,9 @@ paddleHubManagedYearlyPlanId: 42235
paddleHubManagedMonthlyPlanId: 82379
paddlePricesUrl: https://sandbox-checkout.paddle.com/api/2.0/prices

# ESPOCRM
espocrmHubSelfHostedProductId: 69bd302d5c65eabaa
espocrmHubManagedProductId: 69bd302d521a70103

# STRIPE
stripePk: pk_test_51RCM24IBZmkR4F9UiLBiSmsAnJvWqmHcDLxXR8ABKK1MNsZk3zCk2VJW7ZfaBlD81zpQxCX243sS3LEp9dABwiG800kJnGykDF
4 changes: 4 additions & 0 deletions config/production/params.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -21,5 +21,9 @@ paddleHubManagedYearlyPlanId: 807339
paddleHubManagedMonthlyPlanId: 914173
paddlePricesUrl: https://checkout.paddle.com/api/2.0/prices

# ESPOCRM
espocrmHubSelfHostedProductId: # TODO: set production EspoCRM Self-Hosted Standard product id
espocrmHubManagedProductId: # TODO: set production EspoCRM Managed Standard product id

Comment on lines +24 to +27

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🗄️ Data Integrity & Integration | 🟠 Major | ⚡ Quick win

Fill in production EspoCRM product IDs before deploy.

These placeholders are empty with TODO markers. hubsubscription.js's invoiceProductId() returns this value directly and feeds it into both loadInvoicePrice() (which silently no-ops on falsy/empty values, so the invoice price never loads) and invoiceCheckout() (which POSTs it as product_id regardless of emptiness). Deploying with these unset will silently break the invoice checkout flow in production.

Ensure these are populated with the actual EspoCRM Self-Hosted/Managed product IDs before this PR ships to production.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@config/production/params.yaml` around lines 26 - 29, Populate the EspoCRM
product ID placeholders in the production params so `invoiceProductId()` in
`hubsubscription.js` always receives valid values for both self-hosted and
managed plans. Update `espocrmHubSelfHostedProductId` and
`espocrmHubManagedProductId` in the production configuration with the real
production product IDs, and verify the values used by `loadInvoicePrice()` and
`invoiceCheckout()` are non-empty before deploying.

# STRIPE
stripePk: pk_live_eSasX216vGvC26GdbVwA011V
4 changes: 4 additions & 0 deletions config/staging/params.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -21,5 +21,9 @@ paddleHubManagedYearlyPlanId: 42235
paddleHubManagedMonthlyPlanId: 82379
paddlePricesUrl: https://sandbox-checkout.paddle.com/api/2.0/prices

# ESPOCRM
espocrmHubSelfHostedProductId: 69bd302d5c65eabaa
espocrmHubManagedProductId: 69bd302d521a70103

# STRIPE
stripePk: pk_test_51RCM24IBZmkR4F9UiLBiSmsAnJvWqmHcDLxXR8ABKK1MNsZk3zCk2VJW7ZfaBlD81zpQxCX243sS3LEp9dABwiG800kJnGykDF
54 changes: 54 additions & 0 deletions data/de/eu_countries.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
- code: AT
name: Österreich
- code: BE
name: Belgien
- code: BG
name: Bulgarien
- code: HR
name: Kroatien
- code: CY
name: Zypern
- code: CZ
name: Tschechien
- code: DK
name: Dänemark
- code: EE
name: Estland
- code: FI
name: Finnland
- code: FR
name: Frankreich
- code: DE
name: Deutschland
- code: GR
name: Griechenland
- code: HU
name: Ungarn
- code: IE
name: Irland
- code: IT
name: Italien
- code: LV
name: Lettland
- code: LT
name: Litauen
- code: LU
name: Luxemburg
- code: MT
name: Malta
- code: NL
name: Niederlande
- code: PL
name: Polen
- code: PT
name: Portugal
- code: RO
name: Rumänien
- code: SK
name: Slowakei
- code: SI
name: Slowenien
- code: ES
name: Spanien
- code: SE
name: Schweden
54 changes: 54 additions & 0 deletions data/en/eu_countries.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
- code: AT
name: Austria
- code: BE
name: Belgium
- code: BG
name: Bulgaria
- code: HR
name: Croatia
- code: CY
name: Cyprus
- code: CZ
name: Czechia
- code: DK
name: Denmark
- code: EE
name: Estonia
- code: FI
name: Finland
- code: FR
name: France
- code: DE
name: Germany
- code: GR
name: Greece
- code: HU
name: Hungary
- code: IE
name: Ireland
- code: IT
name: Italy
- code: LV
name: Latvia
- code: LT
name: Lithuania
- code: LU
name: Luxembourg
- code: MT
name: Malta
- code: NL
name: Netherlands
- code: PL
name: Poland
- code: PT
name: Portugal
- code: RO
name: Romania
- code: SK
name: Slovakia
- code: SI
name: Slovenia
- code: ES
name: Spain
- code: SE
name: Sweden
89 changes: 79 additions & 10 deletions i18n/de.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -522,8 +522,6 @@
translation: "Status"
- id: hub_billing_manage_status_active
translation: "Aktiv"
- id: hub_billing_manage_status_pastdue
translation: "Überfällig"
- id: hub_billing_manage_status_trialing
translation: "Testphase"
- id: hub_billing_manage_status_paused
Expand All @@ -546,12 +544,10 @@

- id: hub_billing_manage_payment_info_title
translation: "Zahlungsinformationen"
- id: hub_billing_manage_payment_info_credit_card
translation: "Kreditkarte"
- id: hub_billing_manage_payment_info_credit_card_last_four_digits_description
translation: "Endet mit"
- id: hub_billing_manage_payment_info_paypal
translation: "PayPal"
- id: hub_billing_manage_payment_info_card
translation: "Karte / PayPal"
- id: hub_billing_manage_payment_info_invoice
translation: "Rechnung"
- id: hub_billing_manage_payment_info_update_action
translation: "Zahlungsmethode aktualisieren"

Expand All @@ -564,8 +560,6 @@
- id: hub_billing_manage_license_key_retry_action
translation: "Erneut versuchen"

- id: hub_billing_manage_modal_charge_amount_description
translation: "Rechnungsbetrag"
- id: hub_billing_manage_modal_continue
translation: "Weiter"
- id: hub_billing_manage_modal_confirm
Expand All @@ -588,8 +582,18 @@
translation: "Neue Anzahl der Sitze"
- id: hub_billing_manage_change_quantity_confirmation_increase_warning
translation: "Du bist dabei, das Sitzplatzlimit zu erhöhen. Wenn du dies bestätigst, wird die die Differenz sofort in Rechnung gestellt."
- id: hub_billing_manage_change_quantity_confirmation_increase_warning_invoice
translation: "Du bist dabei, das Sitzplatzlimit zu erhöhen. Wenn du dies bestätigst, werden die zusätzlichen Sitze per Rechnung abgerechnet."
- id: hub_billing_manage_change_quantity_confirmation_decrease_warning
translation: "Du bist dabei, das Sitzplatzlimit zu verringern. Wenn du dies bestätigst, wird deine nächste Zahlung um die Differenz reduziert."
- id: hub_billing_manage_change_quantity_confirmation_decrease_warning_invoice
translation: "Du bist dabei, das Sitzplatzlimit zu verringern. Wenn du dies bestätigst, wird die Reduzierung auf deiner nächsten Rechnung berücksichtigt."
- id: hub_billing_manage_change_quantity_confirmation_prorated_invoice
translation: "Anteiliger Betrag für den laufenden Zeitraum (wird jetzt in Rechnung gestellt)"
- id: hub_billing_manage_change_quantity_confirmation_prorated_credit_invoice
translation: "Anteilige Gutschrift für den laufenden Zeitraum"
- id: hub_billing_manage_change_quantity_confirmation_new_recurring_invoice
translation: "Neuer Jahresbetrag (netto)"

- id: hub_billing_checkout_description
translation: "Schöpfe das volle Potenzial deiner Hub-Instanz aus und hol dein Team mit der clientseitigen Verschlüsselung für deinen Cloud-Speicher an Bord."
Expand Down Expand Up @@ -628,6 +632,71 @@
- id: hub_billing_checkout_standard_submit
translation: "Zur Zahlung"

- id: hub_billing_checkout_payment_method
translation: "Zahlungsmethode"
- id: hub_billing_checkout_payment_method_card
translation: "Per Karte zahlen"
- id: hub_billing_checkout_payment_method_invoice
translation: "Kauf auf Rechnung"

- id: hub_billing_checkout_invoice_contact_first_name
translation: "Vorname"
- id: hub_billing_checkout_invoice_contact_last_name
translation: "Nachname"
- id: hub_billing_checkout_invoice_contact_email
translation: "E-Mail"
- id: hub_billing_checkout_invoice_contact_email_hint
translation: "Mit dieser E-Mail-Adresse verwaltest du später dein Abonnement."
- id: hub_billing_checkout_invoice_account_name
translation: "Firmenname"
- id: hub_billing_checkout_invoice_address_street
translation: "Straße und Hausnummer"
- id: hub_billing_checkout_invoice_address_postal_code
translation: "Postleitzahl"
- id: hub_billing_checkout_invoice_address_city
translation: "Stadt"
- id: hub_billing_checkout_invoice_address_country
translation: "Land"
- id: hub_billing_checkout_invoice_address_country_placeholder
translation: "Bitte auswählen"
- id: hub_billing_checkout_invoice_non_eu_hint
translation: "Kauf auf Rechnung ist nur innerhalb der EU möglich. Außerhalb der EU? Kontaktiere uns bitte über die Enterprise-Option."
- id: hub_billing_checkout_invoice_vat_id
translation: "USt-IdNr."
- id: hub_billing_checkout_invoice_vat_id_hint
translation: "Erforderlich für EU-Länder außerhalb Deutschlands."
- id: hub_billing_checkout_invoice_instruction
translation: "Eine Rechnung wird ausgestellt und an deine E-Mail-Adresse gesendet."
- id: hub_billing_checkout_invoice_submit
translation: "Auf Rechnung kaufen"
- id: hub_billing_checkout_invoice_total_suffix
translation: "pro Jahr (netto)"
- id: hub_billing_checkout_invoice_total_vat_hint
translation: "zzgl. 19 % USt."
- id: hub_billing_checkout_invoice_total_reverse_charge_hint
translation: "Reverse-Charge-Verfahren – Steuerschuldnerschaft des Leistungsempfängers"
- id: hub_billing_checkout_invoice_confirm_title
translation: "Bestellübersicht"
- id: hub_billing_checkout_invoice_confirm_unit_price
translation: "Preis pro Seat"
- id: hub_billing_checkout_invoice_quantity_decrease
translation: "Anzahl der Seats verringern"
- id: hub_billing_checkout_invoice_quantity_increase
translation: "Anzahl der Seats erhöhen"
- id: hub_billing_checkout_invoice_price_loading
translation: "Preis wird geladen …"
- id: hub_billing_checkout_invoice_price_error
translation: "Der Preis konnte nicht geladen werden."
- id: hub_billing_checkout_invoice_price_retry
translation: "Erneut versuchen"

- id: hub_billing_checkout_success_description
translation: "Vielen Dank für deinen Kauf! Dein Abonnement ist jetzt aktiv."
- id: hub_billing_checkout_success_invoice_description
translation: "Eine Rechnung wird ausgestellt und an deine E-Mail-Adresse gesendet."
- id: hub_billing_checkout_success_relicense_description
translation: "Um deine Lizenz zu erhalten, kehre bitte zu deiner Hub-Instanz zurück und starte den Abonnementvorgang erneut."

- id: hub_billing_checkout_community_title
translation: "Community"
- id: hub_billing_checkout_community_statement
Expand Down
Loading