async Task <long> save_new_plastic_cover_quantities(long sp_id, SH_PLASTIC_COVER_DATA mydata)
        {
            try
            {
                myconnection.openConnection();
                SqlCommand cmd = new SqlCommand("SH_SAVE_NEW_PLASTIC_COVER_QUANTITIES", DatabaseConnection.mConnection);
                cmd.CommandType = CommandType.StoredProcedure;
                cmd.Parameters.AddWithValue("@SH_SPECIFICATION_OF_PLASTIC_COVER_ID", sp_id);
                cmd.Parameters.AddWithValue("@SH_SUPPLIER_ID", mydata.supplier.SH_ID);
                cmd.Parameters.AddWithValue("@SH_SUPPLIER_BRANCH_ID", mydata.supplier_branch.SH_ID);
                cmd.Parameters.AddWithValue("@SH_ADDITION_DATE", mydata.addition_date);
                cmd.Parameters.AddWithValue("@SH_ADDITION_PERMISSION_NUMBER", mydata.addition_permission_number);
                cmd.Parameters.AddWithValue("@SH_CONTAINER_NAME", mydata.container_name);
                cmd.Parameters.AddWithValue("@SH_NO_OF_ITEMS_PER_CONTAINER", mydata.no_items_per_container);
                cmd.Parameters.AddWithValue("@SH_NO_OF_CONTAINERS", mydata.no_of_containers);
                cmd.Parameters.AddWithValue("@SH_TOTAL_NO_ITEMS", mydata.total_no_items());

                SqlDataReader reader = cmd.ExecuteReader();
                long          myid   = 0;
                if (reader.Read())
                {
                    myid = long.Parse(reader["myidentity"].ToString());
                }
                reader.Close();

                myconnection.closeConnection();
                return(myid);
            }
            catch (Exception ex)
            {
                MessageBox.Show("ERROR WHILE ADDING NEW PLASTIC COVER QIANTITIES " + ex.ToString());
            }
            return(0);
        }
 async Task <long> save_new_specification(SH_PLASTIC_COVER_DATA mydata)
 {
     try
     {
         myconnection.openConnection();
         SqlCommand cmd = new SqlCommand("SH_INSERT_NEW_PLASTIC_COVER_SPECIFICATION", DatabaseConnection.mConnection);
         cmd.CommandType = CommandType.StoredProcedure;
         cmd.Parameters.AddWithValue("@SH_CLIENT_ID", mydata.client.SH_ID);
         cmd.Parameters.AddWithValue("@SH_SIZE_ID", mydata.size.SH_ID);
         cmd.Parameters.AddWithValue("@SH_LOGO_OR_NOT", mydata.logo_or_not);
         cmd.Parameters.AddWithValue("@SH_NO_OF_CONTAINERS", mydata.no_of_containers);
         cmd.Parameters.AddWithValue("@SH_CONTAINER_NAME", mydata.container_name);
         cmd.Parameters.AddWithValue("@SH_TOTAL_NO_ITEMS", mydata.total_no_items());
         cmd.Parameters.AddWithValue("@SH_PILLOW_COLOR_ID", mydata.pillow_color.SH_ID);
         SqlDataReader reader = cmd.ExecuteReader();
         long          myid   = 0;
         if (reader.Read())
         {
             myid = long.Parse(reader["myidentity"].ToString());
         }
         reader.Close();
         myconnection.closeConnection();
         return(myid);
     }
     catch (Exception ex)
     {
         MessageBox.Show("ERROR WHILE ADDING NEW SPECIFICATION " + ex.ToString());
     }
     return(0);
 }
 async Task upsate_specifications(long sp_id, SH_PLASTIC_COVER_DATA mydata)
 {
     try
     {
         myconnection.openConnection();
         SqlCommand cmd = new SqlCommand("SH_UPDATE_PLASTIC_COVER_SPECIFICATION_QUANTITIES", DatabaseConnection.mConnection);
         cmd.CommandType = CommandType.StoredProcedure;
         cmd.Parameters.AddWithValue("@SH_NO_OF_CONTAINERS", mydata.no_of_containers);
         cmd.Parameters.AddWithValue("@SH_TOTAL_NO_ITEMS", mydata.total_no_items());
         cmd.Parameters.AddWithValue("@SH_SP_ID", sp_id);
         cmd.ExecuteNonQuery();
         myconnection.closeConnection();
     }
     catch (Exception ex)
     {
         MessageBox.Show("ERROR WHILE UPDATING SPECIFICATIONS " + ex.ToString());
     }
 }
        async Task save_plastic_cover_containers(long qu_id, SH_PLASTIC_COVER_DATA mydata)
        {
            try
            {
                myconnection.openConnection();
                for (int i = 0; i < mydata.no_of_containers; i++)
                {
                    SqlCommand cmd = new SqlCommand("SH_SAVE_NEW_PLASTIC_COVER_CONTAINER", DatabaseConnection.mConnection);
                    cmd.CommandType = CommandType.StoredProcedure;
                    cmd.Parameters.AddWithValue("@SH_QUANTITY_OF_PLASTIC_COVER_ID", qu_id);
                    cmd.Parameters.AddWithValue("@SH_CONTAINER_NAME", mydata.container_name);
                    cmd.Parameters.AddWithValue("@SH_ADDTION_DATE", mydata.addition_date);
                    cmd.Parameters.AddWithValue("@SH_NO_ITEMS", mydata.no_items_per_container);
                    cmd.Parameters.AddWithValue("@SH_ADDITION_PERMISSION_NUMBER", mydata.addition_permission_number);
                    cmd.ExecuteNonQuery();
                }

                myconnection.closeConnection();
            }
            catch (Exception ex)
            {
                MessageBox.Show("ERROR WHILE SAVING NEW PLASTIC COVER CONTAINERS " + ex.ToString());
            }
        }
        async Task <long> check_if_specification_exists_or_not(SH_PLASTIC_COVER_DATA mydata)
        {
            await loadallspecifications();

            try
            {
                // MessageBox.Show(specifications.Count.ToString());
                if (specifications.Count > 0)
                {
                    for (int i = 0; i < specifications.Count; i++)
                    {
                        if (specifications[i].SH_CLIENT_ID == mydata.client.SH_ID && specifications[i].SH_LOGO_OR_NOT == mydata.logo_or_not && specifications[i].SH_SIZE_ID == mydata.size.SH_ID && string.Compare(specifications[i].SH_CONTAINER_NAME, mydata.container_name) == 0 && specifications[i].SH_PILLOW_COLOR_ID == mydata.pillow_color.SH_ID)
                        {
                            return(specifications[i].SH_ID);
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show("ERROR WHIlE ADDING CHEckiNG NEW SPECiFIcATIONS" + ex.ToString());
            }
            return(0);
        }