Exemplo n.º 1
0
        public bool EnterCountSetSelfControl(int Count)
        {
            if (CurrentAction != ActionSet.EnterCount)
            {
                FExcStr = "Неверно! " + WhatUNeed();
                return(false);
            }
            if (Count <= 0)
            {
                FExcStr = "Количество указано неверно!";
                return(false);
            }
            string QueryPart;

            if (CCItem.Count == Count)
            {
                //Контроль удачно пройден, очистим таблицу
                QueryPart = "set $КонтрольНабора.Контроль = -1*($КонтрольНабора.Контроль -1) ";
                DataRow[] DR = TableSet.Select("Item = '" + CCItem.ID + "'");
                //Полюбому найдется строка и полюбому только одна
                DR[0].Delete();
            }
            else
            {
                QueryPart = "set $КонтрольНабора.Контроль = $КонтрольНабора.Контроль - 1 ";
            }
            string TextQuery =
                "update DT$КонтрольНабора " + QueryPart +
                "where " +
                "DT$КонтрольНабора .iddoc = :iddoc " +
                "and DT$КонтрольНабора .$КонтрольНабора.Товар = :item ";

            QuerySetParam(ref TextQuery, "iddoc", DocSet.ID);
            QuerySetParam(ref TextQuery, "item", CCItem.ID);
            if (!ExecuteWithoutRead(TextQuery))
            {
                return(false);
            }
            PreviousAction = "Проверено " + CCItem.InvCode.Trim() + " - " + Count.ToString() + ". " + (CCItem.Count == Count ? "" : "НЕВЕРНО!");
            CurrentAction  = ActionSet.ScanItem;
            FExcStr        = WhatUNeed();
            bool result = CCItem.Count == Count ? true : false; //чтобы издать печальный звук

            CCItem = new StructItemSet();
            if (result && TableSet.Rows.Count == 0)
            {
                //все выбили, валим отсчюда!
                return(ToModeSetComplete());
            }
            return(result);
        } // EnterCountSetSelfControl
Exemplo n.º 2
0
        private bool RBSetSelfControl(string Barcode)
        {
            if (CurrentAction != ActionSet.ScanItem)
            {
                FExcStr = "Неверно! " + WhatUNeed();
                return(false);
            }
            string TextQuery =
                "SELECT " +
                "Units.parentext as ItemID, " +
                "Units.$Спр.ЕдиницыШК.ОКЕИ as OKEI " +
                "FROM $Спр.ЕдиницыШК as Units (nolock) " +
                "LEFT JOIN $Спр.Товары as Goods (nolock) " +
                "ON Goods.id = Units.parentext " +
                "WHERE Units.$Спр.ЕдиницыШК.Штрихкод = :Barcode ";

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

            if (!ExecuteWithRead(TextQuery, out DT))
            {
                return(false);
            }
            if (DT.Rows.Count == 0)
            {
                FExcStr = "С таким штрихкодом товар не найден! " + WhatUNeed();
                return(false);
            }
            DataRow[] DR = TableSet.Select("Item = '" + DT.Rows[0]["ItemID"].ToString() + "'");
            if (DR.Length == 0)
            {
                FExcStr = "Товара нет в сборочном или он уже проконтролирован!";
                return(false);
            }
            CCItem         = new StructItemSet();
            CCItem.ID      = DR[0]["Item"].ToString();
            CCItem.InvCode = DR[0]["InvCode"].ToString();
            CCItem.Name    = DR[0]["Descr"].ToString();
            CCItem.Details = (int)(decimal)DR[0]["Details"];
            CCItem.Count   = (int)(decimal)DR[0]["Amount"];
            CurrentAction  = ActionSet.EnterCount;

            FExcStr = WhatUNeed();
            return(true);
        }
