Exemple #1
0
 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;
 }
Exemple #2
0
        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);
        }
Exemple #3
0
        } // 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
Exemple #4
0
        } // 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
Exemple #5
0
        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;
            }
        }
Exemple #6
0
        } // 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
Exemple #7
0
        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