Example #1
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
Example #2
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
Example #3
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()
Example #4
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);
        }
Example #5
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
Example #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
Example #7
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
Example #8
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();
        }
Example #9
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
Example #10
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
Example #11
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);
        }
Example #12
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
Example #13
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
Example #14
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
Example #15
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));
                }
            }
        }
Example #16
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)
Example #17
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()
Example #18
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)
Example #19
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
Example #20
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
Example #21
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
Example #22
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);
        }
Example #23
0
        } // constructor (RefillChoise)

        /// <summary>
        ///
        /// </summary>
        /// <returns></returns>
        internal override ABaseMode Init()
        {
            if (FindDocAP(true))//Ищем набор
            {
                return(JumpTo(new RefillSet(SS, this)));
            }
            else if (FindDocAP(false)) //Ищем выкладку
            {
                return(JumpTo(new RefillLayout(SS, this)));
            }

            //нет ничего
            TaskList = null;
            string TextQuery = "select * from WPM_fn_GetRefillChoise(:employer)";

            SQL1S.QuerySetParam(ref TextQuery, "employer", Employer.ID);
            SS.ExecuteWithReadNew(TextQuery, out TaskList);
            return(Positive("Выберите что будете делать..."));
        } // Init
Example #24
0
        } // Refresh

        private void RefreshDoc(Doc doc)
        {
            if (doc.TypeDoc != "КонтрольНабора")
            {
                Negative("Не верный тип документа!");
                return;
            }
            string TextQuery =
                "SELECT " +
                "DocCC.$КонтрольНабора.НомерЛиста as Number, " +
                "Sections.descr as Section, " +
                "CAST(LEFT(journ.date_time_iddoc,8) as DateTime) as DateTime, " +
                "journ.DOCNO as DocNumber " +
                "FROM DH$КонтрольНабора as DocCC (nolock) " +
                "LEFT JOIN $Спр.Секции as Sections (nolock) " +
                "ON Sections.id = DocCC.$КонтрольНабора.Сектор " +
                "LEFT JOIN DH$КонтрольРасходной as DocCB (nolock) " +
                "ON DocCB.iddoc = DocCC.$КонтрольНабора.ДокументОснование " +
                "LEFT JOIN DH$Счет as Daemond (nolock) " +
                "ON Daemond.iddoc = DocCB.$КонтрольРасходной.ДокументОснование " +
                "LEFT JOIN _1sjourn as journ (nolock) " +
                "ON journ.iddoc = Daemond.iddoc " +
                "WHERE " +
                "DocCC.iddoc = :iddoc";

            SQL1S.QuerySetParam(ref TextQuery, "iddoc", doc.ID.ToString());
            DataTable DT;

            if (!SS.ExecuteWithRead(TextQuery, out DT))
            {
                return;
            }
            if (DT.Rows.Count == 0)
            {
                Negative("В сборочном нет строк!");
                return;
            }
            ControlCC      = doc.ID.ToString();
            LabelControlCC = DT.Rows[0]["DocNumber"].ToString() + " от " + ((DateTime)DT.Rows[0]["DateTime"]).ToString("dd.MM.yy") + " СЕКЦИЯ: " + DT.Rows[0]["Section"].ToString().Trim() + "-" + DT.Rows[0]["Number"].ToString();
            Refresh();
            Positive("ВЫБРАН СБОРОЧНЫЙ ЛИСТ " + LabelControlCC);
            IndexTableItem = 0;
        }
Example #25
0
        } // ReactionPalleteDo

        /// <summary>
        ///
        /// </summary>
        /// <returns></returns>
        override protected bool TaskComplete()
        {
            string TextQuery = "update $Спр.ПеремещенияПаллет set $Спр.ПеремещенияПаллет.ШКПаллеты = :pallete_barcode where id = :id ";

            SQL1S.QuerySetParam(ref TextQuery, "id", Task.ID);
            SQL1S.QuerySetParam(ref TextQuery, "pallete_barcode", PalleteBarcode);
            SS.ExecuteWithoutReadNew(TextQuery);   //Насрать что там

            //
            TextQuery = "declare @result int; exec WPM_TaskLoaderDownComplete :id, @result out; select @result;";
            SQL1S.QuerySetParam(ref TextQuery, "id", Task.ID);
            if ((int)SS.ExecuteScalar(TextQuery) == 0)
            {
                return(false);
            }
            //Теперь дозапишем шк паллеты

            return(true);
        } // DownTaskComplete
Example #26
0
        } // Refresh

        /// <summary>
        ///
        /// </summary>
        private void CompleteLine()
        {
            string TextQuery =
                "UPDATE DT$АдресПеремещение SET " +
                "$АдресПеремещение.Дата1 = :NowDate, " +
                "$АдресПеремещение.Время1 = :NowTime, " +
                "$АдресПеремещение.Сотрудник0 = :employer, " +
                "$АдресПеремещение.Адрес1 = :Adress1 " +
                "WHERE " +
                "DT$АдресПеремещение .iddoc = :iddoc " +
                "and DT$АдресПеремещение .lineno_ = :lineno_; ";

            SQL1S.QuerySetParam(ref TextQuery, "iddoc", DocAP.ID);
            SQL1S.QuerySetParam(ref TextQuery, "lineno_", lineno_);
            SQL1S.QuerySetParam(ref TextQuery, "employer", Employer.ID);
            SQL1S.QuerySetParam(ref TextQuery, "Adress1", Adress1.ID);
            SS.ExecuteWithoutReadNew(TextQuery);
            PreviousAction = "Выложено " + Item.InvCode + " - " + Amount.ToString() + " шт. (строка " + lineno_.ToString() + ")";
            Refresh();
        }
