Example #1
0
 public static DebtRequest ProcessCheckRequest(DebtRequest request)
 {
     PayRequest request3;
     DebtRequest request2 = new DebtRequest();
     request3 = new PayRequest {
         Period = System.DateTime.Now,
         Period = request3.Period.AddDays((double) (1 - request3.Period.get_Day())),
         PaymentSystem = request.Sender.PaymentSystem,
         Organization = request.Sender.Organization,
         Office = request.Sender.Office,
         Terminal = request.Sender.Terminal,
         Operator = request.Sender.Operator
     };
     request3.SaveChanges();
     request3.DebtProcessRequest(true, request.RequestParameters.DebtAccountId);
     request3 = ObjectWithId.FindById<PayRequest>(request3.Id);
     request2.ResponseParameters.Paid = request3.TotalDebt;
     request2.ResponseParameters.RequestId = request3.Id;
     request2.ResponseParameters.DebtAccountId = request.RequestParameters.DebtAccountId;
     request2.ResponseParameters.UK = request3.AdditionalInfo;
     request2.ResponseParameters.Address = request3.AddressName;
     request2.ResponseParameters.Account = request3.AccountNumber;
     request2.ResponseParameters.OwnerName = request3.OwnerName;
     return request2;
 }
Example #2
0
 public static void ShowDialog(System.Windows.Forms.IWin32Window owner, PayRequest request)
 {
     System.Data.DataTable dataTableByRequestIdFormSpScheme;
     System.Data.DataTable dataTableById;
     System.Data.DataTable dataTableByRequestId = PayRequestBenefit.GetDataTableByRequestId(request);
     if ((dataTableByRequestId == null) || (dataTableByRequestId.Rows.get_Count() == 0))
     {
         System.Data.DataRow row = dataTableByRequestId.Rows.Add((object[]) new object[0]);
         row.set_Item("benefitName", "Льготы отсутствуют");
         row.set_Item("PersonsCount", 0);
     }
     if (request.Id > 0L)
     {
         dataTableByRequestIdFormSpScheme = PayRequestService.GetDataTableByRequestId(request);
     }
     else
     {
         dataTableByRequestIdFormSpScheme = PayRequestService.GetDataTableByRequestIdFormSpScheme(request);
     }
     StiReport report = new StiReport();
     string valueByName = Setting.GetValueByName("Глобальные установки", "Шаблон квитанции");
     string info = "";
     if (valueByName == "ReceiptReportSakhalin")
     {
         report.Load(Resources.ReceiptReportSakhalin);
         long accountId = 0L;
         if (long.TryParse(request.AccountId, ref accountId) && (accountId > 0L))
         {
             info = Organization.FindHouseHolderByAccountId(accountId).Info;
         }
     }
     else
     {
         bool flag = (bool) ((Setting.GetValueByName("Параметры квитанций", "Печатать в кассе колонку ЕДК") ?? "").ToUpper() == "ДА");
         report.Load(flag ? Resources.ReceiptReportWithEDK : Resources.ReceiptReport);
         info = (Organization.CentralOffice == Organization.Null) ? ((string) "Отсутсвует ОРГАНИЗАЦИЯ в глобальных установках") : Organization.CentralOffice.Info;
     }
     report.Compile();
     report.Dictionary.Variables.Add("orgInfo", info);
     report.Dictionary.Variables.Add("diffEDKMonth", ("Да" == (Setting.GetValueByName("Параметры расчетов", "Использовать ЕДК за предыдущий период") ?? string.Empty)) ? -1 : 0);
     if (request.Id > 0L)
     {
         dataTableById = PayRequest.GetDataTableById(request);
     }
     else
     {
         dataTableById = PayRequest.GetDataTableByIdFormSpScheme(request);
     }
     report.RegData("dataRequests", (System.Data.DataTable) dataTableById);
     report.RegData("dataRequestBenefits", (System.Data.DataTable) dataTableByRequestId);
     report.RegData("dataRequestServices", (System.Data.DataTable) dataTableByRequestIdFormSpScheme);
     report.Show((System.Windows.Forms.IWin32Window) owner);
 }
Example #3
0
 public static System.Data.DataTable GetDataTableByRequestIdFormSpScheme(PayRequest payRequest)
 {
     return Mappers.PayRequestServiceMapper.GetDataTableByRequestIdFormSpScheme(-payRequest.Id);
 }
