Пример #1
0
        }     // TypeMoveDescr


        public RefPalleteMove(SQL1S ReadySS)
            : base(ReadySS)
        {
            //TypeObj = "ПеремещенияПаллет";
            HaveCode = false;
            HaveName = false;
        } // RefPalleteMove (constructor)
Пример #2
0
        } // ReactionKeyDo

        /// <summary>
        ///
        /// </summary>
        /// <param name="e"></param>
        protected override void ReactionSCDo(ReactionSCEventArgs e)
        {
            if (CurrentAction == ActionSet.ScanAdress)
            {
                if (e.Ref.GetType() != new RefSection(SS).GetType())
                {
                    Negative("Неверно! " + SS.WhatUNeed(CurrentAction));
                    return;
                }
                RefSection Section = e.Ref as RefSection;
                AdressUnLoad.FoundID(Section.ID);
                string TextQuery =
                    "UPDATE $Спр.МестаПогрузки " +
                    "SET " +
                    "$Спр.МестаПогрузки.Адрес9 = :AdressID ," +
                    "$Спр.МестаПогрузки.Сотрудник8 = :EmployerID ," +
                    "$Спр.МестаПогрузки.Дата9 = :Date ," +
                    "$Спр.МестаПогрузки.Время9 = :Time " +
                    "WHERE  ";
                if (DocUnload.Selected)
                {
                    TextQuery += " $Спр.МестаПогрузки .КонтрольНабора = :DocUnload ";
                    SQL1S.QuerySetParam(ref TextQuery, "DocUnload", DocUnload.ID);
                }
                else
                {
                    TextQuery += " $Спр.МестаПогрузки .ID = :ID ";
                    SQL1S.QuerySetParam(ref TextQuery, "ID", BoxUnLoad.ID);
                }
                SQL1S.QuerySetParam(ref TextQuery, "AdressID", AdressUnLoad.ID);
                SQL1S.QuerySetParam(ref TextQuery, "EmployerID", Employer.ID);
                SQL1S.QuerySetParam(ref TextQuery, "Date", DateTime.Now);
                SQL1S.QuerySetParam(ref TextQuery, "Time", APIManager.NowSecond());
                if (!SS.ExecuteWithoutRead(TextQuery))
                {
                    Negative("Не удалось зафиксировать! " + SS.WhatUNeed(CurrentAction));
                    return;
                }
                CurrentAction = ActionSet.ScanBox;
                Refresh();
                return;
            }
            else if (CurrentAction != ActionSet.ScanBox)
            {
                Negative("Неверно! " + SS.WhatUNeed(CurrentAction));
                return;
            }
            if (e.Ref.GetType() != new RefBox(SS).GetType())
            {
                Negative("Неверно! " + SS.WhatUNeed(CurrentAction));
                return;
            }
            RefBox Box = e.Ref as RefBox;

            BoxUnLoad.FoundID(Box.ID);
            DocUnload     = new Doc(SS);
            CurrentAction = ActionSet.ScanAdress;
            AdressUnLoad  = new RefSection(SS);
            Refresh();
        }
Пример #3
0
        private ABaseMode Refresh()
        {
            if (ControlCC == null)
            {
                return(Positive());
            }
            GoodsCC.Clear();
            IndexTableItem = 0;

            String TextQuery =
                "SELECT " +
                "DocCC.LineNo_ as Number, " +
                "Goods.$Спр.Товары.Артикул as Artikul, " +
                "Goods.Descr as NameItem, " +
                "Goods.ID as ID, " +
                "DocCC.$КонтрольНабора.Количество as Count " +
                "FROM DT$КонтрольНабора as DocCC (nolock) " +
                "JOIN $Спр.Товары as Goods (nolock) " +
                "ON Goods.Id = DocCC.$КонтрольНабора.Товар " +
                "WHERE " +
                "DocCC.iddoc = :iddoc";

            SQL1S.QuerySetParam(ref TextQuery, "iddoc", ControlCC);
            if (!SS.ExecuteWithRead(TextQuery, out GoodsCC))
            {
                return(Negative());
            }
            if (GoodsCC.Rows.Count == 0)
            {
                return(Negative("В сборочном нет товара!"));
            }
            return(Positive());
        } // Refresh
Пример #4
0
        }   // Ranges

        /// <summary>
        ///  constructor
        /// </summary>
        /// <param name="ReadySS"></param>
        public RefGates(SQL1S ReadySS)
            : base(ReadySS)
        {
            //TypeObj = "Ворота";
            HaveCode = true;
            HaveName = true;
        } // RefGates (constructor)
Пример #5
0
        }                                                                                     //Зона в адресах машинного набора

        public RefItem(SQL1S ReadySS)
            : base(ReadySS)
        {
            //TypeObj = "Товары";
            HaveCode = true;
            HaveName = true;
        } // RefItem (constructor)
