마 젠토 주문 번호 문제


9

Magento의 주문 번호에 이상한 문제가 있습니다.

하나 개의 주문이 내 웹 사이트에 게재 된 최근 때 주문 번호이었다 온 100000350, 이상적으로는 했어야 100000370내 이전 주문 번호 말하자면 100000369100000367. 아래 스크린 샷을 첨부했습니다

주문 번호 스크린 샷

또한 오류 로그를 확인했지만 해당 항목을 찾지 못했습니다. 우리는 SagePay와 PayPal을 지불 게이트웨이로 사용하고 있습니다.

아무도 나를 안내 할 수 있습니까?


나는 당신이 주문과 관련된 모든 모듈을 설치했음을 분명히 알 수 있습니다. y 이것이 문제가 될 것입니다.
Keyul Shah

순서에 관련된 어떤 모듈이 없습니다 .. 우리가 사용하는 유일한 타사 모듈은 Ebizmarts_SagePay, Mass_Product_Relater, TBT_Enhancegrid 및 Sphinix 검색하다
덱스터

1
큰 문제는 아닙니다. 고객 계정을 가진 사람은 지불을 위해 제출 한 시점까지 주문을 거의 완료하고 판매 주문 번호를 지정한 다음 일정 기간 동안 장바구니를 버렸습니다. 항상 일어납니다 ... 당신은 포기 대신 주문, 축하, 주문을 받았습니다.
Fiasco Labs

내 질문이없는 것 같아
Dexter

1
@huzefam-Magento 디자인 팀에 문의하거나 완성 된 Magento SO에서 ERP를 위해 키 일련 번호를 직접 만드십시오. 예, 송장 번호가 누락되면 감사 관점에서 이해가 어렵습니다. 마 젠토는 모든 주문이 유효하지 않다는 입장을 취한 것으로 보이므로 SO 번호 누락은 큰 문제가되지 않습니다. 또한 일부 회계 시스템, 정부 관할지에서는 판매 주문에 대해 동일한 방식을 사용하며 무효화 된 주문을 전체 일련의 순서로 표시하는 감사 내역이있을 것으로 예상합니다.
Fiasco Labs

답변:


28

시퀀스 번호를 처음 얻었을 때, 우리는 무슨 일이 일어나고 있는지 알 때까지 놀랐고 약간 실망했습니다. Magento가 판매 주문 번호를 할당하는 방법과 관련이 있습니다.

현재 할당 된 숫자보다 이전이고 한 달 이상 된 것과 같은 순서가 아닌 것을 갖는 것은 완전히 정상입니다. 비밀은 특정 중요 단계 이후에 주문을 완료하지 않고 다시 로그인하여 최종 구매하기로 결정한 로그인 고객이라는 것입니다.

판매 주문 번호가 할당 된 견적은 판매 주문 번호에 해당 번호를 사용합니다.

이제 설명을하겠습니다.

Magento 주문 프로세스는 장바구니에 처음으로 상품을 추가 할 때 견적을 생성합니다.

  • 게스트 고객의 경우이 견적은 세션이 시간 초과되지 않은 한 데이터베이스에 존재하지만 게스트 고객이 복구 할 수없는 한 지속됩니다.
  • 등록 된 고객이 로그인하면 카트 견적이 고객 ID를 지정하여 장바구니가 비워지지 않는 한 지속되고 고객이 계정에 로그인하여 등록 된 고객이 검색 할 수 있도록합니다.

이 시점에서 견적은 잠재적 판매 오더 일뿐입니다. 고객이 비용을 지불하지 않았기 때문에 할당 된 번호가 없습니다.

고객이 진행 버튼 을 클릭하여 체크 아웃하면 다음이 수행됩니다.

  • 카트를 시작하기 전에 로그인
  • 또는 로그인하지 않은 경우 게스트로 등록 또는 체크 아웃할지 묻습니다.

중요한 것은 다음과 같습니다. 장바구니에 등록하기로 선택한 고객은 주문이 완료 될 때까지 손님 고객으로 취급되며 계정이 생성되고 로그인되는 성공 페이지로 이동합니다. 견적 주문이 완료되지 않고 성공 페이지가 표시되면 카트의 세션 시간 초과 손실과 함께 손님 고객 견적 을 유지합니다 .

신용 카드 주문의 경우 주문 주문 버튼을 클릭하면 다음이 발생합니다 .

  • 신용 카드 정보, 청구 지 주소 정보, 장바구니 총계 및 주문 정보가 조합됩니다.
  • 이 견적 에는 판매 주문 번호 가 지정됩니다 ( 열의 sales_flat_quotereserved_order_id).
  • 데이터 패키지는 신용 카드 게이트웨이에 제출되어 주문에 대한 자금을 승인 / 캡처합니다.
  • 신용 카트 프로세서는 다음을 다시 전달합니다.
    • 기록 될 적절한 거래 정보를 가진 자금승인 / 캡쳐
    • 또는 지불 거부 허가 / 캡처가 거부 된 이유에 적절한 정보.
  • 승인 / 캡처에 성공하면 견적이 판매 오더로 변환되고 이것이 장바구니 등록 인 경우 고객 계정이 생성됩니다.

