public StatusDTO <TransactionLogPaymentsDTO> Insert(TransactionLogPaymentsDTO data)
        {
            using (IDbSvc dbSvc = new DbSvc(_configSvc))
            {
                try
                {
                    dbSvc.OpenConnection();
                    MySqlCommand command = new MySqlCommand();
                    command.CommandText = "INSERT INTO transactionlogpayments(transactionlogid, paymentdate, " +
                                          "currentamount, paymentchequeno, paymentmode, currentadjustingamount) VALUES (@transLogId, @paymentDate, " +
                                          "@curramount, @chqNo, @mode, @currentadjusting)";
                    command.Connection = dbSvc.GetConnection() as MySqlConnection;
                    command.Parameters.Add("@transLogId", MySqlDbType.Int32).Value     = data.TransactionLog.TransactionLogId;
                    command.Parameters.Add("@paymentDate", MySqlDbType.DateTime).Value = data.PaymentDate.Value;
                    command.Parameters.Add("@curramount", MySqlDbType.Decimal).Value   = data.CurrentAmount.Value;
                    if (string.IsNullOrEmpty(data.PaymentChequeNo))
                    {
                        command.Parameters.Add("@chqNo", MySqlDbType.VarChar).Value = DBNull.Value;
                    }
                    else
                    {
                        command.Parameters.Add("@chqNo", MySqlDbType.VarChar).Value = data.PaymentChequeNo;
                    }
                    command.Parameters.Add("@mode", MySqlDbType.VarChar).Value             = data.PaymentMode;
                    command.Parameters.Add("@currentadjusting", MySqlDbType.Decimal).Value = data.CurrentAdjustingAmount.Value;

                    StatusDTO <TransactionLogPaymentsDTO> status = new StatusDTO <TransactionLogPaymentsDTO>();
                    if (command.ExecuteNonQuery() > 0)
                    {
                        status.IsSuccess   = true;
                        status.IsException = false;
                        return(status);
                    }
                    status.IsSuccess     = false;
                    status.IsException   = false;
                    status.FailureReason = "Insert failed";
                    return(status);
                }
                catch (Exception exp)
                {
                    _logger.Log(exp);
                    throw exp;
                }
            }
        }
 public StatusDTO <TransactionLogPaymentsDTO> Update(TransactionLogPaymentsDTO data)
 {
     throw new NotImplementedException();
 }
 public StatusDTO <List <TransactionLogPaymentsDTO> > Select(TransactionLogPaymentsDTO data)
 {
     throw new NotImplementedException();
 }
