PHP7의 경우 1.9의 세금없이 Magento Grand Total


17

우리는 1.9 & php7에서 일하고 있습니다; 페이팔 용의자 사기로이 문제를 감지했습니다 (차액 금액으로 인해).

프론트 엔드에서 모두 정확 (세금 적용); 그러나 계산 및 계산에서 마 젠토는 세금없이 총계를 사용합니다.

실제 오더 계산 :

세금 미포함 제품 가격 + 세금 포함 배송비 = 총 결제 금액

php5로 전환하면 계산이 정확합니다.

어떤 아이디어?

감사!


나는 같은 문제를 가지고있다. 지금까지 내가 찾은 것은 다음과 같습니다. stackoverflow.com/questions/34281113/… 이것을 해결하는 솔루션은 훌륭 할 것입니다.
Reinsch

이것은 PHP 7과는 독립적이며 이전에 예를 들어 2012 년에 다시보고되었습니다. 정렬 알고리즘 : 마 젠토 결제 총계가 잘못 분류되어 잘못된 운송 세 계산이 잘못되었습니다 . 내부 마 젠토 티켓은 [MCACE-129]입니다.
hakre

답변:


13

해결책

php7에 대한 총계 계산으로 마 젠토 문제를 해결하기 위해 마 젠토 모듈을 만들었습니다. 제가 경험 한 문제는 아마존 결제 체크 아웃 페이지에서 아마존 모듈 로 지불 하기 위해 세금이 총계에 두 번 추가되었다는 것 입니다.

크레딧

