def METHOD_NAME(
    cls,
    cleaned_channels,
    sale_type,
    errors: defaultdict[str, List[ValidationError]],
    error_code,
):
    channels_with_invalid_value_precision = []
    channels_with_invalid_percentage_value = []
    for cleaned_channel in cleaned_channels.get("add_channels", []):
        channel = cleaned_channel["channel"]
        currency_code = channel.currency_code
        discount_value = cleaned_channel.get("discount_value")
        if not discount_value:
            continue
        if sale_type == DiscountValueType.FIXED:
            try:
                validate_price_precision(discount_value, currency_code)
            except ValidationError:
                channels_with_invalid_value_precision.append(
                    cleaned_channel["channel_id"]
                )
        elif sale_type == DiscountValueType.PERCENTAGE:
            if discount_value > 100:
                channels_with_invalid_percentage_value.append(
                    cleaned_channel["channel_id"]
                )
    if channels_with_invalid_value_precision:
        errors["input"].append(
            ValidationError(
                "Invalid amount precision.",
                code=error_code,
                params={"channels": channels_with_invalid_value_precision},
            )
        )
    if channels_with_invalid_percentage_value:
        errors["input"].append(
            ValidationError(
                "Invalid percentage value.",
                code=error_code,
                params={"channels": channels_with_invalid_percentage_value},
            )
        )
    return cleaned_channels