How do I stop sprites from moving while rotating

I have my sprite turn and move to where i click on the screen, but i want my sprite to first rotate in the direction on my mouse then start moving toward where i clicked but instead it’s both rotating and moving at the same time.

public float speedX = 100;
public float speedY = 100;
public Rigidbody2D rb;
public Vector2 destination;
public Vector2 place;
public Vector2 journey;
public Vector2 gap;

public float speed = 50;
public float angle;
public int angle2;
public bool rotate = false;

void Start()
{
    rb = GetComponent<Rigidbody2D>();
    place = rb.transform.position;
}

void Update()
{
    Rotation();
    Movement();

    angle2 = (int)angle;
}
void LateUpdate()
{
    place = rb.transform.position;
    gap.x = Mathf.Abs(destination.x) - Mathf.Abs(place.x);
    gap.y = Mathf.Abs(destination.y) - Mathf.Abs(place.y);
    if (.05 > Mathf.Abs(gap.x))
    if (.05 > Mathf.Abs(gap.y))
    rb.velocity = new Vector2(0, 0);
}

void Rotation()
{
    if (Input.GetMouseButtonDown(0))
    {
        Vector3 mousePos = Input.mousePosition;
        mousePos.z = 0f;

        Vector3 objectPos = Camera.main.WorldToScreenPoint(transform.position);
        mousePos.x = mousePos.x - objectPos.x;
        mousePos.y = mousePos.y - objectPos.y;

        angle = Mathf.Atan2(mousePos.y, mousePos.x) * Mathf.Rad2Deg;
        angle = angle - 90;
    }

    if (Input.GetMouseButtonDown(1))
    {
        Vector3 mousePos = Input.mousePosition;
        mousePos.z = 0f;

        Vector3 objectPos = Camera.main.WorldToScreenPoint(transform.position);
        mousePos.x = mousePos.x - objectPos.x;
        mousePos.y = mousePos.y - objectPos.y;

        angle = Mathf.Atan2(mousePos.y, mousePos.x) * Mathf.Rad2Deg;
        angle = angle - 90;
    }

    Quaternion qTo = Quaternion.Euler(new Vector3(0, 0, angle2));
    transform.rotation = Quaternion.RotateTowards(transform.rotation, qTo, speed * Time.deltaTime);
}

void Movement()
{
    if (Input.GetMouseButtonDown(0))
    {
        destination = Camera.main.ScreenToWorldPoint(Input.mousePosition);
        journey.x = destination.x - place.x;
        journey.y = destination.y - place.y;
        rb.velocity = new Vector2(journey.normalized.x * speedX * Time.deltaTime, journey.normalized.y * speedY * Time.deltaTime);
    }
}

there is some issues about code workflow that you must learn, some of the tasks that your perform you choose a complicated way, where coud be done pretty easy and fast to read…

its just my opinion, but, you manage the languaje very well, just, read main ordering algorthms or classic examples of programs, just to know how the people before us did that elegants solution, and take some ideas you know, how to face problems.

to solve this particular problem, I just add a epsilon variable that determines the minimal rotation before start to going to the target, also simplified a little the code

public float speedX = 100; 
public float speedY = 100; 
public Rigidbody2D rb; 
public Vector2 destination; 
public Vector2 place; 
public Vector2 journey; 
public float speed = 50;
public float angle;
//public Vector2 gap;
//public float angle2;

public float epsilon = 1f; //dont set it as zero, due float are imprecise, never will get 0 angle

void Start()
{
	rb = GetComponent<Rigidbody2D>();
	place = rb.transform.position;
}
void Update()
{
	PickTarget ();
	place = rb.transform.position;
}
void LateUpdate()
{
	Rotation();
	CheckMovement ();
}

/// <summary>
/// Picks the target destination when any of both buttons is pressed.
/// </summary>
void PickTarget()
{
	//if any of the two buttons is pressed, do this
	if (Input.GetMouseButtonDown(0) || Input.GetMouseButtonDown(1))
	{
		Vector3 mousePos = Input.mousePosition;
		mousePos.z = 0f;
		destination = Camera.main.ScreenToWorldPoint(mousePos);

		rotate = true;
	}
}

public bool rotate = false;//warning, semaphore, done exclusively to enable the rotation and disable it after rotate, 
//to not overwrite rb velocity each frame, used when set up destination, to trigger rotation, dont use in other context  

/// <summary>
/// rotate towards destination, and start displacement
/// </summary>
void Rotation(){
	//measure the angle between the target point and current looking direction
	//assumption, 'forward' of your sprite is the blue axis in editor
	if (!rotate)
		return;
	journey = destination - place;
	angle = Vector3.Angle (transform.forward, journey.normalized);
    //rotate if you miss the point of facing by more than epsilon degrees
	//besides this use the rule of thumb we need to calculate on acute angle and obtuse angle
	if (angle > epsilon && 360 - epsilon > angle)
		transform.rotation = Quaternion.RotateTowards (transform.rotation, Quaternion.LookRotation (journey), speed * Time.deltaTime);
	else {
		StartMovement ();
		rotate = false;
	}
}

/// <summary>
/// init rb displacement towards current destination
/// </summary>
void StartMovement()
{
		destination = Camera.main.ScreenToWorldPoint(Input.mousePosition);
		//the substraction of a vector is the same that substract each axis of the vector
		journey = destination - place;

	    //sqrMagnitude measures the squared distance bethween the two points
	    //(journey is a vector, the "line between points")
		if (.05f*.05f < journey.sqrMagnitude)
			rb.velocity = new Vector2(journey.normalized.x * speedX * Time.deltaTime, journey.normalized.y * speedY * Time.deltaTime);
}

/// <summary>
/// check if have already arrived, else just continue
/// </summary>
void CheckMovement(){
	journey = destination - place;

	//gap = destination - place; unnecessary, journey stores the same value

	//sqrMagnitude measures the squared distance bethween the two points 
	//(journey is a vector, the "line between points")
	//note: replace with if (.5f*.5f > journey.sqrMagnitude || rotate) if you want the following behaviour
	//if you click again while its still going, stop on the site, rotate, and continue to new destination
	//current behaviour: rotate while still going to the previous target
	if (.5f*.5f > journey.sqrMagnitude)
		rb.velocity = Vector2.zero;
}