public void UpdateTrwNomenclature() { if (Nomenclature == null || Order == null) { return; } TrwSaleNomenclature old = _TrwSaleNomenclature; if (old == null || old.Order != Order || old.Nomenclature != Nomenclature) { IObjectSpace os = ObjectSpace.FindObjectSpaceByObject(this); _TrwSaleNomenclature = os.GetObjects <TrwSaleNomenclature>( new OperandProperty("Order") == Order & new OperandProperty("Nomenclature") == Nomenclature, true).FirstOrDefault(); if (_TrwSaleNomenclature == null) { _TrwSaleNomenclature = os.CreateObject <TrwSaleNomenclature>(); _TrwSaleNomenclature.Order = Order; _TrwSaleNomenclature.Nomenclature = Nomenclature; TrwOrder trw_order = Order.Subject.TrwOrders.FirstOrDefault(x => x.Deal == this.DeliveryUnit.DealVersion.ContractDeal); if (trw_order == null) { Order.Subject.Deals.Add(this.DeliveryUnit.DealVersion.ContractDeal); trw_order = Order.Subject.TrwOrders.FirstOrDefault(x => x.Deal == this.DeliveryUnit.DealVersion.ContractDeal); } if (trw_order != null) { trw_order.TrwSaleNomenclatures.Add(_TrwSaleNomenclature); } } OnChanged("TrwSaleNomenclature", old, _TrwSaleNomenclature); } }
public void DealsAdd(crmContractDeal deal) { if (deal.TRVType == null || deal.TRVType.TrwContractSuperType != TrwContractSuperType.DEAL_SALE) { return; } TrwOrder cur_order = null; foreach (TrwOrder trw_order in this.TrwOrders) { if (trw_order.Deal == deal) { cur_order = trw_order; } } if (cur_order == null) { cur_order = new TrwOrder(this.Session); cur_order.Subject = this; cur_order.Deal = deal; } }
private void UpdateTrwOrders() { // using (IObjectSpace os = ObjectSpace.CreateNestedObjectSpace()) { IList <fmCSubject> subjects = os.GetObjects <fmCSubject>(); foreach (fmCSubject subject in subjects) { foreach (fmCOrder order in subject.Orders) { if (order.SourceDeal != null) { subject.Deals.Add(order.SourceDeal); } } foreach (crmContractDeal deal in subject.Deals) { if (deal.TRVType == null || deal.TRVType.TrwContractSuperType != TrwContractSuperType.DEAL_SALE) { continue; } TrwOrder cur_order = null; foreach (TrwOrder trw_order in subject.TrwOrders) { if (trw_order.Deal == deal) { cur_order = trw_order; } } if (cur_order == null) { cur_order = os.CreateObject <TrwOrder>(); cur_order.Subject = subject; cur_order.Deal = deal; } } } os.CommitChanges(); } }
public static void RefreshDeal(IObjectSpace os, TrwSubjectDealSale subj_deal) { if (subj_deal.DealType == TrwSubjectDealType.TRW_SUBJECT_DEAL_UNKNOW || subj_deal.TrwSubjectBase == null) { return; } if (subj_deal.DealType == TrwSubjectDealType.TRW_SUBJECT_DEAL_REAL) { if (subj_deal.Deal == null) { return; } DateTime period_end = new DateTime(subj_deal.TrwSubject.Period.Year, 12, 31); foreach (fmCSubject subj in subj_deal.TrwSubjectBase.Subjects) { TrwOrder trw_order = subj_deal.Deal.TrwOrders.FirstOrDefault(x => x.Subject == subj); if (trw_order == null) { subj.Deals.Add(subj_deal.Deal); trw_order = subj_deal.Deal.TrwOrders.FirstOrDefault(x => x.Subject == subj); } if (subj_deal.Nomenclature != null) { foreach (fmCOrder order in subj.Orders) { if (order.IsClosed || order.DateBegin > period_end) { continue; } TrwSubjectDealSaleOrder trw_subj_deal_order = subj_deal.DealSaleOrders.FirstOrDefault(x => x.Order == order); if (trw_subj_deal_order == null) { trw_subj_deal_order = os.CreateObject <TrwSubjectDealSaleOrder>(); subj_deal.DealSaleOrders.Add(trw_subj_deal_order); trw_subj_deal_order.TrwOrderSet(trw_order); trw_subj_deal_order.Order = order; trw_order.TrwSaleNomenclatures.Add(trw_subj_deal_order.TrwSaleNomenclature); } } } } } else { if (subj_deal.DealBudget == null) { return; } DateTime period_end = new DateTime(subj_deal.TrwSubject.Period.Year, 12, 31); foreach (fmCSubject subj in subj_deal.TrwSubjectBase.Subjects) { if (subj_deal.DealBudget == null) { return; } TrwOrder trw_order = subj_deal.DealBudget.TrwOrders.FirstOrDefault(x => x.Subject == subj); if (trw_order == null) { trw_order = os.CreateObject <TrwOrder>(); trw_order.Subject = subj; trw_order.TrwContractInt = subj_deal.DealBudget; } trw_order.TrwDateFrom = subj_deal.DealBudget.TrwDateValidFrom; trw_order.TrwDateToPlan = subj_deal.DealBudget.TrwDateValidToFact; trw_order.TrwOrderWorkType = subj_deal.TrwOrderWorkType; if (subj_deal.Nomenclature != null) { foreach (fmCOrder order in subj.Orders) { if (order.IsClosed || order.DateBegin > period_end) { continue; } TrwSubjectDealSaleOrder trw_subj_deal_order = subj_deal.DealSaleOrders.FirstOrDefault(x => x.Order == order); if (trw_subj_deal_order == null) { trw_subj_deal_order = os.CreateObject <TrwSubjectDealSaleOrder>(); subj_deal.DealSaleOrders.Add(trw_subj_deal_order); trw_subj_deal_order.TrwOrderSet(trw_order); trw_subj_deal_order.Order = order; trw_order.TrwSaleNomenclatures.Add(trw_subj_deal_order.TrwSaleNomenclature); } } } } } }
public void TrwOrderSet(TrwOrder trw_order) { SetPropertyValue <TrwOrder>("TrwOrder", ref _TrwOrder, trw_order); }