Thursday, December 1, 2011

Sending email with attachment in magento programmatically

Hi,

we can send custom email with attachment in magneto

i am sending email acc to date of orders. this email contain 2 csv file of both pending and invoiced orders

create a email template system->Transactional Emails

i’e


Template Name :-  Daily Order Reports
Template Subject :- {{var subject}}

Template Content
Hi
<p>
Please check attached csv  file  of  {{var subject}}
</p> 



save it u will get email Template id once u save this email

create one file in root folder of project paste this below code and save it


<?php
 define('MAGENTO', realpath(dirname(__FILE__)));
 require_once MAGENTO . '/../app/Mage.php';
 Mage::app();
 $storename='default';
 $string="sku,alu,name,qty,mrp,sold price,size,color,final price\n"; 
 function add_dateAction($givendate,$day=0,$mth=0,$yr=0,$hr=0,$min=0,$sec=0) {
  $cd = strtotime($givendate);
  $newdate = date('Y-m-d H:i:s', mktime(0+$hr,
     0+$min, 0+$sec, date('m',$cd)+$mth,
     date('d',$cd)+$day, date('Y',$cd)+$yr));
  return $newdate;
 }

  $from=add_dateAction(now(),-1,0,0);
  $report_date=date("d_M_y", mktime(0, 0, 0, date("m"),date("d")-1,date("Y")));
  echo 'Report On '.$report_date.'<br />';
  $to= add_dateAction(now(),-1,0,0,23,59,59);
  $orderCollection = Mage::getResourceModel('sales/order_collection');
  $orderCollection->addFieldToFilter('status', array('eq'=>'pending'))->addAttributeToSelect('entity_id');
  $orderCollection->getSelect()  
      ->where("main_table.created_at BETWEEN '".$from."' AND '".$to."'");
   // $orderCollection->printlogquery(true); exit;
  $i=0;
  foreach($orderCollection->getItems() as $order){
            $orderModel = Mage::getModel('sales/order');
            $orderModel->load($order['entity_id']);
   $i++;
         //echo $orderModel->getIncrementId().', '.$orderModel->getPayment()->getMethod().'<br />';
 
    foreach ($orderModel->getAllItems() as $_product) {
    $_loadedprod=Mage::getModel('catalog/product')->load($_product->getData('product_id'));
   $size=Mage::getModel('catalog/product')
                            ->load($_loadedprod->getId())
                            ->getAttributeText('size');
   $color=Mage::getModel('catalog/product')
                            ->load($_loadedprod->getId())
                            ->getAttributeText('color');
  
    $string .= $_product->getSku() . ',' .$_loadedprod->getData('alu') . ',' . $_product->getData('name') . ',' .$_product->getData('qty_ordered').  ',' .$_product->getData('orginal_mrp').  ',' .$_product->getData('original_price'). ',' .$size . ',' .$color . ',' .$_product->getData('base_row_total_incl_tax') . "\n";
        
            }
   
   
 
        }
  echo 'Total Pending orders:-'.$i.'<br />';
  
  //Invoice Order Report
  
  
 $string2="sku,alu,name,qty,mrp,sold price,size,color,final price\n";
   $orderCollection = Mage::getResourceModel('sales/order_invoice_collection')->addAttributeToSelect('entity_id');
  //$orderCollection->addFieldToFilter('status', array('eq'=>'pending'));
  $orderCollection->getSelect()       
      ->where("main_table.created_at BETWEEN '".$from."' AND '".$to."'");
   // $orderCollection->printlogquery(true); exit;
  $i=0;
  foreach($orderCollection->getItems() as $order){
 
            
   $i++;
         //echo $orderModel->getIncrementId().', '.$orderModel->getPayment()->getMethod().'<br />';
 
    foreach ($order->getAllItems() as $_product) {
   $orderitem=Mage::getModel('sales/order_item')->load($_product->getData('order_item_id'));
  
    $_loadedprod=Mage::getModel('catalog/product')->load($_product->getData('product_id'));
   $size=Mage::getModel('catalog/product')
                            ->load($_loadedprod->getId())
                            ->getAttributeText('size');
   $color=Mage::getModel('catalog/product')
                            ->load($_loadedprod->getId())
                            ->getAttributeText('color');
    $string2 .= $_product->getSku() . ',' .$_loadedprod->getData('alu') . ',' . $_product->getData('name') . ',' .$_product->getQty().  ',' .$orderitem->getOrginalMrp().  ',' .$_product->getPrice(). ',' .$size . ',' .$color . ',' .$_product->getData('base_row_total_incl_tax') . "\n";
        
            }
   
   
 
        }
  
 
  echo 'Total inviced orders:-'.$i.'<br />';
  
  
  
  
  $templateId =6;
   // Set sender information
  $senderName = 'report '; // Mage::getStoreConfig('trans_email/ident_support/name');
  $senderEmail = Mage::getStoreConfig('trans_email/ident_support/email');
  //$size = $this->getRequest()->getParam('size');
  $sender = array('name' => $senderName,
                'email' => $senderEmail);
 
  // Set recepient information
  $recepientEmail = 'youremail@doine.com'; //Mage::getStoreConfig('trans_email/ident_support/email'); //email from support admin side
  $recepientName =    'pradeep';     
 
  // Get Store ID
  $store = Mage::app()->getStore()->getId();
 
  // Set variables that can be used in email template
  $vars = array('subject' =>  'Daily Order Report 0n '.date("M d Y", mktime(0, 0, 0, date("m"),date("d")-1,date("Y"))));
  
  $translate  = Mage::getSingleton('core/translate');
  $transactionalEmail = Mage::getModel('core/email_template')->setDesignConfig(array('area'=>'frontend', 'store'=>1));
  $transactionalEmail->getMail()->createAttachment($string,'text/UTF-8')->filename = 'pending_orders_'.$report_date.'.csv';
  $transactionalEmail->getMail()->createAttachment($string2,'text/UTF-8')->filename = 'invoiced_orders_'.$report_date.'.csv';
  if($transactionalEmail->sendTransactional($templateId, $sender, $recepientEmail, "Admin", $vars)) {
   echo 'mail sent';
  //$this->getResponse()->setRedirect($url);
  }else{
          echo 'mail not sent';
        }
  
