Posting in the Magento forums has been disabled pending the implementation of a new and improved forum solution which should better serve the community.

For new questions please post at magento.stackexchange.com, the community-run support site for the Magento community. We will be providing updates on the new forum solution soon. For questions or concerns please email community@magento.com.

Magento Forum

Eigenes Backend-Modul “EK/VK Differenz”
 
tronguy
Jr. Member
 
Total Posts:  11
Joined:  2008-07-11
 

Hallo,

ich versuche mich gerade an einem eigenen Backend-Modul, in dem die Produkte mit VK-Preis, EK-Preis (cost) und der Differenz aufgelistet sein sollen.

Ich bin mittlerweile (immerhin) wink) soweit, dass ich ein Backend-Modul habe, das VK, EK und ein leeres Feld Differenz anzeigt. Dafür habe ich mehr oder weniger eine Kopie vom Block “Mage_Adminhtml_Block_Catalog_Product_Grid” angelegt und editiert. Die Felder werden dort über

$this->addColumn('id',
            array(
                
'header'=> Mage::helper('catalog')->__('ID'),
                
'width' => '50px',
                
'type'  => 'number',
                
'index' => 'entity_id',
        ));

zugewiesen. Ich schaffe es aber bisher nicht dort ein “Custom” Feld einzufügen, in der die Differenz zwischen EK und VK steht. Kann mir da jemand weiter helfen?

Vielen Dank & Gruss,

Hendrik

 
Magento Community Magento Community
Magento Community
Magento Community
 
mzentrale1
Guru
 
Total Posts:  731
Joined:  2007-12-06
Stuttgart, Germany
 

Hi,

ich hab das in einem eigenen modul so gelöst. Ein neues Attribut order_product_status für sales/order model über das intallscript meines moduls angelegt. (Aufgabe war: wenn alle Produkte auf Lager Order bekommt ein grünes Icon, wenn ein produkt nicht auf lager gelbes und wenn größer eins dann rotes). Die felder in der übersicht können nur aus attributen eines models befüllt werden, so wie ich das bisher rausgefunden habe, so tief bin ich noch nicht in magento eingestiegen.

das ist mein code im grid, ich habe das original grid erweitert.

<?php

class Mage_Ordercustomization_Block_Adminhtml_Ordercustomization_Grid extends Mage_Adminhtml_Block_Sales_Order_Grid
{
  
protected function _prepareCollection()
  
{
        
//Hole mir alle Orders
        
$collectionProducts Mage::getResourceModel('sales/order_collection')
            ->
addAttributeToSelect('increment_id');        
        
//Wenn Order da dann...
        
if(isset($collectionProducts)){
            
//... druchlaufe mir die collection
            
foreach($collectionProducts AS $_item){
                
//Lade die Order
                
$order Mage::getModel('sales/order')->loadByIncrementId($_item->getIncrementId());
                
//setze den Orderstatus neu -> Mein Model Mage::getSingleton('ordercustomization/ordercustomization')->getStatusIcon($_item->getIncrementId()) liefert mir das Icon und macht die ganze logik
                
$order->setOrderProductStatus(Mage::getSingleton('ordercustomization/ordercustomization')->getStatusIcon($_item->getIncrementId()));
                
//Speichere die Order wieder
                
$order->save();            
            
}
        }        
        
        
return parent::_prepareCollection();
  
}

  
protected function _prepareColumns()
  
{
        
//Füge mein attribut dem Grid hinzu
        
$this->addColumn('order_product_status', array(
            
'header' => Mage::helper('ordercustomization')->__('Availability'),
            
'index' => 'order_product_status',
            
'width' => '20px',
            
'column_css_class' => '',
            
'type' => 'text',
        ));
        
        return 
parent::_prepareColumns();
  
}    

}

Vielleicht hilft das und du kannst das adaptieren.

Grüsse

 
Magento Community Magento Community
Magento Community
Magento Community
 
tronguy
Jr. Member
 
Total Posts:  11
Joined:  2008-07-11
 

Hi,

danke, das sieht ja schon sehr sauber aus. Ich habe mir derweil mit einer Notlösung geholfen, in der ich im Controller das Model lade und dann an einen Custom-View weiter gebe:

$collection Mage::getModel('difference/difference')->getCollection(); // Difference-Model extened das Mage_Catalog_Model_Product
$collection->addAttributeToSelect('cost')
                   ->
addAttributeToSelect('price')
                   ->
addAttributeToSelect('name')
                   ->
addAttributeToSort('entity_id''asc')
                   ->
getSelect()->limit($items_per_page$offset);
$collection->load();

$items $collection->getItems();
$this->assign('items',$items);
Hierzu habe ich direkt noch eine Frage: Wie kann man sich sauber den Count von der Collection ausgeben lassen?

Im View sieht das dann so aus:

<?php foreach ($items as $item): ?>
... $item->getPrice()-$item->getCost...
<?php endforeach; ?>

Ist überhaupt nicht wie von den Entwicklern gedacht, aber es funktioniert und pfuscht nicht am Core rum ;-)

Gruss,

Hendrik

 
Magento Community Magento Community
Magento Community
Magento Community
 
mzentrale1
Guru
 
Total Posts:  731
Joined:  2007-12-06
Stuttgart, Germany
 

Hi,

teste mal

echo sizeof($collection);

Du verwendest nun nicht mehr das standard grid sondern hast eine eigene view erstellt? Sowas such ich auch, kannst mal bissi mehr code posten?

Grüsse

 
Magento Community Magento Community
Magento Community
Magento Community
 
tronguy
Jr. Member
 
Total Posts:  11
Joined:  2008-07-11
 

Klar, so sieht das aus:

(Base: app/code/local/XY/Meinmodul/)

Block/Adminhtml/Meinmodul.php

class XY_Meinmodul_Block_Adminhtml_Meinmodul extends Mage_Core_Block_Template
{

    
public function __construct()
    
{
        $string 
'Hallo Welt';        
        
$this->assign('string',$string);
    
}

}

Controllers/Adminhtml/MeinmodulController.php

class XY_Meinmodul_Adminhtml_MeinmodulController extends Mage_Adminhtml_Controller_action
{
    
public function indexAction()
    
{
        $this
->loadLayout();
        
$this->renderLayout();
    
}
}

app/design/adminhtml/xyshop/default/layout/meinmodul.xml

<?xml version="1.0"?>
<layout version="0.1.0">
    <
meinmodul_adminhtml_meinmodul_index>
        <
reference name="content">
            <
block type="meinmodul/adminhtml_meinmodul" name="meinmodul" template="meinmodul/meinmodul.phtml" />
        </
reference>
    </
meinmodul_adminhtml_meinmodul_index>
</
layout>

app/design/adminhtml/xyshop/default/template/meinmodul/meinmodul.phtml

<p><?$string ?></p>

Gruss,

Hendrik

P.S.: sizeof oder count führen zu einem Abbruch ohne Fehlermeldung :-/

 
Magento Community Magento Community
Magento Community
Magento Community
 
mzentrale1
Guru
 
Total Posts:  731
Joined:  2007-12-06
Stuttgart, Germany
 

Hoi,

hast du schon das porbiert?

$collection->load();

echo 
count($collection);

$items $collection->getItems();

Grüsse und danke für den Code.

Stefan

 
Magento Community Magento Community
Magento Community
Magento Community
Magento Community
Magento Community
Back to top