Exemplo n.º 3
0
        private bool MultiplesOKEI2(ref StructItemSet Item)
        {
            string TextQuery =
                "SELECT " +
                "isnull(OKEI2.descr, OKEI.descr) as Name, " +
                "CAST(Units.$Спр.ЕдиницыШК.Коэффициент as int) as Coef, " +
                "ceiling(:amount/$Спр.ЕдиницыШК.Коэффициент ) as AmountOKEI2 " +
                "FROM " +
                "$Спр.ЕдиницыШК as Units (nolock) " +
                "inner join $Спр.ОКЕИ as OKEI (nolock) " +
                "on OKEI.id = Units.$Спр.ЕдиницыШК.ОКЕИ " +
                "left join $Спр.ОКЕИ as OKEI2 (nolock) " +
                "on OKEI2.id = Units.$Спр.ЕдиницыШК.ОКЕИ2 " +
                "WHERE " +
                "Units.parentext = :CurrentItem " +
                "and OKEI.id <> :OKEIKit" +
                "and Units.ismark = 0 " +
                "and ceiling(:amount/$Спр.ЕдиницыШК.Коэффициент )*$Спр.ЕдиницыШК.Коэффициент = :amount " +
                "order by AmountOKEI2";

            QuerySetParam(ref TextQuery, "CurrentItem", Item.ID);
            QuerySetParam(ref TextQuery, "amount", Item.Count);
            QuerySetParam(ref TextQuery, "OKEIKit", OKEIKit);

            DataTable DT;

            if (!ExecuteWithRead(TextQuery, out DT))
            {
                return(false);
            }
            if (DT.Rows.Count == 0)
            {
                Item.OKEI2Count = Item.Count;
                Item.OKEI2      = "шт";
                Item.OKEI2Coef  = 1;
            }
            else
            {
                //Бред какой-то, но так, чтобы не звонили по ночам
                Item.OKEI2Count = (int)(decimal)DT.Rows[0]["AmountOKEI2"];
                Item.OKEI2      = DT.Rows[0]["Name"].ToString();
                Item.OKEI2Coef  = (int)DT.Rows[0]["Coef"];
            }
            return(true);
        } // MultiplesOKEI2
Exemplo n.º 4
0
        //BASE METHOD's
        public bool ToModeSetSelfControl()
        {
            if (!LoadTableSet())
            {
                return(false);
            }
            if (TableSet.Rows.Count == 0)
            {
                //Ничего нет для самоконтроля, пойдем в завершение набора
                return(ToModeSetComplete());
            }

            CCItem         = new StructItemSet();
            PreviousAction = "";
            FExcStr        = "Сканируйте товар!";
            FCurrentMode   = Mode.SetSelfContorl;
            CurrentAction  = ActionSet.ScanItem;
            return(true);
        }
