Skip to content

Commit 602647d

Browse files
ENGCOM-4215: Entered data missing when entering the wrong date for from, to in cart rule #20895
- Merge Pull Request #20895 from cedcommerce/magento2:2.3-develop-adityayadav - Merged commits: 1. 3da7c76 2. d697ea6 3. 8faf8e9 4. e5abf95 5. 811a7bf 6. 89a5728 7. 1a69d43
2 parents 92118f5 + 1a69d43 commit 602647d

File tree

2 files changed

+31
-1
lines changed

2 files changed

+31
-1
lines changed

app/code/Magento/SalesRule/Controller/Adminhtml/Promo/Quote/Save.php

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88

99
use Magento\Framework\App\Action\HttpPostActionInterface;
1010
use Magento\Framework\Stdlib\DateTime\TimezoneInterface;
11+
use Magento\Framework\App\Request\DataPersistorInterface;
1112

1213
/**
1314
* SalesRule save controller
@@ -20,25 +21,35 @@ class Save extends \Magento\SalesRule\Controller\Adminhtml\Promo\Quote implement
2021
* @var TimezoneInterface
2122
*/
2223
private $timezone;
24+
25+
/**
26+
* @var DataPersistorInterface
27+
*/
28+
private $dataPersistor;
2329

2430
/**
2531
* @param \Magento\Backend\App\Action\Context $context
2632
* @param \Magento\Framework\Registry $coreRegistry
2733
* @param \Magento\Framework\App\Response\Http\FileFactory $fileFactory
2834
* @param \Magento\Framework\Stdlib\DateTime\Filter\Date $dateFilter
2935
* @param TimezoneInterface $timezone
36+
* @param DataPersistorInterface $dataPersistor
3037
*/
3138
public function __construct(
3239
\Magento\Backend\App\Action\Context $context,
3340
\Magento\Framework\Registry $coreRegistry,
3441
\Magento\Framework\App\Response\Http\FileFactory $fileFactory,
3542
\Magento\Framework\Stdlib\DateTime\Filter\Date $dateFilter,
36-
TimezoneInterface $timezone = null
43+
TimezoneInterface $timezone = null,
44+
DataPersistorInterface $dataPersistor = null
3745
) {
3846
parent::__construct($context, $coreRegistry, $fileFactory, $dateFilter);
3947
$this->timezone = $timezone ?? \Magento\Framework\App\ObjectManager::getInstance()->get(
4048
TimezoneInterface::class
4149
);
50+
$this->dataPersistor = $dataPersistor ?? \Magento\Framework\App\ObjectManager::getInstance()->get(
51+
DataPersistorInterface::class
52+
);
4253
}
4354

4455
/**
@@ -89,6 +100,7 @@ public function execute()
89100
$this->messageManager->addErrorMessage($errorMessage);
90101
}
91102
$session->setPageData($data);
103+
$this->dataPersistor->set('sale_rule', $data);
92104
$this->_redirect('sales_rule/*/edit', ['id' => $model->getId()]);
93105
return;
94106
}

app/code/Magento/SalesRule/Model/Rule/DataProvider.php

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
use Magento\SalesRule\Model\ResourceModel\Rule\Collection;
99
use Magento\SalesRule\Model\ResourceModel\Rule\CollectionFactory;
1010
use Magento\SalesRule\Model\Rule;
11+
use Magento\Framework\App\Request\DataPersistorInterface;
1112

1213
/**
1314
* Class DataProvider
@@ -35,6 +36,11 @@ class DataProvider extends \Magento\Ui\DataProvider\AbstractDataProvider
3536
* @var \Magento\SalesRule\Model\Rule\Metadata\ValueProvider
3637
*/
3738
protected $metadataValueProvider;
39+
40+
/**
41+
* @var DataPersistorInterface
42+
*/
43+
private $dataPersistor;
3844

3945
/**
4046
* Initialize dependencies.
@@ -45,6 +51,7 @@ class DataProvider extends \Magento\Ui\DataProvider\AbstractDataProvider
4551
* @param CollectionFactory $collectionFactory
4652
* @param \Magento\Framework\Registry $registry
4753
* @param Metadata\ValueProvider $metadataValueProvider
54+
* @param DataPersistorInterface $dataPersistor
4855
* @param array $meta
4956
* @param array $data
5057
*/
@@ -55,13 +62,17 @@ public function __construct(
5562
CollectionFactory $collectionFactory,
5663
\Magento\Framework\Registry $registry,
5764
\Magento\SalesRule\Model\Rule\Metadata\ValueProvider $metadataValueProvider,
65+
DataPersistorInterface $dataPersistor = null,
5866
array $meta = [],
5967
array $data = []
6068
) {
6169
$this->collection = $collectionFactory->create();
6270
$this->coreRegistry = $registry;
6371
$this->metadataValueProvider = $metadataValueProvider;
6472
$meta = array_replace_recursive($this->getMetadataValues(), $meta);
73+
$this->dataPersistor = $dataPersistor ?? \Magento\Framework\App\ObjectManager::getInstance()->get(
74+
DataPersistorInterface::class
75+
);
6576
parent::__construct($name, $primaryFieldName, $requestFieldName, $meta, $data);
6677
}
6778

@@ -93,6 +104,13 @@ public function getData()
93104

94105
$this->loadedData[$rule->getId()] = $rule->getData();
95106
}
107+
$data = $this->dataPersistor->get('sale_rule');
108+
if (!empty($data)) {
109+
$rule = $this->collection->getNewEmptyItem();
110+
$rule->setData($data);
111+
$this->loadedData[$rule->getId()] = $rule->getData();
112+
$this->dataPersistor->clear('sale_rule');
113+
}
96114

97115
return $this->loadedData;
98116
}

0 commit comments

Comments
 (0)