Example #4
0
 public static System.Data.DataTable GetDataTableByRequestId(PayRequest payRequest)
 {
     return Mappers.PayRequestBenefitMapper.GetDataTableByRequestId(payRequest.Id);
 }
Example #5
0
 private void CashPaymentForm_Load(object sender, System.EventArgs e)
 {
     if (!Manager.DesignMode)
     {
         ObjectList<DebtAction> list = new ObjectList<DebtAction>();
         list = Mappers.DebtActionMapper.FindByAccountId(this.m_Account.Id);
         if (list.get_Count() > 0)
         {
             ObjectList<DebtAction> list2 = new ObjectList<DebtAction> {
                 DebtAction.Null
             };
             list2.AddRange(list);
             this.cbActions.set_DataSource(list2);
         }
         else
         {
             this.tableLayoutPanel1.Controls.Remove(this.cbActions);
             this.tableLayoutPanel1.SetRowSpan(this.dataGridView1, (int) (this.tableLayoutPanel1.GetRowSpan(this.dataGridView1) + 1));
         }
         if (User.IsMemberOf(RightsEnum.АРМКассирОплатаВозможностьУстанавливатьДатуОплаты))
         {
             this.tpDatePayment.set_Enabled(true);
         }
         else
         {
             this.tpDatePayment.set_Enabled(false);
         }
         base.SuspendLayout();
         this.set_Font(Manager.WindowFont);
         this.m_PeriodsSource.set_DataSource(Mappers.CalcPeriodMapper.FindAll());
         this.m_PeriodsSource.set_Position(1);
         ObjectList<Organization> serviceHouseHolders = this.m_Account.GetServiceHouseHolders();
         serviceHouseHolders.Insert(0, Organization.Null);
         this.m_HouseHoldersSource.set_DataSource(serviceHouseHolders);
         this.m_HouseHoldersSource.set_Position(this.m_HouseHoldersSource.IndexOf(Organization.Null));
         this.m_Request = new PayRequest();
         this.m_Request.PaymentSystem = PayRequest.LocalPaymentSystem;
         this.m_Request.Organization = Constants.OrgName;
         this.m_Request.Office = "";
         this.m_Request.Terminal = Settings.Default.CashierTerminal;
         this.m_Request.Operator = User.CurrentUser.Name;
         this.m_Request.AccountNumber = this.m_Account.Number;
         this.m_Request.IsManualReturn = Settings.Default.CashierReturnMode;
         this.m_Request.CashFlowTypeId = Settings.Default.CashierCashFlowType;
         if (this.m_BarCode != string.Empty)
         {
             this.m_Request.IsByNotice = true;
             this.m_PayRequestCounters.set_DataSource(this.m_Request.GetRequestCounters());
         }
         else
         {
             this.tab.TabPages.Remove(this.tpCounters);
         }
         this.m_Request.UseBankrupt = this.chbxUseAccountServiceBankrupts.get_Checked();
         this.m_Request.NeedServiceCollapse = Settings.Default.NeedServiceCollapse;
         this.m_Request.PaymentDate = this.m_PaymentDate;
         this.m_Request.UsePaymentDate = Settings.Default.UsePaymentOrderDateForProcessPayment;
         this.m_Request.CashPaymentOrderType = this.m_CashPaymentOrderType;
         this.m_Request.SubService = this.m_subService;
         this.m_Request.PaymentOrderPackId = this.m_PaymentOrderPackId;
         this.m_Request.SaveChanges();
         this.MakeRequest();
         if (Settings.Default.CashierReturnMode)
         {
             this.m_PaymentButton.set_ForeColor(System.Drawing.Color.Red);
             this.m_PaymentButton.set_Font(new System.Drawing.Font(this.m_PaymentButton.Font, System.Drawing.FontStyle.Bold));
             this.m_PaymentButton.set_Text("&ВОЗВРАТ");
             this.m_OneSummPaymentCheckBox.set_Text("Возвращается");
         }
         this.selectDataGridViewTextBoxColumn.set_Visible(Settings.Default.CachierCanExcludeServiceFromPayment);
         if (Setting.GetValueByName("Интерфейсы", "АРМ Кассир. Учитывать невозвратные долги по умолчанию").ToUpper() != "ДА")
         {
             this.chbxUseAccountServiceBankrupts.set_Checked(false);
         }
         base.ResumeLayout();
     }
 }