?>

Creating xml file of all products fields in magento programmatically

Hi,

below code is used to create a xml file of all product for some 3ed party site
place this code in magento project root folder






<?php
 define('MAGENTO', realpath(dirname(__FILE__)));
 require_once MAGENTO . '/app/Mage.php';
 Mage::app();
 $storename='default';
 $file = "products_xml.xml";
if (file_exists($file)) { unlink ($file); }
 
?>


    <?php


$products = Mage::getModel('catalog/product')
   ->getCollection()
   ->addAttributeToSelect('*')
   ->addAttributeToFilter('status', array('eq' => '1'))
   ->addAttributeToFilter('type_id', array('eq' => 'simple'));

//process your product collection as per your bussiness logic


  $doc = new DOMDocument();
  $doc->formatOutput = true;
  
  $productsX = $doc->createElement( "products" );
  $doc->appendChild( $productsX );
  
foreach($products as $_product){
//print_r($_product->getData()); exit;
 /*echo $_product->getSku().'</br>';
 echo $_product->getName().'</br>';
 echo $_product->getData('image').'</br>';
 echo $_product->getData('small_image').'</br>';
 echo $_product->getData('thumbnail').'</br>'; 
 echo $_product->getData("url_key").'</br>';
 echo $_product->getShippingDelivery().'</br>';
 echo $_product->getShippingWeight() .'</br>';
 echo $_product->getAlu().'</br>'; 
 echo $_product->getUpsize().'</br>';
 echo $_product->getPrice().'</br>';
 echo $_product->getSpecialPrice().'</br>'; 
 echo $_product->getResource()->getAttribute('color')->getFrontend()->getValue($_product).'</br>'; 
 echo $_product->getResource()->getAttribute('status')->getFrontend()->getValue($_product).'</br>'; 
 echo $_product->getResource()->getAttribute('gender')->getFrontend()->getValue($_product).'</br>'; 
 echo $_product->getResource()->getAttribute('size')->getFrontend()->getValue($_product).'</br>';
 echo $_product->getResource()->getAttribute('season')->getFrontend()->getValue($_product).'</br>';
 echo $_product->getDescription().'</br>';
 echo Mage::getModel('cataloginventory/stock_item')->loadByProduct($_product)->getQty().'</br>'; 
 echo Mage::getModel('cataloginventory/stock_item')->loadByProduct($_product)->getIsInStock().'</br>';
 exit; */
 $product = $doc->createElement( "product" );
  
 $sku = $doc->createElement( "sku" );
 $sku->appendChild(
  $doc->createTextNode($_product->getSku())
 );
 $product->appendChild( $sku );
  
 $name = $doc->createElement( "name" );
 $name->appendChild(
  $doc->createTextNode( trim($_product->getName()) )
 );
 $product->appendChild( $name );
  
 $image = $doc->createElement( "image" );
 $image->appendChild(
  $doc->createTextNode( trim($_product->getData('image')) )
 );
 $product->appendChild( $image );
  
 $smallimage = $doc->createElement( "smallimage" );
 $smallimage->appendChild(
  $doc->createTextNode( trim($_product->getData('small_image')) )
 );
 $product->appendChild( $smallimage );
  
 $thumbnail = $doc->createElement( "thumbnail" );
 $thumbnail->appendChild(
  $doc->createTextNode( trim($_product->getData('thumbnail')) )
 );
 $product->appendChild( $thumbnail );
  
 $urlkey = $doc->createElement( "urlkey" );
 $urlkey->appendChild(
  $doc->createTextNode( trim($_product->getData('url_key')) )
 );
 $product->appendChild( $urlkey );
  
 $shippingdelivery = $doc->createElement( "shippingdelivery" );
 $shippingdelivery->appendChild(
  $doc->createTextNode( trim($_product->getShippingDelivery()) )
 );
 $product->appendChild( $shippingdelivery );
  
 $shippingweight = $doc->createElement( "shippingweight" );
 $shippingweight->appendChild(
  $doc->createTextNode( trim($_product->getShippingWeight()) )
 );
 $product->appendChild( $shippingweight );
  
 $alu = $doc->createElement( "alu" );
 $alu->appendChild(
  $doc->createTextNode( trim($_product->getAlu()) )
 );
 $product->appendChild( $alu );
  
 $upsize = $doc->createElement( "upsize" );
 $upsize->appendChild(
  $doc->createTextNode( trim($_product->getUpsize()) )
 );
 $product->appendChild( $upsize );
  
 $price = $doc->createElement( "price" );
 $price->appendChild(
  $doc->createTextNode( trim($_product->getPrice()) )
 );
 $product->appendChild( $price );
  
 $specialprice = $doc->createElement( "specialprice" );
 $specialprice->appendChild(
  $doc->createTextNode( trim($_product->getSpecialPrice()) )
 );
 $product->appendChild( $specialprice );
  
 $color = $doc->createElement( "color" );
 $color->appendChild(
  $doc->createTextNode( trim($_product->getResource()->getAttribute('color')->getFrontend()->getValue($_product)))
 );
 $product->appendChild( $color );
  
 $status = $doc->createElement( "status" );
 $status->appendChild(
  $doc->createTextNode( trim($_product->getResource()->getAttribute('status')->getFrontend()->getValue($_product)) )
 );
 $product->appendChild( $status );
  
 $gender = $doc->createElement( "gender" );
 $gender->appendChild(
  $doc->createTextNode( trim($_product->getResource()->getAttribute('gender')->getFrontend()->getValue($_product)) )
 );
 $product->appendChild( $gender );
  
 $size = $doc->createElement( "size" );
 $size->appendChild(
  $doc->createTextNode( trim($_product->getResource()->getAttribute('size')->getFrontend()->getValue($_product)) )
 );
 $product->appendChild( $size );
  
 $season = $doc->createElement( "season" );
 $season->appendChild(
  $doc->createTextNode( trim($_product->getResource()->getAttribute('season')->getFrontend()->getValue($_product)) )
 );
 $product->appendChild( $season );
  
 $description = $doc->createElement( "description" );
 $description->appendChild(
  $doc->createTextNode( trim($_product->getDescription()) )
 );
 $product->appendChild( $description );
  
 $qty = $doc->createElement( "qty" );
 $qty->appendChild(
  $doc->createTextNode( trim(Mage::getModel('cataloginventory/stock_item')->loadByProduct($_product)->getQty()) )
 );
 $product->appendChild( $qty );
  
 $availability = $doc->createElement( "availability" );
 $availability->appendChild(
  $doc->createTextNode( trim(Mage::getModel('cataloginventory/stock_item')->loadByProduct($_product)->getIsInStock()) )
 );
 $product->appendChild( $availability );

   $productsX->appendChild($product);  
    }
  //echo $doc->saveXML();
 file_put_contents($file,$doc->saveXML(),FILE_APPEND);
     ?>


