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 #
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\
wydzielonyScript.js w Wydzielony Javascript\
script.js w Javascript\
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"
\index.xslt w XML/XSLT
\wydzielonyScript.js w Wydzielony Javascript
\script.js w Javascript
\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"
## 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
@@ -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ć.
## Brakujące Tłumaczenia (literały) ##
Trzeba je później podmienić w kodzie w Wydzielonym Java script na np.:\
<iai:variable vid="Pokaż Listę"/>
Trzeba je później podmienić w kodzie w Wydzielonym Java script na np.:
\<iai:variable vid="Pokaż Listę"/>
### Wydzielony Javascript ###
Pokaż Listę\
Pokaż Mapę\
Błąd podczas zmiany kraju. Przeładuj stronę jeszcze raz.\
Błąd podczas logowania, proszę spróbować ponownie\
banków\
kart płatniczych\
Lista\
Wybierz z\
Pokaż Listę
\Pokaż Mapę
\Błąd podczas zmiany kraju. Przeładuj stronę jeszcze raz.
\Błąd podczas logowania, proszę spróbować ponownie
\banków
\kart płatniczych
\Lista
\Wybierz z
## Zalety ##
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)\
Sprawdzenie czy wpisano dobry bon towarowy przed złożeniem zamówienia\
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 na podstawie poprzednio wykonanego zakupu\
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)
\Sprawdzenie czy wpisano dobry bon towarowy przed złożeniem zamówienia
\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 na podstawie poprzednio wykonanego zakupu
## 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)
## 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
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
## 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.
\ 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>
<img>
<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 name="alt">
<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>
<label for="rebate_option" class="--arrow-label"><iai:variable vid="Posiadasz kod rabatowy?"/></label>
</div>
<div class="rebate__code has-feedback">
<div class="rebate__code-container">
<input type="text" id="rebate_code" name="rebate_code" class="form-control">
<iaixsl:attribute name="placeholder"><iai:variable vid="Wpisz kod rabatowy"/></iaixsl:attribute>
</input>
<span class="form-control-feedback"></span>
<div class="rebate__code">
<div class="rebate__code-container has-feedback">
<div>
<input type="text" id="rebate_code" name="rebate_code" class="form-control">
<iaixsl:attribute name="placeholder"><iai:variable vid="Wpisz kod rabatowy"/></iaixsl:attribute>
</input>
<span class="form-control-feedback"></span>
</div>
<button class="rebate__code-realize bm-oscop__btn"><iai:variable vid="Zrealizuj"/></button>
</div>
</div>

View File