Пример #6
0
        } // RefItem (constructor)

        public bool FoundBarcode(string Barcode)
        {
            string TextQuery = "select top 1 PARENTEXT as ID from $Спр.ЕдиницыШК (nolock) where $Спр.ЕдиницыШК.Штрихкод = :barcode";

            SQL1S.QuerySetParam(ref TextQuery, "barcode", Barcode);
            DataTable DT;

            if (!SS.ExecuteWithRead(TextQuery, out DT))
            {
                return(false);
            }
            if (DT.Rows.Count == 0)
            {
                return(false);
            }

            FID   = DT.Rows[0]["ID"].ToString();
            FName = null;
            Refresh();
            if (FName != null)
            {
                return(true);
            }
            else
            {
                return(false);
            }
        } // FoundBarcode
Пример #7
0
        }                                                                                               //Зона адреса

        public RefSection(SQL1S ReadySS)
            : base(ReadySS)
        {
            //TypeObj = "Секции";
            HaveCode = false;
            HaveName = true;
        } // RefSection (constructor)
Пример #8
0
        } // ReactionDocDo

        internal override ABaseMode Init()
        {
            if (!SQL1S.IsVoidDate((DateTime)DocCC.GetAttributeHeader("Дата3")))
            {
                return(Negative("Сборочный уже скомплектован!"));
            }
            if (SQL1S.IsVoidDate((DateTime)DocCC.GetAttributeHeader("Дата2")))
            {
                return(Negative("Сборочный не собран!"));
            }
            if (!SS.LockDoc(DocCC.ID))
            {
                return(Negative(SS.ExcStr));
            }
            if (SQL1S.IsVoidDate((DateTime)DocCC.GetAttributeHeader("Дата4")) && TransferWindow.Selected)
            {
                //Если предкомплектация еще не задана, а окно выдачи уже задано, то делаем предкомплектацию
                DocCC.SetAttributeHeader("Дата4", DateTime.Now);
                DocCC.SetAttributeHeader("Время4", APIManager.NowSecond());
                DocCC.SetAttributeHeader("Комплектовщик2", Employer.ID);
                DocCC.Save();
                //Если окно задано - то даем команду выводить на табло
                SendToTablo(1);
            }

            return(Positive());
        } // ReactionSCEmployersDo
Пример #9
0
 /// <summary>
 ///
 /// </summary>
 /// <param name="ReadySS">prepared for use object</param>
 public ConstantsDepot(SQL1S ReadySS)
 {
     FUpdateInterval = 600;                                                       //Раз в 10 минут
     FSettingsMOD    = "0000000000000000000000000000000000000000000000000000000"; //default value
     SS = ReadySS;
     Refresh();
 }
Пример #10
0
        } // Обратная совместимость

        /// <summary>
        /// Преобразует имя поля или таблицы SQL в имя 1С
        /// </summary>
        /// <param name="SQLName"></param>
        /// <returns></returns>
        protected string To1CName(string SQLName)
        {
            string result = "";

            foreach (KeyValuePair <string, string> pair in SynhMap)
            {
                if (pair.Value == SQLName)
                {
                    result = pair.Key;
                    return(result);
                }
            }

            SQL1S tmpSS = new SQL1S(ServerName, DBName);
            //нихуя не найдено, подсосем из базы!
            string TextQuery =
                "select top 1 Name1C as Name1C from RT_Aliases (nolock) where NameSQL = :SQLName";

            QuerySetParam(ref TextQuery, "SQLName", SQLName);
            DataTable DT;

            if (!tmpSS.ExecuteWithRead(TextQuery, out DT))
            {
                throw new Exception("Cant connect for load this SQL name! Sheet!");
            }
            if (DT.Rows.Count == 0)
            {
                throw new Exception("Cant find this SQL name! Sheet!");
            }
            tmpSS.MyConnection.Close();
            result          = DT.Rows[0]["Name1C"].ToString().Trim();
            SynhMap[result] = SQLName;    //add in dictionary
            return(result);
        }
Пример #11
0
        } // Init

        internal override ABaseMode Cancel()
        {
            string TextQuery;

            if (Task.TypeMove == 1)
            {
                //Это отмена задания на спуск - удаляем физически, т.к. при запросе задания запись создастся вновь
                TextQuery = "delete from $Спр.ПеремещенияПаллет where id = :id";
            }
            else if (Task.TypeMove == 2 || Task.TypeMove == 3 || Task.TypeMove == 4 || Task.TypeMove == 5)
            {
                //А это отмена задания подъема или спуска с антресоли. Т.к. при выдаче задания ничего не создается,
                //  а просто заполняется данными, то и при отмене нужно просто очистить все
                TextQuery =
                    "update $Спр.ПеремещенияПаллет set " +
                    "$Спр.ПеремещенияПаллет.Сотрудник1 = :EmptyID, " +
                    "$Спр.ПеремещенияПаллет.ФлагОперации = 0, " +
                    "$Спр.ПеремещенияПаллет.Дата10 = :EmptyDate, " +
                    "$Спр.ПеремещенияПаллет.Время10 = 0 " +
                    "where id = :id";
            }
            else
            {
                return(Negative("Нельзя отменить данный тип задания"));
            }
            SQL1S.QuerySetParam(ref TextQuery, "id", Task.ID);
            SS.ExecuteWithoutReadNew(TextQuery);
            return(base.Cancel());
        } // Cancel
