A function definition is not allowed here before '{' token

#include <LiquidCrystal.h>
#include <SoftwareSerial.h>
#define NOTE_DS2 78
#define NOTE_FS3 185
SoftwareSerial RFID(2, 3); // RX and TX
int data1 = 0;
int z = 0;
int ok = -1 ;
int yes = 13;
double total = 0.0;
int bu = NOTE_DS2;
int sa = NOTE_FS3;
int buzzer = 7;
int cha[7];
int tag1[14] = {2, 55, 52, 48, 48, 49, 50, 48, 52, 57, 70, 70, 68, 3};
int tag2[14] = {2, 55, 52, 48, 48, 49, 55, 49, 51, 55, 52, 48, 52, 3};
int tag3[14] = {2, 55, 52, 48, 48, 49, 50, 51, 53, 69, 69, 66, 68, 3};
int newtag[14] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; // used for read comparisons
double price1 = 10.50;
double price2 = 3.50;
double price3 = 5.00;
int button = 8, button2 = 9, button3 = 12;
LiquidCrystal lcd(11, 10, 6, 5, 4, 3);
void setup() {
  // put your setup code here, to run once:
  RFID.begin(9600); // start serial to RFID reader
  // start serial to PC
  lcd.begin(16, 2);
  pinMode(yes, OUTPUT); // for status LEDs
  pinMode(buzzer, OUTPUT);
  pinMode(button , INPUT);
  pinMode(button2 , INPUT);
  pinMode(button3, INPUT);
  lcd.setCursor(0, 0);
  lcd.println("RFID READER");
  delay(2000);
  lcd.setCursor(0, 0);
  lcd.println("Start shopping");
  delay(3000);
  lcd.clear();
  lcd.clear();
}
boolean comparetag(int aa[14], int bb[14])
{
  boolean ff = false;
  int fg = 0;
  for (int cc = 0 ; cc < 14 ; cc++)
  {
    if (aa[cc] == bb[cc])
    {
      fg++;
    }
  }
  if (fg == 14)
  {
    ff = true;
  }
  return ff;
}
void checkmytags() // compares each tag against the tag just
{
  ok = 0; // this variable helps decision-making,
  if (comparetag(newtag, tag1) == true)
  {
    ok++;
    lcd.setCursor(0, 0);
    lcd.println("black label 350mls");
    lcd.setCursor(7, 1);
    lcd.print("$");
    lcd.println( price1);
    total = total + price1;
    Serial.println(total);
  }
  if (comparetag(newtag, tag2) == true)
  {
    ok++;
    lcd.setCursor(0, 0);
    lcd.println("Nestle Cremora 500grms");
    lcd.setCursor(7, 1);
    lcd.print("$");
    lcd.println( price2);
    total = total + price2;
  }
  if (comparetag(newtag, tag3) == true)
  {
    ok++;
    lcd.setCursor(0, 0);
    lcd.println("Cornflakes 250grms");
    lcd.setCursor(5, 1);
    lcd.print("$");
    lcd.println(price3);
    total = total + price3;
  }
}
void readTags()
{
  int z = 0;
  ok = -1;
  if (RFID.available() > 0)
  {
    // read tag numbers
    delay(1000); // needed to allow time for the dafor (int z = 0 ; z < 14 ; z++) // read the rest of the t{
    data1 = RFID.read();
    newtag[z] = data1;
  }
  RFID.flush(); // stops multiple reads
  // do the tags match up?
  checkmytags();

  // now do something based on tag type
  if (ok > 0) // if we had a match
  {
    //  lcd.setCursor(0,0);
    //lcd.println("Accepted");
    digitalWrite(yes, HIGH);
    tone(7 , sa , 1000);
    delay(1000);
    digitalWrite(yes, LOW);
    noTone(7);
    ok = -1;
  }
  else if (ok == 0) // if we didn't have a match
    ok = -1;
}

void readTag()
{
  ok = -1;
  if (RFID.available() > 0)
  {
    // read tag numbers
    delay(1000); // needed to allow time for the data to come in ffor (int z = 0 ; z < 14 ; z++) // read the rest of the tag
    {
      data1 = RFID.read();
      newtag[z] = data1;
    }
    RFID.flush(); // stops multiple reads
    // do the tags match up?
    checkmytags();
    if (ok > 0) // if we had a match
    {
      //  lcd.setCursor(0,0);
      //lcd.println("Accepted");
      digitalWrite(yes, HIGH);
      tone(7 , sa , 1000);
      delay(1000);
      digitalWrite(yes, LOW);
      noTone(7);
      ok = -1;
    }
    else if (ok == 0) // if we didn't have a match
    {
      ok = -1;
    }
  }
  void checkmytag() // compares each tag against the ta
  {
    ok = 0; // this variable helps decision-making,

    // if it is 1 we have a match, zero is a read but no ma// -1 is no read attempt made
    if (comparetag(newtag, tag1) == true)
    {
      ok++;
      lcd.setCursor(0, 0);
      lcd.println("black label 350mls");
      lcd.setCursor(0, 1);
      lcd.println( "removed");
      total = total - price1;
    }
    if (comparetag(newtag, tag2) == true)
    {
      ok++;
      lcd.setCursor(0, 0);
      lcd.println("Nestle Cremora 500grms");
      lcd.setCursor(0, 1);
      lcd.println( "removed");
      total = total - price2;
    }
    if (comparetag(newtag, tag3) == true)
    {
      ok++;
      lcd.setCursor(0, 0);
      lcd.println("Cornflakes 250grms");
      lcd.setCursor(0, 1);
      lcd.println("removed");
      total = total - price3;
    }
  }
  void loop()
  {
    // put your main code here, to run repeatedly
    if ((digitalRead(button) == HIGH ) && ((digitalRead(button2 ) == LOW)))
    {
      readTags();
      lcd.clear();
      lcd.setCursor(0, 0);
      lcd.print("shopping in progress");
      delay(1000);
      lcd.clear();
    }
    if (digitalRead(button) == LOW)
    {
      total = 0.0;
    }
    if (digitalRead(button2) == HIGH && (digitalRead(button) == HIGH))
    {
      lcd.setCursor(0, 0);
      lcd.println("the total is");
      lcd.setCursor(5, 1);
      lcd.print("$");
      lcd.println(total);
    }
    if (digitalRead(button3) == HIGH && (digitalRead(button) == HIGH))
    {
      lcd.clear();
      readTag();
    }
  }

I am getting the error message after the void loop(). Please help.

void readTag()
{
  ok = -1;
  if (RFID.available() > 0)
  {
    // read tag numbers
    delay(1000); // needed to allow time for the data to come in ffor (int z = 0 ; z < 14 ; z++) // read the rest of the tag
    {
      data1 = RFID.read();
      newtag[z] = data1;
    }
    RFID.flush(); // stops multiple reads
    // do the tags match up?
    checkmytags();
    if (ok > 0) // if we had a match
    {
      //  lcd.setCursor(0,0);
      //lcd.println("Accepted");
      digitalWrite(yes, HIGH);
      tone(7 , sa , 1000);
      delay(1000);
      digitalWrite(yes, LOW);
      noTone(7);
      ok = -1;
    }
    else if (ok == 0) // if we didn't have a match
    {
      ok = -1;
    }
  }

Count, in readTag(), the { and the } do they equal?

+1 for using code tags.

Notice how the indentation of the functions changes after the readTag() function?

Thank you for the pointers. It really helped. The code is now compiling