Actualización del catálogo amrstore.streamingapps.online: cards ahora muestran precio sugerido con markup del 20% redondeado al millar más cercano (pesos colombianos), botón de favorito con persistencia localStorage, y botón directo a WhatsApp con mensaje pre-armado.
Las cards ya no muestran el precio interno. Se calcula
ceil(price × 1.2 / 1000) × 1000
para obtener un precio de venta limpio en COP. Si el producto no tiene precio base se muestra "Consultar".
Un subtexto "Precio sugerido +20%" informa al visitante del margen sugerido.
$_rawPrice = (float)$product['price'];
$_saleAmt = $_rawPrice > 0 ? (int)(ceil($_rawPrice * 1.2 / 1000) * 1000) : 0;
$_saleStr = $_saleAmt > 0
? '$' . number_format($_saleAmt, 0, ',', '.') . ' COP'
: 'Consultar';
// Card display:
<div class="price"><?= amrStoreH($_saleStr) ?></div>
<div class="price-note">Precio sugerido +20%</div>
Cada card tiene un botón corazón (.fav-btn)
que alterna entre far fa-heart (vacío) y fas fa-heart (lleno) vía clase .active.
Los IDs de productos favoritos se guardan en localStorage["amrFavs"] y se restauran al cargar la página.
function amrToggleFav(btn) {
const id = btn.dataset.fav;
let favs = JSON.parse(localStorage.getItem('amrFavs') || '[]');
const idx = favs.indexOf(id);
if (idx === -1) { favs.push(id); btn.classList.add('active'); }
else { favs.splice(idx, 1); btn.classList.remove('active'); }
localStorage.setItem('amrFavs', JSON.stringify(favs));
}
// DOMContentLoaded restore en el mismo <script>
El mini-botón de flecha fue reemplazado por un botón verde WhatsApp
(.mini-cta.wa-btn)
con mensaje pre-armado que incluye título, categoría, precio calculado e ID del producto.
El título/imagen sigue enlazando a la landing de producto /amrstore/producto?id=X.
$_waMsg = "Hola AMR Store. Token: amrstore. Me interesa:\n\n"
. $product['title'] . "\n"
. "Categoría: " . $product['category'] . "\n"
. "Precio: " . $_saleStr . "\n"
. "ID: " . $product['id'] . "\n\n"
. "Por favor confirmar disponibilidad y despacho.";
$_waUrl = 'https://wa.me/' . $whatsappNumber . '?text=' . rawurlencode($_waMsg);
Se añadieron las reglas CSS para los nuevos elementos: botón favorito con estados hover y active, botón mini WhatsApp verde, y nota de precio en muted text bajo el precio principal.
.fav-btn { width:44px; height:44px; border-radius:14px; ... }
.fav-btn.active { background:#fef2f2; color:#ef4444; border-color:#fca5a5; }
.mini-cta.wa-btn { background: #16a34a; }
.price-note { font-size:11px; color:var(--muted); font-weight:700; }
amrstore.php