On 3/4/2021 at 6:38 PM, kape27 said:Jeżeli w pliku paragonfaktura.php usunę if w funkcji hookdisplayAdminOrderTabContent oraz zmienię to co zwraca funkcja:
czyli ten fragment:
if($choice) {
$out = "<h3 style='margin-bottom:10px; border-bottom:1px solid #ccc;'>".$this->l('Sale document').": <span class='badge rounded badge-info'><strong>".($choice['document_type']==1?$this->l('Invoice'):$this->l('Bill'))."</strong></span></h3>"; }
return $out.$this->l('Order id').': '.$params['id_order'].' / '.$this->l('Cart id').': '.$cart_id;zamieniam na:
$out = "<h3 style='margin-bottom:10px; border-bottom:1px solid #ccc;'>".$this->l('Sale document').": <span class='badge rounded badge-info'><strong>".($choice['document_type']==1?$this->l('Invoice'):$this->l('Bill'))."</strong></span></h3>";return $out;
to moduł wyświetla prawidłowo typ wybranego dokumentu.
Jeżeli zmieniałem tylko to, co zwraca funkcja na:
return $out;
to wtedy nic nie było wyświetlone - nawet błędna zawartość, którą w poprzednim poście zaznaczyłem na czerwono.
ALE! Jako że jestem z programowania zielony jak trawa na wiosnę, nie wiem co sprawdza if i jakie mogą być konsekwencje takiej zmiany.
Proszę Szanownych członków forum o pomoc w rozwiązaniu problemu.
Krzysiek
If($choice) sprawdza czy istnieje w bazie wybór użytkownika, którego osoba kupująca dokonuje przy składaniu zamówienia. W przypadku braku takiego wyboru (np. stare zamówienia złożone przed zainstalowaniem modułu nie będą tego miały, bo moduł jeszcze tych danych nie zbierał) moduł aktualnie nie wyświetla niczego (zmienna $out jest pusta) oprócz tych dodatkowych "Order id" i "Cart id" (to co zostało zaznaczone na czerwono).
Usunięcie if($choice) powoduje ustawianie zmiennej $out za każdym razem i w przypadku kiedy zmienna ta jest pusta (brak danych) kolejny if sprawdzający typ dokumentu $choice['document_type']==1 zawsze zwróci wartość 0 i wypisze, że wybrany został paragon. Pomimo, że brak jest takich danych.
Podsumowując, powyżej zmieniony kod dla starych zamówień zawsze wyświetli "paragon", a dla nowych zadziała prawidłowo.
W swojej modyfikacji modułu dodałem wiadomość dla braku danych w bazie i dodatkowo umieściłem wyświetlany pod typem dokumentu numer NIP. Myślę, że może się to przydać:
if($choice) { $out = "<h3 style='margin-bottom:10px;padding: 10px 0; border-bottom:1px solid #ccc;'>".$this->l('Sale document').": <span class='badge rounded badge-info'><strong>".($choice['document_type']==1?$this->l('Invoice'):$this->l('Bill'))."</strong></span></h3>"; } else { // przypadek braku danych w bazie $out = "<h3 style='margin-bottom:10px; padding: 10px 0; border-bottom:1px solid #ccc;'>".$this->l('Sale document').": <span style='background-color: #c22d23' class='badge rounded badge-info'><strong>Brak danych - sprawdź samodzielnie</strong></span></h3>"; } // tylko dla faktury if($choice['document_type']==1){ $addressObj = new Address($order->id_address_invoice); $out = $out . "<span style='color: #25b9d7'>NIP: ".$addressObj->vat_number."</span>"; } return $out;