Пример #1
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
Пример #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
        } // SetTransfer (constructor)

        private void TransferComplete()
        {
            //Любая комплектация фиксируется
            DocCC.SetAttributeHeader("Дата3", DateTime.Now);
            DocCC.SetAttributeHeader("Время3", APIManager.NowSecond());
            DocCC.SetAttributeHeader("Комплектовщик", Employer.ID);
            DocCC.Save();

            SS.Employer = Employer;
            SS.LockoutDoc(DocCC.ID);
            SS.OnChangeMode(new ChangeModeEventArgs(Mode.SetInicialization));
            Positive();
        } // TransferComplete
Пример #4
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="TextQuery"></param>
        /// <returns></returns>
        public string QueryParser(string TextQuery)
        {
            QuerySetParam(ref TextQuery, "EmptyDate", GetVoidDate());
            QuerySetParam(ref TextQuery, "EmptyID", GetVoidID());
            QuerySetParam(ref TextQuery, "NowDate", DateTime.Now);
            QuerySetParam(ref TextQuery, "NowTime", APIManager.NowSecond());

            string result = TextQuery;
            int    curI   = result.IndexOf('$');

            while (curI != -1)
            {
                int    endI = result.Substring(curI + 1).IndexOf(' ');
                string part = result.Substring(curI + 1, endI);
                result = result.Replace("$" + part + " ", GetSynh(part) + " ");
                curI   = result.IndexOf('$');
            }
            return(result);
        }
Пример #5
0
        private bool RSCDown(string IDDorID, bool thisID)
        {
            if (!thisID)
            {
                if (IsSC(IDDorID, "Сотрудники"))
                {
                    return(ReactionCancel());
                }
                else if (IsSC(IDDorID, "Принтеры"))
                {
                    if (!Printer.FoundIDD(IDDorID))
                    {
                        return(false);
                    }
                    else
                    {
                        FExcStr = "Принтер выбран!";
                        return(true);
                    }
                }
                else
                {
                    FExcStr = "Нет действий с данным штрихкодом!";
                    return(false);
                }
            }
            else
            {
                string TextQuery =
                    "Select " +
                    "$Спр.МестаПогрузки.Дата4 as Date, " +
                    "$Спр.МестаПогрузки.КонтрольНабора as Doc " +
                    "from $Спр.МестаПогрузки (nolock) where id = :id";
                QuerySetParam(ref TextQuery, "id", IDDorID);

                DataTable DT;
                if (!ExecuteWithRead(TextQuery, out DT))
                {
                    return(false);
                }
                if (DT.Rows.Count == 0)
                {
                    FExcStr = "Нет действий с данным штрихкодом!";
                    return(false);
                }
                if (DT.Rows[0]["Doc"].ToString() != DocDown.ID)
                {
                    FExcStr = "Место от другого сборочного!";
                    return(false);
                }
                if ((DateTime)DT.Rows[0]["Date"] != GetVoidDate())
                {
                    FExcStr = "Место уже отобрано!";
                    return(false);
                }

                //Лютый пиздец начинается!
                TextQuery =
                    "begin tran; " +
                    "UPDATE $Спр.МестаПогрузки " +
                    "SET " +
                    "$Спр.МестаПогрузки.Дата4 = :Date , " +
                    "$Спр.МестаПогрузки.Время4 = :Time " +
                    "WHERE " +
                    "id = :itemid; " +
                    "if @@rowcount = 0 rollback tran " +
                    "else begin " +
                    "if exists ( select top 1 id from $Спр.МестаПогрузки as Ref " +
                    "where " +
                    "Ref.ismark = 0 " +
                    "and Ref.$Спр.МестаПогрузки.КонтрольНабора = :iddoc " +
                    "and Ref.$Спр.МестаПогрузки.Дата4 = :EmptyDate ) " +
                    "commit tran " +
                    "else begin " +
                    "declare @res int; " +
                    "exec WPM_GetOrderDown :Employer, :NameParent, @res OUTPUT; " +
                    "if @res = 0 rollback tran else commit tran " +
                    "end " +
                    "end ";

                QuerySetParam(ref TextQuery, "Employer", Employer.ID);
                QuerySetParam(ref TextQuery, "Date", DateTime.Now);
                QuerySetParam(ref TextQuery, "Time", APIManager.NowSecond());
                QuerySetParam(ref TextQuery, "itemid", IDDorID);
                QuerySetParam(ref TextQuery, "iddoc", DocDown.ID);
                QuerySetParam(ref TextQuery, "EmptyDate", GetVoidDate());
                QuerySetParam(ref TextQuery, "NameParent", DocDown.Sector.Trim());

                if (!ExecuteWithoutRead(TextQuery))
                {
                    return(false);
                }
                bool res = ToModeDown();
                OnChangeMode(new ChangeModeEventArgs(FCurrentMode));
                return(res);
            }
        }
