docs/fix(web): título del selector Copiar de y notas de la prueba contra SAP

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
This commit is contained in:
GeorgeandClaude Sonnet 5.5 committed 2026-10-14 12:00:58 -05:00
1 parent 29e80181fe
commit 7842af0568
4 files changed
+5 -3

No files matched your search

+1
View File
@@ -132,6 +132,7 @@ Lo usan las pantallas con `partner` en su `DocumentScreen` (ventas y compras); e
- **Códigos escritos a mano**: al salir del campo (socio con `resolveOnLeave` en `sbo-lookup-field`; artículo, almacén e impuesto en la grilla) se buscan con `SlLookupApi` (`core/sl/sl-lookup.ts`) en la misma lista que abre "…": se normaliza el código y se completa nombre/descripción; si no existe se avisa (en el campo o en la barra de estado) y la celda vuelve a su valor.
- **Crear**: valida sin SAP (socio, fecha, al menos una línea con artículo, cantidad > 0), quita campos vacíos y filas en blanco, y abre el documento creado.
- **Actualizar**: envía solo la cabecera que cambió y, si cambiaron las líneas, todas con `B1S-ReplaceCollectionsOnPatch: true`. Lleva `If-Match` con el `odata.etag` leído: si otro usuario cambió el documento, SAP responde **412**, no se guarda nada y se ofrece "Recargar".
- **Copiar a / Copiar de** (`document-copy.ts`): los flujos estándar (oferta → orden → entrega → factura → nota de crédito, y los de compras) están en `COPY_FLOWS`. *Copiar a* (documento guardado, abierto y sin cambios) abre el documento de destino nuevo con el origen en el estado de la navegación; *Copiar de* (documento nuevo) lista los abiertos del origen elegido, del mismo socio si ya se indicó. Se copian las líneas abiertas con la cantidad pendiente y `BaseType/BaseEntry/BaseLine`, con lo que SAP enlaza y cierra el origen.
- **Cerrado o cancelado**: solo lectura (sin botón de guardar).
- **Navegación** primero / anterior / siguiente / último por `DocEntry`.
- La lógica sin Angular está en `document-model.ts` (totales, payload, validación, navegación) y el acceso HTTP en `core/sl/sl-document.ts`.
@@ -105,7 +105,7 @@
@if (copyListScreen(); as src) {
<sbo-value-help
[open]="true"
[title]="'Copiar de: ' + src.createLabel.replace('Nueva ', '').replace('Nuevo ', '')"
[title]="'Copiar de: ' + copyListTitle()"
[resource]="src.resource"
[columns]="copyListColumns"
[baseFilter]="copyListFilter()"
@@ -165,6 +165,7 @@ export class DocumentFormPage {
protected readonly copyFromItems = computed<MenuItem[]>(() =>
copySources(this.screen.path).map((p) => ({ id: p, label: menuLabel(p), disabled: !this.isNew() })),
);
protected readonly copyListTitle = computed(() => menuLabel(this.copyListFor() ?? ''));
protected readonly copyListScreen = computed(() => DOCUMENT_SCREENS.find((s) => s.path === this.copyListFor()));
/** Documentos abiertos del origen elegido, del mismo socio si ya se indicó. */
protected readonly copyListFilter = computed(() => {