Exemplo n.º 5
0
        } // EnterCountSampleSet

        private bool RDSampleSet(string IDD, string AdressID)
        {
            string IDDoc;
            string DocType;
            Dictionary <string, object> DataMap;

            if (!GetDocNew(IDD, out IDDoc, out DocType, out DataMap))
            {
                return(false);
            }
            if (DocType != "АдресПеремещение")
            {
                FExcStr = "Неверный тип документа!";
                return(false);
            }
            DataTable DT;
            string    TextQuery =
                "DECLARE @curdate DateTime; " +
                "SELECT @curdate = DATEADD(DAY, 1 - DAY(curdate), curdate) FROM _1ssystem (nolock); " +
                "SELECT TOP 1" +
                "journ.iddoc as IDDOC, " +
                "journ.docno as DocNo, " +
                "journ.date_time_iddoc as DateDoc, " +
                "DocATStrings.$АдресПеремещение.Товар as ID, " +
                "DocATStrings.lineno_ as LINENO_, " +
                "Goods.$Спр.Товары.КоличествоДеталей as Details, " +
                "DocATStrings.$АдресПеремещение.Адрес0 as Adress0, " +
                "Goods.descr as ItemName, " +
                "Goods.$Спр.Товары.ИнвКод as InvCode, " +
                "DocATStrings.$АдресПеремещение.Количество as Count, " +
                "DocAT.$АдресПеремещение.КолСтрок as Rows, " +
                "Sections.descr as AdressName, " +
                "ISNULL(AOT.Balance, 0) as Balance " +
                "FROM " +
                "_1sjourn as journ (nolock) " +
                "LEFT JOIN DH4327 as DocAT (nolock)ON DocAT.iddoc = journ.iddoc " +
                "LEFT JOIN DT4327 as DocATStrings (nolock) ON DocAT.iddoc = DocATStrings.iddoc " +
                "LEFT JOIN $Спр.Товары as Goods (nolock) " +
                "ON Goods.ID = DocATStrings.$АдресПеремещение.Товар " +
                "LEFT JOIN $Спр.Секции as Sections (nolock) " +
                "ON Sections.ID = DocATStrings.$АдресПеремещение.Адрес0 " +
                "LEFT JOIN ( " +
                "select " +
                "RegAOT.$Рег.АдресОстаткиТоваров.Товар as item, " +
                "RegAOT.$Рег.АдресОстаткиТоваров.Адрес as adress, " +
                "sum(RegAOT.$Рег.АдресОстаткиТоваров.Количество ) as balance " +
                "from " +
                "RG$Рег.АдресОстаткиТоваров as RegAOT (nolock) " +
                "where " +
                "period = @curdate " +
                "and $Рег.АдресОстаткиТоваров.Склад = :Warehouse " +
                "and $Рег.АдресОстаткиТоваров.Состояние = 2 " +
                "group by RegAOT.$Рег.АдресОстаткиТоваров.Товар , RegAOT.$Рег.АдресОстаткиТоваров.Адрес " +
                ") as AOT " +
                "ON AOT.item = DocATStrings.$АдресПеремещение.Товар and AOT.adress = DocATStrings.$АдресПеремещение.Адрес0 " +
                "WHERE " +
                "DocAT.iddoc = :Doc " +
                (AdressID == null ? "" : "and DocATStrings.$АдресПеремещение.Адрес0 = :Adress ") +
                "and journ.ismark = 0 " +
                "and DocAT.$АдресПеремещение.ТипДокумента = '3' " +
                "and DocATStrings.$АдресПеремещение.Дата1 = :EmptyDate ";

            SQL1S.QuerySetParam(ref TextQuery, "Doc", IDD);
            SQL1S.QuerySetParam(ref TextQuery, "EmptyDate", SQL1S.GetVoidDate());
            SQL1S.QuerySetParam(ref TextQuery, "Warehouse", Const.MainWarehouse);

            if (AdressID != null)
            {
                QuerySetParam(ref TextQuery, "Adress", AdressID);
            }

            if (!ExecuteWithRead(TextQuery, out DT))
            {
                return(false);
            }
            if (DT.Rows.Count > 0)
            {
                ATDoc.ID = DT.Rows[0]["IDDOC"].ToString();
            }
            // заглушка
            // все строчки отобраны, пусть сканируют принтер
            else
            {
                TextQuery =
                    "SELECT TOP 1" +
                    "journ.iddoc as IDDOC, " +
                    "journ.docno as DocNo, " +
                    "journ.date_time_iddoc as DateDoc " +
                    "FROM " +
                    "_1sjourn as journ (nolock) " +
                    "WHERE " +
                    "journ.iddoc = :Doc " +
                    "and journ.ismark = 0 ";
                SQL1S.QuerySetParam(ref TextQuery, "Doc", IDD);
                if (!ExecuteWithRead(TextQuery, out DT))
                {
                    return(false);
                }
                //забъем пустыми для отображения
                DocSet            = new StrictDoc();
                DocSet.View       = " АдресПеремещение " + DT.Rows[0]["DocNo"].ToString() + " (" + DT.Rows[0]["DateDoc"].ToString() + ")";
                ATDoc.ID          = DT.Rows[0]["IDDOC"].ToString();
                CCItem            = new StructItemSet();
                CCItem.ID         = "";
                CCItem.InvCode    = "";
                CCItem.Name       = "";
                CCItem.Count      = 0;
                CCItem.CountFact  = 0;
                CCItem.AdressID   = "";
                CCItem.AdressName = "";
                CCItem.CurrLine   = 0;
                CCItem.Details    = 0;
                CCItem.Balance    = 0;

                CurrentAction = ActionSet.Waiting;
                FExcStr       = WhatUNeed();
                return(true);
            }
            DocSet      = new StrictDoc();
            DocSet.View = " АдресПеремещение " + DT.Rows[0]["DocNo"].ToString() + " (" + DT.Rows[0]["DateDoc"].ToString() + ")";
            DocSet.ID   = DT.Rows[0]["IDDOC"].ToString();
            DocSet.Rows = (int)(decimal)DT.Rows[0]["Rows"];

            //обновим количество не отобранных
            RefreshAmount();

            CCItem            = new StructItemSet();
            CCItem.ID         = DT.Rows[0]["ID"].ToString();
            CCItem.InvCode    = DT.Rows[0]["InvCode"].ToString();
            CCItem.Name       = DT.Rows[0]["ItemName"].ToString();
            CCItem.Count      = (int)(decimal)DT.Rows[0]["Count"];
            CCItem.CountFact  = (int)(decimal)DT.Rows[0]["Count"];
            CCItem.AdressID   = DT.Rows[0]["Adress0"].ToString();
            CCItem.AdressName = DT.Rows[0]["AdressName"].ToString();
            CCItem.CurrLine   = (short)DT.Rows[0]["LINENO_"];
            CCItem.Details    = (int)(decimal)DT.Rows[0]["Details"];
            CCItem.Balance    = (int)(decimal)DT.Rows[0]["Balance"];


            //получим АдресВременныый из склада в АдресПеремещениии
            TextQuery =
                "SELECT " +
                "WareHouse.SP4537 as AdresTemp " +
                "FROM DH4327 " +
                "LEFT JOIN sc31 as WareHouse on WareHouse.id = DH4327.SP4308 " +
                "WHERE DH4327.iddoc = :Doc ";
            SQL1S.QuerySetParam(ref TextQuery, "Doc", IDD);
            if (!ExecuteWithRead(TextQuery, out DT))
            {
                return(false);
            }
            DocSet.AdressCollect = DT.Rows[0]["AdresTemp"].ToString();
            CurrentAction        = ActionSet.ScanAdress;
            FExcStr = WhatUNeed();
            return(true);
        }
