Exemple #1
0
        public void AllocationTest()
        {
            StockManagementLogic stockLogic = new StockManagementLogic();
            // Assertion of initial stock balances
            HealthFacilityBalance balance = HealthFacilityBalance.GetHealthFacilityBalanceByHealthFacilityCode("HF888").Find(o => o.Gtin == TestData.GTIN_UNDER_TEST);
            int preBalance = (int)balance.Allocated;

            stockLogic.Allocate(HealthFacility.GetHealthFacilityByCode("HF888"), TestData.GTIN_UNDER_TEST, balance.LotNumber, 100, null, 1);
            // Get the new balance
            balance = HealthFacilityBalance.GetHealthFacilityBalanceByHealthFacilityCode("HF888").Find(o => o.Gtin == TestData.GTIN_UNDER_TEST);
            Assert.AreEqual(preBalance + 100, balance.Allocated);
        }
    protected void btnUpdateBalance_Click(object sender, EventArgs e)
    {
        try
        {
            int    hfId  = CurrentEnvironment.LoggedUser.HealthFacilityId;
            string _hfId = (string)Request.QueryString["hfId"];
            if (!String.IsNullOrEmpty(_hfId))
            {
                int.TryParse(_hfId, out hfId);
            }

            foreach (GridViewRow gr in gvHealthFacilityBalance.Rows)
            {
                if (gr.RowType == DataControlRowType.DataRow)
                {
                    TextBox txtQty = (TextBox)gr.FindControl("txtQty");
                    if (!string.IsNullOrEmpty(txtQty.Text))
                    {
                        UInt32 qty   = UInt32.Parse(txtQty.Text.Trim());
                        string gtin  = gr.Cells[1].Text;
                        string lotno = gr.Cells[3].Text;

                        DateTime date = DateTime.ParseExact(txtDate.Text, ConfigurationDate.GetConfigurationDateById(int.Parse(Configuration.GetConfigurationByName("DateFormat").Value)).DateFormat.ToString(), CultureInfo.CurrentCulture);

                        HealthFacility       hf  = HealthFacility.GetHealthFacilityById(hfId);
                        StockManagementLogic sml = new StockManagementLogic();
                        ItemTransaction      st  = sml.StockCount(hf, gtin, lotno, qty, CurrentEnvironment.LoggedUser.Id, date);
                        int i = st.Id;

                        if (i > 0)
                        {
                            lblSuccess.Visible = true;
                            lblError.Visible   = false;
                        }
                        else
                        {
                            lblSuccess.Visible = false;
                            lblError.Visible   = true;
                        }
                    }
                }
            }

            odsHealthFacilityBalance.SelectParameters.Clear();
            odsHealthFacilityBalance.SelectParameters.Add("id", hfId.ToString());
            odsHealthFacilityBalance.DataBind();
        }
        catch (Exception ex)
        {
            lblSuccess.Visible = false;
            lblError.Visible   = true;
        }
    }
