Example #1
0
        private void Подобрать_Click(object sender, EventArgs e)
        {
            var Элемент = ПолучитьЭлементИзДерева();

            if (Элемент == null)
            {
                return;
            }
            if (Элемент.ЭтоКорень)
            {
                return;
            }
            if (Элемент.Адрес != ТекущийАдрес)
            {
                Инфо.Ошибка("Необходимо сканировать адрес полки"); return;
            }
            ВводКоличества УзнатьКоличество = new ВводКоличества(string.Format("Введите необходимое количество {0} для подбора из доступных {1}", Элемент.Наименование, Элемент.КоличествоТребуется));
            DialogResult   d = УзнатьКоличество.ShowDialog();

            if (d == DialogResult.OK)
            {
                int Количество = УзнатьКоличество.Количество_;
                if (Количество == 0)
                {
                    Количество = 1;
                }
                if ((Количество + Элемент.КоличествоСобрано) > Элемент.КоличествоТребуется)
                {
                    Инфо.Ошибка(string.Format("Необходимо ввести количество до {0}", Элемент.КоличествоТребуется - Элемент.КоличествоСобрано)); return;
                }
                Элемент.КоличествоСобрано += Количество;
                Элемент.СекундПодбора     += ВзятьВремя();
                ОбработатьКоличествоЭлемента(Элемент);
            }
        }
        private void  учнойВводКоличества()
        {
            var ВыбраннаяСтрока = СписокПеремещения.FocusedItem;

            if (ВыбраннаяСтрока == null)
            {
                return;
            }

            var СтрокаТаблицы = НайтиСтрокуТаблицыПеремещенияПоГуиду(ВыбраннаяСтрока.SubItems[2].Text); // Гуид

            if (СтрокаТаблицы == null)
            {
                return;
            }

            string             ТекстИнструкции    = "Введите необходимое \nколичество товара \nдля перемещения из \nвозможных " + СтрокаТаблицы.Остаток + " шт.";
            ОкноВводКоличества ОкноВводКоличества = new ОкноВводКоличества(ТекстИнструкции, СтрокаТаблицы.Количество, СтрокаТаблицы.Остаток, false);
            DialogResult       d = ОкноВводКоличества.ShowDialog();

            if (d == DialogResult.OK)
            {
                int Количество = ОкноВводКоличества.Количество_;
                if (Количество > СтрокаТаблицы.Остаток)
                {
                    Инфо.Ошибка("Необходимо ввести количество не более " + СтрокаТаблицы.Остаток); return;
                }
                СтрокаТаблицы.Количество = Количество;
                ОбработатьКоличествоСтроки(СтрокаТаблицы);

                // Подтверждаем успешный ввод количества звуком
                аботаСоСканером.Звук.Ок();
            }
        }
        private void КнопкаВойтиНажатие(object sender, EventArgs e)
        {
            string Url = ПараметрыСеанса.СформироватьСсылку();

            if (string.IsNullOrEmpty(Url))
            {
                Инфо.Ошибка("Неверно заполнены параметры сервера!"); return;
            }

            Обмен = new Пакеты("Авторизация");
            Обмен.Соединение.Сервис.Url         = Url;
            Обмен.Соединение.Сервис.Credentials = new NetworkCredential(Сотрудник.Text, Пароль.Text);

            var ОтветСервера = Обмен.ПослатьСтроку(СоединениеВебСервис.ИдентификаторСоединения, ДоступныеФилиалы[свДоступныеФилиалы.Text]);

            if (ОтветСервера == null)
            {
                ТекстОшибки.Text = "Ошибка логина или пароля";
                return;
            }

            СоединениеВебСервис.СтрокаДоступныхРолей  = ОтветСервера[0][0];
            СоединениеВебСервис.ПодборТовараВМеста    = (ОтветСервера[0][1] == "true");
            СоединениеВебСервис.ЭтоТерминал           = (ОтветСервера[0][2] == "true");
            СоединениеВебСервис.ПодборЗаказовКлиентов = (ОтветСервера[0][3] == "true");
            СоединениеВебСервис.Пользователь          = Сотрудник.Text;

            ПараметрыСеанса.Хранилище.ИмяПользователя = Сотрудник.Text;
            ПараметрыСеанса.Сохранить();

            this.DialogResult = DialogResult.OK;
            this.Close();
            return;
        }
        private void ОбработатьВводСервера()
        {
            if (string.IsNullOrEmpty(ПолеВводаСервер.Text))
            {
                Инфо.Ошибка("Не заполнено имя сервера"); return;
            }
            ПараметрыСеанса.Хранилище.Сервер = ПолеВводаСервер.Text;
            string Url = ПараметрыСеанса.СформироватьСсылку();

            if (string.IsNullOrEmpty(Url))
            {
                return;
            }
            //Обмен.Соединение.Сервис.Url = Url;
            if (ПолучитьСписокПользователей())
            {
                ПараметрыСеанса.Сохранить();
            }
            if (Обновление.ПроверитьОбновление())
            {
                Logs.WriteLog("Exit for update " + СоединениеВебСервис.НомерВерсии);
                Application.Exit();
                return;
            }
        }