Example #6
0
 private void m_RequestWorker_DoWork(object sender, DoWorkEventArgs e)
 {
     this.m_Request = ObjectWithId.FindById<PayRequest>(this.m_Request.Id);
     Organization organization = ((Organization) this.m_HouseHoldersSource.get_Current()) ?? Organization.Null;
     this.m_Request.HouseHolderId = organization.Id;
     this.m_Request.Period = (System.DateTime) e.get_Argument();
     this.m_Request.PaidSumm = 0M;
     this.m_Request.UseBankrupt = this.chbxUseAccountServiceBankrupts.get_Checked();
     this.m_Request.PaymentOrderDate = this.m_OrderDate;
     this.m_Request.NeedServiceCollapse = Settings.Default.NeedServiceCollapse;
     this.m_Request.SubService = this.m_subService;
     this.m_Request.IsManualReturn = Settings.Default.CashierReturnMode;
     this.m_Request.DebtActionId = this.m_DebtActionId;
     this.m_Request.PaymentDate = this.m_PaymentDate;
     this.m_Request.SaveChanges();
     foreach (PayRequestServicePayAmount amount in this.m_Request.GetRequestServicePayAmounts())
     {
         amount.Delete();
     }
     ObjectList<PayRequestService> requestServices = this.m_ServicesSource.get_DataSource() as ObjectList<PayRequestService>;
     if ((requestServices != null) && !this.m_HouseHolderChanged)
     {
         this.FillPayRequestServicePayAmount(requestServices);
     }
     this.m_Request.ProcessRequest_Cash(this.m_IsFirstRequest);
     requestServices = this.m_ServicesSource.get_DataSource() as ObjectList<PayRequestService>;
     if ((requestServices != null) && this.m_HouseHolderChanged)
     {
         this.FillPayRequestServicePayAmount(requestServices);
         this.m_HouseHolderChanged = false;
     }
     this.m_Request = ObjectWithId.FindById<PayRequest>(this.m_Request.Id);
 }
