Naprawa buga ze zwracaniem wartości z funkcji async

This commit is contained in:
2024-01-15 10:58:52 +01:00
parent 2e6db44bd2
commit f949b4438b
5 changed files with 130 additions and 107 deletions

View File

@@ -1,10 +1,10 @@
# OSCOP # # OSCOP #
Pliki związane z OSCOP. Żeby działał trzeba stworzyć kopie jednego komponenta z place-order(testowane na komponencie układ) i resztę usunąć. Następnie wkleić kod w odpowiednie miejsca w skopiowanym komponencie: Pliki związane z OSCOP. Żeby działał trzeba stworzyć kopie jednego komponenta z place-order(testowane na komponencie układ) i resztę usunąć. Następnie wkleić kod w odpowiednie miejsca w skopiowanym komponencie:
index.xslt w XML/XSLT\ \index.xslt w XML/XSLT
wydzielonyScript.js w Wydzielony Javascript\ \wydzielonyScript.js w Wydzielony Javascript
script.js w Javascript\ \script.js w Javascript
style.css w Less/CSS\ \style.css w Less/CSS
Dodatkowo Trzeba będzie zrobić przekierowanie (można nawet dodatkiem) po kliknięciu na "Przejdź dalej" do strony "place-order.php" \Dodatkowo Trzeba będzie zrobić przekierowanie (można nawet dodatkiem) po kliknięciu na "Przejdź dalej" do strony "place-order.php"
## Ikony markera na mapie ## ## Ikony markera na mapie ##
Aby dodać zdjęcie ikony: moderacja -> cms -> Zarządzanie plikami dla CMS. Żeby dodać nową ikonę trzeba dodać nowy obiekt w mapMarkerUrls. Można do tam wybrać link url do ikony, rozmiar, klasę. Dodatkowe opcje znajdują się w dokumentacji Leaflet w opcjach markera: https://leafletjs.com/reference.html#marker Aby dodać zdjęcie ikony: moderacja -> cms -> Zarządzanie plikami dla CMS. Żeby dodać nową ikonę trzeba dodać nowy obiekt w mapMarkerUrls. Można do tam wybrać link url do ikony, rozmiar, klasę. Dodatkowe opcje znajdują się w dokumentacji Leaflet w opcjach markera: https://leafletjs.com/reference.html#marker
@@ -17,33 +17,34 @@ Aby je zmienić trzeba wejść w panel -> moderacja -> działanie sklepu -> Pane
Następnie wejść w edycje wybranego sposobu logowania i wrzucić nową ikonę w miejsce "Grafika mała na stronie". UWAGA! Plików svg nie da się wprowadzić. Następnie wejść w edycje wybranego sposobu logowania i wrzucić nową ikonę w miejsce "Grafika mała na stronie". UWAGA! Plików svg nie da się wprowadzić.
## Brakujące Tłumaczenia (literały) ## ## Brakujące Tłumaczenia (literały) ##
Trzeba je później podmienić w kodzie w Wydzielonym Java script na np.:\ Trzeba je później podmienić w kodzie w Wydzielonym Java script na np.:
<iai:variable vid="Pokaż Listę"/> \<iai:variable vid="Pokaż Listę"/>
### Wydzielony Javascript ### ### Wydzielony Javascript ###
Pokaż Listę\ Pokaż Listę
Pokaż Mapę\ \Pokaż Mapę
Błąd podczas zmiany kraju. Przeładuj stronę jeszcze raz.\ \Błąd podczas zmiany kraju. Przeładuj stronę jeszcze raz.
Błąd podczas logowania, proszę spróbować ponownie\ \Błąd podczas logowania, proszę spróbować ponownie
banków\ \banków
kart płatniczych\ \kart płatniczych
Lista\ \Lista
Wybierz z\ \Wybierz z
## Zalety ## ## Zalety ##
Zablokowana edycja danych osobowych w trakcie zamówienia(klient dalej może wysłać zamówienie na inny adres).\ Zablokowana edycja danych osobowych w trakcie zamówienia(klient dalej może wysłać zamówienie na inny adres).
Zmiana sposobów dostaw zależnie od państwa(Czasami się buguje, może to być zależne od plików cookies)\ \Zmiana sposobów dostaw zależnie od państwa(Czasami się buguje, może to być zależne od plików cookies)
Sprawdzenie czy wpisano dobry bon towarowy przed złożeniem zamówienia\ \Sprawdzenie czy wpisano dobry bon towarowy przed złożeniem zamówienia
lepiej zabezpieczony numer telefonu?(na standardzie to +2+++++++++1 przejdzie)\ \lepiej zabezpieczony numer telefonu?(na standardzie to +2+++++++++1 przejdzie)
autouzupełnianie metod płatności i dostawy w edycji\ \autouzupełnianie metod płatności i dostawy w edycji
autouzupełnianie metod płatności i dostawy na podstawie poprzednio wykonanego zakupu\ \autouzupełnianie metod płatności i dostawy na podstawie poprzednio wykonanego zakupu
## Minusy ## ## Minusy ##
nie ma faktury na inne dane(żeby nie używać tego samego zapytania co OSCOP Idosella, na wszelki wypadek żeby nie pobierało opłat) nie ma faktury na inne dane(żeby nie używać tego samego zapytania co OSCOP Idosella, na wszelki wypadek żeby nie pobierało opłat)
## Dodatkowe pomysły do zrealizowania ## ## Dodatkowe pomysły do zrealizowania ##
sprawdzanie logina w trakcie pisania(może być słabe dla ochrony danych klienta)\ sprawdzanie logina w trakcie pisania(może być słabe dla ochrony danych klienta)
Limit znaków | Wydłużanie się okienka od uwag do sklepu|kuriera \Limit znaków | Wydłużanie się okienka od uwag do sklepu|kuriera
## Uwagi ## ## Uwagi ##
W przypadku edycji zamówienia z zapłatą za pobraniem nie można pobrać danych takiego zamówienia przed dokonaniem zapłaty. Idosell sprawdza ten problem w komunikacie na zooart6. W przypadku edycji zamówienia z zapłatą za pobraniem nie można pobrać danych takiego zamówienia przed dokonaniem zapłaty. Idosell sprawdza ten problem w komunikacie na zooart6.
\ Dziwna rzecz którą zauważyłem. Jak składasz zamówienie wraz z zakładaniem konta, ale okazuje się że brakuje któregoś produktu w koszyku, to konto dalej się zakłada(ponieważ w takiej sytuacji najpierw zakłada się konto, a później składa się zamówienie)