Example #5
0
        private void  учнойВводКоличества()
        {
            var ВыбраннаяСтрока = СписокВыбора.FocusedItem;

            if (ВыбраннаяСтрока == null)
            {
                return;
            }

            var СтрокаТаблицы = НайтиСтрокуТаблицыПодбораПоГуиду(ВыбраннаяСтрока.SubItems[2].Text); // Гуид

            if (СтрокаТаблицы == null)
            {
                return;
            }

            string             ТекстИнструкции    = "Введите необходимое \nколичество товара \nдля подбора из \nтребуемых " + СтрокаТаблицы.КоличествоТребуется + " шт.";
            ОкноВводКоличества ОкноВводКоличества = new ОкноВводКоличества(ТекстИнструкции, СтрокаТаблицы.КоличествоСобрано, СтрокаТаблицы.КоличествоТребуется, false);
            DialogResult       d = ОкноВводКоличества.ShowDialog();

            if (d == DialogResult.OK)
            {
                int Количество = ОкноВводКоличества.Количество_;
                if (Количество > СтрокаТаблицы.КоличествоТребуется)
                {
                    Инфо.Ошибка("Необходимо ввести количество не более " + СтрокаТаблицы.КоличествоТребуется); return;
                }
                СтрокаТаблицы.КоличествоСобрано = Количество;
                СтрокаТаблицы.СекундПодбора    += ВзятьВремя();
                ОбработатьКоличествоСтроки(СтрокаТаблицы);
            }
        }
        public virtual void ОбработатьСканАдреса(string[][] ОтветСервера)
        {
            var ОтветОперация  = ОтветСервера[0][0];
            var СчитанныйАдрес = ОтветСервера[0][1];



            if (ОтветОперация == "НетЗаданий")
            {
                Инфо.Ошибка("Нет заданий на подтоварку!");
                this.Close();
            }

            НаправлениеДалее = true;

            if (ОтветОперация == "ПодтоваркаВыборЗоны")
            {
                Операция = "ПодтоваркаВыборЗоны";
                Зона     = "";
                яд       = "";
                Секция   = "";
                ОкноВыбораЗаданий_Load(null, new EventArgs());
            }

            if (ОтветОперация == "ПодтоваркаВыборРяда")
            {
                Зона     = СчитанныйАдрес.Substring(0, 1);
                яд       = "";
                Секция   = "";
                Операция = "ПодтоваркаВыборРяда";
                ОкноВыбораЗаданий_Load(null, new EventArgs());
            }

            if (ОтветОперация == "ПодтоваркаВыборСекции")
            {
                Зона     = СчитанныйАдрес.Substring(0, 1);
                яд       = СчитанныйАдрес.Substring(0, 3);
                Секция   = "";
                Операция = "ПодтоваркаВыборСекции";
                ОкноВыбораЗаданий_Load(null, new EventArgs());
            }

            if (ОтветОперация == "ПодтоваркаВыборАдреса")
            {
                Зона     = СчитанныйАдрес.Substring(0, 1);
                яд       = СчитанныйАдрес.Substring(0, 3);
                Секция   = СчитанныйАдрес.Substring(0, 6);
                Операция = "ПодтоваркаВыборАдреса";
                ОкноВыбораЗаданий_Load(null, new EventArgs());
            }

            if (ОтветОперация == "ПодтоваркаАдресВыбран")
            {
                // Переходим в окно подбора
                Form Окно = new ОкноПодтоваркиТоваров(СчитанныйАдрес);
                this.Close();
                Окно.Show();
                return;
            }
        }
Example #7
0
        private void ОбработкаВводаМеста(string _Данные)
        {
            // проверим, что это место

            if (!_Данные.Substring(0, 3).Equals("mst"))
            {
                Инфо.Ошибка("Необходимо сосканировать ШК грузового места.");
                return;
            }

            string ТекущиеМесто = _Данные.Substring(3);

            // проверим, что место еще не добавлено

            if (СписокГрузовыхМест.Contains(ТекущиеМесто))
            {
                // удалить место

                аботаСоСканером.Звук.Ошибка();

                string message = "Внимание! Место уже добавлено. Удалить место?";
                string caption = "Подтверждение";

                MessageBoxButtons buttons = MessageBoxButtons.YesNo;
                DialogResult      result;

                // отобразить MessageBox.

                result = MessageBox.Show(message, caption, buttons, MessageBoxIcon.Question, MessageBoxDefaultButton.Button2);

                if (result == System.Windows.Forms.DialogResult.Yes)
                {
                    СписокГрузовыхМест.Remove(ТекущиеМесто);
                    СписокПогрузки.Items[5].SubItems[1].Text = Convert.ToString(СписокГрузовыхМест.Count);

                    аботаСоСканером.Звук.Ок();
                }

                return;
            }

            // проверка места на сервере

            Cursor.Current = Cursors.WaitCursor;
            ОтветСервера   = Обмен.ПослатьСтроку("ПогрузкаСканированиеГрузовогоМеста", ТекущиеМесто, ТТНСсылка);
            Cursor.Current = Cursors.Default;

            if (ОтветСервера == null)
            {
                return;
            }

            if (ОтветСервера[0][0] == "ДобавитьГрузовоеМесто")
            {
                СписокГрузовыхМест.Add(ТекущиеМесто);
                СписокПогрузки.Items[5].SubItems[1].Text = Convert.ToString(СписокГрузовыхМест.Count);

                аботаСоСканером.Звук.Ок();
            }
        }