신용 카드 결제 게이트웨이를 통해 고객에 대한 신용 카드 거래가 거부되고 다음 고객 주문을하면 판매 주문 번호에 예약 판매 주문 번호가 할당되어 판매 주문 번호 순서가 생략 됩니다. 다음 판매 주문에 사용 가능한 다음 번호가 지정됩니다.

세션 시간 초과를 초과하는 게스트 카트 (손님 주문 및 카트 고객 등록 실패)의 경우 세션이 만료되면 예약 된이 판매 주문 번호가 손실 되어 판매 주문 순서에 차이 가 있습니다.

진행 버튼을 클릭하기 전에 로그인 한 고객의 경우, 견적에 고객 ID가 할당되므로 주문을 시도한 후 거부 된 경우 고객은 다시 방문하여 로그인하여 장바구니에 여전히 내용이 있으며 주문은 때때로 훨씬 늦습니다 (현재까지 가장 긴 기간은 4 개월이었습니다). 견적은 지정된 예약 판매 주문 번호 를 사용하여 판매 주문 관리 화면 에 순서가 잘못된 판매 주문 번호가 표시됩니다.


확인을 위해 지불 방법을 선택하지 않고 브라우저를 닫아서 (사이트를 연 컴퓨터 + 체크 아웃 먼저) 체크 아웃에 걸리는 척했습니다. 한편 두 번째 컴퓨터 주문을 완료했습니다 (다음 ID 증분을 가져와야 함). 결과는 숫자를 뛰어 넘지 않습니다. 그런 식으로 작동하면 주문 10과 주문 11 사이에 사용되지 않은 ID를 추가했을 것입니다. 귀하의 정보에 따라, 귀하가 지정하는 것을 정확하게 확인하고 수행하려고 시도했지만 출력을 제공하지 않습니다.
Siva

대신 고객이 Payement Gateway에서 실패한 경우 보류중인 지불 또는 취소로 표시되고 주문의 마지막 부분에서 주문이 실패하면 주문이 전혀 표시되지 않습니다. 순서). 그래서 지금, 나는 이것과 혼동됩니다. 주문 번호가 무작위로 건너 뛰는 이유를 이해하도록 도와주세요. 감사합니다
Siva

대단한 설명.
Wolfack

2

나는 같은 문제에 직면했지만 서버에 엄청난 양의 부하가 발생했을 때에 만 발생했습니다. 따옴표를 순서대로 변환하는 동안 db가 잠금 상태가되므로이 문제가 발생합니다. 추가 검사에서 문제는 sales_flat_order 테이블에 삽입 한 직후 트랜잭션 내에서 sales_flat_order_grid 테이블에 쓰려고한다는 것을 알았습니다. 동시 쿼리로 인해 잠금 충돌이 발생했습니다. 실제 솔루션은 sales_flat_order_grid를 트랜잭션에서 제외시키는 것입니다.

이 링크는 문제를 이해하는 데 도움이되었습니다.

패치로 문제가 해결되었습니다.

Mage_Sales_Model_Abstract에서 _afterSave 함수를 제거하고 추가해야합니다.

public function afterCommitCallback(){
    if (!$this->getForceUpdateGridRecords()) {
         $this->_getResource()->updateGridRecords($this->getId());
     }
    parent::afterCommitCallback();
}

문제가 해결되면 알려주세요.


Shaily가 말한 것처럼이 방법을 사용해 보셨습니까 ?
Siva

0

확실하지 않지만 문제가 해결 될 수 있습니다.

내가 생각하는 한, 무언가가 당신의 eav_entity_store테이블 을 방해했을 수 있습니다 . 사용할 다음 incremental_id, 즉 order_id에 대한 정보가 들어 있습니다. magento 시스템의 일부 모듈 또는 코드가 변경되었을 수 있습니다.

이 테이블을 열고 마지막 주문 ID로 incremental_last_id coloumn을 업데이트하십시오. 인보이스, 배송 등과 같은 다른 사람의 증분 ID가 포함되어 있으므로주의하십시오. 확약하려면 eav_entity_types표로 이동 하여 entity_type_idfor sales/order(column entity_model) 가 무엇인지 확인하십시오 . 내 magento의 5입니다. 이제 eav_entity_store테이블 로 이동하여 행 entity_type_id이 5 인 행의 incremental_id를 업데이트하십시오. phpmyadmin을 통해 직접 업데이트하거나 다음과 같은 쿼리를 실행할 수 있습니다.

update eav_entity_store set increment_last_id = 'your_last_order_id' where entity_type_id = 5; 

주문시 5 개의 마 젠토에서 entity_type_id입니다.

문제에 대한 여러 가지 이유가있을 수 있지만 문제가 해결 될 수 있습니다.


감사합니다 ..하지만 이미 테이블을 확인하고 올바른 증분 ID를 가지고
덱스터

관리자 판매-> 주문의 최대 (최신이 아님) 주문 ID는 무엇입니까? 내가 말한 표에 그 값을 적으십시오. 시험 주문하고 점검하십시오.
Pradeep
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.