Пример #12
0
        public bool GetColumns(string table_name, out string columns, string SQLfunc)
        {
            string separator = ",";
            string tail      = ""; //В конце что добавим

            columns = "";
            if (SQLfunc != null)
            {
                separator = ")," + SQLfunc + "(";
                columns   = SQLfunc + "(";
                tail      = ")";
            }
            string TextQuery =
                "declare @ColumnList varchar(1000); " +
                "select @ColumnList = COALESCE(@ColumnList + '" + separator + "', '') + column_name " +
                "from INFORMATION_SCHEMA.Columns " +
                "where table_name = :table_name; " +
                "select @ColumnList as ColumnList";

            SQL1S.QuerySetParam(ref TextQuery, "table_name", table_name + " "); //Пробел в конце, чтобы парсер нормально отработал
            DataTable DT;

            ExecuteWithReadNew(TextQuery, out DT);
            if (DT.Rows.Count == 0)
            {
                return(false);
            }

            columns += DT.Rows[0]["ColumnList"].ToString();
            columns += tail;
            return(true);
        } // GetColumns
Пример #13
0
        public bool RefreshAMT()
        {
            string TextQuery =
                "SELECT " +
                "DocAT.lineno_ as Number, " +
                "Goods.SP1036 as InvCode, " +
                "Sections.descr as Adress, " +
                "DocAT.SP4313 as Count " +
                "FROM " +
                "_1sjourn as journ (nolock) " +
                "INNER JOIN DT$АдресПеремещение as DocAT (nolock)" +
                "ON journ.iddoc = DocAT.iddoc " +
                "INNER JOIN $Спр.Товары as Goods (nolock) " +
                "ON Goods.id = DocAT.SP4312 " +
                "INNER JOIN $Спр.Секции as Sections (nolock) " +
                "ON Sections.id = DocAT.$АдресПеремещение.Адрес0 " +
                "WHERE " +
                "DocAT.iddoc = :Doc ";

            SQL1S.QuerySetParam(ref TextQuery, "Doc", DocSet.ID);
            if (!ExecuteWithRead(TextQuery, out ATTable))
            {
                return(false);
            }
            return(true);
        } // RefreshAMT()
Пример #14
0
        } // ReactionKeyDo

        //------------------------------
        /// <summary>
        ///
        /// </summary>
        /// <returns></returns>
        protected bool FindDocAP(bool IsSet)
        {
            string TextQuery =
                "select top 1 " +
                (IsSet ? "substring(DocAP.$АдресПеремещение.ДокументОснование , 5, 9)" : " DocAP.iddoc") + " as iddoc " +
                "from _1sjourn as journ (nolock) " +
                "inner join DH$АдресПеремещение as DocAP (nolock) " +
                "on DocAP.iddoc = journ.iddoc " +
                "left join DT$АдресПеремещение as DocAPTab (nolock) " +
                "on DocAP.iddoc = DocAPTab.iddoc " +
                "where " +
                "journ.date_time_iddoc < '19800101Z' " +
                "and journ.ismark = 0 " +
                "and journ.$Автор = :employer " +
                "and DocAP.$АдресПеремещение.ТипДокумента = 13 " +
                "and DocAP.$АдресПеремещение.Склад = :warehouse " +
                //От параметра IsSet зависит что мы ищем набор или выкладку
                "and DocAPTab.iddoc " + (IsSet ? "is null" : "is not null");

            SQL1S.QuerySetParam(ref TextQuery, "employer", Employer.ID);
            SQL1S.QuerySetParam(ref TextQuery, "warehouse", Employer.Warehouse.ID);
            DataTable DT;

            SS.ExecuteWithReadNew(TextQuery, out DT);
            if (DT.Rows.Count == 0)
            {
                return(false);
            }
            DocAP = Doc.GiveDocById(DT.Rows[0]["iddoc"].ToString(), SS);
            return(DocAP.Selected);
        } // FindDocAP
Пример #15
0
        private bool RefreshAmount()
        {
            string TextQuery =
                "select " +
                "count(*) Amount " +
                "from " +
                "DT$АдресПеремещение as Doc (nolock) " +
                "where " +
                "Doc.iddoc =:Doc " +
                "and Doc.$АдресПеремещение.Дата1 = :EmptyDate " +
                "and Doc.$АдресПеремещение.Количество > 0 ";

            //TextQuery = TextQuery.Replace(":Docs", Helper.ListToStringWithQuotes(DocsSet));
            SQL1S.QuerySetParam(ref TextQuery, "Doc", DocSet.ID);
            SQL1S.QuerySetParam(ref TextQuery, "EmptyDate", SQL1S.GetVoidDate());
            DataTable DT;

            if (!ExecuteWithRead(TextQuery, out DT))
            {
                return(false);
            }
            if (DT.Rows.Count > 0)
            {
                AllSetsRow = (int)DT.Rows[0]["Amount"];
            }
            else
            {
                AllSetsRow = 0;
            }
            return(true);
        }