Example #8
0
        private void кнопкаВойтиНажатие(object sender, EventArgs e)
        {
            Обмен = new Пакеты("Авторизация");
            var Url = ПараметрыСеанса.ПолучитьПолнуюВебСсылку();

            if (string.IsNullOrEmpty(Url))
            {
                Инфо.Ошибка("Неверно заполнены параметры сервера!"); return;
            }
            Обмен.Соединение.Сервис.Url         = Url;
            Обмен.Соединение.Сервис.Credentials = new NetworkCredential(Сотрудник.Text, Пароль.Text);
            var ОтветАвторизации = Обмен.ПослатьСтроку(СоединениеВебСервис.ИдентификаторСоединения);

            if (ОтветАвторизации == null)
            {
                ТекстОшибки.Text = "Ошибка логина или пароля";
                return;
            }
            СоединениеВебСервис.СтрокаДоступныхРолей = "";
            foreach (var СтрокаОтвета in ОтветАвторизации)
            {
                СоединениеВебСервис.СтрокаДоступныхРолей = СоединениеВебСервис.СтрокаДоступныхРолей + СтрокаОтвета[0];
            }

            ПараметрыСеанса.Хранилище.ИмяПользователя = Сотрудник.Text;
            ПараметрыСеанса.Сохранить();
            ОтветАвторизации  = null;
            this.DialogResult = DialogResult.OK;
            this.Close();
            return;
        }
        public virtual void _Далее()
        {
            if (!Далее.Enabled)
            {
                return;
            }

            ОтветСервера = Обмен.ПослатьСтроку("ПогрузкаВнестиКолвоМестПаллет", ТТНСсылка, ФилиалСсылка, (String.IsNullOrEmpty(КоличествоМест.Text)) ? "0" : КоличествоМест.Text, (String.IsNullOrEmpty(КоличествоПаллет.Text)) ? "0" : КоличествоПаллет.Text);

            if (ОтветСервера == null)
            {
                return;
            }

            try
            {
                if (ОтветСервера[0][0] == "true") // операция прошла успешно
                {
                    Form Окно = new ФормаВыборФилиалаТерминал(НомерТС, ТТННомер, ТТНСсылка);
                    Окно.Show();

                    this.Close();
                    return;
                }
            }
            catch
            {
                Инфо.Ошибка("Не удалось внести кол-во мест, кол-во паллет в ТТН.");
                return;
            }
        }
Example #10
0
        // -----------------------------------------------------------------------------------------------------------------------------------------------------



        // Завершение подбора -----------------------------------------------------------------------------------------------------------------------------------
        private void ЗавершитьЗадания(bool ВыйтиПриЗавершении)
        {
            // Заполняем массив для отправки в 1с
            КоллекцияСтрок.Clear();

            foreach (var Строка in ТаблицаПодбора)
            {
                if (Строка.КоличествоСобрано > 0)
                {
                    ДобавитьСтроку(Строка.Гуид, Строка.КоличествоСобрано.ToString(), "0", Строка.СекундПодбора.ToString());
                }
                if (Строка.КоличествоВычерк > 0)
                {
                    ДобавитьСтроку(Строка.Гуид, Строка.КоличествоВычерк.ToString(), "1", Строка.СекундПодбора.ToString());
                }
            }

            // Если строк для отправки нет, данные на сервер не отсылаем
            var ЕстьСтрокиДляОтправки = КоллекцияСтрок.Count() != 0;

            //if (!ЕстьСтрокиДляОтправки && ВыйтиПриЗавершении)
            if (!ЕстьСтрокиДляОтправки)
            {
                ОтветСервера = Обмен.ПослатьСтроку("Выход");
                this.Close();
                return;
            }

            // Не даем завершить задания, если ДЯ пустая
            if (string.IsNullOrEmpty(ДинамическаяЯчейка))
            {
                Инфо.Ошибка("Не выбрана динамическая ячейка!");
                return;
            }

            Cursor.Current = Cursors.WaitCursor;

            ОтветСервера = Обмен.Послать("ЗавершитьЗадания", КоллекцияСтрок.ToArray());

            Cursor.Current = Cursors.Default;

            //в случае какой либо ошибки при завершении задания показываем кнопку повтора завершения
            if (ОтветСервера == null)
            {
                КнопкаПовторитьЗавершение.Visible = true;
            }
            else
            {
                if (ВыйтиПриЗавершении)
                {
                    this.Close();
                    return;
                }
                else
                {
                    ОбработатьОтветСервераПриЗавершении(ОтветСервера);
                }
            }
        }
