Exemple #1
0
        /*
         * CASH
         */
        public CashModel CashCreate(string type, string invoice,
                                    string description,
                                    string value,
                                    string tax,
                                    string tax_base,
                                    string currency,
                                    string type_person,
                                    string doc_type,
                                    string doc_number,
                                    string name,
                                    string last_name,
                                    string email,
                                    string cell_phone,
                                    string end_date,
                                    string url_response,
                                    string url_confirmation,
                                    string method_confirmation)
        {
            ENDPOINT  = body.getQueryCash(type);
            PARAMETER = body.getBodyCashCreate(_auxiliars.ConvertToBase64(IV), _TEST, _PUBLIC_KEY, _PRIVATE_KEY,
                                               invoice, description, value, tax, tax_base, currency, type_person, doc_type, doc_number, name,
                                               last_name, email, cell_phone, end_date, url_response, url_confirmation, method_confirmation);
            string content = _restRequest.Execute(
                ENDPOINT,
                "POST",
                _auxiliars.ConvertToBase64(_PUBLIC_KEY),
                PARAMETER);
            CashModel cash = JsonConvert.DeserializeObject <CashModel>(content);

            return(cash);
        }
Exemple #2
0
        public ManualStepResultModel PerformManualStep(int?verificationNumber)
        {
            var result = _gameManager.PerformManualStep(
                verificationNumber != null
                    ? new VerificationManualStepResult {
                VerificationNumber = verificationNumber.Value
            }
                    : null);
            var verificationnumberResult      = result as VerificationRequiredResult;
            VerificationData verificationData = null;
            CashModel        modifiedCounters = null;

            if (verificationnumberResult != null)
            {
                verificationData = new VerificationData
                {
                    FirstNumber  = verificationnumberResult.FirstNumber,
                    SecondNumber = verificationnumberResult.SecondNumber
                };
            }

            var noVerficationRequiredResult = result as NoVerficationRequiredResult;

            if (noVerficationRequiredResult != null)
            {
                modifiedCounters = _fundsCounterModelMapper.Map(noVerficationRequiredResult.ModifiedCash);
                verificationData = null;
            }

            return(new ManualStepResultModel
            {
                VerificationData = verificationData,
                ModifiedCountersInfo = modifiedCounters
            });
        }
        /// <summary>
        /// Saves this instance.
        /// </summary>
        /// <returns></returns>
        public long Save(bool isGenerateParalell)
        {
            var voucher = new CashModel
            {
                CashDetails         = View.PaymentVoucherDetails,
                CashParalellDetails = View.CashParalellDetails,
                RefId                = View.RefId,
                RefTypeId            = View.RefTypeId,
                RefNo                = View.RefNo,
                PostedDate           = View.PostedDate,
                RefDate              = View.RefDate,
                AccountingObjectId   = View.AccountingObjectId,
                CustomerId           = View.CustomerId,
                VendorId             = View.VendorId,
                EmployeeId           = View.EmployeeId,
                Trader               = View.Trader,
                CurrencyCode         = View.CurrencyCode,
                AccountNumber        = View.AccountNumber,
                TotalAmount          = View.TotalAmount,
                ExchangeRate         = View.ExchangeRate,
                TotalAmountExchange  = View.TotalAmountExchange,
                JournalMemo          = View.JournalMemo,
                DocumentInclude      = View.DocumentInclude,
                AccountingObjectType = View.AccountingObjectType,
                BankId               = View.BankId,
                BankAccount          = View.BankAccount
            };

            return(View.RefId == 0 ? Model.AddPaymentVoucher(voucher, isGenerateParalell) : Model.UpdatePaymentVoucher(voucher, isGenerateParalell));
        }
Exemple #4
0
        public async Task <IActionResult> Create([Bind("Id,OrdersNumber,Date,AccountingPass,Amount,Destination,FullName,Type,Account")] CashModel cashModel)
        {
            if (ModelState.IsValid)
            {
                _context.Add(cashModel);
                await _context.SaveChangesAsync();

                return(RedirectToAction("Index"));
            }
            return(View(cashModel));
        }
Exemple #5
0
        private void addCash(CashModel item)
        {
            UCAllPayMent ucPayment = new UCAllPayMent();

            item.PaymentID               = 1;
            ucPayment.lblStt.Text        = "#" + CountUcPayMent().ToString();
            ucPayment.lblMethodType.Text = btnCash.Text;
            ucPayment.lblTotal.Text      = "$" + money.Format2(item.Total * 1000);
            ucPayment.Tag    = item;
            ucPayment.Click += ucPayment_Click;
            flpPaymentType.Controls.Add(ucPayment);
        }
