Идентификатор продукта (настройка нескольких сайтов) - PullRequest
0 голосов
/ 17 февраля 2020

Мы создаем скрипт, который делает xml экспорт заказов. При экспорте нам необходимо получить код EAN заказанного продукта. В настоящее время мы используем WooCommerce для получения информации о продукте и получения _sku оттуда.

Однако мы замечаем, что что-то идет не так с нашей многосайтовой настройкой.

Когда продукт заказывается с сайта B, мы иногда не можем получить EAN-код заказанного продукта или получить неправильный EAN-код.

Это потому, что если мы используем наш скрипт и спрашиваем WooCommerce -> getOrder -> getItems, мы получаем идентификаторы продукта с сайта A, а не с сайта B. Поэтому, когда мы пытаемся получить информацию _sku из заказанного товара, он ищет неправильный продукт.

Как мы можем убедиться, что с нашим скриптом он знает, что взять, когда мы получаем информацию о нашем заказе, чтобы не имело значения, с какого сайта пришел заказ, информация заказа всегда верна?

function bol_2020_custom_process_order_manual($order_id) {

    global $voorletters;
    $order = new WC_Order( $order_id );
    // $myuser_id = (int)$order->user_id;
    // $user_info = get_userdata($myuser_id);
    // $customer = new WC_Customer($order_id);
    $items = $order->get_items();

    $xml_order_id = $order_id;
    $xml_ORDER_DATE = date('Y-m-d');
    $xml_DELIVERY_START_DATE = '2017-09-07';
    $xml_DELIVERY_END_DATE = '2017-09-08';


    $xml_SUPPLIER_NAME = 'DOMAINNAME.nl';
    $xml_SUPPLIER_NAME2 = '';
    $xml_SUPPLIER_NAME3 = '';
    $xml_SUPPLIER_STREET = '**** 71A';
    $xml_SUPPLIER_ZIP = '******';
    $xml_SUPPLIER_CITY = '********';
    $xml_SUPPLIER_COUNTRY = 'NL';

    $xml_BUYUR_NAME = get_post_meta($order_id,'_shipping_first_name',true).' '.get_post_meta($order_id,'_shipping_last_name',true);
    $xml_BUYUR_NAME2 = get_post_meta($order_id,'_shipping_company',true);
    $xml_BUYUR_NAME3 = '';
    $xml_BUYUR_STREET = get_post_meta($order_id,'_shipping_address_1',true).' '.get_post_meta($order_id,'_shipping_address_2',true);
    $xml_BUYUR_ZIP = get_post_meta($order_id,'_shipping_postcode',true);
    $xml_BUYUR_CITY = get_post_meta($order_id,'_shipping_city',true);
    $xml_BUYUR_COUNTRY = get_post_meta($order_id,'_shipping_country',true);


    $imp = new DOMImplementation;
    $dtd = $imp->createDocumentType('ORDER', '', 'openTRANS_ORDER_1_0.dtd');
    $dom = $imp->createDocument("", "", $dtd);
    $dom->encoding = 'UTF-8';

    $root = $dom->appendChild($root = $dom->createElement('ORDER'));
        $order_version = $root->appendChild($dom->createAttribute('version'));
        $order_version->value = '1.0';
        $order_type = $root->appendChild($dom->createAttribute('type'));
        $order_type->value = 'standard';

    $root->appendChild($client = $dom->createElement('ORDER_HEADER'));

        $order_info = $client->appendChild($dom->createElement('ORDER_INFO'));

            $order_info->appendChild($ORDER_ID = $order_info->appendChild($dom->createElement('ORDER_ID')));
                $ORDER_ID->appendChild($dom->createTextNode($voorletters.$xml_order_id));

            $order_info->appendChild($ALT_CUSTOMER_ORDER_ID = $order_info->appendChild($dom->createElement('ALT_CUSTOMER_ORDER_ID')));
                $ALT_CUSTOMER_ORDER_ID->appendChild($dom->createTextNode(''));

            $order_info->appendChild($ORDER_DATE = $order_info->appendChild($dom->createElement('ORDER_DATE')));
                $ORDER_DATE->appendChild($dom->createTextNode($xml_ORDER_DATE));

            $DELIVERY_DATE = $order_info->appendChild($order_info->appendChild($dom->createElement('DELIVERY_DATE')));
                $DELIVERY_DATE_ATT = $DELIVERY_DATE->appendChild($dom->createAttribute('type'));
                $DELIVERY_DATE_ATT->value = 'fixed';

                $DELIVERY_START_DATE = $DELIVERY_DATE->appendChild($dom->createElement('DELIVERY_START_DATE'));
                    $DELIVERY_START_DATE->appendChild($dom->createTextNode($xml_DELIVERY_START_DATE));

                $DELIVERY_END_DATE = $DELIVERY_DATE->appendChild($dom->createElement('DELIVERY_END_DATE'));
                    $DELIVERY_END_DATE->appendChild($dom->createTextNode($xml_DELIVERY_END_DATE));

            $ORDER_PARTIES = $order_info->appendChild($order_info->appendChild($dom->createElement('ORDER_PARTIES')));

                $BUYER_PARTY = $ORDER_PARTIES->appendChild($dom->createElement('BUYER_PARTY'));

                    $PARTY_ID = $BUYER_PARTY->appendChild($dom->createElement('PARTY'));

                        $PARTY_ID_ = $PARTY_ID->appendChild($dom->createElement('PARTY_ID'));
                            $PARTY_ID__ATT = $PARTY_ID_->appendChild($dom->createAttribute('type'));
                            $PARTY_ID__ATT->value = 'ILN';
                        //$PARTY_ID_->appendChild($dom->createTextNode('4317784032988'));
                        $PARTY_ID_->appendChild($dom->createTextNode('4317784044110'));

                $SUPPLIER_PARTY = $ORDER_PARTIES->appendChild($dom->createElement('SUPPLIER_PARTY'));

                    $PARTY_ID = $SUPPLIER_PARTY->appendChild($dom->createElement('PARTY'));

                        $PARTY_ID_ = $PARTY_ID->appendChild($dom->createElement('PARTY_ID'));
                            $PARTY_ID__ATT = $PARTY_ID_->appendChild($dom->createAttribute('type'));
                            $PARTY_ID__ATT->value = 'ILN';
                        $PARTY_ID_->appendChild($dom->createTextNode('4317784000000'));

                $SHIPMENT_PARTIES = $ORDER_PARTIES->appendChild($dom->createElement('SHIPMENT_PARTIES'));

                    $DELIVERY_PARTY = $SHIPMENT_PARTIES->appendChild($dom->createElement('DELIVERY_PARTY'));

                        $PARTY = $DELIVERY_PARTY->appendChild($dom->createElement('PARTY'));

                            $PARTY_ID = $PARTY->appendChild($dom->createElement('PARTY_ID'));
                                $PARTY_ID_ATT = $PARTY_ID->appendChild($dom->createAttribute('type'));
                                $PARTY_ID_ATT->value = 'supplier_specific';
                            $PARTY_ID->appendChild($dom->createTextNode(''));

                            $ADDRESS = $PARTY->appendChild($dom->createElement('ADDRESS'));

                                $NAME = $ADDRESS->appendChild($dom->createElement('NAME'));
                                $NAME->appendChild($dom->createTextNode($xml_SUPPLIER_NAME));

                                $NAME2 = $ADDRESS->appendChild($dom->createElement('NAME2'));
                                $NAME2->appendChild($dom->createTextNode($xml_SUPPLIER_NAME2));

                                $NAME3 = $ADDRESS->appendChild($dom->createElement('NAME3'));
                                $NAME3->appendChild($dom->createTextNode($xml_SUPPLIER_NAME3));

                                $STREET = $ADDRESS->appendChild($dom->createElement('STREET'));
                                $STREET->appendChild($dom->createTextNode($xml_SUPPLIER_STREET));

                                $ZIP = $ADDRESS->appendChild($dom->createElement('ZIP'));
                                $ZIP->appendChild($dom->createTextNode($xml_SUPPLIER_ZIP));

                                $CITY = $ADDRESS->appendChild($dom->createElement('CITY'));
                                $CITY->appendChild($dom->createTextNode($xml_SUPPLIER_CITY));

                                $COUNTRY = $ADDRESS->appendChild($dom->createElement('COUNTRY'));
                                $COUNTRY->appendChild($dom->createTextNode($xml_SUPPLIER_COUNTRY));

                    $FINAL_DELIVERY_PARTY = $SHIPMENT_PARTIES->appendChild($dom->createElement('FINAL_DELIVERY_PARTY'));

                        $PARTY = $FINAL_DELIVERY_PARTY->appendChild($dom->createElement('PARTY'));

                            $PARTY_ID = $PARTY->appendChild($dom->createElement('PARTY_ID'));
                                $PARTY_ID_ATT = $PARTY_ID->appendChild($dom->createAttribute('type'));
                                $PARTY_ID_ATT->value = 'buyer_specific';
                            $PARTY_ID->appendChild($dom->createTextNode(''));

                            $ADDRESS = $PARTY->appendChild($dom->createElement('ADDRESS'));

                                $NAME = $ADDRESS->appendChild($dom->createElement('NAME'));
                                $NAME->appendChild($dom->createTextNode($xml_BUYUR_NAME));

                                $NAME2 = $ADDRESS->appendChild($dom->createElement('NAME2'));
                                $NAME2->appendChild($dom->createTextNode($xml_BUYUR_NAME2));

                                $NAME3 = $ADDRESS->appendChild($dom->createElement('NAME3'));
                                $NAME3->appendChild($dom->createTextNode($xml_BUYUR_NAME3));

                                $STREET = $ADDRESS->appendChild($dom->createElement('STREET'));
                                $STREET->appendChild($dom->createTextNode($xml_BUYUR_STREET));

                                $ZIP = $ADDRESS->appendChild($dom->createElement('ZIP'));
                                $ZIP->appendChild($dom->createTextNode($xml_BUYUR_ZIP));

                                $CITY = $ADDRESS->appendChild($dom->createElement('CITY'));
                                $CITY->appendChild($dom->createTextNode($xml_BUYUR_CITY));

                                $COUNTRY = $ADDRESS->appendChild($dom->createElement('COUNTRY'));
                                $COUNTRY->appendChild($dom->createTextNode($xml_BUYUR_COUNTRY));

            $PARTIAL_SHIPMENT_ALLOWED = $order_info->appendChild($order_info->appendChild($dom->createElement('PARTIAL_SHIPMENT_ALLOWED')));
            $PARTIAL_SHIPMENT_ALLOWED->appendChild($dom->createTextNode('False'));

            $TRANSPORT = $order_info->appendChild($order_info->appendChild($dom->createElement('TRANSPORT')));

                $INCOTERM = $TRANSPORT->appendChild($dom->createElement('INCOTERM'));
                $INCOTERM->appendChild($dom->createTextNode(''));

                $LOCATION = $TRANSPORT->appendChild($dom->createElement('LOCATION'));
                $LOCATION->appendChild($dom->createTextNode('EKD'));

                $TRANSPORT_REMARK = $TRANSPORT->appendChild($dom->createElement('TRANSPORT_REMARK'));
                $TRANSPORT_REMARK->appendChild($dom->createTextNode('10'));

            $REMARK_GENERAL = $order_info->appendChild($order_info->appendChild($dom->createElement('REMARK')));
                $REMARK_GENERAL_ = $REMARK_GENERAL->appendChild($dom->createAttribute('type'));
                $REMARK_GENERAL_->value = 'general';
            $REMARK_GENERAL->appendChild($dom->createTextNode('SUPERHANDIG.NL IS HÉT ADRES VOOR PROF. GEREEDSCHAP EN ACCESSOIRES!'));

            $REMARK_ORDER = $order_info->appendChild($order_info->appendChild($dom->createElement('REMARK')));
                $REMARK_ORDER_ = $REMARK_ORDER->appendChild($dom->createAttribute('type'));
                $REMARK_ORDER_->value = 'order';
            $REMARK_ORDER->appendChild($dom->createTextNode($voorletters.$xml_order_id));

    $ORDER_ITEM_LIST = $root->appendChild($client = $dom->createElement('ORDER_ITEM_LIST'));

        $i = 0;

        foreach ($items as $item) {



                $ean = get_post_meta($item['product_id'], '_sku'); // for single products
                $qty = $item['qty'];

                if(empty($ean[0])){
                    $ean = get_post_meta($item['variation_id'], '_sku'); // for variable products
                }




            $i++;
            $ORDER_ITEM = $ORDER_ITEM_LIST->appendChild($dom->createElement('ORDER_ITEM'));

            $LINE_ITEM_ID = $ORDER_ITEM->appendChild($dom->createElement('LINE_ITEM_ID'));
            $LINE_ITEM_ID->appendChild($dom->createTextNode($i));

            $ARTICLE_ID = $ORDER_ITEM->appendChild($dom->createElement('ARTICLE_ID'));

                $SUPPLIER_AID = $ARTICLE_ID->appendChild($dom->createElement('SUPPLIER_AID'));
                $SUPPLIER_AID->appendChild($dom->createTextNode(''));

                $INTERNATIONAL_AID = $ARTICLE_ID->appendChild($dom->createElement('INTERNATIONAL_AID'));
                    $INTERNATIONAL_AID_ = $INTERNATIONAL_AID->appendChild($dom->createAttribute('type'));
                    $INTERNATIONAL_AID_->value = 'EAN';
                $INTERNATIONAL_AID->appendChild($dom->createTextNode($ean[0]));

                $BUYER_AID = $ARTICLE_ID->appendChild($dom->createElement('BUYER_AID'));
                    $BUYER_AID_ = $BUYER_AID->appendChild($dom->createAttribute('type'));
                    $BUYER_AID_->value = 'BP';
                $BUYER_AID->appendChild($dom->createTextNode(''));

                $BUYER_AID = $ARTICLE_ID->appendChild($dom->createElement('BUYER_AID'));
                    $BUYER_AID_ = $BUYER_AID->appendChild($dom->createAttribute('type'));
                    $BUYER_AID_->value = 'IN';
                $BUYER_AID->appendChild($dom->createTextNode(''));

                $DESCRIPTION_SHORT = $ARTICLE_ID->appendChild($dom->createElement('DESCRIPTION_SHORT'));
                $DESCRIPTION_SHORT->appendChild($dom->createTextNode(''));

            $QUANTITY = $ORDER_ITEM->appendChild($dom->createElement('QUANTITY'));
            $QUANTITY->appendChild($dom->createTextNode($qty));

            $ORDER_UNIT = $ORDER_ITEM->appendChild($dom->createElement('ORDER_UNIT'));
            $ORDER_UNIT->appendChild($dom->createTextNode('C62'));

        }


    $ORDER_SUMMARY = $root->appendChild($client = $dom->createElement('ORDER_SUMMARY'));

        $TOTAL_ITEM_NUM = $ORDER_SUMMARY->appendChild($dom->createElement('TOTAL_ITEM_NUM'));
        $TOTAL_ITEM_NUM->appendChild($dom->createTextNode($i));


    $dom->formatOutput = true;
    $dom->save($_SERVER['DOCUMENT_ROOT'].'/ede_orders/xml/'.$voorletters.$xml_order_id.'.xml');



}

https://gist.github.com/webstylecenter/2491735366a70d82336512e0d0cc4e8f

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...