Example #11
0
        private void ОбработкаВводаСотрудника(string _Данные)
        {
            // проверим, что это сотрудник

            if (!_Данные.Substring(0, 3).Equals("vis"))
            {
                Инфо.Ошибка("Необходимо сканировать ШК сотрудника.");
                return;
            }

            string СотрудникКод = _Данные.Substring(3);

            // проверим, что сотрудник еще не добавлен

            foreach (ListViewItem item in СписокСотрудников.Items)
            {
                if (String.Equals(item.SubItems[1].Text, СотрудникКод))
                {
                    Инфо.Ошибка("Сотрудник уже присутствует в списке.");

                    // установить курсор на сотрудника, которого добавляем повторно

                    item.Focused  = true;
                    item.Selected = true;
                    return;
                }
            }

            // проверка сотрудника на сервере

            Cursor.Current = Cursors.WaitCursor;
            ОтветСервера   = Обмен.ПослатьСтроку("ВыборСотрудниковСканирование", СотрудникКод);
            Cursor.Current = Cursors.Default;

            if (ОтветСервера == null)
            {
                return;
            }

            if (ОтветСервера[0][0] == "ДобавитьСотрудника")
            {
                // добавим строку и спозиционируемся на ней

                string СотрудникСсылка       = ОтветСервера[0][1];
                string СотрудникНаименование = ОтветСервера[0][2];

                string[] row         = { СотрудникНаименование, СотрудникКод };
                var      НоваяСтрока = СписокСотрудников.Items.Add(new ListViewItem(row));

                НоваяСтрока.Focused  = true;
                НоваяСтрока.Selected = true;

                Список.Добавить(СотрудникНаименование, СотрудникКод, СотрудникСсылка);

                // подать сигнал о успешном добавлении

                аботаСоСканером.Звук.Ок();
            }
        }
Example #12
0
        private void ОбработкаВводаМеста(string _Данные)
        {
            // проверим, что это место

            if (!_Данные.Substring(0, 3).Equals("mst"))
            {
                Инфо.Ошибка("Необходимо сосканировать ШК грузового места.");
                return;
            }

            string ТекущееМесто = _Данные.Substring(3);

            // проверим, что место еще не добавлено

            foreach (var tmpФилиал in Филиалы.Список)
            {
                foreach (var tmpМесто in tmpФилиал.ГрузовыеМеста)
                {
                    if (tmpМесто == ТекущееМесто)
                    {
                        // предложить удалить добавленное место
                        // ...

                        Инфо.Ошибка("Грузовое место уже присутствует в списке.");
                        return;
                    }
                }
            }

            // проверка места на сервере
            Cursor.Current = Cursors.WaitCursor;
            ОтветСервера   = Обмен.ПослатьСтроку("ОбработкаТТН_Сканирование", ТТНСсылка, ТекущееМесто);
            Cursor.Current = Cursors.Default;

            if (ОтветСервера == null)
            {
                return;
            }

            // обработка ответа сервера

            foreach (string[] str in ОтветСервера)
            {
                if (str[0] == "Ждем")
                {
                    Филиалы.ДобавитьГрузовоеМесто(str[1], ТекущееМесто);

                    аботаСоСканером.Звук.Ок();
                }
                else
                {
                    Филиалы.Добавить("", "НЕ ОПРЕДЕЛЕН", "0", "0");

                    Филиалы.ДобавитьГрузовоеМесто("", ТекущееМесто);

                    аботаСоСканером.Звук.Ошибка();
                }
            }
        }
Example #13
0
        // ------------------------------------------------------------------------------------------------------------------------------------------------------


        // Сканирование товаров ---------------------------------------------------------------------------------------------------------------------------------
        private void ОбработатьСканТовара(string СтрокаСкан)
        {
            string Код = "";

            // Проверка на ЕАН8 и преобразование к коду по базе
            if (СтрокаСкан.Length == 8)
            {
                var ЕАН8 = ОбщиеФункции.ПроверитьЕАН8(СтрокаСкан);

                if (ЕАН8) // Если символ контрольной суммы верный, преобразуем ЕАН8 к семизначному коду по базе
                {
                    Код = СтрокаСкан.Substring(0, 7);
                }
            }

            var МассивТоваров = НайтиТоварПоЕАН(СтрокаСкан, Код);

            if (МассивТоваров.Count() == 0)
            {
                Инфо.Ошибка("Считанного товара нет в заданиях!");
                return;
            }

            string ВыбранныйТовар = null;

            if (МассивТоваров.Count() > 1)
            {
                ВыбранныйТовар = ВыборТовараИзМножества.ВыбратьТоварИзМножества(МассивТоваров);
            }
            else
            {
                ВыбранныйТовар = МассивТоваров.FirstOrDefault()[2];
            }

            if (ВыбранныйТовар == null)
            {
                return;
            }

            var СтрокаТаблицы = НайтиСтрокуТаблицыПодбораПоГуиду(ВыбранныйТовар); // Гуид

            if (СтрокаТаблицы == null)
            {
                Инфо.Ошибка("Считанного товара нет в заданиях!");
                return;
            }

            if (СтрокаТаблицы.КоличествоСобрано == СтрокаТаблицы.КоличествоТребуется || СтрокаТаблицы.КоличествоВычерк > 0)
            {
                Инфо.Ошибка("Необходимо ввести количество не более " + СтрокаТаблицы.КоличествоТребуется.ToString());
                return;
            }

            СтрокаТаблицы.КоличествоСобрано += 1;
            СтрокаТаблицы.СекундПодбора     += ВзятьВремя();
            ОбработатьКоличествоСтроки(СтрокаТаблицы);
        }