Exemple #3
0
        public void TransferTest()
        {
            StockManagementLogic stockLogic = new StockManagementLogic();
            // Assertion of initial stock balances
            HealthFacilityBalance balanceHf888 = HealthFacilityBalance.GetHealthFacilityBalanceByHealthFacilityCode("HF888").Find(o => o.Gtin == TestData.GTIN_UNDER_TEST),
                                  balanceHf999 = HealthFacilityBalance.GetHealthFacilityBalanceByHealthFacilityCode("HF999").Find(o => o.Gtin == TestData.GTIN_UNDER_TEST);

            int preBalance888 = (int)balanceHf888.Balance,
                preBalance999 = (int)balanceHf999.Balance;

            stockLogic.Transfer(HealthFacility.GetHealthFacilityByCode("HF888"), HealthFacility.GetHealthFacilityByCode("HF999"), TestData.GTIN_UNDER_TEST, balanceHf888.LotNumber, null, 100, 1);
            // Get the new balance
            balanceHf888 = HealthFacilityBalance.GetHealthFacilityBalanceByHealthFacilityCode("HF888").Find(o => o.Gtin == TestData.GTIN_UNDER_TEST);
            balanceHf999 = HealthFacilityBalance.GetHealthFacilityBalanceByHealthFacilityCode("HF999").Find(o => o.Gtin == TestData.GTIN_UNDER_TEST);

            Assert.AreEqual(preBalance888 - 100, balanceHf888.Balance);
            Assert.AreEqual(preBalance999 + 100, balanceHf999.Balance);
        }
    protected void btnAdd_Click(object sender, EventArgs e)
    {
        try
        {
            if (Page.IsValid)
            {
                int userId = CurrentEnvironment.LoggedUser.Id;
                //check for duplicates
                // ItemTransaction st = StockManagementLogic.StockCount(CurrentEnvironment.LoggedUser.HealthFacility.Code, ddlGtin.SelectedValue, ddlItemLot.SelectedValue, txtQuantity.Text, CurrentEnvironment.LoggedUser.Id);
                StockManagementLogic sml = new StockManagementLogic();
                UInt32 qty = UInt32.Parse(txtQuantity.Text);

                DateTime        date = DateTime.ParseExact(txtStockCountDate.Text, ConfigurationDate.GetConfigurationDateById(int.Parse(Configuration.GetConfigurationByName("DateFormat").Value)).DateFormat.ToString(), CultureInfo.CurrentCulture);
                ItemTransaction st   = sml.StockCount(CurrentEnvironment.LoggedUser.HealthFacility, ddlGtin.SelectedValue, ddlItemLot.SelectedValue, qty, CurrentEnvironment.LoggedUser.Id, date);

                int i = st.Id; //  ItemTransaction.Insert(o);


                if (i > 0)
                {
                    lblSuccess.Visible = true;
                    lblWarning.Visible = false;
                    lblError.Visible   = false;
                    odsTransactionLines.SelectParameters.Clear();
                    odsTransactionLines.SelectParameters.Add("i", i.ToString());
                    odsTransactionLines.DataBind();

                    ClearControls(this);
                }
                else
                {
                    lblSuccess.Visible = false;
                    lblWarning.Visible = false;
                    lblError.Visible   = true;
                }
            }
        }
        catch (Exception ex)
        {
            lblSuccess.Visible = false;
            lblWarning.Visible = false;
            lblError.Visible   = true;
        }
    }
Exemple #5
0
    protected void btnAdd_Click(object sender, EventArgs e)
    {
        try
        {
            if (Page.IsValid)
            {
                int userId = CurrentEnvironment.LoggedUser.Id;

                StockManagementLogic sml  = new StockManagementLogic();
                DateTime             date = DateTime.ParseExact(txtDate.Text, ConfigurationDate.GetConfigurationDateById(int.Parse(Configuration.GetConfigurationByName("DateFormat").Value)).DateFormat.ToString(), CultureInfo.CurrentCulture);
                if (!String.IsNullOrEmpty(txtQuantity.Text))
                {
                    int qty = int.Parse(txtQuantity.Text);
                    AdjustmentReason adr = AdjustmentReason.GetAdjustmentReasonById(int.Parse(System.Configuration.ConfigurationManager.AppSettings["ReceiptAdjustmentReason"]));
                    HealthFacility   hf  = HealthFacility.GetHealthFacilityByCode(ddlHealthFacility.SelectedValue);

                    string           uom      = ddlUom.SelectedValue;
                    int              quantity = 0;
                    ItemManufacturer im       = ItemManufacturer.GetItemManufacturerByGtin(ddlGtin.SelectedValue);
                    if (uom.Equals(im.BaseUom))
                    {
                        quantity = qty;
                    }
                    else if (uom.Equals(im.Alt1Uom))
                    {
                        quantity = qty * im.Alt1QtyPer;
                    }
                    else if (uom.Equals(im.Alt2Uom))
                    {
                        quantity = qty * im.Alt2QtyPer;
                    }

                    //have base uom logic

                    string lot = string.Empty;
                    if (ddlItemLot.SelectedIndex != 0)
                    {
                        lot = ddlItemLot.SelectedValue;
                    }
                    ItemTransaction st = sml.Adjust(hf, ddlGtin.SelectedValue, lot, quantity, adr, CurrentEnvironment.LoggedUser.Id, date);
                    int             i  = st.Id;

                    if (i > 0)
                    {
                        ClearControls(this);

                        lblSuccess.Visible = true;
                        lblWarning.Visible = false;
                        lblError.Visible   = false;

                        odsTransactionLines.SelectParameters.Clear();
                        odsTransactionLines.SelectParameters.Add("i", i.ToString());
                        odsTransactionLines.DataBind();
                    }
                    else
                    {
                        lblSuccess.Visible = false;
                        lblWarning.Visible = false;
                        lblError.Visible   = true;
                    }
                }
            }
        }
        catch (Exception ex)
        {
            lblSuccess.Visible = false;
            lblWarning.Visible = false;
            lblError.Visible   = true;
        }
    }