Пример #6
0
        } // RSCFreeDownComplete

        private bool RSCNewComplectation(string IDDorID, bool thisID)
        {
            if (!thisID)
            {
                if (IsSC(IDDorID, "Сотрудники"))
                {
                    return(ReactionCancel());
                }
                else
                {
                    FExcStr = "Нет действий с данным штрихкодом!";
                    return(false);
                }
            }
            else
            {
                string TextQuery =
                    "Select " +
                    "$Спр.МестаПогрузки.Дата8 as Date, " +
                    "$Спр.МестаПогрузки.КонтрольНабора as Doc, " +
                    "$Спр.МестаПогрузки.Сотрудник8 as Employer " +
                    "from $Спр.МестаПогрузки (nolock) where id = :id";
                QuerySetParam(ref TextQuery, "id", IDDorID);

                DataTable DT;
                if (!ExecuteWithRead(TextQuery, out DT))
                {
                    return(false);
                }
                if (DT.Rows.Count == 0)
                {
                    FExcStr = "Нет действий с данным штрихкодом!";
                    return(false);
                }

                LoadBadDoc(IDDorID);//Подсосем данные по документу для просмотра состояния

                if (DT.Rows[0]["Doc"].ToString() != DocDown.ID)
                {
                    FExcStr = "Место от другого сборочного!";
                    return(false);
                }
                if ((DateTime)DT.Rows[0]["Date"] != GetVoidDate())
                {
                    FExcStr = "Место уже отобрано!";
                    return(false);
                }
                if (DT.Rows[0]["Employer"].ToString() != Employer.ID)
                {
                    FExcStr = "Этого места нет в задании!";
                    return(false);
                }

                //Лютый пиздец начинается!
                TextQuery =
                    "begin tran; " +
                    "UPDATE $Спр.МестаПогрузки " +
                    "SET " +
                    "$Спр.МестаПогрузки.Дата8 = :Date , " +
                    "$Спр.МестаПогрузки.Время8 = :Time " +
                    //"$Спр.МестаПогрузки.Адрес9 = dbo.WMP_fn_GetAdressComplete(id) " +
                    "WHERE " +
                    "id = :itemid; " +
                    "if @@rowcount = 0 rollback tran " +
                    "else begin " +
                    "if exists ( " +
                    "select top 1 Ref.id from $Спр.МестаПогрузки as Ref " +
                    "inner join $Спр.Секции as SectionsCollect (nolock) " +
                    "ON SectionsCollect.id = Ref.$Спр.МестаПогрузки.Адрес7 " +
                    "inner join $Спр.Секции as RefSectionsParent (nolock) " +
                    "on left(SectionsCollect.descr, 2) = RefSectionsParent.descr " +
                    "where " +
                    "Ref.ismark = 0 " +
                    "and RefSectionsParent.descr = :NameParent " +
                    "and Ref.$Спр.МестаПогрузки.КонтрольНабора = :iddoc " +
                    "and Ref.$Спр.МестаПогрузки.Дата8 = :EmptyDate ) " +
                    "commit tran " +
                    "else begin " +
                    "declare @res int; " +
                    "exec WPM_GetOrderComplectationNew :Employer, :NameParent, 0, @res OUTPUT; " +
                    "if @res = 0 rollback tran else commit tran " +
                    "end " +
                    "end ";

                QuerySetParam(ref TextQuery, "Employer", Employer.ID);
                QuerySetParam(ref TextQuery, "Date", DateTime.Now);
                QuerySetParam(ref TextQuery, "Time", APIManager.NowSecond());
                QuerySetParam(ref TextQuery, "itemid", IDDorID);
                QuerySetParam(ref TextQuery, "iddoc", DocDown.ID);
                QuerySetParam(ref TextQuery, "EmptyDate", GetVoidDate());
                QuerySetParam(ref TextQuery, "NameParent", DocDown.Sector.Trim());

                if (!ExecuteWithoutRead(TextQuery))
                {
                    return(false);
                }
                bool res = ToModeNewComplectation();
                OnChangeMode(new ChangeModeEventArgs(FCurrentMode));
                return(res);
            }
        }//RSCNewComplectation
