Skip to main content

Magento 2 Preview order email

<?php

use Magento\Framework\App\Bootstrap;

require __DIR__ . '/app/bootstrap.php';

$params = $_SERVER;

$bootstrap = Bootstrap::create(BP, $params);

$objectManager = $bootstrap->getObjectManager();

$state = $objectManager->get('Magento\Framework\App\State');
$state->setAreaCode(\Magento\Framework\App\Area::AREA_GLOBAL);

/* $orderId = 853;// Put your Order Id Here

\Magento\Store\Model\App\Emulation $appEmulation,
\Magento\Email\Model\TemplateFactory $emailFactory
$order = $objectManager->create('\Magento\Sales\Model\Order')->load($orderId); */
$emailFactory = $objectManager->create('\Magento\Email\Model\TemplateFactory');
$appEmulation = $objectManager->create('\Magento\Store\Model\App\Emulation');

$emailSender = $objectManager->create('\Magento\Sales\Model\Order\Email\Sender\OrderSender');
$paymentHelper = $objectManager->create('\Magento\Payment\Helper\Data');
$addressRenderer = $objectManager->create('\Magento\Sales\Model\Order\Address\Renderer');
$templateModel = $objectManager->create('\Magento\Email\Model\Template');
$storeManager = $objectManager->create('Magento\Store\Model\StoreManagerInterface');
$storeId = $storeManager->getStore()->getId();
$config = $objectManager->create('Magento\Framework\App\Config\ScopeConfigInterface');
$type = isset($_REQUEST['type']) ? $_REQUEST['type'] : "";
?>
<form method="post">
<label>Order Id</label>
<input type="text" name="order_id" value="<?= isset($_REQUEST['order_id']) ? $_REQUEST['order_id'] : "" ?>"/>
<select name='type'>
<option <?= ($type == 'order') ? "selected" : "" ?>>order</option>
<option <?= ($type == 'invoice') ? "selected" : "" ?> >invoice</option>
<option <?= ($type == 'shipment') ? "selected" : "" ?>>shipment</option>
<option <?= ($type == 'credit_memo') ? "selected" : "" ?>>credit_memo</option>
</select>

<input type="submit" value="submit"/>
</form>
<?php

if ($_POST && isset($_REQUEST['order_id']) && isset($_REQUEST['type'])) {
if (isset($_REQUEST['type'])) {
$orderId = $_REQUEST['order_id'];// Put your Order Id Here
$order = $objectManager->create('\Magento\Sales\Model\Order')->load($orderId);
$paymentHtml = $paymentHelper->getInfoBlockHtml($order->getPayment(), $order->getStore()->getStoreId());
$formattedShippingAddress = $order->getIsVirtual() ? null : $addressRenderer->format($order->getShippingAddress(), 'html');
$formattedBillingAddress = $addressRenderer->format($order->getBillingAddress(), 'html');

$templateOption = ['area' => \Magento\Framework\App\Area::AREA_FRONTEND, 'store' => $storeId];
$transport = [];
if ($_REQUEST['type'] == "order") {
//$emailSender->send($order);
$transport = [
'order' => $order,
'billing' => $order->getBillingAddress(),
'payment_html' => $paymentHtml,
'store' => $order->getStore(),
'formattedShippingAddress' => $formattedShippingAddress,
'formattedBillingAddress' => $formattedBillingAddress,
];
$templateId = $config->getValue('sales_email/order/template');
} elseif ($_REQUEST['type'] == "invoice") {
foreach ($order->getInvoiceCollection() as $invoice) {
$transport = [
'order' => $order,
'invoice' => $invoice,
'comment' => $invoice->getCustomerNoteNotify() ? $invoice->getCustomerNote() : '',
'billing' => $order->getBillingAddress(),
'payment_html' => $paymentHtml,
'store' => $order->getStore(),
'formattedShippingAddress' => $formattedShippingAddress,
'formattedBillingAddress' => $formattedBillingAddress
];
$templateId = $config->getValue('sales_email/invoice/template');
}
} elseif ($_REQUEST['type'] == "shipment") {
foreach ($order->getShipmentsCollection() as $shipment) {
$transport = [
'order' => $order,
'shipment' => $shipment,
'comment' => $shipment->getCustomerNoteNotify() ? $shipment->getCustomerNote() : '',
'billing' => $order->getBillingAddress(),
'payment_html' => $paymentHtml,
'store' => $order->getStore(),
'formattedShippingAddress' => $formattedShippingAddress,
'formattedBillingAddress' => $formattedBillingAddress
];
$templateId = $config->getValue('sales_email/shipment/template');
}
} elseif ($_REQUEST['type'] == "credit_memo") {
foreach ($order->getCreditmemosCollection() as $creditmemo) {
$transport = [
'order' => $order,
'creditmemo' => $creditmemo,
'comment' => $creditmemo->getCustomerNoteNotify() ? $creditmemo->getCustomerNote() : '',
'billing' => $order->getBillingAddress(),
'payment_html' => $paymentHtml,
'store' => $order->getStore(),
'formattedShippingAddress' => $formattedShippingAddress,
'formattedBillingAddress' => $formattedBillingAddress
];
$templateId = $config->getValue('sales_email/creditmemo/template');
}
} elseif ($_REQUEST['type'] == "reset_password") {
foreach ($order->getCreditmemosCollection() as $creditmemo) {
$accountManagement = $objectManager->create('Magento\Customer\Model\AccountManagement');
$customerRepository = $objectManager->create('Magento\Customer\Api\CustomerRepositoryInterface');
$customerResourceModel = $objectManager->create('Magento\Customer\Model\ResourceModel\Customer');
$customerModel = $objectManager->create('Magento\Customer\Model\Customer');
$mathRandom = $objectManager->create('Magento\Framework\Math\Random');

$customerRegistry = $objectManager->create('Magento\Customer\Model\CustomerRegistry');

$dataProcessor = $objectManager->create('Magento\Framework\Reflection\DataObjectProcessor');
$customerViewHelper = $objectManager->create('Magento\Customer\Helper\View');

$_customers = $objectManager->create('Magento\Customer\Api\AccountManagementInterface');
$customerCollection = $objectManager->create('Magento\Customer\Model\ResourceModel\Customer\Collection');
$customerCollection->load();
$i = 0;
/*foreach ($customerCollection as $customer) {*/

try {
//$email = $customer->getData('email');
$email = "dev@magentoguys.com";
$websiteId = $storeManager->getStore()->getWebsiteId();

// load customer by email

$customer = $customerRepository->get($email, $websiteId);
$_customer = $customerModel->load(4);
$newPasswordToken = $mathRandom->getUniqueHash();
$customerResourceModel->changeResetPasswordLinkToken($_customer, $newPasswordToken);
$mergedCustomerData = $customerRegistry->retrieveSecureData($customer->getId());
$customerData = $dataProcessor->buildOutputDataArray($customer, \Magento\Customer\Api\Data\CustomerInterface::class);
$mergedCustomerData->addData($customerData);
$mergedCustomerData->setData('name', $customerViewHelper->getCustomerName($customer));
$customerEmailData = $mergedCustomerData;
$templateId = 11;
//$transport = new \Magento\Framework\DataObject($transport);
$templateVars = ['customer' => $customerEmailData, 'store' => $storeManager->getStore($storeId)];
$templateModel->load($templateId)->setVars($templateVars)->setOptions($templateOption);
$body = $templateModel->processTemplate();
echo $body;
exit();
} catch (NoSuchEntityException $e) {
// Do nothing, we don't want anyone to use this action to determine which email accounts are registered.
} catch (\Exception $exception) {
echo $exception->getMessage();
echo "<pre>";
print_r($exception->getTraceAsString());
echo __('We\'re unable to send the password reset email.');
}
/* echo "<pre>";
echo $i . " Email :-" . $email . " Mail Sent";
$i++;
}*/
}
}
if ($transport) {
$transport = new \Magento\Framework\DataObject($transport);
$templateVars = $transport->getData();
$template = $emailFactory->create();
$template->setTemplateText($template->getTemplateText());
$template->setVars($templateVars);
$template->setId($templateId);
$template->setOptions($templateOption);
$template->load($templateId);
$template->emulateDesign($storeId);
$appEmulation->startEnvironmentEmulation($storeId);
$templateProcessed = $template->processTemplate();
$appEmulation->stopEnvironmentEmulation();
$template->revertDesign();
echo $templateProcessed;
} else {
echo "Template cannot be generated";
}

exit();
}
}

