आपके प्रश्न के आधार पर मैं इस धारणा के तहत हूं कि आपके पास पहले से ही अपनी एक्सटेंशन विशेषताएँ हैं। मैंने एक समान संशोधन किया है और उम्मीद है कि मेरा जवाब मदद करता है।
अपने कस्टम मॉड्यूल में डिफ़ॉल्ट शिपिंग प्रोसेसर / डिफ़ॉल्ट का विस्तार करने के लिए एक आवश्यकता-विन्यास फ़ाइल बनाएँ
नाम स्थान / CustomModule / देखें / दृश्यपटल / requirejs-config.js
var config = {
"नक्शा": {
"*": {
'Magento_Checkout / js / मॉडल / शिपिंग-सेव-प्रोसेसर / डिफ़ॉल्ट': 'Namespace_CustomModule / js / मॉडल / शिपिंग-सेव-प्रोसेसर / डिफ़ॉल्ट'
}
}
};
पेलोड में अपनी एक्सटेंशन विशेषता जोड़ें।
/ * वैश्विक परिभाषित, सतर्क * /
परिभाषित करते हैं (
[
'JQuery',
'Ko',
'Magento_Checkout / js / मॉडल / उद्धरण',
'Magento_Checkout / js / मॉडल / संसाधन यूआरएल-प्रबंधक',
'दाना / भंडारण',
'Magento_Checkout / js / मॉडल / भुगतान सेवा',
'Magento_Checkout / js / मॉडल / भुगतान / विधि कनवर्टर',
'Magento_Checkout / js / मॉडल / त्रुटि प्रोसेसर',
'Magento_Checkout / js / मॉडल / पूर्ण स्क्रीन-लोडर',
'Magento_Checkout / js / कार्रवाई / चयन-बिलिंग-पता'
],
समारोह (
$,
ko,
बोली,
resourceUrlManager,
भंडारण,
paymentService,
methodConverter,
errorProcessor,
fullScreenLoader,
selectBillingAddressAction
) {
'सख्त का उपयोग करें';
वापसी {
saveShippingInformation: फ़ंक्शन () {
var पेलोड;
अगर (भाव.बिलिंगअड्रेस ()) {
selectBillingAddressAction (quote.shippingAddress ());
}
// अपने शिपिंग पते पर एक्सटेंशन विशेषताओं को जोड़ना
पेलोड = {
पते की जानकारी: {
shipping_address: quote.shippingAddress (),
बिलिंग_अदालत: quot.billingAddress (),
shipping_method_code: quot.shippingMethod ()। method_code,
shipping_carrier_code: quot.shippingMethod ()। वाहक_कोड,
extension_attributes: {
custom_field: $ ('# custom_field')। val (),
}
}
};
fullScreenLoader.startLoader ();
वापसी भंडारण। पोस्ट (
resourceUrlManager.getUrlForSetShippingInformation (उद्धरण),
JSON.stringify (पेलोड)
)।किया हुआ(
समारोह (प्रतिक्रिया) {
quote.setTotals (response.totals);
paymentService.setPaymentMethods (methodConverter (response.payment_methods));
fullScreenLoader.stopLoader ();
}
) .Fail (
समारोह (प्रतिक्रिया) {
errorProcessor.process (प्रतिक्रिया);
fullScreenLoader.stopLoader ();
}
);
}
};
}
);
अपने उद्धरण के लिए एक प्लगइन के साथ विशेषता को बचाएं (यह सुनिश्चित नहीं करें कि क्या आप एक पर्यवेक्षक का उपयोग कर सकते हैं यहां मैंने जांच नहीं की है)।
di.xml
<?xml version="1.0"?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:ObjectManager/etc/config.xsd">
<type name="Magento\Checkout\Model\ShippingInformationManagement">
<plugin name="Namespace_CustomModule_save_delivery_date_in_quote" type="Namespace\CustomModule\Plugin\Checkout\SaveAddressInformation" />
</type>
</config>
SaveAddressInformation.php
वर्ग SaveAddressInformation
{
संरक्षित $ भावप्रणाली;
सार्वजनिक समारोह __construct (
\ Magento \ Quote \ Model \ QuoteRepository $ quotRepository
) {
$ यह-> उद्धरणप्रतिसत्ता = $ बोलीप्रतिश्रेणी;
}
/ **
* @param \ Magento \ Checkout \ Model \ ShippingInformationManagement $ विषय
* @ अपर $ कार्टआईड
* @param \ Magento \ Checkout \ Api \ Data \ ShippingInformationInterface $ addressInformation
* /
सार्वजनिक समारोह से पहले
\ Magento \ Checkout \ Model \ ShippingInformationManagement $ विषय,
$ CartId,
\ Magento \ Checkout \ Api \ Data \ ShippingInformationInterface $ addressInformation
) {
$ एक्सटेंशनएट्यूएंट्स = $ एड्रेसइन्फॉर्मेशन-> getExtensionAttributes ();
$ customField = $ extensionAttributes-> getCustomField ();
$ बोली = $ यह-> बोलीप्रतिश्रेणी-> getActive ($ cartId);
$ Quote-> setCustomField ($ customField);
}
}
एक ऑब्जर्वर घटनाओं के साथ अपने आदेश में गुण सहेजें। xml
<?xml version="1.0" encoding="UTF-8"?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:Event/etc/events.xsd">
<event name="sales_model_service_quote_submit_before">
<observer name="unique_observer_name" instance="Namespace\CustomModule\Observer\SaveCustomFieldToOrder"/>
</event>
</config>
SaveCustomFieldToOrder.php
वर्ग SaveCustomFieldToOrder ऑब्जर्वरइंटरफेस लागू करता है
{
/ **
* @var \ Magento \ Framework \ ObjectManagerInterface
* /
संरक्षित $ _objectManager;
/ **
* @param \ Magento \ फ्रेमवर्क \ ObjectManagerInterface $ ऑब्जेक्टमैन
* /
सार्वजनिक समारोह __construct (\ Magento \ फ्रेमवर्क \ ObjectManagerInterface $ objectmanager)
{
$ यह -> _ objectManager = $ objectmanager;
}
सार्वजनिक समारोह निष्पादित (EventObserver $ पर्यवेक्षक)
{
$ आदेश = $ प्रेक्षक-> getOrder ();
$ quotRepository = $ this -> _ objectManager-> create ('Magento \ Quote \ Model \ QuoteRepository');
/ ** @वर \ _ मैगेंटो \ _
$ भाव = $ भावप्रतिष्ठित-> प्राप्त ($ आदेश-> getQuoteId ());
$ आदेश-> setCustomField ($ बोली-> getCustomField ());
यह $ वापस करो;
}
}