Example #7
0
 private void m_ProcessPayment(object sender, System.DateTime period)
 {
     if (this.m_Request == null)
     {
         Messages.ShowError("ОПЛАТА НЕВОЗМОЖНА. ЗАКРОЙТЕ И ОТКРОЙТЕ ФОРМУ ПЛАТЕЖЕЙ");
     }
     else
     {
         lock (LockProcessPayment)
         {
             PayPaymentMoreFixedSum sum = new PayPaymentMoreFixedSum();
             if (this.m_TotalPaid >= PersonsCashSearchForm.FixedSumm)
             {
                 PersonsCashSearchForm form = new PersonsCashSearchForm();
                 if (form.ShowDialog() == System.Windows.Forms.DialogResult.Cancel)
                 {
                     base.ParentForm.Close();
                     goto Label_0374;
                 }
                 sum.PersonId = form.SelectPerson.Id;
             }
             PayRequest payment = null;
             bool flag = false;
             try
             {
                 DALSql.ExecuteNonQuery("begin transaction", null);
                 this.m_Request.IsConfirmed = true;
                 this.m_Request.ConfirmedAt = DALSql.GetDatabaseTime();
                 this.m_Request.PaidSumm = this.m_TotalPaid;
                 this.m_Request.RequestTypeFasetId = Mappers.FasetItemMapper.FindByName(FasetsEnum.PaymentOperationType, "Оплата наличными").Id;
                 this.m_Request.IsManualReturn = Settings.Default.CashierReturnMode;
                 PayLocalTransaction transaction = new PayLocalTransaction {
                     RequestId = this.m_Request.Id
                 };
                 transaction.SaveChanges();
                 this.m_Request.ExternalTransactionId = ((long) transaction.Id).ToString();
                 this.m_Request.AgentId = this.m_Agent.Id;
                 this.m_Request.PackNumber = this.m_PackNumber;
                 this.m_Request.PaymentOrderNumber = this.m_OrderNumber;
                 this.m_Request.PaymentOrderDate = this.m_OrderDate;
                 this.m_Request.PaymentOrderPackId = this.m_PaymentOrderPackId;
                 this.m_Request.UseBankrupt = this.chbxUseAccountServiceBankrupts.get_Checked();
                 this.m_Request.NeedServiceCollapse = Settings.Default.NeedServiceCollapse;
                 this.m_Request.SubService = this.m_subService;
                 this.m_Request.SaveChanges();
                 ObjectList<PayRequestCounter> list = this.m_PayRequestCounters.get_DataSource() as ObjectList<PayRequestCounter>;
                 if (list != null)
                 {
                     foreach (PayRequestCounter counter in list)
                     {
                         counter.SaveChanges();
                     }
                 }
                 this.m_Request.ProcessPayment();
                 this.m_Request.ProcessPayment_ValidateSumm();
                 if (this.m_TotalPaid >= PersonsCashSearchForm.FixedSumm)
                 {
                     PayRequest request2 = ObjectWithId.FindById<PayRequest>(this.m_Request.Id);
                     sum.GroupOperationId = request2.GroupOperId;
                     sum.SpPaymentUno = transaction.Id;
                     sum.UserId = User.CurrentUser.Id;
                     sum.Summ = this.m_TotalPaid;
                     sum.SaveChanges();
                 }
                 DALSql.ExecuteNonQuery("commit transaction", null);
                 payment = this.m_Request;
                 this.m_Request = null;
                 if (!Settings.Default.CashierQuestApplyPrintPayment || (System.Windows.Forms.DialogResult.Yes == System.Windows.Forms.MessageBox.Show(null, "ОПЛАТА ПРОВЕДЕНА УСПЕШНО. ПЕЧАТАТЬ КВИТАНЦИЮ?", "ПЕЧАТЬ КВИТАНЦИИ", System.Windows.Forms.MessageBoxButtons.YesNo, System.Windows.Forms.MessageBoxIcon.Exclamation, System.Windows.Forms.MessageBoxDefaultButton.Button1)))
                 {
                     flag = true;
                 }
                 if (!Settings.Default.CashierReturnMode)
                 {
                     this.m_posView.AddToAccumulatePaySum(payment.PaidSumm, payment.Commission);
                 }
                 else
                 {
                     this.m_posView.AddToAccumulatePaySum(-payment.PaidSumm, -payment.Commission);
                 }
             }
             catch (System.Exception exception)
             {
                 try
                 {
                     DALSql.ExecuteNonQuery("rollback transaction", null);
                 }
                 catch (System.Exception)
                 {
                 }
                 throw new System.ApplicationException("Возникла ошибка при проведении платежа", exception);
             }
             finally
             {
                 this.m_PaymentButton.set_Image(null);
                 if (flag)
                 {
                     this.m_posView.Print(payment, payment, Settings.Default.CashierReturnMode);
                     if (!Settings.Default.CashierReturnMode)
                     {
                         ReceiptReport.ShowDialog(this, payment);
                     }
                 }
                 base.ParentForm.set_DialogResult(System.Windows.Forms.DialogResult.OK);
             }
         Label_0374:;
         }
     }
 }
Example #8
0
 public PayRequest Reverse(string terminal)
 {
     if (base.Id < 0L)
     {
         throw new System.ApplicationException("Ошибка! Дополнительный платеж должен быть отменен через POSView.");
     }
     if (!this.IsProcessed)
     {
         throw new System.ApplicationException("Платеж еще не проведен. Дождитесь проводки платежа.");
     }
     if (this.ReverseRequestId != 0L)
     {
         throw new System.ApplicationException("Платеж уже был возвращен. Повторный возврат невозможен.");
     }
     PayRequest request = new PayRequest {
         PaymentSystem = LocalPaymentSystem,
         Organization = Constants.OrgName,
         Terminal = terminal,
         Operator = User.CurrentUser.Name,
         AccountNumber = this.AccountNumber,
         Period = this.Period,
         AccountId = this.AccountId,
         AddressName = this.AddressName,
         OwnerName = this.OwnerName,
         PaidSumm = this.PaidSumm,
         AgentId = this.AgentId,
         AgentName = this.AgentName,
         PaymentOrderNumber = this.PaymentOrderNumber,
         PackNumber = this.PackNumber,
         PaymentOrderDate = this.PaymentOrderDate,
         Commission = this.Commission,
         RequestTypeFasetId = Mappers.FasetItemMapper.FindByName(FasetsEnum.PaymentOperationType, "Возврат оплаты наличными").Id,
         CashFlowTypeId = this.CashFlowTypeId
     };
     request.SaveChanges();
     request.IsConfirmed = true;
     request.ConfirmedAt = Register.GetDatabaseTime();
     PayLocalTransaction transaction = new PayLocalTransaction {
         RequestId = request.Id
     };
     transaction.SaveChanges();
     request.ExternalTransactionId = ((long) transaction.Id).ToString();
     request.ReverseRequestId = base.Id;
     request.UsePaymentDate = this.UsePaymentDate;
     request.SaveChanges();
     this.ReverseRequestId = request.Id;
     this.SaveChanges();
     request.ProcessPayment();
     return request;
 }
