Naprawa buga z wyliczeniem płatności, dostawy i przy edycji zamówienia z punktami
This commit is contained in:
10
README.md
10
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
|
||||
@@ -40,7 +40,7 @@
|
||||
<iaixsl:if test="(number(/shop/basket/@cost) = 0) and (number(/shop/basket/@points_used) = 0)">
|
||||
<script>window.location.href="/return.php?status=order_minimum"</script>
|
||||
</iaixsl:if>
|
||||
<iaixsl:if test="number(/shop/basket/@points_used) > number(/shop/basket/@client_points)">
|
||||
<iaixsl:if test="(number(/shop/basket/@points_used) > number(/shop/basket/@client_points)) and not(/shop/order_edit)">
|
||||
<script>window.location.href="/return.php?status=order_notenoughpoints"</script>
|
||||
</iaixsl:if>
|
||||
|
||||
@@ -1166,7 +1166,6 @@
|
||||
</iaixsl:choose>
|
||||
</div>
|
||||
</div>
|
||||
<div class="cop_button_txt"></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -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",'<div class="menu_messages_warning" id="menu_messages_warning"><div class="menu_messages_message_sub"><p>' + <iai:variable vid="Brak metod płatności"/> + <iai:variable vid="w celu uzyskania informacji jak skompletować zamówienie"/> + ', <a href="/contact.php">' + `${<iai:variable vid="skontaktuj się z nami"/>}` + "</a></p></div></div>");
|
||||
|
||||
|
||||
// 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) => {
|
||||
|
||||
Reference in New Issue
Block a user