Todos os bancos e Programas de Fidelidade parceiros da Smiles participam dessa promoção. Veja como é fácil transferir, acesse: https://www.smiles.com.br/transferir-pontos-cartao
Milhas
Você está customizando o menu.   Clique, segure e arraste um item com o ícone para alterar sua posição.
Você está customizando o menu. Clique, segure e arraste um item com o ícone para alterar sua posição.
Aproveite esta oferta
incrível para os
apaixonados por viagem!
Aproveite esta oferta incrível para os
apaixonados por viagem!
Confira todos os detalhes da promoção, informe seus dados e confirme sua participação para receber o bônus!
Confira quanto você pode ganhar de milhas bônus nessa transferência:
100% de bônus
para Categoria DiamanteAté 100% de bônus
para Cliente Clube SmilesCliente Clube Smiles ganha no mínimo 90% de bônus e pode ganhar ainda mais bônus de acordo com o plano de assinatura.Ainda não faz parte do Clube Smiles? Entre já e aproveite muitos benefícios!.
Saiba maisGanhe ainda mais milhas de acordo com o seu plano!
Cliente Clube Smiles ganha 90% de milhas bônus nesta promoção. Aproveite para ganhar ainda mais milhas de acordo com o plano de assinatura:
Plano 1.000
90% de milhas bônus na transferência de pontos
Planos 2.000 e 3.000
90% de bônus + 3% de bônus do seu plano = 93% de milhas bônus nesta transferência de pontos
Plano 5.000
90% de bônus + 5% de bônus do seu plano = 95% de milhas bônus nesta transferência de pontos
Plano 7.000
90% de bônus + 7% de bônus do seu plano = 97% de milhas bônus nesta transferência de pontos
Plano 10.000
90% de bônus + 8% de bônus do seu plano = 98% de milhas bônus nesta transferência de pontos
Plano 20.000 ou Categoria Diamante
90% de bônus + 10% de bônus do seu plano = 100% de milhas bônus nesta transferência de pontos
Para receber a bonificação, seu plano deve estar ativo. As milhas bônus têm validade de 12 meses
The following has evaluated to null or missing: ==> minMaxValues.milesBankToCalc [in template "20101#20128#3517781" at line 485, column 24] ---- Tip: It's the step after the last dot that caused this error, not those before it. ---- Tip: If the failing expression is known to legally refer to something that's sometimes null or missing, either specify a default value like myOptionalVar!myDefault, or use <#if myOptionalVar??>when-present<#else>when-missing</#if>. (These only cover the last step of the expression; to cover the whole expression, use parenthesis: (myOptionalVar.foo)!myDefault, (myOptionalVar.foo)?? ---- ---- FTL stack trace ("~" means nesting-related): - Failed at: ${minMaxValues.milesBankToCalc.getDat... [in template "20101#20128#3517781" at line 485, column 22] ----
1<style>
2 .mod-calc-bancos-l7__container {
3 width: 100%;
4 max-width: 1128px;
5 margin: 1.5rem auto;
6 display: flex;
7 flex-direction: column;
8 align-items: center;
9 justify-content: flex-start;
10 }
11 .mod-calc-bancos-l7__container .mod-calc-bancos-l7__heading {
12 font-weight: 600;
13 width: 100%;
14 margin-bottom: 1rem;
15 font-style: normal;
16 }
17 .mod-calc-bancos-l7__container .mod-calc-bancos-l7__heading h2 {
18 font-size: 24px;
19 line-height: 36px;
20 color: #333333;
21 margin-bottom: 1.5rem;
22 }
23 .mod-calc-bancos-l7__container .mod-calc-bancos-l7__heading p {
24 font-size: 20px;
25 line-height: 32px;
26 color: #666666;
27 }
28 .mod-calc-bancos-l7__container .mod-calc-bancos-l7__content {
29 background-color: #f2f2f2;
30 height: 178px;
31 width: 100%;
32 border-radius: 1rem;
33 position: relative;
34 }
35 .mod-calc-bancos-l7__container .mod-calc-bancos-l7__content .mod-calc-bancos-l7__form {
36 width: 100%;
37 display: flex;
38 align-items: center;
39 }
40 .mod-calc-bancos-l7__container .mod-calc-bancos-l7__content .mod-calc-bancos-l7__form .calc-operators {
41 font-size: 2rem;
42 font-family: "Nunito", "NunitoRegular", sans-serif;
43 font-weight: 500;
44 font-style: normal;
45 margin-top: 1.75rem;
46 }
47 .mod-calc-bancos-l7__container .mod-calc-bancos-l7__content .mod-calc-bancos-l7__form .mod-calc-bancos-l7__input-wrapper {
48 padding: 2rem;
49 width: 100%;
50 display: flex;
51 flex-direction: column;
52 position: relative;
53 }
54 .mod-calc-bancos-l7__container .mod-calc-bancos-l7__content .mod-calc-bancos-l7__form .mod-calc-bancos-l7__input-wrapper label {
55 font-size: 0.875rem;
56 font-weight: 700;
57 margin-bottom: 0.875rem;
58 }
59 .mod-calc-bancos-l7__container .mod-calc-bancos-l7__content .mod-calc-bancos-l7__form .mod-calc-bancos-l7__input-wrapper input,
60 .mod-calc-bancos-l7__container .mod-calc-bancos-l7__content .mod-calc-bancos-l7__form .mod-calc-bancos-l7__input-wrapper select {
61 width: 100%;
62 padding: 1.5rem;
63 border-radius: 8px;
64 border: 2px solid #999999;
65 font-family: "Nunito", "NunitoRegular", sans-serif;
66 transition: border-color 0.3s ease;
67 }
68 .mod-calc-bancos-l7__container .mod-calc-bancos-l7__content .mod-calc-bancos-l7__form .mod-calc-bancos-l7__input-wrapper input:focus,
69 .mod-calc-bancos-l7__container .mod-calc-bancos-l7__content .mod-calc-bancos-l7__form .mod-calc-bancos-l7__input-wrapper select:focus {
70 outline: none;
71 border-color: #ff7020;
72 }
73 .mod-calc-bancos-l7__container .mod-calc-bancos-l7__content .mod-calc-bancos-l7__form .mod-calc-bancos-l7__input-wrapper input::-moz-placeholder, .mod-calc-bancos-l7__container .mod-calc-bancos-l7__content .mod-calc-bancos-l7__form .mod-calc-bancos-l7__input-wrapper select::-moz-placeholder {
74 font-size: 1rem;
75 font-weight: 400;
76 line-height: 1.5rem;
77 }
78 .mod-calc-bancos-l7__container .mod-calc-bancos-l7__content .mod-calc-bancos-l7__form .mod-calc-bancos-l7__input-wrapper input::placeholder,
79 .mod-calc-bancos-l7__container .mod-calc-bancos-l7__content .mod-calc-bancos-l7__form .mod-calc-bancos-l7__input-wrapper select::placeholder {
80 font-size: 1rem;
81 font-weight: 400;
82 line-height: 1.5rem;
83 }
84 .mod-calc-bancos-l7__container .mod-calc-bancos-l7__content .mod-calc-bancos-l7__form .mod-calc-bancos-l7__input-wrapper select {
85 appearance: none;
86 -webkit-appearance: none;
87 -moz-appearance: none;
88 background: url('data:image/svg+xml;utf8,<svg fill="none" height="24" viewBox="0 0 24 24" width="24" xmlns="http://www.w3.org/2000/svg"><path d="M7 10l5 5 5-5H7z" fill="%23ccc"/></svg>') no-repeat right 1.5rem center;
89 background-color: #ffffff;
90 }
91 .mod-calc-bancos-l7__container .mod-calc-bancos-l7__content .mod-calc-bancos-l7__form .mod-calc-bancos-l7__input-wrapper select:option[disabled][selected] {
92 color: #595959;
93 }
94 .mod-calc-bancos-l7__container .mod-calc-bancos-l7__content .mod-calc-bancos-l7__form .mod-calc-bancos-l7__input-wrapper .error-message {
95 display: none;
96 align-items: center;
97 color: #a7022a;
98 font-size: 14px;
99 font-weight: 400;
100 margin-top: 12px;
101 position: absolute;
102 top: calc(100% - 2.5rem);
103 left: 1.375rem;
104 padding-left: 0.675rem;
105 }
106 .mod-calc-bancos-l7__container .mod-calc-bancos-l7__content .mod-calc-bancos-l7__form .mod-calc-bancos-l7__input-wrapper .error-message svg {
107 margin-right: 0.5rem;
108 }
109 .mod-calc-bancos-l7__container .mod-calc-bancos-l7__content .mod-calc-bancos-l7__form .mod-calc-bancos-l7__input-wrapper .error-message::before {
110 content: "";
111 }
112 .mod-calc-bancos-l7__container .mod-calc-bancos-l7__content .mod-calc-bancos-l7__form .mod-calc-bancos-l7__input-wrapper .error .error-message {
113 display: flex;
114 }
115 .mod-calc-bancos-l7__container .mod-calc-bancos-l7__content .mod-calc-bancos-l7__form .mod-calc-bancos-l7__input-wrapper .error input,
116 .mod-calc-bancos-l7__container .mod-calc-bancos-l7__content .mod-calc-bancos-l7__form .mod-calc-bancos-l7__input-wrapper .error select {
117 border-color: #a7022a;
118 }
119 .mod-calc-bancos-l7__container .mod-calc-bancos-l7__content .mod-calc-bancos-l7__form .mod-calc-bancos-l7__input-wrapper .error-border {
120 border-color: #a7022a;
121 }
122 .mod-calc-bancos-l7__container .mod-calc-bancos-l7__content .mod-calc-bancos-l7__form .mod-calc-bancos-l7__input-wrapper .error-border:focus {
123 border-color: #a7022a;
124 }
125 .mod-calc-bancos-l7__container .mod-calc-bancos-l7__footer {
126 display: flex;
127 flex-direction: column;
128 width: 100%;
129 margin-top: 2rem;
130 }
131 .mod-calc-bancos-l7__container .mod-calc-bancos-l7__footer p {
132 text-align: left;
133 font-size: 20px;
134 font-weight: 600;
135 line-height: 32px;
136 font-style: normal;
137 margin-bottom: 2.25rem;
138 }
139 .mod-calc-bancos-l7__container .mod-calc-bancos-l7__footer .mod-calc-bancos-l7__footer-content {
140 display: flex;
141 align-items: center;
142 }
143 .mod-calc-bancos-l7__container .mod-calc-bancos-l7__footer .mod-calc-bancos-l7__footer-content .calc-operators {
144 font-size: 2rem;
145 font-family: "Nunito", "NunitoRegular", sans-serif;
146 font-weight: 500;
147 font-style: normal;
148 margin: 0 16px;
149 }
150 .mod-calc-bancos-l7__container .mod-calc-bancos-l7__footer .mod-calc-bancos-l7__footer-content div {
151 display: flex;
152 flex-direction: column;
153 width: 100%;
154 position: relative;
155 }
156 .mod-calc-bancos-l7__container .mod-calc-bancos-l7__footer .mod-calc-bancos-l7__footer-content div label {
157 margin-bottom: 14px;
158 font-weight: 700;
159 line-height: 21px;
160 font-style: normal;
161 font-size: 0.875rem;
162 color: #595959;
163 }
164 .mod-calc-bancos-l7__container .mod-calc-bancos-l7__footer .mod-calc-bancos-l7__footer-content div input {
165 padding: 1.25rem 1.5rem;
166 border: 2px solid #f2f2f2;
167 border-radius: 8px;
168 margin-bottom: 1.5rem;
169 pointer-events: none;
170 }
171 .mod-calc-bancos-l7__container .mod-calc-bancos-l7__footer .mod-calc-bancos-l7__footer-content div input::-moz-placeholder {
172 color: #595959;
173 }
174 .mod-calc-bancos-l7__container .mod-calc-bancos-l7__footer .mod-calc-bancos-l7__footer-content div input::placeholder {
175 color: #595959;
176 }
177 .mod-calc-bancos-l7__container .mod-calc-bancos-l7__footer .mod-calc-bancos-l7__footer-content div .error-message {
178 display: none;
179 align-items: center;
180 color: #a7022a;
181 font-size: 14px;
182 font-weight: 400;
183 line-height: 21px;
184 position: absolute;
185 top: calc(100% - 2.5rem);
186 margin-top: 20px;
187 }
188 .mod-calc-bancos-l7__container .mod-calc-bancos-l7__footer .mod-calc-bancos-l7__footer-content div .error-message svg {
189 margin-right: 8px;
190 width: 24px;
191 }
192 .mod-calc-bancos-l7__container .mod-calc-bancos-l7__footer .mod-calc-bancos-l7__footer-content div .error-message::before {
193 content: "";
194 }
195 .mod-calc-bancos-l7__container .mod-calc-bancos-l7__footer .mod-calc-bancos-l7__footer-content div .error .error-message {
196 display: flex;
197 }
198 .mod-calc-bancos-l7__container .mod-calc-bancos-l7__footer .mod-calc-bancos-l7__footer-content div .error input,
199 .mod-calc-bancos-l7__container .mod-calc-bancos-l7__footer .mod-calc-bancos-l7__footer-content div .error select {
200 border-color: #a7022a;
201 }
202 .mod-calc-bancos-l7__container .mod-calc-bancos-l7__footer .mod-calc-bancos-l7__footer-content div .error-border {
203 border-color: #a7022a;
204 }
205 .mod-calc-bancos-l7__container .mod-calc-bancos-l7__footer .mod-calc-bancos-l7__footer-content div .error-border:focus {
206 border-color: #a7022a;
207 }
208
209 /* MEDIAS QUERIES */
210 @media screen and (max-width: 1024px) {
211 .mod-calc-bancos-l7__container {
212 max-width: 1024px;
213 padding: 0 1rem;
214 }
215 }
216 @media screen and (max-width: 1038px) {
217 .mod-calc-bancos-l7__container .mod-calc-bancos-l7__footer {
218 padding: 0 1.5rem;
219 }
220 .mod-calc-bancos-l7__container .mod-calc-bancos-l7__footer .mod-calc-bancos-l7__footer-content {
221 flex-direction: column;
222 }
223 }
224 @media screen and (max-width: 768px) {
225 .mod-calc-bancos-l7__container {
226 padding: 0;
227 }
228 .mod-calc-bancos-l7__container .mod-calc-bancos-l7__heading {
229 padding: 0 1.5rem;
230 }
231 .mod-calc-bancos-l7__container .mod-calc-bancos-l7__heading h2 {
232 font-size: 1.25rem;
233 line-height: 2rem;
234 letter-spacing: 0.00188rem;
235 margin-bottom: 1rem;
236 padding-right: 4rem;
237 }
238 .mod-calc-bancos-l7__container .mod-calc-bancos-l7__heading p {
239 font-size: 0.875rem;
240 font-weight: 500;
241 line-height: 1.25rem;
242 letter-spacing: 0.00219rem;
243 margin-bottom: 1.5rem;
244 padding-right: 4rem;
245 }
246 .mod-calc-bancos-l7__container .mod-calc-bancos-l7__content {
247 width: 100%;
248 border-radius: 0;
249 height: auto;
250 position: static !important;
251 }
252 .mod-calc-bancos-l7__container .mod-calc-bancos-l7__content .mod-calc-bancos-l7__form {
253 flex-direction: column;
254 }
255 .mod-calc-bancos-l7__container .mod-calc-bancos-l7__content .mod-calc-bancos-l7__form .calc-operators {
256 margin-top: 0;
257 }
258 .mod-calc-bancos-l7__container .mod-calc-bancos-l7__content .mod-calc-bancos-l7__form .mod-calc-bancos-l7__input-wrapper {
259 padding: 1.5rem;
260 }
261 .mod-calc-bancos-l7__container .mod-calc-bancos-l7__content .mod-calc-bancos-l7__form .mod-calc-bancos-l7__input-wrapper .error-message {
262 font-size: 0.75rem;
263 margin-top: 0.5rem;
264 top: calc(100% - 1.75rem);
265 left: 0.875rem;
266 }
267 .mod-calc-bancos-l7__container .mod-calc-bancos-l7__footer {
268 padding: 0 1.5rem;
269 }
270 .mod-calc-bancos-l7__container .mod-calc-bancos-l7__footer .mod-calc-bancos-l7__footer-content {
271 flex-direction: column;
272 }
273 .mod-calc-bancos-l7__container .mod-calc-bancos-l7__footer .mod-calc-bancos-l7__footer-content div .error-message {
274 position: relative;
275 margin-top: 0;
276 margin-bottom: 4px;
277 }
278 .mod-calc-bancos-l7__container .mod-calc-bancos-l7__footer .mod-calc-bancos-l7__footer-content div .error-message svg {
279 margin-right: 2px;
280 }
281 }
282 @media screen and (max-width: 360px) {
283 .mod-calc-bancos-l7__container .mod-calc-bancos-l7__heading h2,
284 .mod-calc-bancos-l7__container .mod-calc-bancos-l7__heading p {
285 padding-right: 2rem;
286 }
287 }/*# sourceMappingURL=styles.css.map */
288 </style>
289
290 <section class="mod-calc-bancos-l7__container" id="calcular-bonus">
291 <div class="mod-calc-bancos-l7__heading">
292 <!-- <#if title.getData() != ''> -->
293 <h2>${title.getData()}</h2>
294 <!-- </#if> -->
295 <!-- <#if subTitle.getData() != ''> -->
296 <p>${subTitle.getData()}</p>
297 <!-- </#if> -->
298 </div>
299 <div class="mod-calc-bancos-l7__content">
300 <form class="mod-calc-bancos-l7__form">
301 <div class="mod-calc-bancos-l7__input-wrapper">
302 <!-- <#if pointsToTransfer.pointsTitleText.getData() != ''> -->
303 <label for="calc-points">${pointsToTransfer.pointsTitleText.getData()}</label>
304 <!-- </#if> -->
305 <input id="calc-points" type="text" placeholder="<#if pointsToTransfer.pointsTextLabel.getData() !=''>${pointsToTransfer.pointsTextLabel.getData()}</#if>" />
306 <p class="error-message" id="error-message-points">
307 <svg width="16" height="17" viewBox="0 0 16 17" fill="none" xmlns="http://www.w3.org/2000/svg">
308 <path d="M8.00004 5.16667C8.36671 5.16667 8.66671 5.46667 8.66671 5.83334V8.5C8.66671 8.86667 8.36671 9.16667 8.00004 9.16667C7.63337 9.16667 7.33337 8.86667 7.33337 8.5V5.83334C7.33337 5.46667 7.63337 5.16667 8.00004 5.16667ZM7.99337 1.83334C4.31337 1.83334 1.33337 4.82 1.33337 8.5C1.33337 12.18 4.31337 15.1667 7.99337 15.1667C11.68 15.1667 14.6667 12.18 14.6667 8.5C14.6667 4.82 11.68 1.83334 7.99337 1.83334ZM8.00004 13.8333C5.05337 13.8333 2.66671 11.4467 2.66671 8.5C2.66671 5.55334 5.05337 3.16667 8.00004 3.16667C10.9467 3.16667 13.3334 5.55334 13.3334 8.5C13.3334 11.4467 10.9467 13.8333 8.00004 13.8333ZM8.66671 11.8333H7.33337V10.5H8.66671V11.8333Z" fill="#A7022A" />
309 </svg>
310 <span id="error-text-points"></span>
311 </p>
312 </div>
313 <span class="calc-operators">+</span>
314 <div class="mod-calc-bancos-l7__input-wrapper">
315 <!-- <#if promotionBonus.bonusTextTitle.getData() != ''> -->
316 <label for="calc-profile">${promotionBonus.bonusTextTitle.getData()}</label>
317 <!-- </#if> -->
318 <select id="calc-profile" name="calc-profile">
319 <option value="" disabled selected>${promotionBonus.bonusTextLabel.getData()}</option>
320 <!-- <#if promotionBonus.bonusTextOption.getSiblings()?has_content> -->
321 <!-- <#list promotionBonus.bonusTextOption.getSiblings() as cur_bonusTextOption> -->
322 <option value="${cur_bonusTextOption.getData()}">${cur_bonusTextOption.getData()}</option>
323 <!-- </#list> -->
324 <!-- </#if> -->
325 </select>
326 </div>
327 </form>
328 </div>
329 <div class="mod-calc-bancos-l7__footer">
330 <!-- <#if resultTitle.getData() != ''> -->
331 <p>${resultTitle.getData()}</p>
332 <!-- </#if> -->
333 <div class="mod-calc-bancos-l7__footer-content">
334 <div>
335 <!-- <#if resultTitle.milesLabel.getData() != ''> -->
336 <label for="calc-result-miles">${resultTitle.milesLabel.getData()}</label>
337 <!-- </#if> -->
338 <input type="text" id="calc-result-miles" placeholder="0" readonly />
339 </div>
340 <span class="calc-operators">+</span>
341 <div>
342 <!-- <#if resultTitle.promotionBonusResultLabel.getData() != ''> -->
343 <label for="calc-promotion-bonus">${resultTitle.promotionBonusResultLabel.getData()}</label>
344 <!-- </#if> -->
345 <input type="text" id="calc-promotion-bonus" placeholder="0" readonly />
346 <p class="error-message" id="error-message-promotion-bonus">
347 <svg width="16" height="17" viewBox="0 0 16 17" fill="none" xmlns="http://www.w3.org/2000/svg">
348 <path d="M8.00004 5.16667C8.36671 5.16667 8.66671 5.46667 8.66671 5.83334V8.5C8.66671 8.86667 8.36671 9.16667 8.00004 9.16667C7.63337 9.16667 7.33337 8.86667 7.33337 8.5V5.83334C7.33337 5.46667 7.63337 5.16667 8.00004 5.16667ZM7.99337 1.83334C4.31337 1.83334 1.33337 4.82 1.33337 8.5C1.33337 12.18 4.31337 15.1667 7.99337 15.1667C11.68 15.1667 14.6667 12.18 14.6667 8.5C14.6667 4.82 11.68 1.83334 7.99337 1.83334ZM8.00004 13.8333C5.05337 13.8333 2.66671 11.4467 2.66671 8.5C2.66671 5.55334 5.05337 3.16667 8.00004 3.16667C10.9467 3.16667 13.3334 5.55334 13.3334 8.5C13.3334 11.4467 10.9467 13.8333 8.00004 13.8333ZM8.66671 11.8333H7.33337V10.5H8.66671V11.8333Z" fill="#A7022A" />
349 </svg>
350 <span id="error-text-promotion-bonus"></span>
351 </p>
352 </div>
353 <!-- <#if getterUtil.getBoolean(hasExtraBonus.getData())> -> verifica se vai ter ou não o campo de bônus extra -->
354 <span class="calc-operators">+</span>
355 <div>
356 <!-- <#if resultTitle.extraBonusResultLabel.getData() != ''> -->
357 <label for="calc-extra-bonus">${resultTitle.extraBonusResultLabel.getData()}</label>
358 <!-- </#if> -->
359 <input type="text" id="calc-extra-bonus" placeholder="0" readonly />
360 <p class="error-message" id="error-message-extra-bonus">
361 <svg width="16" height="17" viewBox="0 0 16 17" fill="none" xmlns="http://www.w3.org/2000/svg">
362 <path d="M8.00004 5.16667C8.36671 5.16667 8.66671 5.46667 8.66671 5.83334V8.5C8.66671 8.86667 8.36671 9.16667 8.00004 9.16667C7.63337 9.16667 7.33337 8.86667 7.33337 8.5V5.83334C7.33337 5.46667 7.63337 5.16667 8.00004 5.16667ZM7.99337 1.83334C4.31337 1.83334 1.33337 4.82 1.33337 8.5C1.33337 12.18 4.31337 15.1667 7.99337 15.1667C11.68 15.1667 14.6667 12.18 14.6667 8.5C14.6667 4.82 11.68 1.83334 7.99337 1.83334ZM8.00004 13.8333C5.05337 13.8333 2.66671 11.4467 2.66671 8.5C2.66671 5.55334 5.05337 3.16667 8.00004 3.16667C10.9467 3.16667 13.3334 5.55334 13.3334 8.5C13.3334 11.4467 10.9467 13.8333 8.00004 13.8333ZM8.66671 11.8333H7.33337V10.5H8.66671V11.8333Z" fill="#A7022A" />
363 </svg>
364 <span id="error-text-extra-bonus"></span>
365 </p>
366 </div>
367 <!-- <#else> -->
368 <!-- </#if> -->
369 <span class="calc-operators">=</span>
370 <div>
371 <!-- <#if resultTitle.milesTotalLabel.getData() != ''> -->
372 <label for="calc-result">${resultTitle.milesTotalLabel.getData()}</label>
373 <!-- </#if> -->
374 <input type="text" id="calc-result" placeholder="0" readonly />
375 </div>
376 </div>
377 </div>
378 </section>
379 <script>
380 // freemarker variables
381 // <#assign minPoints = minMaxValues.minimumValue.getData()>
382 // <#assign maxPromotionBonus = minMaxValues.maximumPromotionBonus.getData()>
383 // <#assign maxExtraBonus = minMaxValues.maximumExtraBonus.getData()>
384 let cur_items_bonus = [];
385 let tempItem = {};
386
387 // <#if promotionBonus.bonusTextOption.getSiblings()?has_content>
388 // <#list promotionBonus.bonusTextOption.getSiblings() as cur_promotionBonus_bonusTextOption>
389 tempItem = {
390 'BonusTextOption': '${cur_promotionBonus_bonusTextOption.getData()}',
391 'promotionBonusValue': '${cur_promotionBonus_bonusTextOption.promotionBonusValue.getData()}',
392 'extraBonusValue': '${cur_promotionBonus_bonusTextOption.extraBonusValue.getData()}'
393 }
394 cur_items_bonus.push(tempItem);
395 // </#list>
396 // </#if>
397 // end freemarker variables
398
399 let minimumPoints = ${minPoints};
400 let maximumPromotionBonus = ${maxPromotionBonus};
401
402 const pointsInput = document.getElementById("calc-points");
403 const selectedProfile = document.getElementById("calc-profile");
404 const milesResult = document.getElementById("calc-result-miles");
405 const promotionBonusResult = document.getElementById("calc-promotion-bonus");
406 const totalResult = document.getElementById("calc-result");
407
408 // <#if getterUtil.getBoolean(hasExtraBonus.getData())> -> verifica se vai ter ou não o campo de bônus extra
409 let maximumExtraBonus = ${maxExtraBonus};
410 const extraBonusResult = document.getElementById("calc-extra-bonus");
411 // <#else>
412 // </#if>
413
414
415 // Função para remover caracteres não numéricos
416 pointsInput.addEventListener("input", function (event) {
417 let value = pointsInput.value;
418 // Remove todos os caracteres que não são números
419 value = value.replace(/[^0-9]/g, "");
420 // Formata o valor com pontos a cada 3 dígitos
421 value = value.replace(/\B(?=(\d{3})+(?!\d))/g, ".");
422 // Atualiza o valor do campo de entrada com a formatação
423 pointsInput.value = value;
424
425 // Calcula as milhas ao modificar o valor dos pontos caso tenha um perfil selecionado
426 validateValues();
427 if(selectedProfile.value != ""){
428 calculateMiles();
429 }
430 });
431
432 selectedProfile.addEventListener("change", function (event) {
433 calculateMiles();
434 });
435
436 // Função para exibir mensagem de erro
437 function showError(message) {
438 const errorMessage = document.getElementById(message.errorMessage);
439 const errorText = document.getElementById(message.errorText);
440 errorText.textContent = message.content;
441 errorMessage.style.display = "flex";
442 pointsInput.classList.add("error");
443 if (errorText === 'error-text-points') {
444 milesResult.value = "0";
445 promotionBonusResult.value = "0";
446 totalResult.value = "0";
447 // <#if getterUtil.getBoolean(hasExtraBonus.getData())> -> verifica se vai ter ou não o campo de bônus extra
448 extraBonusResult.value = "0";
449 // </#if>
450 }
451 }
452
453 // Função para verificar os campos
454 // <#noparse> -> para que o freemarker não interprete o código
455 function validateValues(){
456 let minPoints = minimumPoints.toLocaleString("pt-BR");
457 // Formata o valor do pointsInput para ficar sem pontos e vírgulas
458 let pointsFormatted = parseFloat(pointsInput.value.replace(/[^0-9]/g, "")) || 0;
459
460 // Verifica se a quantidade de milhas é maior que o mínimo
461 if(pointsFormatted < minimumPoints){
462 pointsInput.classList.add("error-border");
463 showError({
464 errorMessage: "error-message-points",
465 errorText: "error-text-points",
466 content: `Preencha com uma quantidade maior que ${minPoints} pontos`
467 });
468 return;
469 } else {
470 pointsInput.classList.remove("error-border");
471 document.getElementById("error-message-points").style.display = "none";
472 return true;
473 }
474 }
475 // </#noparse>
476
477
478 // Função para calcular as milhas
479 function calculateMiles() {
480 if(validateValues()){
481 // Calcula os resultados apenas se não houver erro na validação do input
482 cur_items_bonus.forEach((bonusText) => {
483 if(bonusText.BonusTextOption === selectedProfile.value){
484 let miles;
485 if(${minMaxValues.milesBankToCalc.getData()} >= 1) {
486 miles = parseFloat(pointsInput.value.replace(/[^0-9]/g, "") / ${minMaxValues.milesBankToCalc.getData()}) || 0;
487 } else {
488 miles = parseFloat(pointsInput.value.replace(/[^0-9]/g, "") * ${minMaxValues.milesBankToCalc.getData()}) || 0;
489 }
490 let promotionMiles = miles * (bonusText.promotionBonusValue.replace(",", ".") || 0);
491
492 promotionMiles = Math.round(promotionMiles);
493
494 milesResult.value = miles.toLocaleString("pt-BR");
495 promotionBonusResult.value = promotionMiles.toLocaleString("pt-BR");
496
497 // <#if getterUtil.getBoolean(hasExtraBonus.getData())> -> verifica se vai ter ou não o campo de bônus extra
498 let extraMiles = miles * (bonusText.extraBonusValue.replace(",", ".") || 0);
499 extraMiles = Math.round(extraMiles);
500 extraBonusResult.value = extraMiles.toLocaleString("pt-BR");
501
502 if(extraMiles > maximumExtraBonus || extraMiles === maximumExtraBonus){
503 extraBonusResult.classList.add("error-border");
504 extraBonusResult.value = maximumExtraBonus.toLocaleString("pt-BR");
505 extraMiles = maximumExtraBonus;
506 let maxExtraMiles = maximumPromotionBonus.toLocaleString("pt-BR");
507 showError({
508 errorMessage: "error-message-extra-bonus",
509 errorText: "error-text-extra-bonus",
510 //<#noparse> -> para que o freemarker não interprete o código
511 content: `O bônus do plano Clube Smiles é limitado a ${maxExtraMiles} milhas`
512 // </#noparse>
513 });
514 } else{
515 extraBonusResult.classList.remove("error-border");
516 extraBonusResult.value = extraMiles.toLocaleString("pt-BR");
517 document.getElementById("error-message-extra-bonus").style.display = "none";
518 }
519 // </#if>
520
521 //<#noparse> -> para que o freemarker não interprete o código
522 if(promotionMiles > maximumPromotionBonus || promotionMiles === maximumPromotionBonus){
523 promotionBonusResult.classList.add("error-border");
524 promotionBonusResult.value = maximumPromotionBonus.toLocaleString("pt-BR");
525 promotionMiles = maximumPromotionBonus;
526 let maxPromotionMiles = maximumPromotionBonus.toLocaleString("pt-BR");
527 showError({
528 errorMessage: "error-message-promotion-bonus",
529 errorText: "error-text-promotion-bonus",
530 content: `O bônus da promoção é limitado a ${maxPromotionMiles} milhas`
531 });
532 } else{
533 promotionBonusResult.classList.remove("error-border");
534 promotionBonusResult.value = promotionMiles.toLocaleString("pt-BR");
535 document.getElementById("error-message-promotion-bonus").style.display = "none";
536 }
537 // </#noparse>
538 // <#if getterUtil.getBoolean(hasExtraBonus.getData())> -> verifica se vai ter ou não o campo de bônus extra
539 let milesTotal = miles + promotionMiles + extraMiles;
540 // <#else>
541 let milesTotal = miles + promotionMiles;
542 // </#if>
543 totalResult.value = milesTotal.toLocaleString("pt-BR");
544 }
545 });
546 }
547 }
548
549 // Adiciona evento de input ao formulário para calcular as milhas
550 const form = document.querySelector(".mod-calc-bancos-l7__form");
551 form.addEventListener("input", calculateMiles);
552 </script>
Confira os termos e condições.
Já está participando da promoção? Aproveite para transferir seus pontos agora mesmo!
Se você ainda não se cadastrou, clique aqui e aproveite!
Todos os bancos e Programas de Fidelidade parceiros da Smiles participam dessa promoção. Veja como é fácil transferir, acesse: https://www.smiles.com.br/transferir-pontos-cartao
Consulte o mínimo de transferência com seu banco.
As milhas terão prazo de validade de 12 meses a partir da data de crédito na sua conta Smiles.
As milhas bônus serão disponibilizadas na sua conta Smiles em até 15 dias úteis após o término da promoção.
Para receber o bônus relativo ao Clube Smiles, é necessário que o participante esteja com a assinatura ativa antes de realizar a transferência dos seus pontos do cartão para sua conta Smiles.
A Smiles irá considerar a promoção de maior percentual de bônus na qual o participante estiver cadastrado e for elegível.
A promoção se encerra em
Promoção encerrada dia 20/12/2024 às 23h59. A página ficará disponível para consulta até o dia 18/03/2025.
REGULAMENTO DA PROMOÇÃO
Esta ação promocional (“Promoção”) é promovida pela GOL LINHAS AÉREAS S.A., administradora do Programa Smiles, sucessora por incorporação da SMILES FIDELIDADE S.A. (CNPJ/MF 05.730.375/0001-20), sociedade anônima regularmente constituída no país, inscrita no CNPJ/MF sob nº 07.575.651/0037-60, com sede na Alameda Rio Negro, nº 585, Edifício Padauiri, Bloco B, 2º andar, conjuntos 21 e 22 – Parte A, Alphaville, CEP 06454-000, na Cidade de Barueri, Estado de São Paulo, doravante designada simplesmente “GOL”.
I - PROMOÇÃO
1. O participante do Programa Smiles, residente e domiciliado no Brasil, com CPF válido, com cadastro ativo no Clube Smiles e/ou pertencente à Categoria Diamante (“Participante”) que, entre 10h00 (horário de Brasília) do dia 19 de dezembro de 2024 e 23h59 (horário de Brasília) do dia 20 de dezembro de 2024 (“Período de Vigência”), se cadastrar na página exclusiva da Promoção e transferir pontos dos programas de pontuação dos cartões de crédito dos bancos nacionais e internacionais dos Parceiros da Smiles, exceto Cartões GOL Smiles (cobranded), receberá 90% (noventa por cento) de Milhas Smiles Bônus (“Milhas Bônus”), calculadas sobre o total de Milhas Smiles Acumuladas com a transferência em decorrência da presente Promoção, conforme regras apresentadas a seguir.
2. Além da bonificação acima informada, os Participantes do Programa Smiles, com cadastro ativo no Clube Smiles nos planos 2.000, 3.000, 5.000, 7.000, 10.000, 20.000 e/ou pertencentes à Categoria Diamante, que participarem da presente Promoção, receberão ainda, diferenciação no Acúmulo de Milhas Smiles como bonificação (“Bônus Clube Smiles – Bancos/Parceiros”), calculadas sobre o total de Milhas Smiles Acumuladas com a transferência em decorrência da presente Promoção, nos seguintes moldes:
• Plano Clube Smiles 2.000 – a bonificação Bônus Clube Smiles Plano 2000 – Bancos/Parceiros, será de 3% (três por cento) de Milhas Smiles Bônus, calculadas sobre o total de Milhas Acumuladas com a transferência em decorrência da presente Promoção;
• Plano Clube Smiles 3.000 – a bonificação Bônus Clube Smiles Plano 3000 – Bancos/Parceiros, será de 3% (três por cento) de Milhas Smiles Bônus, calculadas sobre o total de Milhas Acumuladas com a transferência em decorrência da presente Promoção;
• Plano Clube Smiles 5.000 – a bonificação Bônus Clube Smiles Plano 5000 – Bancos/Parceiros, será de 5% (cinco por cento) de Milhas Smiles Bônus, calculadas sobre o total de Milhas Acumuladas com a transferência em decorrência da presente Promoção
• Plano Clube Smiles 7.000 – a bonificação Bônus Clube Smiles Plano 7000 – Bancos/Parceiros, será de 7% (sete por cento) de Milhas Smiles Bônus, calculadas sobre o total de Milhas Acumuladas com a transferência em decorrência da presente Promoção;
• Plano Clube Smiles 10.000 – a bonificação Bônus Clube Smiles Plano 10000 – Bancos/Parceiros, será de 8% (oito por cento) de Milhas Smiles Bônus, calculadas sobre o total de Milhas Acumuladas com a transferência em decorrência da presente Promoção;
• Plano Clube Smiles 20.000 – a bonificação Bônus Clube Smiles Plano 20000 – Bancos/Parceiros, será de 10% (dez por cento) de Milhas Smiles Bônus, calculadas sobre o total de Milhas Acumuladas com a transferência em decorrência da presente Promoção; e
• Categoria Diamante – a bonificação Bônus Clube Smiles Diamante – Bancos/Parceiros, será de 10% (dez por cento) de Milhas Smiles Bônus, calculadas o total de Milhas Acumuladas com a transferência em decorrência da presente Promoção.
2.1. O Plano Clube Smiles 1.000 não é elegível ao recebimento da diferenciação no Acúmulo de Milhas Smiles como bonificação (“Bônus Clube Smiles – Bancos/Parceiros”), em decorrência da presente Promoção.
2.2. Caso o Participante possua cadastro ativo no Clube Smiles e pertença à categoria Diamante, irá prevalecer o percentual maior de bonificação, que é o da categoria Diamante.
3. As bonificações concedidas por essa Promoção são limitadas a 300.000 (trezentas mil) Milhas Smiles por CPF ou por Conta Família, considerando o somatório das bonificações mencionadas nesta Promoção (limite considerando, inclusive, a soma das bonificações por CPF vinculado à Conta Família)/cada. A título de exemplo, caso o Participante seja membro de uma Conta Família e transfira 300.000 (trezentas mil) Milhas Smiles e os demais membros da mesma Conta Família transfiram, cada um, 300.000 (trezentas mil) Milhas Smiles, todos eles, somados, receberão o máximo de 300.000 (trezentas mil) Milhas Bônus.
3.1. Nos casos de Participantes do produto Conta Família, não será considerado o cadastro realizado por um dos membros ou pelo administrador para que outro Participante do Conta Família realize a transferência. O cadastro é por CPF e este deverá ser o mesmo da Transferência e do cadastro.
4. Caso o Participante faça mais de uma transferência de pontos de mais de um banco ou Programa de Fidelidade parceiro elegível a essa Promoção, será bonificado em todas as transações, respeitando o limite de 300.000 (trezentas mil) Milhas Bônus por CPF ou Conta Família.
5. Caso o Participante cadastre-se em mais de uma promoção ao mesmo tempo da solicitação da transferência, a GOL considerará a promoção com o maior percentual de bônus, desconsiderando qualquer Código Promocional que eventualmente seja concedido.
6. Não serão válidas transferências de Bancos Parceiros não elegíveis a essa Promoção, pontuação de hotel, concessão de milhas, bônus sobre bônus, transferência de pontos dos parceiros de varejo e demais pontuações oriundas de acúmulo de voo.
7. As regras de conversão de pontos são estabelecidas pelos Bancos Parceiros, inclusive os limites mínimos e máximos de transferência de Pontos. Para ter ciência de quantas Milhas Smiles serão creditadas, o Participante deverá consultar previamente as regras de conversão de pontos antes de realizar a transferência de pontos. Consulte os Parceiros elegíveis, bem como as regras de transferência de cada um no site: www.smiles.com.br.
8. As Milhas Smiles transferidas serão válidas de acordo com a categoria do Participante no Programa Smiles, de acordo com o regulamento do Programa Smiles. As Milhas Smiles são de caráter pessoal e intransferível.
9. As Milhas Bônus decorrentes desta Promoção, assim como as Milhas Smiles concedidas como diferenciação no Acúmulo de Milhas Smiles como bonificação (“Bônus Clube Smiles – Bancos/Parceiros”), terão a validade de 12 (doze) meses e serão disponibilizadas na conta Smiles do Participante em até 15 (quinze) dias úteis após o término do Período de Vigência, em 14 de janeiro de 2025. As Milhas Bônus são de caráter pessoal e intransferível.
10. Em caso de cancelamento da solicitação de transferência de Pontos para o Programa Smiles a GOL não efetuará a disponibilização das Milhas Bônus. Caso as Milhas Bônus tenham sido disponibilizadas antes do pedido de cancelamento da transferência de Pontos, a GOL reserva-se no direito de estornar as Milhas Smiles.
11. Esta Promoção não é cumulativa com outras promoções que estejam em vigor ou que venham a ser lançadas.
12. A GOL reserva-se no direito de alterar, suspender ou mesmo encerrar a Promoção a qualquer momento, mediante aviso prévio.
13. Caso seja identificada, a qualquer tempo pela GOL, inclusive após o término da Promoção, a inelegibilidade do Participante ou qualquer irregularidade cometida pelo Participante, inclusive fraude comprovada, a GOL poderá: (i) suspender ou cancelar a Conta Smiles e excluir da Promoção e/ou do Programa Smiles o Participante, inclusive o Participante inelegível à Promoção, que atuou de maneira irregular ou fraudulenta, em caráter temporário ou definitivo; (ii) estornar da Conta Smiles do Participante, inclusive o Participante inelegível à Promoção, as Milhas Smiles obtidas irregularmente, inclusive obtidas mediante fraude; e/ou (iii) cancelar todas as transações realizadas com Milhas Smiles provenientes desta Promoção, obtidas irregularmente ou mediante fraude, incluindo, mas não se limitando, o cancelamento das transações de resgate de prêmios.
14. Em caso de inelegibilidade do Participante, fraude comprovada ou infração ao presente Regulamento, o Participante será excluído automaticamente da Promoção, podendo ainda responder na esfera cível e criminal pelos danos ocasionados, aplicando-se a esta Promoção exclusivamente a legislação brasileira.
15. A tolerância, omissão ou transigência da GOL não implicará em renúncia, ou modificação das condições expressas nas regras desta Promoção.
16. Esta Promoção independe de qualquer modalidade aleatória, não estando, portanto, sujeita à autorização prévia estabelecida no Art. 1º da Lei n° 5.768/71.