Example #14
0
        private void ОбработатьСканТовара(string СтрокаСкан)
        {
            string Код = "";

            // Проверка на ЕАН8 и преобразование к коду по базе
            if (СтрокаСкан.Length == 8)
            {
                var ЕАН8 = ОбщиеФункции.ПроверитьЕАН8(СтрокаСкан);

                if (ЕАН8) // Если символ контрольной суммы верный, преобразуем ЕАН8 к семизначному коду по базе
                {
                    Код = СтрокаСкан.Substring(0, 7);
                }
            }

            var МассивТоваров = НайтиТоварПоЕАН(СтрокаСкан, Код);

            if (МассивТоваров.Count() == 0)
            {
                Инфо.Ошибка("Выбранного товара нет на остатках адреса!");
                return;
            }

            string ВыбранныйТовар = null;

            if (МассивТоваров.Count() > 1)
            {
                ВыбранныйТовар = ВыборТовараИзМножества.ВыбратьТоварИзМножества(МассивТоваров);
            }
            else
            {
                ВыбранныйТовар = МассивТоваров.FirstOrDefault()[2];
            }

            if (ВыбранныйТовар == null)
            {
                return;
            }

            var СтрокаТаблицы = НайтиСтрокуТаблицыПеремещенияПоГуиду(ВыбранныйТовар); // Гуид

            if (СтрокаТаблицы == null)
            {
                Инфо.Ошибка("Выбранного товара нет на остатках адреса!");
                return;
            }

            if (СтрокаТаблицы.Количество == СтрокаТаблицы.КоличествоОстатокАдреса)
            {
                Инфо.Ошибка("Недостаточно товара на полке.");
                return;
            }

            СтрокаТаблицы.Количество += 1;
            ОбработатьКоличествоСтроки(СтрокаТаблицы);
        }
        private void ЗавершениеПеремещения()
        {
            // Не даем завершить задания, если адрес получатель не выбран
            if (string.IsNullOrEmpty(АдресПолучатель))
            {
                Инфо.Ошибка("Не выбран адрес получатель!");
                return;
            }

            // Заполняем массив для отправки в 1с
            КоллекцияСтрок.Clear();

            ДобавитьСтроку("АдресОтправитель", АдресОтправитель);
            ДобавитьСтроку("АдресПолучатель", АдресПолучатель);
            ДобавитьСтроку("ЭтоДинамическаяЯчейка", ЭтоДинамическаяЯчейка == true ? "Истина" : "Ложь");

            bool ЕстьСтрокиДляОтправки = false;

            foreach (var Строка in ТаблицаПеремещения)
            {
                if (Строка.Количество > 0)
                {
                    ЕстьСтрокиДляОтправки = true;
                    ДобавитьСтроку(Строка.Гуид, Строка.Количество.ToString());
                }
            }

            // Если строк для отправки нет, данные на сервер не отсылаем
            if (!ЕстьСтрокиДляОтправки)
            {
                Инфо.Ошибка("Не сосканированы товары для перемещения!");
                return;
            }

            Cursor.Current = Cursors.WaitCursor;

            ОтветСервера = Обмен.Послать("ЗавершитьЗадания", КоллекцияСтрок.ToArray());

            Cursor.Current = Cursors.Default;

            //в случае какой либо ошибки при завершении ничего не делаем, даем возможность завершить повторно
            if (ОтветСервера == null)
            {
                return;
            }

            if (ОтветСервера[0][0] == "НетТоваров")
            {
                аботаСоСканером.Звук.Ок();
                this.Close();
                return;
            }

            ОкноПеремещенияТоваров_Load(null, new EventArgs());
        }
        private void ПрибавитьКоличество(ListViewItem НайденСкан, int Прибавить, bool Прибавлять)
        {
            int Сканировано = int.Parse(НайденСкан.SubItems[1].Text);
            int Количество  = int.Parse(НайденСкан.SubItems[0].Text);

            Сканировано = Прибавлять ? Сканировано + Прибавить : Прибавить;
            if (ПроверитьКоличество(Сканировано, Количество))
            {
                Инфо.Ошибка("Нехватает количества"); return;
            }
            НайденСкан.SubItems[1].Text = String.Format("{0}", Сканировано);
        }
Example #17
0
        public void _Далее()
        {
            string Адрес = "adr" + ВводАдреса.Text;

            if (Адрес.Length == 10)
            {
                СканАдреса(Адрес);
                return;
            }
            {
                Инфо.Ошибка("Адрес введен неверно!");
            }
        }
Example #18
0
        private void ОбработкаВводаМеста(string _Данные)
        {
            // проверим, что это место

            if (!_Данные.Substring(0, 3).Equals("mst"))
            {
                Инфо.Ошибка("Необходимо сосканировать ШК грузового места.");
                return;
            }

            string ТекущиеМесто = _Данные.Substring(3);

            // проверим, что место еще не добавлено

            foreach (ListViewItem item in СписокГрузовыхМест.Items)
            {
                if (String.Equals(item.SubItems[0].Text, ТекущиеМесто))
                {
                    Инфо.Ошибка("Грузовое место уже присутствует в списке.");

                    // установить курсор на место, которое добавляем повторно
                    СписокГрузовыхМест.EnsureVisible(item.Index);

                    item.Focused = true;

                    return;
                }
            }

            // проверка места на сервере

            Cursor.Current = Cursors.WaitCursor;
            ОтветСервера   = Обмен.ПослатьСтроку("ПогрузкаСканированиеГрузовогоМеста", ТекущиеМесто, ТТНСсылка, ФилиалСсылка);
            Cursor.Current = Cursors.Default;

            if (ОтветСервера == null)
            {
                return;
            }

            if (ОтветСервера[0][0] == "ГрузовоеМестоДобавлено")
            {
                int iter = СписокГрузовыхМест.Items.Count + 1;

                string[] row = { iter.ToString(), ТекущиеМесто, ОтветСервера[0][1] };

                СписокГрузовыхМест.Items.Add(new ListViewItem(row));
                аботаСоСканером.Звук.Ок();
            }
        }