Пример #7
0
        private bool RSCLoading(string ID)
        {
            //FExcStr - несет смысл
            if (IsSC(ID, "Сотрудники"))
            {
                //Временно отключим блокировку путевого при погрузке версия 4.47
                //LockoutDoc(WayBill.ID);
                return(ToModeChoiseWork(ID));
            }

            //проверим чек погрузки
            string TextQuery =
                "select DocWayBill.$ПутевойЛист.ЧекПогрузка " +
                "from DH$ПутевойЛист as DocWayBill (nolock) " +
                "where " +
                "DocWayBill.iddoc = :iddoc ";

            QuerySetParam(ref TextQuery, "iddoc", WayBill.ID);
            if (Int32.Parse(ExecuteScalar(TextQuery).ToString()) == 0)
            {
                //погрузка не разрешена
                FExcStr = "Погрузка запрещена!";
                return(false);
            }
            TextQuery =
                "Select " +
                "$Спр.МестаПогрузки.Дата6 as Date, " +
                "right($Спр.МестаПогрузки.Док , 9) as Doc " +
                "from $Спр.МестаПогрузки (nolock) where id = :id";
            QuerySetParam(ref TextQuery, "id", ID);
            QuerySetParam(ref TextQuery, "EmptyID", GetVoidID());

            DataTable DT;

            if (!ExecuteWithRead(TextQuery, out DT))
            {
                return(false);
            }
            if (DT.Rows.Count == 0)
            {
                FExcStr = "Нет действий с данным штрихкодом в этом режиме!";
                //блокируем путевой

                /*TextQuery =
                 *             "UPDATE DH$ПутевойЛист " +
                 *                 "SET " +
                 *                     "$ПутевойЛист.ЧекПогрузка = 0 " +
                 *             "WHERE " +
                 *                 "DH$ПутевойЛист .iddoc = :id";
                 *
                 * QuerySetParam(ref TextQuery, "id", WayBill.ID);
                 * ExecuteWithoutRead(TextQuery);
                 */
                return(false);
            }
            if ((DateTime)DT.Rows[0]["Date"] != GetVoidDate())
            {
                FExcStr = "Ошибка! Место уже погружено!";
                //блокируем путевой

                /*TextQuery =
                 *             "UPDATE DH$ПутевойЛист " +
                 *                 "SET " +
                 *                     "$ПутевойЛист.ЧекПогрузка = 0 " +
                 *             "WHERE " +
                 *                 "DH$ПутевойЛист .iddoc = :id";
                 *
                 * QuerySetParam(ref TextQuery, "id", WayBill.ID);
                 * ExecuteWithoutRead(TextQuery);
                 */
                return(false);
            }

            //Тут какая-то неведомая ошибка возникает, не знаю в чем дело засунул в попытку
            DataRow[] DR;
            try
            {
                DR = WayBillDT.Select("Doc = '" + DT.Rows[0]["Doc"].ToString() + "'");
            }
            catch
            {
                FExcStr = "Неведомая ошибка! Шайтан!";
                //блокируем путевой

                /*TextQuery =
                 *             "UPDATE DH$ПутевойЛист " +
                 *                 "SET " +
                 *                     "$ПутевойЛист.ЧекПогрузка = 0 " +
                 *             "WHERE " +
                 *                 "DH$ПутевойЛист .iddoc = :id";
                 *
                 * QuerySetParam(ref TextQuery, "id", WayBill.ID);
                 * ExecuteWithoutRead(TextQuery);
                 */
                return(false);
            }
            if (DR.Length == 0)
            {
                FExcStr = "Не числится в данном путевом!";
                //блокируем путевой
                TextQuery =
                    "UPDATE DH$ПутевойЛист " +
                    "SET " +
                    "$ПутевойЛист.ЧекПогрузка = 0 " +
                    "WHERE " +
                    "DH$ПутевойЛист .iddoc = :id";

                QuerySetParam(ref TextQuery, "id", WayBill.ID);
                ExecuteWithoutRead(TextQuery);

                return(false);
            }

            if (Const.OrderControl)
            {
                string    currCounter = DR[0]["AdressCounter"].ToString();
                DataRow[] tmpDR       = WayBillDT.Select("AdressCounter > " + currCounter);
                if (tmpDR.Length > 0)
                {
                    tmpDR = WayBillDT.Select("AdressCounter = " + currCounter);
                    if (tmpDR.Length != WayBillDT.Rows.Count)
                    {
                        FExcStr = "Нарушена последовательность погрузки!";
                        //блокируем путевой

                        /*TextQuery =
                         *             "UPDATE DH$ПутевойЛист " +
                         *                 "SET " +
                         *                     "$ПутевойЛист.ЧекПогрузка = 0 " +
                         *             "WHERE " +
                         *                 "DH$ПутевойЛист .iddoc = :id";
                         *
                         * QuerySetParam(ref TextQuery, "id", WayBill.ID);
                         * ExecuteWithoutRead(TextQuery);
                         */
                        return(false);
                    }
                }
            }

            TextQuery =
                "UPDATE $Спр.МестаПогрузки " +
                "SET " +
                "$Спр.МестаПогрузки.Дата6 = :Date, " +
                "$Спр.МестаПогрузки.Время6 = :Time " +
                "WHERE " +
                "$Спр.МестаПогрузки .id = :id";

            QuerySetParam(ref TextQuery, "Date", DateTime.Now);
            QuerySetParam(ref TextQuery, "Time", APIManager.NowSecond());
            QuerySetParam(ref TextQuery, "id", ID);

            if (!ExecuteWithoutRead(TextQuery))
            {
                return(false);
            }

            int needCurrentLine = WayBillDT.Rows.IndexOf(DR[0]);

            if (!ToModeLoading(WayBill.ID))
            {
                return(false);
            }
            CurrentLine = needCurrentLine;

            if (colorSwitcher)
            {
                FExcStr = "Погрузка МЕСТА зафиксирована";
            }
            else
            {
                FExcStr = "ПОГРУЗКА места ЗАФИКСИРОВАНА";
            }
            colorSwitcher = !colorSwitcher;
            return(true);
        }
