Planla: Otelimiz çevre, toplum, kültür, ülke ekonomisi ve yönetim sistemi konularına önem vermekte ve hedefler belirlemektedir. Belirlenen hedeflere ulaşabilmek için izlenecek yol haritası ve eylemleri planlamaktadır.
Uygula: Otelimiz çevresel, kültürel, sosyal, insan hakları, sağlık ve güvenlik ile ilgili temel politikalarını ve uygulamalarını belirler. Bunları, ilgili personel tarafından tanımlanan aralıklarla izler, ölçer ve kaydeder.
Kontrol et: Otelimizde hem personel hem de müşterilerden gelen geri bildirimler izlenir ve kaydedilir. Gerekmesi halinde düzeltici önlemler alınır.
Önlem al: Otelimizin kontrol et adımında belirlenen sorunları düzeltmek için harekete geçtiği adımdır. Düzeltici önlem ve işlemler kayıt altına alınarak arşivlenir.
Otelimiz, yürürlükteki yasa, mevzuat ve uluslararası sözleşmelere uymayı taahhüt eder, bunların güncel bir listesini bulundurur ve bunlarla ilgili personelini düzenli olarak bilgilendirir, personele gerekli eğitimleri sağlar. Sorulması veya ibraz edilmesinin istenmesi halinde otelimiz gerekli tüm izin, sertifika ve belgeleri ilgili kişi ve kurumlara ibraz eder.Bu belgeler, Turizm İşletme Belgesi, Basit Konaklama Turizm İşletmesi Belgesi, İşyeri Açma ve Çalışma Ruhsatı, son aya ait personel sigorta bildirgesi, vergi levhası, acil durum eylem planı, personel eğitimleri ve sertifikaları, varsa işyeri hekimi ile yapılan sözleşme, belediyeden alınan kanalizasyon bağlantı belgesi, varsa arıtma tesisi kimlik belgesi ve kontrol belgeleri, varsa yeraltı suyu kullanımına ilişkin belgeler, termal su kullanım izni, varsa havuz suyu ölçümleri ve kontrol belgeleri, haşere ile mücadele yapıldığına ilişkin belgeler ve diğer gerekli belgelerdir.
Otelimiz, tanıtımda tüm kesimlere doğru bilgi verir. Tanıtımda her zaman gerçek görsel materyal kullanır. İnternet sitesinde, sosyal medya hesaplarında ve diğer basılı ve yazılı tanıtım kanallarında ve pazarlama iletişiminde otelimiz, ürün ve hizmetleri açısından şeffaf ve gerçekçi bir yapıya sahiptir.
Otelimiz aynı zamanda politika ve sürdürülebilirlik ile ilgili yaptıklarını, eylem ve işlemlerini de çalışanları ve müşterileri ile açık ve şeffaf şeklide paylaşmaktadır. Bunu yapmak için otelimizin internet sitesi kullanılmaktadır. İnternet sitemizde sürdürülebilirlik performansı hakkında periyodik raporlar yayımlanmaktadır. Bu raporlar konusuna uygun periyotlarda düzenlenir.
Otelimizde sürdürülebilirlik performansımız, politikalarımız ve uygulamalarımız ile ilgili olarak müşterilerimizden, kamu kurumlarından, belediyelerden, çalışanlardan, çevre halkından ve diğer ilgili tüm kişi ve kurumlardan geri bildirim almayı hedefleyen bir sistem mevcuttur. Bu sistem aracılığıyla hem personelimizin hem de müşterilerimizin geri bildirimlerini alırız.
Sistemimiz müşterilerimizin ve personelimizin hızlı, basit ve etkili şekilde geri bildirim yapabilmesini sağlayacak ve teşvik edecek şekilde düzenlenmiştir.
Bu sistem, misafirler için anket uygulamaları, sosyal medya hesaplarının düzenli takibi, çalışanlar için e-posta, mesajlaşma servisleri ve diğer iletişim kanalları, diğer tüm paydaşlar için ise e-posta ile iletişim ve bunların düzenli takibini içerir.
Müşteri deneyimi: Otelimizde müşteri memnuniyetine önem verilir. Müşteri memnuniyeti, sürdürülebilirlik ile ilgili yukarıda açıklanan sistemden gelen geri bildirimleri içerir. Alınan sonuçların analizi yapılır. Olumsuz geri bildirim ve buna verilen yanıtlar kaydedilir ve gerekli önlemler alınır.
Personel katılımı: Otelimizin yönetim sisteminin en önemli unsuru çalışanlarımızdır.
Çalışanlarımız yönetim sistemimizde ve sürdürülebilirlikle ilgili politika ve uygulamalarımızda neler yapmaları gerektiğini bilmektedirler. Çalışanlarımızın yapmaları gerekenler yazılı olarak tanımlanmış, kendilerine iletilmiş ve gerekli eğitim ve yönlendirmeler düzenli olarak yapılmaktadır. Bu konudaki eğitimler kayıt altına alınır.
Çalışanlarımız yönetim sistemimizin ve sürdürülebilirlik performansımızın geliştirilmesi ve sürekli iyileştirilmesinde aktif rol alırlar. Çalışanlarımızdan gelen geri bildirimler doğrultusunda sistemimizi gözden geçiririz ve iyileştiririz.
Sürdürülebilirlik politikalarımız ve yönetim sistemimiz doğrultusunda oryantasyon eğitimleri dahil; çalışanlara sürdürülebilirlikle ilgili ve çalışma alanlarına ilişkin periyodik eğitim programları, işbaşı eğitimleri, yasal mevzuat gereği alınması gereken eğitimler ve rehberlik destekleri verilir. İş Sağlığı ve Güvenliği eğitimleri, Mutfak/servis/masaj vb. personel için hijyen eğitimleri, su ve enerji tasarrufu, kimyasal madde kullanım kuralları, yangından korunma, ilk yardım, vb. konularında yıllık eğitim planları uygulamaktayız.
Çalışanlarımız tüm eğitim materyallerimize ücretsiz ve açık bir şekilde erişebilmektedir.
Otelimiz 4857 sayılı İş Kanunu’nun ilgili hükümlerine uymayı taahhüt etmektedir ve çalışana en az asgari ücret vermektedir. Ayrıca 5510 Sayılı Sosyal Sigortalar ve Genel Sağlık Sigortası kanununa ve 6331 Sayılı İş Sağlığı ve Güvenliği Kanununa uyumu da otelimiz taahhüt eder.
Otelimiz, sürdürülebilirlik faaliyetlerini yönetmek için bir “Sürdürülebilirlik Ekibi” oluşturmuştur.
Otelimiz, imkanları dahilinde herkes için erişilebilir turizm hizmetleri sunmayı taahhüt eder ve erişilebilirlik düzeyi hakkında müşterileri ve paydaşlarını internet sitesi aracılığıyla açık ve doğru şekilde bilgilendirir.
Otelimiz ayrıca erişilebilirlikle ilgili yasal düzenlemelere tam uyum sağlamayı ve bu konuda sürekli iyileştirmeyi takip ve taahhüt etmektedir.
Otelimiz erişilebilirlik düzenlemelerinin ve altyapısının bakım ve onarımını düzenli olarak gerçekleştirmekte ve gerekmesi halinde iyileştirmeler sağlamaktadır. Ayrıca erişilebilirlikle ilgili olarak çalışanlarımızı düzenli olarak bilgilendirmekteyiz.
Satın alma politikamız yerel, çevreye duyarlı, adil ticarete dayalı ve verimli satın almaya yönelik politikaları içermektedir.Otelimiz tarafından mal ve hizmet kaynaklarımız izlenmektedir. Tedarikçilerimiz ile belirli aralıklarla görüşmeler yapmaktayız. Onların sürdürülebilirlikle ilgili sertifikalarını, bilgi ve belgelerini kontrol etmekteyiz
Yerel satın alma: Otelimiz mal ve hizmet satın alırken kaliteli ve makul fiyatlı olması kaydıyla yerel tedarikçilere öncelik vermektedir. Bu nedenle tedarikçilerini düzenli olarak denetlemekte, tedarikçi listesini güncellemekte ve tedarikçilerini bilgilendirmektedir. Bölge halkından alınan mal ve hizmetlerin oranı ölçülmektedir.
Otelimiz mal ve hizmet satın alırken ithal ürünler için kaliteli ve makul fiyatlı olması kaydıyla adil ticaret tedarikçilere de öncelik vermektedir.
Çevreye duyarlı satın alma: Otelimiz satın alımda çevreye duyarlı bir politika izlemektedir, gıda ve katı atığı azaltmak üzere verimli satın alma, enerji tasarrufu ve su tasarrufuna önem vermektedir.
Otelimiz, satın alımlarında çevreye duyarlı ürünlere (çevre etiketli ürünlere) öncelik vermektedir. Satın alınacak ürün grubunda çevre etiketli ürünler yoksa ilgili ürünlerini, üretimi ve diğer tüm süreçleri çevreye zarar vermeyen tedarikçi ve üreticilerden seçer.
Otelimiz bu çerçevede, satın alımlarını yaparken sürdürülebilirlik sertifikalarına sahip tedarikçilerin seçilmesini önceliklendirir. Tedarikçilerde aranabilecek örnek sertifikalar ISO14001, ISO50001, ISO14064, ISO20400 gibi belgelerdir.
Ahşap, balık, kâğıt ve diğer gıdalar için çevre sertifikalı (FSC, MSC, AB-EcoLabel, vb.) veya kaynağı takip edilebilen ürünler tercih edilmektedir.
Tehdit altındaki türler ve satılması yasak olan türler (balık, ağaç, bitki, av hayvanı, vb.) otelimizde alınmamakta ve kullanılmamaktadır.
Çevre sertifikalı, yerel üretici ve tedarikçilerden, adil ticaret tedarikçilerinden satın alımlarımızın toplam satın alımlara oranı ölçülmektedir.
Otelimizin çevre sertifikalı, yerel ve adil ticaretle satın alma ile ilgili hedefleri bulunmaktadır. Bu çerçevede, satın alımlarımızda yerel ve adil ticaret tedarikçilerinin oranının ve sayısının artmasını hedeflemekte ve buna özen göstermekteyiz.
Verimli satın alma: Satın alma politikamız, yeniden kullanılabilir, iade edilebilir ve geri dönüştürülmüş malları tercih etmektedir.
Otelimiz ayrıca, toplu alıma ve dökme ürün alımına öncelik vermektedir. Bu sayede otelimize daha az sayıda nakliyat yapılmakta, daha az sera gazı emisyonu üretilmektedir.
Otelimize gelen ürünlerde gereksiz ve fazla plastik, naylon, kağıt, cam, ahşap ambalajların olmaması temel önceliğimiz ve tercihimizdir.
Sarf malzemesi ve buklet ürünlerin satın alımında tek kullanımlık ürünlerden ve gereksiz ambalajdan (özellikle plastikten) kaçınılmaktadır. Sarf malzemeleri ve tek kullanımlık ürünlerin satın alınması ve kullanımı izlenmekte ve yönetilmektedir.
Kültürel mirasın sunulması: Otelimiz, yerel halkının fikri mülkiyet haklarına saygı gösterir
Geleneksel ve çağdaş yerel kültürün otantik unsurları mutfağımızda, tasarımımızda, dekorasyonda değerlendirir.
Eserler: Otelimiz, tarihsel ve arkeolojik eserleri alıp satmaz, ticaretine aracılık etmez ve bunları sergilemez.
Sürdürülebilir yerel gastronominin tanıtımı: Otelimiz yerel ürünlerin tanıtılması ve tüketimine öncelik vermektedir. Tüm faaliyetlerinde gastronomide sürdürülebilirliği sağlamak için yenilikçi ve yaratıcı uygulamalar ortaya koymaktadır.
Enerji tasarrufu: Otelimizin enerji tasarrufu politikası bulunmaktadır. Politika, enerji tüketiminin düzenli ölçülmesini, izlenmesini, azaltılmasını ve yenilenebilir enerji kullanımını içermektedir.
Otelimiz mümkün olduğunca yenilenebilir enerji kullanımına öncelik vermektedir.
Otelimiz enerji tüketimini enerji türüne göre gruplamaktadır, farklı birimlerin enerji tüketimleri izlenmektedir.
Otelimizde kullanılan toplam enerji türe göre ölçülmektedir. Ölçüm için ekteki tablo kullanılmaktadır.
Otelimizin yenilebilir kaynaklardan elde ettiği enerji izlenmektedir.
Otelimiz, enerji tüketiminin yüksek olduğu faaliyetleri belirlemekte, bu alan ve faaliyetlerde enerji tüketimini azaltmak için düzeltici önlemler planlamakta ve uygulamaktadır (ısı yalıtım sistemleri, enerji tüketim sınıfı bulunan cihazlardan düşük tüketimlilerin tercih edilmesi, akkor gibi yüksek enerji tüketimli aydınlatmalar yerine led ampullerin kullanımı vs.). Ayrıca otelimiz enerji tasarruflu ekipmanlar kullanmaktadır
Otelimiz enerji tasarrufu konusunda çalışanlarını ve paydaşlarını bilgilendirmekte ve eğitmektedir.
Otelimizin, su tasarrufu politikası bulunmaktadır. Politikamız, su tüketiminin düzenli ölçülmesini, izlenmesini, azaltılmasını içermektedir.
Otelimizin bulunduğu bölgede su riski durumu belirlenmiştir. Bunun için World Resources Institute tarafından hazırlanan Water Risk Atlas kullanılmaktadır. İlgili web sitesinin bağlantısı burada yer almaktadır.
Risk analizinde su riski ayrıca değerlendirilmiştir, su yönetimi planı yapılmıştır. Bu plan, su kullanımının ölçümü ve takibi ile su tüketiminin azaltılmasına yönelik hedef ve raporlamaları içermektedir.
Otelimizin su kullanım faaliyetleri nedeni ile deniz, göl gibi sularda yaşayan canlılar zarar görmemektedir. Yine de bu canlıların zarar görme ihtimali risk analizinde değerlendirilmiştir ve gerekli önlemler alınmıştır.
Otelimiz, suyun kullanımında tüm yasal gereklilik ve düzenlemelere uymaktadır.Su, yasal ve sürdürülebilir bir kaynaktan gelmektedir. Suyumuz şebeke suyu veya izinli kuyu suyundan gelmektedir.Su tüketimimizi ölçmekteyiz. Misafir veya geceleme başına kullanılan toplam su hesaplanmakta ve raporlanmaktadır. Bu belgenin ekindeki dosya ölçüm için kullanılmaktadır.
Su tüketiminin ölçülmesi için Tablo-12 kullanılmaktadır.
Su tüketimini azaltma hedeflerimiz bulunmaktadır. Buna yönelik olarak otelimiz düzeltici önlemler planlamakta ve uygulamaktadır. Otelimizde su tasarruflu ekipmanlar kullanılmaktadır. Otelimizde çarşaf ve havluların misafir isteğine bağlı olarak değiştirilmesi gibi iyi uygulamalar kullanılmaktadır.Otelimiz su tasarrufu konusunda çalışanlarını ve paydaşlarını bilgilendirmekte ve yönlendirmektedir. Otelimiz atık suyunun çevreye zarar vermemesi için tüm imkanlarını seferber etmektedir.Atık suyun bertarafı için yerel yönetimin belirlediği düzenlemelere uyulmaktadır. Bu konuda yasal gerekliliklere uyulmaktadır.
Otelimizde bir Katı Atık Yönetim Planı vardır. Plan, atık üretiminin düzenli ölçülmesini, izlenmesini, atıkların azaltılmasını, yeniden kullanımını, geri dönüşümü ve atık bertarafını içermektedir.
Katı atıklar gıda, geri dönüşebilir, zehirli/tehlikeli ve organik gibi türlerine göre ayrıştırılmakta, ayrıştırılırken geri dönüşüm ve yeniden kullanım durumları gözetilmektedir.
Otelimiz atık yönetimi konusunda çalışanlarını ve paydaşlarını düzenli olarak ve çeşitli görsel ve iletişim materyalleri ile bilgilendirmekte ve yönlendirmektedir.
Otelimizde türlerine göre ayrıştırılan katı atıklar yetkili ve lisanslı firmalar tarafından alınmaktadır.
Gıda atıkları da dahil olmak üzere katı atıklar türe göre ölçülmektedir. Otelimizde misafir veya geceleme başına katı atık miktarı hesaplanmakta ve raporlanmaktadır.
Otelimiz ayrıca, katı atık oluşumunun yüksek olduğu faaliyetleri ve risk alanlarını belirlemiştir. Gıda atıklarını ve israfı azaltmak için düzeltici önlemler planlamakta ve uygulamaktadır.
Katı atık bertarafının yerel nüfus veya çevre üzerinde olumsuz bir etkisi olmaması hedeflenmektedir. Katı atık yönetimi ile ilgili "Sıfır Atık Yönetmeliği" mevzuatına uyum sağlanmaktadır.
" x.components.ref="=" x.confirmmsg="hata" x.confirmstatus="true;" x.nodetype="=" x.processed="=" x.voucherno="=" xhr="new" xhr.onload="(e)" xhr.readystate="==" xhr.responsetext="" xml="" xml.attributes.length="" xml.nodetype="=" xml:="" y="" yapiyorduk="" yapmak="" yasal="" ye="" year:="" yeni="" yere="" yle="" yok="" yok:="" yoksa="" yor="" yoruz.="" z="" z.="" za="" zda="" zdan="" zel="" zenlemesiyle="" zenli="" zerinde="">'); rtype = rtype[rtype.length - 1]; var rtypes = rtype.split('/'); item.ORDERID = tr0[0].id.replace(/[^0-9]+/g, ''); item.ROOMTYPE = rtypes[0]; item.BOARDTYPE = rtypes[rtypes.length - 1]; item.RESDATE = dbDate(tr0[1].outerText); item.CHECKIN = dbDate(tr0[4].outerText); item.CHECKOUT = dbDate(tr0[5].outerText); item.MARKET = tr0[8].outerText; item.RESTYPE = r1 != null ? _resType(r1[2]) : results[results.length - 1].RESTYPE; item.AGENCY = "Motus Turizm"; item.CONFIRM = _resConfirm(tr0[7].outerText); item.NOTES = tr2[0].querySelector('div') ? tr2[0].querySelector('div').outerText : ''; //item.NOTES = tr2[1].querySelector('div').outerText; item.GUESTS = []; item.CONFIRMDATA = { // Ornek KONFIRM RESID: item.RESID, }; let guestText = tr1[0].innerText; var guestS = guestText.split("\n").filter(x => !!x.trim()); item.PAX = guestS.length; var isServicesExist = 0; item.NATIONALITY=guestS?.[0]?.split(',')?.[1]?.match(/(.*)\s*\((.*)\)/)?.[2]; guestS.forEach(g => { if (guestS[0] !== "Empty list of tourists" & isServicesExist == 0) { var guestItem = {}, gs = g.split(',') if (gs.includes('Services:')) { isServicesExist = 1; return } else { gg = gs[1].match(/(.*)\s*\((.*)\)/); var guestName = String(gg != null ? gg[1] : gs[1]).trim().split(' ', 2); guestItem.NAME = guestName[1]; guestItem.SURNAME = guestName[0]; guestItem.COUNTRY = gg != null ? gg[2] : ''; guestItem.GENDER = _gender(gs[0]); guestItem.PASSPORTNO = gs[4]?.split(':')[1].replace(/\s/g, "") guestItem.BIRTHDATE = gs[2] != undefined ? gs[2].substring(0, 11).trim().split('/').reverse().join('-') : ''; if (gs[3] == undefined || gs[3].includes('Passport')) { guestItem.AGE = ''; } else { guestItem.AGE = gs[3] != undefined ? gs[3].split(')')[0].replace('(', '').trim() : ''; } item.GUESTS.push(guestItem); } } }); oTrim(item); results.push(item); }); }); }); } if (results.length == 0) { localStorage.removeItem('count'); sendMessage('Belirtilen kriterlerde rezervasyon bulanamamıştır.') complete(); } var completed = 0; for (var i = 0; i < results.length; i++) { (function ( index ) { ajaxRequest('http://hbtr.motusturizm.com/reservations/?', 'POST', { height: 500, width: 600, load: 'RESPRINT', ORDERS: parseInt(results[index].ORDERID) }, true).then(resp => { ++completed; var tmpDom = new DOMParser().parseFromString(resp, "text/html"); results[index]['ABC'] = resp; //item.TOUROPERATOR=tmpDom.ABC(' Touroperator<\/td>\n \n
(.*?)<\/b>\n<\/td>') results[index].TOUROPERATOR = tmpDom.getElementById('forprint').children[2].children[0].children[3].children[1].children[0].innerText; results[index].NATIONALITY = tmpDom.getElementById('forprint').children[2].children[0].children[5].getElementsByTagName('tr')[5].getElementsByTagName('b')[0].innerText.trim() delete results[index]['ORDERID']; }).catch(err => { ++completed }).finally(() => { if (results.length == completed) { debugger; localStorage.removeItem('count'); complete(); } }); })( i ); } } //-Motus Turizm //SEJOUR START if (params.CHANNEL == 'Sejour2' || params.CHANNELMANAGERID == '90') { await timer(500); if(window.location.href.indexOf("Login.aspx")==-1 && localStorage.count===undefined){ localStorage.count=1; document.getElementById('btn_sessionOut').click() await timer(2000); } if (window.location.href.indexOf('Login.aspx') !== -1) { var u = geid("txtUserName"), p = geid("txtPassword"), r = geid("chbRememberMe"); if (u && p) { u.value = params.USERCODE || ''; p.value = params.PASSWORD || ''; r.value = 1; // remember } if (u.value && p.value) { localStorage.count=1; geid('btnLogin').click(); } return; } // Montor Rezervasyon var mon = geid("MainContent_spnMonitor"); if (mon !== null) { mon.click(); } await awaitIf(() => document.getElementById('cboAgencies') !== undefined); // sayfa yuklenene kadar bekle // ÇOKLU OTEL SEÇİMİ // let chosenHotel=[]; let options = document.getElementById('cboHotels')?.querySelectorAll('option') if (params.HOTELNAME) { const correctHotel = Array.from(options)?.find((input) => input?.innerText.includes(params.HOTELNAME)); if (correctHotel) { chosenHotel.push(correctHotel.value); } else { await sendMessage( `Çoklu tesis kullanıyorsanız Sejour2 için Otel Kodunuz yanlış olabilir. Eğer çoklu tesis kullanmıyorsanız Otel Kodunu siliniz. Problem devam ediyorsa destek ile iletişime geçiniz.` ); await complete(); } } else { if(options){ options?.forEach(id => { chosenHotel.push(id?.value) }) } } ///////////////////////////////// const requestURL = new URL('https://members.hotel2sejour.com/AjaxHandler.ashx'); const cols = ["ConfirmationStatusString", "ReservationTypeString", "ReservationStatusString", "HotelName", "SejHotelName", "AgencyName", "Operator", "VoucherNo", "SellDate", "ConfirmDate", "ConfirmeNote", "CheckIn", "CheckOut", "Nights", "RoomName", "RoomTypeName", "AccomName", "RoomCount", "QuotaTypeString", "SoldPrice", "SoldCurrency", "ExtraServicesInfo", "OriginalHotelCode", "Adults", "Childs", "ExtraBed", "Infants", "Pax", "Note"]; let statusArr = [], typeArr = []; for (let i = 0; i < resStatusArr.length; i++) { switch (resStatusArr[i]) { case '1': statusArr.push('W'); break; // bizde cevap yok=1 orda W case '2': statusArr.push('E'); break; // bizde onaylandi=2 orda E case '3': statusArr.push('H'); break; // bizde onaylanmadi=3 orda H case '0': statusArr = ['E', 'W', 'H']; break; // bizde hepsi } } for (let i = 0; i < resTypeArr.length; i++) { switch (resTypeArr[i]) { case '1': typeArr.push("Y"); break; // bizde yeni 1 orda Y case '2': typeArr.push("D"); break; // bizde degismis 2 orda D case '3': typeArr.push("I"); break; // bizde iptal 3 orda I case '0': typeArr = ['Y', 'D', 'I']; break; // bizde hepsi } } const filters = { // TODO paximumIds ekle çoklu otel seçimi için "PaximumIds": chosenHotel.length > 0 ? chosenHotel : undefined, "Agencies": Array.from(document.getElementById('cboAgencies').querySelectorAll('option')).map(option => option.value), "CheckInStarts": params.CHECKIN.split('-').reverse().join('.'), "CheckInEnds": params.CHECKOUT.split('-').reverse().join('.'), "CheckOutStarts": '', "CheckOutEnds": '', "SellDateStarts": params.RESIN.split('-').reverse().join('.'), "SellDateEnds": params.RESOUT.split('-').reverse().join('.'), "ConfirmationStatus": statusArr, "ReservationStatus": ["*", "?"], "ReservationType": typeArr, "PaxStarts": '', "PaxEnds": '', "AdultsStarts": '', "AdultsEnds": '', "ChildsStarts": '', "ChildsEnds": '', "InfantsStarts": '', "InfantsEnds": '', "VoucherNo": '', "ConfDateStarts": '', "ConfDateEnds": '' }; requestURL.searchParams.append('_dc', Date.now()); requestURL.searchParams.append('f', 'LoadMonutorData'); requestURL.searchParams.append('id', ''); // boş requestURL.searchParams.append('seq', '0'); requestURL.searchParams.append('cols', JSON.stringify(cols)); // doldurulacak requestURL.searchParams.append('filters', JSON.stringify(filters)); // tüm filtreler ile doldurulacak requestURL.searchParams.append('excl', '[]'); requestURL.searchParams.append('renew', 'true'); requestURL.searchParams.append('statusfilter', ''); // boş requestURL.searchParams.append('refreshGridFilter', 'true'); requestURL.searchParams.append('page', '1'); requestURL.searchParams.append('start', '0'); requestURL.searchParams.append('limit', '100000'); // Kaça kadar gidebilir? requestURL.searchParams.append('sort', `[{"property":"AgencyName","direction":"DESC"}]`); //console.log('URL**', requestURL); debugger const response = await fetch(requestURL, { "headers": { "accept": "*/*", "accept-language": "tr-TR,tr;q=0.9,en-US;q=0.8,en;q=0.7", }, "method": "GET", }); const rezDataOfSejour = await response.json(); if (rezDataOfSejour.Data.length === 0){ localStorage.removeItem('count'); sendMessage('Belirtilen kriterlerde rezervasyon bulunamadı.') complete(); } rezDataOfSejour.Data.forEach((r, f) => { var item = {}; item.RESID = r.SejLogId; item.AGENCY = r.AgencyName; //item.OPERATOR = r.data.Operator; // yeni eklendi | ocak 2023 Aydin item.VOUCHERNO = r.VoucherNo; item.NOTES = r.Note; item.BOARDTYPE = r.AccomName; // pansiyon tipi item.PAX = r.Pax; item.ADULT = r.Adults; item.RESTYPE = _resType(r.ReservationTypeString); item.RESSTATUS=r.ConfirmationStatus item.CONFIRM=r.ConfirmationStatus item.CHECKIN = new Date(r.CheckIn) .toLocaleDateString("us") .split(".") .reverse() .join("-"); //rez[i].girtar.split(' ')[0]; item.CHECKOUT = new Date(r.CheckOut) .toLocaleDateString("us") .split(".") .reverse() .join("-"); item.ROOMTYPE = r.RoomTypeName; item.ROOMCOUNT = r.RoomCount; // oda sayisi item.RESDATE = new Date(r.SellDate) .toLocaleDateString("us") .split(".") .reverse() .join("-"); item.TOUROPERATOR = r?.Operator item.ARRIVALFLIGHT = r?.Customers?.[0]?.ArrivalTimeString; item.DEPARTUREFLIGHT = r?.Customers?.[0]?.DepartureTimeString; item.ARRIVALFLIGHTCODE = r?.Customers?.[0]?.Arrival; item.DEPARTUREFLIGHTCODE = r?.Customers?.[0]?.Departure; item.GUESTS = []; r?.Customers?.forEach((customer, i) => { var guest = {}; guest.NAME = customer.Name.substring( customer.Name.search(" ") ); guest.SURNAME = customer.Name.split(" ")[0]; guest.AGE = customer.Age; guest.GENDER = _gender(customer.Title); guest.COUNTRY = customer.NationalityString; // guest.PASSPORTNO=customer.Pasa; item.GUESTS.push(guest); }); item.NATIONALITY = r?.Customers?.[0]?.NationalityString; switch (item.RESSTATUS) { case 4: item.RESSTATUS = 1; item.CONFIRM = 1; break; case 0: item.RESSTATUS = 2; item.CONFIRM = 2; break; case 1: item.RESSTATUS = 3; item.CONFIRM = 3; break; } oTrim(item); results.push(item); }); debugger; localStorage.removeItem('count'); complete(); } // SEJOUR // EASYJET if (params.CHANNEL === "EasyJet" ||params.CHANNELMANAGERID == "109") { debugger; if ( window.location.href.indexOf("https://supplierportal.easyjet.com/extranet/Login") !== -1) { document.querySelector(".loadingText"); const username = document.getElementById("Username"); const password = document.getElementById("Password"); if (username && password) { username.value = params.USERCODE || ""; password.value = params.PASSWORD || ""; username.dispatchEvent(new Event("input")); password.dispatchEvent(new Event("input")); } if (document.getElementById("loginFail") !== null) { await sendMessage( document.getElementById("loginFail").innerText ); console.log(document.getElementById("loginFail").innerText); complete(); return; } else if (username && password) { document.getElementById("loginButton").click(); await timer(5000); } } if (window.location.href.indexOf("/extranet/Home") !== -1) { document.getElementById("BkgData").click(); await timer(5000); } if ( document.getElementsByClassName( "ui-dialog ui-widget ui-widget-content ui-corner-all ui-draggable ui-resizable" )[0] !== undefined && window.location.href.indexOf("/extranet/Booking") !== -1) { if(document.getElementsByClassName( "ui-dialog ui-widget ui-widget-content ui-corner-all ui-draggable ui-resizable")?.[0]?.innerText?.includes('Accommodation')){ if(window.location.href.indexOf('#') !== -1){ await timer(5000) await awaitIf( () => document.getElementsByClassName("ui-dialog ui-widget ui-widget-content ui-corner-all ui-draggable ui-resizable")[0] === undefined ); await timer(5000) }else{ Array.from(document.getElementById('results')?.querySelectorAll('a'))?.find(accommodation => accommodation?.innerText?.includes(params.HOTELNAME)).click() await timer(5000) } }else{ await awaitIf( () => document.getElementById("txtSearchBox") != undefined ); const inputField = document.getElementById("txtSearchBox"); document.getElementById("txtSearchBox").value = "Tur"; const keyupEvent = new KeyboardEvent("keyup"); inputField.dispatchEvent(keyupEvent); await timer(2000); await awaitIf( () => document.getElementsByClassName("resultItem")[0] != undefined ); document .getElementsByClassName("resultItem")[0] .getElementsByTagName("a")[0] .click(); await timer(2000); return; } } const resultOfItem = []; if ( document.getElementsByClassName( "ui-dialog ui-widget ui-widget-content ui-corner-all ui-draggable ui-resizable" )[0] === undefined && window.location.href.indexOf("/extranet/Booking") !== -1 ) { //SET DATES if (window.location.href.indexOf("/extranet/Booking") !== -1) { const resStartEl = document.getElementById("Origin_Dt_From"); const resEndEl = document.getElementById("Origin_Dt_To"); const checkInEl = document.getElementById("Svc_Dt_From"); const checkOutEl = document.getElementById("Svc_Dt_To"); if (window.location.href.indexOf("/extranet/Booking") !== -1) { document.getElementById("activeBkgDate").checked = true; document.getElementById("activeTvlDate").checked = true; } if (params.RESIN || params.RESOUT) { resStartEl.disabled = false; resEndEl.disabled = false; resStartEl.value = params.RESIN.split("-") .reverse() .join("."); resEndEl.value = params.RESOUT.split("-").reverse().join("."); } if (params.CHECKIN || params.CHECKOUT) { checkInEl.disabled = false; checkOutEl.disabled = false; checkInEl.value = params.CHECKIN.split("-") .reverse() .join("."); checkOutEl.value = params.CHECKOUT.split("-") .reverse() .join("."); } // check all room types!!! Why Table ShARP document .querySelectorAll("#BkgDataSearchTable")[0] .querySelectorAll(".roomSelectionRoom input") .forEach((input) => (input.checked = true)); // set all resType to unchecked const resTypeList = [ "BookingStsSelect_Booked", "BookingStsSelect_Option", "BookingStsSelect_Canx", ]; resTypeList.forEach((resTypeName) => { document.getElementById(resTypeName).checked = false; }); // set selected resTypes resTypeArr.forEach((rt) => { switch (rt) { case "0": resTypeList.forEach( (x) => (document.getElementById(x).checked = true) ); break; case "1": document.getElementById( "BookingStsSelect_Booked" ).checked = true; break; case "2": document.getElementById( "BookingStsSelect_Option" ).checked = true; break; case "3": document.getElementById( "BookingStsSelect_Canx" ).checked = true; break; } }); // set resStatus debugger; const resStatusList = params.RESSTATUS; const all = resStatusList.indexOf("0") !== -1; const unprocessed = resStatusList.indexOf("1") !== -1 || resStatusList.indexOf("3") !== -1; const processed = resStatusList.indexOf("2") !== -1; if (all) { document.getElementById("Action_Sts").value = ""; } else if (processed) { document.getElementById("Action_Sts").value = "CLO"; } else if (unprocessed) { document.getElementById("Action_Sts").value = "O/S"; } if (document.getElementById("NoResultsFound") !== null) { await sendMessage( document.getElementById("NoResultsFound").innerText ); console.log( document.getElementById("NoResultsFound").innerText ); await complete(); return; } else if ( document.getElementById("BkgDataResults") === null || document.getElementById("BkgDataResults") === undefined ) { document.getElementById("updateView").click(); if(Array.from(document.getElementsByClassName('rangeRowError')?.[0]?.querySelectorAll('label')).find(x =>x.getAttribute('for')==='Svc_Dt_From'||x.getAttribute('for')==='Svc_Dt_To')){ sendMessage('Check-in(Start) ve Check-in(End) tarihlerinin ikisininde seçilmesi gerekmektedir.') complete() } } else if ( !Array.from(document.getElementById('BkgDataResults')?.querySelector('thead')?.querySelectorAll('th'))?.find(navbar =>navbar?.innerText==='Booking\nDate')?.getAttribute("class")?.includes("activeSort") ) { Array.from(document.getElementById('BkgDataResults')?.querySelector('thead')?.querySelectorAll('th'))?.find(navbar =>navbar?.innerText==='Booking\nDate').click(); } } await awaitIf( () => document.getElementById("BkgDataResults") != undefined ); if (document.getElementsByClassName("pages")[0] === undefined) { const resTable = document .getElementById("BkgDataResults") ?.querySelectorAll("tr.bkgResult"); const stateIdent = document.getElementsByName("StateId")?.[0]?.content; const resFormData = new FormData(); resFormData.append("si", stateIdent); resTable.forEach((res) => { resFormData.append( "targetId", res.querySelector("input[name=targetId]")?.value ); resFormData.append( "serviceId", res.querySelector("input[name=serviceId]")?.value ); }); const infoId = []; //const resPagesArr = []; for (let index = 0; index < resTable.length; index++) { const currentResId = resTable[index].querySelector( "input[name=targetId]" )?.value; infoId.push(currentResId); resFormData.append("TargetId", currentResId); } const infoOddId = [...new Set(infoId)]; await fetchDataAndParse(infoOddId, resFormData); //complete() } else { const rzz = []; let pageNmbr = Array.from( document .getElementsByClassName("pages")[0] .querySelectorAll("li") ).pop(); let nmb = parseInt(pageNmbr.innerText); for (let z = 1; z < nmb + 1; z++) { const resPagesArr = []; const infoId = []; const resTable = document .getElementById("BkgDataResults") ?.querySelectorAll("tr.bkgResult"); const stateIdent = document.getElementsByName("StateId")?.[0]?.content; const resFormData = new FormData(); resFormData.append("si", stateIdent); const pageDetails = []; await fetch( `https://supplierportal.easyjet.com/extranet/Booking/Search/Page/${z}`, { method: "POST", body: new URLSearchParams(resFormData).toString(), headers: { "content-type": "application/x-www-form-urlencoded", }, } ) .then((res) => res.text()) .then((res) => { pageDetails.push(res); }); let parsedDetails = []; for (let x = 0; x < pageDetails.length; x++) { let prsPages = new DOMParser().parseFromString( pageDetails[x], "text/html" ); parsedDetails.push( prsPages .getElementById("BkgDataResults") ?.querySelectorAll("tr.bkgResult") ); parsedDetails.forEach((dts) => { resTable.forEach((res) => { resFormData.append( "targetId", res.querySelector("input[name=targetId]")?.value ); resFormData.append( "serviceId", res.querySelector("input[name=serviceId]")?.value ); }); for (let t = 0; t < dts.length; t++) { const otherResId = dts[t].querySelector( "input[name=targetId]" )?.value; infoId.push(otherResId); } }); console.log(infoId); const infoOddId = [...new Set(infoId)]; await fetchDataAndParse(infoOddId, resFormData); } } } } async function fetchDataAndParse(infoOddId, resFormData) { const resPagesArr = []; for (let i = 0; i < infoOddId.length; i++) { await timer(500); console.log('timer') try { const response = await fetch( `https://supplierportal.easyjet.com/extranet/Booking/ViewDetail/${infoOddId[i]}`, { method: "POST", body: new URLSearchParams(resFormData).toString(), headers: { "content-type": "application/x-www-form-urlencoded", }, } ); if (response.ok) { const resText = await response.text(); resPagesArr.push(resText); } else { console.error( `Request failed with status ${response.status}` ); } } catch (e) { console.error(e); } } function cutArrayFromDifferentElement(arr) { if (arr.length === 0) { return []; // Return an empty array for an empty input array. } const firstElement = arr[0] .getElementsByClassName("headerRow")[0] .querySelectorAll("td")[1] .innerText.trim(); let differentIndex = -1; for (let i = 1; i < arr.length; i++) { if ( arr[i] .getElementsByClassName("headerRow")[0] .querySelectorAll("td")[1] .innerText.trim() !== firstElement ) { differentIndex = i; break; // Exit the loop when a different element is found. } } if (differentIndex === -1) { return arr.slice(); // All elements are the same, return a copy of the original array. } else { return arr.slice(differentIndex); // Return the portion of the array starting from the different index. } } // const results = []; for (const resPage of resPagesArr) { const parsedResPage = new DOMParser().parseFromString( resPage, "text/html" ); //console.log(parsedResPage); const rezervationSplited = []; parsedResPage .getElementById("bkgDetailsSummary") ?.querySelectorAll("tbody.odd") ?.forEach((page) => rezervationSplited.push(page)); parsedResPage .getElementById("bkgDetailsSummary") ?.querySelectorAll("tbody.even") ?.forEach((page) => rezervationSplited.push(page)); const reservations = cutArrayFromDifferentElement(rezervationSplited); for (const reservation of reservations) { const item = {}; const index = reservations.indexOf(reservation); let resNmb; if ( parsedResPage .getElementsByClassName("bkgDetails noborder")?.[0] .querySelectorAll("tr")[0] .querySelector("td").innerText === "Accommodation:" ) { resNmb = 1; } else { resNmb = 0; } let resID = parsedResPage .getElementsByClassName("bkgDetails noborder")?.[0] .querySelectorAll("tr") [resNmb]?.querySelectorAll("td")?.[1]?.innerText; debugger item.RESID = reservations.length === 1 ? resID : `${resID}#${index + 1}`; item.VOUCHERNO = resID; item.ROOMCOUNT = 1; item.CONFIRM = parsedResPage .getElementsByClassName("headerRow")[0] .querySelectorAll("td")[2] .innerText.trim(); item.RESSTATUS = reservation .getElementsByClassName("headerRow")[0] .querySelectorAll("td")[2] .innerText.trim(); item.NATIONALITY = parsedResPage .getElementsByClassName("bkgDetails noborder")?.[0] .querySelectorAll("tr") [resNmb]?.querySelectorAll("td")?.[5]?.innerText; item.TOUROPERATOR = parsedResPage .getElementsByClassName("bkgDetails noborder")?.[0] .querySelectorAll("tr") [resNmb]?.querySelectorAll("td")?.[3]?.innerText; item.RESTYPE = reservation .getElementsByClassName("headerRow")[0] .querySelectorAll("td")[1] .innerText.trim().split('\n')[0]; item.AGENCY = "EasyJet"; item.ARRIVALFLIGHTCODE=reservation.querySelectorAll(".PaxDetails tbody")?.[0]?.querySelectorAll('td')?.[4]?.querySelector('span')?.innerText?.trim() item.ARRIVALFLIGHT=reservation.querySelectorAll(".PaxDetails tbody")?.[0]?.querySelectorAll('td')?.[3]?.querySelector('span')?.innerText?.trim()?.split('|')?.[1]?.trim() item.DEPARTUREFLIGHTCODE=reservation.querySelectorAll(".PaxDetails tbody")?.[0]?.querySelectorAll('td')?.[9]?.querySelector('span')?.innerText?.trim() item.DEPARTUREFLIGHT=reservation.querySelectorAll(".PaxDetails tbody")?.[0]?.querySelectorAll('td')?.[8]?.querySelector('span')?.innerText?.trim()?.split('|')?.[1]?.trim() item.GUESTS = []; { const guestArr = reservation.querySelectorAll(".PaxDetails tbody"); const guestDataArr = []; guestArr.forEach((a) => guestDataArr.push(a.querySelectorAll("td")) ); guestDataArr.forEach((guestData) => { const guest = {}; guest.NAME = guestData?.[6]?.innerText .split("/")[1] .trim(); guest.SURNAME = guestData?.[6]?.innerText .split("/")[0] .trim(); guest.GENDER = guestData?.[1]?.innerText.trim(); guest.AGE = guestData?.[11]?.innerText .split("(")[1] .split(")")[0]; item.GUESTS.push(guest); }); } { const serviceInfo = reservation.querySelectorAll( ".ServiceInfo tbody tr" ); let ELDERCHILD = 0; let ADULT = 0; item.GUESTS.forEach((ages) => { if (ages.AGE >= 18) { ADULT++; } else { ELDERCHILD++; } }); item.ELDERCHILD = ELDERCHILD; item.ADULT = ADULT; item.CHECKIN = serviceInfo?.[5] ?.querySelectorAll("span")?.[0] ?.innerText?.split("-")?.[0] ?.trim() .split(".") .reverse() .join("-"); item.CHECKOUT = serviceInfo?.[5] ?.querySelectorAll("span")?.[0] ?.innerText?.split("-")?.[1] ?.split("(")?.[0] ?.trim() .split(".") .reverse() .join("-"); item.PAX = +serviceInfo?.[4]?.querySelectorAll("span")?.[0] ?.innerText; item.BOARDTYPE = serviceInfo?.[3] ?.querySelectorAll("span")?.[0] ?.innerText.trim(); item.ROOMTYPE = serviceInfo?.[1] ?.querySelectorAll("span")?.[0] ?.innerText.trim(); item.RESDATE = serviceInfo?.[0] ?.querySelectorAll("span")?.[0] ?.innerText.split(".") .reverse() .join("-"); let note = ""; reservation .querySelectorAll(".OtherInfo")?.[0] ?.querySelectorAll("span") ?.forEach((info) => (note += `${info?.innerText} ## `)); reservation .querySelectorAll(".OtherInfo")?.[0] ?.querySelectorAll(".PrintToolTip") ?.forEach((info) => (note += `${info?.innerText} ## `)); item.NOTES = note; } switch (item.RESTYPE) { case "BKDBooked": item.RESTYPE = 1; break; case "BKD": item.RESTYPE = 1; break; case "Option": item.RESTYPE = 2; break; case "CNXCancelled": item.RESTYPE = 3; break; case "NEW": item.RESTYPE = 1; break; case "OPT": item.RESTYPE = 2; break; case "AMD": item.RESTYPE = 2; break; case "CNX": item.RESTYPE = 3; break; } switch (item.RESSTATUS) { case "Processed": item.RESSTATUS = 2; item.CONFIRM = 2; break; case "Unprocessed": item.RESSTATUS = 1; item.CONFIRM = 1; break; default: item.RESSTATUS = 2; item.CONFIRM = 2; break; /* case "İtirazlı": item.RESSTATUS = 3; item.CONFIRM = 3; break; */ } resultOfItem.push(item); } } //console.log(resultOfItem); // return resultOfItem; } function keepUniqueVoucherNumbersWithLargestIndex(arr) { const voucherMap = new Map(); const seenVoucherNumbers = new Set(); // Iterate through the array in reverse order for (let i = arr.length - 1; i >= 0; i--) { const currentObject = arr[i]; const voucherNumber = currentObject.RESID; if (!voucherMap.has(voucherNumber)) { voucherMap.set(voucherNumber, currentObject); seenVoucherNumbers.add(voucherNumber); } else if (!seenVoucherNumbers.has(voucherNumber)) { voucherMap.set(voucherNumber, currentObject); } } // Convert the map values back to an array const result = Array.from(voucherMap.values()); return result; } easyResults = keepUniqueVoucherNumbersWithLargestIndex(resultOfItem); easyResults.reverse().forEach((lastResults) => { results.push(lastResults); }); console.log(results); debugger; complete(); } // EASYJET debugger; if (params.CHANNEL === 'TatilBudurTurOperator' || params.CHANNELMANAGERID == '118') { debugger; const payload = { confirmationStatus: 0, salesStartDate: null, salesEndDate: null, person: "", checkInDate: null, checkOutDate: null, confirmStartDate: null, confirmEndDate: null, reservationNo: "", oprStatus: 0, start: 0, length: 1000, isEb: false, isTransport: false, isAksiyon: false, sortBy: [], sortDesc: [false] }; if(window.location.href.indexOf("/login")==-1 && localStorage.count===undefined){ await timer(5000); localStorage.count=1; document.getElementsByClassName('sub-menu')?.[0]?.getElementsByTagName('a')?.[1]?.click() await timer(2000); } if (window.location.href.indexOf('/login') !== -1) { document.querySelector(".loadingText") === null && document.querySelector('input[type=text]') && document.querySelector('input[type=password]'); let user = document.querySelector('input[type=text]'); let pass = document.querySelector('input[type=password]'); if (user && pass) { user.value = params.USERCODE || ''; pass.value = params.PASSWORD || ''; user.dispatchEvent(new Event('input')); pass.dispatchEvent(new Event('input')); } if (user.value && pass.value) { localStorage.count=1; document.querySelector(".submit-button").click(); await timer(5000) } await timer(5000) if (document.getElementsByClassName("swal-overlay swal-overlay--show-modal")[0] !== undefined) { sendMessage(`${document.getElementsByClassName("swal-text")[0].textContent}+Kullanıcı adı veya şifre hatalı olabilir.`) complete() console.log('empty') } } await timer(5000) if (params.HOTELNAME) { const hotelName = document.querySelector(".multiselect__tags")?.innerText if (params.HOTELNAME !== hotelName) { const hotel = Array?.from(document.querySelector('.multiselect__content-wrapper')?.querySelectorAll('li'))?.find(list =>{ return list.innerText.includes(params.HOTELNAME) }) hotel?.querySelector('span')?.dispatchEvent(new MouseEvent('mouseenter')); hotel?.querySelector('span')?.dispatchEvent(new MouseEvent('click')); hotel?.querySelector('span')?.click() await timer(5000) } } payload.checkInDate = params.CHECKIN payload.checkOutDate = params.CHECKOUT payload.salesStartDate = params.RESIN payload.salesEndDate = params.RESOUT debugger; if([...params.RESSTATUS].length > 1 || [...params.RESTYPE].length > 1){ sendMessage('Rezervasyon Tipi ve Rezervasyon Durumunu seçerken hepsini ya da bir tanesini seçiniz.') complete() } if (params.RESSTATUS === '1') { payload.confirmationStatus = 3 } else if (params.RESSTATUS === '2') { payload.confirmationStatus = 1 } else if (params.RESSTATUS === '3') { payload.confirmationStatus = 2 } else { payload.confirmationStatus = 0 } if (params.RESTYPE === '0') { payload.oprStatus = 0 } else if (params.RESTYPE === '1') { payload.oprStatus = "OK" } else if (params.RESTYPE === '2') { payload.oprStatus = "OK" } else { payload.oprStatus = "CLO" } const resPageInfo = []; const response = await fetch('https://extranet.tatilbudur.com/Reservation/GetListReservations', { method: 'POST', body: JSON.stringify(payload), headers: { 'content-type': 'application/json; charset=UTF-8' } }); debugger; function formatDateToYYYYMMDD(date) { const year = date.getFullYear(); const month = String(date.getMonth() + 1).padStart(2, '0'); const day = String(date.getDate()).padStart(2, '0'); return `${year}-${month}-${day}`; } const text = await response.json(); resPageInfo.push(text); if (resPageInfo?.[0]?.InnerData?.length === 0) { sendMessage('Belirtilen kriterlerde rezervasyon bulunamadı.') complete() } resPageInfo[0].InnerData.forEach(rezInfo => { const item = {}; //item.HOTELID=rezInfo.id; item.HOTELNAME = rezInfo.hotel; item.CHECKIN = formatDateToYYYYMMDD(new Date(rezInfo.checkInDate.split(' ')[0])) item.CHECKOUT = formatDateToYYYYMMDD(new Date(rezInfo.checkOutDate.split(' ')[0])) item.RESTYPE = rezInfo.oprStatusId; item.RESSTATUS = rezInfo.statusId; item.VOUCHERNO = rezInfo.reservationNo; item.RESID = rezInfo.id; item.RESDATE = formatDateToYYYYMMDD(new Date(rezInfo.salesDate.split(' ')[0])) item.CONFIRM = rezInfo.statusId; item.ROOMCOUNT = 1 item.NOTES = rezInfo.reservationNote item.AGENCY = 'Tatilbudur' item.ROOMTYPE = rezInfo.room; item.BOARDTYPE = rezInfo.MealType item.PAX = rezInfo.totalPerson; item.ELDERCHILD = rezInfo.ChildCount; item.ADULT = rezInfo.AdultCount; item.GUESTS = []; rezInfo.guestDetails.forEach(guestDetailItem => { let guest = {}; guest.NAME = guestDetailItem.firstName; guest.SURNAME = guestDetailItem.lastName; guest.BIRTHDATE = guestDetailItem.birthDate.split(' ')[0]; item.GUESTS.push(guest) }) switch (item.RESSTATUS) { case 1: item.RESSTATUS = 2; item.CONFIRM = 2; break; case 3: item.RESSTATUS = 1; item.CONFIRM = 1; break; case 2: item.RESSTATUS = 3; item.CONFIRM = 3; break; } switch (item.RESTYPE) { case "OK": item.RESTYPE = 1; break; case "CLO": item.RESTYPE = 3; break; } results.push(item) }) console.log(results); localStorage.removeItem('count'); complete(); } // Tatilbudur / Aydin - Test!!! if (params.CHANNEL == 'Test' || params.CHANNELMANAGERID == '67') { await timer(2000); debugger; // login if (window.location.href.indexOf('/login') !== -1) { // yuklendi mi? await awaitIf(() => document.querySelector(".loadingText") === null && document.querySelector('input[type=text]') && document.querySelector('input[type=password]')); //await awaitIf( () => document.querySelector('[pm_parser_annotation="username_element"]') && document.querySelector('[pm_parser_annotation="password_element"]')); debugger; //var u = document.querySelector('[pm_parser_annotation="username_element"]'), p = document.querySelector('[pm_parser_annotation="password_element"]'); var u = document.querySelector('input[type=text]'), p = document.querySelector('input[type=password]'); if (u && p) { u.value = params.USERCODE || ''; p.value = params.PASSWORD || ''; u.dispatchEvent(new Event('input')); p.dispatchEvent(new Event('input')); await timer(500); } if (u.value && p.value) { document.querySelector(".submit-button").click(); } } var pageStatus = await new Promise(async (resolve, reject) => { var status = null; while (true) { if (document.querySelector('.swal-icon--error')) { status = false; break; } if (document.querySelector('.waitingConfirmTitle')) { status = true; break; } await timer(1000); } resolve(status); }) if (!pageStatus) { sendMessage('Giriş yapılamadı, kullanıcı bilgilerini kontrol ediniz.'); complete(); return; } // login basarili let cinDate = params.CHECKIN;//.split('-').reverse().join('.'); let coutDate = params.CHECKOUT;//.split('-').reverse().join('.'); let resIn = params.RESIN;//.split('-').reverse().join('.'); let resOut = params.RESOUT;//.split('-').reverse().join('.'); var url = 'https://extranet.tatilbudur.com/Reservation/GetListReservations'; var inputData = { "confirmationStatus": 0, // 0=tumu, 1=konfirme, 2=not konfirme, 3=bekliyor "salesStartDate": resIn, // 2022-04-01 | null "salesEndDate": resOut, // 2022-04-30 | null "person": "", "checkInDate": cinDate, // 2022-05-01 | null "checkOutDate": coutDate, // 2022-05-30 | null "confirmStartDate": null, "confirmEndDate": null, "reservationNo": "", "oprStatus": 0, // 0=tumu, "OK"=kesin rez, "CLO"=iptal rez "start": 0, "length": 10, "isEb": false, "isTransport": false, "isAksiyon": false, "sortBy": [], "sortDesc": [ false ] }; debugger; var rez = await new Promise((resolve, reject) => { var http = new XMLHttpRequest(); http.open("POST", url, true); http.setRequestHeader("Content-type", "application/json"); http.withCredentials = true; http.onload = (e) => { if (http.readyState === 4) { rs = http.status === 200 ? http.responseText : ''; resolve(rs) } else { resolve(null) } }; http.send(JSON.stringify(inputData)); }); rez = JSON.parse(rez); for (i = 0; i < rez.length; i++) { var item = {}, ucus; item.RESID = rez[i].id; //item.AGENCY = rez[i].firma; //item.VOUCHERNO = rez[i].voucher; item.NOTES = rez[i].hotelNote + ' - ' + reservationNote; //item.BOARDTYPE = rez[i].p; // pansiyon tipi item.PAX = rez[i].totalPerson; item.ADULT = rez[i].AdultCount; item.ELDERCHILD = rez[i].ChildCount; item.RESTYPE = _resType(rez[i].durum); item.CHECKIN = rez[i].checkInDate.split(' ')[0]; item.CHECKOUT = rez[i].checkOutDate.split(' ')[0]; item.ROOMTYPE = rez[i].room; item.ROOMCOUNT = rez[i].no; // oda sayisi item.RESDATE = rez[i].reztar; item.GUESTS = []; var name = rez[i].isim.split(',')[0], surname = rez[i].isim.split(',')[1], age = rez[i].yas, gender = _gender(rez[i].cins); item.GUESTS.push({'NAME': name, 'SURNAME': surname, 'AGE': age, 'GENDER': gender}); for (z = 0; z < rez[i].subgrid.length; z++) { var guest = {}; guest.NAME = rez[i].subgrid[z].isim.split(',')[0]; guest.SURNAME = rez[i].subgrid[z].isim.split(',')[1]; guest.AGE = rez[i].subgrid[z].yas; guest.GENDER = _gender(rez[i].subgrid[z].cins); item.GUESTS.push(guest); } oTrim(item) results.push(item); } await timer(100); debugger; complete(); } })();