/**
 * `crm_etapas.campos_obligatorios` es un array de nombres de columna de
 * `crm_oportunidades`: lo que la oportunidad tiene que tener cargado para entrar
 * a esa etapa. Lo usan tanto el movimiento manual (CRM-12, que devuelve 400 con
 * la lista) como la sincronía automática del presupuesto (CRM-15, que en vez de
 * fallar deja la oportunidad donde está y lo avisa).
 */
export function camposFaltantes(
  entidad: Record<string, unknown>,
  campos: unknown,
): string[] {
  const obligatorios = Array.isArray(campos) ? (campos as string[]) : [];
  return obligatorios.filter((campo) => {
    const valor = entidad[campo];
    return valor === null || valor === undefined || valor === '' || Number(valor) === 0;
  });
}
