示例#1
0
文件: Loader.cs 项目: sanekkop/WPM
        } // 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
示例#2
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
示例#3
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
示例#4
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)
示例#5
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
示例#6
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
示例#7
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();
        }
示例#8
0
文件: RefillSet.cs 项目: sanekkop/WPM
        } // Refresh

        /// <summary>
        ///
        /// </summary>
        private void CompleteLine()
        {
            string TextQuery =
                "Begin tran; " +
                "UPDATE DH$АдресПеремещение SET " +
                "$АдресПеремещение.ФлагОжиданияРобота = 1 " +
                "WHERE " +
                "DH$АдресПеремещение .iddoc = :iddoc; " +
                "if @@rowcount > 0 begin " +
                "UPDATE DT$АдресПеремещение SET " +
                "$АдресПеремещение.Дата1 = :NowDate, " +
                "$АдресПеремещение.Время1 = :NowTime " +
                "WHERE " +
                "DT$АдресПеремещение .iddoc = :iddoc " +
                "and DT$АдресПеремещение .lineno_ = :lineno_; " +
                "if @@rowcount > 0 commit tran " +
                "else rollback tran; " +
                "end " +
                "else rollback tran;";

            SQL1S.QuerySetParam(ref TextQuery, "iddoc", DocAP.ID);
            SQL1S.QuerySetParam(ref TextQuery, "lineno_", lineno_);
            SS.ExecuteWithoutReadNew(TextQuery);

            Dictionary <string, object> DataMapWrite = new Dictionary <string, object>();

            DataMapWrite["Спр.СинхронизацияДанных.ДокументВход"] = SS.ExtendID(DocAP.ID, "АдресПеремещение");
            DataMapWrite["Спр.СинхронизацияДанных.ДатаСпрВход1"] = SS.ExtendID(Employer.ID, "Спр.Сотрудники");

            string resultMessage;

            if (SS.ExecCommandOnlyResultNew("RefillSetAddItem2", DataMapWrite, out resultMessage))
            {
                PreviousAction = "Отобрано " + Item.InvCode + " - " + Amount.ToString() + " шт. (строка " + lineno_.ToString() + ")";
            }
            Refresh();
        } // CompleteLine
示例#9
0
        } // ReactionPalleteDo

        /// <summary>
        ///
        /// </summary>
        private void CompletePallete()
        {
            SS.OnReport(new ReportEventArgs("Фиксирую окончание отбора..."));

            //Для начала определим будет ли после отбора сразу выкладка или будет что-то еще
            // я хз как лучше, поэтому буду тянуть информацию из таблички движка, по документу DocAP
            bool   AuthorEmpty = true;
            string TextQuery   = "select top 1 sector0_type sector0_type, sector1_down sector1_down from RT_refill (nolock) where DocAP = :iddoc ";

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

            SS.ExecuteWithReadNew(TextQuery, out DT);
            if (DT.Rows.Count > 0)
            {
                if ((int)DT.Rows[0]["sector0_type"] == 3 || ((int)DT.Rows[0]["sector1_down"] == 0 && (int)DT.Rows[0]["sector0_type"] == 1))
                {
                    //Это с высокой полки или это на сектор у которого нет спуска
                    // значит мы сразу будем переходить к выкладке, после завершения отбора
                    AuthorEmpty = false;
                }
            }

            //Заполним шапку найденного документа
            SubjectDoc.SetAttributeHeader("ШКПаллеты", PalleteBarcode);
            SubjectDoc.SetAttributeHeader("КолСтрок", DocAP.RowCount);
            SubjectDoc.Save();

            //получим список всех полей табличной части документа адрес перемещения
            string columns;

            //ПО СТАРОМУ
            //SS.GetColumns("DT$АдресПеремещение", out columns);
            //columns = columns.Replace("IDDOC,", "");    //уберем iddoc, его мы перезаписывать не будем
            //КОНЕЦ ПО СТАРОМУ

            //ПО НОВОМУ
            SS.GetColumns("DT$АдресПеремещение", out columns, "min");
            columns = columns.Replace("min(IDDOC),", "");    //уберем iddoc, его мы перезаписывать не будем
            string tmpItem   = SS.QueryParser("$АдресПеремещение.Товар ").Trim();
            string tmpAmount = SS.QueryParser("$АдресПеремещение.Количество ").Trim();

            columns = columns.Replace("min(" + tmpItem + ")", tmpItem);        //группировка по товару
            columns = columns.Replace("min(" + tmpAmount, "sum(" + tmpAmount); //Сумма по количество
            columns = columns.Replace("min(IDDOC),", "");                      //уберем iddoc, его мы перезаписывать не будем
            //Теперь скопируем строки из одного документа в другой, а потом изменим некоторые поля
            //Будем делать так, без транзакции, пока. А то ну его на хуй вставлять с изменениями слишком сложно
            TextQuery =
                "insert into DT$АдресПеремещение " +
                //"select :target," + columns + " from DT$АдресПеремещение where iddoc = :source; " +   //ПО СТАРОМУ
                "select :target," + columns + " from DT$АдресПеремещение " +
                "where " +
                "iddoc = :source " +
                "and $АдресПеремещение.Состояние1 = :goodMove " +
                "and not $АдресПеремещение.Дата1 = :EmptyDate " +
                "group by $АдресПеремещение.Товар ; " +
                "if @@rowcount > 0 begin " +
                "update _1sjourn set $Автор = :employer where iddoc = :target; " +
                "update DT$АдресПеремещение SET " +
                "$АдресПеремещение.Состояние0 = $АдресПеремещение.Состояние1 , " +
                "$АдресПеремещение.Состояние1 = 2 , " +
                "$АдресПеремещение.Сотрудник0 = :EmptyID , " +
                "$АдресПеремещение.Адрес0 = $АдресПеремещение.Адрес1 , " +
                "$АдресПеремещение.Дата0 = :NowDate , " +
                "$АдресПеремещение.Дата1 = :EmptyDate , " +
                "$АдресПеремещение.Время0 = :NowTime , " +
                "$АдресПеремещение.Время1 = 0 , " +
                "$АдресПеремещение.Док = :source " +
                "where iddoc = :target; " +
                "exec WPM_RefillSetComplete :source, :adress0, :barcode_pallete " +
                "end else begin " +
                "update _1sjourn set $Автор = :EmptyID where iddoc = :target; " +
                //флаг под удаление возводим, иначе херня выходит
                "update RT_Refill set flag = 5 where docAP = :source " +
                "end";
            SQL1S.QuerySetParam(ref TextQuery, "target", SubjectDoc.ID);
            SQL1S.QuerySetParam(ref TextQuery, "source", DocAP.ID);
            SQL1S.QuerySetParam(ref TextQuery, "barcode_pallete", PalleteBarcode);
            SQL1S.QuerySetParam(ref TextQuery, "adress0", Adress0.ID);
            SQL1S.QuerySetParam(ref TextQuery, "employer", AuthorEmpty ? SQL1S.GetVoidID() : Employer.ID);
            SQL1S.QuerySetParam(ref TextQuery, "goodMove", 4);  //Хороший движение
            SS.ExecuteWithoutReadNew(TextQuery);
        } // CompletePallete