Example #1
0
        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;
        }