you can check this post http://www.magentocommerce.com/boards/viewthread/267477/

Getting product Qty or quantity in magneto






<?php Mage::getModel('cataloginventory/stock_item')->loadByProduct($_product)->getQty()) ?>

<?php Mage::getModel('cataloginventory/stock_item')->loadByProduct($_product)->getIsInStock() ?>


Wednesday, November 30, 2011

How to display html code or tag in blogspot.com

use this link you can convert your html code to code which support blogspot post editor

http://francois.schnell.free.fr/tools/BloggerPaste/BloggerPaste.html

Wednesday, October 5, 2011

Giving hypering link for ceratin palce or perticular place in a full image or IMG Tag

Hi,

We can give hyper link to selected place from a image


<div class="slide" style="position: absolute; top: 0px; left: 990px; z-index: 0; display: block;"><img width="990" height="330" alt="" src="img1.png?1317798487966" usemap="#Map">
<map name="Map" id="Map">
<area target="_blank" href="giftcards.html" coords="961,299,840,262" shape="rect">
</map>
</div><div class="slide" style="position: absolute; top: 0px; left: 990px; z-index: 0; display: block;"><img width="990" height="330" alt="" src="img2.png" usemap="#Map2">
<map name="Map2" id="Map2">
<area target="_blank" href="ff.html" coords="1081,305,180,265" shape="rect">
</map>
</div>

Tuesday, September 13, 2011

Getting or Displaying Attributes value and label of product in magento programmatically


//value or label which you select in back end
echo $_product->getResource()->getAttribute('size')->getFrontend()->getValue($_product);

//label of the attribute
echo $_product->getResource()->getAttribute('size')->getFrontend()->getLabel();


// value or option Id
echo $_product->getSize()

Sunday, September 4, 2011

Sending email from local system in magneto OR Sending email from magento in local system

Hi

we can enable sending email from local system if you working magento in local system

we can send or enable sending email from magento in local system

1) make sure you did setting in php.ini

i'e

[mail function]
; For Win32 only.
; http://php.net/smtp
SMTP = mail.yourdomine.com
; http://php.net/smtp-port
smtp_port = 25

and in magento go to admin

System->Configuration->System->Mail Sending Setting->host

replace host from localhost to mail.yourdomine.com