Example #9
0
 public static System.Data.DataTable GetDataTableByIdFormSpScheme(PayRequest request)
 {
     return Mappers.PayRequestMapper.GetDataTableByIdFormSpScheme(-request.Id);
 }
Example #10
0
 public static System.Data.DataTable GetDataTableById(PayRequest request)
 {
     return Mappers.PayRequestMapper.GetDataTableById(request.Id);
 }
Example #11
0
 public void Reverse(PayRequest payment)
 {
     string cashierTerminal = Settings.Default.CashierTerminal;
     if (payment.Id < 0L)
     {
         if (payment.ReverseRequestId != 0L)
         {
             throw new System.ApplicationException("Платеж уже был возвращен. Повторный возврат невозможен.");
         }
         decimal paidSumm = payment.PaidSumm;
         decimal commission = payment.Commission;
         User currentUser = User.GetCurrentUser();
         long id = 0L;
         if (!long.TryParse(payment.AccountId, ref id) || (id == 0L))
         {
             throw new System.ApplicationException("Ошибка при возврате.");
         }
         this.m_Account = AccountOther.FindById(id);
         ObjectList<SpPayment> services = SpPayment.FindByUno(payment.ExternalTransactionId);
         PayLocalTransaction transaction = AccountOther.MakeReversePaymentTry(payment.ExternalTransactionId, currentUser.Id, cashierTerminal);
         AccountOther.MakeCommit();
         this.AddToAccumulatePaySumWithoutQuestion(-paidSumm, -commission);
         this.PrintPayment(this.m_Account, services, ((long) transaction.Id).ToString(), true, paidSumm, commission, false, () => Messages.ShowMessage("Платеж успешно возвращен."), () => Messages.ShowMessage("Платеж успешно возвращен."));
     }
     else
     {
         PayRequest request = payment.Reverse(cashierTerminal);
         this.AddToAccumulatePaySumWithoutQuestion(-request.PaidSumm, -payment.Commission);
         this.Print(request, payment, true);
     }
 }
Example #12
0
 public void Print(PayRequest payment, PayRequest paymentForServices, bool isCancelPayment)
 {
     if (this.IsUseFiscalDocument.Value)
     {
         AccountOther other;
         ObjectList<PayRequestAccountService> requestAccountServices = paymentForServices.GetRequestAccountServices();
         ObjectList<SpPayment> services = new ObjectList<SpPayment>();
         foreach (PayRequestAccountService service in requestAccountServices)
         {
             SpPayment payment2 = new SpPayment {
                 ServiceName = service.Name,
                 Summ = service.Paid
             };
             services.Add(payment2);
         }
         ObjectList<AccountOther> infoOrgFromRequestAccountServices = AccountOther.GetInfoOrgFromRequestAccountServices(paymentForServices.Id);
         if ((infoOrgFromRequestAccountServices != null) && (infoOrgFromRequestAccountServices.get_Count() > 0))
         {
             other = infoOrgFromRequestAccountServices.get_Item(0);
         }
         else
         {
             other = new AccountOther();
         }
         this.PrintPayment(other, services, payment.ExternalTransactionId, isCancelPayment, payment.PaidSumm, paymentForServices.Commission, false, null, null);
     }
 }
