Transferência de Pontos

selo smiles selo smiles
Transferência de Pontos

Aproveite esta oferta
incrível para os
apaixonados por viagem!

Aproveite esta oferta incrível para os
apaixonados por viagem!

Informe seu CPF ou número Smiles para participar

Confira todos os detalhes da promoção, informe seus dados e confirme sua participação para receber o bônus!

Confira como é fácil participar

offline_pin

Cadastre-se na promoção entre os dias 19/12/2024 e 20/12/2024.

move_down

Transfira seus pontos do cartão para a Smiles até 20/12/2024.

Transferir meus pontos
miles

Ganhe até 100% de bônus para resgatar passagens aéreas, comprar produtos no Shopping Smiles e fazer reservas em hotéis!

Junte mais milhas na Smiles!

Confira quanto você pode ganhar de milhas bônus nessa transferência:

100% de bônus

para Categoria Diamante

Até 100% de bônus

para Cliente Clube Smiles

Cliente 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 mais
Um erro ocorreu enquanto processava o modelo.
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">&plus;</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">&plus;</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">&plus;</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">&equals;</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> 
As milhas bônus serão disponibilizadas na conta Smiles do participante até o dia 14 de janeiro de 2025.
Mulher de bicicleta

Entenda as principais regras desta promoção:

  •  O cadastro é obrigatório na página exclusiva da campanha.
  • O bônus da promoção é limitado a 300.000 milhas por CPF e Conta Família.
  • O bônus da promoção e o bônus adicional por plano do Clube é limitado a 300.000 milhas por CPF e conta Família;
  • A transferência de pontos deve ocorrer dentro do prazo da promoção.
  • As milhas bônus serão creditadas em sua conta Smiles em até 15 dias úteis, ou seja, até 14/01/2025 e serão válidas por 12 meses;
  • Para ganhar o bônus máximo nessa promoção e o bônus adicional, os clientes assinantes do Clube Smiles precisam estar com a assinatura ativa antes de realizar a transferência dos pontos para a Smiles no período da promoção.
  • Consulte o mínimo de transferência e as regras de conversão de pontos com o seu banco.

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!

Product Logo

Ganhe muito mais milhas bônus nas promoções de transferências de pontos

Além de juntar milhas todo mês e ter acesso a muitos outros benefícios exclusivos ao fazer parte do Clube Smiles.

Ainda tem dúvidas?

Quais são os bancos participantes e como transferir pontos do cartão de crédito para minha conta Smiles?

icone seta faq

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

Qual é o mínimo de pontos do cartão para realizar minha transferência nessa promoção?

icone seta faq

Consulte o mínimo de transferência com seu banco.

Qual é a validade das milhas bônus dessa promoção?

icone seta faq

As milhas terão prazo de validade de 12 meses a partir da data de crédito na sua conta Smiles.

Qual é o prazo para crédito do bônus?

icone seta faq

As milhas bônus serão disponibilizadas na sua conta Smiles em até 15 dias úteis após o término da promoção.

Qual bônus receberei se eu aderir ao Clube Smiles depois de pedir a transferência dos pontos?

icone seta faq

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.

Qual bônus receberei se estiver cadastrado em mais de uma promoção no momento da transferência dos pontos?

icone seta faq

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.


Acessar os termos e condições
Voltar ao topo
Voltar
×

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.

Voltar