2012-03-15 2 views
1

0 나는 다음과 같은 문제, 라이브 젠토 1.5.0.1 스웹이> '로 인해 총'이 있습니다젠토 : 주문 송장 (생성)하지만

우리 이상적인를 통해 지불 된 주문을받은

(네덜란드어 온라인 지불 서비스)와 지불 성공에 대한 송장 자동 생성되었습니다. 또한 은행 계좌에 금액이 입금되었습니다.

'총 지불 기한'필드가 0보다 큰 금액이므로 주문을 완료 할 수 없습니다. 이것은 iDEAL 모듈의 버그 일 것입니다 (다른 순간에 처리 될 것입니다).

이 특정 주문을 '완료'로 설정하고 총 만기일 필드를 0으로 설정하는 방법이 있습니까?

분명히 PHP 코드 예제는 매우 환영 할 만합니다. (필자는 프로그래머입니다.

+0

총 금액은 얼마입니까? 이것은 원본과 동일합니까? 아니면 0.01 일까? –

+0

총액 (0.01보다 큼)과 지불 한 총액이 0.00입니다 (주문이 지불 되었기 때문에 사실이 아닙니다). – edsk

답변

2

도움이 될 수 있습니다. 우리의 모듈 중 하나에서

예 :

$order = Mage::getModel('sales/order')->loadByIncrementId($incrementId); 
if ($order->getTotalPaid() == 0) { 
    $invoice = $order->prepareInvoice(); 
    $invoice->register()->capture(); 
    Mage::getModel('core/resource_transaction') 
     ->addObject($invoice) 
     ->addObject($invoice->getOrder()) 
     ->save(); 
    $order->save(); 

이 다음, 그것을 등록 캡처 및 송장 및 주문을 저장, 송장을 생성 지불 아직 (사용자가 멀티 클릭하여 여러 성공적인 요청을 보낼 수 있습니다) 등록되지 않은 경우 검사 .

EDIT 1

private function markOrderPayd($incrementId, $status) { 
     $order = Mage::getModel('sales/order')->loadByIncrementId($incrementId); 
     if ($order->getTotalPaid() == 0) { 
      ... 
      $order->save(); 
      $invoice = $order->prepareInvoice(); 
      $invoice->register()->capture(); 
      ... 
      Mage::getModel('core/resource_transaction') 
       ->addObject($invoice) 
       ->addObject($invoice->getOrder()) 
       ->save(); 
      $order->save(); 
      ... 

     } else { 
      ... 
      $order->save(); 
     } 
} 

난 당신이 어떤 수표, 그래서이 송장이 생성이없는 것 같아요.

+0

감사합니다. 주문이 완료되어 '총 지불액'= 0 및 총 지불액 == 총액입니다. 단 하나의 주문으로 두 개의 인보이스가 있지만 그걸로 살 수있는 유일한 것입니다.) – edsk

+0

업데이트 확인 –

+0

고맙지 만 완전히 이해하지 못했습니다. resource_transaction을 사용하여 주문을 완료하면 인보이스를 작성해야합니다. 이미 인보이스가 있었지만 어떻게 든이 정보는 올바르게 캡처되지 않았습니다. 추가 인보이스를 작성하지 않고이 주문을 완료하지 못하게 할 수있는 방법이 있습니까? – edsk