Exemple #6
0
    protected void Page_Load(object sender, EventArgs e)
    {
        // Validation
        if (CurrentEnvironment.LoggedUser == null)
        {
            Response.Redirect("Default.aspx");
        }
        status.Visible = Page.IsPostBack;

        if (!Page.IsPostBack)
        {
            Dictionary <string, int> facilities = new Dictionary <string, int>();
            var hf = HealthFacility.GetHealthFacilityById(CurrentEnvironment.LoggedUser.HealthFacilityId);
            facilities.Add(hf.Name, hf.Id);
            foreach (HealthFacility h in HealthFacility.GetHealthFacilityByParentId(CurrentEnvironment.LoggedUser.HealthFacilityId).OrderBy(x => x.Name))
            {
                facilities.Add(h.Name, h.Id);
            }


            HealthFacilityDropdown.DataSource     = facilities;
            HealthFacilityDropdown.DataTextField  = "key";
            HealthFacilityDropdown.DataValueField = "value";
            HealthFacilityDropdown.DataBind();
        }
        else
        {
            try
            {
                if (DocumentUpload.HasFile)
                {
                    Stream          stream = DocumentUpload.FileContent;
                    StreamReader    reader = new StreamReader(stream);
                    List <String[]> lines  = new List <string[]>();
                    while (!reader.EndOfStream)
                    {
                        String[] line = reader.ReadLine().Split(',').ToArray();
                        lines.Add(line);
                    }
                    foreach (string[] s in lines)
                    {
                        Debug.WriteLine(String.Join(" ", s));
                    }

                    string connString = WebConfigurationManager.ConnectionStrings["GiisConnectionString"].ConnectionString;
                    using (NpgsqlConnection con = new NpgsqlConnection(connString))
                    {
                        con.Open();
                        int hf = int.Parse(HealthFacilityDropdown.SelectedValue);

                        for (int i = 1; i < lines.Count; i++)
                        {
                            using (NpgsqlCommand command = new NpgsqlCommand("insert_stock_tally", con)
                            {
                                CommandType = System.Data.CommandType.StoredProcedure
                            })
                            {
                                // First: Is this the right sheet?
                                if (!lines[i][0].StartsWith("BIDSTS"))
                                {
                                    throw new InvalidOperationException("Invalid CSV uploaded");
                                }

                                int    month  = Int32.Parse(lines[i][2]);
                                string gender = lines[i][1];
                                for (int c = 3; c < lines[i].Length; c++)
                                {
                                    var dose  = Dose.GetDoseByFullname(lines[0][c]);
                                    var count = Int32.Parse(String.IsNullOrEmpty(lines[i][c]) ? "0" : lines[i][c]);
                                    if (dose == null)
                                    {
                                        throw new InvalidOperationException(String.Format("Dose {0} is not a valid dose", lines[0][c]));
                                    }
                                    command.Parameters.Add(new NpgsqlParameter("hf", hf));
                                    command.Parameters.Add(new NpgsqlParameter("month", month));
                                    command.Parameters.Add(new NpgsqlParameter("gender", gender.Substring(0, 1)));
                                    command.Parameters.Add(new NpgsqlParameter("dose", dose.Id));
                                    command.Parameters.Add(new NpgsqlParameter("value", count));
                                    command.ExecuteNonQuery();

                                    // Hack: Drive down stock
                                    StockManagementLogic logic = new StockManagementLogic();
                                    for (int cd = 0; cd < count; cd++)
                                    {
                                        logic.Vaccinate(HealthFacility.GetHealthFacilityById(hf), new VaccinationEvent()
                                        {
                                            DoseId = dose.Id
                                        });
                                    }
                                    command.Parameters.Clear();
                                }
                            }
                        }
                        status.Text     = "Stock tally sheet submitted";
                        status.CssClass = "label label-success";
                    }
                }
                else
                {
                    status.Text     = "No file selected";
                    status.CssClass = "label label-danger";
                    return;
                }
            }
            catch (Exception ex)
            {
                status.Text     = ex.Message;
                status.CssClass = "label label-danger";
            }
        }
        Debug.WriteLine("page loaded");
    }