Modyfikacja dotyczy wersji PrestaShop 1.7.8.9.
Zawartość artykułu
Moduł faktura/paragon w PrestaShop.
W PrestaShop nie ma możliwości ustanowienia wyboru Faktura/Paragon. Są z kolei na rynku dostępne darmowe i płatne moduły do wyboru typu dokumentu. To jaki dokument wybrał kupujący jest potem widoczne w detalach zamówienia.
Posłużymy się tutaj darmowym modułem twparagonfaktura
Można go pobrać poniżej:
[suma MD5: efbe4a9d6ac8e39d73c2ec68cf1c3cab]
Po instalacji ustawiamy domyślny dokument na „Faktura”:
Następnie instalujemy moduł w kodzie szablonu.
Otwórz plik:
themes/{SZABLON UŻYWANY PRZEZ SKLEP}/templates/checkout/_partials/steps/addresses.tpl
I wstaw kod:
{block name='hook_display_receipt_invoice_extra'} {hook h='displayReceiptInvoiceExtra'} {/block}
Zaraz pod kodem:
<div class="js-address-form">
Następnie wyczyść cache w dziale:
Zaawansowane –> Wydajność
Po tej operacji w formularzu zakupu klient zobaczy wybór Faktura/Paragon:
A Ty, jako sprzedawca zobaczysz co wybrał w zamówieniu:
Dodanie pola NIP
Domyślnie pola NIP w formularzu adresu nie ma:
Jest pole NIP UE (do niego wrócimy) ale to nie jest pole o które nam chodzi.
W tym celu wejdź do miejsca w adminie:
Międzynarodowy -> Położenie -> Kraje -> Polska (lub Poland)
I na dole włącz opcję „Potrzebny NIP?” na TAK:
Zapisz to ustawienie. W formularzu w adresie pojawi się to pole:
Tutaj od razu możesz ustawić kolejność pol. Jeszcze raz wejdź do edycji kraju i w polu „Format adresu” po prostu przeklej vat_number
na koniec listy:
Zapisz to ustawienie. NIP UE będzie juz na końcu:
Osiągnięty efekt i od razu problem
W tym momencie mamy taką sytuację:
- Klient może wybrać fakturę lub paragon
- Dla każdego z tych wyborów zobaczy obowiązkowe pole NIP
Ilustruje to błąd:
Jednak nam zależy aby tylko przy wyborze faktury pojawiało się to oznaczenie. Dla paragonu nie ma to sensu.
Rozwiązanie problemu
Na początek musimy wyłączyć „obowiązkowość” pola NIP w dziale
Międzynarodowy -> Położenie -> Kraje -> Polska (lub Poland)
Tak jak podano wyżej włącz opcję „Potrzebny NIP?” tym razem na NIE:
Następnie otwórz poniższy plik w zainstalowanym module twparagonfaktura
:
modules/twparagonfaktura/views/js/twparagonfaktura.js
Po kodzie:
$(document).ready(function(){
Wklej:
$('#delivery-address .dni input').prop('required',true);
Ustawia to pole NIP jako wymagane (tylko po stronie przeglądarki – nie „globalnie” w całym sklepie PrestaShop). Czyli zobaczysz widoczny wyżej komunikat „Proszę wypełnić to pole”
Tutaj uwaga. Dodaj ten kod jeśli domyślnym dokumentem sprzedaży ma być Faktura. Jeśli jest inaczej nie wklejaj tego kodu, a tylko ten poniżej.
Następnie po kodzie:
var docType = $('#paragonfaktura_select').val();
Wklej:
if (docType == 'Invoice') { $('#delivery-address .dni input').prop('required',true); } else { $('#delivery-address .dni input').prop('required',false); }
Jak widać, w zależoności od wybranego typu dokumentu ustawia pole dni
(czyli NIP) jako obowiązkowe – lub nie.
Odczytanie numeru NIP klienta.
Może być to problematyczne. Numer NIP może nie być odrazu widoczny w zamówieniu.
Aby to zrobić przeklikaj tę ścieżkę:
1) link „Zobacz szczegóły” w detalach zamówienia:
2) pole „Adresy” w detalach klienta
3) pole „numer NIP”
Gotowe! Tym sposobem jak klient zarząda faktury to my zarządamy od niego także podania NIP, aby można było wystawić pełnoprawny dokument 😉
grafika: wallpaperflare.com