Exemple #6
0
        public async Task <IActionResult> Edit(int id, [Bind("Id,AccountingPass,OrdersNumber,Amount,Destination,Date,FullName,Account")] CashModel cashModel)
        {
            if (id != cashModel.Id)
            {
                return(NotFound());
            }

            if (ModelState.IsValid)
            {
                var previousModel = await _context.CashModel.AsNoTracking().SingleOrDefaultAsync(c => c.Id == id);

                cashModel.MembershipFeeId = previousModel.MembershipFeeId;

                if (previousModel.Amount != cashModel.Amount)
                {
                    var fee = await _context.MembershipFees.AsNoTracking().SingleOrDefaultAsync(f => f.Id == cashModel.MembershipFeeId);

                    double difference = previousModel.Amount - cashModel.Amount;
                    fee.LeftOver += difference;
                    var payments =
                        await
                        _context.Payments.Where
                            (p => p.MembershipFeeForeignKey == cashModel.MembershipFeeId &&
                            p.Status == PaymentStatus.Pending)
                        .OrderBy(d => d.PaymentDeadline)
                        .ToListAsync();

                    payments[0].DepositOrDebt -= difference;
                    _context.Update(fee);
                    _context.Update(payments[0]);
                }

                try
                {
                    _context.Update(cashModel);
                    await _context.SaveChangesAsync();
                }
                catch (DbUpdateConcurrencyException)
                {
                    if (!CashModelExists(cashModel.Id))
                    {
                        return(NotFound());
                    }
                    else
                    {
                        throw;
                    }
                }
                return(RedirectToAction("Index"));
            }
            return(View(cashModel));
        }
Exemple #7
0
        public async Task <IActionResult> CreateForFee([Bind("Id,OrdersNumber,Date,AccountingPass,Amount,Destination,FullName,Type,Account,MembershipFeeId")] CashModel cashModel)
        {
            if (ModelState.IsValid)
            {
                var fee = _context.MembershipFees.SingleOrDefault(f => f.Id == cashModel.MembershipFeeId);
                fee.LeftOver -= cashModel.Amount;
                var payments = await _context.Payments.Where(p => p.MembershipFeeForeignKey == cashModel.MembershipFeeId && p.Status == PaymentStatus.Pending).OrderBy(p => p.PaymentDeadline).ToListAsync();

                double amount = cashModel.Amount;

                if (amount > 0)
                {
                    for (int i = 0; i < payments.Count; i++)
                    {
                        double depositOrDebt = payments[i].DepositOrDebt.Value < 0
                           ? payments[i].DepositOrDebt.Value * -1
                           : -1;

                        if (depositOrDebt != -1)
                        {
                            if (amount >= depositOrDebt)
                            {
                                payments[i].Status = PaymentStatus.Payed;
                                payments[i].CashPaymentForeignKey = cashModel.Id;
                                payments[i].PayedOn = cashModel.Date;
                                amount -= depositOrDebt;
                                payments[i].DepositOrDebt = 0;
                                _context.Update(payments[i]);
                                if (amount == 0)
                                {
                                    break;
                                }
                            }
                            else
                            {
                                payments[i].DepositOrDebt += amount;

                                _context.Update(payments[i]);
                                break;
                            }
                        }
                    }
                }

                _context.Update(fee);
                _context.Add(cashModel);
                await _context.SaveChangesAsync();

                return(RedirectToAction("Index", "MembershipFees"));
            }
            return(View("_CreateForFee", cashModel));
        }
