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

Zahlarten - Formulardaten
 
mr_jingles
Member
 
Avatar
Total Posts:  42
Joined:  2009-01-05
Leipzig
 

Grüße,

folgendes Problem. Ich habe ein Modul mit Zahlarten angelegt. Einige davon erwarten Nutzereingaben (z.B. Lastschrift). Diese nehme ich über ein entsprechendes Formular entgegen. Wenn ich diese auf der Bestellübersicht zur Information ausgeben will (Info-Block) bekomme ich “null” zurück. Da ich nun nicht weiß, ob er meine Nutzereingaben überhaupt speichert, kann ich mir das nicht erklären. Zum Test habe ich beim Kreditkartenmodul eine zusätzliche Eingabe hinzugefügt, um zu prüfen, ob ich diese im Info-Block ausgeben kann. Fehlanzeige.

Nun habe ich die Vermutung, dass der mögliche User-Input noch irgendwo definiert ist, kann aber nix finden.

Wenn jemand mein Problem verstanden hat und mir helfen kann, würde ich mich sehr freuen.

MfG mr_jingles

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

Hi,

in deinem Paymentmodul brauchst du eine methode wie diese:

public function assignData($data)
    
{
           
if (!($data instanceof Varien_Object)) {
            $data 
= new Varien_Object($data);
        
}
        $info 
$this->getInfoInstance();
        
$info->setSuAccountNumber($data->getSuAccountNumber())
                ->
setSuBankCode($data->getSuBankCode())
                ->
setSuHolder($data->getSuHolder());   
                  
        return 
$this;
    
}

Zusätzlich kann es sein das du noch die convert/quote und convert/order im sales module anpassen musst

Grüsse

 
Magento Community Magento Community
Magento Community
Magento Community
 
mr_jingles
Member
 
Avatar
Total Posts:  42
Joined:  2009-01-05
Leipzig
 

Hallo [m] zentrale,

Die Methode assignData() hatte ich schon. Dort habe ich auch erfolgreich prüfen können, ob meine Daten ankommen.  Dein Zweiter Hinweis hat mich aber vermutlich auf die richtige Spur geschickt. Ich habe jetzt in meiner Konfiguration, die Felder des Sales Moduls ergänzt:

<config>
    <global>
        <
fieldsets>
            <
sales_convert_quote_payment>
                <
account_holder><to_order_payment>*</to_order_payment></account_holder>
                <
account_number_enc><to_order_payment>*</to_order_payment></account_number_enc>
                <
bank_code><to_order_payment>*</to_order_payment></bank_code>
            </
sales_convert_quote_payment>
            <
sales_convert_order_payment>
                <
account_holder><to_quote_payment>*</to_quote_payment></account_holder>
                <
account_number_enc><to_quote_payment>*</to_quote_payment></account_number_enc>
                <
bank_code><to_quote_payment>*</to_quote_payment></bank_code>
            </
sales_convert_order_payment>
        </
fieldsets>
    </global>
</
config>

Leider kommen nun immer noch keine Daten auf der Bestellübersicht an. Nun habe ich als nächstes noch einen Installer für die Felder angelegt:

$installer $this;
$installer->addAttribute('quote_payment''account_holder', array());
$installer->addAttribute('quote_payment''account_number_enc', array());
$installer->addAttribute('quote_payment''bank_code', array());

Leider kreuzen die Daten partout nicht auf :-\

Kennt jemand ein Tutorial zu den Installationsskripten? Oder hat sonst noch jemand eine Idee?

Gruß,
mr_jingles

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

Hi,

mach mal das noch zum install sql wie ich es gemacht habe für ein paymentmodul.

$installer->startSetup();
$installer->addAttribute('order_payment''su_security', array('type'=>'varchar'));
$installer->addAttribute('order_payment''su_bank_code', array('type'=>'varchar'));
$installer->addAttribute('order_payment''su_account_number', array('type'=>'varchar'));
$installer->addAttribute('order_payment''su_holder', array('type'=>'varchar'));
$installer->addAttribute('order_payment''su_transaction_id', array('type'=>'varchar'));
$installer->addAttribute('order_payment''su_paycode', array('type'=>'varchar'));
$installer->addAttribute('order_payment''su_iban', array('type'=>'varchar'));
$installer->addAttribute('order_payment''su_bic', array('type'=>'varchar'));

