2010-08-23 5 views
1

프로그래밍 방식으로 송장을 보내고 배송하고 상태를 설정하는 방법이 있다는 것을 알고 있습니다. (http://www.magentocommerce.com/boards/viewthread/74072/) 실제로 항목 수준까지 드릴 다운해야합니다. 명령. 항목 유형에 따라 두 개의 서로 다른 항목을 두 개의 서로 다른 위치에서 처리 할 수있는 상황이 있습니다 (동일한 순서에서). Magento 백엔드에 들어가서 다른 항목을 "운송"하지 않고 하나의 항목을 "전달"하고 해당 항목에 주석을 추가 할 수 있지만 프로그래밍 방식으로이 작업을 수행 할 방법을 찾고 있습니다. 당신의 도움에 미리 감사드립니다! Magento에서 주문의 단일 항목을 프로그래밍 방식으로 보내고 주석 달기

업데이트

: 여기 내가 이러한 목표를 달성하기 위해 사용하여 종료 코드입니다 :

$client = new SoapClient('http://somesite.domain/magento/index.php/api/?wsdl'); 
$session = $client->login('username', 'password'); 

function extract_item_id($items, $sku){ 
    foreach($items as $item){ 
     if ($item["sku"]==$sku) { 
      return $item["item_id"]; 
     } 
    } 
} 

$orderNum = "200000052"; 

$oderInfo = $client->call($session, "sales_order.info", $orderNum); 

$item_id = extract_item_id($oderInfo["items"], "someSKU") ; 
$itemsQty = array($item_id => "1"); 
$shipment = array(
    $orderNum, 
    $itemsQty, 
    "Comment associated with item shipped.", 
    true, 
    true 
); 

var_dump($shipment); 

$nship = $client->call($session, 'sales_order_shipment.create', $shipment); 
+0

이것은 ShipWorks가 제공하는 기능입니다. 프로그래밍 방식으로 해킹하는 Magento 관련 PHP 파일을 다운로드 할 수 있습니다. – Nic

답변

3

나는 그것을 해본 적이 없다,하지만 SOAP API를 supports creating individual shipment items 것 같습니다. 그게 제가 제일 먼저 점검 할 것입니다.

그래도 문제가 해결되지 않으면 Magento 관리자의 소스 코드를 검토하고 단일 항목 발송물을 만드는 작업을 리버스 엔지니어링하십시오. 특히, 관리자의 출하 컨트롤러의 saveAction에서 추적을 시작

app/code/core/Mage/Adminhtml/controllers/Sales/Order/ShipmentController.php 

젠토 코드베이스의 주문/배송/송장 섹션은 핵심 객체/방법/의존성 사이에 미묘하게 변화하는, 가장 휘발성/반복 섹션 중 하나입니다 버전. 불가능한 것은 아닐지라도 이것을위한 하나의 "올바른"대답을 찾는 것이 어려울 것입니다.

+0

응답 해 주셔서 대단히 감사드립니다. SOAP API가 확실히 올바른 방향 인 것처럼 보입니다. 이상한 점은 sales_order_shipment.create 메소드를 사용했고 배송하는 대신 인보이스에 대해서만 청구한다는 것입니다. 내가 뭔가를 놓치고 있는지 궁금해. 어쨌든, 나를 올바른 길로 인도 해 주셔서 감사합니다. – chrisSC

+1

어떤 Magento 버전을 사용하고 있습니까? 설명하는 동작처럼 들리는 API 버그가있는 최근 Community Edition 릴리스가있었습니다. http://magebase.com/magento-tutorials/shipment-api-in-magento-1-4-1-broken/ –

+0

Magento Professional을 사용하고 있습니다. (Ver. 1.8.0.0) – chrisSC

관련 문제