Exemple #8
0
        /*
         * CASH
         */
        public CashModel CashCreate(string type, string invoice,
                                    string description,
                                    string value,
                                    string tax,
                                    string tax_base,
                                    string currency,
                                    string type_person,
                                    string doc_type,
                                    string doc_number,
                                    string name,
                                    string last_name,
                                    string email,
                                    string cell_phone,
                                    string end_date,
                                    string url_response,
                                    string url_confirmation,
                                    string method_confirmation,
                                    CashSplitModel split_data = null)
        {
            CashModel cash    = null;
            string    content = "";

            ENDPOINT = body.getQueryCash(type);

            if (split_data != null)
            {
                PARAMETER = body.getBodyBankCreateSplit(_auxiliars.ConvertToBase64(IV), _TEST, _PUBLIC_KEY, _PRIVATE_KEY,
                                                        "", invoice, description, value, tax, tax_base, currency, type_person, doc_type, doc_number, name,
                                                        last_name, email, "", cell_phone, url_response, url_confirmation, method_confirmation, split_data.splitpayment,
                                                        split_data.split_app_id, split_data.split_merchant_id, split_data.split_type, split_data.split_primary_receiver,
                                                        split_data.split_primary_receiver_fee, split_data.split_receivers);
            }
            else
            {
                PARAMETER = body.getBodyCashCreate(_auxiliars.ConvertToBase64(IV), _TEST, _PUBLIC_KEY, _PRIVATE_KEY,
                                                   invoice, description, value, tax, tax_base, currency, type_person, doc_type, doc_number, name,
                                                   last_name, email, cell_phone, end_date, url_response, url_confirmation, method_confirmation);
            }

            content = _restRequest.Execute(
                ENDPOINT,
                "POST",
                _auxiliars.ConvertToBase64(_PUBLIC_KEY),
                PARAMETER);

            cash = JsonConvert.DeserializeObject <CashModel>(content);
            return(cash);
        }
Exemple #9
0
 public ActionResult Cash(CashModel model)
 {
     if (ModelState.IsValid)
     {
         var result = CommandBus.ExecuteCommand(new CashRequest {
             AccountId = CardDto.AccountId, Summ = model.Value
         });
         if (result.Success)
         {
             return(View("Success"));
         }
         return(View("Fail"));
     }
     IsPinChecked = false;
     return(RedirectToAction("Cash"));
 }
Exemple #10
0
 private void btnCash_Click(object sender, EventArgs e)
 {
     try
     {
         if (txtTender.Text != string.Empty && Convert.ToDouble(txtTender.Text) > 0)
         {
             lockTextChange = true;
             CashModel item = new CashModel();
             item.PaymentID = 1;
             item.Total     = Convert.ToDouble(txtTender.Text);
             addCash(item);
             addPayment(item);
             CheckTotal();
             lockTextChange = false;
         }
     }
     catch (Exception ex)
     {
         LogPOS.WriteLog("frmPayMent::::::btnCash_Click:::::::::::::::::::::::::::::::::::" + ex.Message);
     }
 }
        /// <summary>
        /// Подготовка данных для сохранения.
        /// </summary>
        private List <ExchangeRate> ProcessorData(List <ExchangeRate> models, CashModel urlModel)
        {
            var saveModel             = new List <ExchangeRate>();
            var ExchangeRateUrlModels = urlModel.Item.ToList();

            foreach (var ExchangeRateUrlModel in ExchangeRateUrlModels)
            {
                //if (!models.Any(x => x.IsoNumCode == currencyCodesReferenceUrlModel.ISO_Num_Code))
                //{
                //    saveModel.Add(new ExchangeRate
                //    {
                //        Name = currencyCodesReferenceUrlModel.Name,
                //        EngName = currencyCodesReferenceUrlModel.EngName,
                //        ParentCode = currencyCodesReferenceUrlModel.ParentCode,
                //        IsoNumCode = currencyCodesReferenceUrlModel.ISO_Num_Code,
                //        IsoCharCode = currencyCodesReferenceUrlModel.ISO_Char_Code
                //    });
                //}
            }

            return(saveModel);
        }
Exemple #12
0
 public ActionResult Cash()
 {
     if (IsPinChecked)
     {
         ExecutionResult <CardDto> result = CommandBus.ExecuteCommand(new CardRequest()
         {
             Value = CardDto.Number
         }) as ExecutionResult <CardDto>;
         if (result != null && result.Success && result.TypedResult != null)
         {
             CardDto = result.TypedResult;
             var model = new CashModel()
             {
                 CurrencyType = (CurrencyTypeEnum)CardDto.AccountIdObject.CurrencyType
             };
             return(View(model));
         }
         return(RedirectToAction("Index"));
     }
     LastActionUrl = Url.Action("Cash");
     PinFailCount  = 0;
     return(RedirectToAction("CheckPin"));
 }
Exemple #13
0
        void ucPayment_Click(object sender, EventArgs e)
        {
            UCAllPayMent ucCash = (UCAllPayMent)sender;

            try
            {
                CashModel data = (CashModel)ucCash.Tag;
                for (int i = 0; i < lstPayment.Count; i++)
                {
                    if (lstPayment[i].PaymentTypeID == data.PaymentID)
                    {
                        lstPayment[i].Total = lstPayment[i].Total - data.Total;
                    }
                }
                flpPaymentType.Controls.Remove(ucCash);
                RemoveUc = true;
                CheckTotal();
            }
            catch (Exception ex)
            {
                LogPOS.WriteLog("frmPayment:::::::::::::::::::::ucPayment_Click::::::::::::::::::::::" + ex.Message);
            }
        }