Example #27
0
File: Doc.cs Project: sanekkop/WPM
        } // Refresh

        /// <summary>
        /// save document header date in database
        /// </summary>
        /// <returns></returns>
        public bool Save()
        {
            CheckSelect();
            if (!Modified)
            {
                return(true);    //документ не был изменен
            }
            string TextQuery =
                "update DH$" + TypeDoc + " set ";

            foreach (KeyValuePair <string, object> pair in HeaderAttributes)
            {
                TextQuery += "$" + pair.Key + " = :param, ";
                SQL1S.QuerySetParam(ref TextQuery, "param", pair.Value);
            }
            //режим последнюю запятую (с пробелом)
            TextQuery  = TextQuery.Substring(0, TextQuery.Length - 2);
            TextQuery += " where iddoc = :iddoc";
            SQL1S.QuerySetParam(ref TextQuery, "iddoc", ID);
            return(SS.ExecuteWithoutRead(TextQuery));
        } // Save
Example #28
0
        private bool LoadUnits(string ItemID)
        {
            //Загружает единицы товара в таблицу FUnits
            string TextQuery =
                "SELECT " +
                "Units.id as ID, " +
                "CAST(Units.$Спр.ЕдиницыШК.Коэффициент as int) as Coef, " +
                "Units.$Спр.ЕдиницыШК.Штрихкод as Barcode, " +
                "Units.$Спр.ЕдиницыШК.ОКЕИ as OKEI " +
                "FROM " +
                "$Спр.ЕдиницыШК as Units (nolock) " +
                "WHERE " +
                "Units.parentext = :CurrentItem and Units.ismark = 0";

            SQL1S.QuerySetParam(ref TextQuery, "CurrentItem", ItemID);
            if (!SS.ExecuteWithRead(TextQuery, out FUnits))
            {
                return(false);
            }
            return(true);
        }
Example #29
0
        private bool RBSampleSet(string Barcode)
        {
            if (CurrentAction != ActionSet.ScanItem)
            {
                FExcStr = "Неверно! " + WhatUNeed();
                return(false);
            }

            string TextQuery =
                "SELECT " +
                "Units.parentext as ItemID, Goods.$Спр.Товары.ИнвКод as InvCode " +
                "FROM _1sjourn as journ (nolock) " +
                "LEFT JOIN DT4327 as DocAT (nolock) ON DocAT.iddoc = journ.iddoc " +
                "LEFT JOIN $Спр.Товары as Goods (nolock) ON Goods.ID = DocAT.SP4312 " +
                "LEFT JOIN $Спр.ЕдиницыШК as Units (nolock) ON Units.parentext = Goods.ID " +
                "WHERE DocAT.SP4322 = '17530101 00:00:00.000' and Units.SP2233 = :Barcode and DocAT.SP4320 = :EmptyID and DocAT.iddoc = '" + DocSet.ID + "'";

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

            if (!ExecuteWithRead(TextQuery, out DT))
            {
                return(false);
            }
            if (DT.Rows.Count == 0)
            {
                FExcStr = "С таким штрихкодом товар не найден! " + WhatUNeed();
                return(false);
            }
            if (DT.Rows[0]["ItemID"].ToString() != CCItem.ID)
            {
                FExcStr = "Не тот товар! (отсканирован " + DT.Rows[0]["InvCode"].ToString().Trim() + ") " + WhatUNeed();
                return(false);
            }
            CurrentAction = ActionSet.EnterCount;

            FExcStr = WhatUNeed();
            return(true);
        }
Example #30
0
        } // RefillSet_ReactionSCItem

        //----------------------------------
        /// <summary>
        ///
        /// </summary>
        /// <returns></returns>
        private ABaseMode Refresh()
        {
            DocAP.Refresh();
            if (RobotWaiting)
            {
                CurrentAction = ActionSet.Waiting;
                return(Negative("1С не ответила! (флаг ожидания)"));
            }
            string TextQuery =
                "select top 1 " +
                "DocAP.$АдресПеремещение.Адрес0 as Adress0, " +
                "DocAP.$АдресПеремещение.Адрес1 as Adress1, " +
                "DocAP.$АдресПеремещение.Количество as Amount, " +
                "DocAP.$АдресПеремещение.Товар as Item, " +
                "DocAP.lineno_ as lineno_ " +
                "from DT$АдресПеремещение as DocAP (nolock) " +
                "where " +
                "DocAP.$АдресПеремещение.Дата1 = :EmptyDate " +
                "and DocAP.iddoc = :iddoc " +
                "and DocAP.$АдресПеремещение.Количество > 0 ";

            SQL1S.QuerySetParam(ref TextQuery, "iddoc", DocAP.ID);
            DataTable DT;

            SS.ExecuteWithReadNew(TextQuery, out DT);
            if (DT.Rows.Count == 0)
            {
                return(JumpTo(new RefillSetComplete(SS, this)));
            }
            //Всасываем все говно в наши объекты
            Adress0.FoundID(DT.Rows[0]["Adress0"].ToString());
            Adress1.FoundID(DT.Rows[0]["Adress1"].ToString());
            Amount = (int)(decimal)DT.Rows[0]["Amount"];
            Item   = new RefItem(SS); //Есть бага в объекте ARef, поэтому пересоздаем
            Item.FoundID(DT.Rows[0]["Item"].ToString());
            lineno_ = (short)DT.Rows[0]["lineno_"];

            CurrentAction = ActionSet.ScanAdress;
            return(Positive(SS.WhatUNeed(CurrentAction)));
        } // Refresh