private static void UpdateTransactionDataFromSalesRet(PostTransaction pt, QBResult result) { try { using (var ctx = new RMSModel()) { if (string.IsNullOrEmpty(result.SalesReceiptNumber)) { pt.TransactionData.Status = string.IsNullOrEmpty(result.Comments) ? "QB Posting Error" : result.Comments.Substring(0, result.Comments.Length > 49 ? 49 : result.Comments.Length); } else { pt.TransactionData.ReferenceNumber = "QB#" + result.SalesReceiptNumber; pt.TransactionData.Status = "Posted"; } ctx.TransactionBase.AddOrUpdate(pt.TransactionData); ctx.SaveChanges(); } } catch (Exception ex) { Logger.Log(LoggingLevel.Error, ex.Message + ex.StackTrace); Singleton.Status = "error found for #" + pt.TransactionData.TransactionNumber; throw ex; } }
public async Task PostAsyncTest_ReturnsBadRequest() { var postTransaction = new PostTransaction(); controller.ModelState.AddModelError("MockError", "Model is invalid"); var result = await controller.PostAsync(postTransaction); var assert = Assert.IsType <BadRequestObjectResult>(result); }
private static void UpdateTransactionDataStatus(PostTransaction itm, string message) { using (var ctx = new RMSModel()) { var trns = ctx.TransactionBase.FirstOrDefault(x => x.TransactionId == itm.TransactionData.TransactionId); trns.Status = message.Length > 50 ? message.Substring(0, 50) : message; ctx.TransactionBase.AddOrUpdate(trns); ctx.SaveChanges(); } }
private static void UpdateTransactionDataFromSalesRet(PostTransaction pt, QBResult result) { try { using (var ctx = new RMSModel()) { if (result == null || string.IsNullOrEmpty(result?.SalesReceiptNumber)) { pt.TransactionData.Status = string.IsNullOrEmpty(result?.Comments) ? "QB Posting Error" : result.Comments.Substring(0, result.Comments.Length > 49 ? 49 : result.Comments.Length); } else { pt.TransactionData.ReferenceNumber = "QB#" + result.SalesReceiptNumber; pt.TransactionData.Status = "Posted"; dynamic trn = pt.TransactionData; if (trn.Patient != null && trn.Patient.QBCustomer != null) { var qbSale = new QBSale() { QBCustomerId = trn.Patient.QBCustomer.Id, SalesRecieptNumber = result.SalesReceiptNumber, }; trn.Patient.QBCustomer.QBSales.Add(qbSale); ctx.QBSales.AddOrUpdate(qbSale); var availableRewards = (ObservableCollection <PatientAvailableReward>)trn.Patient.AvailableRewards; var reward = availableRewards.FirstOrDefault(x => result.Comments.Contains(x.Name)); if (reward != null) { var patientSale = new PatientRewardSale() { Id = reward.PatientRewardId.GetValueOrDefault(), TrackingNumber = result.TrackingNumber, SalesDate = DateTime.Now }; ctx.PatientRewardSales.AddOrUpdate(patientSale); } } } ctx.TransactionBase.AddOrUpdate(pt.TransactionData); ctx.SaveChanges(); } } catch (Exception ex) { Logger.Log(LoggingLevel.Error, ex.Message + ex.StackTrace); Singleton.Status = "error found for #" + pt.TransactionData.TransactionNumber; throw ex; } }
public async Task PostAsyncTest_ReturnsCreated() { var transaction = new TransactionDTO(); var postTransaction = new PostTransaction(); _mapperMock.Setup(m => m.Map <PostTransaction, TransactionDTO>(postTransaction)) .Returns(transaction); _serviceMock.Setup(s => s.AddAsync(transaction)) .Returns(Task.FromResult(transaction)); var result = await controller.PostAsync(postTransaction); var assert = Assert.IsType <CreatedResult>(result); }
private void UpdateTransactionDataFromSalesRet(PostTransaction pt, SalesReceiptRet result) { using (var ctx = new RMSModel()) { if (string.IsNullOrEmpty(result.SalesReceiptNumber)) { pt.TransactionData.Status = result.Comments.Substring(0, 49); } else { pt.TransactionData.ReferenceNumber = "QB#" + result.SalesReceiptNumber; pt.TransactionData.Status = "Posted"; } ctx.TransactionBase.AddOrUpdate(pt.TransactionData); ctx.SaveChanges(); } }
private async void submitButton_Clicked(object sender, EventArgs e) { submitButton.IsEnabled = false; var amountModifier = expenseBox.IsChecked ? -1 : 1; var transaction = new PostTransaction { Description = descriptionEntry.Text, Date = (DateTimeOffset)datePicker.Date, Amount = Convert.ToDecimal(amountEntry.Text) * amountModifier, Type = expenseBox.IsChecked, AccountId = accountPicker.SelectedItem == null ? acctId : (accountPicker.SelectedItem as PersonalAccount).Id, CategoryId = (categoryPicker.SelectedItem as Category).Id, EnteredById = Constants.APIConstants.UserId, BudgetItemId = budgetPicker.SelectedItem != null ? (budgetPicker.SelectedItem as Budget).Id : 0 }; ViewModel.CreateTransaction(transaction); }
public async Task <IActionResult> PostAsync([FromBody] PostTransaction request) { var prefix = "[PostAsync]"; _logger.LogInformation($"{prefix} Executing action"); if (!ModelState.IsValid) { _logger.LogWarning($"{prefix} Invalid model"); return(BadRequest(ModelState)); } var entity = _mapper.Map <PostTransaction, TransactionDTO>(request); var response = await _service.AddAsync(entity); _logger.LogInformation($"{prefix} Added transaction with id {response.ID}"); return(Created($"api/transactions/{response.ID}", response)); }
public async void CreateTransaction(PostTransaction trans) { try { await ApiCore.PostTransaction(trans.Description, trans.Date, trans.Amount, trans.Type, trans.AccountId, trans.CategoryId, trans.EnteredById, trans.BudgetItemId); var difference = trans.Amount; App.dashboardViewModel.accountList.FirstOrDefault(a => a.Id == trans.AccountId).Balance += difference; if (trans.BudgetItemId != 0) { App.dashboardViewModel.testBudgets.FirstOrDefault(a => a.Id == trans.BudgetItemId).CurrentBalance += difference; } await App.dashboardViewModel.CallHouseTransactions(); } catch (Exception) { Log.Warning("Danger", "Something went wrong creating transactions"); } finally { await _nav.PopAsync(); } }
private static void Post(PostTransaction pt) { try { //throw new ApplicationException("This is test Error"); IncludePrecriptionProperties(pt.TransactionData); SalesReceipt s = new SalesReceipt(); s.TxnDate = pt.TransactionData.Time; s.TxnState = "1"; s.Workstation = "02"; s.StoreNumber = "1"; s.SalesReceiptNumber = "123"; s.DiscountPercent = "0"; Patient dbPatient = null; if (pt.TransactionData == null || string.IsNullOrEmpty(pt.TransactionData.TransactionNumber)) { //MessageBox.Show("Invalid Transaction Please Try again"); //TransactionData.Status = "Invalid Transaction Please Try again"; //rms.SaveChanges(); //return; } //TransPreZeroConverter tz = new TransPreZeroConverter(); var patientRewards = new List <PatientAvailableReward>(); if (pt.TransactionData is Prescription) { Prescription p = pt.TransactionData as Prescription; string doctor = ""; string patient = ""; if (p.Doctor != null) { doctor = p.Doctor.DisplayName; //s.DiscountPercent = p.Doctor.Discount == null ? "" : p.Doctor.Discount.ToString(); } if (p.Patient != null) { patient = p.Patient.ContactInfo; //s.DiscountPercent = p.Patient.Discount == null ? "" : p.Patient.Discount.ToString(); patientRewards.AddRange(p.Patient.AvailableRewards.ToList()); } s.Comments = String.Format("{0} \n RX#:{1} \n Doctor:{2}", patient, p.TransactionNumber, doctor); var qbCustomer = QBPOS.GetOrAddCustomerQuery(p.Patient, Settings.Default.QBCompanyFile); if (!string.IsNullOrEmpty(p.Patient?.PhoneNumber) && p.Patient?.IDCardInfo.FirstOrDefault() != null) { dbPatient = UpdateCustomer(qbCustomer); if (p.Patient?.QBCustomer?.CustomerListID != null) { s.CustomerListId = p.Patient.QBCustomer.CustomerListID; } } } else { QuickPrescription p = pt.TransactionData as QuickPrescription; s.Comments = $"{p.Patient.ContactInfo} \n RX#: {pt.TransactionData.TransactionNumber}"; if (p.Patient != null) { if (!string.IsNullOrEmpty(p.Patient.PhoneNumber) && p.Patient?.IDCardInfo.FirstOrDefault() != null) { var qbCustomer = QBPOS.GetOrAddCustomerQuery(p.Patient, Settings.Default.QBCompanyFile); dbPatient = UpdateCustomer(qbCustomer); if (p.Patient?.QBCustomer?.CustomerListID != null) { s.CustomerListId = qbCustomer.ListID; } } patientRewards.AddRange(p.Patient.AvailableRewards.ToList()); } } if (pt.TransactionData != null) { s.TrackingNumber = pt.TransactionData.TransactionNumber; } s.Associate = "Dispensary"; s.SalesReceiptType = "0"; foreach (var item in pt.PostEntries) { var qbitm = QBPOS.ValidateInventoryItemQuery(item.QBListId, Settings.Default.QBCompanyFile); if (!qbitm.Any()) { //SetQBInactive(item.QBListId); //pt.TransactionData.Status = "Can't Post Because Item Not In QuickBooks"; //UpdateTransactionDataFromSalesRet(pt, new QBResult() { Comments = "Item Not In QuickBooks" }); //return; continue; } else { UpdateInventoryItem(qbitm); } s.SalesReceiptDetails.Add(new SalesReceiptDetail { ItemListID = item.QBListId, // ItemNumber = item.ItemNumber, QtySold = item.Quantity, //Discount = dbPatient?.PatientMemberships.FirstOrDefault()?.MembershipType?.Discount ?? dbPatient?.Discount ?? 0.0 }); //340 } foreach (var reward in patientRewards.Where(x => x.Status != null && x.Status.Contains("Issued") && x.StoreName == Store.StoreCode).ToList()) { var itm = new RMSModel().Item.FirstOrDefault(x => x.ItemNumber == reward.ItemNumber.ToString()); if (itm != null) { var qbitm = QBPOS.ValidateInventoryItemQuery(itm.QBItemListID, Settings.Default.QBCompanyFile).FirstOrDefault(); if (qbitm != null) { s.SalesReceiptDetails.Add(new SalesReceiptDetail { ItemListID = qbitm.ListID, // ItemNumber = item.ItemNumber, QtySold = 1, //Discount = reward.Value }); //340 } } else { //s.Discount = reward.Value.ToString(); } s.Comments += $"\r\nReward:{reward.Name}"; } var result = QBPOS.AddSalesReceipt(s, Settings.Default.QBCompanyFile); UpdateTransactionDataFromSalesRet(pt, result); } catch (Exception ex) { var msg = CleanErrorMessage(ex.Message); Logger.Log(LoggingLevel.Error, "error found for #" + pt.TransactionData.TransactionNumber + ":---:" + msg + ex.StackTrace); Singleton.Status = "error found for #" + pt.TransactionData.TransactionNumber; UpdateTransactionDataStatus(pt, msg); if (msg.Contains("Can't connect to the database")) { MessageBox.Show(msg); postingTimer.Enabled = false; throw ex; } } }
private static void Post(PostTransaction pt) { try { //throw new ApplicationException("This is test Error"); IncludePrecriptionProperties(pt.TransactionData); SalesReceipt s = new SalesReceipt(); s.TxnDate = pt.TransactionData.Time; s.TxnState = "1"; s.Workstation = "02"; s.StoreNumber = "1"; s.SalesReceiptNumber = "123"; s.Discount = "0"; if (pt.TransactionData == null || string.IsNullOrEmpty(pt.TransactionData.TransactionNumber)) { //MessageBox.Show("Invalid Transaction Please Try again"); //TransactionData.Status = "Invalid Transaction Please Try again"; //rms.SaveChanges(); //return; } //TransPreZeroConverter tz = new TransPreZeroConverter(); if (pt.TransactionData is Prescription) { Prescription p = pt.TransactionData as Prescription; string doctor = ""; string patient = ""; if (p.Doctor != null) { doctor = p.Doctor.DisplayName; s.Discount = p.Doctor.Discount == null ? "" : p.Doctor.Discount.ToString(); } if (p.Patient != null) { patient = p.Patient.ContactInfo; s.Discount = p.Patient.Discount == null ? "" : p.Patient.Discount.ToString(); } s.Comments = String.Format("{0} \n RX#:{1} \n Doctor:{2}", patient, p.TransactionNumber, doctor); } else { s.Comments = "RX#:" + pt.TransactionData.TransactionNumber; } if (pt.TransactionData != null) { s.TrackingNumber = pt.TransactionData.TransactionNumber; } s.Associate = "Dispensary"; s.SalesReceiptType = "0"; foreach (var item in pt.PostEntries) { var qbitm = QBPOS.ValidateInventoryItemQuery(item.QBListId, Settings.Default.QBCompanyFile); if (!qbitm.Any()) { //SetQBInactive(item.QBListId); //pt.TransactionData.Status = "Can't Post Because Item Not In QuickBooks"; //UpdateTransactionDataFromSalesRet(pt, new QBResult() { Comments = "Item Not In QuickBooks" }); //return; continue; } else { UpdateInventoryItem(qbitm); } s.SalesReceiptDetails.Add(new SalesReceiptDetail { ItemListID = item.QBListId, ItemNumber = item.ItemNumber, QtySold = item.Quantity }); //340 } var result = QBPOS.AddSalesReceipt(s, Settings.Default.QBCompanyFile); if (result != null) { UpdateTransactionDataFromSalesRet(pt, result); } } catch (Exception ex) { var msg = CleanErrorMessage(ex.Message); Logger.Log(LoggingLevel.Error, "error found for #" + pt.TransactionData.TransactionNumber + ":---:" + msg + ex.StackTrace); Singleton.Status = "error found for #" + pt.TransactionData.TransactionNumber; UpdateTransactionDataStatus(pt, msg); if (msg.Contains("Can't connect to the database")) { MessageBox.Show(msg); postingTimer.Enabled = false; throw ex; } } }
private void Post(PostTransaction pt) { try { IncludePrecriptionProperties(pt.TransactionData); SalesReceipt s = new SalesReceipt(); s.TxnDate = pt.TransactionData.Time; s.TxnState = "1"; s.Workstation = "02"; s.StoreNumber = "1"; s.SalesReceiptNumber = "123"; s.Discount = "0"; if (pt.TransactionData == null || string.IsNullOrEmpty(pt.TransactionData.TransactionNumber)) { //MessageBox.Show("Invalid Transaction Please Try again"); //TransactionData.Status = "Invalid Transaction Please Try again"; //rms.SaveChanges(); //return; } //TransPreZeroConverter tz = new TransPreZeroConverter(); if (pt.TransactionData is Prescription) { Prescription p = pt.TransactionData as Prescription; string doctor = ""; string patient = ""; if (p.Doctor != null) { doctor = p.Doctor.DisplayName; } if (p.Patient != null) { patient = p.Patient.ContactInfo; s.Discount = p.Patient.Discount == null ? "" : p.Patient.Discount.ToString(); } s.Comments = String.Format("{0} \n RX#:{1} \n Doctor:{2}", patient, p.TransactionNumber, doctor); } else { s.Comments = "RX#:" + pt.TransactionData.TransactionNumber; } if (pt.TransactionData != null) { s.TrackingNumber = pt.TransactionData.TransactionNumber; } s.Associate = "Dispensary"; s.SalesReceiptType = "0"; foreach (var item in pt.PostEntries) { if (item.QBListId != null) { s.SalesReceiptDetails.Add(new SalesReceiptDetail { ItemListID = item.QBListId, QtySold = item.Quantity }); //340 } else { pt.TransactionData.Status = "Can't Post Because ListId is null"; UpdateTransactionDataFromSalesRet(pt, new SalesReceiptRet() { Comments = "No ListID for item" }); return; } } // QBPOS qb = new QBPOS(); var result = QBPOS.Instance.AddSalesReceipt(s); if (result != null) { UpdateTransactionDataFromSalesRet(pt, result); } } catch (Exception ex) { Logger.Log(LoggingLevel.Error, ex.Message + ex.StackTrace); throw ex; } }