Exemple #14
0
        private int CheckPaymentSplitBill(CashModel item)
        {
            int index = -1;

            try
            {
                if (lstPaymentSplitBill.Count > 0)
                {
                    for (int i = 0; i < lstPaymentSplitBill.Count; i++)
                    {
                        if (lstPaymentSplitBill[i].PaymentTypeID == item.PaymentID)
                        {
                            index = i;
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                LogPOS.WriteLog("frmPayMent::::::::CheckPayment::::::::::::::::::::CashModel::::::::::::::::" + ex.Message);
            }
            return(index);
        }
Exemple #15
0
        private void addPayment(CashModel item)
        {
            try
            {
                int result     = CheckPayment(item);
                int resulSplit = CheckPaymentSplitBill(item);
                if (result != -1)
                {
                    lstPayment[result].Total = lstPayment[result].Total + item.Total;
                }
                else
                {
                    PayMentModel pay = new PayMentModel();
                    pay.PaymentTypeID = item.PaymentID;
                    pay.Total         = item.Total;
                    lstPayment.Add(pay);
                }
                /////////////
                if (resulSplit != -1)
                {
                    lstPaymentSplitBill[result].Total = lstPaymentSplitBill[result].Total + item.Total;
                }
                else
                {
                    PayMentModel pay = new PayMentModel();
                    pay.PaymentTypeID = item.PaymentID;
                    pay.Total         = item.Total;

                    lstPaymentSplitBill.Add(pay);
                }
            }
            catch (Exception ex)
            {
                LogPOS.WriteLog("frmPayMent::::::::addPayment:::::::::::::::::::::::::::CashModel::::::::::::::::::::::::::" + ex.Message);
            }
        }
        public IActionResult CashCreate()
        {
            CashModel response = epayco.CashCreate("efecty",
                                                   "123456789",
                                                   "pago de pruebas",
                                                   "50000",
                                                   "0",
                                                   "0",
                                                   "COP",
                                                   "0",
                                                   "CC",
                                                   "1026150902",
                                                   "alejandro",
                                                   "castañeda",
                                                   "*****@*****.**",
                                                   "3146254435",
                                                   "2020-09-20",
                                                   "https:/secure.payco.co/restpagos/testRest/endpagopse.php",
                                                   "https:/secure.payco.co/restpagos/testRest/endpagopse.php",
                                                   "GET");


            return(Ok(response));
        }
Exemple #17
0
        /*
         * CASH
         */
        public CashModel CashCreate(string type, string invoice,
                                    string description,
                                    string value,
                                    string tax,
                                    string tax_base,
                                    string ico,
                                    string currency,
                                    string type_person,
                                    string doc_type,
                                    string doc_number,
                                    string name,
                                    string last_name,
                                    string email,
                                    string cell_phone,
                                    string end_date,
                                    string url_response,
                                    string url_confirmation,
                                    string method_confirmation,
                                    string extra1            = "N/A",
                                    string extra2            = "N/A",
                                    string extra3            = "N/A",
                                    string extra4            = "N/A",
                                    string extra5            = "N/A",
                                    string extra6            = "N/A",
                                    string extra7            = "N/A",
                                    string extra8            = "N/A",
                                    string extra9            = "N/A",
                                    string extra10           = "N/A",
                                    SplitModel split_details = null)
        {
            CashModel cash;
            string    content;
            CashModel invalid = new CashModel
            {
                success        = false,
                title_response = "Error",
                text_response  = "Método de pago en efectivo no válido, unicamnete soportados: efecty, gana, redservi, puntored, sured",
                last_action    = "validation transaction",
                data           = new DataCash
                {
                    totalerrores = 1,
                    errores      = new List <errors>
                    {
                        new errors
                        {
                            codError     = "109",
                            errorMessage = "Método de pago en efectivo no válido, unicamnete soportados: efecty, gana, redservi, puntored, sured"
                        }
                    }
                }
            };
            string medio = type.ToLower();

            if (medio == "baloto")
            {
                return(invalid);
            }
            bool isCorrect = this.GetEntitiesCash(type);

            if (!isCorrect)
            {
                return(invalid);
            }
            ENDPOINT = Constants.url_cash + type;

            PARAMETER = body.getBodyCashCreate(_auxiliars.ConvertToBase64(IV), _TEST, _PUBLIC_KEY, _PRIVATE_KEY,
                                               invoice, description, value, tax, tax_base, ico, currency, type_person, doc_type, doc_number, name,
                                               last_name, email, cell_phone, end_date, url_response, url_confirmation, method_confirmation, extra1, extra2, extra3, extra4, extra5, extra6, extra7, extra8, extra9, extra10);

            if (split_details != null)
            {
                string split_req_body = body.getBodySplitPayments(split_details, true);
                PARAMETER = Auxiliars.ConcatBodyStrings(PARAMETER, split_req_body);
            }
            content = _restRequest.Execute(
                ENDPOINT,
                "POST",
                _auxiliars.ConvertToBase64(_PUBLIC_KEY),
                PARAMETER);
            cash = JsonConvert.DeserializeObject <CashModel>(content);
            return(cash);
        }
        /// <summary>
        /// Подготовка данных для сохранения.
        /// </summary>
        private List <CurrencyCodesReference> ProcessorData(List <CurrencyCodesReference> models, CashModel urlModel)
        {
            var saveModel = new List <CurrencyCodesReference>();
            var currencyCodesReferenceUrlModels = urlModel.Item.ToList();

            foreach (var currencyCodesReferenceUrlModel in currencyCodesReferenceUrlModels)
            {
                if (!models.Any(x => x.IsoNumCode == currencyCodesReferenceUrlModel.ISO_Num_Code))
                {
                    saveModel.Add(new CurrencyCodesReference
                    {
                        Name        = currencyCodesReferenceUrlModel.Name,
                        EngName     = currencyCodesReferenceUrlModel.EngName,
                        ParentCode  = currencyCodesReferenceUrlModel.ParentCode,
                        IsoNumCode  = currencyCodesReferenceUrlModel.ISO_Num_Code,
                        IsoCharCode = currencyCodesReferenceUrlModel.ISO_Char_Code
                    });
                }
            }

            return(saveModel);
        }
Exemple #19
0
        public static void ReCountPayments(int feeId, CashModel cashModel, TransferPayment transferPayment,
                                           ApplicationDbContext _context)
        {
            var payments =
                _context.Payments.AsNoTracking()
                .Where(p => p.MembershipFeeForeignKey == feeId && p.Status != PaymentStatus.Paused)
                .OrderBy(p => p.PaymentDeadline)
                .ToList();

            foreach (var payment in payments)
            {
                payment.Status        = PaymentStatus.Pending;
                payment.DepositOrDebt = -payment.Amount;
            }

            if (cashModel != null)
            {
                double amount = cashModel.Amount;
                foreach (PendingPaymentModel payment in payments)
                {
                    if (amount >= Math.Abs(payment.DepositOrDebt.Value))
                    {
                        payment.Status = PaymentStatus.Payed;
                        payment.CashPaymentForeignKey = cashModel.Id;
                        payment.PayedOn       = cashModel.Date;
                        amount               -= Math.Abs(payment.DepositOrDebt.Value);
                        payment.DepositOrDebt = 0;

                        _context.Update(payment);

                        if (amount == 0)
                        {
                            break;
                        }
                    }
                    else
                    {
                        payment.DepositOrDebt += amount;

                        _context.Update(payment);
                        break;
                    }
                }
                _context.SaveChanges();
            }
            else if (transferPayment != null)
            {
                double amount = transferPayment.Amount;

                foreach (PendingPaymentModel payment in payments)
                {
                    if (amount >= Math.Abs(payment.DepositOrDebt.Value))
                    {
                        payment.Status = PaymentStatus.Payed;
                        payment.TransferPaymentForeignKey = transferPayment.Id;
                        payment.PayedOn       = transferPayment.Date;
                        amount               -= Math.Abs(payment.DepositOrDebt.Value);
                        payment.DepositOrDebt = 0;

                        _context.Update(payment);


                        if (amount == 0)
                        {
                            break;
                        }
                    }
                    else
                    {
                        payment.DepositOrDebt += amount;

                        _context.Update(payment);
                        break;
                    }
                }
                _context.SaveChanges();
            }
        }
        public ActionResult Push()
        {
            object objResult = "";
            string strFirst  = Request.Form["first"];
            string strMsg    = "";
            bool   bResult   = false;
            //这个是推送消息的类
            PushMessage aPushMessage = new PushMessage()
            {
                template_id = "lypG1jYyOEfYsrAfNFk9SvjOK7-LhEwpPeVNHHxemSI", //模板ID
                                                                             //data=,//暂时不赋值
                topcolor = "#FF0000",                                        //头部颜色
                touser   = Session["openid"].ToString(),                     //用户的Openid
                url      = "http://www.baidu.com"                            //用途是当用户点击推送消息的时候,会进入这个页面,具体用途,自己拓展
            };

            //构造要推送的内容
            CashModel aCachData = new CashModel()
            {
                adCharge = new DataFontStyle()
                {
                    color = "#589E63",
                    value = "对应变动金额"
                },
                cashBalance = new DataFontStyle()
                {
                    color = "#589E63",
                    value = "对应帐户余额"
                },
                date = new DataFontStyle()
                {
                    color = "#589E63",
                    value = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")
                },
                first = new DataFontStyle()
                {
                    color = "#589E63",
                    value = strFirst
                },
                remark = new DataFontStyle()
                {
                    color = "#589E63",
                    value = "对应:点击“查看详情“立即查阅您的帐户财务记录。"
                },
                type = new DataFontStyle()
                {
                    color = "#589E63",
                    value = "对应“现金”"
                }
            };

            //这时候,把要推送的内容,赋值给push,这样,我们要推送的内容就完成了。
            aPushMessage.data = aCachData;

            string strUrl = "https://api.weixin.qq.com/cgi-bin/message/template/send?access_token=" + GetLatestAccess_token();

            string   strJsonData = JsonHelper.Serialize(aPushMessage);
            string   strResult   = HttpPost(strUrl, strJsonData);
            WxResult aResult     = JsonHelper.Deserialize <WxResult>(strResult);

            if (aResult != null)
            {
                if (aResult.errcode == 0)
                {
                    bResult = true;
                }
                else
                {
                    bResult = false;
                    strMsg  = aResult.errmsg;
                }
            }
            else
            {
                bResult = false;
                strMsg  = "通讯失败,请重试。";
            }

            objResult = new { result = bResult, msg = strMsg };
            return(Json(objResult));
        }
Exemple #21
0
        private async Task ReCountPayments(int feeId, CashModel cashModel, TransferPayment transferPayment)
        {
            //var fee = await _context.MembershipFees.SingleOrDefaultAsync(f => f.Id == feeId);
            var payments =
                await
                _context.Payments.Where(p => p.MembershipFeeForeignKey == feeId && p.Status != PaymentStatus.Paused)
                .OrderBy(p => p.PaymentDeadline)
                .ToListAsync();

            foreach (var payment in payments)
            {
                payment.Status        = PaymentStatus.Pending;
                payment.DepositOrDebt = -payment.Amount;
            }

            if (cashModel != null)
            {
                double amount = cashModel.Amount;
                for (int i = 0; i < payments.Count; i++)
                {
                    if (amount >= Math.Abs(payments[i].DepositOrDebt.Value))
                    {
                        payments[i].Status = PaymentStatus.Payed;
                        payments[i].CashPaymentForeignKey = cashModel.Id;
                        payments[i].PayedOn = cashModel.Date;
                        amount -= Math.Abs(payments[i].DepositOrDebt.Value);
                        payments[i].DepositOrDebt = 0;

                        _context.Update(payments[i]);

                        if (amount == 0)
                        {
                            break;
                        }
                    }
                    else
                    {
                        payments[i].DepositOrDebt += amount;

                        _context.Update(payments[i]);
                        break;
                    }
                }
                await _context.SaveChangesAsync();
            }
            else if (transferPayment != null)
            {
                double amount = transferPayment.Amount;

                for (int i = 0; i < payments.Count; i++)
                {
                    if (amount >= Math.Abs(payments[i].DepositOrDebt.Value))
                    {
                        payments[i].Status = PaymentStatus.Payed;
                        payments[i].TransferPaymentForeignKey = transferPayment.Id;
                        payments[i].PayedOn = transferPayment.Date;
                        amount -= Math.Abs(payments[i].DepositOrDebt.Value);
                        payments[i].DepositOrDebt = 0;

                        _context.Update(payments[i]);


                        if (amount == 0)
                        {
                            break;
                        }
                    }
                    else
                    {
                        payments[i].DepositOrDebt += amount;

                        _context.Update(payments[i]);
                        break;
                    }
                }
                await _context.SaveChangesAsync();
            }
        }