Пример #16
0
        } // FixTask (int MoveType)

        private void GetTaskLoaderDown()
        {
            string TextQuery = "exec WPM_GetTaskLoaderDown :Employer ";

            SQL1S.QuerySetParam(ref TextQuery, "Employer", Employer.ID);
            SS.ExecuteWithoutReadNew(TextQuery);
            FindTaskId();
        } // GetTaskLoaderDown
Пример #17
0
        } // Init()

        //protected override void ReactionSCSectionDo(RefSection e)
        //{
        //    if (CurrentAction != ActionSet.ScanAdress)
        //    {
        //        Negative("Неверно! " + SS.WhatUNeed(CurrentAction));
        //        return;
        //    }
        //    if (e.ID != Task.Adress0.ID)
        //    {
        //        Negative("Неверный адрес!");
        //        return;
        //    }
        //    CurrentAction = ActionSet.ScanPallete;
        //    Positive(SS.WhatUNeed(CurrentAction));
        //} // ReactionSCSectionDo
        //protected override void ReactionPalleteDo(string barcode)
        //{
        //    if (CurrentAction != ActionSet.ScanPallete)
        //    {
        //        Negative("Неверно! " + SS.WhatUNeed(CurrentAction));
        //        return;
        //    }
        //    if (Task.PalleteBarcode != barcode)
        //    {
        //        Negative("Неверная паллета! Где вы это взяли?");
        //        return;
        //    }
        //    PalleteBarcode = barcode;
        //    TaskEnd();
        //} // ReactionPalleteDo

        override protected bool TaskComplete()
        {
            string TextQuery = "declare @result int; exec WPM_TaskLoaderDownAntrisoleComplete :id, :Adress1, @result out; select @result;";

            SQL1S.QuerySetParam(ref TextQuery, "id", Task.ID);
            SQL1S.QuerySetParam(ref TextQuery, "Adress1", Adress1.ID);
            return((int)SS.ExecuteScalar(TextQuery) == 0 ? false : true);
        } // DownTaskComplete
Пример #18
0
        protected override void ReactionSCSectionDo(RefSection Section)
        {
            //подтянем данные адреса
            string TextQuery =
                "DECLARE @curdate DateTime; " +
                "SELECT @curdate = DATEADD(DAY, 1 - DAY(curdate), curdate) FROM _1ssystem (nolock); " +
                "SELECT " +
                "RegAOT.$Рег.АдресОстаткиТоваров.Товар as ID, " +
                "min(Goods.descr) as ItemName, " +
                "min(Goods.$Спр.Товары.ИнвКод ) as InvCode, " +
                "min(Goods.$Спр.Товары.Артикул ) as Article, " +
                "cast(sum(RegAOT.$Рег.АдресОстаткиТоваров.Количество ) as int) as Count, " +
                "min(RegAOT.$Рег.АдресОстаткиТоваров.Адрес ) as Adress, " +
                "CASE " +
                "WHEN RegAOT.$Рег.АдресОстаткиТоваров.Состояние = -10 THEN '-10 Автокорректировка' " +
                "WHEN RegAOT.$Рег.АдресОстаткиТоваров.Состояние = -2 THEN '-2 В излишке' " +
                "WHEN RegAOT.$Рег.АдресОстаткиТоваров.Состояние = -1 THEN '-1 В излишке (пересчет)' " +
                "WHEN RegAOT.$Рег.АдресОстаткиТоваров.Состояние = 0 THEN '00 Не существует' " +
                "WHEN RegAOT.$Рег.АдресОстаткиТоваров.Состояние = 1 THEN '01 Приемка' " +
                "WHEN RegAOT.$Рег.АдресОстаткиТоваров.Состояние = 2 THEN '02 Хороший на месте' " +
                "WHEN RegAOT.$Рег.АдресОстаткиТоваров.Состояние = 3 THEN '03 Хороший (пересчет)' " +
                "WHEN RegAOT.$Рег.АдресОстаткиТоваров.Состояние = 4 THEN '04 Хороший (движение)' " +
                "WHEN RegAOT.$Рег.АдресОстаткиТоваров.Состояние = 7 THEN '07 Бракованный на месте' " +
                "WHEN RegAOT.$Рег.АдресОстаткиТоваров.Состояние = 8 THEN '08 Бракованный (пересчет)' " +
                "WHEN RegAOT.$Рег.АдресОстаткиТоваров.Состояние = 9 THEN '09 Бракованный (движение)' " +
                "WHEN RegAOT.$Рег.АдресОстаткиТоваров.Состояние = 12 THEN '12 Недостача' " +
                "WHEN RegAOT.$Рег.АдресОстаткиТоваров.Состояние = 13 THEN '13 Недостача (пересчет)' " +
                "WHEN RegAOT.$Рег.АдресОстаткиТоваров.Состояние = 14 THEN '14 Недостача (движение)' " +
                "WHEN RegAOT.$Рег.АдресОстаткиТоваров.Состояние = 17 THEN '17 Недостача подтвержденная' " +
                "WHEN RegAOT.$Рег.АдресОстаткиТоваров.Состояние = 18 THEN '18 Недостача подт.(пересчет)' " +
                "WHEN RegAOT.$Рег.АдресОстаткиТоваров.Состояние = 19 THEN '19 Недостача подт.(движение)' " +
                "WHEN RegAOT.$Рег.АдресОстаткиТоваров.Состояние = 22 THEN '22 Пересорт излишек' " +
                "WHEN RegAOT.$Рег.АдресОстаткиТоваров.Состояние = 23 THEN '23 Пересорт недостача' " +
                "ELSE rtrim(cast(RegAOT.$Рег.АдресОстаткиТоваров.Состояние as char)) + ' <неизвестное состояние>' END as Condition, " +
                "min(Sections.descr) as AdressName " +
                "FROM " +
                "RG$Рег.АдресОстаткиТоваров as RegAOT (nolock) " +
                "LEFT JOIN $Спр.Товары as Goods (nolock) " +
                "ON Goods.ID = RegAOT.$Рег.АдресОстаткиТоваров.Товар " +
                "LEFT JOIN $Спр.Секции as Sections (nolock) " +
                "ON Sections.ID = RegAOT.$Рег.АдресОстаткиТоваров.Адрес " +
                "WHERE " +
                "RegAOT.period = @curdate " +
                "and RegAOT.$Рег.АдресОстаткиТоваров.Адрес = :Address " +
                "GROUP BY RegAOT.$Рег.АдресОстаткиТоваров.Товар , " +
                "RegAOT.$Рег.АдресОстаткиТоваров.Состояние " +
                "ORDER BY min(Goods.$Спр.Товары.ИнвКод )";

            SQL1S.QuerySetParam(ref TextQuery, "Address", Section.ID);
            if (SS.ExecuteWithRead(TextQuery, out SS.AddressCardItems))
            {
                //покажем содержание адреса
                SS.OnReport(new ReportEventArgs("Задача выбрана..."));
                JumpTo(new ChoiseWorkAddressCard(SS, this));
            }
            base.ReactionSCSectionDo(Section);
        }