?>

Comments

  1. Interesting stuff to get to know about, meaningful post makes me happy to see this, Please also give a go to magento development agency for further information.

    ReplyDelete

Post a Comment

Popular posts from this blog

Magento 2 generate custom log

the custom log file created using below code for Magento 2.4.2 before version use this :  $writer = new \Zend\Log\Writer\Stream (BP . '/var/log/custom.log' ); $logger = new \Zend\Log\Logger (); $logger -> addWriter ( $writer ); $logger -> info ( 'Custom message' ); $logger -> info ( print_r ( $object -> getData (), true )); for Magento 2.4.2 or after version use this :  $writer = new \Laminas\Log\Writer\Stream (BP . '/var/log/custom.log' ); $logger = new \Laminas\Log\Logger (); $logger -> addWriter ( $writer ); $logger -> info ( 'text message' ); $logger -> info ( print_r ( $object -> getData (), true )); for Magento 2.4.3 version use this $writer = new \Zend_Log_Writer_Stream (BP . '/var/log/custom.log' ); $logger = new \Zend_Log (); $logger -> addWriter ( $writer ); $logger -> info ( 'text message' ); $logger -> info ( print_r ( $object -> getData (), true )); Or you can try this : f...

TO Execute Multiple Raw Query In Magento 2

<?php         /*          *          * TO Execute Multiple Raw Query In Magento 2          *          * */ $objectManager = \Magento\Framework\App\ObjectManager::getInstance(); $resource = $objectManager->get('Magento\Framework\App\ResourceConnection'); $conn = $resource->getConnection('write'); $sqlScript = file($sqlFile); $query = ''; foreach ($sqlScript as $line) { $startWith = substr(trim($line), 0 ,2); $endWith = substr(trim($line), -1 ,1); if (empty($line) || $startWith == '--' || $startWith == '/*' || $startWith == '//') continue; $query = $query . $line; if ($endWith == ';') { $conn->query($query); $query= ''; } } echo '<div class="success-response sql-import-response">SQL file imported successfully</div>';

Magento 2 Change Core Config Value Programmatically

$objectManager = \Magento\Framework\App\ObjectManager::getInstance(); // Instance of object manager $cacheTypeList = $objectManager->get('\Magento\Framework\App\Cache\TypeListInterface'); $cacheFrontendPool = $objectManager->get('\Magento\Framework\App\Cache\Frontend\Pool'); $resource = $objectManager->get('Magento\Framework\App\ResourceConnection'); $connection = $resource->getConnection(); $table = $resource->getTableName('core_config_data'); $select = $connection->select()->from( $table, ['config_id', 'value'] )->where( 'path = ?', 'carriers/storepickup/active' ); $data = $connection->fetchAll($select); if ($data) { try { $connection->beginTransaction(); foreach ($data as $value) { if($storeId == 1){ $dvalue = !(bool)1; }else{ $dvalue = 1; } $bind = ['path' => 'carriers/storepickup/active', 'value' => $dvalue]; $whe...