Exemplo n.º 4
0
        public JsonResult payAllTransactions(Models.TransactionViewModel transactions)
        {
            double currentTotalPay       = transactions.CurrentAmount;
            double currentTotalAdjusting = transactions.CurrentAdjusting;
            double currentTotalDue       = transactions.DueAmount.Value;

            if (currentTotalPay + currentTotalAdjusting > 0)
            {
                if (currentTotalPay + currentTotalAdjusting <= currentTotalDue)
                {
                    using (TransactionScope ts = new TransactionScope(TransactionScopeOption.Required))
                    {
                        try
                        {
                            foreach (Models.TransactionViewModel tranlogDTO in transactions.paymentDetailsList)
                            {
                                tranlogDTO.TransferMode    = transactions.TransferMode;
                                tranlogDTO.PaymentChequeNo = transactions.PaymentChequeNo;

                                if (tranlogDTO.DueAmount != null && tranlogDTO.DueAmount.Value > 0)
                                {
                                    if (tranlogDTO.AmountGiven == null)
                                    {
                                        tranlogDTO.AmountGiven = 0;
                                    }
                                    if (tranlogDTO.AdjustedAmount == null)
                                    {
                                        tranlogDTO.AdjustedAmount = 0;
                                    }
                                    if (tranlogDTO.DueAmount == null)
                                    {
                                        tranlogDTO.DueAmount = 0;
                                    }

                                    double currentGivenAmt = ((tranlogDTO.DueAmount.Value > currentTotalPay) ? currentTotalPay : tranlogDTO.DueAmount.Value);
                                    tranlogDTO.AmountGiven = tranlogDTO.AmountGiven + currentGivenAmt;
                                    tranlogDTO.DueAmount   = tranlogDTO.DueAmount.Value - currentGivenAmt;

                                    tranlogDTO.PaymentDate = DateTime.Now;

                                    if (!string.Equals(tranlogDTO.TransferMode, "CHQ"))
                                    {
                                        tranlogDTO.PaymentChequeNo = string.Empty;
                                    }

                                    double currentAdjustedAmt = 0.0;
                                    if (tranlogDTO.DueAmount.Value > 0)
                                    {
                                        currentAdjustedAmt        = (tranlogDTO.DueAmount.Value > currentTotalAdjusting) ? currentTotalAdjusting : tranlogDTO.DueAmount.Value;
                                        tranlogDTO.AdjustedAmount = tranlogDTO.AdjustedAmount + currentAdjustedAmt;
                                        tranlogDTO.DueAmount      = tranlogDTO.DueAmount.Value - currentAdjustedAmt;
                                    }

                                    tranlogDTO.HasPartialPayment = true;

                                    if (tranlogDTO.AmountImposed == (currentGivenAmt + currentAdjustedAmt))
                                    {
                                        tranlogDTO.HasPartialPayment = false;
                                    }

                                    bool principalApprovedChanged = false;
                                    int? oldPrincipalApproved     = null;
                                    if (currentAdjustedAmt > 0)
                                    {
                                        tranlogDTO.IsPrincipalApproved = 0;
                                        oldPrincipalApproved           = 0;
                                        principalApprovedChanged       = true;
                                    }
                                    tranlogDTO.IsCompleted = false;
                                    if ((tranlogDTO.IsPrincipalApproved == null || tranlogDTO.IsPrincipalApproved == 1) && tranlogDTO.DueAmount == 0)
                                    {
                                        tranlogDTO.IsCompleted = true;
                                    }

                                    if (!principalApprovedChanged)
                                    {
                                        oldPrincipalApproved           = tranlogDTO.IsPrincipalApproved;
                                        tranlogDTO.IsPrincipalApproved = null;
                                    }
                                    if (tranlogDTO.DueAmount >= 0)
                                    {
                                        StatusDTO <TransactionLogDTO> status = _transactionLogSvc.UpdatePayment(tranlogDTO);
                                        if (!status.IsSuccess)
                                        {
                                            throw new Exception("Error encountered in one transaction. Rolled back.");
                                        }
                                        else
                                        {
                                            if (tranlogDTO.HasPartialPayment.Value)
                                            {
                                                TransactionLogPaymentsDTO payment = new TransactionLogPaymentsDTO();
                                                payment.CurrentAmount          = currentGivenAmt;
                                                payment.CurrentAdjustingAmount = currentAdjustedAmt;
                                                payment.PaymentChequeNo        = tranlogDTO.PaymentChequeNo;
                                                payment.PaymentDate            = tranlogDTO.PaymentDate;
                                                payment.PaymentMode            = tranlogDTO.TransferMode;
                                                payment.TransactionLog         = tranlogDTO;
                                                if (!_paymentSvc.Insert(payment).IsSuccess)
                                                {
                                                    throw new Exception("Payment sub details not added");
                                                }
                                            }
                                        }
                                    }

                                    currentTotalPay       = currentTotalPay - currentGivenAmt;
                                    currentTotalAdjusting = currentTotalAdjusting - currentAdjustedAmt;
                                }
                            }
                        }
                        catch (Exception exp)
                        {
                            return(Json(new { status = false, message = exp.Message }, JsonRequestBehavior.AllowGet));
                        }
                        ts.Complete();
                        return(Json(new { status = true, message = "Transaction completed successfully." }, JsonRequestBehavior.AllowGet));
                    }
                }
                return(Json(new { status = false, message = "Total current and adjusted amount must be less than or equal to total due." }, JsonRequestBehavior.AllowGet));
            }
            return(Json(new { status = false, message = "No amount is given" }, JsonRequestBehavior.AllowGet));
        }
