Skip to content

Commit 9049f12

Browse files
committed
fix(new-plan-selection): align advisor email ranges pricing
1 parent eb6e418 commit 9049f12

3 files changed

Lines changed: 53 additions & 22 deletions

File tree

docs/specs/SPEC_20260518_plan-envios-picture-13.md

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -166,6 +166,8 @@ Comportamiento esperado:
166166
- el mensaje de `picture_15` aparece al seleccionar un plan menor;
167167
- la opcion menos de 100.000 debe comportarse como downgrade y mostrar el mismo
168168
mensaje de `picture_15`;
169+
- el precio principal de la card debe pasar a `A medida*` (ES) / `Tailored*`
170+
(EN), siguiendo el patron visual de CTA comercial;
169171
- el CTA principal debe pasar a modo comercial (Contactar a Asesor), igual que
170172
en el escenario de Mas de 10.000.000;
171173
- el sticky summary debe pasar a CTA comercial y mantener resumen estandar del
@@ -178,6 +180,8 @@ Cuando el usuario selecciona la opcion Mas de 10.000.000 en el dropdown:
178180

179181
- debe mostrarse el bloque informativo visual de `picture_14` (mensaje azul);
180182
- debe mostrarse un link/accion de contacto comercial dentro del bloque;
183+
- el precio principal de la card debe pasar a `A medida*` (ES) / `Tailored*`
184+
(EN), manteniendo el sticky con resumen estandar del plan seleccionado;
181185
- el CTA principal de la card debe pasar a modo comercial (texto Contactar a
182186
Asesor);
183187
- el destino del CTA comercial debe ser consistente con el flujo actual de
@@ -243,11 +247,13 @@ Agregar/actualizar tests para validar:
243247
- visualizacion de mensaje `picture_15` al seleccionar plan menor (downgrade).
244248
- visualizacion de mensaje `picture_15` al seleccionar la opcion menos de
245249
100.000.
250+
- precio principal `A medida*` al seleccionar la opcion menos de 100.000.
246251
- CTA principal en modo Contactar a Asesor para downgrade.
247252
- sticky summary en modo CTA comercial para downgrade, manteniendo resumen
248253
estandar del plan.
249254
- ocultamiento del mensaje `picture_15` al volver a plan igual o mayor.
250255
- visualizacion de bloque `picture_14` al seleccionar Mas de 10.000.000.
256+
- precio principal `A medida*` al seleccionar Mas de 10.000.000.
251257
- CTA principal en modo Contactar a Asesor para Mas de 10.000.000.
252258
- sticky summary sincronizado en modo CTA comercial para Mas de 10.000.000,
253259
manteniendo resumen estandar del plan.
@@ -263,9 +269,11 @@ Agregar/actualizar tests para validar:
263269
vigente por Envios.
264270
- Plan/frecuencia/precio/promocode/CTA sincronizados.
265271
- Escenario downgrade implementado con mensaje de `picture_15`, CTA comercial
266-
y sticky alineado al patron de `ContactsPlan`.
272+
y card principal en modo precio personalizado, con sticky alineado al patron
273+
de `ContactsPlan`.
267274
- Escenario alto volumen implementado con mensaje de `picture_14`, CTA
268-
comercial y sticky alineado al patron de `ContactsPlan`.
275+
comercial y card principal en modo precio personalizado, con sticky alineado
276+
al patron de `ContactsPlan`.
269277
- i18n ES/EN completo para nuevos textos.
270278
- Tests en verde con cobertura de escenario principal y casos borde.
271279
- Sin regresiones funcionales en `NewPlanSelection`.

src/components/BuyProcess/NewPlanSelection/EmailsPlan/index.js

