Передать номер заказа на поставку Magento в Shipworks; затем добавьте в поле Fedex Reference - PullRequest
0 голосов
/ 12 августа 2011

Я использую Shipworks 3 с Magento 1.5.1 и хотел бы передать NUMBER заказ на поставку. В настоящее время тип платежа определен, но мне нужен номер заказа, чтобы он мог быть включен / напечатан на упаковочном листе, счете и этикетке доставки.

Вот фрагмент из файла shipworks.php. Я думаю, мне просто нужно добавить в этот раздел, но не уверен, что добавить.

Спасибо за любую помощь.

$payment = $order->getPayment();

            // CC info
            if ($secure)
            {
                      $cc_num = $payment->getCcNumber();
            }
            else
            {
                      $cc_num = $payment->getCcLast4();
                      if (!empty($cc_num))
                      {
                                 $cc_num = '************'.$payment->getCcLast4();
                      }
            }
            $cc_year = sprintf('%02u%s', $payment->getCcExpMonth(), substr($payment->getCcExpYear(), 2)); 


        writeStartTag("Payment");
        writeElement("Method", Mage::helper('payment')->getMethodInstance($payment->getMethod())->getTitle());

        writeStartTag("CreditCard");
        writeElement("Type", $payment->getCcType());
        writeElement("Owner", $payment->getCcOwner());
        writeElement("Number", $cc_num);
        writeElement("Expires", $cc_year);
        writeCloseTag("CreditCard");

        writeCloseTag("Payment");

Ответы [ 2 ]

2 голосов
/ 11 ноября 2011

Мне удалось использовать следующее, чтобы мой номер po появился в заметках. Это то, что я использовал. надеюсь, это поможет.

// CC info
if ($secure)
{
    $cc_num = $payment->getCcNumber();
}
else
{
    $cc_num = $payment->getCcLast4();
    if (!empty($cc_num))
    {
        $cc_num = '************'.$payment->getCcLast4();
    }
}
$cc_year = sprintf('%02u%s', $payment->getCcExpMonth(), substr($payment->getCcExpYear(), 2)); 


    writeStartTag("Payment");
    writeElement("Method", Mage::helper('payment')->getMethodInstance($payment->getMethod())->getTitle());

    writeStartTag("CreditCard");
    writeElement("Type", $payment->getCcType());
    writeElement("Owner", $payment->getCcOwner());
    writeElement("Number", $cc_num);
    writeElement("Expires", $cc_year);
    writeCloseTag("CreditCard");

    writeCloseTag("Payment");

     writeStartTag("Notes");
    writeFullElement("Note", $payment->getPoNumber(),array("public" =>"true"));
   writeCloseTag("Notes");

    WriteOrderItems($order->getAllItems());

    WriteOrderTotals($order);
0 голосов
/ 12 августа 2011

Shipworks очень требователен к полученным XML-тегам. Вы не можете просто что-то добавить к ответу, потому что он будет выдавать ошибки в программном обеспечении SW при попытке синхронизации с вашим магазином Magento. Вы можете добавить его, используя существующий элемент, который в данный момент не используется. В нашем случае мы не использовали подарочные сообщения, которые добавляются к ответу как Notes , поэтому я переопределил элемент Notes , чтобы он содержал что-то еще.

Посмотрите на функцию WriteOrder (около строки 396) и найдите этот раздел:

if ($order->getGiftMessageId())
{
    $message = Mage::helper('giftmessage/message')->getGiftMessage($order->getGiftMessageId());
    $messageString = "Gift message for ". $message['recipient']. ": ". $message['message'];

    writeStartTag("Notes");
    writeFullElement("Note", $messageString, array("public" => "true"));
    writeCloseTag("Notes");
}

Закомментируйте этот раздел и добавьте что-то вроде этого:

if ($order->getPoNumber())
{
    writeStartTag("Notes");
    writeFullElement("Note", $order->getPoNumber(), array("public" => "true"));
    writeCloseTag("Notes");
}

ПРИМЕЧАНИЕ: я не знаю, работает ли $order->getPoNumber() на самом деле ... это всего лишь пример того, что вам нужно сделать

...