From b1b87a93f6a2776b53e68a228f513244f2750016 Mon Sep 17 00:00:00 2001 From: "pawel.gaca" Date: Thu, 1 Feb 2024 12:19:15 +0100 Subject: [PATCH] =?UTF-8?q?Naprawa=20buga=20z=20wyliczeniem=20p=C5=82atno?= =?UTF-8?q?=C5=9Bci,=20dostawy=20i=20przy=20edycji=20zam=C3=B3wienia=20z?= =?UTF-8?q?=20punktami?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 10 ++++++++- index.xslt | 3 +-- wydzielonyScript.js | 50 +++++++++++++++++++++++++++++---------------- 3 files changed, 42 insertions(+), 21 deletions(-) diff --git a/README.md b/README.md index 286b192..88a4da6 100644 --- a/README.md +++ b/README.md @@ -46,13 +46,20 @@ Trzeba je później podmienić w kodzie w Wydzielonym Javascript na np.: ### Wady ### - Nie ma faktury na inne dane(żeby nie używać tego samego zapytania co OSCOP Idosella, żeby nie pobierało opłat) +- próba edycji zamówienia jak jest edycja zamówienia na punkty może się wywalać(za mało punktów lojalnościowych) ### Dodatkowe pomysły do zrealizowania ### - 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 - W przypadku punktów odbioru na jednej mapie, można zamienić metody dostawy wymagające punkty odbioru na jeden wspólny. -- Na mobilce przyklejenie zamów na dół ekranu na wypadek gdyby zalogowany użytkownik miał już wybrany punkt odbioru - Przekreślona cena|Omnibus w wypadku gdy produkt jest w promocji +- Przyklejony przycisk "Zamawiam i płacę" wraz z ceną i regulaminem +- ApplePay na Iphone na górze reszta schowana +- Klient wybierze inposta nie trzeba danych osobowych? domyślnie podaje kreseczki spigen.pl + +### Rozliczenie ### +- Wersja lifetime +- wersja abonamentowa 3, 6, 12 miesięcy ### Uwagi ### - W przypadku sklepu w innym języku niż polskim upewnij się czy wszystko jest dobrze przetłumaczone!!!!!!! @@ -61,3 +68,4 @@ Trzeba je później podmienić w kodzie w Wydzielonym Javascript na np.: - 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) - nie można wybierać hurtownika w place-order - Jak się klika Zamów bez rejestracji to jest faktura na inne dane. Schować? +- BADANIE KONWERSJI PODCZAS WDROŻENIA DLA KLIENTÓW \ No newline at end of file diff --git a/index.xslt b/index.xslt index f0db813..9b9ec5b 100644 --- a/index.xslt +++ b/index.xslt @@ -40,7 +40,7 @@ - + @@ -1166,7 +1166,6 @@ -
diff --git a/wydzielonyScript.js b/wydzielonyScript.js index d210de6..f6b0526 100644 --- a/wydzielonyScript.js +++ b/wydzielonyScript.js @@ -814,7 +814,7 @@ function getNewPaymentsAndDeliveries(data = null) { throwAjaxError(a); app_shop.fn.ajaxLoadSite(0); }, - success: function (e) { + success: async function (e) { let prepaidMarkup = ""; // Stworzenie markupa dla metod dostaw @@ -924,10 +924,16 @@ function getNewPaymentsAndDeliveries(data = null) { const currentPayments = document.getElementById("osc_prepaids_method"); if(document.getElementById("osc_prepaids_method").innerHTML === "") currentPayments.insertAdjacentHTML("beforeend",'"); + + // Przygotowanie informacji o dostawie do obliczenia daty dostawy + const deliveryDateInfo = {deliveryVal: null, delivery: null, pickuppoint: null}; + const firstInput = document.querySelector("#osc_order1 input"); + if(firstInput) changeDeliveryInfoObject(deliveryDateInfo, firstInput); + // Wstawienie pickuppoint jeśli edycja i istnieje if(data?.pickupData !== undefined && data?.pickupData !== null){ const selectedShipping = document.querySelector(`#cop_seection2 input#${deliveryId}`); - checkPrevPickupPoint( + const pointExists = await checkPrevPickupPoint( selectedShipping.parentElement.querySelector(".fselectedPoint"), data.pickupData.id, data.pickupData.name, @@ -935,12 +941,13 @@ function getNewPaymentsAndDeliveries(data = null) { data.pickupData.address.city, data.pickupData.address.postcode, data.deliveryMethodId - ).then(pointExists=>{ - // Odznaczenie punktu jeśli punkt odbioru nie istnieje(Wcześniej był zaznaczony przy edycji) - if(!pointExists) selectedShipping.checked = false; - }); + ) + // Odznaczenie punktu jeśli punkt odbioru nie istnieje(Wcześniej był zaznaczony przy edycji) + if(!pointExists) selectedShipping.checked = false; + else changeDeliveryInfoObject(deliveryDateInfo, selectedShipping); }// Sprawdzenie czy użytkownik ma zapisane poprzednio użyte metody w przeglądarce(tylko przy pierwszym załadowaniu strony) else if(firstTimeLoadPage && prevOrderInfo && prevOrderInfo?.prevCountry === document.getElementById("client_region").value){ + // POPRZEDNIa PŁATNOSC const prevPaymentMethod = prevOrderInfo.prevPaymentMethod; // Zaznaczenie metod płatności które nie tworzą popupa @@ -952,7 +959,7 @@ function getNewPaymentsAndDeliveries(data = null) { cloneElement(document.getElementById(paymentMethodId)); } - // Poprzednia dostawa + // POPRZEDNIA DOSTAWA const prevDeliveryMethod = prevOrderInfo.prevDeliveryMethod; const prevDeliveryInput = document.querySelector(`input#${prevDeliveryMethod.id}`); @@ -960,7 +967,7 @@ function getNewPaymentsAndDeliveries(data = null) { if(prevDeliveryInput){ // Sprawdzenie czy dostawa miała punkt odbioru if(prevDeliveryMethod.fselectedPoint){ - checkPrevPickupPoint( + const pointExists = await checkPrevPickupPoint( prevDeliveryInput.parentElement.querySelector(".fselectedPoint"), prevDeliveryMethod.fselectedPoint.deliveryPointId, prevDeliveryMethod.fselectedPoint.name, @@ -968,12 +975,12 @@ function getNewPaymentsAndDeliveries(data = null) { prevDeliveryMethod.fselectedPoint.city, prevDeliveryMethod.fselectedPoint.zipcode, prevDeliveryMethod.fselectedPoint.courierId - ).then(pointExists=>{ - if(pointExists) prevDeliveryInput.checked = true; - }); + ) + if(pointExists) prevDeliveryInput.checked = true; }else{ prevDeliveryInput.checked = true; } + changeDeliveryInfoObject(deliveryDateInfo, prevDeliveryInput); } } @@ -982,16 +989,17 @@ function getNewPaymentsAndDeliveries(data = null) { if(paymentValue && checkedPayment && (checkedPayment.dataset.group === "card" || checkedPayment.dataset.group === "transfer")){ cloneElement(checkedPayment); } + // Przeładowanie mapy loadMap(); + + // Zmiana daty dostawy i pokazanych opcji dostawy + if(deliveryDateInfo.deliveryVal && deliveryDateInfo.delivery && deliveryDateInfo.pickuppoint) calculateDeliveryDate(deliveryDateInfo.deliveryVal, deliveryDateInfo.delivery, deliveryDateInfo.pickuppoint); + // Przeliczenie kosztu dostawy calculateBasketCost(); - // Zmiana daty dostawy i pokazanych opcji dostawy - const firstInput = document.getElementById("osc_order1 input"); - if(firstInput) deliveryDate(firstInput.value, firstInput.dataset.delivery, firstInput.dataset.pickuppoint); - calculateBasketCost(); - app_shop.fn.ajaxLoadSite(0); + app_shop.fn.ajaxLoadSite(0); firstTimeLoadPage = false; }, }); @@ -1100,7 +1108,7 @@ function checkPrevShipping(){ // Przeliczenie kosztu i czasu dostawy i zapisanie nowej metody dostawy function changeCurrentShippingInfo(shippingMethod){ calculateBasketCost(); - deliveryDate(shippingMethod.value, shippingMethod.dataset.delivery, shippingMethod.dataset.pickuppoint); + calculateDeliveryDate(shippingMethod.value, shippingMethod.dataset.delivery, shippingMethod.dataset.pickuppoint); app_shop.vars.checkedShipping = shippingMethod.value; } document.getElementById("cop_seection2").addEventListener("click", e => { @@ -1378,7 +1386,7 @@ function formatPrice(price, currencySign) { }; // Funkcja od ustalenia daty dostawy -function deliveryDate(deliveryVal, delivery, pickuppoint) { +function calculateDeliveryDate(deliveryVal, delivery, pickuppoint) { const deliveryMessageEl = document.querySelector("#order2_shiptime span:not(.operation_value)"); const deliveryDateEl = document.querySelector("#order2_shiptime .operation_value"); const date = delivery.split("#"); @@ -1393,6 +1401,12 @@ function deliveryDate(deliveryVal, delivery, pickuppoint) { else deliveryDateEl.innerHTML = orderTxt[`shipping${parseInt(date[3])}`]; } }; +// Zmiana informacji o dostawie +function changeDeliveryInfoObject(deliveryObject, deliveryElement){ + deliveryObject.deliveryVal = deliveryElement.value; + deliveryObject.delivery = deliveryElement.dataset.delivery; + deliveryObject.pickuppoint = deliveryElement.dataset.pickuppoint; +} // Obsługa klilnięć na elementy w podsumowaniu document.getElementById("cop_seection3").addEventListener("click", (e) => {