Example #1
0
 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;
     }
 }
Example #2
0
        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);
        }
Example #3
0
 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();
     }
 }
Example #4
0
        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;
            }
        }
Example #5
0
        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);
        }
Example #6
0
 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();
     }
 }
Example #7
0
        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);
        }
Example #8
0
        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));
        }
Example #9
0
        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();
            }
        }
Example #10
0
        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;
                }
            }
        }
Example #11
0
        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;
                }
            }
        }
Example #12
0
        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;
            }
        }