public void PopulateItemListByMonth(DataTable dtItem,int month,int year)
        {
            progressBar1.Visible = true;
            progressBar1.Minimum = 1;
            progressBar1.Value = 1;
            progressBar1.Maximum = dtItem.Rows.Count;

            GeneralInfo pipline = new GeneralInfo();
            pipline.LoadAll();
            int min = pipline.Min;
            int max = pipline.Max;
            double eop = pipline.EOP;
            int storeId = (cboStores.SelectedValue != null)?Convert.ToInt32(cboStores.SelectedValue):1;

            lstItem.Items.Clear();

            dtDate.Value = DateTime.Now;
            dtDate.CustomFormat = "MM/dd/yyyy";
            DateTime dtCurrent = new DateTime();// Convert.ToDateTime(dtDate.Text);
            try
            {
                dtCurrent = Convert.ToDateTime(dtDate.Text);
            }
            catch
            {
                string dtValid = "";
                string yer = "";
                if (Convert.ToInt32(dtDate.Text.Substring(0, 2)) == 13)
                {
                    dtValid = dtDate.Text;
                    yer = dtValid.Substring(dtValid.Length - 4, 4);
                    dtCurrent = Convert.ToDateTime("12/30/" + yer);
                }
                else if (Convert.ToInt32(dtDate.Text.Substring(0, 2)) == 2)
                {
                    dtValid = dtDate.Text;
                    yer = dtValid.Substring(dtValid.Length - 4, 4);
                    dtCurrent = Convert.ToDateTime("2/28/" + yer);
                }
            }
            month = (month < 11)? month +2: ((month ==11)?1:2);
            int yyr = (month < 11)? dtCurrent.Year: dtCurrent.Year -1;

            int count = 1;
            Balance bal = new Balance();
            IssueDoc iss = new IssueDoc();
            foreach (DataRow dr in dtItem.Rows)
            {
                string itemName = dr["ItemName"].ToString() + " - " + dr["DosageForm"].ToString() + " - " + dr["Strength"].ToString();

                int yer = (month < 11) ? year : year - 1;
                double AMC = Builder.CalculateAverageConsumption(Convert.ToInt32(dr["ID"]), storeId,dtCurrent.Subtract(TimeSpan.FromDays(180)),dtCurrent,CalculationOptions.Monthly);//bal.CalculateAMC(Convert.ToInt32(dr["ID"]), storeId, month, yer);
                double MinCon = AMC * min;
                double maxCon = AMC * max;
                double eopCon = AMC * (eop + 0.25);
                Int64 SOH = bal.GetSOH(Convert.ToInt32(dr["ID"]), storeId, month, yer);
                decimal MOS = (AMC != 0) ? (Convert.ToDecimal(SOH) / Convert.ToDecimal(AMC)) : 0;
                MOS = Decimal.Round(MOS, 1);

                double reorder = (maxCon > SOH) ? maxCon - SOH : 0;
                string status = (SOH <= eopCon && SOH > 0) ? "Near EOP" : ((SOH > maxCon && maxCon != 0) ? "Excess Stock" : ((SOH <= 0) ? "Stock Out" : "Normal"));
                //Int64 issuedQuant = iss.GetIssuedQuantityByMonth(Convert.ToInt32(dr["ID"]),storeId, month,yer);
                Int64 issuedQuant = iss.GetIssuedQuantity(Convert.ToInt32(dr["ID"]), storeId, yer);
                string[] str = { count.ToString(), itemName, ((SOH != 0)?SOH.ToString("#,###"): "0"), ((AMC != 0)?AMC.ToString("#,###"):"0"), MOS.ToString(), ((MinCon != 0)?MinCon.ToString("#,###"): "0"), ((maxCon != 0)?maxCon.ToString("#,###"):"0"), ((issuedQuant!= 0)?issuedQuant.ToString("#,###"):"0"), status, ((reorder!= 0)?reorder.ToString("#,###"):"0") };
                ListViewItem listItem = new ListViewItem(str);
                listItem.Tag = dr["ID"];
                //if (col != 0)
                //{
                //    listItem.BackColor = Color.FromArgb(233, 247, 248);
                //    col = 0;
                //}
                //else
                //{
                //    col++;
                //}

                string stat = "";
                if(cboStatus.SelectedItem != null)
                    stat = cboStatus.SelectedItem.ToString();

                switch (stat)
                {
                    case "Near EOP":
                        if (SOH <= eopCon && SOH > 0)
                        {
                            listItem.BackColor = Color.FromArgb(255, 255, 153);
                            lstItem.Items.Add(listItem);
                            count++;
                        }
                        break;
                    case "Normal":
                        if (SOH > eopCon && SOH < maxCon)
                        {
                            lstItem.Items.Add(listItem);
                            count++;
                        }
                        break;
                    case "Stock Out":
                        if (SOH <= 0)
                        {
                            listItem.BackColor = Color.FromArgb(246, 168, 168);
                            lstItem.Items.Add(listItem);
                            count++;
                        }
                        break;
                    case "Excess Stock":
                        if (SOH > maxCon && maxCon != 0)
                        {
                            listItem.BackColor = Color.FromArgb(163, 209, 255);
                            lstItem.Items.Add(listItem);
                            count++;
                        }
                        break;
                    default:
                        if (SOH <= eopCon && SOH > 0)
                            listItem.BackColor = Color.FromArgb(255, 255, 153);
                        else if (SOH > maxCon && maxCon != 0)
                            listItem.BackColor = Color.FromArgb(163, 209, 255);
                        else if (SOH <= 0)
                            listItem.BackColor = Color.FromArgb(246, 168, 168);
                        lstItem.Items.Add(listItem);
                        count++;
                        break;
                }
                progressBar1.PerformStep();

            }
            progressBar1.Visible = false;
        }