Example #19
0
        private void ФормаВыборФилиалаТерминал_Load(object sender, EventArgs e)
        {
            // заполним подсказку пользователю

            ПодсказкаПользователю.Text = НомерТС + "\nВЫБЕРИТЕ ФИЛИАЛ ПОГРУЗКИ";

            // получить список филиалов по ТТН

            Cursor.Current = Cursors.WaitCursor;
            ОтветСервера   = Обмен.ПослатьСтроку("ВыборФилиалаПолучитьСписокФилиалов", ТТНСсылка);
            Cursor.Current = Cursors.Default;

            if (ОтветСервера == null)
            {
                return;
            }

            // заполним список Филиалов

            try
            {
                foreach (string[] str in ОтветСервера)
                {
                    string[]     row         = { str[0], str[1], str[2] };
                    ListViewItem НоваяСтрока = СписокФилиалов.Items.Add(new ListViewItem(row));

                    if (Convert.ToInt32(НоваяСтрока.SubItems[2].Text) > 0)
                    {
                        НоваяСтрока.BackColor = Color.LightGreen;
                    }
                }
            }
            catch
            {
                Инфо.Ошибка("Нет филиалов на погрузку.");
                this.Close();
                return;
            }

            // установим курсор в первую строку

            if (СписокФилиалов.Items.Count > 0)
            {
                СписокФилиалов.Focus();

                СписокФилиалов.Items[0].Focused = true;
            }
        }
        public static bool ПроверитьОбновление()
        {
            // Получаем параметры сеанса (сервер) и соответствующую веб ссылку
            Настройки ПараметрыСеанса = new Настройки();

            ПараметрыСеанса.Загрузить();
            string Url = ПараметрыСеанса.СформироватьСсылку();

            if (string.IsNullOrEmpty(Url))
            {
                return(false);
            }
            Пакеты Обмен = new Пакеты("");

            Обмен.Соединение.Сервис.Url = Url;

            Инфо.ИмяЭтогоФайла = Assembly.GetCallingAssembly().ManifestModule.FullyQualifiedName;
            string ИмяЭтогоФайла = Инфо.ИмяЭтогоФайла;

            try
            {
                Logs.WriteLog("start update check " + СоединениеВебСервис.НомерВерсии);

                Byte[] Прошивка = Обмен.UpdateFirmware();
                if (Прошивка == null || Прошивка.Count() == 0)
                {
                    return(false);
                }
                Logs.WriteLog("is there ");

                string НовыйИсполняемыйФайл = Настройки.ПолучитьПутьКЛокальномуФайлу(СкладскойУчетОбновление);
                СохранитьВФайл(ref НовыйИсполняемыйФайл, Прошивка);
                if (!String.IsNullOrEmpty(Инфо.АргументЗапуска))
                {
                    Инфо.Ошибка("Обновленная версия не совпадает с версией в хранилище, обратитесь в ИТ отдел");
                    return(false);
                }
                Logs.WriteLog("Start prog");

                var pr = new Process();
                pr.StartInfo.FileName  = НовыйИсполняемыйФайл;
                pr.StartInfo.Arguments = "\"" + ИмяЭтогоФайла + "\"";
                pr.Start();
                return(true);
            }
            catch (Exception) { }// System.Windows.Forms.MessageBox.Show(e.Message); }
            return(false);
        }
        public virtual void _Далее()
        {
            // Запрет ручного выбора адреса
            if (Операция == "ПодборВыборАдреса")
            {
                return;
            }

            var ВыбраннаяСтрока = СписокВыбора.FocusedItem;

            if (ВыбраннаяСтрока == null)
            {
                Инфо.Ошибка("Не выбрано ни одной строки"); return;
            }

            if (Операция == "ПодборВыборФилиала")
            {
                ФилиалГуид = ВыбраннаяСтрока.SubItems[3].Text;
                Филиал     = ВыбраннаяСтрока.Text;
                Операция   = "ПодборВыборРяда";
                ОкноВыбораЗаданий_Load(null, new EventArgs());
                return;
            }
            if (Операция == "ПодборВыборРяда")
            {
                яд       = ВыбраннаяСтрока.Text;
                Операция = "ПодборВыборСекции";
                ОкноВыбораЗаданий_Load(null, new EventArgs());
                return;
            }
            if (Операция == "ПодборВыборСекции")
            {
                // Запрет на выбор секций по середине ряда
                if (ВыбраннаяСтрока.Index != 0 && ВыбраннаяСтрока.Index != СписокВыбора.Items.Count - 1)
                {
                    Инфо.Ошибка("Разрешен выбор только крайних секций ряда!");
                    return;
                }

                Секция   = ВыбраннаяСтрока.Text;
                Операция = "ПодборВыборАдреса";
                ОкноВыбораЗаданий_Load(null, new EventArgs());
                return;
            }
        }
        public virtual void _Далее()
        {
            var ВыбраннаяСтрока = СписокВыбора.FocusedItem;

            if (ВыбраннаяСтрока == null)
            {
                Инфо.Ошибка("Не выбрано ни одной строки"); return;
            }
            string ВыбранноеЗначение = НомерКонокиГУИД < 1?ВыбраннаяСтрока.Text:ВыбраннаяСтрока.SubItems[НомерКонокиГУИД - 1].Text;

            Последовательность.ОтветСервера = Обмен.ПослатьСтроку(ВыбранноеЗначение, Последовательность.ТекущееОкно, "РучнойВыбор");
            if (Последовательность.ОтветСервера == null)
            {
                return;                                          // в случае ошибки остаться в этом же окне
            }
            this.DialogResult = DialogResult.Retry;
            this.Close();
        }