Lines changed: 31 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -160,6 +160,7 @@ export const EmailsPlan = InjectAppServices(
160160
selectedEmailCapacity > 0 &&
161161
selectedEmailCapacity < currentSessionEmailCapacity));
162162
const shouldShowHighVolumeMessage = isMoreThan10mSelected;
163+
const shouldShowCustomPrice = isLessThan100kSelected || isMoreThan10mSelected;
163164
const shouldUseAdvisorCta = shouldShowDowngradeWarning || shouldShowHighVolumeMessage;
164165
const shouldShowCurrentPlanWarning =
165166
!isFreeAccount &&
@@ -352,18 +353,24 @@ export const EmailsPlan = InjectAppServices(
352353
<span className="dp-new-plan-selection-price-label">
353354
<FormattedMessage id="buy_process.new_plan_selection.price_label" />
354355
</span>
355-
<div className="dp-new-plan-selection-price-value">
356-
US$
357-
<FormattedNumber
358-
value={displayedMonthlyPrice}
359-
{...getFormattedPriceOptions(displayedMonthlyPrice)}
360-
/>
361-
<span className="dp-new-plan-selection-price-period">
362-
/<FormattedMessage id="buy_process.new_plan_selection.month_period" />*
363-
</span>
364-
</div>
356+
{shouldShowCustomPrice ? (
357+
<div className="dp-new-plan-selection-price-value dp-new-plan-selection-custom-price">
358+
<FormattedMessage id="buy_process.new_plan_selection.custom_price_value" />
359+
</div>
360+
) : (
361+
<div className="dp-new-plan-selection-price-value">
362+
US$
363+
<FormattedNumber
364+
value={displayedMonthlyPrice}
365+
{...getFormattedPriceOptions(displayedMonthlyPrice)}
366+
/>
367+
<span className="dp-new-plan-selection-price-period">
368+
/<FormattedMessage id="buy_process.new_plan_selection.month_period" />*
369+
</span>
370+
</div>
371+
)}
365372

366-
{!shouldUseAdvisorCta && hasPromocodeDiscount && (
373+
{!shouldShowCustomPrice && !shouldUseAdvisorCta && hasPromocodeDiscount && (
367374
<div className="dp-new-plan-selection-price-detail">
368375
<p>
369376
<span className="dp-new-plan-selection-old-price">
@@ -413,15 +420,19 @@ export const EmailsPlan = InjectAppServices(
413420
<span>
414421
<FormattedMessage id="buy_process.shopping_cart.renewal_description" />
415422
</span>
416-
<br />
417-
<b>
418-
<FormattedMessage
419-
id="buy_process.new_plan_selection.emails_extra_email_price"
420-
values={{
421-
price: unitPriceDecimals(extraEmailPrice),
422-
}}
423-
/>
424-
</b>
423+
{!shouldShowCustomPrice && (
424+
<>
425+
<br />
426+
<b>
427+
<FormattedMessage
428+
id="buy_process.new_plan_selection.emails_extra_email_price"
429+
values={{
430+
price: unitPriceDecimals(extraEmailPrice),
431+
}}
432+
/>
433+
</b>
434+
</>
435+
)}
425436
</p>
426437
</aside>
427438
</div>

src/components/BuyProcess/NewPlanSelection/index.test.js

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -920,6 +920,12 @@ describe('NewPlanSelection component', () => {
920920
name: 'buy_process.new_plan_selection.contact_advisor_cta',
921921
}),
922922
).toHaveAttribute('href', '/upgrade-suggestion-form');
923+
expect(
924+
screen.getByText('buy_process.new_plan_selection.custom_price_value'),
925+
).toBeInTheDocument();
926+
expect(
927+
screen.queryByText('buy_process.new_plan_selection.emails_extra_email_price'),
928+
).not.toBeInTheDocument();
923929
expect(
924930
screen.getByRole('link', {
925931
name: 'buy_process.new_plan_selection.sticky_custom_cta',
@@ -965,6 +971,12 @@ describe('NewPlanSelection component', () => {
965971
name: 'buy_process.new_plan_selection.contact_advisor_cta',
966972
}),
967973
).toHaveAttribute('href', '/upgrade-suggestion-form');
974+
expect(
975+
screen.getByText('buy_process.new_plan_selection.custom_price_value'),
976+
).toBeInTheDocument();
977+
expect(
978+
screen.queryByText('buy_process.new_plan_selection.emails_extra_email_price'),
979+
).not.toBeInTheDocument();
968980
expect(
969981
screen.getByRole('link', {
970982
name: 'buy_process.new_plan_selection.sticky_custom_cta',

0 commit comments

Comments
 (0)