-
-
-
${streetText}
-
- ${zipcodeText}
- ${cityText}
-
+ // Pokazanie elementu fselectedPoint
+ selectedPoint.style.display = "block";
+
+ // Wstawienie danych w punkt odbioru
+ selectedPoint.dataset.courierId = courierId;
+ selectedPoint.dataset.deliveryPointId = deliveryPointId;
+ selectedPoint.dataset.name = name;
+ selectedPoint.dataset.street = streetText;
+ selectedPoint.dataset.city = cityText;
+ selectedPoint.dataset.zipcode = zipcodeText;
+
+ // Wstawienie danych o punkcie odbioru
+ selectedPoint.insertAdjacentHTML("beforeend", `
+
+
+
+
+ ${streetText}
+
+ ${zipcodeText}
+ ${cityText}
+
+
-
-
-
-`);
+
+
+ `);
}
// Zmiana widoku listy, mapy na mobilce
function toggleMapList(e){
-const ifList = e.target.dataset.show === "list";
-e.target.innerHTML = ifList ? `${
}` : `${
}`;
-
-// Schowaj/ Pokaż mapę i listę
-if(ifList){
- document.querySelector(".map_button_search").classList.add("--hide-map-el");
- document.getElementById("mymap").classList.add("--hide-map-el");
- document.querySelector(".asideContainer_pickup").classList.remove("--hide-map-el");
-}else{
- document.querySelector(".map_button_search").classList.remove("--hide-map-el");
- document.getElementById("mymap").classList.remove("--hide-map-el");
- document.querySelector(".asideContainer_pickup").classList.add("--hide-map-el");
-}
-
-e.target.dataset.show = ifList ? "map" : "list";
+ const ifList = e.target.dataset.show === "list";
+ e.target.innerHTML = ifList ? "Pokaż Mapę" : "Pokaż Listę";
+
+ // Schowaj/ Pokaż mapę i listę
+ if(ifList){
+ document.querySelector(".map_button_search").classList.add("--hide-map-el");
+ document.getElementById("mymap").classList.add("--hide-map-el");
+ document.querySelector(".asideContainer_pickup").classList.remove("--hide-map-el");
+ }else{
+ document.querySelector(".map_button_search").classList.remove("--hide-map-el");
+ document.getElementById("mymap").classList.remove("--hide-map-el");
+ document.querySelector(".asideContainer_pickup").classList.add("--hide-map-el");
+ }
+
+ e.target.dataset.show = ifList ? "map" : "list";
}
//////////////////////////////////////////////////////////////////////////
// DANE KLIENTA
document.getElementById("bm-oscop-section1").addEventListener("click", (e) => {
-// Pokazanie się okna od logowania
-if(e.target.classList.contains("get_signin")) showSigninModal();
-
-// Sprawdzenie czy kliknięcie było na "Załóź konto w sklepie Opcjonalnie"
-if(e.target.id === "register_client_checkbox"){
- const registerForm = document.querySelector(".register__form");
- if(e.target.checked) registerForm.classList.add("--fade-in");
- else registerForm.classList.remove("--fade-in");
- return;
-}
-
-// Ukrycie/Pokazanie hasła
-if(e.target.id === "toggle-password") return togglePassword(e.target);
-
-// Sprawdzenie czy kliknięcie było na firmę, czy na osobę prywatną
-if(e.target.id === "client_type1") return document.querySelectorAll("#bm-oscop-section1 .firm-group").forEach(el => el.classList.add("--fade-in"));
-if(e.target.id === "client_type2") return document.querySelectorAll("#bm-oscop-section1 .firm-group").forEach(el => el.classList.remove("--fade-in"));
-
-// Sprawdzenie czy dostawa na inny adres czy nie
-if(e.target.id === "deliver_to_billingaddr"){
- let ifBillingaddr = false;
- if(e.target.checked) ifBillingaddr = true;
- return showDeliveryForm(ifBillingaddr);
-}
-
-// Sprawdzenie czy kliknięcie będzie na guzik "Wybierz z listy adresów" i pokazanie popupa
-if(e.target.classList.contains("delivery__address-list-button")){
- app_shop.fn.addressModal = new Modal({
- element: $(".delivery__address-list-container"),
- classList: "--fade-in-modal",
- afterShow: () => {
- disablePageScroll();
- document.querySelector(".delivery__address-list").addEventListener("click", handleClickAddressList);
- },
- beforeClose: () => {
- enablePageScroll();
- document.querySelector(".delivery__address-list").removeEventListener("click", handleClickAddressList);
- },
- });
- return;
-}
+ // Pokazanie się okna od logowania
+ if(e.target.classList.contains("get_signin")) showSigninModal();
+
+ // Sprawdzenie czy kliknięcie było na "Załóź konto w sklepie Opcjonalnie"
+ if(e.target.id === "register_client_checkbox"){
+ const registerForm = document.querySelector(".register__form");
+ if(e.target.checked) registerForm.classList.add("--fade-in");
+ else registerForm.classList.remove("--fade-in");
+ return;
+ }
+
+ // Ukrycie/Pokazanie hasła
+ if(e.target.id === "toggle-password") return togglePassword(e.target);
+
+ // Sprawdzenie czy kliknięcie było na firmę, czy na osobę prywatną
+ if(e.target.id === "client_type1") return document.querySelectorAll("#bm-oscop-section1 .firm-group").forEach(el => el.classList.add("--fade-in"));
+ if(e.target.id === "client_type2") return document.querySelectorAll("#bm-oscop-section1 .firm-group").forEach(el => el.classList.remove("--fade-in"));
+
+ // Sprawdzenie czy dostawa na inny adres czy nie
+ if(e.target.id === "deliver_to_billingaddr"){
+ let ifBillingaddr = false;
+ if(e.target.checked) ifBillingaddr = true;
+ return showDeliveryForm(ifBillingaddr);
+ }
+
+ // Sprawdzenie czy kliknięcie będzie na guzik "Wybierz z listy adresów" i pokazanie popupa
+ if(e.target.classList.contains("delivery__address-list-button")){
+ app_shop.fn.addressModal = new Modal({
+ element: $(".delivery__address-list-container"),
+ classList: "--fade-in-modal",
+ afterShow: () => {
+ disablePageScroll();
+ document.querySelector(".delivery__address-list").addEventListener("click", handleClickAddressList);
+ },
+ beforeClose: () => {
+ enablePageScroll();
+ document.querySelector(".delivery__address-list").removeEventListener("click", handleClickAddressList);
+ },
+ });
+ return;
+ }
+
+ // Kliknięcie na kod kierunkowy numeru telefonu
+ if(e.target.closest(".phone_number__code")){
+ e.target.closest(".phone_number__code").querySelector(".phone_number__code_list").classList.toggle("show");
+ }
+ if(e.target.classList.contains("phone_number__code_list_data")){
+ changePhoneValidationCountry(e.target);
+ return;
+ }
});
// Pokaż/schowaj hasło
function togglePassword(el){
-const passwordInput = document.querySelector(".register__password");
-let showPassword = false;
-if(passwordInput.type === "password") showPassword = true;
-
-passwordInput.type = showPassword ? "text" : "password";
-el.classList.remove(showPassword ? "register__show-password" : "register__hide-password");
-el.classList.add(showPassword ? "register__hide-password" : "register__show-password");
-el.innerHTML = showPassword ? `${
}` : `${
}`;
+ const passwordInput = document.querySelector(".register__password");
+ let showPassword = false;
+ if(passwordInput.type === "password") showPassword = true;
+
+ passwordInput.type = showPassword ? "text" : "password";
+ el.classList.remove(showPassword ? "register__show-password" : "register__hide-password");
+ el.classList.add(showPassword ? "register__hide-password" : "register__show-password");
+ el.innerHTML = showPassword ? `${
}` : `${
}`;
}
// Pokaż popup logowania
function showSigninModal(){
-app_shop.fn.signinModal = new Modal({
- element: $("#signin-form"),
- classList: "--fade-in-modal",
- afterShow: ()=>{
- disablePageScroll();
- document.querySelector(".signin-form__login").addEventListener("keydown", logInOnEnter);
- document.querySelector(".signin-form__pass").addEventListener("keydown", logInOnEnter);
- },
- beforeClose: ()=>{
- enablePageScroll();
- document.querySelector(".signin-form__login").removeEventListener("keydown", logInOnEnter);
- document.querySelector(".signin-form__pass").removeEventListener("keydown", logInOnEnter);
- },
-});
+ app_shop.fn.signinModal = new Modal({
+ element: $("#signin-form"),
+ classList: "--fade-in-modal",
+ afterShow: ()=>{
+ disablePageScroll();
+ document.querySelector(".signin-form__login").addEventListener("keydown", logInOnEnter);
+ document.querySelector(".signin-form__pass").addEventListener("keydown", logInOnEnter);
+ },
+ beforeClose: ()=>{
+ enablePageScroll();
+ document.querySelector(".signin-form__login").removeEventListener("keydown", logInOnEnter);
+ document.querySelector(".signin-form__pass").removeEventListener("keydown", logInOnEnter);
+ },
+ });
}
// Pokaż(true)/Schowaj(false) formularz dostawy na inny adres
function showDeliveryForm(style){
-const deliveryWrapper = document.querySelector(".bm-oscop__container #client_new_additional .delivery_box.cn_wrapper");
-if((style && deliveryWrapper.classList.contains("--more")) || (!style && !deliveryWrapper.classList.contains("--more"))) return;
-
-// Formularz dostawy na inny adres
-style ? deliveryWrapper.classList.add("--more") : deliveryWrapper.classList.remove("--more");
-
-// Przycisk od wybierania z listy adresów
-listBtn = document.querySelector(".delivery__address-list-button");
-if(listBtn) style ? listBtn.classList.add("--fade-in") : listBtn.classList.remove("--fade-in");
-
-// Zmiana regionu jeśli region klienta różni się od regionu dostawy
-const deliveryRegion = document.getElementById("delivery_region").value;
-const clientRegion = document.getElementById("client_region").value;
-if(deliveryRegion !== clientRegion) changeRegion();
+ const deliveryWrapper = document.querySelector(".bm-oscop__container #client_new_additional .delivery_box.cn_wrapper");
+ if((style && deliveryWrapper.classList.contains("--more")) || (!style && !deliveryWrapper.classList.contains("--more"))) return;
+
+ // Formularz dostawy na inny adres
+ style ? deliveryWrapper.classList.add("--more") : deliveryWrapper.classList.remove("--more");
+
+ // Przycisk od wybierania z listy adresów
+ listBtn = document.querySelector(".delivery__address-list-button");
+ if(listBtn) style ? listBtn.classList.add("--fade-in") : listBtn.classList.remove("--fade-in");
+
+ // Zmiana regionu jeśli region klienta różni się od regionu dostawy
+ const deliveryRegion = document.getElementById("delivery_region").value;
+ const clientRegion = document.getElementById("client_region").value;
+ if(deliveryRegion !== clientRegion) changeRegion();
}
// EventListener listy adresów
function handleClickAddressList(e){
-const addressLi = e.target.closest("li");
-if(!addressLi) return;
-
-// Uzupełnienie informacji o formularzu
-const addressForm = document.querySelector(".delivery_box.cn_wrapper");
-changeDeliveryValue("#delivery_firstname", addressLi.dataset.firstname);
-changeDeliveryValue("#delivery_lastname", addressLi.dataset.lastname);
-
-const firmName = addressForm.querySelector("#delivery_additional");
-if(addressLi.dataset.additional) {
- firmName.value = addressLi.dataset.additional;
- firmName.classList.add("focused");
- addSuccess(firmName);
-}
-else {
- firmName.value = "";
- firmName.classList.remove("focused");
- clearValidation(firmName);
-}
-changeDeliveryValue("#delivery_street", addressLi.dataset.street);
-changeDeliveryValue("#delivery_zipcode", addressLi.dataset.zipcode);
-changeDeliveryValue("#delivery_city", addressLi.dataset.city);
-changeDeliveryValue("#delivery_phone", addressLi.dataset.phone);
-
-// Zmień państwo i przeładuj metody płatności jeśli jest inny
-const deliveryRegion = addressForm.querySelector("#delivery_region");
-if(deliveryRegion.value !== addressLi.dataset.region_id) {
- addressForm.querySelector("#delivery_region").value = addressLi.dataset.region_id;
- changeRegion();
-}
-
-// Nadanie klasy aktywnemu adresowi
-e.target.closest("ul").querySelectorAll("li").forEach(el => el.classList.remove("--active-address"));
-addressLi.classList.add("--active-address");
-
-// Zamkniencie modala
-setTimeout(() => app_shop.fn.addressModal.closeModal(),100)
+ const addressLi = e.target.closest("li");
+ if(!addressLi) return;
+
+ // Uzupełnienie informacji o formularzu
+ const addressForm = document.querySelector(".delivery_box.cn_wrapper");
+ changeDeliveryValue("#delivery_firstname", addressLi.dataset.firstname);
+ changeDeliveryValue("#delivery_lastname", addressLi.dataset.lastname);
+
+ const firmName = addressForm.querySelector("#delivery_additional");
+ if(addressLi.dataset.additional) {
+ firmName.value = addressLi.dataset.additional;
+ firmName.classList.add("focused");
+ addSuccess(firmName);
+ }
+ else {
+ firmName.value = "";
+ firmName.classList.remove("focused");
+ clearValidation(firmName);
+ }
+ changeDeliveryValue("#delivery_street", addressLi.dataset.street);
+ changeDeliveryValue("#delivery_zipcode", addressLi.dataset.zipcode);
+ changeDeliveryValue("#delivery_city", addressLi.dataset.city);
+
+ // Sprawdzenie numeru Telefonu
+ // Jeśli ma kod kierunkowy
+ if(addressLi.dataset.phone.split(" ").length === 2 && addressLi.dataset.phone.split(" ")[0][0]){
+ const countryCode = addressLi.dataset.phone.split(" ")[0];
+ const phoneNumber = addressLi.dataset.phone.split(" ")[1];
+
+ // Wstawienie kodu kierunkowego i numeru telefonu
+ const currCountry = countryPhoneData.find(phoneData => phoneData.country_code === countryCode.slice(1));
+ setPhoneCountryNumber(document.getElementById("delivery_phone").closest(".--phone"), currCountry.country_code, currCountry.alpha2)
+ changeDeliveryValue("#delivery_phone", phoneNumber);
+ }else{//Jeśli nie ma kod kierunkowy
+ changeDeliveryValue("#delivery_phone", addressLi.dataset.phone);
+ }
+ validatePhone(document.getElementById("delivery_phone"));
+
+ // Zmień państwo i przeładuj metody płatności jeśli jest inny
+ const deliveryRegion = addressForm.querySelector("#delivery_region");
+ if(deliveryRegion.value !== addressLi.dataset.region_id) {
+ addressForm.querySelector("#delivery_region").value = addressLi.dataset.region_id;
+ changeRegion();
+ }
+
+ // Nadanie klasy aktywnemu adresowi
+ e.target.closest("ul").querySelectorAll("li").forEach(el => el.classList.remove("--active-address"));
+ addressLi.classList.add("--active-address");
+
+ // Zamkniencie modala
+ setTimeout(() => app_shop.fn.addressModal.closeModal(),100)
}
// Zmień wartości pól input delivery
function changeDeliveryValue(selector, newValue){
-const selectedInput = document.querySelector(selector);
-selectedInput.value = newValue;
-addSuccess(selectedInput);
-selectedInput.classList.add("focused")
+ const selectedInput = document.querySelector(selector);
+ selectedInput.value = newValue;
+ addSuccess(selectedInput);
+ selectedInput.classList.add("focused")
}
// OBSŁUGA LOGOWANIA
const SIGNIN = (signinInput) => JSON.stringify({
-query: `mutation {
- login(${signinInput}) {
- status
- }
-}`,
+ query: `mutation {
+ login(${signinInput}) {
+ status
+ }
+ }`,
});
function logInOnEnter(e){
-if(e.key === "Enter") logInToAccount(false)
+ if(e.key === "Enter") logInToAccount(false)
}
const signinForm = document.querySelector(".signin-form__container form");
if(signinForm) signinForm.addEventListener("submit", logInToAccount);
async function logInToAccount(event){
-if(event) event.preventDefault();
-const login = document.querySelector(".signin-form__login").value;
-const password = document.querySelector(".signin-form__pass").value;
-const loginStatus = await fetchData({
- data: SIGNIN(`
- login: "${login.replace(/"/g, '\\"')}",
- password: "${password.replace(/"/g, '\\"')}",
- `),
- linkParameter: '?mutation=signin',
- alert: false,
-});
-if (loginStatus.errors) {
- Alertek.show_alert(`${
}`);
- return;
-}
-app_shop.fn.signinModal.closeModal();
-getClientNew();
+ if(event) event.preventDefault();
+ const login = document.querySelector(".signin-form__login").value;
+ const password = document.querySelector(".signin-form__pass").value;
+ const loginStatus = await fetchData({
+ data: SIGNIN(`
+ login: "${login.replace(/"/g, '\\"')}",
+ password: "${password.replace(/"/g, '\\"')}",
+ `),
+ linkParameter: '?mutation=signin',
+ alert: false,
+ });
+ if (loginStatus.errors) {
+ Alertek.show_alert(`${
}`);
+ return;
+ }
+ app_shop.fn.signinModal.closeModal();
+ getClientNew();
+
+ // Ustaw numer kraju przy telefonie
+ setPhoneCountryNumberAtStart("client");
+ setPhoneCountryNumberAtStart("delivery");
-if(document.querySelector(".order2_terms_wrapper_sub.email")) document.querySelector(".order2_terms_wrapper_sub.email").remove();
-if(document.querySelector(".order2_terms_wrapper_sub.sms")) document.querySelector(".order2_terms_wrapper_sub.sms").remove();
+ if(document.querySelector(".order2_terms_wrapper_sub.email")) document.querySelector(".order2_terms_wrapper_sub.email").remove();
+ if(document.querySelector(".order2_terms_wrapper_sub.sms")) document.querySelector(".order2_terms_wrapper_sub.sms").remove();
}
// Zalogowanie/inicjacja użytkownika
function getClientNew(){
-app_shop.fn.ajaxLoadSite(1);
-
-// Przygotowanie jesli użytkownik nie jest zalogowany
-if(!document.querySelector(".--logged")) document.getElementById("client_form").remove();
-document.querySelector(".step1_sub").insertAdjacentHTML("beforeend",'
');
-$.ajax({
- url: "/client-new.php?ajax=true&set_render=content",
- timeout: 16e3,
- complete: function (e, a) {
- throwAjaxError(a);
- app_shop.fn.ajaxLoadSite(0);
- },
- success: function (e, a) {
- app_shop.fn.load(
- "place-order.php",
- [["#bm-oscop-section1", "#bm-oscop-section1"]],
- function () {
- history.go(-1);
- },
- "?set_render=content"
- ).then(() => {
- changeRegion();
- })
- },
-});
+ app_shop.fn.ajaxLoadSite(1);
+
+ // Przygotowanie jesli użytkownik nie jest zalogowany
+ if(!document.querySelector(".--logged")) document.getElementById("client_form").remove();
+ document.querySelector(".step1_sub").insertAdjacentHTML("beforeend",'
');
+ $.ajax({
+ url: "/client-new.php?ajax=true&set_render=content",
+ timeout: 16e3,
+ complete: function (e, a) {
+ throwAjaxError(a);
+ app_shop.fn.ajaxLoadSite(0);
+ },
+ success: function (e, a) {
+ app_shop.fn.load(
+ "place-order.php",
+ [["#bm-oscop-section1", "#bm-oscop-section1"]],
+ function () {
+ history.go(-1);
+ },
+ "?set_render=content"
+ ).then(() => {
+ changeRegion();
+ })
+ },
+ });
};
+function createPhoneCodeList(){
+ const phoneCodeListEl = document.querySelectorAll(".phone_number__code_list");
+
+ let phoneCodeMarkup = "";
+ countryPhoneData.forEach(phoneData =>{
+ phoneCodeMarkup += `
+
+ ${phoneData.alpha2}(+${phoneData.country_code})
+ `;
+ });
+
+ phoneCodeListEl.forEach(codeEl => codeEl.innerHTML = phoneCodeMarkup);
+}
+function setPhoneCountryNumberAtStart(deliveryType){
+ const phoneEl = document.getElementById(`${deliveryType}_phone`)
+ const phoneContainerEl = phoneEl.closest(".--phone");
+
+ // NIEZALOGOWANY
+ if(!phoneEl.value){
+ const currCountry = countryPhoneData.find(el=> el.alpha2.toLowerCase() === app_shop.vars.language.symbol.toLowerCase());
+ setPhoneCountryNumber(phoneContainerEl, currCountry.country_code, currCountry.alpha2);
+ // JEŚLI klient zalogowany i ma w numerze numer kierunkowy
+ }else if(phoneEl.value && phoneEl.value.split(" ").length === 2 && phoneEl.value.split(" ")[0][0] === "+" ){
+ const countryCode = phoneEl.value.split(" ")[0];
+ const phoneNumber = phoneEl.value.split(" ")[1];
+
+ // Zmiana numeru telefonu
+ phoneEl.value = phoneNumber;
+
+ // Zmiana kodu kierunkowego państwa
+ const currCountry = countryPhoneData.find(phoneData => phoneData.country_code === countryCode.slice(1));
+ setPhoneCountryNumber(phoneContainerEl, currCountry.country_code, currCountry.alpha2);
+
+ // phoneContainerEl.querySelector(".phone_number__code_alpha2").innerHTML = currCountry.alpha2;
+ // phoneContainerEl.querySelector(".phone_number__code_text").innerHTML = currCountry.country_code;
+ // phoneContainerEl.querySelector(".phone_number__code_number").value = currCountry.country_code;
+
+ // JEŚLI KLIENT zalogowany i brak kodu kierunkowego w numerze
+ }else{
+ // Sprawdź najpierw dla języka sklepu
+ const currCountry = countryPhoneData.find(el=> el.alpha2.toLowerCase() === app_shop.vars.language.symbol.toLowerCase());
+
+ // if(validatePhoneWithoutError(phoneEl, currCountry)) return setPhoneCountryNumber(phoneContainerEl, currCountry.country_code, currCountry.alpha2);
+ // // Sprawdź dla każdego języka po kolei
+ // let stopPhoneDataLooping = false;
+ // countryPhoneData.forEach(phoneData => {
+ // if(stopPhoneDataLooping) return;
+ // if(validatePhoneWithoutError(phoneEl, phoneData)){
+ // setPhoneCountryNumber(phoneContainerEl, phoneData.country_code, phoneData.alpha2);
+ // stopPhoneDataLooping = true;
+ // }
+ // });
+
+ // if(stopPhoneDataLooping) return;
+
+ // Ustawienie numeru kierunkowego telefonu zgodnie z jezykiem strony
+ setPhoneCountryNumber(phoneContainerEl, currCountry.country_code, currCountry.alpha2);
+ validatePhone(phoneEl);
+ }
+}
+function changePhoneValidationCountry(element){
+ const phoneContainerEl = element.closest(".--phone");
+ setPhoneCountryNumber(phoneContainerEl, element.dataset.code, element.dataset.alpha2);
+
+ validatePhone(phoneContainerEl.querySelector("input.form-control.validate.f-control"));
+}
+function setPhoneCountryNumber(phoneEl, phoneCode, phoneAlpha2){
+ const phoneNumberEl = phoneEl.querySelector(".phone_number__code_number");
+ const phoneTextEl = phoneEl.querySelector(".phone_number__code_text");
+ const phoneAlpha2El = phoneEl.querySelector(".phone_number__code_alpha2");
+
+ phoneNumberEl.value = phoneCode;
+ phoneTextEl.innerHTML = phoneCode;
+ phoneAlpha2El.innerHTML = phoneAlpha2;
+}
+// Walidacja numeru telefonu dla ustalenia numeru kierunkowego
+function validatePhoneWithoutError(phoneEL, phoneValidationInfo){
+ const chosenCountry = phoneEL.closest(".--phone").querySelector(".phone_number__code_number").value;
+ const phoneNumber = phoneEL.value.replaceAll(" ","");
+
+ let phoneNoError = false;
+
+ phoneValidationInfo.mobile_begin_with.forEach((el, index)=>{
+ if(phoneNumber.toString().startsWith(el) && phoneValidationInfo.phone_number_lengths.includes(phoneNumber.length)) phoneNoError = true;
+ });
+
+ if(!phoneNoError){
+ return false;
+ }
+ return true;
+}
+
////////////////////////////////////////////////////////////////////////////////////////////////////////
// WALIDACJA
// Wyczyść klasy walidacji
function clearValidation(input){
-const wrapper = input.closest(".has-feedback")
-wrapper.classList.remove('--success', '--error', 'has-error', 'has-success');
+ const wrapper = input.closest(".has-feedback")
+ wrapper.classList.remove('--success', '--error', 'has-error', 'has-success');
};
// Wyczyść wiadomość błędu
function removeErrorMessage(input) {
-const valMessage = input.closest('.has-feedback').querySelector('.validate_message');
-if(valMessage) valMessage.remove();
+ const valMessage = input.closest('.has-feedback').querySelector('.validate_message');
+ if(valMessage) valMessage.remove();
};
// Dodaj klasy błędu
function addError(input){
-clearValidation(input);
-removeErrorMessage(input);
-const wrapper = input.closest(".has-feedback");
-clearValidation(wrapper);
-wrapper.classList.add('--error', 'has-error');
+ clearValidation(input);
+ removeErrorMessage(input);
+ const wrapper = input.closest(".has-feedback");
+ clearValidation(wrapper);
+ wrapper.classList.add('--error', 'has-error');
};
// Dodaj klasy sukcesu
function addSuccess(input){
-clearValidation(input);
-removeErrorMessage(input);
-const wrapper = input.closest(".has-feedback");
-clearValidation(wrapper);
-wrapper.classList.add('--success', 'has-success');
+ clearValidation(input);
+ removeErrorMessage(input);
+ const wrapper = input.closest(".has-feedback");
+ clearValidation(wrapper);
+ wrapper.classList.add('--success', 'has-success');
};
// Dodaj error wraz z wiadomością
function addErrorMessage(input, message){
-addError(input);
-input.closest('.has-feedback').insertAdjacentHTML("beforeend",`
${message}. `);
+ addError(input);
+ input.closest('.has-feedback').insertAdjacentHTML("beforeend",`
${message}. `);
}
// Waliduj elementy wymagające wysłania requesta (zipcode, nip)
async function validateRequest(target, order=false){
-const wrapper = target.closest(".has-feedback");
-let reqData = `${target.name}=${target.value}`;
+ const wrapper = target.closest(".has-feedback");
+ let reqData = `${target.name}=${target.value}`;
-if(target.dataset.serialize) {
- const serializeEl = document.querySelector(target.dataset.serialize);
- reqData += '&' + `${serializeEl.name}=${encodeURIComponent(serializeEl.value)}`;
-}
-if(target.dataset.revalidate) {
- target.dataset.revalidate.split(",").forEach(elQuery => {
- validateRequest(document.querySelector(elQuery));
- })
-}
-if(target.value === '') {
- addErrorMessage(target,
);
- return false;
-}
-
-const resData = await $.ajax({
- url: '/ajax/client-new.php?validAjax=true',
- type: 'POST',
- timeout: 16000,
- dataType: 'JSON',
- data: reqData,
-});
-
-if(resData.errno) {
- let error_message = '';
- if (resData.message.error_code) {
- if (resData.message.zipcode_pattern && (resData.message.error_code === 'incorect_zipcode' || resData.message.error_code === 'incorect_delivery_zipcode')) {
- error_message = clientNewErrorCode[resData.message.error_code] + ' ' + `${
}]:` + ' ';
- error_message += resData.message.zipcode_pattern.join(', ');
- }
- else if (clientNewErrorCode[resData.message.error_code]) error_message = clientNewErrorCode[resData.message.error_code];
+ if(target.dataset.serialize) {
+ const serializeEl = document.querySelector(target.dataset.serialize);
+ reqData += '&' + `${serializeEl.name}=${encodeURIComponent(serializeEl.value)}`;
}
- addError(target);
- if (error_message) addErrorMessage(target, error_message);
- return false
- }else{
- addSuccess(target);
- if (target.name==="client_email" && !order) {
- $.ajax({
- url: '/ajax/client-new.php?checkClientExists=true',
- type: 'POST',
- timeout: 16000,
- dataType: 'JSON',
- data: {'client_mail': target.value},
- }).then(function succesFn(resData) {
- if(resData.client_exists === true || resData.login) showEmailPopup(resData);
- });
+ if(target.dataset.revalidate) {
+ target.dataset.revalidate.split(",").forEach(elQuery => {
+ validateRequest(document.querySelector(elQuery));
+ })
+ }
+ if(target.value === '') {
+ addErrorMessage(target,
);
+ return false;
+ }
+
+ const resData = await $.ajax({
+ url: '/ajax/client-new.php?validAjax=true',
+ type: 'POST',
+ timeout: 16000,
+ dataType: 'JSON',
+ data: reqData,
+ });
+
+ if(resData.errno) {
+ let error_message = '';
+ if (resData.message.error_code) {
+ if (resData.message.zipcode_pattern && (resData.message.error_code === 'incorect_zipcode' || resData.message.error_code === 'incorect_delivery_zipcode')) {
+ error_message = clientNewErrorCode[resData.message.error_code] + ' ' + `${
}]:` + ' ';
+ error_message += resData.message.zipcode_pattern.join(', ');
+ }
+ else if (clientNewErrorCode[resData.message.error_code]) error_message = clientNewErrorCode[resData.message.error_code];
+ }
+ addError(target);
+ if (error_message) addErrorMessage(target, error_message);
+ return false
+ }else{
+ addSuccess(target);
+ if (target.name==="client_email" && !order) {
+ $.ajax({
+ url: '/ajax/client-new.php?checkClientExists=true',
+ type: 'POST',
+ timeout: 16000,
+ dataType: 'JSON',
+ data: {'client_mail': target.value},
+ }).then(function succesFn(resData) {
+ if(resData.client_exists === true || resData.login) showEmailPopup(resData);
+ });
+ }
+ return true;
}
- return true;
- }
};
// Pokaż popup jeśli użytkownik wpisał email który posiada już konto
function showEmailPopup(resData){
-app_shop.fn.emailModal = new Modal({
- html: `
-
-
-
${ }
-
${ }:
-
- ${resData.mail}
+ app_shop.fn.emailModal = new Modal({
+ html: `
+
+
+
${ }
+
${ }:
+
+ ${resData.mail}
+
-
-
- ${ }
-
-
`,
- classList: "--fade-in-modal",
- afterShow: disablePageScroll,
- beforeClose: enablePageScroll,
-});
-return;
+
`,
+ classList: "--fade-in-modal",
+ afterShow: disablePageScroll,
+ beforeClose: enablePageScroll,
+ });
+ return;
}
function handleShowSigninModalFromEmailModal(e){
-e.preventDefault();
-app_shop.fn.emailModal.closeModal();
-showSigninModal();
+ e.preventDefault();
+ app_shop.fn.emailModal.closeModal();
+ showSigninModal();
}
// EventListener zmian w kontenerze bm-oscop-section1
document.getElementById("bm-oscop-section1").addEventListener("input", (e) => {
-clearTimeout(this.formChangeTimeoutFn);
-
-this.formChangeTimeoutFn = setTimeout(()=>{
- const validateRequestId = ["client_zipcode", "delivery_zipcode", "client_nip", "client_email"];
- const notEmptyFieldsId = ["client_firstname", "client_lastname", "client_city", "delivery_firstname", "delivery_lastname", "delivery_city", "client_firm"];
+ clearTimeout(this.formChangeTimeoutFn);
- // Walidacja zipcode, nipu i emaila
- if(validateRequestId.includes(e.target.id)) return validateRequest(e.target);
-
- // Zmiana regionu
- if(e.target.name === "client_region" || e.target.name === "delivery_region") {
- const clientType = e.target.name.split("_")[0];
- validateRequest(document.getElementById(`${clientType}_zipcode`));
- if(clientType === "client" && document.getElementById("client_type1").checked === true) validateRequest(document.getElementById("client_nip"));
- changeRegion();
- return;
- }
+ this.formChangeTimeoutFn = setTimeout(()=>{
+ const validateRequestId = ["client_zipcode", "delivery_zipcode", "client_nip", "client_email"];
+ const notEmptyFieldsId = ["client_firstname", "client_lastname", "client_city", "delivery_firstname", "delivery_lastname", "delivery_city", "client_firm"];
+
+ // Walidacja zipcode, nipu i emaila
+ if(validateRequestId.includes(e.target.id)) return validateRequest(e.target);
- // Walidacja ulicy i numeru domu
- if(e.target.id === "client_street" || e.target.id === "delivery_street") validateStreet(e.target);
- // Walidacja numeru telefonu
- if(e.target.id === "client_phone" || e.target.id === "delivery_phone") validatePhone(e.target);
- // Walidacja loginu i hasła rejestracji
- if(e.target.classList.contains("register__login")) testLogin();
- if(e.target.classList.contains("register__password")) testPassword();
- // Walidacja imienia nazwiska miasta i firmy(wymagające po prostu nie bycia pustym)
- if(notEmptyFieldsId.includes(e.target.id)) validateNotEmpty(e.target);
- // Sprawdzenie czy firma w dostawie na inny adres została wpisana
- if(e.target.id === "delivery_additional"){
- if(e.target.value.length > 0) addSuccess(e.target);
- else clearValidation(e.target);
- };
-}, 300)
+ // Zmiana regionu
+ if(e.target.name === "client_region" || e.target.name === "delivery_region") {
+ const clientType = e.target.name.split("_")[0];
+ validateRequest(document.getElementById(`${clientType}_zipcode`));
+ if(clientType === "client" && document.getElementById("client_type1").checked === true) validateRequest(document.getElementById("client_nip"));
+ changeRegion();
+ return;
+ }
+
+ // Walidacja ulicy i numeru domu
+ if(e.target.id === "client_street" || e.target.id === "delivery_street") validateStreet(e.target);
+ // Walidacja numeru telefonu
+ if(e.target.id === "client_phone" || e.target.id === "delivery_phone") validatePhone(e.target);
+ // Walidacja loginu i hasła rejestracji
+ if(e.target.classList.contains("register__login")) testLogin();
+ if(e.target.classList.contains("register__password")) testPassword();
+ // Walidacja imienia nazwiska miasta i firmy(wymagające po prostu nie bycia pustym)
+ if(notEmptyFieldsId.includes(e.target.id)) validateNotEmpty(e.target);
+ // Sprawdzenie czy firma w dostawie na inny adres została wpisana
+ if(e.target.id === "delivery_additional"){
+ if(e.target.value.length > 0) addSuccess(e.target);
+ else clearValidation(e.target);
+ };
+ }, 300)
});
// Funkcje walidacji poszczególnych elementów
function validateStreet(streetEl){
-const streetParts = streetEl.value.split(" ");
-const addressNumber = Number(streetParts[streetParts.length-1][0]);
-if(streetEl.value.length === 0 || (streetEl.value.length > 0 && (!addressNumber || streetParts.length < 2))){
- addErrorMessage(streetEl,
);
- return false;
-}else{
- addSuccess(streetEl);
- return true;
-}
+ const streetParts = streetEl.value.split(" ");
+ const addressNumber = Number(streetParts[streetParts.length-1][0]);
+ if(streetEl.value.length === 0 || (streetEl.value.length > 0 && (!addressNumber || streetParts.length < 2))){
+ addErrorMessage(streetEl,
);
+ return false;
+ }else{
+ addSuccess(streetEl);
+ return true;
+ }
}
//////////////////////////////////////////////////////////////////
function validatePhone(phoneEL){
-const deliveryType = phoneEL.id.split("_")[0];
-const chosenRegion = document.getElementById(`${deliveryType}_region`).value;
-const phoneValidationinfo = countryPhoneData[chosenRegion];
+ const chosenCountry = phoneEL.closest(".--phone").querySelector(".phone_number__code_number").value;
+ const phoneValidationInfo = countryPhoneData.find(phoneData=>+phoneData.country_code === +chosenCountry);
+
-
-const phoneNumber = phoneEL.value.replaceAll(" ","");
-// Sprawdzenie czy cos jest wpisane
-if(phoneNumber.length===0 || !Number(phoneNumber)){
- addErrorMessage(phoneEL,
);
- return false;
-}else{
- let phoneError = false;
- let phoneErrorMessage = "";
-
-
- // Sprawdzenie czy numer telefonu zaczyna sie odpowiednia liczba
- phoneBeginWithErrorNumbers = "";
- phoneBeginWithError = true;
- phoneValidationinfo.mobile_begin_with.forEach((el, index)=>{
- if(phoneNumber.toString().startsWith(el)) phoneBeginWithError = false;
-
- phoneBeginWithErrorNumbers += phoneValidationinfo.mobile_begin_with.length === 1 ? el : phoneValidationinfo.mobile_begin_with.length - 1 === index ? `${
} ${el}` : `${el}, `
- });
- if(phoneBeginWithError){
- phoneError = true;
- phoneErrorMessage += `${
} ${phoneBeginWithErrorNumbers}`;
- }
-
- // Sprawdzenie czy numer telefonu sklada sie z odpowiedniej ilosci cyfr
- if(!phoneValidationinfo.phone_number_lengths.includes(phoneNumber.length)){
- phoneLengthErrorNumbers = "";
- phoneValidationinfo.phone_number_lengths.forEach((el, index)=>{
- phoneLengthErrorNumbers += phoneValidationinfo.phone_number_lengths.length === 1 ? el : phoneValidationinfo.phone_number_lengths.length - 1 === index ? `${
} ${el}` : `${el}, `;
- });
- if(phoneError === true){
- phoneErrorMessage += ` ${
} ${
} ${phoneLengthErrorNumbers} ${
}`;
- }else{
- phoneErrorMessage += `${
} ${phoneLengthErrorNumbers} ${
}`;
- phoneError = true;
- }
- }
-
- if(phoneError){
- addErrorMessage(phoneEL, phoneErrorMessage);
+ const phoneNumber = phoneEL.value.replaceAll(" ","");
+ // Sprawdzenie czy cos jest wpisane
+ if(phoneNumber.length===0 || !Number(phoneNumber)){
+ addErrorMessage(phoneEL,
);
return false;
+ }else{
+ let phoneError = false;
+ let phoneErrorMessage = "";
+
+
+ // Sprawdzenie czy numer telefonu zaczyna sie odpowiednia liczba
+ phoneBeginWithErrorNumbers = "";
+ phoneBeginWithError = true;
+ phoneValidationInfo.mobile_begin_with.forEach((el, index)=>{
+ if(phoneNumber.toString().startsWith(el)) phoneBeginWithError = false;
+
+ phoneBeginWithErrorNumbers += phoneValidationInfo.mobile_begin_with.length === 1 ? el : phoneValidationInfo.mobile_begin_with.length - 1 === index ? `${
} ${el}` : `${el}, `
+ });
+ if(phoneBeginWithError){
+ phoneError = true;
+ phoneErrorMessage += `${
} ${phoneBeginWithErrorNumbers}`;
+ }
+
+ // Sprawdzenie czy numer telefonu sklada sie z odpowiedniej ilosci cyfr
+ if(!phoneValidationInfo.phone_number_lengths.includes(phoneNumber.length)){
+ phoneLengthErrorNumbers = "";
+ phoneValidationInfo.phone_number_lengths.forEach((el, index)=>{
+ phoneLengthErrorNumbers += phoneValidationInfo.phone_number_lengths.length === 1 ? el : phoneValidationInfo.phone_number_lengths.length - 1 === index ? `${
} ${el}` : `${el}, `;
+ });
+ if(phoneError === true){
+ phoneErrorMessage += ` ${
} ${
} ${phoneLengthErrorNumbers} ${
}`;
+ }else{
+ phoneErrorMessage += `${
} ${phoneLengthErrorNumbers} ${
}`;
+ phoneError = true;
+ }
+ }
+
+ if(phoneError){
+ addErrorMessage(phoneEL, phoneErrorMessage);
+ return false;
+ }
}
-}
-addSuccess(phoneEL);
-return true;
+ addSuccess(phoneEL);
+ return true;
}
//////////////////////////////////////////////////////////////////
function validateNotEmpty(checkEl){
-if(checkEl.value.length < 1) {
- addErrorMessage(checkEl,
);
- return false;
-}
-else{
- addSuccess(checkEl);
- return true;
-}
+ if(checkEl.value.length < 1) {
+ addErrorMessage(checkEl,
);
+ return false;
+ }
+ else{
+ addSuccess(checkEl);
+ return true;
+ }
}
// Sprawdzenie loginu i hasla
function testLogin(){
-const login = document.querySelector(".register__login");
-if(login.value.trim().length < 1){
- addErrorMessage(login,
);
- return false;
-}
-else if(!/^[A-Za-z0-9@._-]*$/.test(login.value.trim()) || Number(login.value.trim()) || login.value.trim().length<3){
- addErrorMessage(login,
);
- return false;
-}else{
- addSuccess(login);
- return true;
-}
+ const login = document.querySelector(".register__login");
+ if(login.value.trim().length < 1){
+ addErrorMessage(login,
);
+ return false;
+ }
+ else if(!/^[A-Za-z0-9@._-]*$/.test(login.value.trim()) || Number(login.value.trim()) || login.value.trim().length<3){
+ addErrorMessage(login,
);
+ return false;
+ }else{
+ addSuccess(login);
+ return true;
+ }
}
function testPassword(){
-const repeatPassword = document.getElementById("repeat_password");
-const password = document.querySelector(".register__password");
-repeatPassword.value = password.value;
-if(password.value.trim().length < 1){
- addError(password);
- password.closest('.has-feedback').insertAdjacentHTML("beforeend", `
${ }. `);
- return false;
-}
-if(password.value.trim().length < 6){
- addError(password);
- password.closest('.has-feedback').insertAdjacentHTML("beforeend", `
${ }. `);
- return false;
-}else{
- addSuccess(password);
- return true;
-}
+ const repeatPassword = document.getElementById("repeat_password");
+ const password = document.querySelector(".register__password");
+ repeatPassword.value = password.value;
+ if(password.value.trim().length < 1){
+ addError(password);
+ password.closest('.has-feedback').insertAdjacentHTML("beforeend", `
${ }. `);
+ return false;
+ }
+ if(password.value.trim().length < 6){
+ addError(password);
+ password.closest('.has-feedback').insertAdjacentHTML("beforeend", `
${ }. `);
+ return false;
+ }else{
+ addSuccess(password);
+ return true;
+ }
}
// Obsługa przesuwających się labelek
document.querySelector("body").addEventListener("change", (e) => {
-if(e.target.classList.contains("f-control")){
- if(e.target.value.length > 0) e.target.classList.add("focused");
- else e.target.classList.remove("focused");
-}
+ if(e.target.classList.contains("f-control")){
+ if(e.target.value.length > 0) e.target.classList.add("focused");
+ else e.target.classList.remove("focused");
+ }
})
//////////////////////////////////////////////////////////////////////
// DOSTAWA I PŁATNOSĆI
const SET_REGION = (setRegionInput) => JSON.stringify({
-query: `mutation {
- setRegion(${setRegionInput}) {
- status
- error {
- code
- message
+ query: `mutation {
+ setRegion(${setRegionInput}) {
+ status
+ error {
+ code
+ message
+ }
}
- }
-}`,
+ }`,
});
// Zmiana regionu dostawy
async function changeRegion(payAndDelData = null) {
-
-console.log("fn: changeRegion()")
-// Pobranie informacji o regionie z formularza
-const clientRegion = document.getElementById("client_region").value;
-const deliveryRegion = document.getElementById("deliver_to_billingaddr").checked ? document.getElementById("delivery_region").value : clientRegion;
-
-// Zmiana regionu
-const regionStatus = await this.fetchData({
- data: SET_REGION(`SetRegionInput: {
- billingRegionId: ${clientRegion},
- deliveryRegionId: ${deliveryRegion},
- areForced: true
- }`),
- linkParameter: '?mutation=setRegion',
-});
-const { status } = regionStatus?.data?.setRegion || {};
-if (status !== 'success') return alert("Błąd podczas zmiany kraju. Przeładuj stronę jeszcze raz.");
-
-// Ustaw numer kraju przy telefonie
-setPhoneCountryNumber("client", clientRegion);
-setPhoneCountryNumber("delivery", deliveryRegion);
-// Waliduj numery telefonu dla kraju
-if(!firstTimeLoadPage){
- validatePhone(document.getElementById("client_phone"));
- validatePhone(document.getElementById("delivery_phone"));
-}
-
-
-// Pobranie nowych metod płatności i dostaw
-getNewPaymentsAndDeliveries(payAndDelData);
+ console.log("fn: changeRegion()")
+ // Pobranie informacji o regionie z formularza
+ const clientRegion = document.getElementById("client_region").value;
+ const deliveryRegion = document.getElementById("deliver_to_billingaddr").checked ? document.getElementById("delivery_region").value : clientRegion;
+
+ // Zmiana regionu
+ const regionStatus = await this.fetchData({
+ data: SET_REGION(`SetRegionInput: {
+ billingRegionId: ${clientRegion},
+ deliveryRegionId: ${deliveryRegion},
+ areForced: true
+ }`),
+ linkParameter: '?mutation=setRegion',
+ });
+ const { status } = regionStatus?.data?.setRegion || {};
+ if (status !== 'success') return alert("Błąd podczas zmiany kraju. Przeładuj stronę jeszcze raz.");
+
+ // Waliduj numery telefonu dla kraju
+ if(!firstTimeLoadPage){
+ validatePhone(document.getElementById("client_phone"));
+ validatePhone(document.getElementById("delivery_phone"));
+ }
+
+
+ // Pobranie nowych metod płatności i dostaw
+ getNewPaymentsAndDeliveries(payAndDelData);
};
-function setPhoneCountryNumber(deliveryType, countryId){
-const phoneEl = document.getElementById(`${deliveryType}_phone`).closest(".--phone").querySelector(".phone_number__code_number");
-phoneEl.value = countryPhoneData[countryId].country_code;
-}
const PAYMENTS_AND_DELIVERY_METHODS = () => JSON.stringify({
- query: `query{
- paymentsMethod {
- payments {
- id
- name
- icon
- methodAsGroup
- paymentChannel {
+ query: `query{
+ paymentsMethod {
+ payments {
id
name
icon
- }
- paymentSystem {
- id
- name
- }
- additionalClientCost {
- costPercent
- costFixedAmount {
- value
- }
- minAmount {
- value
- }
- }
- terms {
- supportsPaymentInitiationService
- paymentInitiationServiceTerms {
+ methodAsGroup
+ paymentChannel {
id
- type
- clause
+ name
+ icon
+ }
+ paymentSystem {
+ id
+ name
+ }
+ additionalClientCost {
+ costPercent
+ costFixedAmount {
+ value
+ }
+ minAmount {
+ value
+ }
+ }
+ terms {
+ supportsPaymentInitiationService
+ paymentInitiationServiceTerms {
+ id
+ type
+ clause
+ }
}
}
- }
- paymentsGroup {
- id
- name
- icon
- }
- paymentsGroupTerms {
- groupId
- type
- clausePrefix
- clause
- }
- settings {
- defaultPaymentMethodId
- }
- }
- shipping(ShippingInput: { mode: basket }) {
- settings {
- checked
- orderDivisionEnabled
- }
- shipping {
- availability
- calendar
- calendarOption
- comment
- prepaid
- minworthReached
- workingDays
- pointsSelected
- pointsEnabled
- pointsCost {
- value
- formatted
- }
- minworth {
- formatted
- }
- courier {
+ paymentsGroup {
id
- fullId
- icon
name
- pickupPoint
- companyKey
- companyGroupKey
+ icon
}
- cost {
- value
- formatted
+ paymentsGroupTerms {
+ groupId
+ type
+ clausePrefix
+ clause
}
- deliveryTime {
- time {
- days
- }
- weekDay
- weekAmount
- today
+ settings {
+ defaultPaymentMethodId
}
}
- shippingTime {
- shippingTime {
- time {
- days
- hours
- minutes
- }
+ shipping(ShippingInput: { mode: basket }) {
+ settings {
+ checked
+ orderDivisionEnabled
+ }
+ shipping {
+ availability
+ calendar
+ calendarOption
+ comment
+ prepaid
+ minworthReached
workingDays
- weekDay
- weekAmount
- today
- }
- unknownTime
- }
- shippingTimeLater {
- shippingTime {
- time {
- days
- hours
- minutes
+ pointsSelected
+ pointsEnabled
+ pointsCost {
+ value
+ formatted
+ }
+ minworth {
+ formatted
+ }
+ courier {
+ id
+ fullId
+ icon
+ name
+ pickupPoint
+ companyKey
+ companyGroupKey
+ }
+ cost {
+ value
+ formatted
+ }
+ deliveryTime {
+ time {
+ days
+ }
+ weekDay
+ weekAmount
+ today
}
- workingDays
- weekDay
- weekAmount
- today
}
- unknownTime
+ shippingTime {
+ shippingTime {
+ time {
+ days
+ hours
+ minutes
+ }
+ workingDays
+ weekDay
+ weekAmount
+ today
+ }
+ unknownTime
+ }
+ shippingTimeLater {
+ shippingTime {
+ time {
+ days
+ hours
+ minutes
+ }
+ workingDays
+ weekDay
+ weekAmount
+ today
+ }
+ unknownTime
+ }
+ nonStandardizedInfo {
+ active
+ isAllowed
+ courierId
+ }
}
- nonStandardizedInfo {
- active
- isAllowed
- courierId
- }
- }
- }`,
- });
+ }`,
+ });
// Załadowanie metod dostaw i płatności
async function getNewPaymentsAndDeliveries(data = null) {
-// Wyczyszczenie zapisanych poprzednich metod płatności
-prevPayment = undefined;
-prevShipping = undefined;
-// Wyczyszczenie punktow odbioru
-deliveryPickupPoints.length = 0;
-app_shop.fn.ajaxLoadSite(1);
-
-// Dane do uzupełnienia przy edycji
-let paymentValue, deliveryId;
-if(data){
- paymentValue = data.paymentMethodId;
- deliveryId = `item_${data.deliveryMethodId}-${paymentValue === "cash" ? "0" : "1"}`;
-}
-
-const paymentsAndDeliveryData = await fetchData({data: PAYMENTS_AND_DELIVERY_METHODS()});
-
-// error gdyby nie było produktów
-if(paymentsAndDeliveryData.errors){
- paymentsAndDeliveryError(paymentsAndDeliveryData.errors);
-}
-
-// Dane do zaznaczenia płatności i dostawy jeśli wcześniej na tej przeglądarce(localStorage) było już zamówienie
-const prevOrderInfo = JSON.parse(localStorage.getItem("prevOrderInfo"));
-
-// dostawy za pobraniem
-let dvpMarkup = "";
-// dostawy za przedłatą
-let prepaidMarkup = "";
-let dvpPaymentMethod = false;
-
-if(paymentsAndDeliveryData.data.shipping.shipping){
- paymentsAndDeliveryData.data.shipping.shipping.forEach(deliveryMethod=>{
- if(deliveryMethod.prepaid === "dvp"){
- dvpMarkup += prepareDeliveryMarkup(deliveryMethod, deliveryId);
- dvpPaymentMethod = true;
- }else{
- prepaidMarkup += prepareDeliveryMarkup(deliveryMethod, deliveryId);
- }
- });
-}else{
- prepaidMarkup += `
`
-}
-// Wstawienie metod dostaw na strone
-const deliveryMarkup = `
${prepaidMarkup}
${dvpMarkup}
`;
-const previousDeliveries = document.getElementById("osc_order1");
-if(previousDeliveries) previousDeliveries.remove();
-document.getElementById("bm-oscop-deliveries").insertAdjacentHTML("beforeend",deliveryMarkup);
-
-
-// płatności
-let prepaidsMethodMarkup = "";
-let prepaidsTransferMarkup = createPaymentContainerMarkup("transfer");
-let prepaidsCardMarkup = createPaymentContainerMarkup("card");
+ // Wyczyszczenie zapisanych poprzednich metod płatności
+ prevPayment = undefined;
+ prevShipping = undefined;
+ // Wyczyszczenie punktow odbioru
+ deliveryPickupPoints.length = 0;
+ app_shop.fn.ajaxLoadSite(1);
+
+ // Dane do uzupełnienia przy edycji
+ let paymentValue, deliveryId;
+ if(data){
+ paymentValue = data.paymentMethodId;
+ deliveryId = `item_${data.deliveryMethodId}-${paymentValue === "cash" ? "0" : "1"}`;
+ }
+
+ const paymentsAndDeliveryData = await fetchData({data: PAYMENTS_AND_DELIVERY_METHODS()});
+
+ // error gdyby nie było produktów
+ if(paymentsAndDeliveryData.errors){
+ paymentsAndDeliveryError(paymentsAndDeliveryData.errors);
+ }
+
+ // Dane do zaznaczenia płatności i dostawy jeśli wcześniej na tej przeglądarce(localStorage) było już zamówienie
+ const prevOrderInfo = JSON.parse(localStorage.getItem("prevOrderInfo"));
+
+ // dostawy za pobraniem
+ let dvpMarkup = "";
+ // dostawy za przedłatą
+ let prepaidMarkup = "";
+ let dvpPaymentMethod = false;
+
+ //Pobranie startowych form dostaw/płatności jeśli nie ma
+ let startingPaymentMethod;
+ if(!deliveryId && paymentsAndDeliveryData?.data?.shipping?.settings?.checked){
+ deliveryId = `item_${paymentsAndDeliveryData.data.shipping.settings.checked}`;
+ startingPaymentMethod = paymentsAndDeliveryData.data.shipping.settings.checked.split("-")[1]
+ }
-// Sprawdzenie czy sklep ma możliwość płatności bankiem/kartą
-let ifPaymentTransfer = false;
-let ifPaymentCard = false;
-
-paymentsAndDeliveryData.data.paymentsMethod.payments.forEach(method => {
- const checkedPayment = paymentValue === method.id;
+ // DOSTAWY
+ if(paymentsAndDeliveryData.data.shipping.shipping){
+ paymentsAndDeliveryData.data.shipping.shipping.forEach(deliveryMethod=>{
+ if(deliveryMethod.prepaid === "dvp"){
+ dvpMarkup += prepareDeliveryMarkup(deliveryMethod, deliveryId);
+ dvpPaymentMethod = true;
+ }else{
+ prepaidMarkup += prepareDeliveryMarkup(deliveryMethod, deliveryId);
+ }
+ });
+ }else{
+ prepaidMarkup += `";
-prepaidsCardMarkup += "
";
-
-
-if(dvpPaymentMethod) prepaidsMethodMarkup += `
-
-
+ // Sprawdzenie czy sklep ma możliwość płatności bankiem/kartą
+ let ifPaymentTransfer = false;
+ let ifPaymentCard = false;
+
+ //PŁATNOŚCI
+ if(paymentsAndDeliveryData.data.paymentsMethod.payments.length > 0){
+ paymentsAndDeliveryData.data.paymentsMethod.payments.forEach(method => {
+ // Zaznaczenie na start
+ let checkedPaymentForMarkup = paymentValue === method.id;
+ if(!checkedPaymentForMarkup && startingPaymentMethod === "1" && method.id !== 2 && method.paymentChannel.id !== "bank" && method.paymentChannel.id !== "card" && method.paymentChannel.id !== "installment") checkedPaymentForMarkup = true;
+
+ const markup = `
+
+
-
}">
+
- ${ }
+ ${method.name}
- `;
- // Wstawienie metod płatności na stronę
- const previousPayments = document.getElementById("osc_prepaids_method");
- if(previousPayments) previousPayments.remove();
- document.getElementById("bm-oscop-payments").insertAdjacentHTML("beforeend", `
${ifPaymentTransfer ? prepaidsTransferMarkup : ""}${ifPaymentCard ? prepaidsCardMarkup : ""}${prepaidsMethodMarkup}
`);
-
- // Wstawienie błędu jeśli metody płatności są puste
- 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(`#bm-oscop-section2 input#${deliveryId}`);
- const pointExists = await checkPrevPickupPoint(
- selectedShipping.parentElement.querySelector(".fselectedPoint"),
- data.pickupData.id,
- data.pickupData.name,
- `${data.pickupData.address.street} ${data.pickupData.address.buildingAndHouseNumber}`,
- 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;
- 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
- if(prevPaymentMethod.id !== "payitem_2" && prevPaymentMethod.group !== "card" && prevPaymentMethod.group !== "transfer"){
- document.getElementById(prevPaymentMethod.id).click();
- }
- else if(prevPaymentMethod.group === "card" || prevPaymentMethod.group === "transfer"){
- const paymentMethodId = prevPaymentMethod.id.replace("-clone", "");
- cloneElement(document.getElementById(paymentMethodId));
- }
-
- // POPRZEDNIA DOSTAWA
- const prevDeliveryMethod = prevOrderInfo.prevDeliveryMethod;
- const prevDeliveryInput = document.querySelector(`input#${prevDeliveryMethod.id}`);
-
- // Sprawdzenie czy istnieje metoda dostawy (na wypadek gdyby była usunięta lub klient zamawiał do innego kraju)
- if(prevDeliveryInput){
- // Sprawdzenie czy dostawa miała punkt odbioru
- if(prevDeliveryMethod.fselectedPoint){
- const pointExists = await checkPrevPickupPoint(
- prevDeliveryInput.parentElement.querySelector(".fselectedPoint"),
- prevDeliveryMethod.fselectedPoint.deliveryPointId,
- prevDeliveryMethod.fselectedPoint.name,
- prevDeliveryMethod.fselectedPoint.street,
- prevDeliveryMethod.fselectedPoint.city,
- prevDeliveryMethod.fselectedPoint.zipcode,
- prevDeliveryMethod.fselectedPoint.courierId
- )
- if(pointExists) prevDeliveryInput.checked = true;
- }else{
- prevDeliveryInput.checked = true;
+ ${2 == method.id ? '
' : ""}
+
`;
+
+ // Przygotowanie metod dla przelewów online/kart płatności
+ if(method.paymentChannel.id === "transfer") {
+ prepaidsTransferMarkup += markup;
+ ifPaymentTransfer = true;
+ }
+ else if(method.paymentChannel.id === "card"){
+ prepaidsCardMarkup += markup;
+ ifPaymentCard = true;
+ }
+ else{
+ prepaidsMethodMarkup += markup;
+ // Okienko vouchera
+ if(method.id === 2){
+ prepaidsMethodMarkup += `
+
+
+ Bon towarowy
+ Zapłać za zakupy bonem towarowym
+
+
+
+ ${ }
+
+
Jeżeli posiadasz więcej bonów, możesz wpisać ich numery przy podsumowaniu zamówienia.
+
`
}
- changeDeliveryInfoObject(deliveryDateInfo, prevDeliveryInput);
}
+ });
+ }else if(!dvpPaymentMethod){
+ prepaidsMethodMarkup += ` ";
+ prepaidsCardMarkup += "