Example #23
0
        private void ЗаполнитьСписокТТН()
        {
            // очистим список

            СписокТТН.Items.Clear();

            // получим список ТТН

            Cursor.Current = Cursors.WaitCursor;
            ОтветСервера   = Обмен.ПослатьСтроку("ВыборТТНПолучитьСписокТТН");
            Cursor.Current = Cursors.Default;

            if (ОтветСервера == null)
            {
                return;
            }

            // заполним список ТТН

            try
            {
                foreach (string[] str in ОтветСервера)
                {
                    string[] row = { str[0], str[1], str[2] };
                    СписокТТН.Items.Add(new ListViewItem(row));
                }
            }
            catch
            {
                Инфо.Ошибка("Нет заданий на погрузку.");
                this.Close();
                return;
            }

            // установим курсор в первую строку

            if (СписокТТН.Items.Count > 0)
            {
                СписокТТН.Focus();

                СписокТТН.Items[0].Focused  = true;
                СписокТТН.Items[0].Selected = true;
            }
        }
Example #24
0
        private void НайтиГрузовыеМеста()
        {
            if (ТекстДляПоискаМест.Text.Length <= 4)
            {
                Инфо.Ошибка("Укажите более 4-х подряд цифр номера места.");
                return;
            }

            // очистить список найденных грузовых мест

            СписокНайденныхГрузовыхМест.Items.Clear();

            // передать условие поиска на сервер

            Cursor.Current = Cursors.WaitCursor;
            ОтветСервера   = Обмен.Послать("ПоискГрузовыхМест", Обмен.ПодготовитьСтроку(ТекстДляПоискаМест.Text));
            Cursor.Current = Cursors.Default;

            if (ОтветСервера == null)
            {
                return;
            }

            // добавляем найденные места

            foreach (string[] str in ОтветСервера)
            {
                string[] row = { str[0] };
                СписокНайденныхГрузовыхМест.Items.Add(new ListViewItem(row));
            }

            // переведем фокус на список мест

            if (СписокНайденныхГрузовыхМест.Items.Count > 0)
            {
                СписокНайденныхГрузовыхМест.Focus();

                // сфокусируемся на первой строке в списке и выделим ее

                СписокНайденныхГрузовыхМест.Items[0].Focused  = true;
                СписокНайденныхГрузовыхМест.Items[0].Selected = true;
            }
        }
Example #25
0
        private void Вычерк_Click(object sender, EventArgs e)
        {
            var Элемент = ПолучитьЭлементИзДерева();

            if (Элемент == null)
            {
                return;
            }
            if (Элемент.ЭтоКорень)
            {
                return;
            }
            if (Элемент.Адрес != ТекущийАдрес)
            {
                Инфо.Ошибка("Необходимо сканировать адрес полки"); return;
            }
            Элемент.КоличествоВычерк = Элемент.КоличествоТребуется - Элемент.КоличествоСобрано;
            Элемент.СекундВычерк    += ВзятьВремя();
            ОбработатьКоличествоЭлемента(Элемент);
        }
Example #26
0
        public virtual void _Далее()
        {
            var ВыбраннаяСтрока = Дерево.SelectedNode;

            if (ВыбраннаяСтрока == null)
            {
                Инфо.Ошибка("Не выбрано ни одной строки"); return;
            }
            string ВыбранноеЗначение = ВыбраннаяСтрока.Tag as string;

            if (ВыбранноеЗначение == null)
            {
                Инфо.Ошибка("Выбрана ошибочная строка"); return;
            }
            Последовательность.ОтветСервера = Обмен.ПослатьСтроку(ВыбранноеЗначение, Последовательность.ТекущееОкно, "РучнойВыбор");
            if (Последовательность.ОтветСервера == null)
            {
                return;                                          // в случае ошибки остаться в этом же окне
            }
            this.DialogResult = DialogResult.Retry;
            this.Close();
        }
Example #27
0
        public virtual void _Далее()
        {
            // Запрет ручного выбора адреса
            if (Операция == "ИнвентаризацияВыборАдреса")
            {
                return;
            }

            var ВыбраннаяСтрока = СписокВыбора.FocusedItem;

            if (ВыбраннаяСтрока == null)
            {
                Инфо.Ошибка("Не выбрано ни одной строки"); return;
            }

            НаправлениеДалее = true;

            if (Операция == "ИнвентаризацияВыборЗоны")
            {
                Зона     = ВыбраннаяСтрока.Text;
                Операция = "ИнвентаризацияВыборРяда";
                ОкноВыбораЗаданий_Load(null, new EventArgs());
                return;
            }
            if (Операция == "ИнвентаризацияВыборРяда")
            {
                яд       = ВыбраннаяСтрока.Text;
                Операция = "ИнвентаризацияВыборСекции";
                ОкноВыбораЗаданий_Load(null, new EventArgs());
                return;
            }
            if (Операция == "ИнвентаризацияВыборСекции")
            {
                Секция   = ВыбраннаяСтрока.Text;
                Операция = "ИнвентаризацияВыборАдреса";
                ОкноВыбораЗаданий_Load(null, new EventArgs());
                return;
            }
        }
Example #28
0
        public virtual void _Далее()
        {
            var ВыбраннаяСтрока = ТаблицаДокументов.FocusedItem;

            if (ВыбраннаяСтрока == null)
            {
                Инфо.Ошибка("Не выбрано ни одной строки"); return;
            }

            // Запрет на выбор документов, кроме первого
            if (ВыбраннаяСтрока.Index != 0)
            {
                Инфо.Ошибка("Разрешен выбор только первого документа в очереди!");
                return;
            }

            string Н_Гуид = ВыбраннаяСтрока.SubItems[3].Text;

            ОтветСервера = Обмен.ПослатьСтроку(Н_Гуид);

            if (ОтветСервера == null)
            {
                return;                       // в случае ошибки остаться в этом же окне
            }
            if (ОтветСервера[0][0] == "ЗаданияЗаписаны")
            {
                Form Окно = new ОкноЗаказовКлиента();
                this.Close();
                Окно.ShowDialog();
                return;
            }

            if (ОтветСервера[0][0] == "ЗаданиеВзято")
            {
                Инфо.Ошибка("Задания по выбранному документу уже взяты!");
                ОкноВыбораЗаказовКлиента_Load(null, new EventArgs());
                return;
            }
        }
Example #29
0
        private void СканАдреса(string СтрокаСкан)
        {
            Cursor.Current = Cursors.WaitCursor;

            ОтветСервера = Обмен.ПослатьСтроку(СтрокаСкан);

            Cursor.Current = Cursors.Default;

            if (ОтветСервера == null)
            {
                return;
            }

            if (ОтветСервера[0][0] == "НетТоваров")
            {
                Инфо.Ошибка("На адресе " + ОтветСервера[0][1] + " нет товаров!");
                return;
            }

            Form Окно = new ОкноПеремещенияТоваров(ОтветСервера);

            this.Close();
            Окно.Show();
        }
        public string[][] Послать(string Доп, string[][] СписокСтрок)
        {
            try
            {
                var ОтветСервера = Соединение.Сервис.Обмен(Операция, Доп, СписокСтрок);
                if (ОтветСервера == null)
                {
                    return(null);
                }
                var ПоискОшибок = from СтрокаКомманды in ОтветСервера where СтрокаКомманды[0] == "Обновить" || СтрокаКомманды[0] == "Ошибка" || СтрокаКомманды[0] == "ЗавершитьСеанс" select СтрокаКомманды;
                if (ПоискОшибок.Count() == 0)
                {
                    return(ОтветСервера);
                }
                string ТекстОшибок    = "";
                bool   ЗавершитьСеанс = false;
                bool   Обновить       = false;
                foreach (string[] ОшибкаТекст in ПоискОшибок)
                {
                    if (ОшибкаТекст[0] == "Обновить")
                    {
                        Обновить = true;
                    }
                    if (ОшибкаТекст[0] == "ЗавершитьСеанс")
                    {
                        ЗавершитьСеанс = true;
                    }
                    ТекстОшибок = ТекстОшибок + ОшибкаТекст[1];
                }
                Инфо.Ошибка(ТекстОшибок);
                if (Обновить)
                {
                    if (Обновление.ПроверитьОбновление())
                    {
                        Logs.WriteLog("Exit " + СоединениеВебСервис.НомерВерсии);

                        Application.Exit();
                        return(null);
                    }
                }
                if (ЗавершитьСеанс)
                {
                    Application.Exit();
                }

                return(null);// ОтветСервера;
            }
            catch (System.Net.WebException eWeb)
            {
                System.Net.HttpWebResponse Resp = eWeb.Response as System.Net.HttpWebResponse;
                string ErrorText = (Resp == null) ? eWeb.Status.ToString() : Resp.StatusDescription;
                if (ErrorText.Contains("Unauthorized"))
                {
                    Инфо.Ошибка("Ошибка соединения, не удалось пройти авторизацию на сервере.");
                }
                else
                {
                    Инфо.Ошибка("Ошибка сети: " + eWeb.Message + ", " + ErrorText + ", " + Соединение.Сервис.Url.ToString());
                }
                return(null);
            }
            catch (System.Exception e)
            {
                Инфо.Ошибка("Message" + System.Environment.NewLine + e.Message + System.Environment.NewLine + "InnerException" + System.Environment.NewLine + e.InnerException + System.Environment.NewLine + "StackTrace" + System.Environment.NewLine + e.StackTrace);
                return(null);
            }
        }