Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Błąd w skrypcie? Przeliczanie wartości zamówienia.
Forum PHP.pl > Forum > Przedszkole
xaitras
Witam wszystkich

Dzisiaj mam inny problem. Piszę skrypt do walidacji pól zamówień.

Skrypt m.in. sprawdza czy kwota wpłacona przez klienta jest zgodna z wartością zamówienia. Czasami zdarza się, że klient nie opłaci zamówienia, zapłaci za mało lub za dużo.
Jeśli uruchomię skrypt a w zamówieniu nie jest podany koszt przesyłki to wartość produktów może być w tym momencie dowolna.
Sytuacja się komplikuje jeśli ustawię koszt przesyłki na równą kwotę np. 17.00 zł a wartość produktu jest ustawiona np. na 9.99 zł
Wtedy pomimo, że wpłacona kwota równa się wartości zamówienia, skrypt zwraca błąd.

Błąd występuje tylko w przypadku kiedy w grę wchodzą koszty przesyłki. Na początku myślałem, że kwoty różnią się po przeliczeniu o 1 grosz, że któraś zostaje "zaokrąglona",
ale po dodaniu "echo" do skryptu okazało się, że są identyczne.

Nie wiem gdzie się pomyliłem..

Podaję fragment kodu (w wielkim uproszczeniu):

  1. $cena_przesylki = $orders['delivery_price'];
  2. $wplacono = $orders['payment_done'];
  3.  
  4.  
  5. $wartosc_produktow='0';
  6. foreach($orders['products'] as $products) {
  7. $cena_brutto_produktu=$products1['price_brutto'];
  8. $ilosc_szt=$products['quantity'];
  9. $wartosc_produktu=$cena_brutto_produktu * $ilosc_szt;
  10. $wartosc_produktow+=$wartosc_produktu;
  11. }
  12. $wartosc_zamowienia=$wartosc_produktow+$cena_przesylki;
  13.  
  14. if($wplacono !== $wartosc_zamowienia)
  15. {
  16.  
  17. BŁĄD
  18.  
  19. }


Wszystkie wartości pobierane są przez api baselinkera.
Dodam tylko, że cała reszta działa bez zarzutu.

Proszę o pomoc
nospor
Pokaz dokladne co zwraca
var_dump($wplacono);
var_dump($wartosc_zamowienia) ;

Tam masz odpowiedz na swoje pytanie
xaitras
Cytat(nospor @ 8.02.2018, 10:58:06 ) *
Pokaz dokladne co zwraca
var_dump($wplacono);
var_dump($wartosc_zamowienia) ;

Tam masz odpowiedz na swoje pytanie



No niestety wszystko się zgadza, no chyba, że brak zer w cenie przesyłki jest problemem?
  1. var_dump($wplacono); float(26.99)
  2. var_dump($wartosc_zamowienia); float(26.99)
  3. var_dump($cena_przesylki); float(17)



i dalej nie wiem co jest grane..

Kombinuję na wszystkie sposoby, zaokrąglam wszystkie wartości do 2 miejsc po przecinku i dalej to samo..



co_jest.gif

czy ktoś pomoże ?

TEMAT MOŻNA ZAMKNĄĆ - pomogła zamiana wartości na double, potem zaokrąglenie do dwóch miejsc po przecinku i wszystko hula smile.gif
Zobaczymy jak długo wink.gif
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.