Formulario modal especializado para capturar o revisar la información de una cuenta de deducción. Soporta valores iniciales de edición, contexto del tercero y plan de cuentas, y modo de solo lectura. El componente valida y produce el resultado; la persistencia final corresponde al consumidor/flujo que lo abre.
libs/shared/ui/src/lib/modals/components/cuenta-deduccion-modal/ (.component.ts, .html, .scss, .spec.ts). Clase CuentaDeduccionDialogComponent.
editData?: CuentaDeduccionData: datos para precargar/editar.tipoDeduccion?: TipoDeduccion: RTF, IVA, ICA, CE u OD.baseMinima, totalAntesImpuesto, totalImpuesto: contexto para cálculos/validación del formulario.terceroInfo?, planCuentaInfo?: información contextual que entrega el llamador.isViewMode: impide cambios cuando se consulta. saved (output) emite CuentaDeduccionData al guardar. Si el diálogo fue abierto con DialogService, cierra por DialogRef con el resultado; cancelar retorna null. Si hay cambios pendientes, el componente abre una confirmación antes de cancelar.
Usa FormBuilder, estado de formulario y componentes del UI kit. También utiliza DialogService/DialogRef para el ciclo de diálogo. No se observa un cliente API de negocio inyectado directamente: la selección de referencias y la persistencia deben venir del consumidor o de servicios propios del feature.
const ref = this.dialogService.open(CuentaDeduccionDialogComponent, {
data: { tipoDeduccion, baseMinima, totalAntesImpuesto, terceroInfo, planCuentaInfo },
});
ref.afterClosed().subscribe((result) => {
if (result) this.actualizarDeduccion(result);
});
El shape de data debe corresponder a los inputs que inicializa la versión del diálogo; no asumir que saved es emitido si el componente se consume únicamente mediante afterClosed().
Es una interacción propia de contabilidad/facturación, no un selector genérico. Evaluar mover el flujo a la feature que lo posee y dejar en shared/ui solo si varios módulos comparten realmente el mismo formulario. Mantener cálculos y reglas de dominio fuera del shell modal; contratos de negocio compartidos van a libs/domain.