Пример #8
0
        //Reaction
        private bool RSCAcceptance(string IDD)
        {
            if (IsSC(IDD, "Сотрудники"))
            {
                if (!ToModeChoiseWork(IDD))
                {
                    return(false);
                }
                QuitModeAcceptance();
                return(true);
            }
            else if (IsSC(IDD, "Принтеры"))
            {
                if (Printer.GetAttribute("IDD").ToString() == IDD)
                {
                    FPrinter = new RefPrinter(this);
                    FExcStr  = "Обнулили принтер!";
                    return(true);
                }
                if (!Printer.FoundIDD(IDD))
                {
                    return(false);
                }
                return(true);
            }
            else if (IsSC(IDD, "Секции"))
            {
                if (FPalletID == "")
                {
                    FExcStr = "Не выбрана паллета!";
                    return(false);
                }
                string SectionsID;
                GetSC(IDD, "Секции", out SectionsID);

                string StrPallets = "";
                foreach (DataRow dr in FPallets.Rows)
                {
                    StrPallets += ", '" + dr["ID"].ToString() + "'";
                }
                StrPallets = StrPallets.Substring(2);   //Убираем спедери запятые

                string TextQuery =
                    "UPDATE $Спр.ПеремещенияПаллет " +
                    "SET " +
                    "$Спр.ПеремещенияПаллет.Адрес0 = :ID, " +
                    "$Спр.ПеремещенияПаллет.ФлагОперации = 2 " +
                    "WHERE $Спр.ПеремещенияПаллет .id in (:Pallet) ";
                TextQuery = TextQuery.Replace(":Pallet", StrPallets);
                QuerySetParam(ref TextQuery, "ID", SectionsID);
                QuerySetParam(ref TextQuery, "EmptyDate", GetVoidDate());
                QuerySetParam(ref TextQuery, "EmployerID", Employer.ID);
                QuerySetParam(ref TextQuery, "Date", DateTime.Now);
                QuerySetParam(ref TextQuery, "Time", APIManager.NowSecond());
                if (!ExecuteWithoutRead(TextQuery))
                {
                    return(false);
                }
                //почистим табличку паллет от греха и почистим паллеты

                FPallets.Rows.Clear();
                FPalletID      = "";
                FBarcodePallet = "";

                return(true);
            }
            else
            {
                FExcStr = "Не верный тип справочника!";
                return(false);
            }
        } // SCAcceptance