이 게시물 ( /magento//a/97107/35665 ) 에서 archigrafix가 제공 한 답변으로 내 문제가 해결되었으므로 간단히 모듈에 포함 된 수정 사항입니다.

구성 단위:

https://github.com/hartmut-ltd/magento-php7-totals-fix


효과가있다 !!! 추천 솔루션
jruzafa

9

이것이 어떤 식 으로든 도움이 될지 모르겠지만 조사해야 할 것이 있습니다.

당신의 가능성이 있습니다 collecttotals 모델의 순서가 다르게 주문하고, 그 세금이 주문되고 / grand_total 후에 적용

다음과 같이 이것이 문제인지 테스트 할 수 있습니다. (여기에는 디버그 정보를 얻기 위해 코어 파일을 조정하는 것이 포함됩니다. 실제 사이트에서는 시도하지 마십시오!)

다음 위치에있는 메소드를 편집하십시오.

Mage_Sales_Model_Quote_Address::collecttotals

메소드에 한 줄을 추가하면 처리되는 모델을 출력 할 수 있습니다.

public function collectTotals()
    {
        Mage::dispatchEvent($this->_eventPrefix . '_collect_totals_before', array($this->_eventObject => $this));
        foreach ($this->getTotalCollector()->getCollectors() as $model) {
            mage::log($model->getCode()); // <===== ADD THIS LINE
            $model->collect($this);
        }
        Mage::dispatchEvent($this->_eventPrefix . '_collect_totals_after', array($this->_eventObject => $this));
        return $this;
    }

로깅이 사용 가능한지 확인하십시오.

콘솔을 통해 로그 파일을 미십시오. tail -f system.log

프론트 엔드를 통해 문제를 재현하십시오.

당신은 당신의 로그에 다음과 같은 항목을 얻을 것입니다 (바닐라 1.9.2.2에서-다른 항목이있을 수 있습니다)

2015-12-21T05:54:12+00:00 DEBUG (7): nominal
2015-12-21T05:54:12+00:00 DEBUG (7): subtotal
2015-12-21T05:54:12+00:00 DEBUG (7): msrp
2015-12-21T05:54:12+00:00 DEBUG (7): freeshipping
2015-12-21T05:54:12+00:00 DEBUG (7): tax_subtotal
2015-12-21T05:54:12+00:00 DEBUG (7): weee
2015-12-21T05:54:12+00:00 DEBUG (7): shipping
2015-12-21T05:54:12+00:00 DEBUG (7): tax_shipping
2015-12-21T05:54:12+00:00 DEBUG (7): discount
2015-12-21T05:54:12+00:00 DEBUG (7): tax
2015-12-21T05:54:12+00:00 DEBUG (7): grand_total

반복되는 것을 볼 수 있습니다. 시작하고 끝나는 곳을 보면 패턴을 쉽게 볼 수 있어야합니다.

위의 마지막 두 항목에 유의하십시오. 세금은 grand_total보다 우선합니다. 그것은 할 수있다 grand_total 적용 세금을하지 않도록,이 순서가 구타하고, 세금 grand_total 후 나타나고있다 가능하다.

편집하다:

좋아, 그래서 나는 언급 된 질문이 실제로 수집품의 분류를 가리키는 것을 보지 못했다. 나는 그것이 문제 일지 모른다고 생각했지만 PHP7에서 직접 테스트하지는 않았습니다.

해결책이 있지만 그리 좋지는 않습니다. 콜렉터에 모델을 삽입하는 상점에 배치 된 모든 새 확장을 기록하고 추가로 정렬에 추가해야합니다. 그렇지 않으면 상황이 더 잘못 될 수 있습니다. 앞으로 약간의 유지 관리 문제가 될 수 있습니다.

특정을 배치하여 정렬 순서를 강제 적용하십시오. <sort_order>총계 구성에 을 됩니다. 각 확장 프로그램의 순서를 지정하는 config.xml 만있는 자체 확장을 통해이를 수행 할 수 있습니다.

config.xml에 다음과 같은 지시문이 있습니다.

<sales>
   <quote>
      <totals>
         <nominal>
           <sort_order>100</sort_order>
        </nominal>
        <subtotal>
           <sort_order>200</sort_order>
        </subtotal>
        <msrp>
           <sort_order>300</sort_order>
        </msrp>
        <freeshipping>
           <sort_order>400</sort_order>
        </freeshipping>

        ......
        insert each collector model with a sort directive
        ......

     </totals>
   </quote>

공간을 추가로 삽입 할 수 있도록 각 정렬 지시문 사이에 큰 간격을 사용하십시오.

언급했듯이 매우 우아하지는 않지만 즉각적인 문제를 해결할 수 있습니다.

또한 시스템에 다른 수집기 지시문이 있으므로 잘못 조정해야 할 수도 있습니다.

핵심 판매 확장 config.xml을 확인하고 확인하십시오. <totals>

거기에서 찾을 수 있습니다 :

<order_invoice>
<order_creditmemo>
<pdf>

다른 확장 프로그램에 다른 사람이있을 수 있습니다. 핵심 / 타사

희망이 도움이됩니다.

추신 : 나는 PHP7에서 이것을 테스트하지 않았습니다. sort_order 지시어의 배치는 php5.x에서 작동한다는 것을 알고 있습니다.


PHP7에서 정렬이 변경되었으므로 여러 개의 동일한 정렬 순서 (예 : 세 가지 다른 항목의 레벨 5)가 홀수 결과를 가질 수 있으므로 고유 한 정렬 순서를 명시 적으로 정의해야합니다. stackoverflow.com/questions/34281113/…
Fiasco Labs

답변에 수정 사항을 추가했습니다.
ProxiBlue

감사합니다 ProxiBlue; 확인하겠습니다. 재 색인에 문제가 있음을 감지했습니다. 어떤 경우에는이 문제를 재현합니다. TAX 구성으로 이동하여 "변경 없음"및 TAX 반품을 저장하십시오.
Joan M

8

Magento 1.6.2 및 PHP 7.0.2에서는 다음과 같이 해결했습니다.

1-먼저 로컬 config.xml을 작성했습니다. /app/code/core/Mage/Sales/etc/config.xml을 /app/code/local/Mage/Sales/etc/config.xml에 복사했습니다.

2-이렇게 변경 여기에 이미지 설명을 입력하십시오

이제 올바르게 계산됩니다.

여기에 이미지 설명을 입력하십시오


1
로컬 코드 풀에서 XML 파일을 재정의 할 수 없으므로 (자동로드 된 PHP 클래스 만 해당) 실제 사용자 정의 모듈의 config.xml의 일부 여야합니다.
Fabian Schmengler

1
설명했듯이 이것은 로컬 config.xml을 사용하여 수행되었습니다.
archigrafix
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.