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

Daten aus sales_flat_quote_payment löschen bzw. kürzen
 
NOVALNET
Jr. Member
 
Avatar
Total Posts:  12
Joined:  2008-06-18
Munich
 

Hallo,

ich schreibe an einem Payment Modul für Lastschrift. Dabei funktioniert alles, jedoch werden die Bankdaten mehrmals in der Datenbank abgelegt. Ich möchte jedoch das die Bankdaten nur gekürzt in der Datenbank stehen. Deshalb kurze ich die Bankdaten nach erfolgreicher Kommunikation mit unserem Server. Jedoch werden die Daten nur in einer Tabelle (sales_order_entity_varchar) gekürzt - in der sales_flat_quote_payment Tabelle bleiben diese ungekürzt stehen. Ich frage mich auch für was diese Tabelle gut ist. Wie kann ich die Daten aus dieser Tabelle mit einem Paymentmodul (capture Methode) bearbeiten?
Datenbankänderungen:

$installer->startSetup();
$installer->addAttribute('order_payment''nn_account_holder', array('type'=>'varchar'));
$installer->addAttribute('order_payment''nn_account_number', array('type'=>'varchar'));
$installer->addAttribute('order_payment''nn_bank_sorting_code', array('type'=>'varchar'));
$installer->addAttribute('order_payment''nn_elv_country', array('type'=>'varchar'));

$installer->addAttribute('quote_payment''nn_account_holder', array('type'=>'varchar'));
$installer->addAttribute('quote_payment''nn_account_number', array('type'=>'varchar'));
$installer->addAttribute('quote_payment''nn_bank_sorting_code', array('type'=>'varchar'));
$installer->addAttribute('quote_payment''nn_elv_country', array('type'=>'varchar'));


if (
Mage::getVersion() >= 1.1{
    $installer
->startSetup();    
    
$installer->getConnection()->addColumn($installer->getTable('sales_flat_quote_payment'), 'nn_account_holder''VARCHAR(255) NOT NULL');
    
$installer->getConnection()->addColumn($installer->getTable('sales_flat_quote_payment'), 'nn_account_number''VARCHAR(255) NOT NULL');
    
$installer->getConnection()->addColumn($installer->getTable('sales_flat_quote_payment'), 'nn_bank_sorting_code''VARCHAR(255) NOT NULL');
    
$installer->getConnection()->addColumn($installer->getTable('sales_flat_quote_payment'), 'nn_elv_country''VARCHAR(255) NOT NULL'); 
    
$installer->endSetup();
}

Ich habe außerdem eine assignData und prepareSave-Methode:

public function assignData($data)
    
{
        
if (!($data instanceof Varien_Object)) {
            $data 
= new Varien_Object($data);
        
}
        $info
=$this->getInfoInstance();
        
$info->setNnElvCountry($data->getElvCountry())
        ->
setNnAccountHolder($data->getAccountHolder())
        ->
setNnAccountNumber($data->getAccountNumber())
        ->
setNnBankSortingCode($data->getBankSortingCode());
        return 
$this;
    
}

    
public function prepareSave()
    
{

        $info 
$this->getInfoInstance();
        
$info->setNnAccountNumber(substr($info->getNnAccountNumber(),0,-4)."XXXX");
        
$info->setNnBankSortingCode(substr($info->getNnBankSortingCode(),0,-3)."XXX");

        return 
$this;
    
}
Nach erfolgreicher Kommunikation werden die Daten gekürzt:
public function capture(Varien_Object $payment$amount)
    
{
        error_log
("capture\n",3,"/tmp/magento.log");
        
$error false;
        
$payment->setAmount($amount);
        
$request $this->_buildRequest($payment);

        
$result $this->_postRequest($request);
            
        if (
$result->getStatus() == self::RESPONSE_CODE_APPROVED{
            $payment
->setStatus(self::STATUS_APPROVED);
            
$payment->setCcTransId($result->getTid());
            
$payment->setLastTransId($result->getTid());
            
$payment->setNnAccountNumber(substr($payment->getNnAccountNumber(),0,-4)."XXXX");
            
$payment->setNnBankSortingCode(substr($payment->getNnBankSortingCode(),0,-3)."XXX");
        
}
.
.
.

Ich überschreibe auch die paymentToOrderPayment Methode.

class Mage_Novalnet_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)
    
{
        error_log
("paymentToOrderPayment",3,"/tmp/magento.log");
        
$orderPayment parent::paymentToOrderPayment($payment);
        
$orderPayment->setNnAccountNumber($payment->getNnAccountNumber())
                        ->
setNnBankSortingCode($payment->getNnBankSortingCode())
                        ->
setNnAccountHolder($payment->getNnAccountHolder())
                        ->
setNnElvCountry($payment->getNnElvCountry());    
        
        return 
$orderPayment;
    
}

}

Mir ist auch nicht der Unterschied zwischen dem “Quote"-Objekt und dem Order-Objekt. Ich finde hierzu im Forum keine Erklärung. Kann mir jemand sagen wofür das “Quote"-Objekt gut ist?

Grüße

Manfred

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

Hi,

eine quote [comm.] ist “das Angebot”, lt. dict.leo.org. Du hast ja beim Einfkauf im Shop noch keine Order. Ãœber das Model convert wird dann im Checkout aus der Quote eine Order. Die flat quote tabellen dienen wohl zur speicherung der items einer quote in der datenbank. in vorherigen versionen von magento hatte das quote model die selbe dbstruktur wie die order. denke das wurde aus performancegründen angepasst smile! denke du könntest nach dem capture die entsprechende quote laden und dann deine attrubute des payments anpassen, weiss jetzt aber nicht wie du die entsprechende quote laden kannst, müsstest wahrscheinlich die quote id zur order speichern.

Grüsse

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