View File

@@ -86,7 +86,10 @@
<iaixsl:attribute name="href"><iaixsl:value-of select="@login_url"/></iaixsl:attribute> <iaixsl:attribute name="href"><iaixsl:value-of select="@login_url"/></iaixsl:attribute>
<img> <img>
<iaixsl:attribute name="src"> <iaixsl:attribute name="src">
<iaixsl:value-of select="@gfx"></iaixsl:value-of> <iaixsl:choose>
<iaixsl:when test="@gfx"><iaixsl:value-of select="@gfx"></iaixsl:value-of></iaixsl:when>
<iaixsl:otherwise><iaixsl:value-of select="@gfx_big"></iaixsl:value-of></iaixsl:otherwise>
</iaixsl:choose>
</iaixsl:attribute> </iaixsl:attribute>
<iaixsl:attribute name="alt"> <iaixsl:attribute name="alt">
<iaixsl:value-of select="@name"></iaixsl:value-of> <iaixsl:value-of select="@name"></iaixsl:value-of>
@@ -880,12 +883,14 @@
<input type="checkbox" id="rebate_option" name="rebate_option" class="--arrow-input"></input> <input type="checkbox" id="rebate_option" name="rebate_option" class="--arrow-input"></input>
<label for="rebate_option" class="--arrow-label"><iai:variable vid="Posiadasz kod rabatowy?"/></label> <label for="rebate_option" class="--arrow-label"><iai:variable vid="Posiadasz kod rabatowy?"/></label>
</div> </div>
<div class="rebate__code has-feedback"> <div class="rebate__code">
<div class="rebate__code-container"> <div class="rebate__code-container has-feedback">
<input type="text" id="rebate_code" name="rebate_code" class="form-control"> <div>
<iaixsl:attribute name="placeholder"><iai:variable vid="Wpisz kod rabatowy"/></iaixsl:attribute> <input type="text" id="rebate_code" name="rebate_code" class="form-control">
</input> <iaixsl:attribute name="placeholder"><iai:variable vid="Wpisz kod rabatowy"/></iaixsl:attribute>
<span class="form-control-feedback"></span> </input>
<span class="form-control-feedback"></span>
</div>
<button class="rebate__code-realize bm-oscop__btn"><iai:variable vid="Zrealizuj"/></button> <button class="rebate__code-realize bm-oscop__btn"><iai:variable vid="Zrealizuj"/></button>
</div> </div>
</div> </div>

View File