Пример #19
0
        /// <summary>
        /// return ready object or generate exception
        /// </summary>
        /// <param name="ID">iddoc</param>
        /// <param name="SS"> Ready SQL connect object</param>
        /// <returns></returns>
        static public Doc GiveDocById(string ID, SQL1S SS)
        {
            Doc result = new Doc(SS);

            if (!result.FoundID(ID))
            {
                throw new NullReferenceException("Doc with iddoc = '" + ID + "' - not find!!!");
            }
            return(result);
        }
Пример #20
0
        } // Cancel

        //----------------------------------
        /// <summary>
        ///
        /// </summary>
        private void CorrectLine()
        {
            string TextQuery =
                "begin tran; " +
                "update DT$АдресПеремещение " +
                "set $АдресПеремещение.Количество = :count " +
                "where DT$АдресПеремещение .iddoc = :iddoc and DT$АдресПеремещение .lineno_ = :currline; " +
                "if @@rowcount > 0 begin " +
                "insert into DT$АдресПеремещение ($АдресПеремещение.Товар , $АдресПеремещение.Количество ," +
                "$АдресПеремещение.Единица , $АдресПеремещение.Коэффициент , $АдресПеремещение.Состояние0 ," +
                "$АдресПеремещение.Состояние1 , $АдресПеремещение.Сотрудник0 , $АдресПеремещение.Адрес0 , $АдресПеремещение.Адрес1 ," +
                "$АдресПеремещение.Дата0 , $АдресПеремещение.Дата1 , $АдресПеремещение.Время0 , $АдресПеремещение.Время1 ," +
                "$АдресПеремещение.Док , $АдресПеремещение.НомерСтрокиДока , $АдресПеремещение.ФлагДопроведения , $АдресПеремещение.ФлагОбязательногоАдреса , " +
                "$АдресПеремещение.ЕдиницаШК , lineno_, iddoc) " +
                "select $АдресПеремещение.Товар , :CountCorrect ," +
                "$АдресПеремещение.Единица , $АдресПеремещение.Коэффициент , $АдресПеремещение.Состояние0 ," +
                ":AdressCode , :Employer , $АдресПеремещение.Адрес0 , $АдресПеремещение.Адрес0 ," +
                "$АдресПеремещение.Дата0 , :NowDate , $АдресПеремещение.Время0 , :NowTime ," +
                "$АдресПеремещение.Док , $АдресПеремещение.НомерСтрокиДока , $АдресПеремещение.ФлагДопроведения , $АдресПеремещение.ФлагОбязательногоАдреса , " +
                "$АдресПеремещение.ЕдиницаШК , (select max(lineno_) + 1 from DT$АдресПеремещение where iddoc = :iddoc), iddoc " +
                "from DT$АдресПеремещение as ForInst where ForInst.iddoc = :iddoc and ForInst.lineno_ = :currline; " +
                "if @@rowcount > 0 begin " +
                //Удалим строчку если она иссякла...
                "delete from DT$АдресПеремещение " +
                "where iddoc = :iddoc and lineno_ = :currline and $АдресПеремещение.Количество <= 0 " +
                " commit tran " +
                "end else rollback tran " +
                "end " +
                "else rollback";

            SQL1S.QuerySetParam(ref TextQuery, "count", Amount - InputedCount);
            SQL1S.QuerySetParam(ref TextQuery, "CountCorrect", InputedCount);
            SQL1S.QuerySetParam(ref TextQuery, "iddoc", DocAP.ID);
            SQL1S.QuerySetParam(ref TextQuery, "currline", lineno_);
            SQL1S.QuerySetParam(ref TextQuery, "Reason", "   2EV   ");
            SQL1S.QuerySetParam(ref TextQuery, "AdressCode", 17);
            SQL1S.QuerySetParam(ref TextQuery, "Employer", Employer.ID);

            SS.ExecuteWithoutReadNew(TextQuery);
            PreviousAction = "Корректировка принята " + Item.InvCode + " - " + InputedCount.ToString() + " шт. (недостача)";

            //Все скорректировали к хуям!
            if (Amount - InputedCount <= 0)
            {
                Dictionary <string, object> DataMapWrite = new Dictionary <string, object>();
                DataMapWrite["Спр.СинхронизацияДанных.ДокументВход"] = SS.ExtendID(DocAP.ID, "АдресПеремещение");
                DataMapWrite["Спр.СинхронизацияДанных.ДатаСпрВход1"] = SS.ExtendID(Employer.ID, "Спр.Сотрудники");
                string resultMessage;
                SS.ExecCommandOnlyResultNew("RefillSetAddItem2", DataMapWrite, out resultMessage);
            }

            Cancel();
        } // CorrectLine
