Ejemplo n.º 1
0
        protected void BtnUpdate_Click(object sender, EventArgs e)
        {
            if (DataManager.PaymentStatus.SelectById(CurrentUser.Instance.SiteID, ucPaymentStatus.PaymentStatusId).IsLast)
            {
                double?total   = 0.0;
                bool   isValid = true;
                if (ucPaymentPass.PaymentPasses != null && ucPaymentPass.PaymentPasses.Count > 0)
                {
                    foreach (var paymentPass in ucPaymentPass.PaymentPasses)
                    {
                        if (paymentPass.IncomeCFOID == null || paymentPass.IncomePaymentArticleID == null ||
                            paymentPass.OutgoCFOID == null || paymentPass.OutgoPaymentArticleID == null)
                        {
                            isValid = false;
                            cvGroupUpdate.ErrorMessage = "Не указан ЦФО или статья";
                            break;
                        }
                        total += paymentPass.Amount;
                    }
                    if (total != rntxtTotal.Value)
                    {
                        isValid = false;
                        cvGroupUpdate.ErrorMessage = "Сумма проводок не равна сумме оплаты";
                    }
                }
                else
                {
                    isValid = false;
                    cvGroupUpdate.ErrorMessage = "Не указаны проводки";
                }
                cvGroupUpdate.IsValid = isValid;
            }
            if (cvGroupUpdate.IsValid)
            {
                paymentData = DataManager.Payment.SelectById(SiteId, _paymentID);

                var isUpdate = paymentData != null;

                paymentData = DataManager.Payment.Save(
                    SiteId,
                    paymentData == null ? Guid.Empty : paymentData.ID,
                    txtAssignment.Text, rdpDatePlan.SelectedDate ?? DateTime.Now, rdpDateFact.SelectedDate,
                    int.Parse(ddlPaymentType.SelectedValue),
                    ucPaymentStatus.PaymentStatusId, dcbPayer.SelectedIdNullable,
                    dcbPayerLegalAccount.SelectedIdNullable, dcbRecipient.SelectedIdNullable,
                    dcbRecipientLegalAccount.SelectedIdNullable, dcbCurrency.SelectedId, rntxtCourse.Value ?? 1,
                    rntxtAmount.Value.HasValue ? decimal.Parse(rntxtAmount.Value.ToString()) : 0,
                    rntxtTotal.Value.HasValue ? decimal.Parse(rntxtTotal.Value.ToString()) : 0,
                    dcbOrder.SelectedIdNullable, dcbInvoice.SelectedIdNullable

                    );



                var oldPaymentPasses       = DataManager.PaymentPass.SelectAll(CurrentUser.Instance.SiteID, paymentData.ID);
                List <tbl_PaymentPass> ids = new List <tbl_PaymentPass>();
                foreach (var old in oldPaymentPasses)
                {
                    if (ucPaymentPass.PaymentPasses.Where(a => a.ID == old.ID).Select(a => a.ID).SingleOrDefault() ==
                        Guid.Empty)
                    {
                        ids.Add(old);
                    }
                }
                foreach (var tblPaymentPass in ids)
                {
                    if (tblPaymentPass.ProcessedByCron)
                    {
                        tblPaymentPass.ProcessedByCron = false;
                        tblPaymentPass.ToDelete        = true;
                        DataManager.PaymentPass.Update(tblPaymentPass);

                        //tblPaymentPass.OldCreatedAt = tblPaymentPass.CreatedAt;
                        //tblPaymentPass.OldAmount = tblPaymentPass.Amount;
                        //tblPaymentPass.OldOutgoCFOID = tblPaymentPass.OldOutgoCFOID;
                        //tblPaymentPass.OldOutgoPaymentArticleID = tblPaymentPass.OutgoPaymentArticleID;
                    }
                    else
                    {
                        DataManager.PaymentPass.Delete(tblPaymentPass);
                    }
                }
                foreach (var paymentPass in ucPaymentPass.PaymentPasses)
                {
                    var oldPaymentPass = DataManager.PaymentPass.SelectById(paymentData.ID, paymentPass.ID);
                    if (oldPaymentPass != null)
                    {
                        oldPaymentPass.SiteID    = CurrentUser.Instance.SiteID;
                        oldPaymentPass.PaymentID = paymentData.ID;
                        oldPaymentPass.IncomePaymentPassCategoryID = paymentPass.IncomePaymentPassCategoryID;
                        oldPaymentPass.IncomeCFOID                = paymentPass.IncomeCFOID;
                        oldPaymentPass.IncomePaymentArticleID     = paymentPass.IncomePaymentArticleID;
                        oldPaymentPass.OutgoPaymentPassCategoryID = paymentPass.OutgoPaymentPassCategoryID;

                        if (oldPaymentPass.OutgoCFOID != paymentPass.OutgoCFOID)
                        {
                            oldPaymentPass.OldOutgoCFOID   = oldPaymentPass.OutgoCFOID;
                            oldPaymentPass.ProcessedByCron = false;
                        }
                        if (oldPaymentPass.OutgoPaymentArticleID != paymentPass.OutgoPaymentArticleID)
                        {
                            oldPaymentPass.OldOutgoPaymentArticleID = oldPaymentPass.OldOutgoPaymentArticleID;
                            oldPaymentPass.ProcessedByCron          = false;
                        }
                        if (rdpDateFact.SelectedDate != null && oldPaymentPass.CreatedAt != rdpDateFact.SelectedDate || rdpDateFact.SelectedDate == null && rdpDatePlan.SelectedDate != null && oldPaymentPass.CreatedAt != rdpDatePlan.SelectedDate)
                        {
                            oldPaymentPass.OldCreatedAt    = oldPaymentPass.CreatedAt;
                            oldPaymentPass.ProcessedByCron = false;
                        }
                        if (oldPaymentPass.Amount != paymentPass.Amount)
                        {
                            oldPaymentPass.Amount          = oldPaymentPass.Amount;
                            oldPaymentPass.ProcessedByCron = false;
                        }

                        oldPaymentPass.CreatedAt             = rdpDateFact.SelectedDate ?? rdpDatePlan.SelectedDate;
                        oldPaymentPass.OutgoCFOID            = paymentPass.OutgoCFOID;
                        oldPaymentPass.OutgoPaymentArticleID = paymentPass.OutgoPaymentArticleID;

                        oldPaymentPass.FormulaID = paymentPass.FormulaID;
                        oldPaymentPass.Value     = paymentPass.Value;
                        oldPaymentPass.Amount    = paymentPass.Amount;
                        if (DataManager.PaymentStatus.SelectById(CurrentUser.Instance.SiteID, ucPaymentStatus.PaymentStatusId).IsLast)
                        {
                            oldPaymentPass.IsFact = true;
                        }
                        DataManager.PaymentPass.Update(oldPaymentPass);
                    }
                    else
                    {
                        DataManager.PaymentPass.Add(new tbl_PaymentPass()
                        {
                            SiteID    = CurrentUser.Instance.SiteID,
                            PaymentID = paymentData.ID,
                            CreatedAt = rdpDateFact.SelectedDate ?? rdpDatePlan.SelectedDate,
                            IncomePaymentPassCategoryID =
                                paymentPass.IncomePaymentPassCategoryID,
                            IncomeCFOID                = paymentPass.IncomeCFOID,
                            IncomePaymentArticleID     = paymentPass.IncomePaymentArticleID,
                            OutgoPaymentPassCategoryID =
                                paymentPass.OutgoPaymentPassCategoryID,
                            OutgoCFOID            = paymentPass.OutgoCFOID,
                            OutgoPaymentArticleID = paymentPass.OutgoPaymentArticleID,
                            FormulaID             = paymentPass.FormulaID,
                            Value  = paymentPass.Value,
                            Amount = paymentPass.Amount
                        });
                    }
                }


                if (!isUpdate)
                {
                    Response.Redirect(UrlsData.AP_PaymentsEdit(paymentData.ID));
                }
            }
        }