@@ -825,7 +825,7 @@ function getNewPaymentsAndDeliveries(data = null, firstLoad = false) {
}); });
// Wstawienie metod dostaw na strone // Wstawienie metod dostaw na strone
const deliveryMarkup = `<div id="osc_order1"><div id="osc_order1_prepaid" style="${paymentValue==="cash" ? "display:none;" :"display:block;"}">${prepaidMarkup}</div><div id="osc_order1_dvp" style="${paymentValue==="cash" ? "display:block;" :"display:none;"}">${dvpMarkup}</div></div>`; const deliveryMarkup = `<div id="osc_order1"><div id="osc_order1_prepaid" style="${paymentValue === "cash" ? "display:none;" : "display:block;"}">${prepaidMarkup}</div><div id="osc_order1_dvp" style="${paymentValue === "cash" ? "display:block;" : "display:none;"}">${dvpMarkup}</div></div>`;
const previousDeliveries = document.getElementById("osc_order1"); const previousDeliveries = document.getElementById("osc_order1");
if(previousDeliveries) previousDeliveries.remove(); if(previousDeliveries) previousDeliveries.remove();
document.querySelector(".ajax_cop .step2_sub").insertAdjacentHTML("beforeend",deliveryMarkup); document.querySelector(".ajax_cop .step2_sub").insertAdjacentHTML("beforeend",deliveryMarkup);
@@ -841,9 +841,11 @@ function getNewPaymentsAndDeliveries(data = null, firstLoad = false) {
// Przygotowanie Płatności // Przygotowanie Płatności
e.prepaids_method.forEach(function (method) { e.prepaids_method.forEach(function (method) {
const checkedPayment = paymentValue === method.id;
const markup = ` const markup = `
<label class="osc_item" for="payitem_${method.id}"> <label class="osc_item" for="payitem_${method.id}">
<input id="payitem_${method.id}" value="${method.id}" type="radio" name="payform_id" ${paymentValue === method.id ? "checked" : ""} data-group="${method.group}"> <input id="payitem_${method.id}" value="${method.id}" type="radio" name="payform_id" ${checkedPayment ? "checked" : ""} data-group="${method.group}">
<div class="photo"> <div class="photo">
<img src="${method.icon}" alt="${method.name}"> <img src="${method.icon}" alt="${method.name}">
</div> </div>
@@ -917,7 +919,7 @@ function getNewPaymentsAndDeliveries(data = null, firstLoad = false) {
// Wstawienie pickuppoint jeśli edycja i istnieje // Wstawienie pickuppoint jeśli edycja i istnieje
if(data?.pickupData !== undefined && data?.pickupData !== null){ if(data?.pickupData !== undefined && data?.pickupData !== null){
const selectedShipping = document.querySelector(`#cop_seection2 input#${deliveryId}`); const selectedShipping = document.querySelector(`#cop_seection2 input#${deliveryId}`);
const pointExists = checkPrevPickupPoint( checkPrevPickupPoint(
selectedShipping.parentElement.querySelector(".fselectedPoint"), selectedShipping.parentElement.querySelector(".fselectedPoint"),
data.pickupData.id, data.pickupData.id,
data.pickupData.name, data.pickupData.name,
@@ -925,11 +927,10 @@ function getNewPaymentsAndDeliveries(data = null, firstLoad = false) {
data.pickupData.address.city, data.pickupData.address.city,
data.pickupData.address.postcode, data.pickupData.address.postcode,
data.deliveryMethodId data.deliveryMethodId
); ).then(pointExists=>{
// Odznaczenie punktu jeśli punkt odbioru nie istnieje(Wcześniej był zaznaczony przy edycji) // Odznaczenie punktu jeśli punkt odbioru nie istnieje(Wcześniej był zaznaczony przy edycji)
if(!pointExists) selectedShipping.checked = false; if(!pointExists) selectedShipping.checked = false;
});
}// Sprawdzenie czy użytkownik ma zapisane poprzednio użyte metody w przeglądarce(tylko przy pierwszym załadowaniu strony) }// Sprawdzenie czy użytkownik ma zapisane poprzednio użyte metody w przeglądarce(tylko przy pierwszym załadowaniu strony)
else if(localStorage.getItem("prevPaymentMethod") && localStorage.getItem("prevDeliveryMethod") && firstLoad){ else if(localStorage.getItem("prevPaymentMethod") && localStorage.getItem("prevDeliveryMethod") && firstLoad){
const prevPaymentMethod = JSON.parse(localStorage.getItem("prevPaymentMethod")); const prevPaymentMethod = JSON.parse(localStorage.getItem("prevPaymentMethod"));
@@ -949,7 +950,7 @@ function getNewPaymentsAndDeliveries(data = null, firstLoad = false) {
if(prevDeliveryInput){ if(prevDeliveryInput){
// sprawdzenie czy dostawa miała punkt odbioru // sprawdzenie czy dostawa miała punkt odbioru
if(prevDeliveryMethod.fselectedPoint){ if(prevDeliveryMethod.fselectedPoint){
const pointExists = checkPrevPickupPoint( checkPrevPickupPoint(
prevDeliveryInput.parentElement.querySelector(".fselectedPoint"), prevDeliveryInput.parentElement.querySelector(".fselectedPoint"),
prevDeliveryMethod.fselectedPoint.deliveryPointId, prevDeliveryMethod.fselectedPoint.deliveryPointId,
prevDeliveryMethod.fselectedPoint.name, prevDeliveryMethod.fselectedPoint.name,
@@ -957,13 +958,21 @@ function getNewPaymentsAndDeliveries(data = null, firstLoad = false) {
prevDeliveryMethod.fselectedPoint.city, prevDeliveryMethod.fselectedPoint.city,
prevDeliveryMethod.fselectedPoint.zipcode, prevDeliveryMethod.fselectedPoint.zipcode,
prevDeliveryMethod.fselectedPoint.courierId prevDeliveryMethod.fselectedPoint.courierId
); ).then(pointExists=>{
if(pointExists) prevDeliveryInput.checked = true; if(pointExists) prevDeliveryInput.checked = true;
});
}else{ }else{
prevDeliveryInput.checked = true; prevDeliveryInput.checked = true;
} }
} }
} }
// Zaznaczenie karty/banku w przypadku edycji
const checkedPayment = document.querySelector(`#osc_prepaids_method input[name="payform_id"]:checked`)
if(checkedPayment && (checkedPayment.dataset.group === "card" || checkedPayment.dataset.group === "transfer")){
cloneElement(checkedPayment);
}
// Przeładowanie mapy // Przeładowanie mapy
loadMap(); loadMap();
// Przeliczenie kosztu dostawy // Przeliczenie kosztu dostawy
@@ -1042,6 +1051,7 @@ const SEARCH_PICKUP_POINTS_QUERY = (searchPickupPointsInput) => JSON.stringify({
}`, }`,
}) })
async function checkPrevPickupPoint(selectedPoint, deliveryPointId, name, street, city, zipcode, courierId){ async function checkPrevPickupPoint(selectedPoint, deliveryPointId, name, street, city, zipcode, courierId){
if(!name || !city || !zipcode) return false;
// Pobranie punktów z tym samym id co poprzedni // Pobranie punktów z tym samym id co poprzedni
app_shop.fn.ajaxLoadSite(1) app_shop.fn.ajaxLoadSite(1)
const resultData = await fetchData({ const resultData = await fetchData({
@@ -1163,7 +1173,7 @@ function removePrevClone(){
} }
// Utworzenie modala po kliknieciu na "przelewy online" lub "karta platnicza" // Utworzenie modala po kliknieciu na "przelewy online" lub "karta platnicza"
let ifChosenNewPaymentMethod=false; let ifChosenNewPaymentMethod = false;
function showPaymentMethodModal(method){ function showPaymentMethodModal(method){
app_shop.fn.paymentModal = new Modal({ app_shop.fn.paymentModal = new Modal({
element: $(`.${method}__methods`), element: $(`.${method}__methods`),
@@ -1484,7 +1494,7 @@ async function updateCode(){
// Pokazanie błędu // Pokazanie błędu
const { message } = rebateStatus?.data?.activateRebateCode?.error; const { message } = rebateStatus?.data?.activateRebateCode?.error;
addError(rebateCode); addError(rebateCode);
rebateCode.insertAdjacentHTML("afterend",`<span class="help-block validate_message text-danger">${message}.</span>`); addErrorMessage(rebateCode, message);
// Schowaj kod (show=false, error=true) // Schowaj kod (show=false, error=true)
toggleActiveCode(false, true); toggleActiveCode(false, true);
} }
@@ -1524,7 +1534,7 @@ function toggleActiveCode(show, error=false){
rebateOptionWrapper.style.display = show ? "none" : "flex"; rebateOptionWrapper.style.display = show ? "none" : "flex";
rebateActiveWrapper.style.display = show ? "block" : "none"; rebateActiveWrapper.style.display = show ? "block" : "none";
if(!error)rebateCodeContainer.classList.remove("--fade-in"); if(!error) rebateCodeContainer.classList.remove("--fade-in");
else rebateCodeContainer.classList.add("--fade-in"); else rebateCodeContainer.classList.add("--fade-in");
// zmień wartości // zmień wartości
@@ -1561,7 +1571,7 @@ rebateCode.addEventListener("keydown", e=>{
// ZŁOŻENIE ZAMÓWIENIA // ZŁOŻENIE ZAMÓWIENIA
// Zwaliduj wszystkie dostępne inputy zawierające dane klienta i dane adresowe // Zwaliduj wszystkie dostępne inputy zawierające dane klienta i dane adresowe
function validateAllInputs(){ async function validateAllInputs(){
// Zmienna trzymająca informację czy wystąpił jakiś błąd // Zmienna trzymająca informację czy wystąpił jakiś błąd
let allGood = true; let allGood = true;
@@ -1572,12 +1582,12 @@ function validateAllInputs(){
} }
if(!document.querySelector(".--logged")){ if(!document.querySelector(".--logged")){
// Sprawdzenie emaila i telefonu // Sprawdzenie emaila i telefonu
allGood = validateRequest(document.getElementById("client_email"), true) && allGood; allGood = await validateRequest(document.getElementById("client_email"), true) && allGood;
allGood = validatePhone(document.getElementById("client_phone")) && allGood; allGood = validatePhone(document.getElementById("client_phone")) && allGood;
// Sprawdzenie nazwy firmy i nipu // Sprawdzenie nazwy firmy i nipu
if(document.getElementById("client_type1").checked){ if(document.getElementById("client_type1").checked){
allGood = validateNotEmpty(document.getElementById("client_firm")) && allGood; allGood = validateNotEmpty(document.getElementById("client_firm")) && allGood;
allGood = validateRequest(document.getElementById("client_nip"), true) && allGood; allGood = await validateRequest(document.getElementById("client_nip"), true) && allGood;
} }
// Sprawdzenie reszty pól // Sprawdzenie reszty pól
allGood = validateFormInputs("client") && allGood; allGood = validateFormInputs("client") && allGood;
@@ -1589,13 +1599,13 @@ function validateAllInputs(){
} }
return allGood return allGood
} }
function validateFormInputs(query){ async function validateFormInputs(query){
let isFormGood = true; let isFormGood = true;
isFormGood = validateNotEmpty(document.getElementById(`${query}_firstname`)) && isFormGood; isFormGood = validateNotEmpty(document.getElementById(`${query}_firstname`)) && isFormGood;
isFormGood = validateNotEmpty(document.getElementById(`${query}_lastname`)) && isFormGood; isFormGood = validateNotEmpty(document.getElementById(`${query}_lastname`)) && isFormGood;
isFormGood = validateStreet(document.getElementById(`${query}_street`)) && isFormGood; isFormGood = validateStreet(document.getElementById(`${query}_street`)) && isFormGood;
isFormGood = validateRequest(document.getElementById(`${query}_zipcode`),true) && isFormGood; isFormGood = await validateRequest(document.getElementById(`${query}_zipcode`),true) && isFormGood;
isFormGood = validateNotEmpty(document.getElementById(`${query}_city`)) && isFormGood; isFormGood = validateNotEmpty(document.getElementById(`${query}_city`)) && isFormGood;
return isFormGood; return isFormGood;
@@ -1887,6 +1897,7 @@ async function addClient(succes, error){
const saveToSms = document.getElementById("client_sms"); const saveToSms = document.getElementById("client_sms");
let saveToSmsData = false; let saveToSmsData = false;
if(saveToSms && saveToSms.checked) saveToSmsData = true; if(saveToSms && saveToSms.checked) saveToSmsData = true;
const registerClientData = await fetchData({ const registerClientData = await fetchData({
data: REGISTER_CLIENT(`RegisterClientInput: { data: REGISTER_CLIENT(`RegisterClientInput: {
clientData: { clientData: {

View File

@@ -48,19 +48,19 @@
.has-feedback.--error .form-control{ .has-feedback.--error .form-control{
border-color: @less_iaicolorscheme_danger_color; border-color: @less_iaicolorscheme_danger_color;
} }
//zmiana fontsize na 16px na desktop // zmiana fontsize na 16px na desktop
.order__voucher_headlines strong, .order__voucher_button, #signin-form-ajax .signin_button, .delivery__address-list-firstname, .delivery__address-list-lastname, .osc_item-modal h2, .propose_title, #e-invoice_dialog .btn, #checkout_step2_2 h3, #summary-points, #fbs_z02_wrapper .big_label, .propose_main .button_password_recover, .rebate__title{ .order__voucher_headlines strong, .order__voucher_button, #signin-form-ajax .signin_button, .delivery__address-list-firstname, .delivery__address-list-lastname, .osc_item-modal h2, .propose_title, #e-invoice_dialog .btn, #checkout_step2_2 h3, #summary-points, #fbs_z02_wrapper .big_label, .propose_main .button_password_recover, .rebate__title{
font-size: 1.6rem!important; font-size: 1.6rem!important;
} }
//zmiana fontsize na 14px na desktop // zmiana fontsize na 14px na desktop
.rebate_option label, .order2_terms_checkall, .register_client_checkbox, .firm-form, #delivery_box_switcher label, #FBS_faktura, #checkout_step3_1 .name, .client_type-text, .headerText{ .rebate_option label, .order2_terms_checkall, .register_client_checkbox, .firm-form, #delivery_box_switcher label, #FBS_faktura, #checkout_step3_1 .name, .client_type-text, .headerText{
font-size: 1.4rem!important; font-size: 1.4rem!important;
} }
//zmiana fontsize na 13px na desktop // zmiana fontsize na 13px na desktop
.cop_product_wrap, .order_pay_wrapper, .order2_shiptime, .signin_header, .delivery_date, #checkout_step2_2 .step3_sub.cop_box_sub span, .delivery__address-list-street, .delivery__address-list-city, .delivery__address-list-zipcode, .delivery__address-list-phone, .delivery__address-country_name, .propose_text, .propose_json_mail, .control-label, .register__hide-password::before, .f-label, #locationField .btn, .rebate__active-options button{ .cop_product_wrap, .order_pay_wrapper, .order2_shiptime, .signin_header, .delivery_date, #checkout_step2_2 .step3_sub.cop_box_sub span, .delivery__address-list-street, .delivery__address-list-city, .delivery__address-list-zipcode, .delivery__address-list-phone, .delivery__address-country_name, .propose_text, .propose_json_mail, .control-label, .register__hide-password::before, .f-label, #locationField .btn, .rebate__active-options button{
font-size: 1.3rem!important; font-size: 1.3rem!important;
} }
//zmiana fontsize na 12px na desktop // zmiana fontsize na 12px na desktop
.comment, .delivery_date, #checkout_step2_1 .name, a.go__shopping, .order_products_action span, .needed-text, #fbs_z02_close::before, .pickup_point_sub div, .mapTooltipAdress, #cop_seection2 #checkout_step2_2 h3 span, .osc_item-modal span, #e-invoice_dialog p, .e-invoice_dialog, .cn_propose_desc, #mail_propose_signin, #mail_propose_close, .order__voucher_info{ .comment, .delivery_date, #checkout_step2_1 .name, a.go__shopping, .order_products_action span, .needed-text, #fbs_z02_close::before, .pickup_point_sub div, .mapTooltipAdress, #cop_seection2 #checkout_step2_2 h3 span, .osc_item-modal span, #e-invoice_dialog p, .e-invoice_dialog, .cn_propose_desc, #mail_propose_signin, #mail_propose_close, .order__voucher_info{
font-size: 1.2rem!important; font-size: 1.2rem!important;
} }
@@ -72,7 +72,7 @@
#signin-form-ajax .f-group, .propose_main div:has(#mail_propose_close), #e-invoice_dialog .big_label, #cop_seection1 .form-group:last-child, .register__form, .register__item:last-of-type, #client_contact_info{ #signin-form-ajax .f-group, .propose_main div:has(#mail_propose_close), #e-invoice_dialog .big_label, #cop_seection1 .form-group:last-child, .register__form, .register__item:last-of-type, #client_contact_info{
margin-bottom: 0!important; margin-bottom: 0!important;
} }
//transition // transition
.--hide{ .--hide{
max-height: 0; max-height: 0;
height: 0; height: 0;
@@ -110,7 +110,7 @@
animation: fade-in .2s; animation: fade-in .2s;
} }
////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////
//MODAL // MODAL
.modal__wrapper{ .modal__wrapper{
max-height: 80vh!important; max-height: 80vh!important;
padding: 2rem 3rem!important; padding: 2rem 3rem!important;
@@ -305,12 +305,12 @@
line-height: 43px; line-height: 43px;
} }
.has-error .form-control-feedback, .has-success .form-control-feedback { .has-error .form-control-feedback, .has-success .form-control-feedback {
line-height: 38px; line-height: 34px;
} }
select{ select{
cursor: pointer; cursor: pointer;
} }
//ikony // ikony
i.icon-home:before { i.icon-home:before {
content: '\F015'; content: '\F015';
} }
@@ -324,7 +324,7 @@
color: #000; color: #000;
content: "*"; content: "*";
} }
//Kontynuuj zakupy // Kontynuuj zakupy
a.go__shopping{ a.go__shopping{
margin-bottom: 4rem; margin-bottom: 4rem;
display: inline-block; display: inline-block;
@@ -343,7 +343,7 @@
font-size: 2.2rem; font-size: 2.2rem;
padding-bottom: 1.5rem; padding-bottom: 1.5rem;
} }
//cena gratis // cena gratis
.cost_free{ .cost_free{
color: #0BAC38; color: #0BAC38;
font-weight: 800; font-weight: 800;
@@ -354,7 +354,7 @@
flex-direction: column; flex-direction: column;
gap: 2rem; gap: 2rem;
} }
//Sekcja dane klienta // Sekcja dane klienta
#cop_seection1{ #cop_seection1{
margin-bottom: 2rem; margin-bottom: 2rem;
#client_contact_info.--logged{ #client_contact_info.--logged{
@@ -404,7 +404,7 @@
.row { .row {
margin: 0 0px 0 -10px; margin: 0 0px 0 -10px;
} }
//kraj // kraj
.form-group.--region{ .form-group.--region{
position: relative; position: relative;
.control-label{ .control-label{
@@ -443,7 +443,7 @@
content: "\F106"; content: "\F106";
} }
} }
//zalogowanie się // zalogowanie się
.signin{ .signin{
.get_signin{ .get_signin{
text-decoration: underline; text-decoration: underline;
@@ -604,7 +604,7 @@
justify-content: center; justify-content: center;
align-items: center; align-items: center;
} }
//Chowanie przewidywanego czasu dostawy // Chowanie przewidywanego czasu dostawy
input:checked[data-pickuppoint="y"] ~ .delivery_date{ input:checked[data-pickuppoint="y"] ~ .delivery_date{
display: none; display: none;
} }
@@ -837,39 +837,38 @@
fill: @less_iaicolorscheme_background_active_color!important; fill: @less_iaicolorscheme_background_active_color!important;
} }
} }
.rebate, .rebate .rebate__code .rebate__code-container:has(.help-block.validate_message.text-danger){ .rebate{
margin-bottom: 2rem; margin-bottom: 2rem;
} }
.rebate{ .rebate{
padding-bottom: 0.9rem; padding-bottom: 0.9rem;
border: 1px solid #ccc; border: 1px solid #ccc;
border-radius: 8px; border-radius: 8px;
.rebate__options, .rebate__code .rebate__code-container{ .rebate__options, .rebate__code{
display: flex; display: flex;
align-items: center; align-items: center;
} }
.rebate__code{ .rebate__code{
display: none; display: none;
.rebate__code-container{ .rebate__code-container{
gap: 2rem; display: grid;
grid-template-columns: 5fr 3fr;
padding: 2rem 1rem 0 1rem; padding: 2rem 1rem 0 1rem;
position: relative; > div{
.help-block.validate_message.text-danger{ position: relative;
position: absolute; margin-right: 2rem;
bottom: 0; }
transform: translateY(150%); .help-block.validate_message.text-danger{
grid-column: 1 / span2;
margin-top: 1rem;
} }
}
.form-control-feedback{
line-height: 75px!important;
right: 47%!important;
} }
#rebate_code{ #rebate_code{
margin: 0!important; margin: 0!important;
display: inline-block; display: inline-block;
} }
.rebate__code-realize{ .rebate__code-realize{
padding: 1rem 14%; padding: 1rem;
} }
} }
.rebate__active .rebate__active-options{ .rebate__active .rebate__active-options{
@@ -926,9 +925,6 @@
.zipcode_wrapper{ .zipcode_wrapper{
padding-right: 0!important; padding-right: 0!important;
} }
#cop_seection3 .rebate .rebate__code .form-control-feedback{
right: 34vw!important;
}
} }
@media(max-width: 757px){ @media(max-width: 757px){
.form-control-feedback{ .form-control-feedback{
@@ -1114,22 +1110,22 @@
font-size: 2rem!important; font-size: 2rem!important;
} }
.rebate .rebate__code-container{ .rebate .rebate__code-container{
flex-direction: column; gap: 1.2rem;
gap: 1.2rem!important; grid-template-columns: 1fr!important;
align-items: flex-start!important; > div{
margin-right: 0!important;
grid-column: 1 / span1;
}
.help-block.validate_message.text-danger{ .help-block.validate_message.text-danger{
position: static!important; grid-column: 1 / span1!important;
transform: translateY(0%)!important; grid-row: 2 / span1;
margin-bottom: 1rem; margin-bottom: 1rem;
margin-top: 0!important;
} }
.form-control-feedback{ .rebate__code-realize{
line-height: 83px!important; grid-column: 1 / span1;
right: 0%!important;
} }
} }
.rebate__code-container:has(.help-block.validate_message.text-danger){
margin-bottom: 0!important;
}
.rebate__code-realize{ .rebate__code-realize{
width: 100%; width: 100%;
} }

View File

@@ -822,7 +822,7 @@ function getNewPaymentsAndDeliveries(data = null, firstLoad = false) {
}); });
// Wstawienie metod dostaw na strone // Wstawienie metod dostaw na strone
const deliveryMarkup = `<div id="osc_order1"><div id="osc_order1_prepaid" style="${paymentValue==="cash" ? "display:none;" :"display:block;"}">${prepaidMarkup}</div><div id="osc_order1_dvp" style="${paymentValue==="cash" ? "display:block;" :"display:none;"}">${dvpMarkup}</div></div>`; const deliveryMarkup = `<div id="osc_order1"><div id="osc_order1_prepaid" style="${paymentValue === "cash" ? "display:none;" : "display:block;"}">${prepaidMarkup}</div><div id="osc_order1_dvp" style="${paymentValue === "cash" ? "display:block;" : "display:none;"}">${dvpMarkup}</div></div>`;
const previousDeliveries = document.getElementById("osc_order1"); const previousDeliveries = document.getElementById("osc_order1");
if(previousDeliveries) previousDeliveries.remove(); if(previousDeliveries) previousDeliveries.remove();
document.querySelector(".ajax_cop .step2_sub").insertAdjacentHTML("beforeend",deliveryMarkup); document.querySelector(".ajax_cop .step2_sub").insertAdjacentHTML("beforeend",deliveryMarkup);
@@ -838,9 +838,11 @@ function getNewPaymentsAndDeliveries(data = null, firstLoad = false) {
// Przygotowanie Płatności // Przygotowanie Płatności
e.prepaids_method.forEach(function (method) { e.prepaids_method.forEach(function (method) {
const checkedPayment = paymentValue === method.id;
const markup = ` const markup = `
<label class="osc_item" for="payitem_${method.id}"> <label class="osc_item" for="payitem_${method.id}">
<input id="payitem_${method.id}" value="${method.id}" type="radio" name="payform_id" ${paymentValue === method.id ? "checked" : ""} data-group="${method.group}"> <input id="payitem_${method.id}" value="${method.id}" type="radio" name="payform_id" ${checkedPayment ? "checked" : ""} data-group="${method.group}">
<div class="photo"> <div class="photo">
<img src="${method.icon}" alt="${method.name}"> <img src="${method.icon}" alt="${method.name}">
</div> </div>
@@ -914,7 +916,7 @@ function getNewPaymentsAndDeliveries(data = null, firstLoad = false) {
// Wstawienie pickuppoint jeśli edycja i istnieje // Wstawienie pickuppoint jeśli edycja i istnieje
if(data?.pickupData !== undefined && data?.pickupData !== null){ if(data?.pickupData !== undefined && data?.pickupData !== null){
const selectedShipping = document.querySelector(`#cop_seection2 input#${deliveryId}`); const selectedShipping = document.querySelector(`#cop_seection2 input#${deliveryId}`);
const pointExists = checkPrevPickupPoint( checkPrevPickupPoint(
selectedShipping.parentElement.querySelector(".fselectedPoint"), selectedShipping.parentElement.querySelector(".fselectedPoint"),
data.pickupData.id, data.pickupData.id,
data.pickupData.name, data.pickupData.name,
@@ -922,11 +924,10 @@ function getNewPaymentsAndDeliveries(data = null, firstLoad = false) {
data.pickupData.address.city, data.pickupData.address.city,
data.pickupData.address.postcode, data.pickupData.address.postcode,
data.deliveryMethodId data.deliveryMethodId
); ).then(pointExists=>{
// Odznaczenie punktu jeśli punkt odbioru nie istnieje(Wcześniej był zaznaczony przy edycji)
// Odznaczenie punktu jeśli punkt odbioru nie istnieje(Wcześniej był zaznaczony przy edycji) if(!pointExists) selectedShipping.checked = false;
if(!pointExists) selectedShipping.checked = false; });
}// Sprawdzenie czy użytkownik ma zapisane poprzednio użyte metody w przeglądarce(tylko przy pierwszym załadowaniu strony) }// Sprawdzenie czy użytkownik ma zapisane poprzednio użyte metody w przeglądarce(tylko przy pierwszym załadowaniu strony)
else if(localStorage.getItem("prevPaymentMethod") && localStorage.getItem("prevDeliveryMethod") && firstLoad){ else if(localStorage.getItem("prevPaymentMethod") && localStorage.getItem("prevDeliveryMethod") && firstLoad){
const prevPaymentMethod = JSON.parse(localStorage.getItem("prevPaymentMethod")); const prevPaymentMethod = JSON.parse(localStorage.getItem("prevPaymentMethod"));
@@ -946,7 +947,7 @@ function getNewPaymentsAndDeliveries(data = null, firstLoad = false) {
if(prevDeliveryInput){ if(prevDeliveryInput){
// sprawdzenie czy dostawa miała punkt odbioru // sprawdzenie czy dostawa miała punkt odbioru
if(prevDeliveryMethod.fselectedPoint){ if(prevDeliveryMethod.fselectedPoint){
const pointExists = checkPrevPickupPoint( checkPrevPickupPoint(
prevDeliveryInput.parentElement.querySelector(".fselectedPoint"), prevDeliveryInput.parentElement.querySelector(".fselectedPoint"),
prevDeliveryMethod.fselectedPoint.deliveryPointId, prevDeliveryMethod.fselectedPoint.deliveryPointId,
prevDeliveryMethod.fselectedPoint.name, prevDeliveryMethod.fselectedPoint.name,
@@ -954,13 +955,21 @@ function getNewPaymentsAndDeliveries(data = null, firstLoad = false) {
prevDeliveryMethod.fselectedPoint.city, prevDeliveryMethod.fselectedPoint.city,
prevDeliveryMethod.fselectedPoint.zipcode, prevDeliveryMethod.fselectedPoint.zipcode,
prevDeliveryMethod.fselectedPoint.courierId prevDeliveryMethod.fselectedPoint.courierId
); ).then(pointExists=>{
if(pointExists) prevDeliveryInput.checked = true; if(pointExists) prevDeliveryInput.checked = true;
});
}else{ }else{
prevDeliveryInput.checked = true; prevDeliveryInput.checked = true;
} }
} }
} }
// Zaznaczenie karty/banku w przypadku edycji
const checkedPayment = document.querySelector(`#osc_prepaids_method input[name="payform_id"]:checked`)
if(checkedPayment && (checkedPayment.dataset.group === "card" || checkedPayment.dataset.group === "transfer")){
cloneElement(checkedPayment);
}
// Przeładowanie mapy // Przeładowanie mapy
loadMap(); loadMap();
// Przeliczenie kosztu dostawy // Przeliczenie kosztu dostawy
@@ -1039,6 +1048,7 @@ const SEARCH_PICKUP_POINTS_QUERY = (searchPickupPointsInput) => JSON.stringify({
}`, }`,
}) })
async function checkPrevPickupPoint(selectedPoint, deliveryPointId, name, street, city, zipcode, courierId){ async function checkPrevPickupPoint(selectedPoint, deliveryPointId, name, street, city, zipcode, courierId){
if(!name || !city || !zipcode) return false;
// Pobranie punktów z tym samym id co poprzedni // Pobranie punktów z tym samym id co poprzedni
app_shop.fn.ajaxLoadSite(1) app_shop.fn.ajaxLoadSite(1)
const resultData = await fetchData({ const resultData = await fetchData({
@@ -1160,7 +1170,7 @@ function removePrevClone(){
} }
// Utworzenie modala po kliknieciu na "przelewy online" lub "karta platnicza" // Utworzenie modala po kliknieciu na "przelewy online" lub "karta platnicza"
let ifChosenNewPaymentMethod=false; let ifChosenNewPaymentMethod = false;
function showPaymentMethodModal(method){ function showPaymentMethodModal(method){
app_shop.fn.paymentModal = new Modal({ app_shop.fn.paymentModal = new Modal({
element: $(`.${method}__methods`), element: $(`.${method}__methods`),
@@ -1481,7 +1491,7 @@ async function updateCode(){
// Pokazanie błędu // Pokazanie błędu
const { message } = rebateStatus?.data?.activateRebateCode?.error; const { message } = rebateStatus?.data?.activateRebateCode?.error;
addError(rebateCode); addError(rebateCode);
rebateCode.insertAdjacentHTML("afterend",`<span class="help-block validate_message text-danger">${message}.</span>`); addErrorMessage(rebateCode, message);
// Schowaj kod (show=false, error=true) // Schowaj kod (show=false, error=true)
toggleActiveCode(false, true); toggleActiveCode(false, true);
} }
@@ -1521,7 +1531,7 @@ function toggleActiveCode(show, error=false){
rebateOptionWrapper.style.display = show ? "none" : "flex"; rebateOptionWrapper.style.display = show ? "none" : "flex";
rebateActiveWrapper.style.display = show ? "block" : "none"; rebateActiveWrapper.style.display = show ? "block" : "none";
if(!error)rebateCodeContainer.classList.remove("--fade-in"); if(!error) rebateCodeContainer.classList.remove("--fade-in");
else rebateCodeContainer.classList.add("--fade-in"); else rebateCodeContainer.classList.add("--fade-in");
// zmień wartości // zmień wartości
@@ -1558,7 +1568,7 @@ rebateCode.addEventListener("keydown", e=>{
// ZŁOŻENIE ZAMÓWIENIA // ZŁOŻENIE ZAMÓWIENIA
// Zwaliduj wszystkie dostępne inputy zawierające dane klienta i dane adresowe // Zwaliduj wszystkie dostępne inputy zawierające dane klienta i dane adresowe
function validateAllInputs(){ async function validateAllInputs(){
// Zmienna trzymająca informację czy wystąpił jakiś błąd // Zmienna trzymająca informację czy wystąpił jakiś błąd
let allGood = true; let allGood = true;
@@ -1569,12 +1579,12 @@ function validateAllInputs(){
} }
if(!document.querySelector(".--logged")){ if(!document.querySelector(".--logged")){
// Sprawdzenie emaila i telefonu // Sprawdzenie emaila i telefonu
allGood = validateRequest(document.getElementById("client_email"), true) && allGood; allGood = await validateRequest(document.getElementById("client_email"), true) && allGood;
allGood = validatePhone(document.getElementById("client_phone")) && allGood; allGood = validatePhone(document.getElementById("client_phone")) && allGood;
// Sprawdzenie nazwy firmy i nipu // Sprawdzenie nazwy firmy i nipu
if(document.getElementById("client_type1").checked){ if(document.getElementById("client_type1").checked){
allGood = validateNotEmpty(document.getElementById("client_firm")) && allGood; allGood = validateNotEmpty(document.getElementById("client_firm")) && allGood;
allGood = validateRequest(document.getElementById("client_nip"), true) && allGood; allGood = await validateRequest(document.getElementById("client_nip"), true) && allGood;
} }
// Sprawdzenie reszty pól // Sprawdzenie reszty pól
allGood = validateFormInputs("client") && allGood; allGood = validateFormInputs("client") && allGood;
@@ -1586,13 +1596,13 @@ function validateAllInputs(){
} }
return allGood return allGood
} }
function validateFormInputs(query){ async function validateFormInputs(query){
let isFormGood = true; let isFormGood = true;
isFormGood = validateNotEmpty(document.getElementById(`${query}_firstname`)) && isFormGood; isFormGood = validateNotEmpty(document.getElementById(`${query}_firstname`)) && isFormGood;
isFormGood = validateNotEmpty(document.getElementById(`${query}_lastname`)) && isFormGood; isFormGood = validateNotEmpty(document.getElementById(`${query}_lastname`)) && isFormGood;
isFormGood = validateStreet(document.getElementById(`${query}_street`)) && isFormGood; isFormGood = validateStreet(document.getElementById(`${query}_street`)) && isFormGood;
isFormGood = validateRequest(document.getElementById(`${query}_zipcode`),true) && isFormGood; isFormGood = await validateRequest(document.getElementById(`${query}_zipcode`),true) && isFormGood;
isFormGood = validateNotEmpty(document.getElementById(`${query}_city`)) && isFormGood; isFormGood = validateNotEmpty(document.getElementById(`${query}_city`)) && isFormGood;
return isFormGood; return isFormGood;