2010-03-17 5 views
0

J'ai créé un attribut personnalisé simple sur l'entité de vente/commande. Maintenant, pour les nouvelles commandes, le numéro de commande est nul. J'ai regardé la table sales_order, et bien sûr, increment_id est nul ... quelqu'un peut-il m'aider, je suis perplexe?L'attribut Magento- custom provoque un numéro de commande vide

Ceci est mon setup.php:

`getDefaultEntities public function() {

 return array(
     'order' => array(
      'entity_model'  => 'sales/order', 
      //'attribute_model' => 'catalog/resource_eav_attribute', 
      'table'    => 'sales/order', 
      'attributes'  => array(
      'pr_email_sent'  => array(
        'label'    => 'prEmailSent', 
        'type'    => 'varchar', 
        'default'   => 'false' 
       ), 

      ) 
     ) 
    ); 

}`

Ceci est mon config.xml

<fieldsets> 
      <sales_order> 
       <pr_email_sent><create>1</create><update>1</update></pr_email_sent> 
      </sales_order> 
     </fieldsets> 

Merci .

Répondre

0

Je résolu ce problème en mon fichier casse setup.php, et dans mon mysql4-install-0.1.0.php a fait ce qui suit:

<?php 

// file mysql4-install-0.1.0.php 


$installer = $this; 
$setup = new Mage_Eav_Model_Entity_Setup('sales_setup'); 
$installer->startSetup(); 

$setup->addAttribute('order', 'pr_email_sent', array('type' => 'text', 
                'default' => 'false' 
                ) 
        ); 

$installer->endSetup(); 

?> 

fonctionne comme un charme maintenant. Je ne sais pas quelle est la différence, en plus de l'évidence ... Le manque de documentation dans Magento est assez insipide.

0

Votre nouvel attribut a-t-il été créé avec succès? Vous pouvez vérifier la table eav_attribute pour voir si votre attribut est listé.

+0

Hey, merci pour la réponse. Oui, l'attribut parvient à la table eav_attribute. Je peux getData() et setData() aussi ... c'est juste que les numéros de commande sont null maintenant. Peut-être que je dois définir quelques propriétés supplémentaires sur setup.php? C'est très déroutant. – frank

0

J'ai juste couru dans ce moi-même et j'ai réussi à le comprendre. En utilisant une fonction getDefaultEntities, nous finissons par remplacer l'attribut increment_model pour sales_order dans la table eav_entity_type.

Semble écraser les champs increment_model et increment_per_store.

Heureux de voir que vous l'avez compris en utilisant ce qui précède. Je vais l'utiliser moi-même :-)

BTW, soumettra cela au bug tracker de Magento.

1

Je ne crois pas que ce soit un bug. J'ai moi-même rencontré le même problème il y a un certain temps. Le problème réside dans le fait que vous n'incluez pas toutes les informations nécessaires dans getDefaultEntities(). La façon dont vous avez fini de le faire fonctionne, mais n'est pas la meilleure façon de le faire. Vous manquiez juste de quelques parties de la configuration du tableau de commande. Voici comment cela devrait ressembler:

public function getDefaultEntities() 
{ 
    return array(
     'order' => array(
      'entity_model' => 'sales/order', 
      'table' => 'sales/order', 
      'increment_model' => 'eav/entity_increment_numeric', 
      'increment_per_store' => true, 
      'backend_prefix' => 'sales_entity/order_attribute_backend', 
      'attributes' => array(
       'pr_email_sent' => array(
        'label' => 'prEmailSent', 
        'type' => 'varchar', 
        'default' => 'false' 
       ) 
      ) 
     ) 
    ); 
} 
Questions connexes