/// <summary> /// Проверка, не мешают ли блокировки операции по данной сделке /// </summary> /// <param name="operation">Тип проводимой операции</param> /// <param name="deal">Сделка, по которой проверяются блокировки</param> public void CheckForBlocking(BlockingDependentOperation operation, Deal deal, SaleWaybill transientSaleWaybill) { CheckSet checkSet; switch (operation) { case BlockingDependentOperation.CreateExpenditureWaybill: checkSet = new CheckSet { CheckForManualBlocking = true }; break; case BlockingDependentOperation.SavePrePaymentExpenditureWaybillRow: checkSet = new CheckSet { CheckForManualBlocking = true }; break; case BlockingDependentOperation.SavePostPaymentExpenditureWaybillRow: checkSet = new CheckSet { CheckForManualBlocking = true }; break; case BlockingDependentOperation.AcceptPrePaymentExpenditureWaybill: checkSet = new CheckSet { CheckForManualBlocking = true, CheckForPaymentDelayBlocking = true }; break; case BlockingDependentOperation.AcceptPostPaymentExpenditureWaybill: checkSet = new CheckSet { CheckForPaymentDelayBlocking = true, CheckForManualBlocking = true, CheckForCreditLimitBlocking = true, }; break; case BlockingDependentOperation.ShipUnpaidPostPaymentExpenditureWaybill: checkSet = new CheckSet { CheckForPaymentDelayBlocking = true, CheckForManualBlocking = true }; break; default: throw new Exception("Неизвестный тип операции."); } ; PerformCheck(checkSet, deal, transientSaleWaybill); }
/// <summary> /// Выполнение проверок на блокировки. /// Проверки всегда выполняются в определенном порядке: /// 1. Проверка на просрочку/связи с просрочившей организацией /// 2. Проверка на ручную блокировку /// 3. Проверка на блокировку по кредитному лимиту /// </summary> /// <param name="checkSet">Набор проверок для выполнения</param> /// <param name="deal">Сделка, по которой проверяются блокировки</param> private void PerformCheck(CheckSet checkSet, Deal deal, SaleWaybill transientSaleWaybill) { if (checkSet.CheckForPaymentDelayBlocking) { CheckForPaymentDelayBlocking(deal); } if (checkSet.CheckForManualBlocking) { CheckForManualBlocking(deal); } if (checkSet.CheckForCreditLimitBlocking) { CheckForCreditLimitBlocking(deal, transientSaleWaybill); } }
private void AddCheck(int count) { var Temp = _ListWord.ToArray(); var NgArray = GetNGArray(count); foreach (var index in NgArray) { CheckedSheet Cs = new CheckedSheet(); CheckSet CsParam = new CheckSet(); CsParam.Index = NgArray.FindIndex((i) => { if (i == index) { return(true); } else { return(false); } }); CsParam.QuestionMode = QuestionMode; CsParam.WordSet = Temp[index]; Cs.Initial(CsParam); Cs.Location = new Point(0, _CheckHight * CsParam.Index + 2); CheckPanel.Controls.Add(Cs); Cs.SendResultEvent += Cs_SendResultEvent; } }