public fmCPRRepaymentJurnal( Session session, fmCPRRepaymentTask repaymentTask, fmCDocRCB paymentDocument, fmCPRPaymentRequest paymentRequest, crmBankAccount bankAccount, Decimal sumIn, Decimal sumObligationIn, Decimal sumOut, Decimal sumObligationOut, DateTime paymentDate, csValuta valutaPayment, csValuta valutaObligation, CRM.Contract.Analitic.PlaneFact planFact) : base(session) { this.RepaymentTask = repaymentTask; this.PaymentDocument = paymentDocument; this.PaymentRequest = paymentRequest; this.BankAccount = bankAccount; this.SumIn = sumIn; this.SumObligationIn = sumObligationIn; this.SumOut = sumOut; this.SumObligationOut = sumObligationOut; this.ValutaPayment = valutaPayment; this.ValutaObligation = valutaObligation; this.PaymentDate = paymentDate; this.PlaneFact = planFact; }
public override void UpdateDatabaseAfterUpdateSchema() { base.UpdateDatabaseAfterUpdateSchema(); // Disable version if (this.CurrentDBVersion != new Version("0.0.0.0")) { return; } // using (IObjectSpace os = ObjectSpace.CreateNestedObjectSpace()) { csValuta val_rub = os.FindObject <csValuta>( XPQuery <csValuta> .TransformExpression(((ObjectSpace)os).Session, val => val.Code == "RUB")); // fmCAVTInvoiceVersion ver; IList <fmCAVTInvoiceVersion> ver_list = os.GetObjects <fmCAVTInvoiceVersion>( XPQuery <fmCAVTInvoiceVersion> .TransformExpression(((ObjectSpace)os).Session, inv => inv.Valuta == null)); foreach (fmCAVTInvoiceVersion ver in ver_list) { ver.Valuta = val_rub; } os.CommitChanges(); } using (IObjectSpace os = ObjectSpace.CreateNestedObjectSpace()) { IList <fmCAVTInvoiceBase> inv_list = os.GetObjects <fmCAVTInvoiceBase>(new UnaryOperator(UnaryOperatorType.IsNull, "InvoiceIntType")); foreach (fmCAVTInvoiceBase inv in inv_list) { inv.InvoiceIntType = fmCAVTInvoiceIntType.NORMAL; } os.CommitChanges(); } ObjectSpace.CommitChanges(); }
protected virtual void FillDatabase(Session ssn) { department1 = Prepare_hrmDepartment(ssn, "1"); department2 = Prepare_hrmDepartment(ssn, "2"); country1 = Prepare_csCountry(ssn, "1"); address1 = Prepare_csAddress(ssn, "1", country1); address2 = Prepare_csAddress(ssn, "1", country1); contractCategory1 = Prepare_crmContractCategory(ssn, "1"); documentCategory1 = Prepare_crmDocumentCategory(ssn, "1"); legalPersonRussianRu1 = Prepare_crmCLegalPerson(ssn, "1", address1); legalPersonRussianRu2 = Prepare_crmCLegalPerson(ssn, "2", address2); partyRu1 = legalPersonRussianRu1.Party; // Prepare_crmPartyRu(ssn, "1", address1, legalPersonRussianRu1); partyRu2 = legalPersonRussianRu2.Party; // Prepare_crmPartyRu(ssn, "2", address2, legalPersonRussianRu2); unit1 = Prepare_csUnit(ssn, "1"); nomenclatureType1 = Prepare_csNomenclatureType(ssn, "1"); costItem1 = Prepare_fmCostItem(ssn, "1"); valuta1 = Prepare_csValuta(ssn, "1", nomenclatureType1, unit1, costItem1); physicalPersonRu1 = Prepare_crmPhysicalPerson(ssn, "1", address1); physicalPersonRu2 = Prepare_crmPhysicalPerson(ssn, "1", address2); staff1 = Prepare_hrmStaff(ssn, "1", physicalPersonRu1, department1); staff2 = Prepare_hrmStaff(ssn, "2", physicalPersonRu2, department2); }
private void FillCurrencyOnDate(String CurrencyCode, Decimal[] mCourse, DateTime checkDate, Int32 i) { csValuta valuta = GetValutaByCode(CurrencyCode); if (valuta == null) { return; } XPQuery <csCNMValutaCourse> CurrencyCourses = new XPQuery <csCNMValutaCourse>(Ssn); var query = from currencyCourse in CurrencyCourses where currencyCourse.Valuta == valuta && currencyCourse.CourseDate == checkDate select currencyCourse; if (query.Count() > 0) { foreach (var currency in query) { currency.Course = mCourse[i]; break; } } else { CreateCurrencyCourse(valuta, checkDate, mCourse[i]); } }
public crmCostValue GetCostValue(crmCostModel cm, csValuta val) { crmCostValue cv = null; if (cm == null || val == null) { return(null); } foreach (crmCostValue ccv in this.CostItems) { if (ccv.Valuta == val && ccv.CostModel == cm) { cv = ccv; } } if (cv == null) { foreach (crmCostValue ccv in this.CostItems) { if (ccv.Valuta == val) { cv = ccv.Copy(); cv.CostModel = cm; } } if (cv == null) { cv = new crmCostValue(this.Session); cv.CostCol = this; cv.CostModel = cm; cv.Valuta = val; } } return(cv); }
private csValuta GetValutaByCode(Session ssn, string code) { XPQuery <csValuta> valutas = new XPQuery <csValuta>(ssn); csValuta Valuta = (from valuta in valutas where valuta.Code.ToUpper() == code.ToUpper() select valuta).FirstOrDefault(); return(Valuta); }
private void CreateCurrencyCourse(csValuta valuta, DateTime courseDate, Decimal Course) { csCNMValutaCourse valutaCourse = new csCNMValutaCourse(Ssn); valutaCourse.Valuta = valuta; valutaCourse.CourseDate = courseDate; valutaCourse.Course = Course; valutaCourse.Save(); }
public void TestEditor() { IObjectSpace os; using (os = Application.CreateObjectSpace()) { csValuta val1 = os.CreateObject <csValuta>(); val1.Code = "USD"; val1.ConversionIndex = 1; csValuta val2 = os.CreateObject <csValuta>(); val2.Code = "EUR"; val2.ConversionIndex = 1; // os.CommitChanges(); } DateTime date = DateTime.Now; os = Application.CreateObjectSpace(); csCNMCourseEditor editor = os.CreateObject <csCNMCourseEditor>(); Assert.AreEqual(editor.CourseDayTable.Count, 0); editor.CourseDate = date; Assert.AreEqual(editor.CourseDayTable.Count, 2); foreach (var course in editor.CourseDayTable) { Assert.AreEqual(course.CourseDate, editor.CourseDate); } editor.CourseDate = editor.CourseDate.AddDays(1); Assert.AreEqual(editor.CourseDayTable.Count, 2); foreach (var course in editor.CourseDayTable) { Assert.AreEqual(course.CourseDate, editor.CourseDate); } using (IObjectSpace os2 = Application.CreateObjectSpace()) { csValuta val3 = os2.CreateObject <csValuta>(); val3.Code = "RUB"; val3.ConversionIndex = 1; // os2.CommitChanges(); } editor.CourseDate = editor.CourseDate.AddDays(-1); Assert.AreEqual(editor.CourseDayTable.Count, 3); foreach (var course in editor.CourseDayTable) { Assert.AreEqual(course.CourseDate, editor.CourseDate); } os.CommitChanges(); os = Application.CreateObjectSpace(); editor = os.CreateObject <csCNMCourseEditor>(); Assert.AreEqual(editor.CourseDayTable.Count, 0); editor.CourseDate = date; Assert.AreEqual(editor.CourseDayTable.Count, 3); foreach (var course in editor.CourseDayTable) { Assert.AreEqual(course.CourseDate, editor.CourseDate); } }
protected virtual csValuta Prepare_csValuta(Session ssn, string modificator, csNomenclatureType nomenclatureType, csUnit unit, fmCostItem costItem) { csValuta valuta1 = new csValuta(ssn); valuta1.NomenclatureType = nomenclatureType; valuta1.Code = "Р" + modificator; valuta1.NameShort = "Р" + modificator; valuta1.NameFull = "Руб" + modificator; valuta1.BaseUnit = unit; valuta1.CostItem = costItem; return(valuta1); }
private static Decimal CheckSumm(TrwBudgetPeriod period, csValuta valuta, Decimal summ) { if (period.Valuta == valuta) { return(summ); } else { foreach (var exchange in period.CurrencyExchanges) { if (exchange.Valuta == valuta) { return(exchange.Rate * summ); } } throw new ArgumentOutOfRangeException("Valuta", valuta.Code); } }
/// <summary> /// Сумма заявки в рублях по курсу указанной в заявке валюты на указанную там же дату /// </summary> /// <param name="paymentRequest">Заявка</param> /// <param name="valutaPayment">Валюта к которой надо привести сумму</param> /// <returns>Сумма в валюте valutaPayment</returns> private Decimal GetRequestSumByCourse(fmCPRPaymentRequest paymentRequest, csValuta valutaPayment) { // Поясение о вычислении. Сумма в заявке - это в валюте обязательств, чтобы её сравнить // с суммой платежа, надо перевести по кросс-курсу к валюте платежа и уже полученную сумму сравнить. // Предлагается в качестве даты курса брать непустую из двух дат: this.DeductedFromPayerAccount или this.ReceivedByPayerBankDate // Тривиальный случай: валюта платежа совпадает с валютой обязательство if (paymentRequest.Valuta == valutaPayment) { return(paymentRequest.Summ); } // Валюты платежа и обязательств не совпадают. Надо вычислять кросс-курс на дату DateAccountChanged (изменения счёта) DateTime DateAccountChanged = (this.ReceivedByPayerBankDate != DateTime.MinValue) ? this.ReceivedByPayerBankDate : ((this.DeductedFromPayerAccount != DateTime.MinValue) ? this.DeductedFromPayerAccount : DateTime.MinValue); Decimal crossCource = csCNMValutaCourse.GetCrossCourceOnDate(Session, DateAccountChanged, paymentRequest.Valuta, valutaPayment); Decimal resultSum = Math.Round(paymentRequest.Summ * crossCource, 4); return(resultSum); }
public void AutoBindingResearch() { DateTime startDate = new DateTime(2012, 4, 1); DateTime endDate = new DateTime(2012, 5, 20); Debug.WriteLine(String.Format("{0} {1} - {2}", "Интервал дат: ", startDate, endDate)); Debug.WriteLine("\n"); using (UnitOfWork uow = new UnitOfWork(Common.dataLayer)) { // Анализ Платёжных документов. Общая таблица с аналитическими признаками в границах указаннных дат. Dictionary <String, csValuta> dictValuta = new Dictionary <string, csValuta>(); XPQuery <csValuta> valutas = new XPQuery <csValuta>(uow); var queryValuta = (from valuta in valutas //where valuta.CodeCurrencyValue == doc.paymentDocument.PaymentValuta select valuta).Distinct <csValuta>(); foreach (var valuta in queryValuta) { dictValuta.Add(valuta.CodeCurrencyValue, valuta); } // Список счетов "нашей" организации //List<crmBankAccount> = new XPQuery <crmBankAccount> ourBankAccounts = new XPQuery <crmBankAccount>(uow); var OurBankAccounts = (from bankAccount in ourBankAccounts where bankAccount.PrefferedParty.Code == "2518" select bankAccount).ToList <crmBankAccount>(); Debug.WriteLine(String.Format("{0} {1}", "Всего счетов нашей организации", OurBankAccounts.Count())); Debug.WriteLine("\n"); // --------------------- ПЛАТЁЖНЫЕ ДОКУМЕНТЫ -----------------------// Debug.WriteLine("\n"); Debug.WriteLine("ПЛАТЁЖНЫЕ ДОКУМЕНТЫ"); Debug.WriteLine("\n"); String prmDocType = ""; //"Платежное поручение"; XPQuery <fmCDocRCB> paymentDocuments = new XPQuery <fmCDocRCB>(uow); var queryPaymentDocuments = (from paymentDocument in paymentDocuments where paymentDocument.DocDate.Date >= startDate && paymentDocument.DocDate.Date < endDate && (prmDocType == "" || paymentDocument.DocType == prmDocType) select new { PaymentDocument = paymentDocument, DocType = paymentDocument.DocType, DocDate = paymentDocument.DocDate, IsDocDate = (paymentDocument.DocDate != DateTime.MinValue), IsSum = (paymentDocument.PaymentCost != 0m), SumIn = ((paymentDocument.PaymentReceiverRequisites.BankAccount.PrefferedParty.Code == "2518") ? paymentDocument.PaymentCost : 0m), SumOut = ((paymentDocument.PaymentPayerRequisites.BankAccount.PrefferedParty.Code == "2518") ? paymentDocument.PaymentCost : 0m), //PaymentValuta = crmBankAccount.GetValutaByBankAccount(uow, paymentDocument.PaymentPayerRequisites.BankAccount), PaymentValuta = paymentDocument.PaymentPayerRequisites.BankAccount.Number.Substring(5, 3), PaymentReceiverValuta = paymentDocument.PaymentReceiverRequisites.BankAccount.Number.Substring(5, 3), ReceiverAccount = (paymentDocument.PaymentReceiverRequisites.AccountParty != ""), PayerAccount = (paymentDocument.PaymentPayerRequisites.AccountParty != ""), ReceiverBankAccount = (paymentDocument.PaymentReceiverRequisites.BankAccount != null), PayerBankAccount = (paymentDocument.PaymentPayerRequisites.BankAccount != null), ReceiverBankRCBIC = (paymentDocument.PaymentReceiverRequisites.RCBIC != ""), ReceiverBank = (paymentDocument.PaymentReceiverRequisites.Bank != null), PayerBankRCBIC = (paymentDocument.PaymentPayerRequisites.RCBIC != ""), PayerBank = (paymentDocument.PaymentPayerRequisites.Bank != null), ReceiverINN = (paymentDocument.PaymentReceiverRequisites.INN != ""), PayerINN = (paymentDocument.PaymentPayerRequisites.INN != ""), ReceiverKPP = (paymentDocument.PaymentReceiverRequisites.KPP != ""), PayerKPP = (paymentDocument.PaymentPayerRequisites.KPP != ""), DateIn = (paymentDocument.ReceivedByPayerBankDate != DateTime.MinValue), DateOut = (paymentDocument.DeductedFromPayerAccount != DateTime.MinValue), DateAccountChanged = (paymentDocument.ReceivedByPayerBankDate != DateTime.MinValue) ? paymentDocument.ReceivedByPayerBankDate : ((paymentDocument.DeductedFromPayerAccount != DateTime.MinValue) ? paymentDocument.DeductedFromPayerAccount : DateTime.MinValue) }).ToList(); // Статистика по queryPaymentDocuments Int32 TotalPaymentCount = queryPaymentDocuments.Count(); Debug.WriteLine(String.Format("{0} {1}", "Всего платёжных документов в системе", TotalPaymentCount)); Debug.WriteLine("\n"); // Нашша сторона - плательщик (РАСХОДНЫЕ) List <fmCDocRCB> totalConditionPaymentDocument = new List <fmCDocRCB>(); var queryOurDocPayer = (from doc in queryPaymentDocuments where OurBankAccounts.Contains <crmBankAccount>(doc.PaymentDocument.PaymentPayerRequisites.BankAccount) select doc).ToList(); Debug.WriteLine(String.Format("{0} {1}", "Наша сторона - плательщик (РАСХОДНЫЕ)", queryOurDocPayer.Count())); foreach (var doc in queryOurDocPayer) { // БЕЗ ВЫДАЧИ СПИСКА Debug.Write(String.Format("{0}, ", doc.PaymentDocument.DocNumber)); if (!totalConditionPaymentDocument.Contains(doc.PaymentDocument)) { totalConditionPaymentDocument.Add(doc.PaymentDocument); } } Debug.WriteLine("\n"); // --------------------- ЗАЯВКИ -----------------------// Debug.WriteLine("\n"); Debug.WriteLine("ЗАЯВКИ"); Debug.WriteLine("\n"); // Анализ Платёжных документов. Общая таблица с аналитическими признаками в границах указаннных дат. //String prmReqType = ""; //"Платежное поручение"; XPQuery <fmCPRPaymentRequest> paymentRequests = new XPQuery <fmCPRPaymentRequest>(uow); var queryPaymenRequests = (from paymentRequest in paymentRequests select new { PaymentRequest = paymentRequest, SumIn = 0m, SumOut = paymentRequest.Summ, // По факту все заявки - расходные ObligationValuta = paymentRequest.Valuta }).ToList(); Debug.WriteLine(String.Format("{0} {1}", "Всего заявок в системе", queryPaymenRequests.Count())); Debug.WriteLine("\n"); // Заявки, прошедшие утверждение фин. отдела и сформированные правильно List <fmCPRPaymentRequest> totalConditionPaymentRequest = new List <fmCPRPaymentRequest>(); var queryInPaymentRequestRightly = (from doc in queryPaymenRequests where doc.PaymentRequest.Date != null && doc.ObligationValuta != null && doc.PaymentRequest.Summ != 0m && doc.PaymentRequest.PartyPaySender != null && doc.PaymentRequest.PartyPayReceiver != null && (doc.PaymentRequest.State == PaymentRequestStates.IN_PAYMENT || doc.PaymentRequest.State == PaymentRequestStates.IN_BANK || doc.PaymentRequest.State == PaymentRequestStates.PAYED) select doc).ToList(); Debug.WriteLine(String.Format("{0} {1}", "Заявки, прошедшие утверждение фин. отдела и сформированные правильно", queryInPaymentRequestRightly.Count())); foreach (var doc in queryInPaymentRequestRightly) { // БЕЗ ВЫДАЧИ СПИСКА Debug.Write(String.Format("{0}, ", doc.PaymentRequest.ExtDocNumber)); if (!totalConditionPaymentRequest.Contains(doc.PaymentRequest)) { totalConditionPaymentRequest.Add(doc.PaymentRequest); } } Debug.WriteLine("\n"); // --------------------- ЗАЯВКИ и ПЛАТЁЖНЫЕ ДОКУМЕНТЫ -----------------------// Debug.WriteLine("\n"); Debug.WriteLine("ЗАЯВКИ и ПЛАТЁЖНЫЕ ДОКУМЕНТЫ"); Debug.WriteLine("\n"); // Соединение по максимуму условий (абсолютно точное совпадение) List <ConditionPair> hardConditionPair = new List <ConditionPair>(); List <fmCPRPaymentRequest> hardConditionPaymentRequest = new List <fmCPRPaymentRequest>(); List <fmCDocRCB> hardConditionPaymentDocument = new List <fmCDocRCB>(); // Полный набор максимальных условий: // Стороны попарно совпадают, суммы в пересчёте к сумме платежа совпадают (до 1 коп.), // дата оплаты в платёжном документе отстоит от даты "к оплате" в заявке не более, чем на 2 дня var queryMaxConditions = from paymentRequest in queryInPaymentRequestRightly //queryPaymenRequests join paymentDocument in queryOurDocPayer //queryPaymentDocuments on new { P1 = paymentRequest.PaymentRequest.PartyPaySender, P2 = paymentRequest.PaymentRequest.PartyPayReceiver } equals new { P1 = paymentDocument.PaymentDocument.PaymentPayerRequisites.Party, P2 = paymentDocument.PaymentDocument.PaymentReceiverRequisites.Party } into RD from doc in RD where OurBankAccounts.Contains <crmBankAccount>(doc.PaymentDocument.PaymentPayerRequisites.BankAccount) && doc.DateAccountChanged.Date > paymentRequest.PaymentRequest.Date.Date && //&& doc.DateAccountChanged.Date < paymentRequest.PaymentRequest.Date.AddDays(3).Date (paymentRequest.PaymentRequest.State == PaymentRequestStates.IN_PAYMENT || paymentRequest.PaymentRequest.State == PaymentRequestStates.IN_BANK || paymentRequest.PaymentRequest.State == PaymentRequestStates.PAYED) select new { paymentRequest, paymentDocument = doc }; Int32 queryMaxConditionsCount = 0; Int32 queryMaxConditionsValutaErrorCount = 0; foreach (var doc in queryMaxConditions) { csValuta pValuta = (from valuta in valutas where valuta.CodeCurrencyValue == doc.paymentDocument.PaymentValuta select valuta).FirstOrDefault <csValuta>(); if (pValuta == null) { queryMaxConditionsValutaErrorCount++; continue; } Decimal crossCource = csCNMValutaCourse.GetCrossCourceOnDate(uow, doc.paymentDocument.DateAccountChanged, doc.paymentRequest.ObligationValuta, pValuta); Decimal paymentSumOutPaymentValuta = doc.paymentRequest.SumOut * crossCource; Boolean bRes = (Decimal.Compare(Math.Abs(paymentSumOutPaymentValuta - doc.paymentDocument.PaymentDocument.PaymentCost), 0.01m) <= 0); if (bRes) { // БЕЗ ВЫДАЧИ СПИСКА Debug.Write(String.Format("({0}, {1}); ", doc.paymentRequest.PaymentRequest.ExtDocNumber, doc.paymentDocument.PaymentDocument.DocNumber)); queryMaxConditionsCount++; ConditionPair pair = new ConditionPair() { paymentDocument = doc.paymentDocument.PaymentDocument, paymentRequest = doc.paymentRequest.PaymentRequest }; //hardConditionPair.Add(pair); if (!hardConditionPair.Contains(pair)) { hardConditionPair.Add(pair); } if (!hardConditionPaymentRequest.Contains(doc.paymentRequest.PaymentRequest)) { hardConditionPaymentRequest.Add(doc.paymentRequest.PaymentRequest); } if (!hardConditionPaymentDocument.Contains(doc.paymentDocument.PaymentDocument)) { hardConditionPaymentDocument.Add(doc.paymentDocument.PaymentDocument); } } } Debug.WriteLine("\n"); Debug.WriteLine(String.Format("{0} {1}", "Соединение по максимуму условий (абсолютно точное совпадение), случай расходного документа", queryMaxConditionsCount)); Debug.WriteLine(String.Format("{0} {1}", "Уникальных пар потенциальных привязок, количество ", hardConditionPair.Count())); Debug.WriteLine(String.Format("{0} {1}", "Неопознана валюта в платёжном документе, количество ", queryMaxConditionsValutaErrorCount)); Debug.WriteLine(String.Format("{0} {1}", "hard Заявок в слое, количество ", hardConditionPaymentRequest.Count())); Debug.WriteLine(String.Format("{0} {1}", "hard Документов в слое, количество ", hardConditionPaymentDocument.Count())); Debug.WriteLine("\n"); // -------------- Сколько имеется привяок в связи с отработкой имеющегося алгоритма автопривязки --------------------- // Int32 queryyRepaymentJurnalCount = 0; List <ConditionPair> ExistsConditionPairs = new List <ConditionPair>(); List <fmCPRPaymentRequest> UsedPaymentRequestList = new List <fmCPRPaymentRequest>(); List <fmCDocRCB> UsedPaymentDocumentList = new List <fmCDocRCB>(); XPQuery <fmCPRRepaymentJurnal> repaymentJurnals = new XPQuery <fmCPRRepaymentJurnal>(uow); var queryRepaymentJurnals = (from record in repaymentJurnals select record).Distinct().ToList(); Debug.WriteLine(String.Format("{0} {1}", "Сколько имеется привязок в связи с отработкой имеющегося алгоритма автопривязки", queryRepaymentJurnals.Count())); //Debug.WriteLine("\n"); foreach (var record in queryRepaymentJurnals) { //Debug.Write(String.Format("({0}, {1}); ", UsedPaymentDocumentList.PaymentRequest.ExtDocNumber, doc.paymentDocument.PaymentDocument.DocNumber)); queryyRepaymentJurnalCount++; ConditionPair pair = new ConditionPair(); pair.paymentRequest = record.PaymentRequest; pair.paymentDocument = record.PaymentDocument; if (!ExistsConditionPairs.Contains(pair)) { ExistsConditionPairs.Add(pair); } if (!UsedPaymentRequestList.Contains(record.PaymentRequest)) { UsedPaymentRequestList.Add(record.PaymentRequest); } if (!UsedPaymentDocumentList.Contains(record.PaymentDocument)) { UsedPaymentDocumentList.Add(record.PaymentDocument); } } //Debug.WriteLine(String.Format("{0} {1}", "Всего в журнале привязок, количество ", queryyRepaymentJurnalCount)); Debug.WriteLine(String.Format("{0} {1}", "Уникальных пар в журнале привязок, количество ", ExistsConditionPairs.Count())); Debug.WriteLine(String.Format("{0} {1}", "Заявок в журнале привязок, количество ", UsedPaymentRequestList.Count())); Debug.WriteLine(String.Format("{0} {1}", "Документов в журнале привязок, количество ", UsedPaymentDocumentList.Count())); Debug.WriteLine("\n"); // ОТВЕТЫ НА ВОПРОСЫ: КАКАЯ РАЗНИЦА МЕЖДУ СПИСКАМИ? Debug.WriteLine(String.Format("{0}", "ЗАЯВКИ, КОТОРЫЕ ЕСТЬ В ПОТЕНЦИАЛЬНОМ СПИСКЕ, НО ОТСУТСТВУЮТ В РЕАЛЬНОМ")); var requestInPotentialNoInReal = from req in hardConditionPaymentRequest where !UsedPaymentRequestList.Contains(req) orderby req.ExtDocNumber ascending select req; foreach (var req in requestInPotentialNoInReal) { Debug.WriteLine(String.Format("{0} \t\t {1} \t\t {2}", req.ExtDocNumber, req.Number, req.Date)); } Debug.WriteLine("\n"); Debug.WriteLine(String.Format("{0}", "ЗАЯВКИ, КОТОРЫЕ ЕСТЬ В РЕАЛЬНОМ СПИСКЕ, НО ОТСУТСТВУЮТ В ПОТЕНЦИАЛЬНОМ")); var requestInRealNoInPotential = from req in UsedPaymentRequestList where !hardConditionPaymentRequest.Contains(req) orderby req.ExtDocNumber ascending select req; foreach (var req in requestInRealNoInPotential) { Debug.WriteLine(String.Format("{0} \t\t {1} \t\t {2}", req.ExtDocNumber, req.Number, req.Date)); } Debug.WriteLine("\n"); Debug.WriteLine(String.Format("{0}", "ДОКУМЕНТЫ, КОТОРЫЕ ЕСТЬ В ПОТЕНЦИАЛЬНОМ СПИСКЕ, НО ОТСУТСТВУЮТ В РЕАЛЬНОМ")); var docInPotentialNoInReal = from doc in hardConditionPaymentDocument where !UsedPaymentDocumentList.Contains(doc) orderby doc.DocNumber ascending select doc; foreach (var doc in docInPotentialNoInReal) { Debug.WriteLine(String.Format("{0} \t\t {1}", doc.DocNumber, doc.DocDate)); } Debug.WriteLine("\n"); Debug.WriteLine(String.Format("{0}", "ДОКУМЕНТЫ, КОТОРЫЕ ЕСТЬ В РЕАЛЬНОМ СПИСКЕ, НО ОТСУТСТВУЮТ В ПОТЕНЦИАЛЬНОМ")); var docInRealNoInPotential = from doc in UsedPaymentDocumentList where !hardConditionPaymentDocument.Contains(doc) orderby doc.DocNumber ascending select doc; foreach (var doc in docInRealNoInPotential) { Debug.WriteLine(String.Format("{0} \t\t {1}", doc.DocNumber, doc.DocDate)); } Debug.WriteLine("\n"); } }
protected void FillDatabaseForAnalysis(Session ssn) { IObjectSpace objectSpace = new ObjectSpace((UnitOfWork)ssn); int RecordCountGenerated = 10000; // Максимальное количество генерируемых записей в журнале регистрации crmCashFlowRegister Guid token = Guid.NewGuid(); // Делаем три валюты IList <csValuta> valutaList = new List <csValuta>(); csValuta valutaRUR = objectSpace.CreateObject <csValuta>(); valutaRUR.Code = "RUR"; valutaRUR.NameShort = "Руб."; valutaRUR.NameFull = "Рубль"; valutaList.Add(valutaRUR); csValuta valutaUSD = objectSpace.CreateObject <csValuta>(); valutaUSD.Code = "USD"; valutaUSD.NameShort = "bak"; valutaUSD.NameFull = "Dollar"; valutaList.Add(valutaUSD); csValuta valutaEUR = objectSpace.CreateObject <csValuta>(); valutaEUR.Code = "EUR"; valutaEUR.NameShort = "euro"; valutaEUR.NameFull = "Euro"; valutaList.Add(valutaEUR); objectSpace.CommitChanges(); //// Создаём maxContractDocumentCount документов //int maxContractDocumentCount = 300; //IList<fmSubject> ContractDocumentList = new List<fmSubject>(); //for (int i = 0; i < maxContractDocumentCount; i++) { // fmSubject сontractDocument = objectSpace.CreateObject<fmSubject>(); // сontractDocument.Code = "S" + i.ToString(); // сontractDocument.Name = "Subj" + i.ToString(); // сontractDocument.DateBegin = DateTime.Now; // сontractDocument.DateEnd = DateTime.Now.AddDays(GetRandomIntegerFromInterval(1, 30)); // ContractDocumentList.Add(subject); //} //objectSpace.CommitChanges(); // Создаём maxSubjectCount тем int maxSubjectCount = 120; IList <fmCSubjectExt> subjectList = new List <fmCSubjectExt>(); for (int i = 0; i < maxSubjectCount; i++) { fmCSubjectExt subject = objectSpace.CreateObject <fmCSubjectExt>(); subject.Code = "S" + i.ToString(); subject.Name = "Subj" + i.ToString(); subject.DateBegin = DateTime.Now; subject.DateEnd = DateTime.Now.AddDays(GetRandomIntegerFromInterval(1, 30)); subjectList.Add(subject); } objectSpace.CommitChanges(); // Создаём maxCostItemCount int maxCostItemCount = 10; IList <fmCostItem> costItemList = new List <fmCostItem>(); for (int i = 0; i < maxCostItemCount; i++) { fmCostItem costItem = objectSpace.CreateObject <fmCostItem>(); costItem.Code = "CI" + i.ToString(); costItem.Name = "CostItem" + i.ToString(); costItemList.Add(costItem); } objectSpace.CommitChanges(); // Заготавливаем maxCostModelCount int maxCostModelCount = 5; IList <crmCostModel> CostModelList = new List <crmCostModel>(); for (int i = 0; i < maxCostModelCount; i++) { crmCostModel costModel = objectSpace.CreateObject <crmCostModel>(); costModel.Code = "CM: " + i.ToString(); costModel.Description = "CostModel: " + i.ToString(); costModel.Name = "CostModel " + i.ToString(); CostModelList.Add(costModel); //objectSpace.CommitChanges(); } objectSpace.CommitChanges(); /* * // Заготавливаем maxContragentPartyRuCount штук контрагентов * int maxContragentPartyRuCount = 120; * IList<crmPartyRu> ContragentPartyRuList = new List<crmPartyRu>(); * * for (int i = 0; i < maxContragentPartyRuCount; i++) { * crmPartyRu partyRu = objectSpace.CreateObject<crmPartyRu>(); * * partyRu.Code = "cF"; * partyRu.Description = "ContragentParty " + i.ToString(); * * //crmPhysicalPerson person = objectSpace.CreateObject<crmPhysicalPerson>(); * //person.INN = "CP INN" + i; * //person.FirstName = "Гадя " + i; * //person.MiddleName = "Петрович " + i; * //person.MiddleName = "Хренова " + i; * * crmCPerson person = objectSpace.CreateObject<crmCPerson>(); * person.INN = "CP INN" + i; * //person.FirstName = "Гадя " + i; * //person.MiddleName = "Петрович " + i; * //person.MiddleName = "Хренова " + i; * * partyRu.Person = person; * person.Partys.Add(partyRu); * * ContragentPartyRuList.Add(partyRu); * * //objectSpace.CommitChanges(); * } * * objectSpace.CommitChanges(); */ // Заготавливаем maxContragentcLegalPersonCount штук контрагентов int maxCLegalPersonCount = 120; IList <crmCLegalPerson> CLegalPersonList = new List <crmCLegalPerson>(); for (int i = 0; i < maxCLegalPersonCount; i++) { crmCLegalPerson cLegalPerson = objectSpace.CreateObject <crmCLegalPerson>(); cLegalPerson.Name = "ИнтекоАГ" + i; cLegalPerson.NameFull = "ИнтекоАГ" + i; cLegalPerson.INN = "ИНН 1111111111"; cLegalPerson.Code = "LP" + i; cLegalPerson.Description = "LegalPerson Description" + i; cLegalPerson.KPP = "КПП 222222222"; cLegalPerson.RegCode = "RC"; //cLegalPerson.Person.Address = address; //cLegalPerson.Party.AddressFact = address; //cLegalPerson.Party.AddressPost = address; cLegalPerson.Party.Person = cLegalPerson.Person; CLegalPersonList.Add(cLegalPerson); } objectSpace.CommitChanges(); // Заготавливаем maxContractPartyCount штук участников договоров int maxContractPartyCount = 50; IList <crmContractParty> ContractPartyList = new List <crmContractParty>(); for (int i = 0; i < maxContractPartyCount; i++) { crmContractParty contractParty = objectSpace.CreateObject <crmContractParty>(); contractParty.INN = "INN: " + i.ToString(); contractParty.KPP = "KPP: " + i.ToString(); contractParty.Name = "ContractParty " + i.ToString(); contractParty.Party = CLegalPersonList[GetRandomIntegerFromInterval(1, CLegalPersonList.Count) - 1].Party; contractParty.RegNumber = "RegNumber " + i.ToString(); ContractPartyList.Add(contractParty); //objectSpace.CommitChanges(); } objectSpace.CommitChanges(); // SHU 2011-12-26 Order не вводится, т.к. имеет срабатывает правило Validation Required для какого-то поля // Заготавливаем maxOrderCount штук заказов int maxOrderCount = 30; IList <fmCOrderExt> OrderList = new List <fmCOrderExt>(); for (int i = 0; i < maxOrderCount; i++) { fmCOrderExt order = objectSpace.CreateObject <fmCOrderExt>(); //order.Code = "Ord: " + i.ToString(); order.Description = "Order: " + i.ToString(); //order.Name = "Order " + i.ToString(); //order.DateBegin = DateTime.Now; //order.DateEnd = DateTime.Now.AddDays(GetRandomIntegerFromInterval(1, 30)); order.Subject = subjectList[GetRandomIntegerFromInterval(1, subjectList.Count) - 1]; OrderList.Add(order); //objectSpace.CommitChanges(); } objectSpace.CommitChanges(); // Заготавливаем maxNDSRateCount штук формул расчёта НДС int maxNDSRateCount = 1; IList <csNDSRate> NDSRateList = new List <csNDSRate>(); for (int i = 0; i < maxNDSRateCount; i++) { csNDSRate ndsRate = objectSpace.CreateObject <csNDSRate>(); ndsRate.Code = "20/120"; // + i.ToString(); ndsRate.Numerator = 20; // + i.ToString(); ndsRate.Denominator = 120; // + i.ToString(); ndsRate.Name = "20/120"; //ndsRate.RateOfNDS = 120/100; NDSRateList.Add(ndsRate); //objectSpace.CommitChanges(); } objectSpace.CommitChanges(); // Создаём maxStageCount этапов int maxStageCount = 20; IList <crmStage> stageList = new List <crmStage>(); for (int i = 0; i < maxStageCount; i++) { crmDeliveryPlan deliveryPlan = objectSpace.CreateObject <crmDeliveryPlan>(); deliveryPlan.DateBegin = DateTime.Now.AddDays(GetRandomIntegerFromInterval(1, 5)); deliveryPlan.DateEnd = DateTime.Now.AddDays(GetRandomIntegerFromInterval(1, 15)); deliveryPlan.CostItem = costItemList[GetRandomIntegerFromInterval(1, costItemList.Count) - 1]; deliveryPlan.CostModel = CostModelList[GetRandomIntegerFromInterval(1, CostModelList.Count) - 1]; deliveryPlan.DeliveryMethod = DeliveryMethod.UNIT_AT_THE_END; deliveryPlan.NDSRate = NDSRateList[GetRandomIntegerFromInterval(1, NDSRateList.Count) - 1]; deliveryPlan.Valuta = valutaList[GetRandomIntegerFromInterval(1, valutaList.Count) - 1]; crmPaymentPlan paymentPlan = objectSpace.CreateObject <crmPaymentPlan>(); paymentPlan.DateBegin = DateTime.Now.AddDays(GetRandomIntegerFromInterval(1, 5)); paymentPlan.DateEnd = DateTime.Now.AddDays(GetRandomIntegerFromInterval(1, 15)); paymentPlan.CostItem = costItemList[GetRandomIntegerFromInterval(1, costItemList.Count) - 1]; paymentPlan.CostModel = CostModelList[GetRandomIntegerFromInterval(1, CostModelList.Count) - 1]; paymentPlan.NDSRate = NDSRateList[GetRandomIntegerFromInterval(1, NDSRateList.Count) - 1]; paymentPlan.Valuta = valutaList[GetRandomIntegerFromInterval(1, valutaList.Count) - 1]; crmStage stage = objectSpace.CreateObject <crmStage>(); deliveryPlan.Stage = stage; stage.Code = "S" + i.ToString(); //stage.DeliveryDate = null; // ОТВАЛИВАЕТСЯ, ПОКА НЕТ ВРЕМЕНИ РАЗБИРАТЬСЯ !!! DateTime.Now.AddDays(GetRandomIntegerFromInterval(1, 20)); ////stage.CurrentCost = "Stg" + i.ToString(); ////stage.CurrentPayment = "Stg" + i.ToString(); //stage.Customer = null; // ОТВАЛИВАЕТСЯ, ПОКА НЕТ ВРЕМЕНИ РАЗБИРАТЬСЯ !!! ContractPartyList[GetRandomIntegerFromInterval(1, ContractPartyList.Count) - 1]; ////stage.DeliveryItem = "Stg" + i.ToString(); ////stage.DeliveryItems = "Stg" + i.ToString(); // ОТВАЛИВАЕТСЯ, ПОКА НЕТ ВРЕМЕНИ РАЗБИРАТЬСЯ !!! stage.DeliveryMethod = DeliveryMethod.UNIT_AT_THE_END; ////stage.DeliveryUnits = "Stg" + i.ToString(); stage.DescriptionLong = "Stage" + i.ToString(); stage.DescriptionShort = "Stg" + i.ToString(); //stage.FullCode = "Stg" + i.ToString(); // ОТВАЛИВАЕТСЯ, ПОКА НЕТ ВРЕМЕНИ РАЗБИРАТЬСЯ !!! stage.Order = OrderList[GetRandomIntegerFromInterval(1, OrderList.Count) - 1]; // ОТВАЛИВАЕТСЯ, ПОКА НЕТ ВРЕМЕНИ РАЗБИРАТЬСЯ !!! stage.PaymentMethod = PaymentMethod.ADVANCE; stage.DeliveryPlan = deliveryPlan; // ДОРАБОТАТЬ!!! "Stg" + i.ToString(); stage.PaymentPlan = paymentPlan; // ДОРАБОТАТЬ!!! "Stg" + i.ToString(); stage.CostItem = costItemList[GetRandomIntegerFromInterval(1, costItemList.Count) - 1]; stage.CostModel = CostModelList[GetRandomIntegerFromInterval(1, CostModelList.Count) - 1]; //stage.PaymentUnits = "Stg" + i.ToString(); // ОТВАЛИВАЕТСЯ, ПОКА НЕТ ВРЕМЕНИ РАЗБИРАТЬСЯ !!! stage.PaymentValuta = valutaList[GetRandomIntegerFromInterval(1, valutaList.Count) - 1]; //stage.Settlement = "Stg" + i.ToString(); stage.SettlementDate = DateTime.Now.AddDays(GetRandomIntegerFromInterval(1, 50)); stage.StageStructure = null; // ДОРАБОТАТЬ!!! "Stg" + i.ToString(); //stage.StageMain = "Stg" + i.ToString(); // ОТВАЛИВАЕТСЯ, ПОКА НЕТ ВРЕМЕНИ РАЗБИРАТЬСЯ !!! stage.StageType = StageType.FINANCE; //stage.Supplier = null; // ОТВАЛИВАЕТСЯ, ПОКА НЕТ ВРЕМЕНИ РАЗБИРАТЬСЯ !!! ContractPartyList[GetRandomIntegerFromInterval(1, ContractPartyList.Count) - 1]; // ОТВАЛИВАЕТСЯ, ПОКА НЕТ ВРЕМЕНИ РАЗБИРАТЬСЯ !!! stage.Valuta = valutaList[GetRandomIntegerFromInterval(1, valutaList.Count) - 1]; stage.DateFinish = DateTime.Now.AddDays(GetRandomIntegerFromInterval(1, 40)); // ОТВАЛИВАЕТСЯ, ПОКА НЕТ ВРЕМЕНИ РАЗБИРАТЬСЯ !!! stage.DateBegin = DateTime.Now; // ОТВАЛИВАЕТСЯ, ПОКА НЕТ ВРЕМЕНИ РАЗБИРАТЬСЯ !!! stage.DateEnd = DateTime.Now.AddDays(GetRandomIntegerFromInterval(1, 30)); stageList.Add(stage); } objectSpace.CommitChanges(); // Создаём maxContractCategoryCount Категорий контрактов int maxContractCategoryCount = 10; IList <crmContractCategory> сontractCategoryList = new List <crmContractCategory>(); for (int i = 0; i < maxContractCategoryCount; i++) { crmContractCategory contractCategory = objectSpace.CreateObject <crmContractCategory>(); contractCategory.Code = "CC" + i.ToString(); contractCategory.Name = "ContractCategory " + i.ToString(); сontractCategoryList.Add(contractCategory); } objectSpace.CommitChanges(); // Создаём maxDepartmentCount подразделений int maxDepartmentCount = 20; IList <hrmDepartment> departmentList = new List <hrmDepartment>(); for (int i = 0; i < maxDepartmentCount; i++) { hrmDepartment department = objectSpace.CreateObject <hrmDepartment>(); department.Code = "Dep" + i.ToString(); department.Name = "Department " + i.ToString(); departmentList.Add(department); } objectSpace.CommitChanges(); // Создаём maxStaffCount сотрудников int maxStaffCount = 30; IList <hrmStaff> staffList = new List <hrmStaff>(); IList <crmPhysicalPerson> physicalPersonList = new List <crmPhysicalPerson>(); for (int i = 0; i < maxStaffCount; i++) { crmPhysicalPerson physicalPerson = objectSpace.CreateObject <crmPhysicalPerson>(); physicalPerson.FirstName = "Иван " + i.ToString(); physicalPerson.MiddleName = "Иванович " + i.ToString(); physicalPerson.LastName = "Иванов " + i.ToString(); physicalPerson.INN = "ИНН " + i.ToString(); hrmStaff staff = objectSpace.CreateObject <hrmStaff>(); staff.PhysicalPerson = physicalPerson; staff.Department = departmentList[GetRandomIntegerFromInterval(1, departmentList.Count) - 1]; staffList.Add(staff); } // Создаём maxDocumentCategoryCount видов категорий документов int maxDocumentCategoryCount = 10; IList <crmContractDocumentType> contractDocumentTypeList = new List <crmContractDocumentType>(); for (int i = 0; i < maxDocumentCategoryCount; i++) { crmContractDocumentType contractDocumentType = objectSpace.CreateObject <crmContractDocumentType>(); contractDocumentType.Code = "CD " + i.ToString(); contractDocumentType.Name = "Contract Document Type " + i.ToString(); contractDocumentTypeList.Add(contractDocumentType); } objectSpace.CommitChanges(); // Создаём maxPaymentItemCount int maxPaymentItemCount = 10; IList <crmPaymentMoney> paymentItemList = new List <crmPaymentMoney>(); for (int i = 0; i < maxPaymentItemCount; i++) { crmPaymentMoney paymentItem = objectSpace.CreateObject <crmPaymentMoney>(); paymentItem.AccountSumma = GetRandomIntegerFromInterval(1, 100); paymentItem.AccountValuta = valutaList[GetRandomIntegerFromInterval(1, valutaList.Count) - 1]; //paymentItem.CostItem; //paymentItem.CostModel; //paymentItem.CurrentCost; paymentItem.Date = DateTime.Now; paymentItem.Description = "PaymentItem " + i.ToString(); paymentItemList.Add(paymentItem); } objectSpace.CommitChanges(); // Создаём maxObligationUnitCount обязательств int maxObligationUnitCount = 20; IList <crmObligationUnit> obligationUnitList = new List <crmObligationUnit>(); for (int i = 0; i < maxObligationUnitCount; i++) { crmPaymentUnit obligationUnit = objectSpace.CreateObject <crmPaymentUnit>(); obligationUnit.Code = "PU" + i.ToString(); obligationUnit.Name = "PaymentUnit" + i.ToString(); obligationUnit.CostItem = costItemList[GetRandomIntegerFromInterval(1, costItemList.Count) - 1]; obligationUnit.CostModel = CostModelList[GetRandomIntegerFromInterval(1, CostModelList.Count) - 1]; ////obligationUnit.Creditor = ContractPartyList[GetRandomIntegerFromInterval(1, ContractPartyList.Count) - 1]; //obligationUnit.CurrentCost = "Subj" + i.ToString(); ////obligationUnit.Debitor = ContractPartyList[GetRandomIntegerFromInterval(1, ContractPartyList.Count) - 1]; obligationUnit.NDSRate = NDSRateList[GetRandomIntegerFromInterval(1, NDSRateList.Count) - 1]; obligationUnit.Order = OrderList[GetRandomIntegerFromInterval(1, OrderList.Count) - 1]; obligationUnit.Receiver = ContractPartyList[GetRandomIntegerFromInterval(1, ContractPartyList.Count) - 1]; obligationUnit.Sender = ContractPartyList[GetRandomIntegerFromInterval(1, ContractPartyList.Count) - 1]; ////obligationUnit.Stage = stageList[GetRandomIntegerFromInterval(1, stageList.Count) - 1]; ////obligationUnit.SummCost = GetRandomIntegerFromInterval(1, 100); ////obligationUnit.SummNDS = GetRandomIntegerFromInterval(1, 100); obligationUnit.SummFull = GetRandomIntegerFromInterval(1, 100); obligationUnit.Valuta = valutaList[GetRandomIntegerFromInterval(1, valutaList.Count) - 1]; obligationUnit.DatePlane = DateTime.Now.AddDays(GetRandomIntegerFromInterval(1, 40)); obligationUnit.DateBegin = DateTime.Now; obligationUnit.DateEnd = DateTime.Now.AddDays(GetRandomIntegerFromInterval(1, 30)); obligationUnitList.Add(obligationUnit); } objectSpace.CommitChanges(); //const int maxObligationUnitCount = 30; //IList<crmObligationUnit> obligationUnitList = new List<crmObligationUnit>(); for (int i = 0; i < maxObligationUnitCount; i++) { crmDeliveryUnit obligationUnit = objectSpace.CreateObject <crmDeliveryUnit>(); obligationUnit.Code = "DU" + i.ToString(); obligationUnit.Name = "DeliveryUnit" + i.ToString(); obligationUnit.CostItem = costItemList[GetRandomIntegerFromInterval(1, costItemList.Count) - 1]; obligationUnit.CostModel = CostModelList[GetRandomIntegerFromInterval(1, CostModelList.Count) - 1]; ////obligationUnit.Creditor = ContractPartyList[GetRandomIntegerFromInterval(1, ContractPartyList.Count) - 1]; //obligationUnit.CurrentCost = "Subj" + i.ToString(); ////obligationUnit.Debitor = ContractPartyList[GetRandomIntegerFromInterval(1, ContractPartyList.Count) - 1]; obligationUnit.NDSRate = NDSRateList[GetRandomIntegerFromInterval(1, NDSRateList.Count) - 1]; if (OrderList.Count > 0) { obligationUnit.Order = OrderList[GetRandomIntegerFromInterval(1, OrderList.Count) - 1]; } obligationUnit.Receiver = ContractPartyList[GetRandomIntegerFromInterval(1, ContractPartyList.Count) - 1]; obligationUnit.Sender = ContractPartyList[GetRandomIntegerFromInterval(1, ContractPartyList.Count) - 1]; ////obligationUnit.Stage = stageList[GetRandomIntegerFromInterval(1, stageList.Count) - 1]; ////obligationUnit.SummCost = GetRandomIntegerFromInterval(1, 100); ////obligationUnit.SummNDS = GetRandomIntegerFromInterval(1, 100); obligationUnit.SummFull = GetRandomIntegerFromInterval(1, 100); obligationUnit.Valuta = valutaList[GetRandomIntegerFromInterval(1, valutaList.Count) - 1]; obligationUnit.DatePlane = DateTime.Now.AddDays(GetRandomIntegerFromInterval(1, 40)); obligationUnit.DateBegin = DateTime.Now; obligationUnit.DateEnd = DateTime.Now.AddDays(GetRandomIntegerFromInterval(1, 30)); obligationUnitList.Add(obligationUnit); } objectSpace.CommitChanges(); /* * // Заготавливаем maxPrimaryPartyRuCount штук первичных участников договоров * int maxPrimaryPartyRuCount = 7; * IList<crmPartyRu> primaryPartyRuList = new List<crmPartyRu>(); * * for (int i = 0; i < maxPrimaryPartyRuCount; i++) { * crmPartyRu partyRu = objectSpace.CreateObject<crmPartyRu>(); * * partyRu.Code = "pF"; * partyRu.Description = "PrimaryParty " + i.ToString(); * * //crmPhysicalPerson person = objectSpace.CreateObject<crmPhysicalPerson>(); * //person.INN = "PP INN" + i; * //person.FirstName = "Ганс " + i; * //person.MiddleName = "Христиан " + i; * //person.MiddleName = "Андерсен " + i; * * crmCPerson person = objectSpace.CreateObject<crmCPerson>(); * person.INN = "PP INN" + i; * //person.FirstName = "Ганс " + i; * //person.MiddleName = "Христиан " + i; * //person.MiddleName = "Андерсен " + i; * * partyRu.Person = person; * person.Partys.Add(partyRu); * * primaryPartyRuList.Add(partyRu); * } * * objectSpace.CommitChanges(); */ // Заготавливаем maxContragentcLegalPersonCount штук контрагентов int maxPrimaryCLegalPersonCount = 120; IList <crmCLegalPerson> PrimaryCLegalPersonList = new List <crmCLegalPerson>(); for (int i = 0; i < maxPrimaryCLegalPersonCount; i++) { crmCLegalPerson cLegalPerson = objectSpace.CreateObject <crmCLegalPerson>(); cLegalPerson.Name = "Кремль" + i; cLegalPerson.NameFull = "Кремль" + i; cLegalPerson.INN = "ИНН ААААААААА"; cLegalPerson.Code = "LPK" + i; cLegalPerson.Description = "LegalPerson Кремль Description" + i; cLegalPerson.KPP = "КПП ББББББББ"; cLegalPerson.RegCode = "RCK"; //cLegalPerson.Person.Address = address; //cLegalPerson.Party.AddressFact = address; //cLegalPerson.Party.AddressPost = address; cLegalPerson.Party.Person = cLegalPerson.Person; PrimaryCLegalPersonList.Add(cLegalPerson); } objectSpace.CommitChanges(); // Создаём maxContractCount контрактов int maxContractCount = 300; IList <crmContract> contractList = new List <crmContract>(); for (int i = 0; i < maxContractCount; i++) { crmContractDocument contractDocument = objectSpace.CreateObject <crmContractDocument>(); contractDocument.Date = DateTime.Now; contractDocument.DocumentCategory = contractDocumentTypeList[GetRandomIntegerFromInterval(1, contractDocumentTypeList.Count) - 1]; contractDocument.Number = "Doc № " + i.ToString(); crmContractDeal contractDeal = objectSpace.CreateObject <crmContractDeal>(); contractDeal.Category = сontractCategoryList[GetRandomIntegerFromInterval(1, сontractCategoryList.Count) - 1]; contractDeal.ContractKind = ContractKind.CONTRACT; contractDeal.CuratorDepartment = departmentList[GetRandomIntegerFromInterval(1, departmentList.Count) - 1]; //contractDeal.Customer = ContractPartyList[GetRandomIntegerFromInterval(1, ContractPartyList.Count) - 1].Party; contractDeal.DateRegistration = DateTime.Now; //contractDeal.Supplier = ContractPartyList[GetRandomIntegerFromInterval(1, ContractPartyList.Count) - 1].Party; contractDeal.UserRegistrator = staffList[GetRandomIntegerFromInterval(1, staffList.Count) - 1]; contractDeal.DepartmentRegistrator = contractDeal.UserRegistrator.Department; //contractDeal.Customer = ContragentPartyRuList[GetRandomIntegerFromInterval(1, ContragentPartyRuList.Count) - 1]; //contractDeal.DealVersions //contractDeal.Project = ; //contractDeal.State //contractDeal.Supplier = ContragentPartyRuList[GetRandomIntegerFromInterval(1, ContragentPartyRuList.Count) - 1]; //--- crmDealVersion dealVersion = objectSpace.CreateObject <crmDealVersion>(); //dealVersion.Category = сontractCategoryList[GetRandomIntegerFromInterval(1, сontractCategoryList.Count) - 1]; //dealVersion.ContractDeal = contractDeal; //dealVersion.ContractDocument = contractDocument; //dealVersion.ContractDocuments.Add(contractDocument); //dealVersion.Customer = ContractPartyList[GetRandomIntegerFromInterval(1, ContractPartyList.Count) - 1].Party; dealVersion.CostItem = costItemList[GetRandomIntegerFromInterval(1, costItemList.Count) - 1]; //dealVersion.Supplier = ContractPartyList[GetRandomIntegerFromInterval(1, ContractPartyList.Count) - 1].Party; dealVersion.CostModel = CostModelList[GetRandomIntegerFromInterval(1, CostModelList.Count) - 1]; //dealVersion.Curator = contractDeal.CuratorDepartment; dealVersion.DateBegin = DateTime.Now; dealVersion.DateEnd = DateTime.Now.AddDays(10); dealVersion.DateFinish = DateTime.Now.AddDays(20); dealVersion.DealCode = "DC " + i.ToString(); //dealVersion.DealDocument = contractDocument; //dealVersion.DealNomenclatures.Add( if (dealVersion != null) { dealVersion.DescriptionLong = "Полное описание для " + dealVersion.DealCode; dealVersion.DescriptionShort = "Краткое описание для " + dealVersion.DealCode; } dealVersion.NDSRate = NDSRateList[GetRandomIntegerFromInterval(1, NDSRateList.Count) - 1]; if (OrderList.Count > 0) { dealVersion.Order = OrderList[GetRandomIntegerFromInterval(1, OrderList.Count) - 1]; } dealVersion.PaymentValuta = valutaList[GetRandomIntegerFromInterval(1, valutaList.Count) - 1]; //dealVersion.Registrator = contractDeal.DepartmentRegistrator; dealVersion.Valuta = valutaList[GetRandomIntegerFromInterval(1, valutaList.Count) - 1]; //dealVersion.StageStructure //--- contractDeal.Current = dealVersion; contractDeal.DealVersions.Add(dealVersion); crmContract contract = objectSpace.CreateObject <crmContract>(); contract.ContractCategory = сontractCategoryList[GetRandomIntegerFromInterval(1, сontractCategoryList.Count) - 1]; contractDeal.Contract = contract; contractDeal.ContractDocument = contractDocument; contractDeal.ContractDocuments.Add(contractDocument); contractDocument.Contract = contract; contract.ContractDeals.Add(contractDeal); contract.ContractDocuments.Add(contractDocument); //contract.ContractDocument = DateTime.Now; //contract.Delo = "Delo " + i.ToString(); contract.Description = "Описание документа " + i.ToString(); contract.UserRegistrator = contractDeal.UserRegistrator; contract.DepartmentRegistrator = contract.UserRegistrator.Department; contractList.Add(contract); //this.ObjectSpace.CommitChanges(); if ((i % 100) == 0) { objectSpace.CommitChanges(); } } objectSpace.CommitChanges(); // Создаём записи регистра crmDebtorCreditorDebtRegister for (int i = 0; i < RecordCountGenerated; i++) { //try { // crmDebtorCreditorDebtRegister crmDebtorCreditorDebtRegister debtorCreditorDebtRegister = objectSpace.CreateObject <crmDebtorCreditorDebtRegister>(); debtorCreditorDebtRegister.Token = token; debtorCreditorDebtRegister.ContragentParty = CLegalPersonList[GetRandomIntegerFromInterval(1, CLegalPersonList.Count) - 1].Party; debtorCreditorDebtRegister.PrimaryParty = PrimaryCLegalPersonList[GetRandomIntegerFromInterval(1, PrimaryCLegalPersonList.Count) - 1].Party; debtorCreditorDebtRegister.Contract = contractList[GetRandomIntegerFromInterval(1, contractList.Count) - 1]; debtorCreditorDebtRegister.ContractDeal = debtorCreditorDebtRegister.Contract.ContractDeals[0]; debtorCreditorDebtRegister.CreditValuta = valutaList[GetRandomIntegerFromInterval(1, valutaList.Count) - 1]; debtorCreditorDebtRegister.CreditCost = GetRandomIntegerFromInterval(1, 100); debtorCreditorDebtRegister.CreditCostInRUR = GetRandomIntegerFromInterval(1, 100); debtorCreditorDebtRegister.DebitValuta = debtorCreditorDebtRegister.CreditValuta; debtorCreditorDebtRegister.DebitCost = GetRandomIntegerFromInterval(1, 100); debtorCreditorDebtRegister.DebitCostInRUR = GetRandomIntegerFromInterval(1, 100); debtorCreditorDebtRegister.CostItem = costItemList[GetRandomIntegerFromInterval(1, costItemList.Count) - 1]; if (OrderList.Count > 0) { debtorCreditorDebtRegister.fmOrder = OrderList[GetRandomIntegerFromInterval(1, OrderList.Count) - 1]; } debtorCreditorDebtRegister.ObligationUnit = obligationUnitList[GetRandomIntegerFromInterval(1, obligationUnitList.Count) - 1]; debtorCreditorDebtRegister.ObligationUnitDateTime = DateTime.Now; debtorCreditorDebtRegister.PlaneFact = ((i % 2) == 0) ? PlaneFact.PLAN : PlaneFact.FACT; debtorCreditorDebtRegister.Stage = stageList[GetRandomIntegerFromInterval(1, stageList.Count) - 1]; //debtorCreditorDebtRegister.StageTech = ; if (subjectList.Count > 0) { debtorCreditorDebtRegister.Subject = subjectList[GetRandomIntegerFromInterval(1, subjectList.Count) - 1]; } //cashFlowRegister.Save(); //objectSpace.CommitChanges(); //} catch { //} if ((i % 1000) == 0) { objectSpace.CommitChanges(); } } objectSpace.CommitChanges(); // Создаём записи регистра crmCashFlowRegister for (int i = 0; i < RecordCountGenerated; i++) { //try { // crmCashFlowRegister crmCashFlowRegister cashFlowRegister = objectSpace.CreateObject <crmCashFlowRegister>(); cashFlowRegister.Token = token; cashFlowRegister.ContragentParty = CLegalPersonList[GetRandomIntegerFromInterval(1, CLegalPersonList.Count) - 1].Party; cashFlowRegister.PrimaryParty = PrimaryCLegalPersonList[GetRandomIntegerFromInterval(1, PrimaryCLegalPersonList.Count) - 1].Party; cashFlowRegister.Contract = contractList[GetRandomIntegerFromInterval(1, contractList.Count) - 1]; cashFlowRegister.ContractDeal = cashFlowRegister.Contract.ContractDeals[0]; //cashFlowRegister.Contract.ContractDeals[0]; cashFlowRegister.Cost = GetRandomIntegerFromInterval(1, 100); //cashFlowRegister.CostInRUR = GetRandomIntegerFromInterval(1, 100); cashFlowRegister.SumIn = GetRandomIntegerFromInterval(1, 100); cashFlowRegister.CostItem = costItemList[GetRandomIntegerFromInterval(1, costItemList.Count) - 1]; if (OrderList.Count > 0) { cashFlowRegister.fmOrder = OrderList[GetRandomIntegerFromInterval(1, OrderList.Count) - 1]; } if (obligationUnitList.Count > 0) { cashFlowRegister.ObligationUnit = obligationUnitList[GetRandomIntegerFromInterval(1, obligationUnitList.Count) - 1]; } cashFlowRegister.ObligationUnitDateTime = DateTime.Now; cashFlowRegister.PaymentCost = GetRandomIntegerFromInterval(1, 100); cashFlowRegister.PaymentItem = paymentItemList[GetRandomIntegerFromInterval(1, paymentItemList.Count) - 1]; cashFlowRegister.PaymentValuta = valutaList[GetRandomIntegerFromInterval(1, valutaList.Count) - 1]; //cashFlowRegister.PlaneFact = ((i % 2) == 0) ? PlaneFact.PLAN : PlaneFact.FACT; cashFlowRegister.Section = CashFlowRegisterSection.CONTRACT_PLAN; // Исправить на нормальное назначение //cashFlowRegister.Stage = stageList[GetRandomIntegerFromInterval(1, stageList.Count) - 1]; //cashFlowRegister.StageTech = ; if (subjectList.Count > 0) { cashFlowRegister.Subject = subjectList[GetRandomIntegerFromInterval(1, subjectList.Count) - 1]; } cashFlowRegister.Valuta = valutaList[GetRandomIntegerFromInterval(1, valutaList.Count) - 1]; //cashFlowRegister.FinancialDeal //cashFlowRegister.Save(); //objectSpace.CommitChanges(); //} catch { //} if ((i % 1000) == 0) { objectSpace.CommitChanges(); } } objectSpace.CommitChanges(); }
private Decimal GetRequestSumByCourse(UnitOfWork uow, fmCDocRCB PaymentDocument, fmCPRPaymentRequest paymentRequest, csValuta valutaPayment) { // Поясение о вычислении. Сумма в заявке - это в в валюте обязательств, чтобы её сравнить // с суммой платежа, надо перевести по кросс-курсу к валюте платежа и уже полученную сумму сравнить. Вопрос: на // какой день брать курс? Предлагается брать непустую из двух дат: this.DeductedFromPayerAccount или this.ReceivedByPayerBankDate // Тривиальный случай: валюта платежа совпадает с валютой обязательство if (paymentRequest.Valuta == valutaPayment) { return(paymentRequest.Summ); //.PaymentSumm; } // Валюты платежа и обязательств не совпадают. Надо вычислять кросс-курс на дату courseDate (изменения счёта) DateTime courseDate = (PaymentDocument.DeductedFromPayerAccount != DateTime.MinValue) ? PaymentDocument.DeductedFromPayerAccount : PaymentDocument.ReceivedByPayerBankDate; //paymentRequest.PayDate; Decimal crossCource = csCNMValutaCourse.GetCrossCourceOnDate(uow, courseDate, paymentRequest.Valuta, valutaPayment); Decimal resultSum = Math.Round(paymentRequest.Summ * crossCource, 4); return(resultSum); }
public void CreateAllReferencesOnlyTest([Values("", "0", "1", "2", "3", "4")] string modificator) { //Session ssn = session1; UnitOfWork ssn = new UnitOfWork(Common.dataLayer); crmContractCategory contractCategory = Prepare_crmContractCategory(ssn, modificator); if (Common.CheckValidationRule) { ruleResult = ruleSet.ValidateTarget(contractCategory, DefaultContexts.Save); Assert.AreEqual(ValidationState.Valid, ruleResult.State); } crmCostModel costModel = Prepare_crmCostModel(ssn, modificator); if (Common.CheckValidationRule) { ruleResult = ruleSet.ValidateTarget(costModel, DefaultContexts.Save); Assert.AreEqual(ValidationState.Valid, ruleResult.State); } csCountry country = Prepare_csCountry(ssn, modificator); if (Common.CheckValidationRule) { ruleResult = ruleSet.ValidateTarget(country, DefaultContexts.Save); Assert.AreEqual(ValidationState.Valid, ruleResult.State); } csUnit unit = Prepare_csUnit(ssn, modificator); if (Common.CheckValidationRule) { ruleResult = ruleSet.ValidateTarget(unit, DefaultContexts.Save); Assert.AreEqual(ValidationState.Valid, ruleResult.State); } csNomenclatureType nomenclatureType = Prepare_csNomenclatureType(ssn, modificator); if (Common.CheckValidationRule) { ruleResult = ruleSet.ValidateTarget(nomenclatureType, DefaultContexts.Save); Assert.AreEqual(ValidationState.Valid, ruleResult.State); } fmCostItem costItem = Prepare_fmCostItem(ssn, modificator); if (Common.CheckValidationRule) { ruleResult = ruleSet.ValidateTarget(costItem, DefaultContexts.Save); Assert.AreEqual(ValidationState.Valid, ruleResult.State); } csMaterial material = Prepare_csMaterial(ssn, modificator, nomenclatureType, unit, costItem); if (Common.CheckValidationRule) { ruleResult = ruleSet.ValidateTarget(material, DefaultContexts.Save); Assert.AreEqual(ValidationState.Valid, ruleResult.State); } csService service = Prepare_csService(ssn, modificator, nomenclatureType, unit, costItem); if (Common.CheckValidationRule) { ruleResult = ruleSet.ValidateTarget(service, DefaultContexts.Save); Assert.AreEqual(ValidationState.Valid, ruleResult.State); } csValuta valuta = Prepare_csValuta(ssn, modificator, nomenclatureType, unit, costItem); if (Common.CheckValidationRule) { ruleResult = ruleSet.ValidateTarget(valuta, DefaultContexts.Save); Assert.AreEqual(ValidationState.Valid, ruleResult.State); } csAddress address = Prepare_csAddress(ssn, modificator, country); if (Common.CheckValidationRule) { ruleResult = ruleSet.ValidateTarget(address, DefaultContexts.Save); Assert.AreEqual(ValidationState.Valid, ruleResult.State); } crmPhysicalPerson physicalPersonRu = Prepare_crmPhysicalPerson(ssn, modificator, address); if (Common.CheckValidationRule) { ruleResult = ruleSet.ValidateTarget(physicalPersonRu, DefaultContexts.Save); Assert.AreEqual(ValidationState.Valid, ruleResult.State); } crmCBusinessman businessmanRu = Prepare_crmBusinessmanRu(ssn, modificator, physicalPersonRu, address); if (Common.CheckValidationRule) { ruleResult = ruleSet.ValidateTarget(businessmanRu, DefaultContexts.Save); Assert.AreEqual(ValidationState.Valid, ruleResult.State); } crmCLegalPerson legalPersonRussianRu = Prepare_crmCLegalPerson(ssn, modificator, address); if (Common.CheckValidationRule) { ruleResult = ruleSet.ValidateTarget(legalPersonRussianRu, DefaultContexts.Save); Assert.AreEqual(ValidationState.Valid, ruleResult.State); } //crmPartyRu partyRu = Prepare_crmPartyRu(ssn, modificator, address, legalPersonRussianRu); //if (Common.CheckValidationRule) { // ruleResult = ruleSet.ValidateTarget(partyRu, DefaultContexts.Save); // Assert.AreEqual(ValidationState.Valid, ruleResult.State); //} fmCSubject subject = Prepare_fmSubject(ssn, modificator); if (Common.CheckValidationRule) { ruleResult = ruleSet.ValidateTarget(subject, DefaultContexts.Save); Assert.AreEqual(ValidationState.Valid, ruleResult.State); } hrmDepartment department = Prepare_hrmDepartment(ssn, modificator); if (Common.CheckValidationRule) { ruleResult = ruleSet.ValidateTarget(department, DefaultContexts.Save); Assert.AreEqual(ValidationState.Valid, ruleResult.State); } hrmStaff staff = Prepare_hrmStaff(ssn, modificator, physicalPersonRu, department); if (Common.CheckValidationRule) { ruleResult = ruleSet.ValidateTarget(staff, DefaultContexts.Save); Assert.AreEqual(ValidationState.Valid, ruleResult.State); } crmUserParty userParty = Prepare_crmUserParty(ssn, modificator, legalPersonRussianRu.Party); if (Common.CheckValidationRule) { ruleResult = ruleSet.ValidateTarget(userParty, DefaultContexts.Save); Assert.AreEqual(ValidationState.Valid, ruleResult.State); } ssn.CommitChanges(); }
public virtual void AutoBinding(crmBankAccount BankAccount, fmCPRRepaymentTask RepaymentTask) { // Несколько замечаний. // Сопоставление ведётся только с уже существующими заявками в статусе IN_PAY. // Для данного платёжного документа выбираются только такие заявки, в которых Плательщик и Получатель // соответствуют таковым в платёжном документе. // Часть суммы платёжного документа, не покрытая заявками, должна равняться части суммы Заявки, не истраченной // на Платёжные документы. // Распределение средств Заявки из предыдущего пункта происходит по дням в операционном журнале. // Список счетов "нашей" организации XPQuery <crmBankAccount> ourBankAccounts = new XPQuery <crmBankAccount>(Session); var OurBankAccounts = (from bankAccount in ourBankAccounts where bankAccount.PrefferedParty.Code == GetOurParty().Code //"2518" select bankAccount).ToList <crmBankAccount>(); DateTime DateAccountChanged = (this.ReceivedByPayerBankDate != DateTime.MinValue) ? this.ReceivedByPayerBankDate : ((this.DeductedFromPayerAccount != DateTime.MinValue) ? this.DeductedFromPayerAccount : DateTime.MinValue); csValuta paymentValuta = crmBankAccount.GetValutaByBankAccount(Session, BankAccount); // Сумма Платёжного документа по OperationJournal (в валюте платежа) Decimal operationPaymentDocSumIn = 0, operationPaymentDocSumOut = 0; GetPaymentDocSumByOperationJournal(this, BankAccount, out operationPaymentDocSumIn, out operationPaymentDocSumOut); // @@@@@@@@@@@ Добавить проверку по BankAccount // Одна из сумм operationPaymentDocSumIn или operationPaymentDocSumOut обязательно равна 0 // Сумма Платёжного документа по RepaymentJournal (в валюте платежа - это величины SumIn и SumOut) Decimal repaymentDocSumIn = 0, repaymentDocSumOut = 0; GetPaymentDocSumByRepaymentJournal(this, BankAccount, out repaymentDocSumIn, out repaymentDocSumOut); // @@@@@@@@@@@ Добавить проверку по BankAccount // Одна из сумм repaymentDocSumIn или repaymentDocSumOut также обязательно равна 0 // Величина непокрытия Платёжного документа Заявками (все суммы в валюте платежа) Decimal deltaDocSumIn = operationPaymentDocSumIn - repaymentDocSumIn; Decimal deltaDocSumOut = operationPaymentDocSumOut - repaymentDocSumOut; if (Decimal.Compare(Math.Abs(deltaDocSumIn) + Math.Abs(deltaDocSumOut), _Accuracy) <= 0) { return; // Всё сопоставлено уже с точностью до _Accuracy - так условились! } // Одна (или обе) из сумм deltaDocSumIn или deltaDocSumOut также равна (равны) 0 Decimal deltaDocSum = deltaDocSumIn + deltaDocSumOut; // !!!!!!! ПЕРЕСМОТРЕТЬ ????????? // Поиск подходящей заявки (Статус, Плательщик, Получатель, остаточные суммы) XPQuery <fmCPRPaymentRequest> paymentRequests = new XPQuery <fmCPRPaymentRequest>(Session, true); var queryPaymentRequests = from paymentRequest in paymentRequests where (paymentRequest.State == PaymentRequestStates.IN_PAYMENT || paymentRequest.State == PaymentRequestStates.IN_BANK) && paymentRequest.PartyPayReceiver == this.PaymentReceiverRequisites.Party && paymentRequest.PartyPaySender == this.PaymentPayerRequisites.Party && OurBankAccounts.Contains <crmBankAccount>(this.PaymentPayerRequisites.BankAccount) && // Означает РАСХОД DateAccountChanged.Date >= paymentRequest.Date.Date //&& DateAccountChanged.Date < paymentRequest.Date.AddDays(3).Date select paymentRequest; foreach (var paymentRequest in queryPaymentRequests) { // Отбраковка: // (1) сумма заявки не должна быть исчерпана полностью, // (2) остаточная сумма должна равняться величине непокрытия Платёжного документа Decimal paymentRequestSumIn = 0, paymentRequestSumOut = 0; // Эти суммы в валюте платежа Decimal paymentRequestSumObligationIn = 0, paymentRequestSumObligationOut = 0; // Эти суммы в валюте обязательств GetPaymentRequestSumByRepaymentJournal( paymentRequest, BankAccount, out paymentRequestSumIn, out paymentRequestSumOut, out paymentRequestSumObligationIn, out paymentRequestSumObligationOut ); // Величина неиспользованности Заявки !!!!!!!! ПЕРЕСМОТРЕТЬ !!!!!!!!!!! // Поясение о вычислении неиспользованности. Сумма в заявке - это в валюте обязательств, чтобы её сравнить // с суммой платежа, надо перевести по кросс-курсу к валюте платежа и уже полученную сумму сравнить. Вопрос: на // какой день брать курс? Предлагается брать DateAccountChanged //Decimal deltaRequestSum = GetRequestSumByCourse(paymentRequest, paymentRequest.Valuta); // В валюте платежа Decimal deltaRequestSum = GetRequestSumByCourse(paymentRequest, paymentValuta); // В валюте платежа if (this.PaymentPayerRequisites.BankAccount == BankAccount) { deltaRequestSum -= paymentRequestSumOut; } else if (this.PaymentReceiverRequisites.BankAccount == BankAccount) { deltaRequestSum -= paymentRequestSumIn; } if (Decimal.Compare(Math.Abs(deltaRequestSum), _Accuracy) <= 0) { continue; // Переход к следующей заявке (тогда у заявки должен был бы быть статус PAYED и она не должна была попасть в рассмотрение - это предусловие контракта) } // Сравнение с точностью до 1 копейки if (Decimal.Compare(Math.Abs(deltaDocSum - deltaRequestSum), _Accuracy) <= 0) { // Создаём задачу привязки Session uow = this.Session; //using (UnitOfWork uow = new UnitOfWork(Session.ObjectLayer)) { fmCPRRepaymentTask task = new fmCPRRepaymentTask(uow); task.BankAccount = BankAccount; task.PaymentDocument = this; task.FillRepaymentTaskLines(); task.FillRequestList(); task.DoBindingRequest(paymentRequest, true, 0); //uow.CommitChanges(); //} // Поскольку заявка исчерпана, то меняем ей статус paymentRequest.State = PaymentRequestStates.PAYED; this.State = PaymentDocProcessingStates.PROCESSED; // Заявка и документ выписки полностью взаимопокрылись, поэтому break; } } }