(() => { const { EventManager, Handlebars, utils } = ShopbySkin; let membershipInfo = {}; const gradePeriod = 2; const getGradeStartDate = () => { const period = gradePeriod; const day = 1; const today = new Date(); const startDay = new Date(today.getFullYear(), today.getMonth() - (period - 1), day); let year = startDay.getFullYear(); let month = startDay.getMonth() + 1; month = month >= 10 ? month : '0' + month; return year + '-' + month + '-01'; } const getToDate = () => { const today = new Date(); let year = today.getFullYear(); let month = today.getMonth() + 1; month = month >= 10 ? month : '0' + month; let date = today.getDate(); date = date >= 10 ? date : '0' + date; return year + '-' + month + '-' + date; } const _getMembershipInfoFetchApis = async () => { const kaimenShopbyApi = new KaimenShopbyApi(); const result = await Promise.all([ kaimenShopbyApi.getProfileOrdersSummaryAmount({ queryString: { orderStatusType: 'BUY_CONFIRM', startYmd: getGradeStartDate(), endYmd: getToDate(), }, }), //kaimenShopbyApi.getProfileGrade({}), kaimenShopbyApi.getMemberGrades({queryString: {}}), kaimenShopbyApi.getProfileOrdersSummaryAmount({ queryString: { orderStatusType: 'BUY_CONFIRM', startYmd: '2000-01-01', endYmd: getToDate(), }, }), kaimenShopbyApi.getProfileAccumulations({ queryString: { pageNumber : 1, pageSize : 1000, //accumulationReason: 'SUB', startYmd: '2000-01-01', endYmd: getToDate(), } }), ]); return result.map(({ data }) => data); }; const _getMembershipInfo = async (profile) => { const [summaryAmount, memberGrade, totalSummaryAmount, totalAccumulations] = await _getMembershipInfoFetchApis(); const grade = { label: profile.memberGradeName, gradeNo: profile.memberGradeNo, }; let totalAccumulationAmt = 0; const usedReason = ['SUB_PAYMENT_USED', 'SUB_EXTRA_PAYMENT_USED']; const usedCancelReason = ['SUB_CANCEL', 'SUB_RETURN', 'ADD_CANCEL', 'ADD_RETURN']; if(totalAccumulations.items !== undefined){ totalAccumulations.items.forEach(item => { if(usedReason.includes(item.accumulationReserveReason)){ totalAccumulationAmt += item.accumulationAmt; } if(usedCancelReason.includes(item.accumulationReserveReason)){ totalAccumulationAmt -= item.accumulationAmt; } }); } let currentGrade = []; let nextGrade = []; let estimateGrade = []; let currentGradePosition = 0; let nextGradePosition = 0; let estimateGradePosition = 0; let lastGradePayment = memberGrade[memberGrade.length-1].evaluationCondition.minimumPayment; let totalAmt = summaryAmount.lastPayAmt; memberGrade.forEach((gradeData, key) => { if(estimateGrade.label === undefined && (gradeData.evaluationCondition.minimumPayment > totalAmt || (gradeData.evaluationCondition.minimumPayment === lastGradePayment && lastGradePayment <= totalAmt))){ estimateGrade = memberGrade[key-1]; estimateGradePosition = key-1; } if(nextGrade.label === undefined && (estimateGrade.label !== undefined && estimateGrade.evaluationCondition.minimumPayment < gradeData.evaluationCondition.minimumPayment) && (gradeData.evaluationCondition.minimumPayment > totalAmt || (gradeData.evaluationCondition.minimumPayment === lastGradePayment && lastGradePayment <= totalAmt))){ nextGrade = gradeData; } let nextKey = key + 1; nextKey = memberGrade.length <= nextKey ? key : nextKey; if(gradeData.evaluationCondition.minimumPayment <= totalAmt && memberGrade[nextKey].evaluationCondition.minimumPayment > totalAmt || lastGradePayment <= totalAmt){ nextGradePosition = key; } if(gradeData.no === grade.gradeNo){ currentGrade = gradeData; currentGradePosition = key; } }); if(currentGrade !== undefined && nextGrade.length === 0){ nextGrade = currentGrade; } let nextGradePrice = nextGrade.evaluationCondition.minimumPayment - totalAmt; let membershipData = { grade : grade.label, totalPrice : totalAmt, nextGrade : nextGrade.label, nextGradePrice : nextGradePrice, currentGradePosition : currentGradePosition, totalSummaryAmount : totalSummaryAmount.lastPayAmt, totalAccumulationAmt : totalAccumulationAmt, estimateGrade: estimateGrade.label, estimateGradePosition: estimateGradePosition, nextGradePosition : nextGradePosition, } return membershipData; }; const setGradePosition = () => { if(utils.isSignedIn()){ if(membershipInfo.nextGradePosition !== undefined){ document.querySelectorAll(".next_grade .grade_img img")[membershipInfo.nextGradePosition]?.classList.remove('dn'); } if(membershipInfo.currentGradePosition !== undefined){ document.querySelectorAll(".your_grade td")[membershipInfo.currentGradePosition]?.classList.add("on"); } if(document.querySelector(".next_grade") !== null){ const template = Handlebars.compile(document.querySelector(".next_grade").innerHTML); let info = template({ membershipInfo }); document.querySelector(".next_grade").innerHTML = info; document.querySelector(".next_grade").classList.remove('dn'); } $('.your_grade .on').append('