Exemplo n.º 5
0
        public JsonResult updateRowPayment(Models.TransactionViewModel tranlogDTO)
        {
            if (tranlogDTO.AmountGiven == null)
            {
                tranlogDTO.AmountGiven = 0;
            }
            if (tranlogDTO.AdjustedAmount == null)
            {
                tranlogDTO.AdjustedAmount = 0;
            }
            if (tranlogDTO.DueAmount == null)
            {
                tranlogDTO.DueAmount = 0;
            }
            tranlogDTO.HasPartialPayment = true;
            tranlogDTO.PaymentDate       = DateTime.Now;
            if (tranlogDTO.AmountImposed == (tranlogDTO.CurrentAmount + tranlogDTO.CurrentAdjusting))
            {
                tranlogDTO.HasPartialPayment = false;
            }
            if (!string.Equals(tranlogDTO.TransferMode, "CHQ"))
            {
                tranlogDTO.PaymentChequeNo = string.Empty;
            }
            tranlogDTO.AmountGiven    = tranlogDTO.AmountGiven + tranlogDTO.CurrentAmount;
            tranlogDTO.AdjustedAmount = tranlogDTO.AdjustedAmount + tranlogDTO.CurrentAdjusting;
            tranlogDTO.DueAmount      = tranlogDTO.DueAmount - (tranlogDTO.CurrentAmount + tranlogDTO.CurrentAdjusting);
            //tranlogDTO.IsPrincipalApproved = null;
            bool principalApprovedChanged = false;
            int? oldPrincipalApproved     = null;

            if (tranlogDTO.CurrentAdjusting > 0)
            {
                tranlogDTO.IsPrincipalApproved = 0;
                oldPrincipalApproved           = 0;
                principalApprovedChanged       = true;
            }
            tranlogDTO.IsCompleted = false;
            if ((tranlogDTO.IsPrincipalApproved == null || tranlogDTO.IsPrincipalApproved == 1) && tranlogDTO.DueAmount == 0)
            {
                tranlogDTO.IsCompleted = true;
            }

            if (!principalApprovedChanged)
            {
                oldPrincipalApproved           = tranlogDTO.IsPrincipalApproved;
                tranlogDTO.IsPrincipalApproved = null;
            }
            if (tranlogDTO.DueAmount >= 0)
            {
                StatusDTO <TransactionLogDTO> status = _transactionLogSvc.UpdatePayment(tranlogDTO);
                using (TransactionScope ts = new TransactionScope(TransactionScopeOption.Required))
                {
                    if (status.IsSuccess)
                    {
                        tranlogDTO.IsPrincipalApproved = oldPrincipalApproved;

                        if (tranlogDTO.HasPartialPayment.Value)
                        {
                            TransactionLogPaymentsDTO payment = new TransactionLogPaymentsDTO();
                            payment.CurrentAmount          = tranlogDTO.CurrentAmount;
                            payment.PaymentChequeNo        = tranlogDTO.PaymentChequeNo;
                            payment.PaymentDate            = tranlogDTO.PaymentDate;
                            payment.PaymentMode            = tranlogDTO.TransferMode;
                            payment.TransactionLog         = tranlogDTO;
                            payment.CurrentAdjustingAmount = tranlogDTO.CurrentAdjusting;
                            if (_paymentSvc.Insert(payment).IsSuccess)
                            {
                                ts.Complete();
                            }
                        }
                        return(Json(new { status = true, data = tranlogDTO, message = "Successful" }, JsonRequestBehavior.AllowGet));
                    }
                }
                return(Json(new { status = false, data = tranlogDTO, message = "Payment failed." }, JsonRequestBehavior.AllowGet));
            }
            return(Json(new { status = false, data = tranlogDTO, message = "Paid amount is greater than due amount" }, JsonRequestBehavior.AllowGet));
        }