Пример #21
0
        } // TaskEnd

        /// <summary>
        ///
        /// </summary>
        /// <returns></returns>
        virtual protected bool TaskComplete()
        {
            string TextQuery =
                "update $Спр.ПеремещенияПаллет set " +
                "$Спр.ПеремещенияПаллет.Дата1 = :NowDate, " +
                "$Спр.ПеремещенияПаллет.Время1 = :NowTime, " +
                "$Спр.ПеремещенияПаллет.ФлагОперации = 2 " +
                "where id = :id; " +
                "select @@rowcount;";

            SQL1S.QuerySetParam(ref TextQuery, "id", Task.ID);
            return((int)SS.ExecuteScalar(TextQuery) == 0 ? false : true);
        } // DownTaskComplete
Пример #22
0
        } // ReactionSCSectionDo

        /// <summary>
        ///
        /// </summary>
        /// <returns></returns>
        private ABaseMode Refresh()
        {
            string TextQuery =
                "select " +
                "DocAP.$АдресПеремещение.Адрес0 as Adress0, " +
                "RefSections.descr as Adress, " +
                "DocAP.$АдресПеремещение.Количество as Amount, " +
                "DocAP.$АдресПеремещение.Товар as Item, " +
                "RefItems.Descr as Name, " +
                "RefItems.$Спр.Товары.ИнвКод as InvCode, " +
                "DocAP.lineno_ as lineno_ " +
                "from DT$АдресПеремещение as DocAP (nolock) " +
                "left join $Спр.Товары as RefItems (nolock) " +
                "on RefItems.id = DocAP.$АдресПеремещение.Товар " +
                "left join $Спр.Секции as RefSections (nolock) " +
                "on RefSections.id = DocAP.$АдресПеремещение.Адрес0 " +
                "where " +
                "DocAP.$АдресПеремещение.Дата1 = :EmptyDate " +
                "and DocAP.iddoc = :iddoc";

            SQL1S.QuerySetParam(ref TextQuery, "iddoc", DocAP.ID);
            RemainItems.Clear();
            SS.ExecuteWithReadNew(TextQuery, out RemainItems);
            if (RemainItems.Rows.Count == 0)
            {
                return(JumpTo(new RefillLayoutComplete(SS, this)));
            }

            string tmpBarcodePallete = DocAP.GetAttributeHeader("ШКПаллеты").ToString();

            TextQuery =
                "select top 1 " +
                "Ref.id as id " +
                "from $Спр.ПеремещенияПаллет as Ref (nolock) " +
                "where " +
                "Ref.$Спр.ПеремещенияПаллет.ШКПаллеты = :PalleteBarcode " +
                "and Ref.ismark = 0 " +
                "order by " +
                "Ref.id desc ";
            SQL1S.QuerySetParam(ref TextQuery, "PalleteBarcode", tmpBarcodePallete);
            DataTable DT;

            SS.ExecuteWithReadNew(TextQuery, out DT);
            if (DT.Rows.Count > 0)
            {
                LastMove.FoundID(DT.Rows[0]["id"].ToString());
            }

            CurrentAction = ActionSet.ScanItem;
            return(Positive(SS.WhatUNeed(CurrentAction)));
        } // Refresh
