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 ###
|
### Wady ###
|
||||||
- Nie ma faktury na inne dane(żeby nie używać tego samego zapytania co OSCOP Idosella, żeby nie pobierało opłat)
|
- 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 ###
|
### 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
|
||||||
- W przypadku punktów odbioru na jednej mapie, można zamienić metody dostawy wymagające punkty odbioru na jeden wspólny.
|
- 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
|
- 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 ###
|
### Uwagi ###
|
||||||
- W przypadku sklepu w innym języku niż polskim upewnij się czy wszystko jest dobrze przetłumaczone!!!!!!!
|
- 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)
|
- 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
|
- nie można wybierać hurtownika w place-order
|
||||||
- Jak się klika Zamów bez rejestracji to jest faktura na inne dane. Schować?
|
- 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)">
|
<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>
|
<script>window.location.href="/return.php?status=order_minimum"</script>
|
||||||
</iaixsl:if>
|
</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>
|
<script>window.location.href="/return.php?status=order_notenoughpoints"</script>
|
||||||
</iaixsl:if>
|
</iaixsl:if>
|
||||||
|
|
||||||
@@ -1166,7 +1166,6 @@
|
|||||||
</iaixsl:choose>
|
</iaixsl:choose>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="cop_button_txt"></div>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -814,7 +814,7 @@ function getNewPaymentsAndDeliveries(data = null) {
|
|||||||
throwAjaxError(a);
|
throwAjaxError(a);
|
||||||
app_shop.fn.ajaxLoadSite(0);
|
app_shop.fn.ajaxLoadSite(0);
|
||||||
},
|
},
|
||||||
success: function (e) {
|
success: async function (e) {
|
||||||
let prepaidMarkup = "";
|
let prepaidMarkup = "";
|
||||||
|
|
||||||
// Stworzenie markupa dla metod dostaw
|
// Stworzenie markupa dla metod dostaw
|
||||||
@@ -924,10 +924,16 @@ function getNewPaymentsAndDeliveries(data = null) {
|
|||||||
const currentPayments = document.getElementById("osc_prepaids_method");
|
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>");
|
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
|
// 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}`);
|
||||||
checkPrevPickupPoint(
|
const pointExists = await checkPrevPickupPoint(
|
||||||
selectedShipping.parentElement.querySelector(".fselectedPoint"),
|
selectedShipping.parentElement.querySelector(".fselectedPoint"),
|
||||||
data.pickupData.id,
|
data.pickupData.id,
|
||||||
data.pickupData.name,
|
data.pickupData.name,
|
||||||
@@ -935,12 +941,13 @@ function getNewPaymentsAndDeliveries(data = null) {
|
|||||||
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;
|
||||||
});
|
else changeDeliveryInfoObject(deliveryDateInfo, selectedShipping);
|
||||||
}// 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(firstTimeLoadPage && prevOrderInfo && prevOrderInfo?.prevCountry === document.getElementById("client_region").value){
|
else if(firstTimeLoadPage && prevOrderInfo && prevOrderInfo?.prevCountry === document.getElementById("client_region").value){
|
||||||
|
// POPRZEDNIa PŁATNOSC
|
||||||
const prevPaymentMethod = prevOrderInfo.prevPaymentMethod;
|
const prevPaymentMethod = prevOrderInfo.prevPaymentMethod;
|
||||||
|
|
||||||
// Zaznaczenie metod płatności które nie tworzą popupa
|
// Zaznaczenie metod płatności które nie tworzą popupa
|
||||||
@@ -952,7 +959,7 @@ function getNewPaymentsAndDeliveries(data = null) {
|
|||||||
cloneElement(document.getElementById(paymentMethodId));
|
cloneElement(document.getElementById(paymentMethodId));
|
||||||
}
|
}
|
||||||
|
|
||||||
// Poprzednia dostawa
|
// POPRZEDNIA DOSTAWA
|
||||||
const prevDeliveryMethod = prevOrderInfo.prevDeliveryMethod;
|
const prevDeliveryMethod = prevOrderInfo.prevDeliveryMethod;
|
||||||
const prevDeliveryInput = document.querySelector(`input#${prevDeliveryMethod.id}`);
|
const prevDeliveryInput = document.querySelector(`input#${prevDeliveryMethod.id}`);
|
||||||
|
|
||||||
@@ -960,7 +967,7 @@ function getNewPaymentsAndDeliveries(data = null) {
|
|||||||
if(prevDeliveryInput){
|
if(prevDeliveryInput){
|
||||||
// Sprawdzenie czy dostawa miała punkt odbioru
|
// Sprawdzenie czy dostawa miała punkt odbioru
|
||||||
if(prevDeliveryMethod.fselectedPoint){
|
if(prevDeliveryMethod.fselectedPoint){
|
||||||
checkPrevPickupPoint(
|
const pointExists = await checkPrevPickupPoint(
|
||||||
prevDeliveryInput.parentElement.querySelector(".fselectedPoint"),
|
prevDeliveryInput.parentElement.querySelector(".fselectedPoint"),
|
||||||
prevDeliveryMethod.fselectedPoint.deliveryPointId,
|
prevDeliveryMethod.fselectedPoint.deliveryPointId,
|
||||||
prevDeliveryMethod.fselectedPoint.name,
|
prevDeliveryMethod.fselectedPoint.name,
|
||||||
@@ -968,12 +975,12 @@ function getNewPaymentsAndDeliveries(data = null) {
|
|||||||
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;
|
||||||
}
|
}
|
||||||
|
changeDeliveryInfoObject(deliveryDateInfo, prevDeliveryInput);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -982,16 +989,17 @@ function getNewPaymentsAndDeliveries(data = null) {
|
|||||||
if(paymentValue && checkedPayment && (checkedPayment.dataset.group === "card" || checkedPayment.dataset.group === "transfer")){
|
if(paymentValue && checkedPayment && (checkedPayment.dataset.group === "card" || checkedPayment.dataset.group === "transfer")){
|
||||||
cloneElement(checkedPayment);
|
cloneElement(checkedPayment);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Przeładowanie mapy
|
// Przeładowanie mapy
|
||||||
loadMap();
|
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
|
// Przeliczenie kosztu dostawy
|
||||||
calculateBasketCost();
|
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;
|
firstTimeLoadPage = false;
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
@@ -1100,7 +1108,7 @@ function checkPrevShipping(){
|
|||||||
// Przeliczenie kosztu i czasu dostawy i zapisanie nowej metody dostawy
|
// Przeliczenie kosztu i czasu dostawy i zapisanie nowej metody dostawy
|
||||||
function changeCurrentShippingInfo(shippingMethod){
|
function changeCurrentShippingInfo(shippingMethod){
|
||||||
calculateBasketCost();
|
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;
|
app_shop.vars.checkedShipping = shippingMethod.value;
|
||||||
}
|
}
|
||||||
document.getElementById("cop_seection2").addEventListener("click", e => {
|
document.getElementById("cop_seection2").addEventListener("click", e => {
|
||||||
@@ -1378,7 +1386,7 @@ function formatPrice(price, currencySign) {
|
|||||||
};
|
};
|
||||||
|
|
||||||
// Funkcja od ustalenia daty dostawy
|
// 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 deliveryMessageEl = document.querySelector("#order2_shiptime span:not(.operation_value)");
|
||||||
const deliveryDateEl = document.querySelector("#order2_shiptime .operation_value");
|
const deliveryDateEl = document.querySelector("#order2_shiptime .operation_value");
|
||||||
const date = delivery.split("#");
|
const date = delivery.split("#");
|
||||||
@@ -1393,6 +1401,12 @@ function deliveryDate(deliveryVal, delivery, pickuppoint) {
|
|||||||
else deliveryDateEl.innerHTML = orderTxt[`shipping${parseInt(date[3])}`];
|
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
|
// Obsługa klilnięć na elementy w podsumowaniu
|
||||||
document.getElementById("cop_seection3").addEventListener("click", (e) => {
|
document.getElementById("cop_seection3").addEventListener("click", (e) => {
|
||||||
|
|||||||
Reference in New Issue
Block a user