private void OnScanBox(object sender, EventArgs e) { Label lblNumber = pnlCurrent.GetLabelByName("lblNumber"); Label lblSetter = pnlCurrent.GetLabelByName("lblSetter"); Label lblKey2 = pnlCurrent.GetLabelByName("lblKey2"); Label lblInfo2 = pnlCurrent.GetLabelByName("lblInfo2"); if (SS.NeedAdressComplete != SQL1S.GetVoidID()) { lblKey2.Visible = true; } lblInfo2.ForeColor = Color.Blue; lblInfo2.Text = "Ворота: " + SS.DocDown.Sector + " " + SS.DocDown.Boxes.ToString() + " м"; lblNumber.Text = SS.DocDown.NumberBill.Substring(SS.DocDown.NumberBill.Length - 5, 2) + " " + SS.DocDown.NumberBill.Substring(SS.DocDown.NumberBill.Length - 3) + " сектор: " + SS.DocDown.MainSectorName.Trim() + "-" + SS.DocDown.NumberCC.ToString(); lblSetter.Text = SS.DocDown.AdressCollect; lblAction.Text = SS.ExcStr; lblAction.ForeColor = Color.Green; TimerFind.Enabled = true; }
private bool RBSampleSet(string Barcode) { if (CurrentAction != ActionSet.ScanItem) { FExcStr = "Неверно! " + WhatUNeed(); return(false); } string TextQuery = "SELECT " + "Units.parentext as ItemID, Goods.$Спр.Товары.ИнвКод as InvCode " + "FROM _1sjourn as journ (nolock) " + "LEFT JOIN DT4327 as DocAT (nolock) ON DocAT.iddoc = journ.iddoc " + "LEFT JOIN $Спр.Товары as Goods (nolock) ON Goods.ID = DocAT.SP4312 " + "LEFT JOIN $Спр.ЕдиницыШК as Units (nolock) ON Units.parentext = Goods.ID " + "WHERE DocAT.SP4322 = '17530101 00:00:00.000' and Units.SP2233 = :Barcode and DocAT.SP4320 = :EmptyID and DocAT.iddoc = '" + DocSet.ID + "'"; SQL1S.QuerySetParam(ref TextQuery, "EmptyID", SQL1S.GetVoidID()); SQL1S.QuerySetParam(ref TextQuery, "Barcode", Barcode); DataTable DT; if (!ExecuteWithRead(TextQuery, out DT)) { return(false); } if (DT.Rows.Count == 0) { FExcStr = "С таким штрихкодом товар не найден! " + WhatUNeed(); return(false); } if (DT.Rows[0]["ItemID"].ToString() != CCItem.ID) { FExcStr = "Не тот товар! (отсканирован " + DT.Rows[0]["InvCode"].ToString().Trim() + ") " + WhatUNeed(); return(false); } CurrentAction = ActionSet.EnterCount; FExcStr = WhatUNeed(); return(true); }
} // CompleteLineSet public bool EnterCountSet(int Count) { if (CurrentAction != ActionSet.EnterCount) { FExcStr = "Неверно! " + WhatUNeed(); return(false); } //if (Count <= 0 || (CCItem.OKEI2Count < Count)) if (Count <= 0 || (CCItem.Count < Count)) { FExcStr = "Количество указано неверно! (максимум " + CCItem.Count.ToString() + ")"; //FExcStr = "Количество указано неверно! (максимум " + CCItem.OKEI2Count.ToString() + ")"; return(false); } CCItem.CountFact = Count; //CCItem.CountFact = Count* CCItem.OKEI2Coef; if (DocSet.BoxID == SQL1S.GetVoidID()) {//Отключение коробок по константе return(CompleteLineSet()); } CurrentAction = ActionSet.ScanBox; FExcStr = WhatUNeed(); return(true); } // EnterCountSet
} // ReactionPalleteDo /// <summary> /// /// </summary> private void CompletePallete() { SS.OnReport(new ReportEventArgs("Фиксирую окончание отбора...")); //Для начала определим будет ли после отбора сразу выкладка или будет что-то еще // я хз как лучше, поэтому буду тянуть информацию из таблички движка, по документу DocAP bool AuthorEmpty = true; string TextQuery = "select top 1 sector0_type sector0_type, sector1_down sector1_down from RT_refill (nolock) where DocAP = :iddoc "; SQL1S.QuerySetParam(ref TextQuery, "iddoc", DocAP.ID); DataTable DT; SS.ExecuteWithReadNew(TextQuery, out DT); if (DT.Rows.Count > 0) { if ((int)DT.Rows[0]["sector0_type"] == 3 || ((int)DT.Rows[0]["sector1_down"] == 0 && (int)DT.Rows[0]["sector0_type"] == 1)) { //Это с высокой полки или это на сектор у которого нет спуска // значит мы сразу будем переходить к выкладке, после завершения отбора AuthorEmpty = false; } } //Заполним шапку найденного документа SubjectDoc.SetAttributeHeader("ШКПаллеты", PalleteBarcode); SubjectDoc.SetAttributeHeader("КолСтрок", DocAP.RowCount); SubjectDoc.Save(); //получим список всех полей табличной части документа адрес перемещения string columns; //ПО СТАРОМУ //SS.GetColumns("DT$АдресПеремещение", out columns); //columns = columns.Replace("IDDOC,", ""); //уберем iddoc, его мы перезаписывать не будем //КОНЕЦ ПО СТАРОМУ //ПО НОВОМУ SS.GetColumns("DT$АдресПеремещение", out columns, "min"); columns = columns.Replace("min(IDDOC),", ""); //уберем iddoc, его мы перезаписывать не будем string tmpItem = SS.QueryParser("$АдресПеремещение.Товар ").Trim(); string tmpAmount = SS.QueryParser("$АдресПеремещение.Количество ").Trim(); columns = columns.Replace("min(" + tmpItem + ")", tmpItem); //группировка по товару columns = columns.Replace("min(" + tmpAmount, "sum(" + tmpAmount); //Сумма по количество columns = columns.Replace("min(IDDOC),", ""); //уберем iddoc, его мы перезаписывать не будем //Теперь скопируем строки из одного документа в другой, а потом изменим некоторые поля //Будем делать так, без транзакции, пока. А то ну его на хуй вставлять с изменениями слишком сложно TextQuery = "insert into DT$АдресПеремещение " + //"select :target," + columns + " from DT$АдресПеремещение where iddoc = :source; " + //ПО СТАРОМУ "select :target," + columns + " from DT$АдресПеремещение " + "where " + "iddoc = :source " + "and $АдресПеремещение.Состояние1 = :goodMove " + "and not $АдресПеремещение.Дата1 = :EmptyDate " + "group by $АдресПеремещение.Товар ; " + "if @@rowcount > 0 begin " + "update _1sjourn set $Автор = :employer where iddoc = :target; " + "update DT$АдресПеремещение SET " + "$АдресПеремещение.Состояние0 = $АдресПеремещение.Состояние1 , " + "$АдресПеремещение.Состояние1 = 2 , " + "$АдресПеремещение.Сотрудник0 = :EmptyID , " + "$АдресПеремещение.Адрес0 = $АдресПеремещение.Адрес1 , " + "$АдресПеремещение.Дата0 = :NowDate , " + "$АдресПеремещение.Дата1 = :EmptyDate , " + "$АдресПеремещение.Время0 = :NowTime , " + "$АдресПеремещение.Время1 = 0 , " + "$АдресПеремещение.Док = :source " + "where iddoc = :target; " + "exec WPM_RefillSetComplete :source, :adress0, :barcode_pallete " + "end else begin " + "update _1sjourn set $Автор = :EmptyID where iddoc = :target; " + //флаг под удаление возводим, иначе херня выходит "update RT_Refill set flag = 5 where docAP = :source " + "end"; SQL1S.QuerySetParam(ref TextQuery, "target", SubjectDoc.ID); SQL1S.QuerySetParam(ref TextQuery, "source", DocAP.ID); SQL1S.QuerySetParam(ref TextQuery, "barcode_pallete", PalleteBarcode); SQL1S.QuerySetParam(ref TextQuery, "adress0", Adress0.ID); SQL1S.QuerySetParam(ref TextQuery, "employer", AuthorEmpty ? SQL1S.GetVoidID() : Employer.ID); SQL1S.QuerySetParam(ref TextQuery, "goodMove", 4); //Хороший движение SS.ExecuteWithoutReadNew(TextQuery); } // CompletePallete
private void ShowSectionsNew(string currProposal) { ViewProposal = currProposal; ExPanel pnlInfoNew = pnlCurrent.GetControlByName("pnlInfoNew") as ExPanel; pnlInfoNew.Controls.Clear(); //Нужно дойти до контроля расходной string DocType; string IDCB = ""; //ИД контроля расходной List <string> SubjectDocs; if (!SS.GetSubjectDocs(currProposal, "Счет", out SubjectDocs)) { return; } //Если пустой, то это счет, а не заявка if (SubjectDocs.Count == 0) { return; } //Не пустой, ищем контроль расходной или адрес набор bool IsFound = false; foreach (string CurrentIDDoc in SubjectDocs) { if (SS.GetDocType(CurrentIDDoc, out DocType)) { if (DocType == "КонтрольРасходной") { IDCB = CurrentIDDoc; IsFound = true; break; //ПОЕХАЛИ ДАЛЬШЕ } } else { return; } } if (!IsFound) { return; } Dictionary <string, object> DaemondData = new Dictionary <string, object>(); if (!SS.GetDoc(currProposal, out DaemondData)) { return; } Dictionary <string, object> DataMap; List <string> CCListID; //теперь получаем список всех контролей набора if (!SS.GetCCListNew(IDCB, out CCListID, out DataMap)) { return; } //Тяжелая работа по выводу данных List <string> FieldList = new List <string>(); Dictionary <string, object> DataMapRead; FieldList.Add("DESCR"); const int FieldOnRow = 8; //Число полей на одну строку одного сектора Label[,] Lbl = new Label[FieldOnRow, CCListID.Count]; int i = 0; int dY; //Это смещение, м/у строками int FirstIndex = -1; //Индекс строки первой комплектации int LastIndex = -1; //Индекс строки последней комплектации DateTime MinDate = new DateTime(2020, 01, 01); //Минимальная дата DateTime MaxDate = new DateTime(1753, 01, 01); //Максимальная дата int MinTime = 86400; //Минимальное время int MaxTime = 0; //Максимальное время bool AllComplete = true; //Последнюю комплектацию не имеет смысла считать, если где-то, что-то не скомплектовано foreach (string ID in CCListID) { dY = i * 30; //Создадим метки для этого сектора for (int j = 0; j < FieldOnRow; j++) { Lbl[j, i] = new Label(); Lbl[j, i].Name = "_dyn" + j.ToString() + i.ToString(); Lbl[j, i].BackColor = Color.White; pnlInfoNew.Controls.Add(Lbl[j, i]); } //ОПРЕДЕЛИМСЯ С СОДЕРЖАНИЕМ И ЦВЕТАМИ ИСХОДЯ ИЗ СОСТОЯНИЯ //Ниже используются запросы к БД, не очень красиво, но в целях оптимизации (т.к. заглядывают сюда не всякий раз) //Поэтому, если что-то не срастается, то выводим пустые поля, там где несраслось if (SQL1S.IsVoidDate((DateTime)DataMap[ID + ".КонтрольНабора.Дата1"])) { //ОЖИДАНИЕ НАБОРА Lbl[1, i].Text = "."; Lbl[2, i].Text = "<< ожидание >>"; Lbl[3, i].Text = "__:__"; Lbl[4, i].Text = " неопределен"; Lbl[5, i].Text = "__:__"; //Цвета Lbl[0, i].ForeColor = Color.Red; Lbl[1, i].ForeColor = Color.Red; Lbl[2, i].ForeColor = Color.LightPink; Lbl[3, i].ForeColor = Color.LightGray; Lbl[4, i].ForeColor = Color.LightGray; Lbl[5, i].ForeColor = Color.LightGray; AllComplete = false; } else if (SQL1S.IsVoidDate((DateTime)DataMap[ID + ".КонтрольНабора.Дата2"])) { //В НАБОРЕ Lbl[1, i].Text = "..."; if (!SS.GetSCData(DataMap[ID + ".КонтрольНабора.Наборщик"].ToString(), "Сотрудники", FieldList, out DataMapRead, true)) { Lbl[2, i].Text = "< не задан >"; } else { Lbl[2, i].Text = Helper.GetShortFIO(DataMapRead["DESCR"].ToString()); } Lbl[3, i].Text = "(" + ((DateTime)DataMap[ID + ".КонтрольНабора.Дата1"]).ToString("dd.MM") + ") " + Helper.SecondToString((int)(decimal)DataMap[ID + ".КонтрольНабора.Время1"]) + " - ..."; Lbl[4, i].Text = " неопределен"; Lbl[5, i].Text = "__:__"; //Цвета Lbl[0, i].ForeColor = Color.Red; Lbl[1, i].ForeColor = Color.Red; Lbl[2, i].ForeColor = Color.Red; Lbl[3, i].ForeColor = Color.Red; Lbl[4, i].ForeColor = Color.LightGray; Lbl[5, i].ForeColor = Color.LightGray; AllComplete = false; } else if (SQL1S.IsVoidDate((DateTime)DataMap[ID + ".КонтрольНабора.Дата3"])) { //НАБРАНА Lbl[1, i].Text = "--"; if (!SS.GetSCData(DataMap[ID + ".КонтрольНабора.Наборщик"].ToString(), "Сотрудники", FieldList, out DataMapRead, true)) { Lbl[2, i].Text = "< не задан >"; } else { Lbl[2, i].Text = Helper.GetShortFIO(DataMapRead["DESCR"].ToString()); } Lbl[3, i].Text = "(" + ((DateTime)DataMap[ID + ".КонтрольНабора.Дата2"]).ToString("dd.MM") + ") " + Helper.SecondToString((int)(decimal)DataMap[ID + ".КонтрольНабора.Время1"]) + " - " + Helper.SecondToString((int)(decimal)DataMap[ID + ".КонтрольНабора.Время2"]); Lbl[4, i].Text = "<< ожидание >>"; Lbl[5, i].Text = "__:__"; //Цвета Lbl[0, i].ForeColor = Color.Red; Lbl[1, i].ForeColor = Color.Red; Lbl[2, i].ForeColor = Color.Red; Lbl[3, i].ForeColor = Color.Red; Lbl[4, i].ForeColor = Color.LightPink; Lbl[5, i].ForeColor = Color.LightGray; AllComplete = false; } else { //СКОМПЛЕКТОВАНА DateTime CurrentDate = (DateTime)DataMap[ID + ".КонтрольНабора.Дата3"]; int CurrentTime = (int)(decimal)DataMap[ID + ".КонтрольНабора.Время3"]; //Скорректируем максималный момент комплектации if (AllComplete && CurrentDate > MaxDate) { MaxDate = CurrentDate; MaxTime = CurrentTime; LastIndex = i; } else if (AllComplete && CurrentDate == MaxDate && CurrentTime > MaxTime) { MaxTime = CurrentTime; LastIndex = i; } //Скорректируем максималный момент комплектации if (CurrentDate < MinDate) { MinDate = CurrentDate; MinTime = CurrentTime; FirstIndex = i; } else if (CurrentDate == MinDate && CurrentTime < MinTime) { MinTime = CurrentTime; FirstIndex = i; } //собственно рисовалка Lbl[1, i].Text = "+"; if (!SS.GetSCData(DataMap[ID + ".КонтрольНабора.Наборщик"].ToString(), "Сотрудники", FieldList, out DataMapRead, true)) { Lbl[2, i].Text = "< не задан >"; } else { Lbl[2, i].Text = Helper.GetShortFIO(DataMapRead["DESCR"].ToString()); } Lbl[3, i].Text = "(" + ((DateTime)DataMap[ID + ".КонтрольНабора.Дата2"]).ToString("dd.MM") + ") " + Helper.SecondToString((int)(decimal)DataMap[ID + ".КонтрольНабора.Время1"]) + " - " + Helper.SecondToString((int)(decimal)DataMap[ID + ".КонтрольНабора.Время2"]); if (!SS.GetSCData(DataMap[ID + ".КонтрольНабора.Комплектовщик"].ToString(), "Сотрудники", FieldList, out DataMapRead, true)) { Lbl[4, i].Text = "< не задан >"; } else { Lbl[4, i].Text = Helper.GetShortFIO(DataMapRead["DESCR"].ToString()); } Lbl[5, i].Text = "(" + CurrentDate.ToString("dd.MM") + ") " + Helper.SecondToString(CurrentTime); //Цвета Lbl[0, i].ForeColor = Color.Black; Lbl[1, i].ForeColor = Color.Black; Lbl[2, i].ForeColor = Color.Black; Lbl[3, i].ForeColor = Color.Black; Lbl[4, i].ForeColor = Color.Black; Lbl[5, i].ForeColor = Color.Black; } //Заголовок Lbl[0, i].Font = FontTahoma14Bold; Lbl[0, i].TextAlign = ContentAlignment.TopCenter; Lbl[0, i].Location = new Point(3, 3 + dY); Lbl[0, i].Size = new Size(50, 27); if (DataMap[ID + ".КонтрольНабора.Сектор"].ToString() == SQL1S.GetVoidID()) { //Пустая Lbl[0, i].Text = "Пу"; } else { Lbl[0, i].Text = DataMap[DataMap[ID + ".КонтрольНабора.Сектор"] + ".@Сектор.Имя"].ToString().Trim(); } Lbl[0, i].Text += "-" + DataMap[ID + ".КонтрольНабора.НомерЛиста"]; //Мест погружено Lbl[1, i].Font = FontTahoma9Bold; Lbl[1, i].TextAlign = ContentAlignment.TopRight; Lbl[1, i].Location = new Point(56, 3 + dY); Lbl[1, i].Size = new Size(25, 13); //Мест всего Lbl[7, i].Font = FontTahoma9Bold; Lbl[7, i].TextAlign = ContentAlignment.TopRight; Lbl[7, i].Location = new Point(56, 17 + dY); Lbl[7, i].Size = new Size(25, 13); //Наборщик Lbl[2, i].Font = FontTahoma9Regular; Lbl[2, i].TextAlign = ContentAlignment.TopLeft; Lbl[2, i].Location = new Point(84, 3 + dY); Lbl[2, i].Size = new Size(112, 13); //Время наборщика Lbl[3, i].Font = FontTahoma8Regular; Lbl[3, i].TextAlign = ContentAlignment.TopLeft; Lbl[3, i].Location = new Point(199, 3 + dY); Lbl[3, i].Size = new Size(110, 13); //Комплектовщик Lbl[4, i].Font = FontTahoma9Regular; Lbl[4, i].TextAlign = ContentAlignment.TopLeft; Lbl[4, i].Location = new Point(84, 17 + dY); Lbl[4, i].Size = new Size(112, 13); //Время комплектовщика Lbl[5, i].Font = FontTahoma8Regular; Lbl[5, i].TextAlign = ContentAlignment.TopLeft; Lbl[5, i].Location = new Point(199, 17 + dY); Lbl[5, i].Size = new Size(77, 13); //Количество строк Lbl[6, i].Font = FontTahoma8Bold; Lbl[6, i].TextAlign = ContentAlignment.TopRight; Lbl[6, i].Location = new Point(279, 17 + dY); Lbl[6, i].Size = new Size(30, 13); Lbl[6, i].Text = DataMap[ID + ".КонтрольНабора.КолСтрок"].ToString(); Lbl[6, i].ForeColor = Color.Navy; //Места Lbl[7, i].Text = DataMap[ID + ".КонтрольНабора.КолМест"].ToString(); Lbl[1, i].Text = DataMap[ID + ".КонтрольНабора.МестФакт"].ToString(); if (DataMap[ID + ".КонтрольНабора.КолМест"].ToString() != DataMap[ID + ".КонтрольНабора.МестФакт"].ToString()) { Lbl[1, i].ForeColor = Color.Red; } i++; } //Подкрасим первую и последнюю комплектации if (FirstIndex >= 0) { Lbl[1, FirstIndex].BackColor = Color.PaleGoldenrod; Lbl[7, FirstIndex].BackColor = Color.PaleGoldenrod; } if (AllComplete && LastIndex >= 0) { Lbl[1, LastIndex].BackColor = Color.PaleGreen; Lbl[7, LastIndex].BackColor = Color.PaleGreen; } pnlInfoNew.BringToFront(); //Заголовок с информацией по заявке if (DaemondData.Count > 0) { string txt = DaemondData["НомерДок"].ToString() + " (" + ((DateTime)DaemondData["ДатаДок"]).ToString("dd.MM.yy") + ")"; //Label lblDescr = pnlCurrent.GetLabelByName("lblDescr"); //lblDescr.Text = txt; } }
} // RefreshCCRP public bool CompleteLineSet() { string TextQuery; //Заглушка, рефрешим позицию, чтобы не было проблем, если оборвется связь int CountFact = CCItem.CountFact; if (!ToModeSet(CCItem.AdressID, DocSet.ID)) { CCItem.CountFact = CountFact; CurrentAction = DocSet.BoxID == SQL1S.GetVoidID() ? ActionSet.ScanAdress : ActionSet.ScanBox; //Отключение по константе return(false); } CCItem.CountFact = CountFact; CurrentAction = DocSet.BoxID == SQL1S.GetVoidID() ? ActionSet.ScanAdress : ActionSet.ScanBox; //Отключение по константе //конец заглушки int Line = CCItem.CurrLine; if (CCItem.Count > CCItem.CountFact) { if (Const.StopCorrect) { FExcStr = "Возможность дробить строку отключена!"; return(false); } //добавить строчку надо TextQuery = "begin tran; " + "update DT$КонтрольНабора " + "set $КонтрольНабора.Количество = :remaincount, " + "$КонтрольНабора.Сумма = :remaincount*$КонтрольНабора.Цена " + "where DT$КонтрольНабора .iddoc = :iddoc and DT$КонтрольНабора .lineno_ = :currline; " + "if @@rowcount > 0 begin " + "insert into DT$КонтрольНабора ($КонтрольНабора.СтрокаИсх , $КонтрольНабора.Товар , $КонтрольНабора.Количество ," + "$КонтрольНабора.Единица , $КонтрольНабора.Цена , $КонтрольНабора.Коэффициент , $КонтрольНабора.Сумма ," + "$КонтрольНабора.Секция , $КонтрольНабора.Корректировка , $КонтрольНабора.ПричинаКорректировки , $КонтрольНабора.ЕдиницаШК ," + "$КонтрольНабора.Состояние0 , $КонтрольНабора.Адрес0 , $КонтрольНабора.СостояниеКорр , $КонтрольНабора.АдресКорр ," + "$КонтрольНабора.ДокБлокировки , $КонтрольНабора.Дата5 , $КонтрольНабора.Время5 , $КонтрольНабора.Контейнер , " + "lineno_, iddoc, $КонтрольНабора.Контроль ) " + "select $КонтрольНабора.СтрокаИсх , $КонтрольНабора.Товар , :count ," + "$КонтрольНабора.Единица , $КонтрольНабора.Цена , $КонтрольНабора.Коэффициент , :count*$КонтрольНабора.Цена ," + "$КонтрольНабора.Секция , $КонтрольНабора.Корректировка , $КонтрольНабора.ПричинаКорректировки , $КонтрольНабора.ЕдиницаШК ," + "$КонтрольНабора.Состояние0 , $КонтрольНабора.Адрес0 , $КонтрольНабора.СостояниеКорр , $КонтрольНабора.АдресКорр ," + "$КонтрольНабора.ДокБлокировки , $КонтрольНабора.Дата5 , $КонтрольНабора.Время5 , $КонтрольНабора.Контейнер , " + "(select max(lineno_) + 1 from DT$КонтрольНабора where iddoc = :iddoc), iddoc, 0 " + "from DT$КонтрольНабора as ForInst where ForInst.iddoc = :iddoc and ForInst.lineno_ = :currline; " + "select max(lineno_) as newline from DT$КонтрольНабора where iddoc = :iddoc; " + "if @@rowcount = 0 rollback tran else commit tran " + "end " + "else rollback"; QuerySetParam(ref TextQuery, "count", CCItem.CountFact); QuerySetParam(ref TextQuery, "remaincount", CCItem.Count - CCItem.CountFact); QuerySetParam(ref TextQuery, "iddoc", DocSet.ID); QuerySetParam(ref TextQuery, "currline", CCItem.CurrLine); DataTable DT; if (!ExecuteWithRead(TextQuery, out DT)) { return(false); } //Писать будем в добалвенную, так лучше! Поэтому обновляем корректную строчку CCItem.CurrLine = (short)DT.Rows[0]["newline"]; } //фиксируем строку TextQuery = "UPDATE DT$КонтрольНабора WITH (rowlock) " + "SET $КонтрольНабора.Дата5 = :Date5, " + "$КонтрольНабора.Время5 = :Time5, " + "$КонтрольНабора.Контейнер = :id " + "WHERE DT$КонтрольНабора .iddoc = :DocCC and DT$КонтрольНабора .lineno_ = :lineno_; "; QuerySetParam(ref TextQuery, "id", GetVoidID()); QuerySetParam(ref TextQuery, "DocCC", DocSet.ID); QuerySetParam(ref TextQuery, "Date5", DateTime.Now); QuerySetParam(ref TextQuery, "Time5", APIManager.NowSecond()); QuerySetParam(ref TextQuery, "lineno_", CCItem.CurrLine); if (!ExecuteWithoutRead(TextQuery)) { return(false); } //Запись прошла успешно CurrentAction = ActionSet.ScanAdress; //на всякий случай, если там что-нибудь наебнется, то во вьюхе по крайней мере нельзя будет повторно ввести количество PreviousAction = "Отобрано " + CCItem.InvCode.Trim() + " - " + CCItem.CountFact.ToString() + " шт. (строка " + Line.ToString() + ")"; return(ToModeSet(null, null)); } // CompleteLineSet
private void ReactionBarcode(object sender, BarcodeReadEventArgs e) { string strBarcode = e.Barcode; //Особые режимы у которых все просто if (SS.NewStructModes.Contains(SS.CurrentMode)) { SS.BarcodeReaction(strBarcode); return; } Dictionary<string, string> dicBarcode = Helper.DisassembleBarcode(strBarcode); if ((SS.CurrentMode == Mode.SetSelfContorl || SS.CurrentMode == Mode.Set || SS.CurrentMode == Mode.SampleSet) && Screan != 0) { lblAction.Text = "ШК не работают на данном экране!"; return; } if (SS.CurrentMode == Mode.SetInicialization || SS.CurrentMode == Mode.SetSelfContorl || SS.CurrentMode == Mode.Loading || SS.CurrentMode == Mode.Set || SS.CurrentMode == Mode.Down || SS.CurrentMode == Mode.FreeDownComplete || SS.CurrentMode == Mode.NewComplectation || SS.CurrentMode == Mode.NewComplectationComplete) { lblAction.ForeColor = Color.Blue; } lblAction.Text = "ШК принят, обработка..."; Refresh(); bool IsObject = true; if (strBarcode.Substring(0, 2) == "25" && dicBarcode["Type"] == "113") { #region EAN 13 Reference 25 type 113 if (!SS.IsSC(dicBarcode["IDD"], "Сотрудники")) { if (!SS.IsSC(dicBarcode["IDD"], "Секции")) { if (!SS.IsSC(dicBarcode["IDD"], "Принтеры")) { IsObject = false; } } } if (IsObject) { if (SS.CurrentMode == Mode.AcceptedItem) { //Не спрашивайте меня зачем это здесь... DynamicLostFocus(pnlCurrent.GetFocused(), null); } if (SS.ReactionSC(dicBarcode["IDD"])) { View(); if (SS.CurrentMode == Mode.SampleSet && SS.ExcStr != null) { lblAction.Text = SS.ExcStr; } else if (SS.CurrentMode == Mode.SetSelfContorl || SS.CurrentMode == Mode.Set || SS.CurrentMode == Mode.Down || SS.CurrentMode == Mode.FreeDownComplete || SS.CurrentMode == Mode.NewComplectation || SS.CurrentMode == Mode.NewComplectationComplete) { GoodDone(); return; } else if (SS.CurrentMode == Mode.AcceptanceCross && SS.ExcStr != null && (dicBarcode["Type"] == "pallete" || SS.IsSC(dicBarcode["IDD"], "Секции"))) { lblAction.Text = SS.ExcStr; } else if (SS.CurrentMode != Mode.DownComplete) { lblAction.Text = "Ожидание команды"; } } else { if (SS.CurrentMode == Mode.SetSelfContorl || SS.CurrentMode == Mode.Set || SS.CurrentMode == Mode.Down || SS.CurrentMode == Mode.FreeDownComplete || SS.CurrentMode == Mode.NewComplectation || SS.CurrentMode == Mode.NewComplectationComplete) { BadDone(); return; } else { lblAction.Text = SS.ExcStr; } } return; } #endregion } else if (strBarcode.Substring(0, 2) == "26" && dicBarcode["Type"] == "113") { #region EAN 13 Reference 26 type 113 string tmpIDDoc; string tmpDocType; IsObject = SS.GetDoc(dicBarcode["IDD"], out tmpIDDoc, out tmpDocType); if (IsObject) { if (SS.ReactionDoc(dicBarcode["IDD"])) { View(); lblAction.Text = SS.ExcStr; } else { if (SS.CurrentMode == Mode.SetInicialization || SS.CurrentMode == Mode.SetSelfContorl || SS.CurrentMode == Mode.Set || SS.CurrentMode == Mode.Down || SS.CurrentMode == Mode.FreeDownComplete || SS.CurrentMode == Mode.NewComplectation || SS.CurrentMode == Mode.NewComplectationComplete) { BadDone(); return; } else { lblAction.Text = SS.ExcStr; } } return; } #endregion } else if (dicBarcode["Type"] == "part" && (SS.CurrentMode == Mode.Set || SS.CurrentMode == Mode.SampleSet)) { //отcканировали количество деталей //Количество деталей if (SS.ScanPartBarcode(Convert.ToInt32(dicBarcode["count"]))) { GoodDone(); } else { BadDone(); } return; } else if (dicBarcode["Type"] == "pallete") { //отсканированна паллета if (SS.CurrentMode == Mode.Acceptance) { //отcканировали паллету надо запомнить ее ID if (SS.ScanPalletBarcode(strBarcode)) { GoodDone(); } else { BadDone(); } return; } else if (SS.CurrentMode == Mode.AcceptedItem && SS.AcceptedItem.ToMode == Mode.AcceptanceCross) { //если это кроссдокинг, надо проверить а нет ли текущих заказов на этой паллете if (SS.EnterPalletAcceptanceCross(strBarcode)) { lblAction.Text = SS.ExcStr; GoodDone(); } else { lblAction.Text = SS.ExcStr; BadDone(); } return; } else if (SS.CurrentMode == Mode.AcceptanceCross) { //запишем данные в нее string TextQuery = "SELECT " + "Pallets.ID as ID " + "FROM " + "$Спр.ПеремещенияПаллет as Pallets (nolock) " + "WHERE " + "Pallets.$Спр.ПеремещенияПаллет.ШКПаллеты = :Pallet "; // "AND Pallets.$Спр.ПеремещенияПаллет.ФлагОперации = 1 " + // "AND Pallets.$Спр.ПеремещенияПаллет.Адрес0 = :EmptyID "; SQL1S.QuerySetParam(ref TextQuery, "EmptyDate", SQL1S.GetVoidID()); SQL1S.QuerySetParam(ref TextQuery, "Pallet", strBarcode); DataTable DT; SS.ExecuteWithRead(TextQuery, out DT); if (DT.Rows.Count == 0) { lblAction.Text = "Паллета не найдена!"; BadDone(); return; } DataGrid currDG = pnlCurrent.GetDataGridByName("dgAcceptedItems"); currDG.CurrentRowIndex = 0; bool findePallet = false; foreach (DataRow DTdr in DT.Rows) { SS.FPalletID = DTdr["id"].ToString(); SS.FBarcodePallet = strBarcode; SS.PalletAcceptedItem = new RefPalleteMove(SS); SS.PalletAcceptedItem.FoundID(SS.FPalletID); int num = 0; foreach (DataRow dr in SS.AcceptedItems.Rows) { if (dr["PalletID"].ToString() == SS.FPalletID.ToString()) { currDG.CurrentRowIndex = num; findePallet = true; break; } num++; } if (findePallet) { break; } } currDG.Focus(); if (!findePallet) { //не нашли паллету в табличке lblAction.Text = "Нет такой паллеты в принятых товарах!"; SS.FPalletID = ""; SS.FBarcodePallet = ""; SS.PalletAcceptedItem = null; BadDone(); return; } lblAction.Text = "Отсканируйте адресс паллеты!"; GoodDone(); return; } else if (SS.CurrentMode == Mode.Transfer) { //отcканировали паллету надо запомнить ее ШК дальше он нам пригодится SS.FBarcodePallet = strBarcode; } } Mode tmpMode = SS.CurrentMode; if (SS.CurrentMode == Mode.Transfer && Screan == 1) { //Не доспускаем сканирование в экране разнесенных товаров lblAction.Text = "Нет действий с этим штирхкодом в данном экране! Переместитесь в экран ТЕЛЕЖКА!"; return; } if (SS.ReactionBarcode(strBarcode, Screan)) { #region reaction any barcode if (SS.CurrentMode == Mode.AcceptedItem && tmpMode == Mode.AcceptedItem) { if (SS.AcceptedItem.ToMode == Mode.Transfer || SS.AcceptedItem.ToMode == Mode.NewInventory || SS.AcceptedItem.ToMode == Mode.Harmonization || SS.AcceptedItem.ToMode == Mode.HarmonizationPut) { lblAction.Text = "В данном режиме нельзя менять ШК!"; return; } else { if (!SS.ChangeUnitBarcode((int)ViewUnits.Rows[CurrentRowItem]["Coef"], strBarcode, ViewUnits.Rows[CurrentRowItem]["OKEI"].ToString())) { lblAction.Text = SS.ExcStr; return; } } } if (SS.CurrentMode == Mode.SampleSet || SS.CurrentMode == Mode.SamplePut) { lblAction.Text = SS.ExcStr; } View(); if (SS.CurrentMode == Mode.AcceptedItem) { lblAction.Text = SS.ExcStr; } else if (SS.CurrentMode == Mode.SetSelfContorl || SS.CurrentMode == Mode.SetSelfContorl || SS.CurrentMode == Mode.Set || SS.CurrentMode == Mode.Down || SS.CurrentMode == Mode.FreeDownComplete || SS.CurrentMode == Mode.NewComplectation || SS.CurrentMode == Mode.NewComplectationComplete || SS.CurrentMode == Mode.SampleSet) { GoodDone(); return; } else { lblAction.Text = "Ожидание команды"; } #endregion } else { if (dicBarcode["Type"] == "5") { if (SS.CurrentMode == Mode.Transfer || SS.CurrentMode == Mode.NewInventory || SS.CurrentMode == Mode.Acceptance) { if (SS.AddPartyParty(dicBarcode["IDD"], Convert.ToInt32(dicBarcode["LineNo"]))) { View(); } } } else if (dicBarcode["Type"] == "6" && (SS.CurrentMode == Mode.SetSelfContorl || SS.CurrentMode == Mode.Down || SS.CurrentMode == Mode.Loading || SS.CurrentMode == Mode.SampleSet || SS.CurrentMode == Mode.Set || SS.CurrentMode == Mode.FreeDownComplete || SS.CurrentMode == Mode.NewComplectation || SS.CurrentMode == Mode.NewComplectationComplete)) { if (SS.ReactionSC(dicBarcode["ID"], true)) { if (SS.CurrentMode == Mode.Loading) { if (SS.colorSwitcher) { lblAction.ForeColor = Color.DarkGreen; } else { lblAction.ForeColor = Color.Blue; } GoodVoice(); ViewProposal = null; ReView(); Refresh(); } else if (SS.CurrentMode == Mode.SetSelfContorl || SS.CurrentMode == Mode.Set || SS.CurrentMode == Mode.Down || SS.CurrentMode == Mode.FreeDownComplete || SS.CurrentMode == Mode.NewComplectation || SS.CurrentMode == Mode.NewComplectationComplete) { GoodDone(); return; } else { View(); } } else { if (SS.CurrentMode == Mode.Loading) { BadVoice(); lblAction.ForeColor = Color.Red; } else if (SS.CurrentMode == Mode.SetSelfContorl || SS.CurrentMode == Mode.Set || SS.CurrentMode == Mode.Down || SS.CurrentMode == Mode.FreeDownComplete || SS.CurrentMode == Mode.NewComplectation || SS.CurrentMode == Mode.NewComplectationComplete) { BadDone(); return; } } } if (SS.ExcStr == null) { lblAction.Text = "Ожидание команды"; } else { if (SS.CurrentMode == Mode.SetSelfContorl || SS.CurrentMode == Mode.Set || SS.CurrentMode == Mode.Down || SS.CurrentMode == Mode.FreeDownComplete || SS.CurrentMode == Mode.NewComplectation || SS.CurrentMode == Mode.NewComplectationComplete) { BadDone(); return; } lblAction.Text = SS.ExcStr; } } } // ReactionBarcode