/// <summary>
        /// Adds the specified service level client.
        /// </summary>
        /// <param name="paymentPass">The payment pass.</param>
        /// <returns></returns>
        public tbl_PaymentBalance Add(tbl_PaymentBalance paymentPass)
        {
            paymentPass.ID = Guid.NewGuid();
            _dataContext.tbl_PaymentBalance.AddObject(paymentPass);
            _dataContext.SaveChanges();

            return(paymentPass);
        }
 /// <summary>
 /// Updates the specified service level client.
 /// </summary>
 /// <param name="paymentPass">The payment pass.</param>
 public void Update(tbl_PaymentBalance paymentPass)
 {
     _dataContext.SaveChanges();
 }
 /// <summary>
 /// Deletes the specified service level client.
 /// </summary>
 /// <param name="paymentPass">The payment pass.</param>
 public void Delete(tbl_PaymentBalance paymentPass)
 {
     _dataContext.tbl_PaymentBalance.DeleteObject(paymentPass);
     _dataContext.SaveChanges();
 }
Esempio n. 4
0
        public void Run()
        {
            var dataManager = new DataManager();

            var paymentPasses = dataManager.PaymentPass.SelectAll().Where(a => a.ProcessedByCron == false && a.OutgoCFOID != null && a.OutgoPaymentArticleID != null).OrderBy(a => a.tbl_Payment.DatePlan).OrderBy(a => a.tbl_Payment.DateFact);

            var today = DateTime.Now.Date;

            foreach (var paymentPass in paymentPasses)
            {
                #region Новая проводка
                if (paymentPass.OldAmount == null && paymentPass.OldCreatedAt == null && paymentPass.OldOutgoCFOID == null && paymentPass.OldOutgoPaymentArticleID == null && paymentPass.OldOutgoPaymentPassCategoryID == null && !paymentPass.ToDelete)
                {
                    var paymentBalances = dataManager.PaymentBalance.SelectByDate(paymentPass.SiteID, paymentPass.OutgoPaymentPassCategoryID, paymentPass.OutgoCFOID, paymentPass.OutgoPaymentArticleID, paymentPass.CreatedAt);
                    foreach (var paymentBalance in paymentBalances)
                    {
                        if (paymentPass.Amount != null)
                        {
                            paymentBalance.BalancePlan += (decimal)paymentPass.Amount;
                            if (paymentPass.IsFact != null && paymentPass.IsFact == true)
                            {
                                paymentBalance.BalanceFact += (decimal)paymentPass.Amount;
                            }
                            dataManager.PaymentBalance.Update(paymentBalance);
                        }
                    }
                    if (paymentBalances == null)
                    {
                        var balance = new tbl_PaymentBalance();
                        balance.SiteID = paymentPass.SiteID;
                        balance.PaymentPassCategoryID = paymentPass.OutgoPaymentPassCategoryID;
                        balance.CFOID            = paymentPass.OutgoCFOID;
                        balance.PaymentArticleID = paymentPass.OutgoPaymentArticleID;
                        balance.Date             = paymentPass.CreatedAt;
                        balance.BalancePlan      = (decimal)paymentPass.Amount;
                        balance.BalanceFact      = paymentPass.IsFact == true ? (decimal)paymentPass.Amount : 0;
                        dataManager.PaymentBalance.Add(balance);
                    }
                    paymentPass.ProcessedByCron = true;
                    dataManager.PaymentPass.Update(paymentPass);
                    continue;
                }
                #endregion
                #region На удаление
                if (paymentPass.ToDelete)
                {
                    var paymentBalances = dataManager.PaymentBalance.SelectByDate(paymentPass.SiteID, paymentPass.OutgoPaymentPassCategoryID, paymentPass.OutgoCFOID, paymentPass.OutgoPaymentArticleID, paymentPass.CreatedAt);
                    foreach (var paymentBalance in paymentBalances)
                    {
                        if (paymentBalance.BalancePlan != null && paymentPass.Amount != null && paymentBalance.BalancePlan >= (decimal)paymentPass.Amount)
                        {
                            paymentBalance.BalancePlan -= (decimal)paymentPass.Amount;
                            if (paymentPass.IsFact != null && paymentPass.IsFact == true)
                            {
                                paymentBalance.BalanceFact -= (decimal)paymentPass.Amount;
                            }
                            dataManager.PaymentBalance.Update(paymentBalance);
                        }
                    }
                    dataManager.PaymentPass.Delete(paymentPass);
                    continue;
                }
                #endregion

                #region Изменение
                if ((paymentPass.OldAmount != null || paymentPass.OldCreatedAt != null || paymentPass.OldOutgoCFOID != null || paymentPass.OldOutgoPaymentArticleID != null || paymentPass.OldOutgoPaymentPassCategoryID != null) && !paymentPass.ToDelete)
                {
                    var paymentBalances = dataManager.PaymentBalance.SelectByDate(paymentPass.SiteID, paymentPass.OutgoPaymentPassCategoryID, paymentPass.OutgoCFOID, paymentPass.OutgoPaymentArticleID, paymentPass.CreatedAt);
                    foreach (var paymentBalance in paymentBalances) // Обновить новые значения
                    {
                        if (paymentPass.Amount != null)
                        {
                            paymentBalance.BalancePlan += (decimal)paymentPass.Amount;
                            if (paymentPass.IsFact != null && paymentPass.IsFact == true)
                            {
                                paymentBalance.BalanceFact += (decimal)paymentPass.Amount;
                            }
                            dataManager.PaymentBalance.Update(paymentBalance);
                        }
                    }
                    if (paymentBalances == null) //Создать новый баланс
                    {
                        var balance = new tbl_PaymentBalance();
                        balance.SiteID = paymentPass.SiteID;
                        balance.PaymentPassCategoryID = paymentPass.OutgoPaymentPassCategoryID;
                        balance.CFOID            = paymentPass.OutgoCFOID;
                        balance.PaymentArticleID = paymentPass.OutgoPaymentArticleID;
                        balance.Date             = paymentPass.CreatedAt;
                        balance.BalancePlan      = (decimal)paymentPass.Amount;
                        balance.BalanceFact      = paymentPass.IsFact == true ? (decimal)paymentPass.Amount : 0;
                        dataManager.PaymentBalance.Add(balance);
                    }
                    paymentBalances = dataManager.PaymentBalance.SelectByDate(paymentPass.SiteID, paymentPass.OldOutgoPaymentPassCategoryID ?? paymentPass.OutgoPaymentPassCategoryID, paymentPass.OldOutgoCFOID ?? paymentPass.OldOutgoCFOID, paymentPass.OldOutgoPaymentArticleID ?? paymentPass.OutgoPaymentArticleID, paymentPass.OldCreatedAt ?? paymentPass.CreatedAt);
                    foreach (var paymentBalance in paymentBalances) // Обновить старые значения
                    {
                        if (paymentPass.Amount != null)
                        {
                            paymentBalance.BalancePlan -= (decimal)paymentPass.Amount;
                            if (paymentPass.IsFact != null && paymentPass.IsFact == true)
                            {
                                paymentBalance.BalanceFact -= (decimal)paymentPass.Amount;
                            }
                            dataManager.PaymentBalance.Update(paymentBalance);
                        }
                    }
                    paymentPass.OldAmount                     = null;
                    paymentPass.OldCreatedAt                  = null;
                    paymentPass.OldOutgoCFOID                 = null;
                    paymentPass.OldOutgoPaymentArticleID      = null;
                    paymentPass.OldOutgoPaymentPassCategoryID = null;
                    paymentPass.ProcessedByCron               = true;
                    dataManager.PaymentPass.Update(paymentPass);
                    continue;
                }
                #endregion
            }
        }