Пример #23
0
        } // ReactionKeyDo

        protected override void ReactionSCDo(ReactionSCEventArgs e)
        {
            if (e.Ref.GetType() == new RefBox(SS).GetType())
            {
                RefBox Box = e.Ref as RefBox;

                Doc doc = new Doc(SS);
                doc.FoundID(Box.GetAttribute("КонтрольНабора").ToString());
                RefreshDoc(doc);
                return;
            }
            else if (e.Ref.GetType() == new RefItem(SS).GetType())
            {
                Item = e.Ref as RefItem;

                string ItemID    = Item.ID.ToString();
                string LabelItem = Item.InvCode.ToString().Trim() + " " + Item.Name.ToString().Trim();

                if (ControlCC == null)
                {
                    Negative("Не выбран сборочный лист!");
                    return;
                }
                String TextQuery =
                    "SELECT " +
                    "Goods.$Спр.Товары.ИнвКод as InvCode, " +
                    "DocCC.$КонтрольНабора.Количество as Count " +
                    "FROM DT$КонтрольНабора as DocCC (nolock) " +
                    "JOIN $Спр.Товары as Goods (nolock) " +
                    "ON Goods.Id = DocCC.$КонтрольНабора.Товар " +
                    "WHERE " +
                    "Goods.id = :ItemID " +
                    "and DocCC.iddoc = :iddoc";
                SQL1S.QuerySetParam(ref TextQuery, "ItemID", ItemID);
                SQL1S.QuerySetParam(ref TextQuery, "iddoc", ControlCC);
                DataTable DT;
                if (!SS.ExecuteWithRead(TextQuery, out DT))
                {
                    return;
                }
                if (DT.Rows.Count == 0)
                {
                    Negative("В сборочном нет " + LabelItem);
                    return;
                }
                else
                {
                    JumpTo(new ItemCard(SS, this));
                }
            }
        }
Пример #24
0
        } // ReactionKeyDo

        internal override ABaseMode Init()
        {
            Task = new RefPalleteMove(SS);
            if (FindTaskId())
            {
                return(JumpTo(new Loader(SS, this)));
            }
            TaskList = null;
            string TextQuery = "select * from WPM_fn_ToModeLoaderChoise(:Employer)";

            SQL1S.QuerySetParam(ref TextQuery, "Employer", Employer.ID);
            SS.ExecuteWithReadNew(TextQuery, out TaskList);
            return(Positive("Выберите что будете делать..."));
        } // Init()
Пример #25
0
        } // FixTask (int MoveType, string Tail)

        private void FixTask(int MoveType)
        {
            string Tail =
                "select top 1 Ref.id from $Спр.ПеремещенияПаллет as Ref (nolock) " +
                "where " +
                "Ref.$Спр.ПеремещенияПаллет.ФлагОперации = 0 " +
                "and Ref.$Спр.ПеремещенияПаллет.ТипДвижения = :MoveType " +
                "and Ref.ismark = 0 " +
                "and Ref.$Спр.ПеремещенияПаллет.Склад = :warehouse " +
                "order by Ref.id";

            SQL1S.QuerySetParam(ref Tail, "warehouse", Employer.Warehouse.ID);
            FixTask(MoveType, Tail);
        } // FixTask (int MoveType)
Пример #26
0
        } // GoTransportTask

        private void FixTask(int MoveType, string Tail)
        {
            string TextQuery =
                "update $Спр.ПеремещенияПаллет " +
                "set $Спр.ПеремещенияПаллет.Сотрудник1 = :Employer, " +
                "$Спр.ПеремещенияПаллет.Дата10 = :NowDate, " +
                "$Спр.ПеремещенияПаллет.Время10 = :NowTime, " +
                "$Спр.ПеремещенияПаллет.ФлагОперации = 1 " +
                "where id in (" + Tail + ")";

            SQL1S.QuerySetParam(ref TextQuery, "Employer", Employer.ID);
            SQL1S.QuerySetParam(ref TextQuery, "MoveType", MoveType);
            SS.ExecuteWithoutReadNew(TextQuery);
            FindTaskId();
        } // FixTask (int MoveType, string Tail)