Пример #9
0
        private bool CompleteLineSampleSet()
        {
            string TextQuery;
            //Заглушка, рефрешим позицию, чтобы не было проблем, если оборвется связь
            int CountFact = CCItem.CountFact;

            if (!RDSampleSet(DocSet.ID, CCItem.AdressID))
            {
                CCItem.CountFact = CountFact;
                return(false);
            }
            CCItem.CountFact = CountFact;
            // текущим событием снова должен встать СканАдреса, тк набор образцов продолжается
            CurrentAction = ActionSet.ScanAdress;   //Отключение по константе
            //конец заглушки

            int Line = CCItem.CurrLine;

            if (CCItem.Count > CCItem.CountFact)
            {
                if (Const.StopCorrect)
                {
                    FExcStr = "Возможность дробить строку отключена!";
                    return(false);
                }
                //добавляем строчку
                TextQuery =
                    "begin tran; " +
                    "update DT$АдресПеремещение " +
                    "set $АдресПеремещение.Количество = :remaincount " +
                    "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 $АдресПеремещение.Товар , :count ," +
                    "$АдресПеремещение.Единица , $АдресПеремещение.Коэффициент ," +
                    "$АдресПеремещение.Состояние0 , $АдресПеремещение.Состояние1 , :Employer , $АдресПеремещение.Адрес0 ," +
                    " :AdressCollect , $АдресПеремещение.Дата0 , :Date1 , $АдресПеремещение.Время0 , :Time1 , $АдресПеремещение.Док , $АдресПеремещение.НомерСтрокиДока , $АдресПеремещение.ФлагДопроведения , $АдресПеремещение.ФлагОбязательногоАдреса , " +
                    "(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 rollback tran else commit tran " +
                    "end " +
                    "else rollback";

                SQL1S.QuerySetParam(ref TextQuery, "count", CCItem.CountFact);
                SQL1S.QuerySetParam(ref TextQuery, "remaincount", CCItem.Count - CCItem.CountFact);
                SQL1S.QuerySetParam(ref TextQuery, "iddoc", DocSet.ID);
                SQL1S.QuerySetParam(ref TextQuery, "currline", CCItem.CurrLine);
                SQL1S.QuerySetParam(ref TextQuery, "AdressCollect", DocSet.AdressCollect);
                SQL1S.QuerySetParam(ref TextQuery, "Employer", Employer.ID);
                SQL1S.QuerySetParam(ref TextQuery, "Date1", DateTime.Now);
                SQL1S.QuerySetParam(ref TextQuery, "Time1", APIManager.NowSecond());
                DataTable DT;
                if (!ExecuteWithRead(TextQuery, out DT))
                {
                    return(false);
                }
            }
            else
            {
                //фиксируем строку
                TextQuery = "UPDATE DT$АдресПеремещение WITH (rowlock) " +
                            "SET $АдресПеремещение.Дата1 = :Date1, " +
                            "$АдресПеремещение.Время1 = :Time1, " +
                            "$АдресПеремещение.Адрес1 = :AdressCollect " +
                            "WHERE DT4327.iddoc = :Doc and DT4327.lineno_ = :lineno_; ";
                SQL1S.QuerySetParam(ref TextQuery, "Doc", DocSet.ID);
                SQL1S.QuerySetParam(ref TextQuery, "Date1", DateTime.Now);
                SQL1S.QuerySetParam(ref TextQuery, "Time1", APIManager.NowSecond());
                SQL1S.QuerySetParam(ref TextQuery, "AdressCollect", DocSet.AdressCollect);
                SQL1S.QuerySetParam(ref TextQuery, "lineno_", CCItem.CurrLine);
                if (!ExecuteWithoutRead(TextQuery))
                {
                    return(false);
                }
            }
            //Запись прошла успешно

            RefreshAmount();
            CurrentAction  = ActionSet.ScanAdress;  //на всякий случай, если там что-нибудь накроется, то во вьюхе по крайней мере нельзя будет повторно ввести количество
            PreviousAction = "Отобрано " + CCItem.InvCode.Trim() + " - " + CCItem.CountFact.ToString() + " шт. (строка " + Line.ToString() + ")";
            if (AllSetsRow > 0)
            {
                RDSampleSet(DocSet.ID, null);
            }
            //если в доке больше нет не отобранных, оповестим 1с о завершении набора образцов
            if (AllSetsRow == 0)
            {
                FExcStr       = "";
                CurrentAction = ActionSet.Waiting;
            }
            return(true);
        } //CompleteLineSampleSet
