schafferer/multi-channel-voucher-bundle
general erp voucher support integration, including multi-channel voucher support, which can be used in real world interaction.
README
Mit #28725 wurde dieses Feature-Bundle initial für die Warenwirtschaft SHC implementiert. Mit #54849 wurde es dann für die neue Warenwirtschaft ApPlus grundlegend überarbeitet, und anschließend nach Abschaltung von SHC wurden die veralteten Inhalte entsprechend aufgeräumt oder gänzlich entfernt.
Allgemein
Bei Multi-Channel-Gutscheinen handelt es sich um Kaufgutscheine, die wie der Name schon sagt i.d.R. käuflich erworben wurden. Mittlerweile können diese aber auch über andere Aktionen erworben werden, wie z.B. durch das Anmelden für den Newsletter, und folglich spielt es keine Rolle, ob der Erwerb in einem Ladenlokal oder direkt im Shop stattgefunden hat (tischwelt hat kein Ladenlokal).
Namensgebend war die anfängliche Besonderheit, dass diese Gutscheine sowohl im Shop als auch im Ladenlokal einlösbar waren, was aber durch die Integration bei Tischwelt mit #59191 nicht mehr gegeben ist.
Diese Multi-Channel-Gutscheine (im folgenden MCV) müssen vor Verwendung in der Warenwirtschaft (ApPlus) erfasst worden sein. Zusätzlich muss im Shop die dafür verwendete Gutschein-Serie entsprechend markiert
shop_voucher_series.is_multi_channel_coucher => 1
und auch der zugehörige Shop-Artikel definiert werden, der als Grundlage für die Erstellung von Gutschein-Codes im Shop dient (z.B. Shop-Artikel "20 € Gutschein")
shop_voucher_series.wawi_export_shop_articlenumber => <shopArticleNumber>
Prozesse
Es gibt zwar einen "Command" für die Erstellung von Gutscheinen in ApPlus, aber aktuell wird dieser Prozess nur aktiv beim Erstellen von Newsletter-Gutscheinen verwendet, wenn die dort definierte Gutschein-Serie als MCV konfiguriert wurde.
Gutscheinerstellung im Shop (Newsletter-Gutscheine mit aktivem MCV-Setting an der Serie)
Wenn wie bereits erwähnt die für den Newsletter-Gutschein definierte Gutschein-Serie als MCV konfiguriert wurde, dann
wird der zugehörige Code nicht lokal im Shop generiert (\TShopVoucher::GenerateVoucherCode bzw. über das CMS mittels
der redundanten Methode in \TTools::GenerateVoucherCode), sondern aus der Warenwirtschaft (ApPlus) bezogen, bzw.
"extern" erstellt:
\Schafferer\MultiChannelVoucherBundle\Bridge\ApPlusBridge\ExternalVoucherFactory::createVoucherCode
Weitere Details zum Newsletter-Anmelde-Prozess siehe
\Schafferer\NewsletterNewSubscriptionVoucherBundle\Bridge\Chameleon\Module\NewsletterSignupModule.
Gutscheinverwendung bei Bestellung
Gutschein-Codes werden während dem Bestellvorgang entsprechend geprüft. Hierbei wird zunächst der Code über die MCV-Schnittstelle der Warenwirtschaft erfragt, und falls vorhanden auch als MCV behandelt. Dabei muss sichergestellt sein, dass am übermittelten Gutschein-Datenobjekt die richtige Serie enthalten ist, im Shop als MCV-Serie konfiguriert wurde und auch der zugehörige Shop-Artikel definiert und im Shop verfügbar ist (s.o.):
\Schafferer\MultiChannelVoucherBundle\Bridge\Chameleon\MultiChannelVoucherShopBasket::refreshMultiChannelVouchers
Hierbei werden die verwendeten Gutscheine lokal im Shop aktualisiert oder als neue angelegt, falls nicht bereits vorhanden:
\Schafferer\MultiChannelVoucher\VoucherService::updateOrCreateLocalFromRemote
Achtung: beim Anlegen neuer Gutscheine wird kein Gutschein-Code erstellt, sondern lediglich das bereits zuvor erstellte Datenmodel (
\Schafferer\MultiChannelVoucher\DataModel\VoucherDataModel) lokal persistiert.
Nach Bestellabschluss werden die verwendeten MCV-Gutscheine dann mit ihrem aktualisierten Guthaben an die Warenwirtschaft übermittelt:
\Schafferer\MultiChannelVoucherBundle\Bridge\ApPlusBridge\OrderPostProcessorMultiChannelVoucher::process