# US-MGN-006-003-003: Gestionar Recepciones Parciales con Backorder **RF Asociado:** [RF-MGN-006-004](../../02-modelado/requerimientos-funcionales/mgn-006/RF-MGN-006-004-recepciones-de-compras.md) **Módulo:** MGN-006 - Compras Básico **Epic:** Recepciones de Compras **Prioridad:** P1 **Story Points:** 3 **Sprint:** Sprint 14 **Estado:** Ready for Development **Fecha:** 2025-11-24 --- ## User Story **Como** usuario de almacén, **Quiero** gestionar recepciones parciales con backorders, **Para** recibir productos en múltiples entregas del proveedor. --- ## Descripción Detallada Cuando qty_done < qty_expected, el sistema puede crear un backorder (nuevo picking) para las cantidades pendientes. El backorder: - Tiene las líneas con qty pendiente - Mantiene referencia al picking original - Puede validarse cuando llegue el resto --- ## Criterios de Aceptación ### Escenario 1: Crear backorder automático (Camino Feliz) **Dado que** valido picking con línea qty_expected=10, qty_done=7, y acepto backorder, **Cuando** sistema procesa, **Entonces** crea nuevo picking backorder con qty_expected=3, mantiene referencia al original. ### Escenario 2: Validar backorder posteriormente **Dado que** backorder tiene qty_expected=3, **Cuando** registra qty_done=3 y valido, **Entonces** sistema actualiza stock, marca PO como done si todas las líneas completas. ### Escenario 3: Múltiples backorders **Dado que** valido backorder con qty_done=2 de qty_expected=3, **Cuando** acepto crear otro backorder, **Entonces** sistema crea segundo backorder para 1 unidad pendiente. --- ## Reglas de Negocio - **RN-1:** Backorder se crea para qty_expected - qty_done. - **RN-2:** Backorder mantiene backorder_of_id al picking original. - **RN-3:** PO solo pasa a done cuando todos los backorders están validados. --- ## Tareas Técnicas ### Backend - [ ] Service: PickingService.createBackorder(originalPicking, pendingQty) - [ ] Calcular cantidades pendientes por línea - [ ] Mantener trazabilidad (backorder_of_id) - [ ] Validar PO status con backorders - [ ] Unit tests - [ ] Integration tests ### Frontend - [ ] Modal confirmación backorder - [ ] Vista de backorders asociados - [ ] Indicador visual de picking con backorders - [ ] Component tests - [ ] E2E test ### Database - [ ] Campo: inventory.pickings.backorder_of_id - [ ] Índice: idx_pickings_backorder_of --- ## Estimación Detallada | Tarea | Horas | |-------|-------| | Backend | 2 | | Frontend | 1.5 | | Testing | 1 | | Code Review | 0.5 | | **TOTAL** | **5 horas = 3 SP** | --- ## Definition of Done - [ ] Código implementado según ET - [ ] Tests pasando (>80%) - [ ] Code review aprobado - [ ] Backorders correctos - [ ] QA validado - [ ] PO aprobado --- ## Referencias - [RF-MGN-006-004](../../02-modelado/requerimientos-funcionales/mgn-006/RF-MGN-006-004-recepciones-de-compras.md) - [Traceability](../../02-modelado/trazabilidad/TRACEABILITY-MGN-006.yaml)