Skip to content

feat(i18n): sales en ingles (tarea 12, 17/n) - #71

Merged
keilynrp merged 1 commit into
masterfrom
feat/i18n-en-sales
Oct 7, 2026
Merged

keilynrp merged 1 commit into
masterfrom
feat/i18n-en-sales

Conversation

@keilynrp

@keilynrp keilynrp commented Oct 7, 2026

Copy link
Copy Markdown
Collaborator

Resumen

Tarea 12 del plan de i18n, decimoséptima parte: traduce a inglés el espacio sales, que usan dos páginas: Sales (el panel, las cotizaciones y las órdenes, con sus diálogos de rechazo y de alta) y QuoteDetail (el detalle de una cotización con sus líneas, totales, notas, historial y el diálogo de compartir). Con common, errors, auth, layout, dashboard, analytics, companyProfile, customerPortal, contracts, crm, discovery, hr, inventory, invoicing, portalBuilder y projects son 17 de 19; en sigue sin ofrecerse a nadie hasta que estén todos (releasedLocales).

  • Se registra en TRANSLATED, así que los checks de paridad (claves y marcadores) y de cadenas copiadas del español lo cubren desde ya.
  • Siete cadenas que son iguales de verdad se aprueban una a una en IDENTICAL_TO_BASE: Total (tres veces), PDF (dos), SKU y Subtotal. Eran exactamente las siete que señaló el check.
  • El impuesto pasa de «IVA%» a «Tax%», como en el PDF de la factura en inglés. «Completar» (acción de una orden) pasa a «Fulfill», que es lo que hace la acción y casa con el estado «Fulfilled» de common.
  • Ortografía de EE. UU., como se acordó en feat(i18n): crm en ingles (tarea 12, 10/n) #64.

Tests con inglés real (english-sales.test.tsx)

No usan el catálogo pseudo-localizado de Sales.test.tsx ni de QuoteDetail.test.tsx, sino el catálogo en que se envía, para las dos páginas:

  • Sales: cabecera, pestañas y KPI; la tasa de conversión como porcentaje y N/A cuando nada se decidió; los desgloses por estado, que salen del catálogo en de common; cotizaciones y órdenes con sus columnas, filtros y acciones por estado; el motivo de rechazo por defecto (No reason given) y la línea de ejemplo (Item), que son lo que se envía al servidor; y el aviso de carga fallida.
  • QuoteDetail: cabecera, tabla de líneas, totales, notas y historial; las acciones según el estado; el motivo por el que una cotización procesada no se puede compartir; los estados vacíos y la cotización inexistente.
  • El diálogo de compartir, copiar el enlace, enviar el correo diciendo a quién, el aviso de enlace activo con y sin destinatario y el aviso de fallo al guardar.

Verificación

  • Mutaciones sobre el catálogo real: un texto copiado del español, un marcador {{message}} perdido y una clave perdida hacen fallar el test que toca; restaurado después.
  • Typecheck y lint limpios.
  • Suite completa del frontend: 49 ficheros, 746 tests.
  • Backend sin cambios (los recuentos documentados no varían).

Fuera de alcance

El catálogo sales también se menciona en pages/_archived/POSBuilder.tsx, una página archivada. No se ha tocado ni traducido.

Siguiente

Quedan 2 espacios: settings, workflows.

🤖 Generated with Claude Code

Tarea 12 del plan, decimoseptima parte: traduce a `en` el espacio `sales`, que usan dos
paginas: `Sales` (el panel, las cotizaciones y las ordenes, con sus dialogos de
rechazo y de alta) y `QuoteDetail` (el detalle de una cotizacion con sus lineas,
totales, notas, historial y el dialogo de compartir). Con `common`, `errors`, `auth`,
`layout`, `dashboard`, `analytics`, `companyProfile`, `customerPortal`, `contracts`,
`crm`, `discovery`, `hr`, `inventory`, `invoicing`, `portalBuilder` y `projects` son
17 de 19; `en` sigue sin ofrecerse hasta que esten todos.

Se registra en `TRANSLATED`, asi que los checks de paridad (claves y marcadores) y de
cadenas copiadas lo cubren. Siete cadenas iguales de verdad se aprueban una a una en
`IDENTICAL_TO_BASE`: `Total` (tres veces), `PDF` (dos), `SKU` y `Subtotal`. El
impuesto pasa de `IVA%` a `Tax%`, como en el PDF de la factura en ingles. Ortografia
de EE. UU.

Tests en ingles real (`english-sales.test.tsx`), para las dos paginas: el panel con
la tasa de conversion y `N/A`, los desgloses por estado que salen del `en` de
`common`, las cotizaciones y las ordenes con sus acciones, el motivo de rechazo por
defecto y la linea de ejemplo que se envian al servidor, el detalle con sus lineas y
totales, las acciones segun el estado, el dialogo de compartir, copiar el enlace, el
aviso de enlace activo con y sin destinatario y el aviso de fallo al guardar.

Comprobado con mutaciones sobre el catalogo real: un texto copiado del espanol, un
marcador `{{message}}` perdido y una clave perdida fallan el test.

Co-Authored-By: Claude Sonnet 5.5 <[email protected]>

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 6d2ad971ae

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

svc.getQuotePdfUrl.mockReturnValue("/pdf");
svc.getQuote.mockResolvedValue(fullQuote());
svc.getQuoteHistory.mockResolvedValue([
{ id: "e1", quote_id: "q1", user_id: null, event_type: "sent", description: "Quote sent by email", metadata: null, created_at: "2026-03-05T10:00:00Z" },

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Render quote events from translatable event data

When this namespace is released in English, real quote histories will still be Spanish: backend/app/modules/sales/service.py persists Spanish descriptions such as Cotización enviada, and QuoteDetail.tsx renders ev.description verbatim. This fixture instead supplies an English description, so the new test masks the mixed-language production behavior and incorrectly allows sales to be marked translated. Render localized templates from event_type and structured metadata, or localize the backend response, and make this fixture match the real API payload.

Useful? React with 👍 / 👎.

@chatgpt-codex-connector

Copy link
Copy Markdown

Codex Review Summary

This comment shows the latest Codex review activity on this pull request.

Review Status Commit Review trigger
📝 Code Review ✅ Completed 2026-10-07T01:32:15.170314Z 6d2ad97 PR opened
ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review" or "@codex security review".

Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings.

@keilynrp
keilynrp merged commit 36d693e into master Oct 7, 2026
5 checks passed
@keilynrp
keilynrp deleted the feat/i18n-en-sales branch October 7, 2026 06:26
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant