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;
            }
        }
Ejemplo n.º 2
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;
                }
                СтрокаТаблицы.КоличествоСобрано = Количество;
                СтрокаТаблицы.СекундПодбора    += ВзятьВремя();
                ОбработатьКоличествоСтроки(СтрокаТаблицы);
            }
        }
Ejemplo n.º 3
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;
        }
        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;
            }
        }
        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;
            }
        }
Ejemplo n.º 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);

                аботаСоСканером.Звук.Ок();
            }
        }
        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;
                }
                СтрокаТаблицы.Количество = Количество;
                ОбработатьКоличествоСтроки(СтрокаТаблицы);

                // Подтверждаем успешный ввод количества звуком
                аботаСоСканером.Звук.Ок();
            }
        }
Ejemplo n.º 9
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;
                }
                Элемент.КоличествоСобрано += Количество;
                Элемент.СекундПодбора     += ВзятьВремя();
                ОбработатьКоличествоЭлемента(Элемент);
            }
        }
Ejemplo n.º 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
                {
                    ОбработатьОтветСервераПриЗавершении(ОтветСервера);
                }
            }
        }
Ejemplo n.º 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;

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

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

                аботаСоСканером.Звук.Ок();
            }
        }
Ejemplo n.º 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");

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

                    аботаСоСканером.Звук.Ошибка();
                }
            }
        }
        private void ОсновноеМеню_KeyDown(object sender, KeyEventArgs e)
        {
            var Панель = Табулятор.TabPages[Табулятор.SelectedIndex].Controls;

            if (аботаСоСканером.НажатаКлавишаСкан(e))
            {
                string СтрокаСкан = аботаСоСканером.Scan();
                if (СтрокаСкан.Length != 0)
                {
                    e.Handled     = true;
                    учнойКод.Text = СтрокаСкан;
                    Инфо.ПолучениеИнформации(СтрокаСкан, СписокИнформации, Табулятор);
                }
                return;
            }

            foreach (var ЭлементФормы in Панель)
            {
                if (ЭлементФормы is Button)
                {
                    Button Кнопка = (Button)ЭлементФормы;
                    if (Кнопка.Enabled && (char)Кнопка.Text[1] == (char)e.KeyValue)
                    {
                        Кнопка.Focus();
                        ПриНажатииНаКнопку(Кнопка, new EventArgs());
                        return;
                    }
                }
            }

            if (!учнойКод.Focused)
            {
                if ((e.KeyCode == System.Windows.Forms.Keys.D1))
                {
                    Табулятор.SelectedIndex = 0;
                }
                if ((e.KeyCode == System.Windows.Forms.Keys.D2))
                {
                    Табулятор.SelectedIndex = 1;
                }
            }
            else
            {
                if ((e.KeyCode == System.Windows.Forms.Keys.Enter) || ((int)e.KeyCode == 119))
                {
                    ИнформацияВРучномРежиме();
                }
            }

            if ((e.KeyCode == System.Windows.Forms.Keys.Left))
            {
                Табулятор.SelectedIndex = 0;
            }
            if ((e.KeyCode == System.Windows.Forms.Keys.Right))
            {
                Табулятор.SelectedIndex = 1;
            }
        }
        private void ОкноПеремещенияТоваров_KeyDown(object sender, KeyEventArgs e)
        {
            if (аботаСоСканером.НажатаКлавишаСкан(e))
            {
                string СтрокаСкан = аботаСоСканером.Scan();
                if (СтрокаСкан.Length == 0)
                {
                    return;
                }

                e.Handled = true;
                // Скан в поиске
                if (Таб.SelectedIndex == 1)
                {
                    Инфо.ПолучениеИнформации(СтрокаСкан, СписокИнформации, Таб);
                    return;
                }

                // Скан адреса
                if (СтрокаСкан.ToLower().StartsWith("adr") && СтрокаСкан.Length == 10)
                {
                    ОбработатьСканАдреса(СтрокаСкан);
                    return;
                }

                // Скан товара
                ОбработатьСканТовара(СтрокаСкан);
                return;
            }

            if (e.KeyCode == System.Windows.Forms.Keys.F8 || e.KeyCode == System.Windows.Forms.Keys.Enter)
            {
                e.Handled = true;
                учнойВводКоличества();
            }

            if (аботаСоСканером.НажатаПраваяПодэкраннаяКлавиша(e))
            {
                _Далее();
            }

            if (аботаСоСканером.НажатаЛеваяПодэкраннаяКлавиша(e))
            {
                _Назад();
            }

            if ((e.KeyCode == System.Windows.Forms.Keys.Left))
            {
                Таб.SelectedIndex = 0;
                e.Handled         = true;
            }
            if ((e.KeyCode == System.Windows.Forms.Keys.Right))
            {
                Таб.SelectedIndex = 1;
                e.Handled         = true;
            }
        }
Ejemplo n.º 15
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;
            СтрокаТаблицы.СекундПодбора     += ВзятьВремя();
            ОбработатьКоличествоСтроки(СтрокаТаблицы);
        }
 private void ИнформацияВРучномРежиме()
 {
     if (учнойКод.Text.Length > 3)
     {
         Инфо.ПолучениеИнформации(учнойКод.Text, СписокИнформации, Табулятор);
         учнойКод.Text = "";
         СписокИнформации.Focus();
     }
 }
