Ejemplo n.º 1
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
Ejemplo n.º 2
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