Sfoglia il codice sorgente

new version 1.0.2

master
parent
commit
5478071d83
4 ha cambiato i file con 41 aggiunte e 22 eliminazioni
  1. +1
    -1
      AtlDiscountExtension-main/composer.json
  2. BIN
      AtlDiscountExtension-main/src/.DS_Store
  3. +9
    -7
      AtlDiscountExtension-main/src/Command/CheckDiscountEligibility.php
  4. +31
    -14
      AtlDiscountExtension-main/src/Subscriber/StateMachineTransitionSubscriber.php

+ 1
- 1
AtlDiscountExtension-main/composer.json Vedi File

@@ -1,7 +1,7 @@
{
"name": "atl/discount-extension",
"description": "Discount Extension",
"version": "1.0.0",
"version": "1.0.2",
"type": "shopware-platform-plugin",
"license": "proprietary",
"authors": [


BIN
AtlDiscountExtension-main/src/.DS_Store Vedi File


+ 9
- 7
AtlDiscountExtension-main/src/Command/CheckDiscountEligibility.php Vedi File

@@ -58,13 +58,6 @@ class CheckDiscountEligibility extends Command
{
$io = new ShopwareStyle($input, $output);

$tagId = $this->systemConfigService->get('AtlDiscountExtension.config.tag');

if (empty($tagId)) {
$io->warning('Customer tag assignment in plugin configuration is missing.');
return self::FAILURE;
}

$expiredDiscounts = $this->getExpiredDiscounts();

if (empty($expiredDiscounts)) {
@@ -75,6 +68,14 @@ class CheckDiscountEligibility extends Command
$tags = [];
$discounts = [];
foreach ($expiredDiscounts as $expiredDiscount) {
$salesChannelId = $expiredDiscount->getCustomer()->getSalesChannelId();
$tagId = $this->systemConfigService->get('AtlDiscountExtension.config.tag', $salesChannelId);

if (empty($tagId)) {
$io->warning('Customer tag assignment in plugin configuration is missing.');
return self::FAILURE;
}

$tags[] = [
'customerId' => $expiredDiscount->getCustomerId(),
'tagId' => $tagId
@@ -111,6 +112,7 @@ class CheckDiscountEligibility extends Command
RangeFilter::LTE => $expirationDate->format(\DATE_ATOM),
]
));
$criteria->addAssociation('customer');
$criteria->setLimit(999);

return $this->repeatDiscountRepository->search($criteria, Context::createDefaultContext())->getElements();


+ 31
- 14
AtlDiscountExtension-main/src/Subscriber/StateMachineTransitionSubscriber.php Vedi File

@@ -76,14 +76,15 @@ class StateMachineTransitionSubscriber implements EventSubscriberInterface

$orderDeliveryId = $event->getEntityId();
$orderDelivery = $this->getOrderDelivery($orderDeliveryId, $event);
$salesChannelId = $orderDelivery->getOrder()->getSalesChannelId();

// In case no order delivery could be found - return
if (empty($orderDelivery)) {
return;
}

$amountDiscountableLineItems = $this->getAmountDiscountableLineItems($orderDelivery->getPositions(), $event);
$minAmountDiscountableLineItems = $this->systemConfigService->get('AtlDiscountExtension.config.minAmountDiscountableLineItems');
$minAmountDiscountableLineItems = $this->systemConfigService->get('AtlDiscountExtension.config.minAmountDiscountableLineItems', $salesChannelId);
$amountDiscountableLineItems = $this->getAmountDiscountableLineItems($orderDelivery->getPositions(), $minAmountDiscountableLineItems, $salesChannelId, $event);

if ($amountDiscountableLineItems < $minAmountDiscountableLineItems) {
return;
@@ -91,8 +92,8 @@ class StateMachineTransitionSubscriber implements EventSubscriberInterface

$customer = $orderDelivery->getOrder()->getOrderCustomer()->getCustomer();

// Tag the customer and trace timestamp in 'spwn_repeat_discount' table
$this->tagCustomer($customer, $event);
// Tag the customer and trace last order date in 'spwn_repeat_discount' table
$this->tagCustomer($customer, $salesChannelId, $event);
}

/**
@@ -112,11 +113,20 @@ class StateMachineTransitionSubscriber implements EventSubscriberInterface

/**
* @param OrderDeliveryPositionCollection $positions
* @param int $minAmountDiscountableLineItems
* @param string $salesChannelId
* @param StateMachineTransitionEvent $event
* @return int
*/
private function getAmountDiscountableLineItems(OrderDeliveryPositionCollection $positions, StateMachineTransitionEvent $event): int
private function getAmountDiscountableLineItems
(
OrderDeliveryPositionCollection $positions,
int $minAmountDiscountableLineItems,
string $salesChannelId,
StateMachineTransitionEvent $event
): int
{
$customFieldName = $this->getCustomFieldName($event);
$customFieldName = $this->getCustomFieldName($event, $salesChannelId);

// In case no custom field was assigned in the plugin config - return
if ($customFieldName === '') {
@@ -127,9 +137,14 @@ class StateMachineTransitionSubscriber implements EventSubscriberInterface
foreach($positions as $position) {
$customFields = $position->getOrderLineItem()->getPayload()['customFields'];

// Checks if the custom field is set to true
if ($customFields[$customFieldName] === true) {
$amountDiscountableLineItems++;
// Checks if the custom field exists and is set to true
if (!empty($customFields[$customFieldName]) && $customFields[$customFieldName] === true) {
$amountDiscountableLineItems += $position->getQuantity();
}

// Break if min amount is already reached
if ($amountDiscountableLineItems >= $minAmountDiscountableLineItems) {
break;
}
}

@@ -138,18 +153,19 @@ class StateMachineTransitionSubscriber implements EventSubscriberInterface

/**
* @param StateMachineTransitionEvent $event
* @param string $salesChannelId
* @return string
*/
private function getCustomFieldName(StateMachineTransitionEvent $event): string
private function getCustomFieldName(StateMachineTransitionEvent $event, string $salesChannelId): string
{
$customFieldId = $this->systemConfigService->get('AtlDiscountExtension.config.customField');
$customFieldId = $this->systemConfigService->get('AtlDiscountExtension.config.customField', $salesChannelId);

$criteria = new Criteria();
$criteria->addFilter(new EqualsFilter('id', $customFieldId));

/** @var CustomFieldEntity $customField */
$customField = $this->customFieldRepository->search($criteria, $event->getContext())->first();
// In case no custom field was assigned in the plugin config - return
if (empty($customField)) {
return '';
@@ -160,12 +176,13 @@ class StateMachineTransitionSubscriber implements EventSubscriberInterface

/**
* @param CustomerEntity $customer
* @param string $salesChannelId
* @param StateMachineTransitionEvent $event
* @return void
*/
private function tagCustomer(CustomerEntity $customer, StateMachineTransitionEvent $event): void
private function tagCustomer(CustomerEntity $customer, string $salesChannelId, StateMachineTransitionEvent $event): void
{
$tagId = $this->systemConfigService->get('AtlDiscountExtension.config.tag');
$tagId = $this->systemConfigService->get('AtlDiscountExtension.config.tag', $salesChannelId);

if (empty($tagId)) {
return;


Caricamento…
Annulla
Salva