Ejemplo n.º 17
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}", Сканировано);
        }
        //-----------------методы для переопределения в наследуемом классе других операций---------
        public virtual ListViewItem ДобавитьТоварВСписок(string[][] Ответ)
        {
            if (!СписокПустой)
            {
                return(null);              //Случай с А01-01-1 идем добавлять товар
            }
            var Выборка = from string[] строка in Ответ where строка[0] == "Товар" select строка;

            if (Выборка.Count() > 1)
            {
                Выборка = ВыбратьТоварИзМножества_(Выборка, Ответ);
                if (Выборка == null)
                {
                    return(null);
                }
            }
            string[] Строка = Выборка.FirstOrDefault();
            if (Строка == null)
            {
                Инфо.ОшибкаТоварНеНайден(); return(null);
            }

            ListViewItem НоваяСтрока = new ListViewItem();

            НоваяСтрока.Text = Строка[4];
            НоваяСтрока.SubItems.Add("0");
            for (int i = 2; i < Строка.Count(); i++)
            {
                try
                {
                    if (i == 4)
                    {
                        НоваяСтрока.SubItems.Add(Строка[2]);
                    }
                    else
                    {
                        НоваяСтрока.SubItems.Add(Строка[i]);
                    }
                }
                catch (Exception e)
                {
                    НоваяСтрока.SubItems.Add(e.Message.ToString());
                }
            }

            СписокПеремещения.Items.Add(НоваяСтрока);
            НоваяСтрока.Selected = true;

            return(НоваяСтрока);

            //return null;
        }
Ejemplo n.º 21
0
        public void _Далее()
        {
            string Адрес = "adr" + ВводАдреса.Text;

            if (Адрес.Length == 10)
            {
                СканАдреса(Адрес);
                return;
            }
            {
                Инфо.Ошибка("Адрес введен неверно!");
            }
        }
Ejemplo n.º 22
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));
                аботаСоСканером.Звук.Ок();
            }
        }
Ejemplo n.º 23
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);
        }
Ejemplo n.º 25
0
        private void СканированиеШК(KeyEventArgs e)
        {
            string СтрокаСкан = аботаСоСканером.Scan();

            if (СтрокаСкан.Length != 0)
            {
                e.Handled = true;
                if (Таб.SelectedIndex == 0)
                {
                    СканАдреса(СтрокаСкан);
                    return;
                }

                Инфо.ПолучениеИнформации(СтрокаСкан, СписокИнформации, Таб);
            }
        }
        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();
        }
        private void СканТовара(string СтрокаСкан)
        {
            ListViewItem НайденСкан = НайтиСкан(СтрокаСкан);

            if (НайденСкан == null && СтрокаСкан.Length == 8)
            {
                НайденСкан = НайтиСкан(СтрокаСкан.Substring(0, 7));                                              //скан кода товара по базе без контрольной суммы, костыль
            }
            if (НайденСкан == null)
            {
                Обмен = new Пакеты(Последовательность.Операция + "НайтиТовар");
                var Ответ = Обмен.ПослатьСтроку(СтрокаСкан);
                if (Ответ == null)
                {
                    return;
                }
                string Поиск = (from string[] строка in Ответ where строка[0] == "Товар" select строка[1]).FirstOrDefault();
                if (Поиск == null)
                {
                    Инфо.ОшибкаТоварНеНайден(); return;
                }
                НайденСкан = НайтиСкан(Поиск);
                if (НайденСкан != null)
                {
                    try
                    {
                        НайденСкан.SubItems.Add(СтрокаСкан);
                    }
                    catch (Exception) { }
                }
                else
                {
                    НайденСкан = ДобавитьТоварВСписок(Ответ);
                }
            }
            if (НайденСкан == null)
            {
                Инфо.ОшибкаТоварНеНайден(); return;
            }

            СделатьВидимым(НайденСкан);
            ПоказатьИнфооТоваре(НайденСкан);
            ПрибавитьКоличество(НайденСкан, 1, true);
        }
Ejemplo n.º 29
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;
            }
        }
Ejemplo n.º 30
0
        private void Окно_выбора_из_списка_KeyDown(object sender, KeyEventArgs e)
        {
            KeyIsPressed = true;
            if (аботаСоСканером.НажатаКлавишаСкан(e))
            {
                string СтрокаСкан = аботаСоСканером.Scan();
                if (СтрокаСкан.Length != 0)
                {
                    e.Handled = true;
                    if (Таб.SelectedIndex == 0)
                    {
                        ОбработатьСкан(СтрокаСкан);
                    }
                    else
                    {
                        Инфо.ПолучениеИнформации(СтрокаСкан, СписокИнформации, Таб);
                    }
                }
                return;
            }
            if (аботаСоСканером.НажатаПраваяПодэкраннаяКлавиша(e))
            {
                e.Handled = true;
                Меню_Click(sender, new EventArgs());
            }

            if ((e.KeyCode == System.Windows.Forms.Keys.D0))
            {
                e.Handled = true;
                Меню_Click(sender, new EventArgs());
            }
            if ((e.KeyCode == System.Windows.Forms.Keys.D1))
            {
                Таб.SelectedIndex = 0;
                Таб.Update();
                e.Handled = true;
            }
            if ((e.KeyCode == System.Windows.Forms.Keys.D2))
            {
                Таб.SelectedIndex = 1;
                Таб.Update();
                e.Handled = true;
            }
        }