PHPackages                             innomedia/shopextensions - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Utility &amp; Helpers](/categories/utility)
4. /
5. innomedia/shopextensions

ActiveLibrary[Utility &amp; Helpers](/categories/utility)

innomedia/shopextensions
========================

Silverstripe 5 Basic Shop Extensions

6.0.9(yesterday)0473BSD-3-ClausePHP

Since Sep 21Pushed yesterday2 watchersCompare

[ Source](https://github.com/innomedia/shopextensions)[ Packagist](https://packagist.org/packages/innomedia/shopextensions)[ RSS](/packages/innomedia-shopextensions/feed)WikiDiscussions master Synced today

READMEChangelog (10)Dependencies (9)Versions (38)Used By (0)

shopextensions
==============

[](#shopextensions)

German-market extensions for [silvershop/core](https://github.com/silvershop/silverstripe-shop). The base module covers a shop, but not everything the German market needs — this package fills those gaps without forking silvershop, so projects ported from SilverStripe 4/5 to 6 keep working.

> **Setup- &amp; Konfigurationsanleitung:** siehe [`docs/USAGE.md`](docs/USAGE.md)(Installation, Pflicht-Setup, alle Config-YAML-Variablen, SiteConfig-Felder).

What it does
------------

[](#what-it-does)

**Invoices &amp; PDFs** — `OrderExtension` adds invoice/billing meta fields, assigns sequential invoice numbers from a configurable number range, and renders invoice + delivery-slip PDFs via dompdf (`Receipt.ss` / `DeliverySlip.ss`). The PDFs are streamed by the access-controlled `OrderReceiptController` (route `OrderReceipt/StreamReceipt/`, plus a `PreviewReceipt/`action that rasterises the first page to a PNG via ImageMagick for the CMS preview; download and preview restricted to the owning member or a CMS user) and, for customers, by `AccountPageControllerExtension`. Zero-value (0 €) orders get no invoice unless `Order.issue_invoice_for_zero_total` is enabled. Also provides `getDescription()`, which is **required** by payment gateways such as Mollie/PayPal.

**Checkout usability** — `CheckoutPageControllerExtension` + `CustomCheckoutComponentConfig`swap in a cleaner checkout form (CompositeFields flattened, shipping address hidden when nothing ships, zero-total redirect fixed). `AddressExtension` localises country names and adds Company/Name fields. `AjaxCartController` / `ShoppingCartControllerExtension` / `ProductControllerExtension` power the AJAX mini-cart and live variant prices.

**Payment robustness** — `ExtendedPurchaseService` injects the order description, terms-page service URL and language into the gateway request and removes reserved params (a common Mollie failure).

**Tax &amp; shipping** — `CustomTaxModifier` supports inclusive/exclusive tax and per-product or static rates; `ProductExtension` adds the per-product tax field. `CustomShippingModifier` does weight/country-based shipping.

**Notifications** — `CustomOrderEmailNotifier` (Injector override) sends order emails through the `SendOrderEmailJob` queued job and attaches the invoice PDF; attachment is configurable per mail type.

**Configuration** — `SiteConfigExtension` moves operator-facing settings (receipt logo, header, footer, phone, admin notification recipient, invoice number prefix/start, checkout hints) into the CMS SiteConfig. The `enabled_fields` config array selects which fields are shown per project; see `_config/siteconfig.yml.example`.

**Optional add-ons** (shipped but off by default, opt-in via YAML — see `docs/USAGE.md` §7–8):

- **Accounting export** — `OrderTaxExtension` (per-tax-rate breakdown with coupon/gift-card/ shipping distribution, B2C &amp; B2B) + `ReceiptExportController` (DATEV-EXTF CSV + collected PDF), with a month/year trigger panel in the Shop SiteConfig tab. Enable via `_config/receiptexport.yml.example`.
- **Checkout payment tiles** — `PaymentMethodComponent` lets the customer pick the concrete payment method (e.g. a Mollie sub-method) as a JS-free radio tile; the choice is persisted on the order and forwarded to the provider (`paymentMethod`) to skip its selection screen. Enable via `_config/paymenttiles.yml.example`.

Debug
-----

[](#debug)

Overwrite `Receipt.ss` and `DeliverySlip.ss` in templates. On 404 after e.g. Mollie returns "paid" and the order is not found, check if emails can be sent without error.

Debug Hint: set Order to paid in Database and call /OrderReceipt/StreamDeliverySlip/$OrderID and /OrderReceipt/StreamReceipt/$OrderID to test for errors

You may also need to apply the silvershop.patch for Address Fields to correctly display in default templates just add/require "cweagans/composer-patches" -&gt; composer update -&gt; add
"patches": { "silvershop/core": { "Made Address Fields not in composite field": "silvershop.patch" } }, to your "extra" in composer.json and update again (first one needed for composer-patches to install second needed for the patch to be applied)

###  Health Score

51

—

FairBetter than 95% of packages

Maintenance100

Actively maintained with recent releases

Popularity15

Limited adoption so far

Community11

Small or concentrated contributor base

Maturity66

Established project with proven stability

 Bus Factor2

2 contributors hold 50%+ of commits

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~62 days

Recently: every ~5 days

Total

35

Last Release

1d ago

Major Versions

0.5.3 → 1.0.02024-07-18

0.5.4 → 1.1.42025-07-14

1.1.5 → 6.0.02026-06-02

### Community

Maintainers

![](https://www.gravatar.com/avatar/c4b6c925a833158ea12f065131daea53a49fc4b76323ad05e7b67d35821172a5?d=identicon)[chromos33](/maintainers/chromos33)

---

Top Contributors

[![chromos33](https://avatars.githubusercontent.com/u/2787884?v=4)](https://github.com/chromos33 "chromos33 (16 commits)")[![moritz-sauer-13](https://avatars.githubusercontent.com/u/43135946?v=4)](https://github.com/moritz-sauer-13 "moritz-sauer-13 (13 commits)")[![innomedia](https://avatars.githubusercontent.com/u/1412756?v=4)](https://github.com/innomedia "innomedia (5 commits)")

### Embed Badge

![Health badge](/badges/innomedia-shopextensions/health.svg)

```
[![Health](https://phpackages.com/badges/innomedia-shopextensions/health.svg)](https://phpackages.com/packages/innomedia-shopextensions)
```

###  Alternatives

[helsingborg-stad/municipio

A bootstrap theme for creating municipality sites.

4028.5k10](/packages/helsingborg-stad-municipio)[civicrm/civicrm-core

Open source constituent relationship management for non-profits, NGOs and advocacy organizations.

751291.4k43](/packages/civicrm-civicrm-core)[verbb/formie

The most user-friendly forms plugin for Craft.

102393.6k70](/packages/verbb-formie)[solspace/craft-freeform

The most flexible and user-friendly form building plugin!

54681.3k19](/packages/solspace-craft-freeform)[silverstripe/userforms

UserForms enables CMS users to create dynamic forms via a drag and drop interface and without getting involved in any PHP code

1371.1M85](/packages/silverstripe-userforms)[symbiote/silverstripe-advancedworkflow

Adds configurable workflow support to the CMS, with a GUI for creating custom workflow definitions.

46302.4k9](/packages/symbiote-silverstripe-advancedworkflow)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
