diff --git a/backlog/features.json b/backlog/features.json index 98c522e..b90561f 100644 --- a/backlog/features.json +++ b/backlog/features.json @@ -6832,13 +6832,15 @@ "description": "Product frontend price repeats IVA 10% in inclusive and breakdown labels; show the VAT rate only once without losing gross/net meaning.", "priority": "med", "risk": "low", - "status": "pending", + "status": "done", "created_at": "2026-08-22", "gates": { - "reviewer": false, - "security": false, - "qa": false - } + "reviewer": true, + "security": true, + "qa": true, + "close": true + }, + "completed_at": "2026-08-22T16:21:15Z" } ] } diff --git a/project/frontend/src/app/products/[slug]/page.tsx b/project/frontend/src/app/products/[slug]/page.tsx index 1beaf51..c12b719 100644 --- a/project/frontend/src/app/products/[slug]/page.tsx +++ b/project/frontend/src/app/products/[slug]/page.tsx @@ -146,7 +146,7 @@ export default async function ProductPage({ params }: Props) {
{formatPrice(grossCents)} - inc. IVA {vatPercent}% + inc. IVA
{formatPrice(netCents)} sin IVA · IVA {vatPercent}% diff --git a/work/artifacts/F-166/architect.md b/work/artifacts/F-166/architect.md new file mode 100644 index 0000000..6a28288 --- /dev/null +++ b/work/artifacts/F-166/architect.md @@ -0,0 +1,3 @@ +# F-166 — Diseño + +No cambiar cálculos ni formato monetario. Eliminar únicamente `{vatPercent}%` del label junto al PVP bruto; conservarlo una vez en la línea neta/desglose. diff --git a/work/artifacts/F-166/documenter.md b/work/artifacts/F-166/documenter.md new file mode 100644 index 0000000..545d863 --- /dev/null +++ b/work/artifacts/F-166/documenter.md @@ -0,0 +1,3 @@ +# F-166 + +El porcentaje de IVA aparece una sola vez en el desglose de precio. diff --git a/work/artifacts/F-166/implementer.md b/work/artifacts/F-166/implementer.md new file mode 100644 index 0000000..d459db6 --- /dev/null +++ b/work/artifacts/F-166/implementer.md @@ -0,0 +1,3 @@ +# F-166 — Implementer + +Eliminado porcentaje duplicado del label bruto. Queda `inc. IVA` y el porcentaje aparece una sola vez en `sin IVA · IVA N%`. Frontend build y tsc PASS. diff --git a/work/artifacts/F-166/leader-close.json b/work/artifacts/F-166/leader-close.json new file mode 100644 index 0000000..6a272d1 --- /dev/null +++ b/work/artifacts/F-166/leader-close.json @@ -0,0 +1 @@ +{"feature_id":"F-166","agent":"leader","stage":"close","verdict":"APPROVED","checks":[{"item":"all gates/build","ok":true}],"issues":[]} diff --git a/work/artifacts/F-166/qa.json b/work/artifacts/F-166/qa.json new file mode 100644 index 0000000..e02874f --- /dev/null +++ b/work/artifacts/F-166/qa.json @@ -0,0 +1 @@ +{"feature_id":"F-166","agent":"qa","stage":"qa_gate","verdict":"APPROVED","checks":[{"item":"inc IVA without rate","ok":true},{"item":"rate retained once","ok":true},{"item":"frontend build","ok":true}],"issues":[]} diff --git a/work/artifacts/F-166/reviewer.json b/work/artifacts/F-166/reviewer.json new file mode 100644 index 0000000..5dcc9e7 --- /dev/null +++ b/work/artifacts/F-166/reviewer.json @@ -0,0 +1 @@ +{"feature_id":"F-166","agent":"reviewer","stage":"review_gate","verdict":"APPROVED","checks":[{"item":"VAT rate once","ok":true},{"item":"build","ok":true}],"issues":[]} diff --git a/work/artifacts/F-166/security.json b/work/artifacts/F-166/security.json new file mode 100644 index 0000000..b4ba2dc --- /dev/null +++ b/work/artifacts/F-166/security.json @@ -0,0 +1 @@ +{"feature_id":"F-166","agent":"security","stage":"security_gate","verdict":"APPROVED","checks":[{"item":"display only","ok":true}],"issues":[]} diff --git a/work/current.md b/work/current.md index 97890db..c87b91a 100644 --- a/work/current.md +++ b/work/current.md @@ -1,3 +1,3 @@ -# F-162 — Add storefront product link to inventory +# F-166 — Remove duplicate VAT rate in storefront price -Añadir columna final **Tienda** en Inventario. Cada producto activo enlaza a `http://192.168.18.93:3003/products/{slug}` en nueva pestaña, reutilizando icono, estilos y seguridad `noopener noreferrer` del listado Productos. +En ficha de producto mantener `PVP inc. IVA` y mostrar el porcentaje solo en el desglose neto: `€14.40 sin IVA · IVA 10%`. diff --git a/work/runtime-status.json b/work/runtime-status.json index 550df0a..ac347f4 100644 --- a/work/runtime-status.json +++ b/work/runtime-status.json @@ -1,68 +1,68 @@ { - "feature_id": "F-162", + "feature_id": "F-166", "stage": "close", "agent": "leader", - "action": "Close Inventory link fix", + "action": "Close VAT label fix", "state": "running", "next_agent": "leader", "waiting_for": "Seleccionar una feature pending y actualizar este estado", - "updated_at": "2026-08-22T16:18:19Z", + "updated_at": "2026-08-22T16:20:59Z", "timeline": [ { - "ts": "2026-08-22T16:16:06Z", + "ts": "2026-08-22T16:18:46Z", "agent": "leader", "stage": "intake", "state": "running", - "message": "Add storefront link column to Inventory" + "message": "Remove repeated VAT rate from storefront price" }, { - "ts": "2026-08-22T16:16:31Z", + "ts": "2026-08-22T16:19:03Z", "agent": "architect", "stage": "design", "state": "running", - "message": "Reuse Products storefront link pattern" + "message": "Keep VAT rate only in price breakdown" }, { - "ts": "2026-08-22T16:16:54Z", + "ts": "2026-08-22T16:19:18Z", "agent": "implementer", "stage": "build", "state": "running", - "message": "Add Tienda link column to Inventory" + "message": "Remove duplicate VAT percent label" }, { - "ts": "2026-08-22T16:17:31Z", + "ts": "2026-08-22T16:19:59Z", "agent": "reviewer", "stage": "review_gate", "state": "running", - "message": "Review Inventory storefront link" + "message": "Review VAT label" }, { - "ts": "2026-08-22T16:17:46Z", + "ts": "2026-08-22T16:20:11Z", "agent": "security", "stage": "security_gate", "state": "running", - "message": "Check external storefront link safety" + "message": "Check display-only change" }, { - "ts": "2026-08-22T16:17:57Z", + "ts": "2026-08-22T16:20:24Z", "agent": "qa", "stage": "qa_gate", "state": "running", - "message": "Validate Inventory Tienda column" + "message": "Validate one VAT rate label" }, { - "ts": "2026-08-22T16:18:09Z", + "ts": "2026-08-22T16:20:36Z", "agent": "documenter", "stage": "document", "state": "running", - "message": "Document Inventory storefront link" + "message": "Document VAT label" }, { - "ts": "2026-08-22T16:18:19Z", + "ts": "2026-08-22T16:20:59Z", "agent": "leader", "stage": "close", "state": "running", - "message": "Close Inventory link fix" + "message": "Close VAT label fix" } ] }