Пример #10
0
        public bool CompleteCorrectSample(int Choise, int CountCorrect)
        {
            //Заглушка, рефрешим позицию, чтобы не было проблем, если оборвется связь
            if (!RDSampleSet(DocSet.ID, CCItem.AdressID))
            {
                FCurrentMode = Mode.SampleSetCorrect;
                return(false);
            }
            FCurrentMode = Mode.SampleSetCorrect;
            //конец заглушки

            if (CountCorrect <= 0 || CountCorrect > CCItem.Count)
            {
                FExcStr = "Нельзя скорректировать столько!";
                return(false);
            }

            int    AdressCode;
            string CorrectReason;
            string What;

            switch (Choise)
            {
            case 1:
                AdressCode    = 7;
                CorrectReason = "   2EU   ";
                What          = "брак";
                break;

            case 2:
                AdressCode    = 12;
                CorrectReason = "   2EV   ";
                What          = "недостача";
                break;

            default:
                FExcStr = "Неясная причина корректировки!";
                return(false);
            }
            string TextQuery;

            if (CountCorrect == CCItem.Count) //меняем скорректированную строку
            {
                TextQuery =
                    "begin tran; " +
                    "update DT$АдресПеремещение " +
                    "set $АдресПеремещение.Количество = :CountCorrect, $АдресПеремещение.Состояние1 = :AdressCode, $АдресПеремещение.Адрес1 = $АдресПеремещение.Адрес0 ," +
                    "$АдресПеремещение.Дата1 = :Date1, $АдресПеремещение.Время1 = :Time1 " +
                    "where DT$АдресПеремещение .iddoc = :iddoc and DT$АдресПеремещение .lineno_ = :currline; " +
                    "if @@rowcount = 0 rollback tran else commit tran ";
            }
            else   //меняем скорректированную строку и добавляем новую, исходя из количества
            {
                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 , :Date1 , $АдресПеремещение.Время0 , :Time1 , $АдресПеремещение.Док , $АдресПеремещение.НомерСтрокиДока , $АдресПеремещение.ФлагДопроведения , $АдресПеремещение.ФлагОбязательногоАдреса , " +
                    "(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 rollback tran else commit tran " +
                    "end " +
                    "else rollback";
            }

            QuerySetParam(ref TextQuery, "iddoc", DocSet.ID);
            QuerySetParam(ref TextQuery, "currline", CCItem.CurrLine);
            QuerySetParam(ref TextQuery, "CountCorrect", CountCorrect);
            QuerySetParam(ref TextQuery, "Date1", DateTime.Now);
            QuerySetParam(ref TextQuery, "Time1", APIManager.NowSecond());
            QuerySetParam(ref TextQuery, "count", CCItem.Count - CountCorrect);
            QuerySetParam(ref TextQuery, "Reason", CorrectReason);
            QuerySetParam(ref TextQuery, "AdressCode", AdressCode);
            QuerySetParam(ref TextQuery, "Employer", Employer.ID);

            if (!ExecuteWithoutRead(TextQuery))
            {
                return(false);
            }
            PreviousAction = "Корректировка принята " + CCItem.InvCode.Trim() + " - " + CountCorrect.ToString() + " шт. (" + What + ")";

            return(ToModeSampleSet());
        } // CompleteCorrectSample