Exemplo n.º 6
0
        //BASE METHOD's
        private bool ToModeSet(string AdressID, string iddoc)
        {
            foreach (string id in DocsSet)
            {
                if (!LockDoc(id))
                {
                    return(false);
                }
            }

            string TextQuery =
                "DECLARE @curdate DateTime; " +
                "SELECT @curdate = DATEADD(DAY, 1 - DAY(curdate), curdate) FROM _1ssystem (nolock); " +
                "select top 1 " +
                "DocCC.$КонтрольНабора.Товар as ID, " +
                "DocCC.lineno_ as LINENO_, " +
                "Goods.descr as ItemName, " +
                "Goods.$Спр.Товары.ИнвКод as InvCode, " +
                "Goods.$Спр.Товары.КоличествоДеталей as Details, " +
                "DocCC.$КонтрольНабора.Количество as Count, " +
                "DocCC.$КонтрольНабора.Адрес0 as Adress, " +
                "DocCC.$КонтрольНабора.Цена as Price, " +
                "Sections.descr as AdressName, " +
                "ISNULL(AOT.Balance, 0) as Balance, " +
                //Реквизиты документа
                "DocCC.iddoc as IDDOC, " +
                "journForBill.docno as DocNo, " +
                "CONVERT(char(8), CAST(LEFT(journForBill.date_time_iddoc, 8) as datetime), 4) as DateDoc, " +
                "journForBill.iddoc as Bill, " +
                "DocCCHead.$КонтрольНабора.КолСтрок as Rows, " +
                "Sector.descr as Sector, " +
                "DocCCHead.$КонтрольНабора.Сумма as Sum, " +
                "DocCCHead.$КонтрольНабора.НомерЛиста as Number, " +
                "DocCCHead.$КонтрольНабора.ФлагСамовывоза as SelfRemovel, " +
                "Clients.descr as Client, " +
                "Bill.$Счет.ТипНакладной as TypeNakl, " +
                "isnull(DocCCHead.$КонтрольНабора.Коробка , :EmptyID) as BoxID, " +
                "AdressBox.descr as Box " +
                "from " +
                "DT$КонтрольНабора as DocCC (nolock) " +
                "LEFT JOIN DH$КонтрольНабора as DocCCHead (nolock) " +
                "ON DocCCHead.iddoc = DocCC.iddoc " +
                "LEFT JOIN $Спр.Товары as Goods (nolock) " +
                "ON Goods.id = DocCC.$КонтрольНабора.Товар " +
                "LEFT JOIN $Спр.Секции as Sections (nolock) " +
                "ON Sections.id = DocCC.$КонтрольНабора.Адрес0 " +
                "LEFT JOIN ( " +
                "select " +
                "RegAOT.$Рег.АдресОстаткиТоваров.Товар as item, " +
                "RegAOT.$Рег.АдресОстаткиТоваров.Адрес as adress, " +
                "sum(RegAOT.$Рег.АдресОстаткиТоваров.Количество ) as balance " +
                "from " +
                "RG$Рег.АдресОстаткиТоваров as RegAOT (nolock) " +
                "where " +
                "period = @curdate " +
                "and $Рег.АдресОстаткиТоваров.Склад = :Warehouse " +
                "and $Рег.АдресОстаткиТоваров.Состояние = 2 " +
                "group by RegAOT.$Рег.АдресОстаткиТоваров.Товар , RegAOT.$Рег.АдресОстаткиТоваров.Адрес " +
                ") as AOT " +
                "ON AOT.item = DocCC.$КонтрольНабора.Товар and AOT.adress = DocCC.$КонтрольНабора.Адрес0 " +
                "LEFT JOIN DH$КонтрольРасходной as DocCB (nolock) " +
                "ON DocCB.iddoc = DocCCHead.$КонтрольНабора.ДокументОснование " +
                "LEFT JOIN DH$Счет as Bill (nolock) " +
                "ON Bill.iddoc = DocCB.$КонтрольРасходной.ДокументОснование " +
                "LEFT JOIN _1sjourn as journForBill (nolock) " +
                "ON journForBill.iddoc = Bill.iddoc " +
                "LEFT JOIN $Спр.Секции as Sector (nolock) " +
                "ON Sector.id = DocCCHead.$КонтрольНабора.Сектор " +
                "LEFT JOIN $Спр.Клиенты as Clients (nolock) " +
                "ON Bill.$Счет.Клиент = Clients.id " +
                "LEFT JOIN $Спр.Секции as AdressBox (nolock) " +
                "ON AdressBox.id = DocCCHead.$КонтрольНабора.Коробка " +
                "where " +
                "DocCC.iddoc in (:Docs) " +
                "and DocCC.$КонтрольНабора.Дата5 = :EmptyDate " +
                "and DocCC.$КонтрольНабора.Корректировка = 0 " +
                "and DocCC.$КонтрольНабора.Количество > 0 " +
                (AdressID == null ? "" : "and DocCC.$КонтрольНабора.Адрес0 = :Adress ") +
                (iddoc == null ? "" : "and DocCC.iddoc = :iddoc ") +
                "order by " +
                "DocCCHead.$КонтрольНабора.Сектор , Sections.$Спр.Секции.Маршрут , LINENO_";

            DataTable DT;

            TextQuery = TextQuery.Replace(":Docs", Helper.ListToStringWithQuotes(DocsSet));
            QuerySetParam(ref TextQuery, "EmptyDate", GetVoidDate());
            QuerySetParam(ref TextQuery, "Warehouse", Const.MainWarehouse);
            if (iddoc != null)
            {
                QuerySetParam(ref TextQuery, "iddoc", iddoc);
            }
            if (AdressID != null)
            {
                QuerySetParam(ref TextQuery, "Adress", AdressID);
            }
            if (!ExecuteWithRead(TextQuery, out DT))
            {
                return(false);
            }

            if (DT.Rows.Count == 0)
            {
                if (AdressID == null)
                {
                    return(ToModeSetComplete());
                }
                else
                {
                    //Это попытка перепрыгнуть
                    FExcStr = "Нет такого адреса в сборочном!";
                    return(false);
                }
            }

            RefreshRowSum();    //Подтянем циферки

            CCItem            = new StructItemSet();
            CCItem.ID         = DT.Rows[0]["id"].ToString();
            CCItem.InvCode    = DT.Rows[0]["InvCode"].ToString();
            CCItem.Name       = DT.Rows[0]["ItemName"].ToString();
            CCItem.Price      = (decimal)DT.Rows[0]["Price"];
            CCItem.Count      = (int)(decimal)DT.Rows[0]["Count"];
            CCItem.CountFact  = (int)(decimal)DT.Rows[0]["Count"];
            CCItem.AdressID   = DT.Rows[0]["Adress"].ToString();
            CCItem.AdressName = DT.Rows[0]["AdressName"].ToString();
            CCItem.CurrLine   = (short)DT.Rows[0]["LINENO_"];
            CCItem.Balance    = (int)(decimal)DT.Rows[0]["Balance"];
            CCItem.Details    = (int)(decimal)DT.Rows[0]["Details"];

            if (!MultiplesOKEI2(ref CCItem))
            {
                return(false);
            }

            DocSet                 = new StrictDoc();
            DocSet.ID              = DT.Rows[0]["IDDOC"].ToString();
            DocSet.SelfRemovel     = (int)(decimal)DT.Rows[0]["SelfRemovel"];
            DocSet.View            = (DocSet.SelfRemovel == 1 ? "(C) " : "") + DT.Rows[0]["Sector"].ToString().Trim() + "-" + DT.Rows[0]["Number"].ToString() + " Заявка " + DT.Rows[0]["DocNo"].ToString() + " (" + DT.Rows[0]["DateDoc"].ToString() + ")";
            DocSet.Rows            = (int)(decimal)DT.Rows[0]["Rows"];
            DocSet.FromWarehouseID = DT.Rows[0]["Bill"].ToString();
            DocSet.Client          = DT.Rows[0]["Client"].ToString().Trim();
            DocSet.Sum             = (decimal)DT.Rows[0]["Sum"];
            DocSet.Special         = (int)(decimal)DT.Rows[0]["TypeNakl"] == 2 ? true : false;
            DocSet.Box             = DT.Rows[0]["Box"].ToString();
            DocSet.BoxID           = DT.Rows[0]["BoxID"].ToString();

            CurrentAction = ActionSet.ScanAdress;
            FExcStr       = WhatUNeed();
            FCurrentMode  = Mode.Set;
            return(true);
        } // ToModeSet