Please note that this documentation is for the most recent version of this extension. It may not be relevant for older versions. Related documentation can be found in the documentation directory of the extension.
Basket order on pre payment
An order has been successfully placed and an order number and invoice number have been assigned.For prepayment orders, shipping will only occur after full payment has been received.
The order is binding upon completion of the checkout process. Payment is made in advance by the customer and then manually recorded in the system.The order process is only completed once the payment has been processed and – if physical goods are involved – the order has been shipped.
stateDiagram-v2
%% Frontend
[*] --> prepared : Customer builds cart\nand starts checkout
prepared --> ordered : Checkout completed\nConfirmation email\nInvoice number
%% Payment required before shipping
ordered --> paid : Payment recorded manually\n(payment received confirmed)
%% Shipping & completion
paid --> shipped : Goods shipped
paid --> processed : Completed without shipping\n(e.g., digital service)
shipped --> processed : Completed after shipping
%% Cancellation due to non-payment
ordered --> canceled_unpaid : No payment\nCancellation
canceled_unpaid --> processed : Cancellation completed
%% Conditions
note right of processed
Conditions:
- paid_date MUST be set
- shipped_date MUST be set
if shipping has occurred
end note
Further actions:
- Returns: Possible as soon as the goods have been shipped – i.e., in the status
shippedorprocessed. - Deletion: Deleting an order is only possible in the status
prepared.
TypoScript Configuration
plugin.tx_shop.settings.basketOrder {
orderOptions {
prePayment {
active = {$themes.configuration.extension.shop.checkout.prePayment.active}
attachProductFilesToAdminEmail = {$themes.configuration.extension.shop.checkout.prePayment.attachProductFilesToAdminEmail}
attachProductFilesToCustomerEmail = {$themes.configuration.extension.shop.checkout.prePayment.attachProductFilesToCustomerEmail}
attachInvoiceToAdminEmail = {$themes.configuration.extension.shop.checkout.prePayment.attachInvoiceToAdminEmail}
attachInvoiceToCustomerEmail = {$themes.configuration.extension.shop.checkout.prePayment.attachInvoiceToCustomerEmail}
attachDeliveryNoteToAdminEmail = {$themes.configuration.extension.shop.checkout.prePayment.attachDeliveryNoteToAdminEmail}
attachDeliveryNoteToCustomerEmail = {$themes.configuration.extension.shop.checkout.prePayment.attachDeliveryNoteToCustomerEmail}
attachOrderXmlToAdminEmail = {$themes.configuration.extension.shop.checkout.prePayment.attachOrderXmlToAdminEmail}
storeOrderXmlInFolder = {$themes.configuration.extension.shop.checkout.prePayment.storeOrderXmlInFolder}
storeOrderXmlInFolderName = {$themes.configuration.extension.shop.checkout.prePayment.storeOrderXmlInFolderName}
type = prePayment
checkoutPid = {$themes.configuration.pages.shop.checkout}
successPid = {$themes.configuration.pages.shop.checkoutSuccess}
errorPid = {$themes.configuration.pages.shop.checkoutError}
service = CodingMs\Shop\Service\Checkout\PrePaymentCheckoutService
button {
title = tx_shop_label.pre_payment_button_title
label = tx_shop_label.pre_payment_button_label
icon = fa fa-shopping-cart
}
fields {
available = {$themes.configuration.extension.shop.checkout.prePayment.fields.available}
required = {$themes.configuration.extension.shop.checkout.prePayment.fields.required}
}
status {
prepared {
allowed {
ordered =
}
}
ordered {
allowed {
paid =
canceled_unpaid =
}
}
paid {
allowed {
shipped {
# Show marked-as-shipped when not "only digital products" are in basket-order
condition {
basket = NotContainsDigitalProductsOnly
}
}
processed {
# Show marked-as-shipped when "only digital products" are in basket-order
condition {
basket = ContainsDigitalProductsOnly
}
}
}
}
shipped {
# Hide whole shipped state when "only digital products" are in basket-order
hidden {
condition {
basket = ContainsDigitalProductsOnly
}
}
allowed {
processed =
returned {
# Show marked-as-returned when not "only digital products" are in basket-order
condition {
basket = NotContainsDigitalProductsOnly
}
}
}
}
canceled_unpaid {
allowed {
processed =
}
}
processed {
allowed {
returned {
# Show marked-as-returned when not "only digital products" are in basket-order
condition {
basket = NotContainsDigitalProductsOnly
}
}
}
}
}
email {
customerConfirmation {
active = {$themes.configuration.extension.shop.checkout.prePayment.email.customerConfirmation.active}
from {
name = {$themes.configuration.extension.shop.email.from.name}
email = {$themes.configuration.extension.shop.email.from.email}
}
to {
# Customer address data
}
template = {$themes.configuration.extension.shop.email.templates.prePayment.customerConfirmation}
}
order {
active = {$themes.configuration.extension.shop.checkout.prePayment.email.order.active}
from {
name = {$themes.configuration.extension.shop.email.from.name}
email = {$themes.configuration.extension.shop.email.from.email}
}
to {
name = {$themes.configuration.extension.shop.email.to.name}
email = {$themes.configuration.extension.shop.email.to.email}
}
template = {$themes.configuration.extension.shop.email.templates.prePayment.order}
}
}
}
}
}