Пример #11
0
        } // RefreshCCRP

        public bool CompleteLineSet()
        {
            string TextQuery;
            //Заглушка, рефрешим позицию, чтобы не было проблем, если оборвется связь
            int CountFact = CCItem.CountFact;

            if (!ToModeSet(CCItem.AdressID, DocSet.ID))
            {
                CCItem.CountFact = CountFact;
                CurrentAction    = DocSet.BoxID == SQL1S.GetVoidID() ? ActionSet.ScanAdress : ActionSet.ScanBox; //Отключение по константе
                return(false);
            }
            CCItem.CountFact = CountFact;
            CurrentAction    = DocSet.BoxID == SQL1S.GetVoidID() ? ActionSet.ScanAdress : ActionSet.ScanBox; //Отключение по константе
            //конец заглушки

            int Line = CCItem.CurrLine;

            if (CCItem.Count > CCItem.CountFact)
            {
                if (Const.StopCorrect)
                {
                    FExcStr = "Возможность дробить строку отключена!";
                    return(false);
                }
                //добавить строчку надо
                TextQuery =
                    "begin tran; " +
                    "update DT$КонтрольНабора " +
                    "set $КонтрольНабора.Количество = :remaincount, " +
                    "$КонтрольНабора.Сумма =  :remaincount*$КонтрольНабора.Цена " +
                    "where DT$КонтрольНабора .iddoc = :iddoc and DT$КонтрольНабора .lineno_ = :currline; " +
                    "if @@rowcount > 0 begin " +
                    "insert into DT$КонтрольНабора ($КонтрольНабора.СтрокаИсх , $КонтрольНабора.Товар , $КонтрольНабора.Количество ," +
                    "$КонтрольНабора.Единица , $КонтрольНабора.Цена , $КонтрольНабора.Коэффициент , $КонтрольНабора.Сумма ," +
                    "$КонтрольНабора.Секция , $КонтрольНабора.Корректировка , $КонтрольНабора.ПричинаКорректировки , $КонтрольНабора.ЕдиницаШК ," +
                    "$КонтрольНабора.Состояние0 , $КонтрольНабора.Адрес0 , $КонтрольНабора.СостояниеКорр , $КонтрольНабора.АдресКорр ," +
                    "$КонтрольНабора.ДокБлокировки , $КонтрольНабора.Дата5 , $КонтрольНабора.Время5 , $КонтрольНабора.Контейнер , " +
                    "lineno_, iddoc, $КонтрольНабора.Контроль ) " +
                    "select $КонтрольНабора.СтрокаИсх , $КонтрольНабора.Товар , :count ," +
                    "$КонтрольНабора.Единица , $КонтрольНабора.Цена , $КонтрольНабора.Коэффициент , :count*$КонтрольНабора.Цена ," +
                    "$КонтрольНабора.Секция , $КонтрольНабора.Корректировка , $КонтрольНабора.ПричинаКорректировки , $КонтрольНабора.ЕдиницаШК ," +
                    "$КонтрольНабора.Состояние0 , $КонтрольНабора.Адрес0 , $КонтрольНабора.СостояниеКорр , $КонтрольНабора.АдресКорр ," +
                    "$КонтрольНабора.ДокБлокировки , $КонтрольНабора.Дата5 , $КонтрольНабора.Время5 , $КонтрольНабора.Контейнер , " +
                    "(select max(lineno_) + 1 from DT$КонтрольНабора where iddoc = :iddoc), iddoc, 0 " +
                    "from DT$КонтрольНабора as ForInst where ForInst.iddoc = :iddoc and ForInst.lineno_ = :currline; " +
                    "select max(lineno_) as newline from DT$КонтрольНабора where iddoc = :iddoc; " +
                    "if @@rowcount = 0 rollback tran else commit tran " +
                    "end " +
                    "else rollback";
                QuerySetParam(ref TextQuery, "count", CCItem.CountFact);
                QuerySetParam(ref TextQuery, "remaincount", CCItem.Count - CCItem.CountFact);
                QuerySetParam(ref TextQuery, "iddoc", DocSet.ID);
                QuerySetParam(ref TextQuery, "currline", CCItem.CurrLine);

                DataTable DT;
                if (!ExecuteWithRead(TextQuery, out DT))
                {
                    return(false);
                }

                //Писать будем в добалвенную, так лучше! Поэтому обновляем корректную строчку
                CCItem.CurrLine = (short)DT.Rows[0]["newline"];
            }

            //фиксируем строку
            TextQuery = "UPDATE DT$КонтрольНабора WITH (rowlock) " +
                        "SET $КонтрольНабора.Дата5 = :Date5, " +
                        "$КонтрольНабора.Время5 = :Time5, " +
                        "$КонтрольНабора.Контейнер = :id " +
                        "WHERE DT$КонтрольНабора .iddoc = :DocCC and DT$КонтрольНабора .lineno_ = :lineno_; ";
            QuerySetParam(ref TextQuery, "id", GetVoidID());
            QuerySetParam(ref TextQuery, "DocCC", DocSet.ID);
            QuerySetParam(ref TextQuery, "Date5", DateTime.Now);
            QuerySetParam(ref TextQuery, "Time5", APIManager.NowSecond());
            QuerySetParam(ref TextQuery, "lineno_", CCItem.CurrLine);
            if (!ExecuteWithoutRead(TextQuery))
            {
                return(false);
            }
            //Запись прошла успешно
            CurrentAction  = ActionSet.ScanAdress;  //на всякий случай, если там что-нибудь наебнется, то во вьюхе по крайней мере нельзя будет повторно ввести количество
            PreviousAction = "Отобрано " + CCItem.InvCode.Trim() + " - " + CCItem.CountFact.ToString() + " шт. (строка " + Line.ToString() + ")";
            return(ToModeSet(null, null));
        } // CompleteLineSet