Magento 1.9.2.0: तालिका "sales_flat_order_grid" में ग्राहक के नाम मूल्य में अतिरिक्त स्थान है


19

व्यवस्थापक पैनल में, जब मैं ग्राहकों के नाम के आधार पर ऑर्डर खोजना चाहता हूं, तो मुझे पहले नाम और अंतिम नाम के बीच 2 रिक्त स्थान जोड़ना होगा। जब मैंने निरीक्षण तत्व विंडो में मूल्य को देखा, तो मैंने देखा कि मूल्य एक अतिरिक्त स्थान के साथ प्रदर्शित किया गया है। मैं इसे कैसे ठीक कर सकता हूं?


1
1.9.3.10 में अभी भी मौजूद है
sv3n

जवाबों:


23

Magento 1.9.2 में इस स्तंभ में मध्य नाम जोड़ा गया है:

स्रोत: https://github.com/OpenMage/magento-mirror/blob/magento-1.9/app/code/core/Mage/Sales/Model/Resource/Order.php##93-L99

    $ifnullFirst   = $adapter->getIfNullSql('{{table}}.firstname', $adapter->quote(''));
    $ifnullMiddle  = $adapter->getIfNullSql('{{table}}.middlename', $adapter->quote(''));
    $ifnullLast    = $adapter->getIfNullSql('{{table}}.lastname', $adapter->quote(''));
    $concatAddress = $adapter->getConcatSql(array(
        $ifnullFirst,
        $adapter->quote(' '),
        $ifnullMiddle,
        $adapter->quote(' '),
        $ifnullLast
    ));

दुर्भाग्य से वे वास्तव में उस मामले के बारे में नहीं सोचते थे जहां एक ग्राहक का मध्य नाम नहीं है। इस तरह से कोड दिखना चाहिए :

    $ifnullFirst   = $adapter->getIfNullSql('{{table}}.firstname', $adapter->quote(''));
    $ifnullMiddle  = $adapter->getIfNullSql('{{table}}.middlename', $adapter->quote(''));
    $ifnullLast    = $adapter->getIfNullSql('{{table}}.lastname', $adapter->quote(''));
    $concatAddress = $adapter->getConcatSql(array(
        $ifnullFirst,
        $adapter->quote(' '),
        $ifnullMiddle,
        new Zend_Db_Expr('IF({{table}}.middlename IS NULL OR {{table}}.middlename="", "", " ")'),
        $ifnullLast
    ));

आप फ़ाइल को कॉपी कर सकते हैं app/code/local/Mage/Sales/Model/Resource/Order.phpऔर इसे बताए अनुसार पैच कर सकते हैं ।

मौजूदा रिकॉर्ड्स को ठीक करने के लिए, आप इस फालतू PHP स्क्रिप्ट का उपयोग कर सकते हैं:

<?php
require 'app/Mage.php';
Mage::app();
Mage::getModel('sales/order')->getResource()->updateGridRecords(
    Mage::getResourceModel('sales/order_collection')->getAllIds()); 
echo 'done';

इसे fixordergrid.phpMagento रूट डायरेक्टरी में रखें, निष्पादित करें और हटाएं। इसमें कुछ समय लग सकता है, इसलिए आपको इसे कंसोल से चलाना चाहिए, न कि ब्राउज़र में:

php fixordergrid.php

आह, शायद, बीच का नाम एक खाली स्ट्रिंग था और शून्य नहीं था। मैंने इसे दर्शाने के लिए कोड अपडेट किया
फेबियन शेंगलर

इस तरह के उत्तर के लिए धन्यवाद। यह नए पंजीकृत ग्राहकों के लिए काम करता है। पुराने रिकॉर्ड के बारे में कैसे, यह db क्वेरी के माध्यम से तय किया जा सकता है?
ज़ीनत

मैं एक बार सारणी के Mage::getModel('sales/order')->getResource()->updateGridRecords(Mage::getResourceModel('sales/order_collection')->getAllIds());
पुनर्वितरण के

कृपया निर्देशों के लिए अद्यतन देखें
फेबियन शेंगलर

1
मुझे यह समस्या ट्रैकर में नहीं मिला, अब इसकी सूचना दी: magentocommerce.com/bug-tracking/issue/index/id/1202
फैबियन शेंगलर

2

स्वीकार किए गए उत्तर को आगे बढ़ाने के लिए, कोर मैगेंटो कोड को संपादित नहीं करना सबसे अच्छा अभ्यास है, ताकि फिक्स के साथ फिर से लिखना बेहतर हो।

Config.xml में

<global>
    <models>
        <sales_resource>
            <rewrite>
                <order>Yournamespace_Yourextension_Model_Sales_Order_Resource_Order</order>
            </rewrite>
        </sales_resource>
    </models>
</global>

3
स्वीकृत उत्तर कोर Magento कोड को संपादित नहीं करता है, @fschmengler स्थानीय कोड पूल ओवरराइड की सिफारिश कर रहा है। यह विशेष मॉडल अक्सर मॉड्यूल द्वारा फिर से लिखा जाता है, और इसलिए कोड पूल ओवरराइड शायद बेहतर होता है।
माइकल पार्किन
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.