Skip to content
Code-Schnipsel Gruppen Projekte
Commit c580a59d erstellt von Patrick Müller's avatar Patrick Müller
Dateien durchsuchen

feat: coupon products (temp commit)

Übergeordneter 34fba0e6
No related branches found
No related tags found
Keine zugehörigen Merge Requests gefunden
......@@ -104,6 +104,13 @@
width: 50%;
}
.quiqqer-coupons-manager-create-advanced-discount table,
.quiqqer-coupons-manager-create-advanced-discount table tbody,
.quiqqer-coupons-manager-create-advanced-discount table tbody tr,
.quiqqer-coupons-manager-create-advanced-discount table tbody tr td {
display: block;
}
.quiqqer-coupons-manager-create-advanced-restrictions {
padding-left: 10px;
width: 50%;
......
......@@ -36,12 +36,4 @@
fire="\QUI\ERP\Coupons\Events::onQuiqqerOrderBasketRemovePos"
/>
<event on="onQuiqqerOrderOrderProcessGetBodyBegin"
fire="\QUI\ERP\Coupons\Events::onQuiqqerOrderOrderProcessGetBodyBegin"
/>
<event on="onQuiqqerOrderBasketToOrderBegin"
fire="\QUI\ERP\Coupons\Events::onQuiqqerOrderBasketToOrderBegin"
/>
</events>
......@@ -12,8 +12,6 @@
use QUI\ERP\Coupons\Handler as CouponsHandler;
use QUI\ERP\Discount\EventHandling as DiscountEvents;
use QUI\ERP\Coupons\Products\CouponProductType;
use QUI\ERP\Coupons\Products\Handler as CouponProductsHandler;
use QUI\ERP\Products\Handler\Products;
/**
* Class Events
......@@ -421,7 +419,7 @@ protected static function addCouponToOrder($Order, $coupon)
protected static function createProductFields()
{
$fields = [
CouponProductType::PRODUCT_FIELD_ID_TRANSFERABLE => [
CouponProductType::PRODUCT_FIELD_ID_TRANSFERABLE => [
'title' => [
'de' => 'Gutschein-Code ist übertragbar',
'en' => 'Coupon code is transferable'
......@@ -430,7 +428,7 @@ protected static function createProductFields()
'public' => false,
'standard' => false
],
CouponProductType::PRODUCT_FIELD_ID_GENERATE_PDF => [
CouponProductType::PRODUCT_FIELD_ID_GENERATE_PDF => [
'title' => [
'de' => 'Gutschein-Code als PDF bereitstellen',
'en' => 'Provide coupon code as PDF'
......@@ -439,7 +437,7 @@ protected static function createProductFields()
'public' => false,
'standard' => false
],
CouponProductType::PRODUCT_FIELD_ID_COUPON_AMOUNT => [
CouponProductType::PRODUCT_FIELD_ID_COUPON_AMOUNT => [
'title' => [
'de' => 'Gutschein Wert',
'en' => 'Coupon amount'
......@@ -448,7 +446,7 @@ protected static function createProductFields()
'public' => false,
'standard' => false
],
CouponProductType::PRODUCT_FIELD_ID_DAYS_VALID => [
CouponProductType::PRODUCT_FIELD_ID_DAYS_VALID => [
'title' => [
'de' => 'Gutschein-Code Gültigkeit (Tage)',
'en' => 'Coupon code validity (days)'
......@@ -457,7 +455,7 @@ protected static function createProductFields()
'public' => false,
'standard' => false
],
CouponProductType::PRODUCT_FIELD_ID_COUPON_DESCRIPTION => [
CouponProductType::PRODUCT_FIELD_ID_COUPON_DESCRIPTION => [
'title' => [
'de' => 'Gutschein-Beschreibung',
'en' => 'Coupon description'
......@@ -465,6 +463,15 @@ protected static function createProductFields()
'type' => Fields::TYPE_INPUT_MULTI_LANG,
'public' => false,
'standard' => false
],
CouponProductType::PRODUCT_FIELD_ID_IS_PRODUCT_SPECIFIC_COUPON => [
'title' => [
'de' => 'Ist Gutschein für ein spezifisches Produkt ("Einzweck-Gutschein")',
'en' => 'Is coupon for a specific product ("single purpose coupon")'
],
'type' => Fields::TYPE_BOOL,
'public' => false,
'standard' => false
]
];
......@@ -515,11 +522,12 @@ public static function onQuiqqerProductsProductCreate(ProductInterface $Product)
}
$fields = [
CouponProductType::PRODUCT_FIELD_ID_TRANSFERABLE => true,
CouponProductType::PRODUCT_FIELD_ID_GENERATE_PDF => true,
CouponProductType::PRODUCT_FIELD_ID_COUPON_AMOUNT => null,
CouponProductType::PRODUCT_FIELD_ID_DAYS_VALID => 1095, // 3 years
CouponProductType::PRODUCT_FIELD_ID_COUPON_DESCRIPTION => null
CouponProductType::PRODUCT_FIELD_ID_TRANSFERABLE => true,
CouponProductType::PRODUCT_FIELD_ID_GENERATE_PDF => true,
CouponProductType::PRODUCT_FIELD_ID_COUPON_AMOUNT => null,
CouponProductType::PRODUCT_FIELD_ID_DAYS_VALID => 1095, // 3 years
CouponProductType::PRODUCT_FIELD_ID_COUPON_DESCRIPTION => null,
CouponProductType::PRODUCT_FIELD_ID_IS_PRODUCT_SPECIFIC_COUPON => false
];
foreach ($fields as $fieldId => $value) {
......@@ -552,62 +560,4 @@ public static function onQuiqqerOrderCreated(AbstractOrder $Order)
{
QUI\ERP\Coupons\Products\Handler::createCouponCodesFromOrder($Order);
}
public static function onQuiqqerOrderBasketToOrderBegin(
QUI\ERP\Order\Basket\BasketOrder $BasketOrder,
AbstractOrder $Order,
array &$products
) {
foreach ($products as $k => $product) {
$products[$k]['vat'] = 0;
}
}
/**
* quiqqer/order: onQuiqqerOrderOrderProcessGetBodyBegin
*
* Set VAT to 0% for specific coupons.
*
* @param QUI\ERP\Order\OrderProcess $OrderProcess
* @return void
*/
public static function onQuiqqerOrderOrderProcessGetBodyBegin(QUI\ERP\Order\OrderProcess $OrderProcess)
{
try {
$Order = $OrderProcess->getOrder();
} catch (\Exception $Exception) {
QUI\System\Log::writeException($Exception);
return;
}
if (empty($Order)) {
return;
}
//
// $OrderBasket = new QUI\ERP\Order\Basket\BasketOrder($Order->getHash());
//
// foreach ($OrderBasket->get)
$Articles = $Order->getArticles();
$articleStock = [];
/** @var QUI\ERP\Accounting\Article $Article */
foreach ($Articles as $Article) {
try {
// Do not parse coupon codes / discounts
if (empty($Article->getId()) || !\is_numeric($Article->getId())) {
continue;
}
$Product = Products::getProduct($Article->getId());
if ($Product instanceof CouponProductType) {
// @todo
}
} catch (\Exception $Exception) {
QUI\System\Log::writeDebugException($Exception);
continue;
}
}
}
}
......@@ -15,11 +15,12 @@ class CouponProductType extends DigitalProduct
/**
* Special fields for coupon products
*/
const PRODUCT_FIELD_ID_TRANSFERABLE = 670;
const PRODUCT_FIELD_ID_GENERATE_PDF = 671;
const PRODUCT_FIELD_ID_COUPON_AMOUNT = 672;
const PRODUCT_FIELD_ID_DAYS_VALID = 673;
const PRODUCT_FIELD_ID_COUPON_DESCRIPTION = 674;
const PRODUCT_FIELD_ID_TRANSFERABLE = 670;
const PRODUCT_FIELD_ID_GENERATE_PDF = 671;
const PRODUCT_FIELD_ID_COUPON_AMOUNT = 672;
const PRODUCT_FIELD_ID_DAYS_VALID = 673;
const PRODUCT_FIELD_ID_COUPON_DESCRIPTION = 674;
const PRODUCT_FIELD_ID_IS_PRODUCT_SPECIFIC_COUPON = 675;
/**
* @param QUI\Locale $Locale
......
......@@ -158,6 +158,13 @@ protected static function createDiscountFromProduct(Product $Product): Discount
$discountAmount = $Product->getPrice()->getValue();
}
// Determine discount calculation basis based on coupon type
$isProductSpecificCoupon = $Product->getFieldValue(
CouponProductType::PRODUCT_FIELD_ID_IS_PRODUCT_SPECIFIC_COUPON
);
// @todo für Einzweck-Gutscheine muss ein spezieller Rabatt-Typ verwendet werden
/** @var Discount $NewDiscount */
$NewDiscount = $Handler->createChild([
'active' => 1,
......
0% oder .
You are about to add 0 people to the discussion. Proceed with caution.
Bearbeitung dieser Nachricht zuerst beenden!
Bitte registrieren oder zum Kommentieren