@@ -825,7 +825,7 @@ function getNewPaymentsAndDeliveries(data = null, firstLoad = false) {
});
// 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");
if(previousDeliveries) previousDeliveries.remove();
document.querySelector(".ajax_cop .step2_sub").insertAdjacentHTML("beforeend",deliveryMarkup);
@@ -841,9 +841,11 @@ function getNewPaymentsAndDeliveries(data = null, firstLoad = false) {
// Przygotowanie Płatności
e.prepaids_method.forEach(function (method) {
const checkedPayment = paymentValue === method.id;
const markup = `
<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">
<img src="${method.icon}" alt="${method.name}">
</div>
@@ -917,7 +919,7 @@ function getNewPaymentsAndDeliveries(data = null, firstLoad = false) {
// Wstawienie pickuppoint jeśli edycja i istnieje
if(data?.pickupData !== undefined && data?.pickupData !== null){
const selectedShipping = document.querySelector(`#cop_seection2 input#${deliveryId}`);
const pointExists = checkPrevPickupPoint(
checkPrevPickupPoint(
selectedShipping.parentElement.querySelector(".fselectedPoint"),
data.pickupData.id,
data.pickupData.name,
@@ -925,11 +927,10 @@ function getNewPaymentsAndDeliveries(data = null, firstLoad = false) {
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;
});
}// 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){
const prevPaymentMethod = JSON.parse(localStorage.getItem("prevPaymentMethod"));
@@ -949,7 +950,7 @@ function getNewPaymentsAndDeliveries(data = null, firstLoad = false) {
if(prevDeliveryInput){
// sprawdzenie czy dostawa miała punkt odbioru
if(prevDeliveryMethod.fselectedPoint){
const pointExists = checkPrevPickupPoint(
checkPrevPickupPoint(
prevDeliveryInput.parentElement.querySelector(".fselectedPoint"),
prevDeliveryMethod.fselectedPoint.deliveryPointId,
prevDeliveryMethod.fselectedPoint.name,
@@ -957,13 +958,21 @@ function getNewPaymentsAndDeliveries(data = null, firstLoad = false) {
prevDeliveryMethod.fselectedPoint.city,
prevDeliveryMethod.fselectedPoint.zipcode,
prevDeliveryMethod.fselectedPoint.courierId
);
).then(pointExists=>{
if(pointExists) prevDeliveryInput.checked = true;
});
}else{
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
loadMap();
// 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){
if(!name || !city || !zipcode) return false;
// Pobranie punktów z tym samym id co poprzedni
app_shop.fn.ajaxLoadSite(1)
const resultData = await fetchData({
@@ -1163,7 +1173,7 @@ function removePrevClone(){
}
// Utworzenie modala po kliknieciu na "przelewy online" lub "karta platnicza"
let ifChosenNewPaymentMethod=false;
let ifChosenNewPaymentMethod = false;
function showPaymentMethodModal(method){
app_shop.fn.paymentModal = new Modal({
element: $(`.${method}__methods`),
@@ -1484,7 +1494,7 @@ async function updateCode(){
// Pokazanie błędu
const { message } = rebateStatus?.data?.activateRebateCode?.error;
addError(rebateCode);
rebateCode.insertAdjacentHTML("afterend",`<span class="help-block validate_message text-danger">${message}.</span>`);
addErrorMessage(rebateCode, message);
// Schowaj kod (show=false, error=true)
toggleActiveCode(false, true);
}
@@ -1524,7 +1534,7 @@ function toggleActiveCode(show, error=false){
rebateOptionWrapper.style.display = show ? "none" : "flex";
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");
// zmień wartości
@@ -1561,7 +1571,7 @@ rebateCode.addEventListener("keydown", e=>{
// ZŁOŻENIE ZAMÓWIENIA
// 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
let allGood = true;
@@ -1572,12 +1582,12 @@ function validateAllInputs(){
}
if(!document.querySelector(".--logged")){
// 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;
// Sprawdzenie nazwy firmy i nipu
if(document.getElementById("client_type1").checked){
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
allGood = validateFormInputs("client") && allGood;
@@ -1589,13 +1599,13 @@ function validateAllInputs(){
}
return allGood
}
function validateFormInputs(query){
async function validateFormInputs(query){
let isFormGood = true;
isFormGood = validateNotEmpty(document.getElementById(`${query}_firstname`)) && isFormGood;
isFormGood = validateNotEmpty(document.getElementById(`${query}_lastname`)) && 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;
return isFormGood;
@@ -1887,6 +1897,7 @@ async function addClient(succes, error){
const saveToSms = document.getElementById("client_sms");
let saveToSmsData = false;
if(saveToSms && saveToSms.checked) saveToSmsData = true;
const registerClientData = await fetchData({
data: REGISTER_CLIENT(`RegisterClientInput: {
clientData: {

View File

@@ -48,19 +48,19 @@
.has-feedback.--error .form-control{
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{
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{
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{
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{
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{
margin-bottom: 0!important;
}
//transition
// transition
.--hide{
max-height: 0;
height: 0;
@@ -110,7 +110,7 @@
animation: fade-in .2s;
}
//////////////////////////////////////////////////////////////////
//MODAL
// MODAL
.modal__wrapper{
max-height: 80vh!important;
padding: 2rem 3rem!important;
@@ -305,12 +305,12 @@
line-height: 43px;
}
.has-error .form-control-feedback, .has-success .form-control-feedback {
line-height: 38px;
line-height: 34px;
}
select{
cursor: pointer;
}
//ikony
// ikony
i.icon-home:before {
content: '\F015';
}
@@ -324,7 +324,7 @@
color: #000;
content: "*";
}
//Kontynuuj zakupy
// Kontynuuj zakupy
a.go__shopping{
margin-bottom: 4rem;
display: inline-block;
@@ -343,7 +343,7 @@
font-size: 2.2rem;
padding-bottom: 1.5rem;
}
//cena gratis
// cena gratis
.cost_free{
color: #0BAC38;
font-weight: 800;
@@ -354,7 +354,7 @@
flex-direction: column;
gap: 2rem;
}
//Sekcja dane klienta
// Sekcja dane klienta
#cop_seection1{
margin-bottom: 2rem;
#client_contact_info.--logged{
@@ -404,7 +404,7 @@
.row {
margin: 0 0px 0 -10px;
}
//kraj
// kraj
.form-group.--region{
position: relative;
.control-label{
@@ -443,7 +443,7 @@
content: "\F106";
}
}
//zalogowanie się
// zalogowanie się
.signin{
.get_signin{
text-decoration: underline;
@@ -604,7 +604,7 @@
justify-content: center;
align-items: center;
}
//Chowanie przewidywanego czasu dostawy
// Chowanie przewidywanego czasu dostawy
input:checked[data-pickuppoint="y"] ~ .delivery_date{
display: none;
}
@@ -837,39 +837,38 @@
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;
}
.rebate{
padding-bottom: 0.9rem;
border: 1px solid #ccc;
border-radius: 8px;
.rebate__options, .rebate__code .rebate__code-container{
.rebate__options, .rebate__code{
display: flex;
align-items: center;
}
.rebate__code{
display: none;
.rebate__code-container{
gap: 2rem;
display: grid;
grid-template-columns: 5fr 3fr;
padding: 2rem 1rem 0 1rem;
position: relative;
.help-block.validate_message.text-danger{
position: absolute;
bottom: 0;
transform: translateY(150%);
> div{
position: relative;
margin-right: 2rem;
}
.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{
margin: 0!important;
display: inline-block;
}
.rebate__code-realize{
padding: 1rem 14%;
padding: 1rem;
}
}
.rebate__active .rebate__active-options{
@@ -926,9 +925,6 @@
.zipcode_wrapper{
padding-right: 0!important;
}
#cop_seection3 .rebate .rebate__code .form-control-feedback{
right: 34vw!important;
}
}
@media(max-width: 757px){
.form-control-feedback{
@@ -1114,22 +1110,22 @@
font-size: 2rem!important;
}
.rebate .rebate__code-container{
flex-direction: column;
gap: 1.2rem!important;
align-items: flex-start!important;
gap: 1.2rem;
grid-template-columns: 1fr!important;
> div{
margin-right: 0!important;
grid-column: 1 / span1;
}
.help-block.validate_message.text-danger{
position: static!important;
transform: translateY(0%)!important;
grid-column: 1 / span1!important;
grid-row: 2 / span1;
margin-bottom: 1rem;
margin-top: 0!important;
}
.form-control-feedback{
line-height: 83px!important;
right: 0%!important;
.rebate__code-realize{
grid-column: 1 / span1;
}
}
.rebate__code-container:has(.help-block.validate_message.text-danger){
margin-bottom: 0!important;
}
.rebate__code-realize{
width: 100%;
}

View File

@@ -822,7 +822,7 @@ function getNewPaymentsAndDeliveries(data = null, firstLoad = false) {
});
// 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");
if(previousDeliveries) previousDeliveries.remove();
document.querySelector(".ajax_cop .step2_sub").insertAdjacentHTML("beforeend",deliveryMarkup);
@@ -838,9 +838,11 @@ function getNewPaymentsAndDeliveries(data = null, firstLoad = false) {
// Przygotowanie Płatności
e.prepaids_method.forEach(function (method) {
const checkedPayment = paymentValue === method.id;
const markup = `
<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">
<img src="${method.icon}" alt="${method.name}">
</div>
@@ -914,7 +916,7 @@ function getNewPaymentsAndDeliveries(data = null, firstLoad = false) {
// Wstawienie pickuppoint jeśli edycja i istnieje
if(data?.pickupData !== undefined && data?.pickupData !== null){
const selectedShipping = document.querySelector(`#cop_seection2 input#${deliveryId}`);
const pointExists = checkPrevPickupPoint(
checkPrevPickupPoint(
selectedShipping.parentElement.querySelector(".fselectedPoint"),
data.pickupData.id,
data.pickupData.name,
@@ -922,11 +924,10 @@ function getNewPaymentsAndDeliveries(data = null, firstLoad = false) {
data.pickupData.address.city,
data.pickupData.address.postcode,
data.deliveryMethodId
);
// Odznaczenie punktu jeśli punkt odbioru nie istnieje(Wcześniej był zaznaczony przy edycji)
if(!pointExists) selectedShipping.checked = false;
).then(pointExists=>{
// Odznaczenie punktu jeśli punkt odbioru nie istnieje(Wcześniej był zaznaczony przy edycji)
if(!pointExists) selectedShipping.checked = false;
});
}// 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){
const prevPaymentMethod = JSON.parse(localStorage.getItem("prevPaymentMethod"));
@@ -946,7 +947,7 @@ function getNewPaymentsAndDeliveries(data = null, firstLoad = false) {
if(prevDeliveryInput){
// sprawdzenie czy dostawa miała punkt odbioru
if(prevDeliveryMethod.fselectedPoint){
const pointExists = checkPrevPickupPoint(
checkPrevPickupPoint(
prevDeliveryInput.parentElement.querySelector(".fselectedPoint"),
prevDeliveryMethod.fselectedPoint.deliveryPointId,
prevDeliveryMethod.fselectedPoint.name,
@@ -954,13 +955,21 @@ function getNewPaymentsAndDeliveries(data = null, firstLoad = false) {
prevDeliveryMethod.fselectedPoint.city,
prevDeliveryMethod.fselectedPoint.zipcode,
prevDeliveryMethod.fselectedPoint.courierId
);
if(pointExists) prevDeliveryInput.checked = true;
).then(pointExists=>{
if(pointExists) prevDeliveryInput.checked = true;
});
}else{
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
loadMap();
// 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){
if(!name || !city || !zipcode) return false;
// Pobranie punktów z tym samym id co poprzedni
app_shop.fn.ajaxLoadSite(1)
const resultData = await fetchData({
@@ -1160,7 +1170,7 @@ function removePrevClone(){
}
// Utworzenie modala po kliknieciu na "przelewy online" lub "karta platnicza"
let ifChosenNewPaymentMethod=false;
let ifChosenNewPaymentMethod = false;
function showPaymentMethodModal(method){
app_shop.fn.paymentModal = new Modal({
element: $(`.${method}__methods`),
@@ -1481,7 +1491,7 @@ async function updateCode(){
// Pokazanie błędu
const { message } = rebateStatus?.data?.activateRebateCode?.error;
addError(rebateCode);
rebateCode.insertAdjacentHTML("afterend",`<span class="help-block validate_message text-danger">${message}.</span>`);
addErrorMessage(rebateCode, message);
// Schowaj kod (show=false, error=true)
toggleActiveCode(false, true);
}
@@ -1521,7 +1531,7 @@ function toggleActiveCode(show, error=false){
rebateOptionWrapper.style.display = show ? "none" : "flex";
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");
// zmień wartości
@@ -1558,7 +1568,7 @@ rebateCode.addEventListener("keydown", e=>{
// ZŁOŻENIE ZAMÓWIENIA
// 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
let allGood = true;
@@ -1569,12 +1579,12 @@ function validateAllInputs(){
}
if(!document.querySelector(".--logged")){
// 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;
// Sprawdzenie nazwy firmy i nipu
if(document.getElementById("client_type1").checked){
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
allGood = validateFormInputs("client") && allGood;
@@ -1586,13 +1596,13 @@ function validateAllInputs(){
}
return allGood
}
function validateFormInputs(query){
async function validateFormInputs(query){
let isFormGood = true;
isFormGood = validateNotEmpty(document.getElementById(`${query}_firstname`)) && isFormGood;
isFormGood = validateNotEmpty(document.getElementById(`${query}_lastname`)) && 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;
return isFormGood;