I need to create manual(Admin) order, without the products present in the website, I mean order create for not available products in website. How to achieve using any custom options?
Magento – How to create Admin(Manual) order without the Products available in the Website
admin-order-createmagento-1.9sales-order
Related Solutions
I have fixed. issue was in get price with tax.
You can put this in form.html
<div class="content-header">
<table cellspacing="0" class="grid-header">
<tr>
<td><h3><?php echo $this->__('Import Orders')?></h3></td>
<td class="a-right">
<button onclick="editForm.submit()" class="scalable save" type="button"><span>Import</span></button>
</td>
</tr>
</table>
</div>
<div class="entry-edit">
<form id="edit_form" name="edit_form" method="post" action="<?php echo $this->getUrl('*/*/import')?>" enctype="multipart/form-data">
<input name="form_key" type="hidden" value="<?php echo Mage::getSingleton('core/session')->getFormKey() ?>" />
<div class="entry-edit-head">
<h4 class="icon-head head-edit-form fieldset-legend"><?php echo $this->__('Import CSV File ')?></h4>
</div>
<fieldset id="my-fieldset">
<table cellspacing="0" class="form-list">
<tr>
<td class="label"><?php echo $this->__('Add CSV File to Import')?> <span class="required">*</span></td>
<td class="input-ele"><input type="file" class="input-text required-entry" name="csv" />
</td>
</tr>
</table>
</fieldset>
</form>
</div>
<script type="text/javascript">
var editForm = new varienForm('edit_form');
</script>
Controller file
public function importAction()
{
$File=$_FILES['csv']['name'];
$_FILES['csv']['type'];
$mimes = array('application/vnd.ms-excel','application/octet-stream','text/plain','text/csv','text/tsv');
if(in_array($_FILES['csv']['type'],$mimes)){
$absolute_path = Mage::getBaseDir('media') . DS .('massorderprocessing');
$relative_path = Mage::getBaseUrl(Mage_Core_Model_Store::URL_TYPE_MEDIA);
$files = $_FILES['csv']['name'];
if(file_exists($absolute_path.DS.$files))
{
$var = rand(0,99);
$files = $var.'_'.$files;
}
$uploader = new Varien_File_Uploader('csv');
$uploader->setAllowRenameFiles(false);
$uploader->setFilesDispersion(false);
$uploader->save($absolute_path, $files);
$csvObject = new Varien_File_Csv();
$data=$csvObject->getData($absolute_path.'/'.$files);
foreach( $data as $dat ) {
//you can put your own logic for order as per csv column names
}
}
Ref: http://blog.chapagain.com.np/magento-create-order-programmatically/
Following is the create order script for Magento 1. You can alter as per your need. You need to change couple of things
$productIds = array(5, 6);
$quote->addProduct($product, new Varien_Object(array('qty' => 10,'price' => 8.99)) );
email address
$store = Mage::app()->getStore(); $website = Mage::app()->getWebsite(); $firstName = 'First Name'; $lastName = 'Last Name'; $email = 'firstlast@example.com'; $logFileName = 'my-order-log-file.log'; $billingAddress = array( 'customer_address_id' => '', 'prefix' => '', 'firstname' => $firstName, 'middlename' => '', 'lastname' => $lastName, 'suffix' => '', 'company' => '', 'street' => array( '0' => 'Your Customer Address 1', // compulsory '1' => 'Your Customer Address 2' // optional ), 'city' => 'Culver City', 'country_id' => 'US', // two letters country code 'region' => 'California', // can be empty '' if no region 'region_id' => '12', // can be empty '' if no region_id 'postcode' => '90232', 'telephone' => '123-888-8856', 'fax' => '', 'save_in_address_book' => 1 ); $shippingAddress = array( 'customer_address_id' => '', 'prefix' => '', 'firstname' => $firstName, 'middlename' => '', 'lastname' => $lastName, 'suffix' => '', 'company' => '', 'street' => array( '0' => 'Your Customer Address 1', // compulsory '1' => 'Your Customer Address 2' // optional ), 'city' => 'Culver City', 'country_id' => 'US', // two letters country code 'region' => 'California', // can be empty '' if no region 'region_id' => '12', // can be empty '' if no region_id 'postcode' => '90232', 'telephone' => '123-888-8856', 'fax' => '', 'save_in_address_book' => 1 ); /** * You need to enable this method from Magento admin * Other methods: tablerate_tablerate, freeshipping_freeshipping, etc. */ $shippingMethod = 'flatrate_flatrate'; /** * You need to enable this method from Magento admin * Other methods: checkmo, free, banktransfer, ccsave, purchaseorder, etc. */ $paymentMethod = 'cashondelivery'; $productIds = array(5, 6); $quote = Mage::getModel('sales/quote')->setStoreId($store->getId()); $quote->setCurrency(Mage::app()->getStore()->getBaseCurrencyCode()); $customer = Mage::getModel('customer/customer') ->setWebsiteId($website->getId()) ->loadByEmail($email); if (!$customer->getId()) { $customer = Mage::getModel('customer/customer'); $customer->setWebsiteId($website->getId()) ->setStore($store) ->setFirstname($firstName) ->setLastname($lastName) ->setEmail($email); try { $password = $customer->generatePassword(); $customer->setPassword($password); $customer->setForceConfirmed(true); $customer->save(); $customer->setConfirmation(null); $customer->save(); $customerId = $customer->getId(); $customAddress = Mage::getModel('customer/address'); $customAddress->setData($billingAddress) ->setCustomerId($customerId) ->setIsDefaultBilling('1') ->setIsDefaultShipping('1') ->setSaveInAddressBook('1'); $customAddress->save(); $storeId = $customer->getSendemailStoreId(); $customer->sendNewAccountEmail('registered', '', $storeId); $customer->sendPasswordReminderEmail(); Mage::log('Customer with email '.$email.' is successfully created.', null, $logFileName); } catch (Mage_Core_Exception $e) { if (Mage::getSingleton('customer/session')->getUseNotice(true)) { Mage::getSingleton('customer/session')->addNotice( Mage::helper('core')->escapeHtml($e->getMessage())); } else { $messages = array_unique(explode("\n", $e->getMessage())); foreach ($messages as $message) { Mage::getSingleton('customer/session')->addError( Mage::helper('core')->escapeHtml($message)); } } } catch (Exception $e) { Mage::getSingleton('customer/session')->addException( $e, $this->__('Cannot add customer')); Mage::logException($e); } } $quote->assignCustomer($customer); // Add products to quote and you can change price over here foreach($productIds as $productId) { $product = Mage::getModel('catalog/product')->load($productId); $quote->addProduct($product, new Varien_Object(array('qty' => 10,'price' => 8.99)) ); } $billingAddressData = $quote->getBillingAddress()->addData($billingAddress); $shippingAddressData = $quote->getShippingAddress()->addData($shippingAddress); $shippingAddressData->setCollectShippingRates(true) ->collectShippingRates(); $shippingAddressData->setShippingMethod($shippingMethod) ->setPaymentMethod($paymentMethod); $quote->getPayment()->importData(array('method' => $paymentMethod)); try { $quote->collectTotals(); $quote->save(); // Create Order From Quote $service = Mage::getModel('sales/service_quote', $quote); $service->submitAll(); $incrementId = $service->getOrder()->getRealOrderId(); Mage::getSingleton('checkout/session') ->setLastQuoteId($quote->getId()) ->setLastSuccessQuoteId($quote->getId()) ->clearHelperData(); /** * For more details about saving order * See saveOrder() function of app/code/core/Mage/Checkout/Onepage.php */ // Log order created message Mage::log('Order created with increment id: '.$incrementId, null, $logFileName); $result['success'] = true; $result['error'] = false; // Show response Mage::app()->getResponse() ->setBody(Mage::helper('core')->jsonEncode($result)) //->setRedirect($redirectUrl) ->sendResponse(); } catch (Mage_Core_Exception $e) { $result['success'] = false; $result['error'] = true; $result['error_messages'] = $e->getMessage(); Mage::app()->getResponse()->setBody(Mage::helper('core')->jsonEncode($result)); if (Mage::getSingleton('checkout/session')->getUseNotice(true)) { Mage::getSingleton('checkout/session')->addNotice(Mage::helper('core')->escapeHtml($e->getMessage())); } else { $messages = array_unique(explode("\n", $e->getMessage())); foreach ($messages as $message) { Mage::getSingleton('checkout/session')->addError(Mage::helper('core')->escapeHtml($message)); } } } catch (Exception $e) { $result['success'] = false; $result['error'] = true; $result['error_messages'] = $this->__('There was an error processing your order. Please contact us or try again later.'); Mage::app()->getResponse()->setBody(Mage::helper('core')->jsonEncode($result)); Mage::logException($e);}
Best Answer
Catalog->Manage Products
Sales->Orders