If customer order status is pending and more than 30 days, how to change customer group to wholesale in crons?
crons should run at every one minute.
This is my code
public function execute()
{
$today = date("Y-m-d h:i:s");
$to = strtotime('-02 min', strtotime($today));
$to = date('Y-m-d h:i:s', $to);
$filterGroupDate = $this->filterGroup;
$filterGroupStatus = clone($filterGroupDate);
$filterDate = $this->filterBuilder
->setField('updated_at')
->setConditionType('to')
->setValue($to)
->create();
$filterStatus = $this->filterBuilder
->setField('status')
->setConditionType('eq')
->setValue('pending_payment')
->create();
$filterGroupDate->setFilters([$filterDate]);
$filterGroupStatus->setFilters([$filterStatus]);
$searchCriteria = $this->searchCriteriaBuilder->setFilterGroups(
[$filterGroupStatus]
);
$searchResults = $this->orderRepository->getList($searchCriteria->create());
$selectedgroup=3;
/** @var Order $order */
foreach ($searchResults->getItems() as $order) {
$this->orderManagement->cancel($order->getId());
$customer = $order->getCustomer();
$customer->setData('customer_group_id', $selectedgroup)->save();
}
}