Example #13
0
 public static Request ProcessReverseRequest(Request request)
 {
     request = Serializer.FromXml<Request>(System.IO.File.ReadAllText(@"D:\Projects\AIS.SN\AIS.SN.PaymentService\App_Data\5-PayRequest.xml"));
     Request request2 = new Request();
     try
     {
         if (string.IsNullOrEmpty(request.Sender.PaymentSystem))
         {
             return request2.SetStatus(StatusCode.НеНайденТэгPaymentSystem);
         }
         if (string.IsNullOrEmpty(request.Sender.Organization))
         {
             return request2.SetStatus(StatusCode.НеНайденТэгOrganization);
         }
         if (string.IsNullOrEmpty(request.Sender.Operator) && string.IsNullOrEmpty(request.Sender.Terminal))
         {
             return request2.SetStatus(StatusCode.НеНайденыТэгиOperatorИTerminal);
         }
         string reverseTransactionId = request.RequestParameters.ReverseTransactionId;
         if (string.IsNullOrEmpty(reverseTransactionId))
         {
             return request2.SetStatus(StatusCode.НеНайденТэгReverseTransactionId);
         }
         string operationType = request.RequestParameters.OperationType;
         if (string.IsNullOrEmpty(operationType))
         {
             return request2.SetStatus(StatusCode.НеНайденТэгOperationType);
         }
         PayRequest request3 = ObjectWithId.FindById<PayRequest>(request2.RequestParameters.RequestId);
         if (request3.ReverseRequestId != 0L)
         {
             return ((ObjectWithId.FindById<PayRequest>(request3.ReverseRequestId).ExternalTransactionId == reverseTransactionId) ? request2.SetStatus(StatusCode.ЗапросВыполненУспешно) : request2.SetStatus(StatusCode.ЗапросУжеПроведен));
         }
         PayRequest request4 = new PayRequest {
             PaymentSystem = request.Sender.PaymentSystem,
             Organization = request.Sender.Organization,
             Office = request.Sender.Office,
             Terminal = request.Sender.Terminal,
             Operator = request.Sender.Operator,
             ServiceCode = request.Sender.ServiceCode,
             AccountNumber = request3.AccountNumber,
             Period = request3.Period,
             AccountId = request3.AccountId,
             PaidSumm = request3.PaidSumm,
             IsConfirmed = true,
             ConfirmedAt = Register.GetDatabaseTime()
         };
         foreach (FasetItem item in Register.GetFasetItemList(FasetsEnum.PaymentOperationType))
         {
             if (item.Name == operationType)
             {
                 request4.RequestTypeFasetId = item.Id;
             }
         }
         request4.ExternalTransactionId = reverseTransactionId;
         request4.ReverseRequestId = request3.Id;
         request4.SaveChanges();
         request3.ReverseRequestId = request4.Id;
         request3.SaveChanges();
         request2.SetStatus(StatusCode.ЗапросВыполненУспешно);
     }
     catch (System.Exception exception)
     {
         request2 = new Request().SetStatus(StatusCode.НепредвиденнаяОшибка, exception);
     }
     return request2;
 }
