El mismo bloque (~100 lineas) estaba copiado en Picking DESPACHO, Picking PICKING
y Recibo. Ahora los tres llaman al mismo metodo. Sin cambios de comportamiento
(la referencia de la NC en la transferencia se asigna una vez antes de las lineas
en vez de dentro del ciclo de articulos).
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Sin cambios de comportamiento. Comentarios en Picking, Recibo,
ConnectionServiceLayer, CreditNotesRepository, InvoiceRepository y
RepositoryWrapper.
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
- ConnectionServiceLayer: ValidarCertificado, Logout, CancelAsyncSBA, DeleteAsyncSBA y throw inalcanzable en PatchAsyncSBA
- HelperDB (SET ejecutaba SQL arbitrario, sin llamadores)
- RepositoryWrapper/IRepositoryWrapper: 11 propiedades que ningun controller usa
- PickingRepository: TotalDetalle_Parcial y _Invoice sin uso; ReciboRepository: SerieOrigen sin uso
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Si la linea de la factura viene de una Entrega (BaseType 15) los lotes se
toman de la linea de la Entrega (BaseLine); si no, de la linea de la factura
(LineNum). Se valida que los lotes cubran la cantidad y se devuelve un error
claro por linea en vez del error generico de SAP.
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
PostReOpen deserializaba el cuerpo vacio del 204 a null y fallaba al marcar
Exito, devolviendo "La Factura no se puede reabrir" aunque SAP la reabria.
Picking ahora agrega el mensaje real de SAP a ese error.
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
DESPACHO y PICKING vuelven a generar nota de crédito sin depender de
Notificacion. Documentada la regla Proceso + Notificacion.
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Se elimina la lectura previa del documento y la validación de existencia
de línea; cada línea se manda con Rate = 0.0 (request validado en SAP).
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>