Пример #27
0
        } // ReactionSCItemDo

        /// <summary>
        ///
        /// </summary>
        /// <returns></returns>
        internal override ABaseMode Init()
        {
            if (!DocAP.Selected)
            {
                SS.OnReport(new ReportEventArgs("Получаю задание..."));
                string TextQuery =
                    "select top 1 DocAP.iddoc as iddoc " +
                    "from _1sjourn as journ (nolock) " +
                    "inner join DH$АдресПеремещение as DocAP (nolock) " +
                    "on DocAP.iddoc = journ.iddoc " +
                    "inner join DT$АдресПеремещение as DocAPTab (nolock) " +
                    "on DocAP.iddoc = DocAPTab.iddoc " +
                    //Условие ниже, чтобы с пустой табличной частью отсеить документы
                    "inner join _1sjourn as sub_journ (nolock) " +
                    "on substring(DocAP.$АдресПеремещение.ДокументОснование , 5, 9) = sub_journ.iddoc " +
                    "left join $Спр.ПеремещенияПаллет as Ref (nolock) " +
                    "on Ref.$Спр.ПеремещенияПаллет.ШКПаллеты = DocAP.$АдресПеремещение.ШКПаллеты " +
                    "and Ref.$Спр.ПеремещенияПаллет.ФлагОперации in (0, 1) " +
                    "and Ref.ismark = 0 " +
                    "where " +
                    "journ.date_time_iddoc < '19800101Z' " +
                    "and journ.ismark = 0 " +
                    "and journ.$Автор = :EmptyID " +
                    "and DocAP.$АдресПеремещение.ТипДокумента = 13 " +
                    "and Ref.id is null " +
                    "order by sub_journ.date_time_iddoc";
                DataTable DT;
                SS.ExecuteWithReadNew(TextQuery, out DT);
                if (DT.Rows.Count == 0)
                {
                    return(Negative("Не удалось найти заданий выкладки!"));
                }
                //Будем вешать на себя это задание
                TextQuery =
                    "update _1sjourn set " +
                    "$Автор = :employer " +
                    "where iddoc = :iddoc; ";
                SQL1S.QuerySetParam(ref TextQuery, "iddoc", DT.Rows[0]["iddoc"].ToString());
                SQL1S.QuerySetParam(ref TextQuery, "employer", Employer.ID);
                SS.ExecuteWithoutReadNew(TextQuery);
                //Если задание получилось, то
                if (!FindDocAP(false))
                {
                    return(Negative("Не удалось зафиксировать задание выклдаки!"));
                }
            }
            return(Refresh());
        }   // Init
Пример #28
0
        } // GoUpTask

        protected ABaseMode GoLiftTask(string sector)
        {
            Task = new RefPalleteMove(SS);
            string Tail =
                "select top 1 Ref.id from $Спр.ПеремещенияПаллет as Ref (nolock) " +
                "where " +
                "Ref.$Спр.ПеремещенияПаллет.ФлагОперации = 0 " +
                "and Ref.$Спр.ПеремещенияПаллет.ТипДвижения = :MoveType " +
                "and Ref.$Спр.ПеремещенияПаллет.Адрес1_Сектор = :sector " +
                "and Ref.ismark = 0 " +
                "order by Ref.id";

            SQL1S.QuerySetParam(ref Tail, "sector", sector);
            FixTask(5, Tail);
            return(GoLodaer());
        } // GoUpTask
Пример #29
0
        } // GetTaskLoaderDown

        protected bool CheckPallete(string barcode)
        {
            string TextQuery =
                "select count(*) from $Спр.ПеремещенияПаллет (nolock) " +
                "where " +
                "$Спр.ПеремещенияПаллет.ФлагОперации in (1,0) " +
                "and $Спр.ПеремещенияПаллет.ШКПаллеты = :barcode " +
                "and ismark = 0";

            SQL1S.QuerySetParam(ref TextQuery, "barcode", barcode);
            if ((int)SS.ExecuteScalar(TextQuery) > 0)
            {
                Negative("Возможна только одна паллета с одним ШК!");
                return(false);
            }
            return(true);
        } // CheckPallete
Пример #30
0
        protected override void ReactionDocDo(Doc doc)
        {
            if (CurrentAction != ActionSet.ScanBox)
            {
                Negative("Неверно! " + SS.WhatUNeed(CurrentAction));
                return;
            }
            if (doc.TypeDoc == "КонтрольНабора")
            {
                //нам нужны все места этого документа, запомним документ и найдем первое место
                DocUnload.FoundID(doc.ID);
                string TextQuery =
                    "SELECT TOP 1 Ref.ID as ID " +
                    "FROM " +
                    "$Спр.МестаПогрузки as Ref (nolock) " +
                    "WHERE " +
                    "$Спр.МестаПогрузки.КонтрольНабора = :DocUnload ";
                SQL1S.QuerySetParam(ref TextQuery, "DocUnload", DocUnload.ID);
                DataTable DT;
                if (!SS.ExecuteWithRead(TextQuery, out DT))
                {
                    Negative("Ошибка запроса! " + SS.WhatUNeed(CurrentAction));
                    return;
                }

                if (DT.Rows.Count == 0)
                {
                    Negative("Не найдено место! " + SS.WhatUNeed(CurrentAction));
                    return;
                }
                BoxUnLoad.FoundID(DT.Rows[0]["ID"].ToString());
                CurrentAction = ActionSet.ScanAdress;
                AdressUnLoad  = new RefSection(SS);
                Refresh();
            }
            else
            {
                Negative("Неверно! " + SS.WhatUNeed(CurrentAction));
                return;
            }

            base.ReactionDocDo(doc);
        }