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; } }
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; } }
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; } }
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"); }