Example #14
0
 public static Request ProcessCheckRequest(Request request)
 {
     Request request2 = new Request();
     try
     {
         PayRequest request3;
         if (request.RequestParameters.RequestId == 0L)
         {
             if (string.IsNullOrEmpty(request.Sender.PaymentSystem))
             {
                 return request2.SetStatus(StatusCode.НеНайденТэгPaymentSystem);
             }
             if (string.IsNullOrEmpty(request.Sender.Organization))
             {
                 return request2.SetStatus(StatusCode.НеНайденТэгOrganization);
             }
             if (string.IsNullOrEmpty(request.Sender.Operator) && string.IsNullOrEmpty(request.Sender.Terminal))
             {
                 return request2.SetStatus(StatusCode.НеНайденыТэгиOperatorИTerminal);
             }
             request3 = new PayRequest {
                 AccountNumber = request.RequestParameters.AccountNumber,
                 Period = new System.DateTime(request.RequestParameters.PayPeriodYear, request.RequestParameters.PayPeriodMonth, 1),
                 PaymentSystem = request.Sender.PaymentSystem,
                 Organization = request.Sender.Organization,
                 Office = request.Sender.Office,
                 Terminal = request.Sender.Terminal,
                 Operator = request.Sender.Operator,
                 ServiceCode = request.Sender.ServiceCode
             };
             request3.SaveChanges();
             request3.ProcessRequest_Service(true);
         }
         else
         {
             request3 = ObjectWithId.FindById<PayRequest>(request.RequestParameters.RequestId);
             if (request3.IsConfirmed)
             {
                 return request2.SetStatus(StatusCode.ЗапросУжеПроведен);
             }
             request3.Period = new System.DateTime(request.RequestParameters.PayPeriodYear, request.RequestParameters.PayPeriodMonth, 1);
             request3.PaidSumm = request.RequestParameters.PaidSumm;
             request3.SaveChanges();
             foreach (PayRequestServicePayAmount amount in request3.GetRequestServicePayAmounts())
             {
                 amount.Delete();
             }
             foreach (AIS.SN.Model.DomainObjects.PaymentService.Service service in request.Services)
             {
                 new PayRequestServicePayAmount { RequestId = request3.Id, Code = service.Code, CounterIndication = service.NewCounter, Paid = service.Paid }.SaveChanges();
             }
             request3.ProcessRequest_Service(false);
         }
         request3 = ObjectWithId.FindById<PayRequest>(request3.Id);
         request2 = new Request {
             ResponseParameters = { RequestId = request3.Id, OwnerName = request3.OwnerName, ApartmentType = request3.ApartmentType, ApartmentTotalSquare = request3.ApartmentTotalSquare, ResidentsCount = System.Convert.ToByte(request3.ResidentsCount), ResidentVacationsCount = System.Convert.ToByte(request3.ResidentVacationsCount), Benefits = new System.Collections.Generic.List<AIS.SN.Model.DomainObjects.PaymentService.Benefit>() }
         };
         foreach (PayRequestBenefit benefit in request3.GetRequestBenefits())
         {
             AIS.SN.Model.DomainObjects.PaymentService.Benefit benefit2 = new AIS.SN.Model.DomainObjects.PaymentService.Benefit {
                 Name = benefit.BenefitName,
                 Persons = benefit.PersonsCount
             };
             request2.ResponseParameters.Benefits.Add(benefit2);
         }
         request2.ResponseParameters.CurrentChargeSumm = request3.CurrentChargeSumm;
         request2.ResponseParameters.CurrentBenefitSumm = request3.CurrentBenefitSumm;
         request2.ResponseParameters.CurrentRecalcSumm = request3.CurrentRecalcSumm;
         request2.ResponseParameters.TotalDebt = request3.TotalDebt;
         request2.ResponseParameters.TotalPenalty = request3.TotalPenalty;
         request2.ResponseParameters.Comments = request3.Comments;
         request2.ResponseParameters.AdditionalInfo = request3.AdditionalInfo;
         foreach (PayRequestService service2 in request3.GetRequestServices())
         {
             AIS.SN.Model.DomainObjects.PaymentService.Service service3 = new AIS.SN.Model.DomainObjects.PaymentService.Service {
                 Code = service2.Code,
                 Name = service2.Name,
                 Counter = service2.CounterIndication,
                 NewCounter = service2.NewCounterIndication,
                 Rate = service2.Rate,
                 Charge = service2.ChargeSumm,
                 Benefit = service2.BenefitSumm,
                 Recalc = service2.RecalcSumm,
                 CounterCharge = service2.DiffChargeSumm - service2.DiffBenefitSumm,
                 FirstCounter = service2.FirstCounterIndication,
                 Saldo = service2.Saldo,
                 RateCounter = service2.RateCounter,
                 Debt = service2.Debt,
                 Paid = service2.Paid,
                 DebtPenalty = service2.DebtPenalty,
                 Penalty = service2.Penalty,
                 IsClosed = System.Convert.ToBoolean(service2.IsClosed),
                 IsFixed = System.Convert.ToBoolean(service2.IsFixed),
                 IsCounter = System.Convert.ToBoolean(service2.IsCounter),
                 Edk = service2.Edk
             };
             request2.Services.Add(service3);
         }
         request2.SetStatus(StatusCode.ЗапросВыполненУспешно);
     }
     catch (System.Exception exception)
     {
         request2 = new Request().SetStatus(StatusCode.НепредвиденнаяОшибка, exception);
     }
     return request2;
 }