$installer->addAttribute('quote_payment''su_security', array('type'=>'varchar'));
$installer->addAttribute('quote_payment''su_bank_code', array('type'=>'varchar'));
$installer->addAttribute('quote_payment''su_account_number', array('type'=>'varchar'));
$installer->addAttribute('quote_payment''su_holder', array('type'=>'varchar'));
$installer->addAttribute('quote_payment''su_paycode', array('type'=>'varchar'));
$installer->addAttribute('quote_payment''su_iban', array('type'=>'varchar'));
$installer->addAttribute('quote_payment''su_bic', array('type'=>'varchar'));
$installer->endSetup();

if (
Mage::getVersion() >= 1.1{
    $installer
->startSetup();    
    
$installer->getConnection()->addColumn($installer->getTable('sales_flat_quote_payment'), 'su_bank_code''VARCHAR(255) NOT NULL');
    
$installer->getConnection()->addColumn($installer->getTable('sales_flat_quote_payment'), 'su_account_number''VARCHAR(255) NOT NULL');
    
$installer->getConnection()->addColumn($installer->getTable('sales_flat_quote_payment'), 'su_holder''VARCHAR(255) NOT NULL');
    
$installer->getConnection()->addColumn($installer->getTable('sales_flat_quote_payment'), 'su_paycode''VARCHAR(255) NOT NULL'); 
    
$installer->getConnection()->addColumn($installer->getTable('sales_flat_quote_payment'), 'su_iban''VARCHAR(255) NOT NULL');
    
$installer->getConnection()->addColumn($installer->getTable('sales_flat_quote_payment'), 'su_bic''VARCHAR(255) NOT NULL');
    
$installer->getConnection()->addColumn($installer->getTable('sales_flat_quote_payment'), 'su_security''VARCHAR(255) NOT NULL'); 
    
$installer->endSetup();
}

config.xml

<fieldsets>
            <
sales_convert_quote_payment>
                <
su_account_number><to_order_payment>*</to_order_payment></su_account_number>
                <
su_bank_code><to_order_payment>*</to_order_payment></su_bank_code>
                <
su_holder><to_order_payment>*</to_order_payment></su_holder>
                <
su_paycode><to_order_payment>*</to_order_payment></su_paycode>
                <
su_bic><to_order_payment>*</to_order_payment></su_bic>
                <
su_iban><to_order_payment>*</to_order_payment></su_iban>
                <
su_security><to_order_payment>*</to_order_payment></su_security>
            </
sales_convert_quote_payment>
            
            <
sales_convert_order_payment>
                <
su_account_number><to_quote_payment>*</to_quote_payment></su_account_number>
                <
su_bank_code><to_quote_payment>*</to_quote_payment></su_bank_code>
                <
su_holder><to_quote_payment>*</to_quote_payment></su_holder>
                <
su_paycode><to_quote_payment>*</to_quote_payment></su_paycode>
                <
su_bic><to_quote_payment>*</to_quote_payment></su_bic>
                <
su_iban><to_quote_payment>*</to_quote_payment></su_iban>
                <
su_security><to_quote_payment>*</to_quote_payment></su_security>
            </
sales_convert_order_payment>
        </
fieldsets>

und dann noch die sales/convert/order und quote überlagern:

Quote:

class Mage_Xxx_Model_Convert_Quote extends Mage_Sales_Model_Convert_Quote
{

    
/**
     * Convert quote payment to order payment
     *
     * @param   Mage_Sales_Model_Quote_Payment $payment
     * @return  Mage_Sales_Model_Quote_Payment
     */
    
public function paymentToOrderPayment(Mage_Sales_Model_Quote_Payment $payment)
    
{
        $orderPayment 
parent::paymentToOrderPayment($payment);
        
$orderPayment->setSuAccountNumber($payment->getSuAccountNumber())
                        ->
setSuBankCode($payment->getSuBankCode())
                        ->
setSuPaycode($payment->getSuPaycode())
                        ->
setSuSecurity($payment->getSuSecurity())
                        ->
setSuIban($payment->getSuIban())
                        ->
setSuBic($payment->getSuBic())
                        ->
setSuHolder($payment->getSuHolder());    
        
        return 
$orderPayment;
    
}

}

Order:

class Mage_Xxx_Model_Convert_Order extends Mage_Sales_Model_Convert_Order
{
    
/**
     * Convert order payment to quote payment
     *
     * @param   Mage_Sales_Model_Order_Payment $payment
     * @return  Mage_Sales_Model_Quote_Payment
     */
    
public function paymentToQuotePayment(Mage_Sales_Model_Order_Payment $payment$quotePayment=null)
    
{
        $quotePayment 
parent::paymentToQuotePayment($payment$quotePayment);

        
$quotePayment->setSuAccountNumber($payment->getSuAccountNumber())
                        ->
setSuBankCode($payment->getSuBankCode())
                        ->
setSuPaycode($payment->getSuPaycode())
                        ->
setSuSecurity($payment->getSuSecurity())
                        ->
setSuIban($payment->getSuIban())
                        ->
setSuBic($payment->getSuBic())
                        ->
setSuHolder($payment->getSuHolder());      

        return 
$quotePayment;
    
}
}

cheers

 
Magento Community Magento Community
Magento Community
Magento Community
 
mr_jingles
Member
 
Avatar
Total Posts:  42
Joined:  2009-01-05
Leipzig
 

Hey, danke für die schnelle und ausführliche Antwort. Setz ich mich gleich mal ran. Ich lass dann wieder von mir hören. wink

 
Magento Community Magento Community
Magento Community
Magento Community
 
mr_jingles
Member
 
Avatar
Total Posts:  42
Joined:  2009-01-05
Leipzig
 

Das Überschreiben der Mage_Sales_Model_Convert_Quote und der Mage_Sales_Model_Convert_Order ist nicht mehr notwendig. Dadurch verhinderst du ja vermutlich auch, dass ein weiteres Payment Modul mit zusätzlichen Feldern dazu kommt. Eine flexible Möglichkeit wäre noch der Event an der Stelle. Vielleicht gibt es den in der von dir verwendeten Version.
Ich konnte leider immer noch kein Ergebnis erzielen. Bin jetzt auch am zweifeln, ob der installer überhaupt ausgeführt wird. Auf was triggert der? Oder kann man die Ausführung vielleicht irgendwie erzwingen?

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

Hi,

such mal in der core_resource tabelle nach deinem modul und lösche den eintrag deinmodul_setup. dann dürfte das setup ausgeführt werden wenn du dich einlogst, oder du machst solche upgade-sql dateien wie in den standard modulen, dann musst du immer wieder in der xml die version anpassen.
ich hab die erfahrung gemacht das alleine die xml-konfiguration für convert quote und order nicht zum ergebnis geführt hat und die die zwei models überschreiben musste.

grüsse

 
Magento Community Magento Community
Magento Community
Magento Community
 
mr_jingles
Member
 
Avatar
Total Posts:  42
Joined:  2009-01-05
Leipzig
 

Genau, das ist eine gute Möglichkeit den Installer explizit aufzurufen. Mein Problem war zudem, dass das Kürzel meines Moduls identisch dem eines Core Moduls mit höherer Version war. Dadurch wird der Prozess nicht aufgerufen, was ja eigentlich auch Sinn mach. Jetzt funktioniert das soweit. Vielen, vielen Dank an der Stelle für deine Hilfe und Geduld.

Gruß,
mr_jingles

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

Gerne,

was meinst du was mich das zeit gekostet hat das rauszufinden, vorallem als varien dann plötzlich die quote als flat_table umgesetzt hat smile habe stunden mir das alles ausm forum und code anschauen rausgezogen.

Magento hat mich schon 10 Jahre meines lebens gekostet, mit den ganzen Nerven die ich liegen lassen hab smile

Grüsse

 
Magento Community Magento Community
Magento Community
Magento Community
 
mr_jingles
Member
 
Avatar
Total Posts:  42
Joined:  2009-01-05
Leipzig
 

Naja, wenn ich bedenke, dass ich mit deiner Hilfe nun bald 2 Tage mit dieser Kleinigkeit verbraucht habe… Im englischen Forum habe ich ja auch eine Weile gesucht. Bin dort aber meistens bei deinen Threads gelandet.. wink

Gerad ist mir noch aufgefallen, dass wenn ich die Verschlüsselung der Kontonummer vornehmen möchte ich leider gleich wieder zwei Klassen überschreiben mus (Digitalzone_Payment_Model_Quote_Payment, Digitalzone_Payment_Model_Order_Payment) da leider bei von Mage_Payment_Model_Info erben. Gefällt mir nicht so ganz, aber geht wohl auch nicht anders..

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