示例#1
0
 private string FreeStart()
 {
     try
     {
         string ConStr = connectionString.Return(0, null, false);
         return(UpdatingOne(ConStr, 0));
     }
     catch (Exception ex)
     {
         return(exceptionEntry.Return(ex));
     }
 }
示例#2
0
        // GET: Develop
        public async Task <ActionResult> Index(HttpRequestMessage request, FormCollection formCollection)
        {
            //return View();
            try
            {
                #region Логин

                HttpCookie CookieIPOL = Request.Cookies["CookieIPOL"];

                Classes.Account.Login       login = new Classes.Account.Login();
                Classes.Account.Login.Field field = await Task.Run(() => login.Return(CookieIPOL, true)); //HttpCookie CookieIPOL = Request.Cookies["CookieIPOL"];

                if (!field.Access)
                {
                    return(Redirect("~/account/login/"));
                }

                #endregion

                #region Доступ в Разработчик

                //Права (1 - Write, 2 - Read, 3 - No Access)
                int iRight = await Task.Run(() => accessRight.Access(connectionString.Return(field.DirCustomersID, null, true), field.DirEmployeeID, "RightDevelop"));

                if (iRight != 1)
                {
                    return(Redirect("~/develop/noaccess/"));
                }

                #endregion

                #region Тема, Язык, Интерфейс

                //Тема
                ViewData["CookieT"] = CookieIPOL["CookieT"]; if (ViewData["CookieT"] == null)
                {
                    ViewData["CookieT"] = 1;
                }
                //Язык
                ViewData["CookieL"] = CookieIPOL["CookieL"]; if (ViewData["CookieL"] == null)
                {
                    ViewData["CookieL"] = 1;
                }
                //Интерфейс
                ViewData["CookieI"] = CookieIPOL["CookieI"]; if (ViewData["CookieI"] == null)
                {
                    ViewData["CookieI"] = 1;
                }

                #endregion


                return(View());
            }
            catch (Exception ex)
            {
                Classes.Function.Exceptions.ExceptionEntry exceptionEntry = new Classes.Function.Exceptions.ExceptionEntry();
                return(Redirect("~/account/login/?Err=" + exceptionEntry.Return(ex)));
            }
        }
示例#3
0
        public async Task <IHttpActionResult> GetSysSetting(int id)
        {
            try
            {
                #region Проверяем Логин и Пароль + Изменяем строку соединения + Права + Разные Функции

                //Получаем Куку
                System.Web.HttpCookie authCookie = System.Web.HttpContext.Current.Request.Cookies["CookieIPOL"];

                // Проверяем Логин и Пароль
                Classes.Account.Login.Field field = await Task.Run(() => login.Return(authCookie, true));

                if (!field.Access)
                {
                    return(Ok(returnServer.Return(false, Classes.Language.Sklad.Language.msg10)));
                }

                //Изменяем строку соединения
                db = new DbConnectionSklad(connectionString.Return(field.DirCustomersID, null, true));

                //Разные Функции
                function.NumberDecimalSeparator();

                #endregion


                //Важно: id - не используется в запросах
                if (id == 1)
                {
                    //Открытие на редактирование в форме


                    #region Права. Важно: нужны только при редактировании. При запросе в переменных не нужны!

                    //Права (1 - Write, 2 - Read, 3 - No Access)
                    int iRight = await Task.Run(() => accessRight.Access(connectionString.Return(field.DirCustomersID, null, true), field.DirEmployeeID, "RightSysSettings"));

                    if (iRight == 3)
                    {
                        return(Ok(returnServer.Return(false, Classes.Language.Sklad.Language.msg57(0))));
                    }

                    #endregion


                    #region Основной запрос *** *** ***

                    var query =
                        (
                            from sysSettings in db.SysSettings
                            where sysSettings.SysSettingsID == 1
                            select
                            sysSettings

                            /*new
                             * {
                             *  SysSettingsID = sysSettings.SysSettingsID,
                             *  JurDateS = sysSettings.JurDateS.ToString(),
                             *  JurDatePo = sysSettings.JurDatePo.ToString(),
                             *  FractionalPartInSum = sysSettings.FractionalPartInSum,
                             *  FractionalPartInPrice = sysSettings.FractionalPartInPrice,
                             *  FractionalPartInOther = sysSettings.FractionalPartInOther,
                             *  DirVatValue = sysSettings.DirVatValue,
                             *  ChangePriceNomen = sysSettings.ChangePriceNomen,
                             *  PurchBigerSale = sysSettings.PurchBigerSale,
                             *  MinusResidues = sysSettings.MinusResidues,
                             *  MethodAccounting = sysSettings.MethodAccounting,
                             *  DeletedRecordsShow = sysSettings.DeletedRecordsShow,
                             *
                             *  DirContractorIDOrg = sysSettings.dirContractorOrg.DirContractorID,
                             *  DirContractorNameOrg = sysSettings.dirContractorOrg.DirContractorName,
                             *
                             *  DirCurrencyID = sysSettings.DirCurrencyID,
                             *  DirCurrencyName = sysSettings.dirCurrency.DirCurrencyName,
                             *
                             *  DirWarehouseID = sysSettings.DirWarehouseID,
                             *  DirWarehouseName = sysSettings.dirWarehouse.DirWarehouseName,
                             *
                             *  MarkupRetail = sysSettings.MarkupRetail,
                             *  MarkupWholesale = sysSettings.MarkupWholesale,
                             *  MarkupIM = sysSettings.MarkupIM,
                             *  MarkupSales1 = sysSettings.MarkupSales1,
                             *  MarkupSales2 = sysSettings.MarkupSales2,
                             *  MarkupSales3 = sysSettings.MarkupSales3,
                             *  MarkupSales4 = sysSettings.MarkupSales4,
                             *
                             *  CashBookAdd = sysSettings.CashBookAdd,
                             *  Reserve = sysSettings.Reserve,
                             *  BarIntNomen = sysSettings.BarIntNomen,
                             *  BarIntContractor = sysSettings.BarIntContractor,
                             *  BarIntDoc = sysSettings.BarIntDoc,
                             *  BarIntEmployee = sysSettings.BarIntEmployee,
                             *  SelectOneClick = sysSettings.SelectOneClick,
                             *  PageSizeDir = sysSettings.PageSizeDir,
                             *  PageSizeJurn = sysSettings.PageSizeJurn,
                             *  DateFormat = sysSettings.DateFormat,
                             *
                             *  DirPriceTypeID = sysSettings.DirPriceTypeID,
                             *  DirPriceTypeName = sysSettings.dirPriceType.DirPriceTypeName,
                             *
                             *  LabelWidth = sysSettings.LabelWidth,
                             *  LabelHeight = sysSettings.LabelHeight,
                             *  LabelEncodeType = sysSettings.LabelEncodeType,
                             *  DirNomenMinimumBalance = sysSettings.DirNomenMinimumBalance,
                             *
                             *  ReadinessDay = sysSettings.ReadinessDay,
                             *  ServiceTypeRepair = sysSettings.ServiceTypeRepair,
                             *  WarrantyPeriodPassed = sysSettings.WarrantyPeriodPassed,
                             *  PhoneNumberBegin = sysSettings.PhoneNumberBegin,
                             *  DocServicePurchSmsAutoShow = sysSettings.DocServicePurchSmsAutoShow,
                             *  ServiceKPD = sysSettings.ServiceKPD,
                             *
                             *  SmsActive = sysSettings.SmsActive,
                             *  SmsServiceID = sysSettings.SmsServiceID,
                             *  SmsLogin = sysSettings.SmsLogin,
                             *  SmsPassword = sysSettings.SmsPassword,
                             *  SmsTelFrom = sysSettings.SmsTelFrom,
                             *  SmsAutoShow = sysSettings.SmsAutoShow,
                             * }
                             */
                        );

                    #endregion


                    #region Отправка JSON

                    return(await Task.Run(() => Ok(returnServer.Return(true, query.ToList()[0]))));

                    #endregion
                }
                else
                {
                    //Реквест в Variables

                    #region Получаем оплаты клиента *** *** ***
                    //Тарифный план, Сотрудников, Торговых точек, Окончание, Интернет магазинов

                    Classes.Account.Payment             payment     = new Classes.Account.Payment();
                    Classes.Account.Payment.CustomerPay customerPay = payment.Return(field.DirCustomersID);

                    #endregion


                    #region Основной запрос *** *** ***

                    var query =
                        (
                            from sysSettings in db.SysSettings
                            from dirEmployees in db.DirEmployees

                            //join dirWarehouses1 in db.DirWarehouses on dirEmployees.DirWarehouseID equals dirWarehouses1.DirWarehouseID into dirWarehouses2
                            //from dirWarehouses in dirWarehouses2.DefaultIfEmpty()

                            where
                            sysSettings.SysSettingsID == 1 &&
                            dirEmployees.DirEmployeeID == field.DirEmployeeID
                            select new
                    {
                        //1. Настройки
                        sysSettings,
                        DirCurrencyMultiplicity = sysSettings.dirCurrency.DirCurrencyMultiplicity,         // dirCurrencyHistories.DirCurrencyMultiplicity,
                        DirCurrencyRate = sysSettings.dirCurrency.DirCurrencyRate,
                        //2. Сотрудника (ФИО)
                        dirEmployees,
                        DirEmployeeLogin = field.LoginFull,
                        LoginMS = field.Login,
                        DirEmployeeName = dirEmployees.DirEmployeeName,
                        //DirWarehouseName = dirWarehouses.DirWarehouseName,
                        //3. Оплата
                        DirPayServiceName = customerPay.DirPayServiceName,
                        CountUser = customerPay.CountUser,
                        //CountTT = customerPay.CountTT,
                        CountNomen = customerPay.CountNomen,
                        PayDateEnd = customerPay.PayDateEnd,
                        //CountIM = customerPay.CountIM
                    }
                        );

                    #endregion


                    #region Отправка JSON

                    return(await Task.Run(() => Ok(returnServer.Return(true, query.ToList()[0]))));

                    #endregion
                }
            }
            catch (Exception ex)
            {
                return(Ok(returnServer.Return(false, exceptionEntry.Return(ex))));
            }
        }
示例#4
0
        // GET: api/DirEmployees
        public async Task <IHttpActionResult> GetDirEmployees(HttpRequestMessage request)
        {
            try
            {
                #region Проверяем Логин и Пароль + Изменяем строку соединения + Права + Разные Функции

                //Получаем Куку
                System.Web.HttpCookie authCookie = System.Web.HttpContext.Current.Request.Cookies["CookieIPOL"];

                // Проверяем Логин и Пароль
                Classes.Account.Login.Field field = await Task.Run(() => login.Return(authCookie, true));

                if (!field.Access)
                {
                    return(Ok(returnServer.Return(false, Classes.Language.Sklad.Language.msg10)));
                }

                //Изменяем строку соединения
                db = new DbConnectionSklad(connectionString.Return(field.DirCustomersID, null, true));


                // !!! НИЖЕ - нужно получить склад !!!
                //Права (1 - Write, 2 - Read, 3 - No Access)
                //Или есть доступ к справонику или Админ точки

                /*
                 * int iRight = await Task.Run(() => accessRight.Access(connectionString.Return(field.DirCustomersID, null, true), field.DirEmployeeID, "RightDirEmployees"));
                 * bool bAdmin = await Task.Run(() => accessRight.AccessIsAdmin(connectionString.Return(field.DirCustomersID, null, true), field.DirEmployeeID, "RightDirEmployees"));
                 * if (iRight == 3) return Ok(returnServer.Return(false, Classes.Language.Sklad.Language.msg57(0)));
                 */

                //Разные Функции
                function.NumberDecimalSeparator();

                //Получам настройки
                Models.Sklad.Sys.SysSetting sysSetting = await db.SysSettings.FindAsync(1);

                #endregion


                #region Параметры

                Params _params = new Params();

                //paramList -список параметров
                var paramList = request.GetQueryNameValuePairs();
                //Параметры
                _params.limit = 999999;                                                                                           // sysSetting.PageSizeDir; //Convert.ToInt32(paramList.FirstOrDefault(kv => string.Compare(kv.Key, "limit", true) == 0).Value); //Записей на страницу
                _params.page  = Convert.ToInt32(paramList.FirstOrDefault(kv => string.Compare(kv.Key, "page", true) == 0).Value); //Номер страницы
                _params.Skip  = _params.limit * (_params.page - 1);
                _params.type  = paramList.FirstOrDefault(kv => string.Compare(kv.Key, "type", true) == 0).Value;
                //_params.HistoryDate = Convert.ToDateTime(paramList.FirstOrDefault(kv => string.Compare(kv.Key, "HistoryDate", true) == 0).Value); if (_params.HistoryDate < Convert.ToDateTime("01.01.1800")) _params.HistoryDate = DateTime.Now;
                _params.HistoryDate = Convert.ToDateTime(paramList.FirstOrDefault(kv => string.Compare(kv.Key, "HistoryDate", true) == 0).Value); if (_params.HistoryDate == null || _params.HistoryDate < Convert.ToDateTime("01.01.1800"))
                {
                    _params.HistoryDate = Convert.ToDateTime(DateTime.Now.ToString("yyyy-MM-dd 00:00:00"));
                }
                _params.HistoryDate = function.ReturnHistorytDate(_params.HistoryDate);                                                                                                                                                                                                                                                                                                                      //Кликнули по "Поменять" (дату)
                //_params.GroupID = Convert.ToInt32(paramList.FirstOrDefault(kv => string.Compare(kv.Key, "pGroupID", true) == 0).Value); //Кликнули по группе
                _params.parSearch = paramList.FirstOrDefault(kv => string.Compare(kv.Key, "parSearch", true) == 0).Value; if (_params.parSearch != null)
                {
                    _params.parSearch = _params.parSearch.ToLower();                                                                                           //Поиск
                }
                _params.DirWarehouseID     = Convert.ToInt32(paramList.FirstOrDefault(kv => string.Compare(kv.Key, "DirWarehouseID", true) == 0).Value);       //Номер страницы
                _params.DeletedRecordsShow = Convert.ToBoolean(paramList.FirstOrDefault(kv => string.Compare(kv.Key, "DeletedRecordsShow", true) == 0).Value); //Номер страницы


                //Права (1 - Write, 2 - Read, 3 - No Access)
                //Или есть доступ к справонику или Админ точки
                int iRight = await Task.Run(() => accessRight.Access(connectionString.Return(field.DirCustomersID, null, true), field.DirEmployeeID, "RightDirEmployees"));

                bool bAdmin = await Task.Run(() => accessRight.AccessIsAdmin(connectionString.Return(field.DirCustomersID, null, true), field.DirEmployeeID, _params.DirWarehouseID));

                if (iRight == 3 && !bAdmin)
                {
                    return(Ok(returnServer.Return(false, Classes.Language.Sklad.Language.msg57(0))));
                }

                #endregion


                if (_params.type == "Grid")
                {
                    if (_params.DirWarehouseID < 1)
                    {
                        #region Основной запрос *** *** ***

                        var query =
                            (
                                from dirEmployees in db.DirEmployees
                                select new
                        {
                            DirEmployeeID = dirEmployees.DirEmployeeID,
                            Del = dirEmployees.Del,
                            SysRecord = dirEmployees.SysRecord,
                            DirEmployeeName = dirEmployees.DirEmployeeName,
                            DirEmployeeActive = dirEmployees.DirEmployeeActive
                        }
                            );

                        #endregion


                        #region Условия (параметры) *** *** ***


                        #region Не показывать удалённые

                        if (!Convert.ToBoolean(sysSetting.DeletedRecordsShow))
                        {
                            query = query.Where(x => x.Del == sysSetting.DeletedRecordsShow);
                        }

                        #endregion


                        #region Поиск

                        if (!String.IsNullOrEmpty(_params.parSearch))
                        {
                            //Проверяем число ли это
                            Int32 iNumber32;
                            bool  bResult32 = Int32.TryParse(_params.parSearch, out iNumber32);


                            //Если число, то задействуем в поиске и числовые поля (_params.parSearch == iNumber)
                            if (bResult32)
                            {
                                query = query.Where(x => x.DirEmployeeID == iNumber32 || x.DirEmployeeName.Contains(_params.parSearch));
                            }
                            else
                            {
                                query = query.Where(x => x.DirEmployeeName.Contains(_params.parSearch));
                            }
                        }

                        #endregion


                        #region OrderBy и Лимит

                        query = query.OrderBy(x => x.DirEmployeeName).Skip(_params.Skip).Take(_params.limit);

                        #endregion


                        #endregion


                        #region Отправка JSON

                        //К-во Номенклатуры
                        int dirCount = await Task.Run(() => db.DirEmployees.Count());

                        //А вдруг к-во меньше Лимита, тогда показать не общее к-во, а реальное!
                        int dirCount2 = query.Count();
                        if (dirCount2 < _params.limit)
                        {
                            dirCount = _params.limit * (_params.page - 1) + dirCount2;
                        }

                        dynamic collectionWrapper = new
                        {
                            sucess      = true,
                            total       = dirCount,
                            DirEmployee = query
                        };
                        return(await Task.Run(() => Ok(collectionWrapper)));

                        #endregion
                    }
                    else
                    {
                        #region Основной запрос *** *** ***

                        var query =
                            (
                                from dirEmployees in db.DirEmployees
                                from dirEmployeeWarehouse in db.DirEmployeeWarehouse
                                where dirEmployees.DirEmployeeID == dirEmployeeWarehouse.DirEmployeeID && dirEmployeeWarehouse.DirWarehouseID == _params.DirWarehouseID &&
                                dirEmployees.DirEmployeeActive == true       //Не показывать "Не активных"
                                select new
                        {
                            DirEmployeeID = dirEmployees.DirEmployeeID,
                            Del = dirEmployees.Del,
                            SysRecord = dirEmployees.SysRecord,
                            DirEmployeeName = dirEmployees.DirEmployeeName,
                            DirEmployeeActive = dirEmployees.DirEmployeeActive
                        }
                            ).
                            Union
                            (
                                from dirEmployees in db.DirEmployees
                                from dirEmployeeWarehouse in db.DirEmployeeWarehouse
                                where dirEmployees.DirEmployeeID == 1
                                select new
                        {
                            DirEmployeeID     = dirEmployees.DirEmployeeID,
                            Del               = dirEmployees.Del,
                            SysRecord         = dirEmployees.SysRecord,
                            DirEmployeeName   = dirEmployees.DirEmployeeName,
                            DirEmployeeActive = dirEmployees.DirEmployeeActive
                        }
                            );

                        #endregion


                        #region Условия (параметры) *** *** ***


                        #region Не показывать удалённые

                        if (!_params.DeletedRecordsShow)
                        {
                            query = query.Where(x => x.Del == false);
                        }
                        else
                        {
                            if (!Convert.ToBoolean(sysSetting.DeletedRecordsShow))
                            {
                                query = query.Where(x => x.Del == sysSetting.DeletedRecordsShow);
                            }
                        }


                        #endregion


                        #region Поиск

                        if (!String.IsNullOrEmpty(_params.parSearch))
                        {
                            //Проверяем число ли это
                            Int32 iNumber32;
                            bool  bResult32 = Int32.TryParse(_params.parSearch, out iNumber32);


                            //Если число, то задействуем в поиске и числовые поля (_params.parSearch == iNumber)
                            if (bResult32)
                            {
                                query = query.Where(x => x.DirEmployeeID == iNumber32 || x.DirEmployeeName.Contains(_params.parSearch));
                            }
                            else
                            {
                                query = query.Where(x => x.DirEmployeeName.Contains(_params.parSearch));
                            }
                        }

                        #endregion


                        #region OrderBy и Лимит

                        query = query.OrderBy(x => x.DirEmployeeName).Skip(_params.Skip).Take(_params.limit);

                        #endregion


                        #endregion


                        #region Отправка JSON

                        //К-во Номенклатуры
                        int dirCount = await Task.Run(() => db.DirEmployees.Count());

                        //А вдруг к-во меньше Лимита, тогда показать не общее к-во, а реальное!
                        int dirCount2 = query.Count();
                        if (dirCount2 < _params.limit)
                        {
                            dirCount = _params.limit * (_params.page - 1) + dirCount2;
                        }

                        dynamic collectionWrapper = new
                        {
                            sucess      = true,
                            total       = dirCount,
                            DirEmployee = query
                        };
                        return(await Task.Run(() => Ok(collectionWrapper)));

                        #endregion
                    }
                }
                else //Tree
                {
                    #region Отобразить только "Руты" *** *** ***

                    var query =
                        (
                            from x in db.DirEmployees
                            select new
                    {
                        id = x.DirEmployeeID,
                        text = x.DirEmployeeName,
                        leaf = true,
                        Del = x.Del
                    }
                        );

                    #endregion


                    #region Отправка JSON

                    //return Ok(await Task.Run(() => query));

                    dynamic collectionWrapper = new
                    {
                        query
                    };
                    return(Ok(await Task.Run(() => collectionWrapper)));

                    #endregion
                }
            }
            catch (Exception ex)
            {
                return(Ok(returnServer.Return(false, exceptionEntry.Return(ex))));
            }
        }
示例#5
0
        // GET: api/DocSalaryTabs
        public async Task <IHttpActionResult> GetDocSalaryTabs(HttpRequestMessage request)
        {
            try
            {
                #region Проверяем Логин и Пароль + Изменяем строку соединения + Права + Разные Функции

                //Получаем Куку
                System.Web.HttpCookie authCookie = System.Web.HttpContext.Current.Request.Cookies["CookieIPOL"];

                // Проверяем Логин и Пароль
                Classes.Account.Login.Field field = await Task.Run(() => login.Return(authCookie, true));

                if (!field.Access)
                {
                    return(Ok(returnServer.Return(false, Classes.Language.Sklad.Language.msg10)));
                }

                //Изменяем строку соединения
                db = new DbConnectionSklad(connectionString.Return(field.DirCustomersID, null, true));

                //Права (1 - Write, 2 - Read, 3 - No Access)
                int iRight = await Task.Run(() => accessRight.Access(connectionString.Return(field.DirCustomersID, null, true), field.DirEmployeeID, "RightDocSalaries"));

                if (iRight == 3)
                {
                    return(Ok(returnServer.Return(false, Classes.Language.Sklad.Language.msg57(0))));
                }

                //Разные Функции
                function.NumberDecimalSeparator();

                //Получам настройки
                Models.Sklad.Sys.SysSetting sysSetting = await db.SysSettings.FindAsync(1);

                #endregion


                #region Параметры

                Params _params = new Params();

                //paramList -список параметров
                var paramList = request.GetQueryNameValuePairs();
                //Параметры
                _params.DocSalaryID = Convert.ToInt32(paramList.FirstOrDefault(kv => string.Compare(kv.Key, "DocSalaryID", true) == 0).Value);

                #endregion



                #region Основной запрос *** *** ***

                var query =
                    (
                        from docSalaryTabs in db.DocSalaryTabs
                        where docSalaryTabs.DocSalaryID == _params.DocSalaryID

                        #region select

                        select new
                {
                    DocSalaryTabID = docSalaryTabs.DocSalaryTabID,
                    DocSalaryID = docSalaryTabs.DocSalaryID,
                    DirEmployeeID = docSalaryTabs.DirEmployeeID,
                    DirEmployeeName = docSalaryTabs.dirEmployee.DirEmployeeName,

                    DirCurrencyID = docSalaryTabs.DirCurrencyID,
                    DirCurrencyRate = docSalaryTabs.DirCurrencyRate,
                    DirCurrencyMultiplicity = docSalaryTabs.DirCurrencyMultiplicity,
                    DirCurrencyName = docSalaryTabs.dirCurrency.DirCurrencyName + " (" + docSalaryTabs.DirCurrencyRate + ", " + docSalaryTabs.DirCurrencyMultiplicity + ")",

                    Salary = docSalaryTabs.Salary,
                    SalaryDayMonthly = docSalaryTabs.SalaryDayMonthly,
                    SalaryDayMonthlyName = docSalaryTabs.SalaryDayMonthly == 1 ? "За день" : "За месяц",
                    CountDay = docSalaryTabs.CountDay,
                    SumSalary = docSalaryTabs.SumSalary,

                    DirBonusID = docSalaryTabs.DirBonusID,
                    DirBonusName = docSalaryTabs.dirBonus.DirBonusName,
                    DirBonusIDSalary = docSalaryTabs.DirBonusIDSalary,

                    DirBonus2ID = docSalaryTabs.DirBonus2ID,
                    DirBonus2Name = docSalaryTabs.dirBonus2.DirBonusName,
                    DirBonus2IDSalary = docSalaryTabs.DirBonus2IDSalary,

                    Sums = docSalaryTabs.Sums,
                }

                        #endregion
                    );

                #endregion


                #region Отправка JSON

                dynamic collectionWrapper = new
                {
                    sucess       = true,
                    total        = query.Count(),
                    DocSalaryTab = query
                };
                return(await Task.Run(() => Ok(collectionWrapper)));

                #endregion
            }
            catch (Exception ex)
            {
                return(Ok(returnServer.Return(false, exceptionEntry.Return(ex))));
            }
        }
示例#6
0
        public async Task <IHttpActionResult> GetDirBonus2Tab(int id)
        {
            try
            {
                #region Проверяем Логин и Пароль + Изменяем строку соединения + Права + Разные Функции

                //Получаем Куку
                System.Web.HttpCookie authCookie = System.Web.HttpContext.Current.Request.Cookies["CookieIPOL"];

                // Проверяем Логин и Пароль
                Classes.Account.Login.Field field = await Task.Run(() => login.Return(authCookie, true));

                if (!field.Access)
                {
                    return(Ok(returnServer.Return(false, Classes.Language.Sklad.Language.msg10)));
                }

                //Изменяем строку соединения
                db = new DbConnectionSklad(connectionString.Return(field.DirCustomersID, null, true));

                //Права (1 - Write, 2 - Read, 3 - No Access)
                int iRight = await Task.Run(() => accessRight.Access(connectionString.Return(field.DirCustomersID, null, true), field.DirEmployeeID, "RightDirBonuses"));

                if (iRight == 3)
                {
                    return(Ok(returnServer.Return(false, Classes.Language.Sklad.Language.msg57(0))));
                }

                //Разные Функции
                function.NumberDecimalSeparator();

                //Получам настройки
                Models.Sklad.Sys.SysSetting sysSetting = await db.SysSettings.FindAsync(1);

                #endregion


                #region Отправка JSON

                var query =
                    (
                        from dirBonus2Tabs in db.DirBonus2Tabs
                        where dirBonus2Tabs.DirBonus2ID == id
                        select new
                {
                    DirBonus2ID = dirBonus2Tabs.DirBonus2ID,
                    SumBegin = dirBonus2Tabs.SumBegin,
                    Bonus = dirBonus2Tabs.Bonus
                }
                    ).OrderBy(x => x.SumBegin);


                //К-во
                int dirCount = await Task.Run(() => query.Count());

                dynamic collectionWrapper = new
                {
                    sucess       = true,
                    total        = dirCount,
                    DirBonus2Tab = query
                };
                return(await Task.Run(() => Ok(collectionWrapper)));

                #endregion
            }
            catch (Exception ex)
            {
                return(Ok(returnServer.Return(false, exceptionEntry.Return(ex))));
            }
        }
示例#7
0
        // GET: api/DocSecondHandInvTabs
        public async Task <IHttpActionResult> GetDocSecondHandInvTabs(HttpRequestMessage request)
        {
            try
            {
                #region Проверяем Логин и Пароль + Изменяем строку соединения + Права + Разные Функции

                //Получаем Куку
                System.Web.HttpCookie authCookie = System.Web.HttpContext.Current.Request.Cookies["CookieIPOL"];

                // Проверяем Логин и Пароль
                Classes.Account.Login.Field field = await Task.Run(() => login.Return(authCookie, true));

                if (!field.Access)
                {
                    return(Ok(returnServer.Return(false, Classes.Language.Sklad.Language.msg10)));
                }

                //Изменяем строку соединения
                db = new DbConnectionSklad(connectionString.Return(field.DirCustomersID, null, true));

                //Права (1 - Write, 2 - Read, 3 - No Access)
                int iRight = await Task.Run(() => accessRight.Access(connectionString.Return(field.DirCustomersID, null, true), field.DirEmployeeID, "RightDocSecondHandInventories"));

                if (iRight == 3)
                {
                    return(Ok(returnServer.Return(false, Classes.Language.Sklad.Language.msg57(0))));
                }

                //Разные Функции
                function.NumberDecimalSeparator();

                //Получам настройки
                Models.Sklad.Sys.SysSetting sysSetting = await db.SysSettings.FindAsync(1);

                #endregion


                #region Параметры

                Params _params = new Params();

                //paramList -список параметров
                var paramList = request.GetQueryNameValuePairs();
                //Параметры
                _params.DocSecondHandInvID = Convert.ToInt32(paramList.FirstOrDefault(kv => string.Compare(kv.Key, "DocSecondHandInvID", true) == 0).Value);

                #endregion



                #region Основной запрос *** *** ***

                var query =
                    (
                        from docSecondHandInvTabs in db.DocSecondHandInvTabs

                        join dirServiceNomens11 in db.DirServiceNomens on docSecondHandInvTabs.dirServiceNomen.Sub equals dirServiceNomens11.DirServiceNomenID into dirServiceNomens12
                        from dirServiceNomensSubGroup in dirServiceNomens12.DefaultIfEmpty()

                        join dirServiceNomens21 in db.DirServiceNomens on dirServiceNomensSubGroup.Sub equals dirServiceNomens21.DirServiceNomenID into dirServiceNomens22
                        from dirServiceNomensGroup in dirServiceNomens22.DefaultIfEmpty()

                        where docSecondHandInvTabs.DocSecondHandInvID == _params.DocSecondHandInvID

                        #region select

                        select new
                {
                    DocSecondHandPurchID = docSecondHandInvTabs.DocSecondHandPurchID,
                    DocDate = docSecondHandInvTabs.docSecondHandInv.doc.DocDate,


                    DocSecondHandInvTabID = docSecondHandInvTabs.DocSecondHandInvTabID,
                    DocSecondHandInvID = docSecondHandInvTabs.DocSecondHandInvID,
                    DirServiceNomenID = docSecondHandInvTabs.DirServiceNomenID,

                    //DirServiceNomenName = docSecondHandInvTabs.dirServiceNomen.DirServiceNomenName,
                    DirServiceNomenName =
                        dirServiceNomensSubGroup.DirServiceNomenName == null ? docSecondHandInvTabs.dirServiceNomen.DirServiceNomenName :
                        dirServiceNomensGroup.DirServiceNomenName == null ? dirServiceNomensSubGroup.DirServiceNomenName + " / " + docSecondHandInvTabs.dirServiceNomen.DirServiceNomenName :
                        dirServiceNomensGroup.DirServiceNomenName + " / " + dirServiceNomensSubGroup.DirServiceNomenName + " / " + docSecondHandInvTabs.dirServiceNomen.DirServiceNomenName,

                    PriceVAT = docSecondHandInvTabs.PriceVAT,
                    PriceRetailVAT = docSecondHandInvTabs.docSecondHandPurch.PriceRetailVAT,

                    DirCurrencyID = docSecondHandInvTabs.DirCurrencyID,
                    DirCurrencyRate = docSecondHandInvTabs.DirCurrencyRate,
                    DirCurrencyMultiplicity = docSecondHandInvTabs.DirCurrencyMultiplicity,
                    DirCurrencyName = docSecondHandInvTabs.dirCurrency.DirCurrencyName + " (" + docSecondHandInvTabs.DirCurrencyRate + ", " + docSecondHandInvTabs.DirCurrencyMultiplicity + ")",

                    Exist = docSecondHandInvTabs.Exist,


                    DirSecondHandStatusName = docSecondHandInvTabs.dirSecondHandStatus.DirSecondHandStatusName,

                    //Exist

                    /*
                     * ExistName = docSecondHandInvTabs.Exist == 1 ? "Присутствует"
                     * :
                     * docSecondHandInvTabs.Exist == 2 ? "Списывается с ЗП"
                     * :
                     * docSecondHandInvTabs.Exist == 4 ? "Отсутствует"
                     * :
                     * "На разбор",
                     */
                    ExistName = docSecondHandInvTabs.Exist == 1 ? "Присутствует"
                            :
                                docSecondHandInvTabs.Exist == 2 ? "Отсутствует"
                            :
                                "????????????????",

                    //Цена в т.в.
                    PriceRetailCurrency = docSecondHandInvTabs.docSecondHandPurch.PriceRetailCurrency,
                    PriceCurrency = docSecondHandInvTabs.PriceCurrency,
                    //Себестоимость
                    SUMSalePriceVATCurrency = docSecondHandInvTabs.PriceCurrency == null ? 0
                            :
                                              Math.Round(docSecondHandInvTabs.PriceCurrency, sysSetting.FractionalPartInSum)
                }

                        #endregion
                    );

                #endregion


                #region Отправка JSON

                dynamic collectionWrapper = new
                {
                    sucess = true,
                    total  = query.Count(),
                    DocSecondHandInvTab = query
                };
                return(await Task.Run(() => Ok(collectionWrapper)));

                #endregion
            }
            catch (Exception ex)
            {
                return(Ok(returnServer.Return(false, exceptionEntry.Return(ex))));
            }
        }
        // GET: api/DocSales
        public async Task <IHttpActionResult> GetDocSales(HttpRequestMessage request)
        {
            try
            {
                #region Проверяем Логин и Пароль + Изменяем строку соединения + Права + Разные Функции

                //Получаем Куку
                System.Web.HttpCookie authCookie = System.Web.HttpContext.Current.Request.Cookies["CookieIPOL"];

                // Проверяем Логин и Пароль
                Classes.Account.Login.Field field = await Task.Run(() => login.Return(authCookie, true));

                if (!field.Access)
                {
                    return(Ok(returnServer.Return(false, Classes.Language.Sklad.Language.msg10)));
                }

                //Изменяем строку соединения
                db     = new DbConnectionSklad(connectionString.Return(field.DirCustomersID, null, true));
                dbRead = new DbConnectionSklad(connectionString.Return(field.DirCustomersID, null, true));

                //Права (1 - Write, 2 - Read, 3 - No Access)
                int iRight = await Task.Run(() => accessRight.Access(connectionString.Return(field.DirCustomersID, null, true), field.DirEmployeeID, "RightDocServicePurchesReport"));

                if (iRight == 3)
                {
                    return(Ok(returnServer.Return(false, Classes.Language.Sklad.Language.msg57(0))));
                }

                //Разные Функции
                function.NumberDecimalSeparator();

                //Получам настройки
                Models.Sklad.Sys.SysSetting sysSetting = await db.SysSettings.FindAsync(1);

                //Получаем сотрудника: если к нему привязан Склад и/или Организация, то выбираем документы только по этим характеристикам
                Models.Sklad.Dir.DirEmployee dirEmployee = await db.DirEmployees.FindAsync(field.DirEmployeeID);

                #endregion


                #region Параметры

                //paramList -список параметров
                var paramList = request.GetQueryNameValuePairs();


                pID = paramList.FirstOrDefault(kv => string.Compare(kv.Key, "pID", true) == 0).Value;

                pLanguage = Convert.ToInt32(paramList.FirstOrDefault(kv => string.Compare(kv.Key, "pLanguage", true) == 0).Value);

                DateS = Convert.ToDateTime(Convert.ToDateTime(paramList.FirstOrDefault(kv => string.Compare(kv.Key, "DateS", true) == 0).Value).ToString("yyyy-MM-dd 23:59:59"));
                if (DateS < Convert.ToDateTime("01.01.1800"))
                {
                    DateS = Convert.ToDateTime(sysSetting.JurDateS.ToString("yyyy-MM-dd 00:00:00")).AddDays(-1);
                }
                else
                {
                    DateS = DateS.AddDays(-1);
                }

                DatePo = Convert.ToDateTime(Convert.ToDateTime(paramList.FirstOrDefault(kv => string.Compare(kv.Key, "DatePo", true) == 0).Value).ToString("yyyy-MM-dd 23:59:59"));
                if (DatePo < Convert.ToDateTime("01.01.1800"))
                {
                    DatePo = Convert.ToDateTime(sysSetting.JurDatePo.ToString("yyyy-MM-dd 23:59:59"));
                }

                TypeRepair = false;
                bool bTypeRepair = Boolean.TryParse(paramList.FirstOrDefault(kv => string.Compare(kv.Key, "TypeRepair", true) == 0).Value, out TypeRepair); //TypeRepair

                DirContractorIDOrg = 0;
                bool bDirContractorIDOrg = Int32.TryParse(paramList.FirstOrDefault(kv => string.Compare(kv.Key, "DirContractorIDOrg", true) == 0).Value, out DirContractorIDOrg); //DirContractorIDOrg
                DirContractorNameOrg = paramList.FirstOrDefault(kv => string.Compare(kv.Key, "DirContractorNameOrg", true) == 0).Value;                                           //Request.Params["DirContractorNameOrg"];

                DirWarehouseID = 0;
                bool bDirWarehouseID = Int32.TryParse(paramList.FirstOrDefault(kv => string.Compare(kv.Key, "DirWarehouseID", true) == 0).Value, out DirWarehouseID); //DirWarehouseID
                DirWarehouseName = paramList.FirstOrDefault(kv => string.Compare(kv.Key, "DirWarehouseName", true) == 0).Value;                                       //Request.Params["DirWarehouseName"];

                DirServiceStatusID = 0;
                bool bDirServiceStatusID = Int32.TryParse(paramList.FirstOrDefault(kv => string.Compare(kv.Key, "DirServiceStatusID", true) == 0).Value, out DirServiceStatusID); //DirServiceStatusID
                DirServiceStatusName = paramList.FirstOrDefault(kv => string.Compare(kv.Key, "DirServiceStatusName", true) == 0).Value;                                           //Request.Params["DirServiceStatusName"];

                DirEmployeeID = 0;
                bool bDirEmployeeID = Int32.TryParse(paramList.FirstOrDefault(kv => string.Compare(kv.Key, "DirEmployeeID", true) == 0).Value, out DirEmployeeID); //DirEmployeeID
                DirEmployeeName = paramList.FirstOrDefault(kv => string.Compare(kv.Key, "DirEmployeeName", true) == 0).Value;                                      //Request.Params["DirEmployeeName"];

                DirEmployeeIDMaster = 0;
                bool bDirEmployeeIDMaster = Int32.TryParse(paramList.FirstOrDefault(kv => string.Compare(kv.Key, "DirEmployeeIDMaster", true) == 0).Value, out DirEmployeeIDMaster); //DirEmployeeIDMaster
                DirEmployeeNameMaster = paramList.FirstOrDefault(kv => string.Compare(kv.Key, "DirEmployeeNameMaster", true) == 0).Value;                                            //Request.Params["DirEmployeeNameMaster"];

                DirServiceContractorID = 0;
                bool bDirServiceContractorID = Int32.TryParse(paramList.FirstOrDefault(kv => string.Compare(kv.Key, "DirServiceContractorID", true) == 0).Value, out DirServiceContractorID); //DirServiceContractorID
                DirServiceContractorName = paramList.FirstOrDefault(kv => string.Compare(kv.Key, "DirServiceContractorName", true) == 0).Value;                                               // Request.Params["DirServiceContractorName"];

                ReportType = 0;
                bool bReportType = Int32.TryParse(paramList.FirstOrDefault(kv => string.Compare(kv.Key, "ReportType", true) == 0).Value, out ReportType); //ReportType
                ReportTypeName = paramList.FirstOrDefault(kv => string.Compare(kv.Key, "ReportTypeName", true) == 0).Value;                               // Request.Params["ReportTypeName"];

                #endregion



                #region queryTemp

                var queryTemp =
                    (
                        #region from

                        from docServicePurches in db.DocServicePurches


                        join dirServiceNomens11 in db.DirServiceNomens on docServicePurches.dirServiceNomen.Sub equals dirServiceNomens11.DirServiceNomenID into dirServiceNomens12
                        from dirServiceNomensSubGroup in dirServiceNomens12.DefaultIfEmpty()

                        join dirServiceNomens21 in db.DirServiceNomens on dirServiceNomensSubGroup.Sub equals dirServiceNomens21.DirServiceNomenID into dirServiceNomens22
                        from dirServiceNomensGroup in dirServiceNomens22.DefaultIfEmpty()

                        /*
                         * join docServicePurch1Tabs1 in db.DocServicePurch1Tabs on docServicePurches.DocServicePurchID equals docServicePurch1Tabs1.DocServicePurchID into docServicePurch1Tabs2
                         * from docServicePurch1Tabs in docServicePurch1Tabs2.DefaultIfEmpty()
                         * //where docServicePurch1Tabs.PriceCurrency > 0
                         */

                        /*
                         * join docServicePurch2Tabs1 in db.DocServicePurch2Tabs on docServicePurches.DocServicePurchID equals docServicePurch2Tabs1.DocServicePurchID into docServicePurch2Tabs2
                         * from docServicePurch2Tabs in docServicePurch2Tabs2.DefaultIfEmpty()
                         * //where docServicePurch2Tabs.PriceCurrency > 0
                         */

                        #endregion

                        where docServicePurches.doc.DirContractorIDOrg == DirContractorIDOrg //&& docServicePurches.doc.DocDate >= DateS && docServicePurches.doc.DocDate <= DatePo

                        #region group

                        /*
                         * group new { docServicePurch1Tabs, docServicePurch2Tabs }
                         * //group new { docServicePurches }
                         * by new
                         * {
                         *  DocID = docServicePurches.DocID,
                         *  DocDate = docServicePurches.doc.DocDate,
                         *  Base = docServicePurches.doc.Base,
                         *  Held = docServicePurches.doc.Held,
                         *  Discount = docServicePurches.doc.Discount,
                         *  Del = docServicePurches.doc.Del,
                         *  Description = docServicePurches.doc.Description,
                         *  IsImport = docServicePurches.doc.IsImport,
                         *  DirVatValue = docServicePurches.doc.DirVatValue,
                         *  //DirPaymentTypeID = docServicePurches.doc.DirPaymentTypeID,
                         *
                         *  //Принял
                         *  DirEmployeeID = docServicePurches.doc.DirEmployeeID,
                         *  DirEmployeeName = docServicePurches.doc.dirEmployee.DirEmployeeName,
                         *  //Мастер
                         *  DirEmployeeIDMaster = docServicePurches.DirEmployeeIDMaster,
                         *  DirEmployeeNameMaster = docServicePurches.dirEmployee.DirEmployeeName,
                         *
                         *  DirServiceNomenID = docServicePurches.DirServiceNomenID,
                         *  //DirServiceNomenName = docServicePurches.dirServiceNomen.DirServiceNomenName,
                         *  DirServiceNomenName =
                         *      dirServiceNomensSubGroup.DirServiceNomenName == null ? docServicePurches.dirServiceNomen.DirServiceNomenName :
                         *      dirServiceNomensGroup.DirServiceNomenName == null ? dirServiceNomensSubGroup.DirServiceNomenName + " / " + docServicePurches.dirServiceNomen.DirServiceNomenName :
                         *      dirServiceNomensGroup.DirServiceNomenName + " / " + dirServiceNomensSubGroup.DirServiceNomenName + " / " + docServicePurches.dirServiceNomen.DirServiceNomenName,
                         *
                         *  DocServicePurchID = docServicePurches.DocServicePurchID,
                         *  DirContractorName = docServicePurches.doc.dirContractor.DirContractorName,
                         *  DirContractorIDOrg = docServicePurches.doc.dirContractorOrg.DirContractorID,
                         *  DirContractorNameOrg = docServicePurches.doc.dirContractorOrg.DirContractorName,
                         *  DirWarehouseID = docServicePurches.dirWarehouse.DirWarehouseID,
                         *  DirWarehouseName = docServicePurches.dirWarehouse.DirWarehouseName,
                         *
                         *  DirServiceStatusID = docServicePurches.DirServiceStatusID,
                         *  DirServiceStatusID_789 = docServicePurches.DirServiceStatusID_789,
                         *  SerialNumber = docServicePurches.SerialNumber,
                         *  TypeRepair = docServicePurches.TypeRepair,
                         *  ComponentDevice = docServicePurches.ComponentDevice,
                         *
                         *  ComponentBattery = docServicePurches.ComponentBattery,
                         *  ComponentBatterySerial = docServicePurches.ComponentBatterySerial,
                         *  ComponentBackCover = docServicePurches.ComponentBackCover,
                         *  ComponentPasTextNo = docServicePurches.ComponentPasTextNo,
                         *  ComponentPasText = docServicePurches.ComponentPasText,
                         *  ComponentOtherText = docServicePurches.ComponentOtherText,
                         *  ProblemClientWords = docServicePurches.ProblemClientWords,
                         *  Note = docServicePurches.Note,
                         *  DirServiceContractorName = docServicePurches.DirServiceContractorName,
                         *  DirServiceContractorRegular = docServicePurches.DirServiceContractorRegular,
                         *  DirServiceContractorID = docServicePurches.DirServiceContractorID,
                         *  DirServiceContractorAddress = docServicePurches.DirServiceContractorAddress,
                         *  DirServiceContractorPhone = docServicePurches.DirServiceContractorPhone,
                         *  DirServiceContractorEmail = docServicePurches.DirServiceContractorEmail,
                         *
                         *  PriceVAT = docServicePurches.PriceVAT,
                         *  //PriceCurrency = docServicePurches.PriceCurrency,
                         *
                         *  DirCurrencyID = docServicePurches.DirCurrencyID,
                         *  DirCurrencyRate = docServicePurches.DirCurrencyRate,
                         *  DirCurrencyMultiplicity = docServicePurches.DirCurrencyMultiplicity,
                         *  DirCurrencyName = docServicePurches.dirCurrency.DirCurrencyName + " (" + docServicePurches.DirCurrencyRate + ", " + docServicePurches.DirCurrencyMultiplicity + ")",
                         *
                         *  DateDone = docServicePurches.DateDone,
                         *  UrgentRepairs = docServicePurches.UrgentRepairs,
                         *  Prepayment = docServicePurches.Prepayment,
                         *  PrepaymentSum = docServicePurches.PrepaymentSum == null ? 0 : docServicePurches.PrepaymentSum,
                         *
                         *  IssuanceDate = docServicePurches.IssuanceDate,
                         *  DateStatusChange = docServicePurches.DateStatusChange,
                         *
                         *  //Оплата
                         *  Payment = docServicePurches.doc.Payment,
                         *
                         *  //Сумма Выполненный работ + Запчастей
                         *  Sums = docServicePurches.Sums,
                         *  Sums1 = docServicePurches.Sums1,
                         *  Sums2 = docServicePurches.Sums2,
                         * }
                         * into g
                         */

                        #endregion

                        #region select docServicePurches

                        select new
                {
                    DocID = docServicePurches.DocID,
                    DocDate = docServicePurches.doc.DocDate.ToString(), DocDate1 = docServicePurches.doc.DocDate,
                    Base = docServicePurches.doc.Base,
                    Held = docServicePurches.doc.Held,
                    Del = docServicePurches.doc.Del,
                    Description = docServicePurches.doc.Description,
                    IsImport = docServicePurches.doc.IsImport,
                    DirVatValue = docServicePurches.doc.DirVatValue,
                    //DirPaymentTypeID = docServicePurches.DirPaymentTypeID,
                    //DirPaymentTypeName = docServicePurches.DirPaymentTypeName,

                    //Принял
                    DirEmployeeID = docServicePurches.doc.DirEmployeeID,
                    DirEmployeeName = docServicePurches.doc.dirEmployee.DirEmployeeName,
                    //Мастер
                    DirEmployeeIDMaster = docServicePurches.DirEmployeeIDMaster,
                    DirEmployeeNameMaster = docServicePurches.dirEmployee.DirEmployeeName,

                    DirServiceNomenID = docServicePurches.DirServiceNomenID,
                    //DirServiceNomenName = docServicePurches.dirServiceNomen.DirServiceNomenName,
                    DirServiceNomenName =
                        dirServiceNomensSubGroup.DirServiceNomenName == null ? docServicePurches.dirServiceNomen.DirServiceNomenName :
                        dirServiceNomensGroup.DirServiceNomenName == null ? dirServiceNomensSubGroup.DirServiceNomenName + " / " + docServicePurches.dirServiceNomen.DirServiceNomenName :
                        dirServiceNomensGroup.DirServiceNomenName + " / " + dirServiceNomensSubGroup.DirServiceNomenName + " / " + docServicePurches.dirServiceNomen.DirServiceNomenName,

                    DocServicePurchID = docServicePurches.DocServicePurchID,
                    DirContractorName = docServicePurches.doc.dirContractor.DirContractorName,
                    DirContractorIDOrg = docServicePurches.doc.dirContractorOrg.DirContractorID,
                    DirContractorNameOrg = docServicePurches.doc.dirContractorOrg.DirContractorName,
                    DirWarehouseID = docServicePurches.DirWarehouseID,
                    DirWarehouseName = docServicePurches.dirWarehouse.DirWarehouseName,

                    DirServiceStatusID = docServicePurches.DirServiceStatusID,
                    DirServiceStatusID_789 = docServicePurches.DirServiceStatusID_789,
                    SerialNumber = docServicePurches.SerialNumber,
                    TypeRepair = docServicePurches.TypeRepair,
                    ComponentDevice = docServicePurches.ComponentDevice,

                    ComponentBattery = docServicePurches.ComponentBattery,
                    ComponentBatterySerial = docServicePurches.ComponentBatterySerial,
                    ComponentBackCover = docServicePurches.ComponentBackCover,
                    ComponentPasTextNo = docServicePurches.ComponentPasTextNo,
                    ComponentPasText = docServicePurches.ComponentPasText,
                    ComponentOtherText = docServicePurches.ComponentOtherText,
                    ProblemClientWords = docServicePurches.ProblemClientWords,
                    Note = docServicePurches.Note,
                    DirServiceContractorName = docServicePurches.DirServiceContractorName,
                    DirServiceContractorRegular = docServicePurches.DirServiceContractorRegular,
                    DirServiceContractorID = docServicePurches.DirServiceContractorID,
                    DirServiceContractorAddress = docServicePurches.DirServiceContractorAddress,
                    DirServiceContractorPhone = docServicePurches.DirServiceContractorPhone,
                    DirServiceContractorEmail = docServicePurches.DirServiceContractorEmail,

                    PriceVAT = docServicePurches.PriceVAT,
                    //PriceCurrency = docServicePurches.PriceCurrency,

                    DirCurrencyID = docServicePurches.DirCurrencyID,
                    DirCurrencyRate = docServicePurches.DirCurrencyRate,
                    DirCurrencyMultiplicity = docServicePurches.DirCurrencyMultiplicity,
                    DirCurrencyName = docServicePurches.dirCurrency.DirCurrencyName + " (" + docServicePurches.DirCurrencyRate + ", " + docServicePurches.DirCurrencyMultiplicity + ")",

                    DateDone = docServicePurches.DateDone.ToString(), DateDone1 = docServicePurches.DateDone,
                    UrgentRepairs = docServicePurches.UrgentRepairs,
                    Prepayment = docServicePurches.Prepayment,
                    PrepaymentSum = docServicePurches.PrepaymentSum == null ? 0 : docServicePurches.PrepaymentSum,

                    IssuanceDate = docServicePurches.IssuanceDate.ToString(), IssuanceDate1 = docServicePurches.IssuanceDate,
                    DateStatusChange = docServicePurches.DateStatusChange.ToString(), DateStatusChange1 = docServicePurches.DateStatusChange,

                    //Оплата
                    Payment = docServicePurches.doc.Payment,


                    /*
                     * //1. Подсчет табличной части Работы "SumDocServicePurch1Tabs"
                     * SumDocServicePurch1Tabs = g.Sum(x => x.docServicePurch1Tabs.PriceCurrency) == null ? 0 : Math.Round(g.Sum(x => x.docServicePurch1Tabs.PriceCurrency), sysSetting.FractionalPartInSum),
                     *
                     * //2. Подсчет табличной части Работы "SumDocServicePurch2Tabs"
                     * SumDocServicePurch2Tabs = g.Sum(x => x.docServicePurch2Tabs.PriceCurrency) == null ? 0 : Math.Round(g.Sum(x => x.docServicePurch2Tabs.PriceCurrency), sysSetting.FractionalPartInSum),
                     *
                     *
                     * //3. Сумма 1+2 "SumTotal"
                     * SumTotal =
                     * Math.Round(
                     * (g.Sum(x => x.docServicePurch1Tabs.PriceCurrency) == null ? 0 : g.Sum(x => x.docServicePurch1Tabs.PriceCurrency)) +
                     * (g.Sum(x => x.docServicePurch2Tabs.PriceCurrency) == null ? 0 : g.Sum(x => x.docServicePurch2Tabs.PriceCurrency))
                     * , sysSetting.FractionalPartInSum),
                     *
                     * //4. Константа "PrepaymentSum"
                     * //...
                     *
                     * //5. 3 - 4 "SumTotal2"
                     * SumTotal2 = g.Key.Sums,
                     */

                    DiscountX = docServicePurches.DiscountX,
                    SumDocServicePurch1Tabs = docServicePurches.Sums1,

                    DiscountY = docServicePurches.DiscountY,
                    SumDocServicePurch2Tabs = docServicePurches.Sums2,

                    SumTotal =
                        (docServicePurches.Sums1 - docServicePurches.DiscountX)
                        +
                        (docServicePurches.Sums2 - docServicePurches.DiscountY),

                    SumTotal2 = docServicePurches.Sums - docServicePurches.DiscountX - docServicePurches.DiscountY,
                }

                        #endregion

                    );

                if (DirWarehouseID > 0)
                {
                    queryTemp = queryTemp.Where(z => z.DirWarehouseID == DirWarehouseID);
                }
                if (DirServiceStatusID > 0)
                {
                    queryTemp = queryTemp.Where(z => z.DirServiceStatusID == DirServiceStatusID);
                }
                if (DirEmployeeID > 0)
                {
                    queryTemp = queryTemp.Where(z => z.DirEmployeeID == DirEmployeeID);
                }
                if (DirEmployeeIDMaster > 0)
                {
                    queryTemp = queryTemp.Where(z => z.DirEmployeeIDMaster == DirEmployeeIDMaster);
                }
                if (DirServiceContractorID > 0)
                {
                    queryTemp = queryTemp.Where(z => z.DirServiceContractorID == DirServiceContractorID);
                }
                if (ReportType > 0)
                {
                    switch (ReportType)
                    {
                    //1. Выданные (все)
                    case 1:
                    {
                        queryTemp = queryTemp.Where(z => z.DirServiceStatusID == 9 && (z.DateStatusChange1 >= DateS && z.DateStatusChange1 <= DatePo));
                    }
                    break;

                    //2. Выданные (готовые)
                    case 2:
                    {
                        queryTemp = queryTemp.Where(z => z.DirServiceStatusID == 9 && z.DirServiceStatusID_789 == 7 && (z.DateStatusChange1 >= DateS && z.DateStatusChange1 <= DatePo));
                    }
                    break;

                    //3. Не отремонтированные все (Выданные (отказные))
                    case 3:
                    {
                        queryTemp = queryTemp.Where(z => z.DirServiceStatusID_789 == 8 && (z.IssuanceDate1 >= DateS && z.IssuanceDate1 <= DatePo));         //queryTemp = queryTemp.Where(z => z.DirServiceStatusID == 9 && z.DirServiceStatusID_789 == 8 && (z.DocDate >= DateS && z.DocDate <= DatePo));
                    }
                    break;

                    //4. Сделанные
                    case 4:
                    {
                        queryTemp = queryTemp.Where(z => z.DirServiceStatusID_789 == 7 && (z.IssuanceDate1 >= DateS && z.IssuanceDate1 <= DatePo));         //queryTemp = queryTemp.Where(z => z.DirServiceStatusID == 7 && (z.DocDate >= DateS && z.DocDate <= DatePo));
                    }
                    break;

                    //5. Принятые
                    case 5:
                    {
                        queryTemp = queryTemp.Where(z => (z.DocDate1 >= DateS && z.DocDate1 <= DatePo));         //queryTemp = queryTemp.Where(z => z.DirServiceStatusID == 1 && (z.DocDate >= DateS && z.DocDate <= DatePo));
                    }
                    break;

                    default:
                    {
                        queryTemp = queryTemp.Where(z => z.DirServiceStatusID == 9 && (z.DateStatusChange1 >= DateS && z.DateStatusChange1 <= DatePo));
                    }
                    break;
                    }
                }
                else
                {
                    queryTemp = queryTemp.Where(z => z.DirServiceStatusID == 9 && (z.DateStatusChange1 >= DateS && z.DateStatusChange1 <= DatePo));
                }

                #endregion


                #region Отправка JSON

                int dirCount = queryTemp.Count();

                dynamic collectionWrapper1 = new
                {
                    sucess = true,
                    total  = dirCount,
                    DocServicePurchesReport = queryTemp
                };
                return(await Task.Run(() => Ok(collectionWrapper1)));

                #endregion
            }
            catch (Exception ex)
            {
                return(Ok(returnServer.Return(false, exceptionEntry.Return(ex))));
            }
        }
示例#9
0
        public async Task<IHttpActionResult> PutDirWarehouse(HttpRequestMessage request) //HttpPostedFileBase upload
        {
            #region Проверяем Логин и Пароль + Изменяем строку соединения + Права + Разные Функции

            //Получаем Куку
            System.Web.HttpCookie authCookie = System.Web.HttpContext.Current.Request.Cookies["CookieIPOL"];

            // Проверяем Логин и Пароль
            field = await Task.Run(() => login.Return(authCookie, true));
            if (!field.Access) return Ok(returnServer.Return(false, Classes.Language.Sklad.Language.msg10));

            //Изменяем строку соединения
            db = new DbConnectionSklad(connectionString.Return(field.DirCustomersID, null, true));
            //dbRead = new DbConnectionSklad(connectionString.Return(field.DirCustomersID, null, true));

            //Права (1 - Write, 2 - Read, 3 - No Access)
            /*
            int iRight = await Task.Run(() => accessRight.Access(connectionString.Return(field.DirCustomersID, null, true), field.DirEmployeeID, "RightDocAccounts"));
            if (iRight == 3) return Ok(returnServer.Return(false, Classes.Language.Sklad.Language.msg57(0)));
            */
            if(field.DirEmployeeID != 1) return Ok(returnServer.Return(false, Classes.Language.Sklad.Language.msg57(0)));

            //Разные Функции
            function.NumberDecimalSeparator();

            //Получам настройки
            sysSetting = await db.SysSettings.FindAsync(1);

            //Получаем сотрудника: если к нему привязан Склад и/или Организация, то выбираем документы только по этим характеристикам
            Models.Sklad.Dir.DirEmployee dirEmployee = await db.DirEmployees.FindAsync(field.DirEmployeeID);

            #endregion

            #region Параметры

            //paramList -список параметров
            var paramList = request.GetQueryNameValuePairs();
            //Параметры
            sheetName = paramList.FirstOrDefault(kv => string.Compare(kv.Key, "sheetName", true) == 0).Value;
            DirContractorIDOrg = Convert.ToInt32(paramList.FirstOrDefault(kv => string.Compare(kv.Key, "DirContractorIDOrg", true) == 0).Value);
            DirContractorID = Convert.ToInt32(paramList.FirstOrDefault(kv => string.Compare(kv.Key, "DirContractorID", true) == 0).Value);
            DirWarehouseID = Convert.ToInt32(paramList.FirstOrDefault(kv => string.Compare(kv.Key, "DirWarehouseID", true) == 0).Value);

            #endregion


            #region Сохранение

            OleDbConnection OleDbConn = null;
            try
            {
                //Алгоритм:
                //0. Проверка
                //1. Генерируем ID-шник "SysGens"
                //2. Получаем файл и сохраняем в папаке "Uploads" с именем: authCookie["CookieB"] + "_" + sysGen.SysGenID

                //3. Считываем Эксель файл
                //   [Код товара], [Категория], [Товар]

                //Получаем категорию "APPLE/ iPhone 4S/  Распродажа/  Распродажа Swarovski /"
                //Разделитель "/" и убираем первый пробел
                //Проверяем каждую получиную категорию: есть ли связка (Sub, Name)
                //Если нет - вносим категорию, а потом товар: ([Код товара], [Товар])
                //Если есть - вносим товар: ([Код товара], [Товар])


                // *** Важно *** *** ***
                //1.Находим максимальный код группы
                //2.Создаём коды групп (Макс + 1)
                //3.Создаём коды товаров(из Эксель)



                #region 0. Проверка *** *** *** *** *** *** ***

                if (!Request.Content.IsMimeMultipartContent()) Ok(returnServer.Return(false, "{" + "'msgType':'1', 'msg':'" + Classes.Language.Sklad.Language.msg57(0) + "'}"));

                #endregion


                #region 1. Генерируем ID-шник "SysGens" *** *** *** *** *** *** ***

                Models.Sklad.Sys.SysGen sysGen = new Models.Sklad.Sys.SysGen(); sysGen.SysGenDisc = ""; sysGen.SysGenID = null;
                //if (!ModelState.IsValid) return Ok(returnServer.Return(false, Classes.Language.Sklad.Language.msg91)); //return BadRequest(ModelState);
                db.Entry(sysGen).State = EntityState.Added;
                await db.SaveChangesAsync();

                #endregion


                #region 2. Получаем файл и сохраняем в папаке "Uploads" с именем: authCookie["CookieB"] + "_" + sysGen.SysGenID *** *** *** *** *** *** *** 

                string filePatch = "";
                var provider = new MultipartMemoryStreamProvider();
                string root = System.Web.HttpContext.Current.Server.MapPath("~/UsersTemp/FileStock/");
                await Request.Content.ReadAsMultipartAsync(provider);
                foreach (var file in provider.Contents)
                {
                    if (file.Headers.ContentDisposition.FileName != null)
                    {
                        var filename = file.Headers.ContentDisposition.FileName.Trim('\"');
                        var ext = Path.GetExtension(filename);
                        filePatch = root + field.DirCustomersID + "_" + sysGen.SysGenID + ext;

                        byte[] fileArray = await file.ReadAsByteArrayAsync();

                        using (System.IO.FileStream fs = new System.IO.FileStream(filePatch, System.IO.FileMode.Create)) //root + filename
                        {
                            await fs.WriteAsync(fileArray, 0, fileArray.Length);
                        }
                    }
                }

                #endregion


                #region 3. Получаем максимальный код группы

                var queryMaxGroupID = await Task.Run(() =>
                    (
                        from x in db.DirNomens
                        where x.DirNomenCategoryID == null
                        select x
                    ).MaxAsync(x => x.DirNomenID));

                iMaxGroupID = queryMaxGroupID + 1;
                if (iMaxGroupID == null || iMaxGroupID == 0) iMaxGroupID = 1;

                #endregion


                #region 4. Считываем Эксель файл

                if (filePatch.Length > 0)
                {
                    //1. Получаем категорию "APPLE/ iPhone 4S/  Распродажа/  Распродажа Swarovski /"
                    //2. Разделитель "/" и убираем первый пробел
                    //3. Проверяем каждую получиную категорию: есть ли связка (Sub, Name)
                    //4. Если нет - вносим категорию, а потом товар: ([Код товара], [Товар])
                    //5. Если есть - вносим товар: ([Код товара], [Товар])

                    string sExcelConnectionString = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + filePatch + ";Extended Properties=\"Excel 12.0;HDR=YES;IMEX=1;\""; //8.0
                    using (OleDbConn = new OleDbConnection(sExcelConnectionString))
                    {
                        OleDbConn.Open();

                        using (OleDbCommand OleDbCmd = new OleDbCommand("", OleDbConn))
                        {
                            #region 1. Таблица "Товар"

                            OleDbCmd.CommandText = "SELECT * FROM [" + sheetName + "$]";
                            OleDbCmd.Parameters.Clear();
                            using (OleDbDataReader dr = OleDbCmd.ExecuteReader())
                            {
                                using (System.Data.Entity.DbContextTransaction ts = db.Database.BeginTransaction())
                                {
                                    while (dr.Read())
                                    {
                                        if (dr["Код товара"].ToString().Length == 5)
                                        {
                                            //Read
                                            string DirNomenID = dr["Код товара"].ToString();
                                            string GroupList = dr["Категория"].ToString();
                                            string DirNomenName = dr["Товар"].ToString();

                                            //Create Group in database
                                            await Task.Run(() => GroupCreate(Convert.ToInt32(DirNomenID), GroupList, DirNomenName));
                                        }
                                        else
                                        {
                                            alCodeNot.Add(dr["Код товара"].ToString() + "  -  " + dr["Категория"].ToString() + "  -  " + dr["Товар"].ToString());

                                            //...
                                        }
                                    }

                                    ts.Commit();
                                }
                            }

                            #endregion


                            #region 2. Таблицы: Характеристики, Приходная накладная (Шапка + Спецификация), Остатки, Партии. (Новый алгоритм алгоритм: одна приходная накладная)



                            //1. Надо получить все точки из Эксель (GROUP BY)
                            //2. И делать SELECT по точкам, что бы сформировать приходные накладные по точкам
                            OleDbCmd.CommandText = "SELECT [Точка] FROM [" + sheetName + "$] GROUP BY [Точка] ORDER BY [Точка]";
                            OleDbCmd.Parameters.Clear();
                            ArrayList alDirWarehouseID = new ArrayList();
                            using (OleDbDataReader dr = OleDbCmd.ExecuteReader())
                            {
                                while (dr.Read())
                                {
                                    alDirWarehouseID.Add(dr["Точка"].ToString());
                                }
                            }



                            //Формируем "Приходные накладные"
                            using (System.Data.Entity.DbContextTransaction ts = db.Database.BeginTransaction())
                            {
                                for (int i = 0; i < alDirWarehouseID.Count; i++)
                                {
                                    Models.Sklad.Doc.DocPurch docPurch = new Models.Sklad.Doc.DocPurch();


                                    ArrayList alWrite = new ArrayList();
                                    //OleDbCmd.CommandText = "SELECT * FROM [" + sheetName + "$] WHERE Дата=@pDate";
                                    OleDbCmd.CommandText = "SELECT * FROM [" + sheetName + "$] WHERE Точка=@Точка"; // ORDER BY [Код товара], [Дата] DESC
                                    OleDbCmd.Parameters.Clear();
                                    OleDbCmd.Parameters.AddWithValue("@Точка", alDirWarehouseID[i].ToString());

                                    using (OleDbDataReader dr = OleDbCmd.ExecuteReader())
                                    {
                                        while (dr.Read())
                                        {
                                            if (dr["Код товара"].ToString().Length == 5)
                                            {
                                                Field1 field1 = new Field1();
                                                field1.DirNomenID = Convert.ToInt32(dr["Код товара"].ToString());
                                                field1.DocDate = dr["Дата"].ToString();
                                                //field1.DirWarehouseID = ReturnDirWarehouseID(dr["Точка"].ToString());
                                                field1.DirWarehouseID = await Task.Run(() => ReturnDirWarehouseID(dr["Точка"].ToString()));
                                                field1.Quantity = Convert.ToInt32(dr["Остаток"].ToString());

                                                field1.PriceVAT = Convert.ToDouble(dr["Закуп цена за ед"].ToString());
                                                field1.PriceCurrency = Convert.ToDouble(dr["Закуп цена за ед"].ToString());

                                                field1.PriceRetailVAT = Convert.ToDouble(dr["Цена-1"].ToString());
                                                field1.PriceRetailCurrency = Convert.ToDouble(dr["Цена-1"].ToString());

                                                field1.PriceWholesaleVAT = Convert.ToDouble(dr["Цена-2"].ToString());
                                                field1.PriceWholesaleCurrency = Convert.ToDouble(dr["Цена-2"].ToString());

                                                field1.PriceIMVAT = Convert.ToDouble(dr["Цена-3"].ToString());
                                                field1.PriceIMCurrency = Convert.ToDouble(dr["Цена-3"].ToString());

                                                field1.DirCharColourID = ReturnDirCharColourID(dr["Поставщик"].ToString());
                                                field1.DirCharTextureID = ReturnDirCharTextureID(dr["Примечание"].ToString());

                                                alWrite.Add(field1);
                                            }
                                            else
                                            {
                                                //alCodeNot.Add(dr["Код товара"].ToString() + "  -  " + dr["Категория"].ToString() + "  -  " + dr["Товар"].ToString());

                                                //...
                                            }
                                        }
                                    }


                                    //Create Purchase documents and Remnants of goods in stock
                                    docPurch = await Task.Run(() => DocsCreate(alWrite));


                                    #region Чистим пустые партии товара, но только соотвутствующие Номеру документа, что бы НЕ удалить все пустые (0, 0)

                                    SQLiteParameter parDocID = new SQLiteParameter("@DocID", System.Data.DbType.Int32) { Value = docPurch.DocID };
                                    await db.Database.ExecuteSqlCommandAsync("DELETE FROM RemParties WHERE DocID=@DocID and Remnant=0; ", parDocID);

                                    #endregion

                                }


                                ts.Commit();
                            }

                            #endregion
                        }

                        OleDbConn.Close();
                    }

                }

                #endregion


                #region 5. Send

                dynamic collectionWrapper = new
                {
                    Msg = "Файл загружен!"
                };
                return Ok(returnServer.Return(true, collectionWrapper));

                #endregion

            }
            catch (Exception ex)
            {
                try { OleDbConn.Close(); OleDbConn.Dispose(); } catch { }
                return Ok(returnServer.Return(false, exceptionEntry.Return(ex) + i777.ToString()));
            }

            #endregion
        }
        public async Task <IHttpActionResult> PostDocSecondHandReturn(DocSecondHandReturn docSecondHandReturn, HttpRequestMessage request)
        {
            try
            {
                #region Проверяем Логин и Пароль + Изменяем строку соединения + Права + Разные Функции

                //Получаем Куку
                System.Web.HttpCookie authCookie = System.Web.HttpContext.Current.Request.Cookies["CookieIPOL"];

                // Проверяем Логин и Пароль
                Classes.Account.Login.Field field = await Task.Run(() => login.Return(authCookie, true));

                if (!field.Access)
                {
                    return(Ok(returnServer.Return(false, Classes.Language.Sklad.Language.msg10)));
                }

                //Изменяем строку соединения
                db     = new DbConnectionSklad(connectionString.Return(field.DirCustomersID, null, true));
                dbRead = new DbConnectionSklad(connectionString.Return(field.DirCustomersID, null, true));

                //Права (1 - Write, 2 - Read, 3 - No Access)
                int iRight = await Task.Run(() => accessRight.Access(connectionString.Return(field.DirCustomersID, null, true), field.DirEmployeeID, "RightDocSecondHandRetailReturns"));

                if (iRight != 1)
                {
                    return(Ok(returnServer.Return(false, Classes.Language.Sklad.Language.msg57(0))));
                }
                //Скидка: разрешена или нет
                if (docSecondHandReturn.Discount > 0)
                {
                    iRight = await Task.Run(() => accessRight.Access(connectionString.Return(field.DirCustomersID, null, true), field.DirEmployeeID, "RightDocDescription"));

                    if (iRight == 3)
                    {
                        return(Ok(returnServer.Return(false, Classes.Language.Sklad.Language.msg57_5)));
                    }
                }

                //Разные Функции
                function.NumberDecimalSeparator();

                //Получам настройки
                sysSetting = await db.SysSettings.FindAsync(1);

                #endregion

                #region Параметры

                //save, save_close, held, held_cancel
                var    paramList = request.GetQueryNameValuePairs();
                string UO_Action = paramList.FirstOrDefault(kv => string.Compare(kv.Key, "UO_Action", true) == 0).Value;
                if (UO_Action == null)
                {
                    return(Ok(returnServer.Return(false, Classes.Language.Sklad.Language.msg101)));
                }
                UO_Action = UO_Action.ToLower();

                //Получаем колекцию "Спецификации"

                /*Models.Sklad.Doc.DocSecondHandReturnTab[] docSecondHandReturnTabCollection = null;
                 * if (!String.IsNullOrEmpty(docSecondHandReturn.recordsDocSecondHandReturnTab) && UO_Action != "held_cancel")
                 * {
                 *  JavaScriptSerializer serializer = new JavaScriptSerializer();
                 *  docSecondHandReturnTabCollection = serializer.Deserialize<Models.Sklad.Doc.DocSecondHandReturnTab[]>(docSecondHandReturn.recordsDocSecondHandReturnTab);
                 * }*/

                #endregion

                #region Проверки

                if (!ModelState.IsValid)
                {
                    return(Ok(returnServer.Return(false, Classes.Language.Sklad.Language.msg91)));                     //return BadRequest(ModelState);
                }

                /*
                 * //Получаем "docSecondHandReturn.DocID" из БД, если он отличается от пришедшего от клиента "docSecondHandReturn.DocID" выдаём ошибку
                 * //Были проблемы, кодга на один "DocID" числилось 2-а документа, а то и больше
                 * var query = await Task.Run(() =>
                 *  (
                 *      from x in dbRead.DocSecondHandReturns
                 *      where x.DocSecondHandReturnID == docSecondHandReturn.DocSecondHandReturnID
                 *      select x
                 *  ).ToListAsync());
                 *
                 * if (query.Count() > 0)
                 *  if (query[0].DocID != docSecondHandReturn.DocID)
                 *      return Ok(returnServer.Return(false, Classes.Language.Sklad.Language.msg8)); //return BadRequest();
                 *
                 * //dbRead.Database.Connection.Close();
                 */


                //Проверка "Скидки"
                //1. Получаем сотурдника с правами



                //Подстановки - некоторые поля надо заполнить, если они не заполены (Юридические реквизиты)
                docSecondHandReturn.Substitute();

                #endregion


                #region Сохранение

                using (System.Data.Entity.DbContextTransaction ts = db.Database.BeginTransaction())
                {
                    db.Configuration.AutoDetectChangesEnabled = false;

                    try
                    {
                        //Используем метод, что бы было всё в одном потоке
                        docSecondHandReturn = await Task.Run(() => mPutPostDocSecondHandReturn(db, dbRead, UO_Action, docSecondHandReturn, EntityState.Added, field)); //sysSetting

                        ts.Commit();                                                                                                                                   //.Complete();
                    }
                    catch (Exception ex)
                    {
                        try { ts.Rollback(); ts.Dispose(); } catch { }
                        try { db.Database.Connection.Close(); db.Database.Connection.Dispose(); } catch { }

                        return(Ok(returnServer.Return(false, exceptionEntry.Return(ex))));
                    }
                }


                #region 6. JourDisp *** *** *** *** *** *** *** *** *** *

                Models.Sklad.Sys.SysJourDisp sysJourDisp = new Models.Sklad.Sys.SysJourDisp();
                sysJourDisp.DirDispOperationID = 3; //Добавление записи
                sysJourDisp.DirEmployeeID      = field.DirEmployeeID;
                sysJourDisp.ListObjectID       = ListObjectID;
                sysJourDisp.TableFieldID       = docSecondHandReturn.DocSecondHandReturnID;
                sysJourDisp.Description        = "";
                try { sysJourDispsController.mPutPostSysJourDisps(db, sysJourDisp, EntityState.Added); } catch (Exception ex) { }

                #endregion


                dynamic collectionWrapper = new
                {
                    DocID = docSecondHandReturn.DocID,
                    DocSecondHandReturnID = docSecondHandReturn.DocSecondHandReturnID
                };
                return(Ok(returnServer.Return(true, collectionWrapper))); //return Ok(returnServer.Return(true, ""));

                #endregion
            }
            catch (Exception ex)
            {
                return(Ok(returnServer.Return(false, exceptionEntry.Return(ex))));
            }
        }
示例#11
0
        // GET: api/DocSecondHandInvs
        public async Task <IHttpActionResult> GetTimerController(HttpRequestMessage request)
        {
            try
            {
                #region Проверяем Логин и Пароль + Изменяем строку соединения + Права + Разные Функции

                //Получаем Куку
                System.Web.HttpCookie authCookie = System.Web.HttpContext.Current.Request.Cookies["CookieIPOL"];

                // Проверяем Логин и Пароль
                Classes.Account.Login.Field field = await Task.Run(() => login.Return(authCookie, true));

                if (!field.Access)
                {
                    return(Ok(returnServer.Return(false, Classes.Language.Sklad.Language.msg10)));
                }

                //Изменяем строку соединения
                db = new DbConnectionSklad(connectionString.Return(field.DirCustomersID, null, true));
                //dbRead = new DbConnectionSklad(connectionString.Return(field.DirCustomersID, null, true));

                //Права (1 - Write, 2 - Read, 3 - No Access)
                //int iRight = await Task.Run(() => accessRight.Access(connectionString.Return(field.DirCustomersID, null, true), field.DirEmployeeID, "RightDocSecondHandInventories"));
                //if (iRight == 3) return Ok(returnServer.Return(false, Classes.Language.Sklad.Language.msg57(0)));

                //Разные Функции
                function.NumberDecimalSeparator();

                //Получам настройки
                Models.Sklad.Sys.SysSetting sysSetting = await db.SysSettings.FindAsync(1);

                //Получаем сотрудника: если к нему привязан Склад и/или Организация, то выбираем документы только по этим характеристикам
                Models.Sklad.Dir.DirEmployee dirEmployee = await db.DirEmployees.FindAsync(field.DirEmployeeID);

                #endregion


                #region Параметры

                Params _params = new Params();

                //paramList -список параметров
                var paramList = request.GetQueryNameValuePairs();

                #endregion



                #region Основной запрос *** *** ***

                var queryDocSecondHandInv =
                    (
                        from x in db.DocSecondHandInvs
                        where
                        x.DirEmployee2ID == field.DirEmployeeID && x.DirEmployee1Podpis == true && x.DirEmployee2Podpis != true &&
                        x.doc.Held != true
                        select new
                {
                    x.doc.DocID,
                    x.doc.DocDate,
                    x.DocSecondHandInvID,
                    x.dirWarehouse.DirWarehouseName
                }
                    );

                #endregion


                #region Отправка JSON

                dynamic collectionWrapper = new
                {
                    sucess           = true,
                    DocSecondHandInv = queryDocSecondHandInv
                };
                return(await Task.Run(() => Ok(collectionWrapper)));

                #endregion
            }
            catch (Exception ex)
            {
                return(Ok(returnServer.Return(false, exceptionEntry.Return(ex))));
            }
        }
示例#12
0
        // GET: api/DirWebShopUOs
        public async Task <IHttpActionResult> GetDirWebShopUOs(HttpRequestMessage request)
        {
            try
            {
                #region Проверяем Логин и Пароль + Изменяем строку соединения + Права + Разные Функции

                //Получаем Куку
                System.Web.HttpCookie authCookie = System.Web.HttpContext.Current.Request.Cookies["CookieIPOL"];

                // Проверяем Логин и Пароль
                Classes.Account.Login.Field field = await Task.Run(() => login.Return(authCookie, true));

                if (!field.Access)
                {
                    return(Ok(returnServer.Return(false, Classes.Language.Sklad.Language.msg10)));
                }

                //Изменяем строку соединения
                db = new DbConnectionSklad(connectionString.Return(field.DirCustomersID, null, true));

                //Права (1 - Write, 2 - Read, 3 - No Access)
                int iRight = await Task.Run(() => accessRight.Access(connectionString.Return(field.DirCustomersID, null, true), field.DirEmployeeID, "RightDirWebShopUOs"));

                if (iRight == 3)
                {
                    return(Ok(returnServer.Return(false, Classes.Language.Sklad.Language.msg57(0))));
                }

                //Разные Функции
                function.NumberDecimalSeparator();

                //Получам настройки
                Models.Sklad.Sys.SysSetting sysSetting = await db.SysSettings.FindAsync(1);

                #endregion


                #region Параметры

                Params _params = new Params();

                //paramList -список параметров
                var paramList = request.GetQueryNameValuePairs();
                //Параметры
                _params.limit     = 999999;                                                                                           // sysSetting.PageSizeDir; //Convert.ToInt32(paramList.FirstOrDefault(kv => string.Compare(kv.Key, "limit", true) == 0).Value); //Записей на страницу
                _params.page      = Convert.ToInt32(paramList.FirstOrDefault(kv => string.Compare(kv.Key, "page", true) == 0).Value); //Номер страницы
                _params.Skip      = _params.limit * (_params.page - 1);
                _params.type      = paramList.FirstOrDefault(kv => string.Compare(kv.Key, "type", true) == 0).Value;
                _params.parSearch = paramList.FirstOrDefault(kv => string.Compare(kv.Key, "parSearch", true) == 0).Value; if (_params.parSearch != null)
                {
                    _params.parSearch = _params.parSearch.ToLower();                                                                                                                                      //Поиск
                }
                #endregion


                if (_params.type == "Grid")
                {
                    #region Основной запрос *** *** ***

                    var query =
                        (
                            from dirWebShopUOs in db.DirWebShopUOs
                            select new
                    {
                        DirWebShopUOID = dirWebShopUOs.DirWebShopUOID,
                        DirWebShopUOName = dirWebShopUOs.DirWebShopUOName,
                    }
                        );

                    #endregion

                    #region Отправка JSON

                    //К-во Номенклатуры
                    int dirCount = await Task.Run(() => db.DirWebShopUOs.Count());

                    dynamic collectionWrapper = new
                    {
                        sucess       = true,
                        total        = dirCount,
                        DirWebShopUO = query
                    };
                    return(await Task.Run(() => Ok(collectionWrapper)));

                    #endregion
                }
                else //Tree
                {
                    #region Отобразить только "Руты" *** *** ***

                    var query =
                        (
                            from x in db.DirWebShopUOs
                            select new
                    {
                        id = x.DirWebShopUOID,
                        text = x.DirWebShopUOName,
                        leaf = true,
                        Del = x.Del
                    }
                        );

                    #endregion


                    #region Отправка JSON

                    //return Ok(await Task.Run(() => query));

                    dynamic collectionWrapper = new
                    {
                        query
                    };
                    return(Ok(await Task.Run(() => collectionWrapper)));

                    #endregion
                }
            }
            catch (Exception ex)
            {
                return(Ok(returnServer.Return(false, exceptionEntry.Return(ex))));
            }
        }
示例#13
0
        // GET: api/DocSecondHandRetailTabs
        public async Task <IHttpActionResult> GetDocSecondHandRetailTabs(HttpRequestMessage request)
        {
            try
            {
                #region Проверяем Логин и Пароль + Изменяем строку соединения + Права + Разные Функции

                //Получаем Куку
                System.Web.HttpCookie authCookie = System.Web.HttpContext.Current.Request.Cookies["CookieIPOL"];

                // Проверяем Логин и Пароль
                Classes.Account.Login.Field field = await Task.Run(() => login.Return(authCookie, true));

                if (!field.Access)
                {
                    return(Ok(returnServer.Return(false, Classes.Language.Sklad.Language.msg10)));
                }

                //Изменяем строку соединения
                db = new DbConnectionSklad(connectionString.Return(field.DirCustomersID, null, true));

                //Права (1 - Write, 2 - Read, 3 - No Access)
                int iRight = await Task.Run(() => accessRight.Access(connectionString.Return(field.DirCustomersID, null, true), field.DirEmployeeID, "RightDocSecondHandRetails"));

                if (iRight == 3)
                {
                    return(Ok(returnServer.Return(false, Classes.Language.Sklad.Language.msg57(0))));
                }

                //Разные Функции
                function.NumberDecimalSeparator();

                //Получам настройки
                Models.Sklad.Sys.SysSetting sysSetting = await db.SysSettings.FindAsync(1);

                #endregion


                #region Параметры

                Params _params = new Params();

                //paramList -список параметров
                var paramList = request.GetQueryNameValuePairs();
                //Параметры
                _params.DocSecondHandRetailID = Convert.ToInt32(paramList.FirstOrDefault(kv => string.Compare(kv.Key, "DocSecondHandRetailID", true) == 0).Value);
                //_params.DocDate = Convert.ToDateTime(paramList.FirstOrDefault(kv => string.Compare(kv.Key, "DocDate", true) == 0).Value);

                _params.DateS = Convert.ToDateTime(Convert.ToDateTime(paramList.FirstOrDefault(kv => string.Compare(kv.Key, "DocDateS", true) == 0).Value).ToString("yyyy-MM-dd 23:59:59"));
                if (_params.DateS < Convert.ToDateTime("01.01.1800"))
                {
                    _params.DateS = Convert.ToDateTime(sysSetting.JurDateS.ToString("yyyy-MM-dd 00:00:00")).AddDays(-1);
                }
                else
                {
                    _params.DateS = _params.DateS.Value.AddDays(-1);
                }

                _params.DatePo = Convert.ToDateTime(Convert.ToDateTime(paramList.FirstOrDefault(kv => string.Compare(kv.Key, "DocDatePo", true) == 0).Value).ToString("yyyy-MM-dd 23:59:59"));
                if (_params.DatePo < Convert.ToDateTime("01.01.1800"))
                {
                    _params.DatePo = Convert.ToDateTime(sysSetting.JurDatePo.ToString("yyyy-MM-dd 23:59:59"));
                }

                _params.DirWarehouseID = Convert.ToInt32(paramList.FirstOrDefault(kv => string.Compare(kv.Key, "DirWarehouseID", true) == 0).Value);

                #endregion



                #region Основной запрос *** *** ***

                int?   DocSecondHandRetailID = null, DocSecondHandRetailReturnID = null, Rem2PartyID = null, Rem2PartyMinusID = null, DirReturnTypeID = null, DirDescriptionID = null;
                string DirReturnTypeName = null, DirDescriptionName = null;
                double Quantity = 1;

                var query       =
                    (
                        //Розничный Чек

                        from x in db.Rem2PartyMinuses
                        from y in db.DocSecondHandRetailTabs

                        //from docSecondHandPurches in db.DocSecondHandPurches //!!!
                        join docSecondHandPurches in db.DocSecondHandPurches on x.rem2Party.DocIDFirst equals docSecondHandPurches.DocID

                        join dirServiceNomens11 in db.DirServiceNomens on x.dirServiceNomen.Sub equals dirServiceNomens11.DirServiceNomenID into dirServiceNomens12
                        from dirServiceNomensSubGroup in dirServiceNomens12.DefaultIfEmpty()

                        join dirServiceNomens21 in db.DirServiceNomens on dirServiceNomensSubGroup.Sub equals dirServiceNomens21.DirServiceNomenID into dirServiceNomens22
                        from dirServiceNomensGroup in dirServiceNomens22.DefaultIfEmpty()

                        where
                        x.FieldID == y.DocSecondHandRetailTabID &&
                        x.rem2Party.DocIDFirst == docSecondHandPurches.DocID &&     //x.rem2Party.DocID == docSecondHandPurches.DocID && //!!!
                        x.doc.DocDate >= _params.DateS && x.doc.DocDate <= _params.DatePo && x.doc.ListObjectID == 66 &&
                        x.DirWarehouseID == _params.DirWarehouseID

                        #region select

                        select new
                {
                    DocID = x.DocID,
                    DocSecondHandPurchID = docSecondHandPurches.DocSecondHandPurchID,

                    KKMSCheckNumber = y.docSecondHandRetail.doc.KKMSCheckNumber,
                    KKMSIdCommand = y.docSecondHandRetail.doc.KKMSIdCommand,

                    DocDate = x.doc.DocDate,
                    Held = x.doc.Held,
                    Discount = x.doc.Discount,
                    DocSecondHandRetailID = y.DocSecondHandRetailID,         //NumberReal = x.doc.NumberReal,

                    DocSecondHandRetailReturnID = y.DocSecondHandRetailID,   //NumberReal = x.doc.NumberReal,
                    DirWarehouseID = x.DirWarehouseID,
                    ListObjectID = x.doc.listObject.ListObjectID,
                    ListObjectNameRu = x.doc.listObject.ListObjectNameRu,

                    DirServiceNomenID = x.DirServiceNomenID,

                    //DirServiceNomenName = x.dirServiceNomen.DirServiceNomenName,
                    DirServiceNomenName =
                        dirServiceNomensSubGroup.DirServiceNomenName == null ? x.dirServiceNomen.DirServiceNomenName :
                        dirServiceNomensGroup.DirServiceNomenName == null ? dirServiceNomensSubGroup.DirServiceNomenName + " / " + x.dirServiceNomen.DirServiceNomenName :
                        dirServiceNomensGroup.DirServiceNomenName + " / " + dirServiceNomensSubGroup.DirServiceNomenName + " / " + x.dirServiceNomen.DirServiceNomenName,

                    Rem2PartyID = x.Rem2PartyID,
                    Rem2PartyMinusID = x.Rem2PartyMinusID,
                    Quantity = x.Quantity,
                    PriceVAT = x.PriceVAT,

                    DirCurrencyID = x.DirCurrencyID,
                    DirCurrencyRate = x.DirCurrencyRate,
                    DirCurrencyMultiplicity = x.DirCurrencyMultiplicity,
                    DirCurrencyName = x.dirCurrency.DirCurrencyName + " (" + x.DirCurrencyRate + ", " + x.DirCurrencyMultiplicity + ")",

                    DirEmployeeName = x.doc.dirEmployee.DirEmployeeName,

                    //Rem2Party
                    //Barcode = x.rem2Party.Barcode,
                    //SerialNumber = x.rem2Party.SerialNumber,

                    //Приходная цена
                    PriceCurrencyPurch = y.rem2Party.PriceCurrency,         //x.remParty.PriceCurrency,

                    //Цена в т.в.
                    PriceCurrency = x.PriceCurrency,
                    //Себестоимость
                    SUMSalePriceVATCurrency = x.Quantity * x.PriceCurrency - x.doc.Discount == null ? 0
                            : Math.Round(x.Quantity * x.PriceCurrency - x.doc.Discount, sysSetting.FractionalPartInSum),


                    //Причина возврата
                    DirReturnTypeID = y.DirReturnTypeID,
                    DirReturnTypeName = "",

                    DirDescriptionID = y.DirDescriptionID,
                    DirDescriptionName = "",
                }

                        #endregion

                    ).Union
                    (
                        //Розничный возврат

                        from x in db.DocSecondHandRetailReturnTabs

                        //Документы и партии для нахождения первичного Номера документа!
                        join rem2PartyMinuses1 in db.Rem2PartyMinuses on x.Rem2PartyMinusID equals rem2PartyMinuses1.Rem2PartyMinusID into rem2PartyMinuses2
                        from rem2PartyMinuses in rem2PartyMinuses2.DefaultIfEmpty()

                        join rem2Parties1 in db.Rem2Parties on rem2PartyMinuses.Rem2PartyID equals rem2Parties1.Rem2PartyID into rem2Parties2
                        from rem2Parties in rem2Parties2.DefaultIfEmpty()

                        join docSecondHandPurches1 in db.DocSecondHandPurches on rem2Parties.DocIDFirst equals docSecondHandPurches1.DocID into docSecondHandPurches2
                        from docSecondHandPurches in docSecondHandPurches2.DefaultIfEmpty()

                        //Наименование Группы товара
                        join dirServiceNomens11 in db.DirServiceNomens on x.dirServiceNomen.Sub equals dirServiceNomens11.DirServiceNomenID into dirServiceNomens12
                        from dirServiceNomensSubGroup in dirServiceNomens12.DefaultIfEmpty()

                        join dirServiceNomens21 in db.DirServiceNomens on dirServiceNomensSubGroup.Sub equals dirServiceNomens21.DirServiceNomenID into dirServiceNomens22
                        from dirServiceNomensGroup in dirServiceNomens22.DefaultIfEmpty()


                        where
                        x.docSecondHandRetailReturn.doc.DocDate >= _params.DateS && x.docSecondHandRetailReturn.doc.DocDate <= _params.DatePo &&
                        x.docSecondHandRetailReturn.DirWarehouseID == _params.DirWarehouseID


                        #region select

                        select new
                {
                    DocID = x.docSecondHandRetailReturn.DocID,
                    DocSecondHandPurchID = docSecondHandPurches.DocSecondHandPurchID,

                    KKMSCheckNumber = x.docSecondHandRetailReturn.doc.KKMSCheckNumber,
                    KKMSIdCommand   = x.docSecondHandRetailReturn.doc.KKMSIdCommand,

                    DocDate  = x.docSecondHandRetailReturn.doc.DocDate,
                    Held     = x.docSecondHandRetailReturn.doc.Held,
                    Discount = x.docSecondHandRetailReturn.doc.Discount,
                    DocSecondHandRetailID = x.docSecondHandRetailReturn.DocSecondHandRetailReturnID,         //NumberReal = x.docSecondHandRetailReturn.doc.NumberReal,

                    DocSecondHandRetailReturnID = x.docSecondHandRetailReturn.DocSecondHandRetailReturnID,   //NumberReal = x.docSecondHandRetailReturn.doc.NumberReal,
                    DirWarehouseID   = x.docSecondHandRetailReturn.DirWarehouseID,
                    ListObjectID     = x.docSecondHandRetailReturn.doc.listObject.ListObjectID,
                    ListObjectNameRu = x.docSecondHandRetailReturn.doc.listObject.ListObjectNameRu,

                    DirServiceNomenID = x.DirServiceNomenID,

                    //DirServiceNomenName = x.dirServiceNomen.DirServiceNomenName,
                    DirServiceNomenName =
                        dirServiceNomensSubGroup.DirServiceNomenName == null ? x.dirServiceNomen.DirServiceNomenName :
                        dirServiceNomensGroup.DirServiceNomenName == null ? dirServiceNomensSubGroup.DirServiceNomenName + " / " + x.dirServiceNomen.DirServiceNomenName :
                        dirServiceNomensGroup.DirServiceNomenName + " / " + dirServiceNomensSubGroup.DirServiceNomenName + " / " + x.dirServiceNomen.DirServiceNomenName,

                    Rem2PartyID      = rem2PartyMinuses.Rem2PartyID,
                    Rem2PartyMinusID = x.Rem2PartyMinusID,
                    Quantity         = -x.Quantity,
                    PriceVAT         = -x.PriceVAT,

                    DirCurrencyID           = x.DirCurrencyID,
                    DirCurrencyRate         = x.dirCurrency.DirCurrencyRate,
                    DirCurrencyMultiplicity = x.dirCurrency.DirCurrencyMultiplicity,
                    DirCurrencyName         = x.dirCurrency.DirCurrencyName + " (" + x.dirCurrency.DirCurrencyRate + ", " + x.dirCurrency.DirCurrencyMultiplicity + ")",

                    DirEmployeeName = x.docSecondHandRetailReturn.doc.dirEmployee.DirEmployeeName,

                    //Rem2Party
                    //Barcode = "", //x.Barcode,
                    //SerialNumber = "", //x.SerialNumber,

                    //Приходная цена
                    PriceCurrencyPurch = 0.0,         //x.remParty.PriceCurrency,

                    //Цена в т.в.
                    PriceCurrency = -x.PriceCurrency,
                    //Себестоимость
                    SUMSalePriceVATCurrency = x.Quantity * x.PriceCurrency - x.docSecondHandRetailReturn.doc.Discount == null ? 0
                            : -Math.Round(x.Quantity * x.PriceCurrency - x.docSecondHandRetailReturn.doc.Discount, sysSetting.FractionalPartInSum),


                    //Причина возврата
                    DirReturnTypeID   = x.DirReturnTypeID,
                    DirReturnTypeName = x.dirReturnType.DirReturnTypeName,

                    DirDescriptionID   = x.DirDescriptionID,
                    DirDescriptionName = x.dirDescription.DirDescriptionName,
                }

                        #endregion

                    ).Union
                    (
                        from x in db.DocSecondHandPurches

                        join dirServiceNomens11 in db.DirServiceNomens on x.dirServiceNomen.Sub equals dirServiceNomens11.DirServiceNomenID into dirServiceNomens12
                        from dirServiceNomensSubGroup in dirServiceNomens12.DefaultIfEmpty()

                        join dirServiceNomens21 in db.DirServiceNomens on dirServiceNomensSubGroup.Sub equals dirServiceNomens21.DirServiceNomenID into dirServiceNomens22
                        from dirServiceNomensGroup in dirServiceNomens22.DefaultIfEmpty()

                        where
                        x.doc.DocDate >= _params.DateS && x.doc.DocDate <= _params.DatePo &&
                        x.DirWarehouseID == _params.DirWarehouseID

                        #region select

                        select new
                {
                    DocID = x.DocID,
                    DocSecondHandPurchID = x.DocSecondHandPurchID,

                    KKMSCheckNumber = x.doc.KKMSCheckNumber,
                    KKMSIdCommand   = x.doc.KKMSIdCommand,

                    DocDate  = x.doc.DocDate,
                    Held     = x.doc.Held,
                    Discount = x.doc.Discount,
                    DocSecondHandRetailID = DocSecondHandRetailID,

                    DocSecondHandRetailReturnID = DocSecondHandRetailReturnID,         //NumberReal = x.doc.NumberReal,
                    DirWarehouseID   = x.DirWarehouseID,
                    ListObjectID     = x.doc.listObject.ListObjectID,
                    ListObjectNameRu = x.doc.listObject.ListObjectNameRu,

                    DirServiceNomenID = x.DirServiceNomenID,

                    //DirServiceNomenName = x.dirServiceNomen.DirServiceNomenName,
                    DirServiceNomenName =
                        dirServiceNomensSubGroup.DirServiceNomenName == null ? x.dirServiceNomen.DirServiceNomenName :
                        dirServiceNomensGroup.DirServiceNomenName == null ? dirServiceNomensSubGroup.DirServiceNomenName + " / " + x.dirServiceNomen.DirServiceNomenName :
                        dirServiceNomensGroup.DirServiceNomenName + " / " + dirServiceNomensSubGroup.DirServiceNomenName + " / " + x.dirServiceNomen.DirServiceNomenName,

                    Rem2PartyID      = Rem2PartyID,
                    Rem2PartyMinusID = Rem2PartyMinusID,
                    Quantity         = Quantity,
                    PriceVAT         = -x.PriceVAT,

                    DirCurrencyID           = x.DirCurrencyID,
                    DirCurrencyRate         = x.DirCurrencyRate,
                    DirCurrencyMultiplicity = x.DirCurrencyMultiplicity,
                    DirCurrencyName         = x.dirCurrency.DirCurrencyName + " (" + x.DirCurrencyRate + ", " + x.DirCurrencyMultiplicity + ")",

                    DirEmployeeName = x.doc.dirEmployee.DirEmployeeName,

                    //Rem2Party
                    //Barcode = 0,
                    //SerialNumber = 0,

                    //Приходная цена
                    PriceCurrencyPurch = -x.PriceVAT,         //x.remParty.PriceCurrency,

                    //Цена в т.в.
                    PriceCurrency = -x.PriceVAT,
                    //Себестоимость
                    SUMSalePriceVATCurrency = -x.PriceVAT,


                    //Причина возврата
                    DirReturnTypeID   = DirReturnTypeID,
                    DirReturnTypeName = DirReturnTypeName,

                    DirDescriptionID   = DirDescriptionID,
                    DirDescriptionName = DirDescriptionName,
                }

                        #endregion

                    );


                #endregion


                #region Сортировка

                query = query.OrderByDescending(x => x.DocDate);

                #endregion


                #region Отправка JSON

                dynamic collectionWrapper = new
                {
                    sucess = true,
                    total  = query.Count(),
                    DocSecondHandRetailTab = query
                };
                return(await Task.Run(() => Ok(collectionWrapper)));

                #endregion
            }
            catch (Exception ex)
            {
                return(Ok(returnServer.Return(false, exceptionEntry.Return(ex))));
            }
        }
示例#14
0
        // GET: api/DocAccountTabs
        public async Task <IHttpActionResult> GetDocAccountTabs(HttpRequestMessage request)
        {
            try
            {
                #region Проверяем Логин и Пароль + Изменяем строку соединения + Права + Разные Функции

                //Получаем Куку
                System.Web.HttpCookie authCookie = System.Web.HttpContext.Current.Request.Cookies["CookieIPOL"];

                // Проверяем Логин и Пароль
                Classes.Account.Login.Field field = await Task.Run(() => login.Return(authCookie, true));

                if (!field.Access)
                {
                    return(Ok(returnServer.Return(false, Classes.Language.Sklad.Language.msg10)));
                }

                //Изменяем строку соединения
                db = new DbConnectionSklad(connectionString.Return(field.DirCustomersID, null, true));

                //Права (1 - Write, 2 - Read, 3 - No Access)
                int iRight = await Task.Run(() => accessRight.Access(connectionString.Return(field.DirCustomersID, null, true), field.DirEmployeeID, "RightDocAccounts"));

                if (iRight == 3)
                {
                    return(Ok(returnServer.Return(false, Classes.Language.Sklad.Language.msg57(0))));
                }

                //Разные Функции
                function.NumberDecimalSeparator();

                //Получам настройки
                Models.Sklad.Sys.SysSetting sysSetting = await db.SysSettings.FindAsync(1);

                #endregion


                #region Параметры

                Params _params = new Params();

                //paramList -список параметров
                var paramList = request.GetQueryNameValuePairs();
                //Параметры
                _params.DocAccountID = Convert.ToInt32(paramList.FirstOrDefault(kv => string.Compare(kv.Key, "DocAccountID", true) == 0).Value);

                #endregion



                #region Основной запрос *** *** ***

                var query =
                    (
                        from docAccountTabs in db.DocAccountTabs

                        //Характеристики

                        /*
                         * join dirCharColours1 in db.DirCharColours on docAccountTabs.remParty.DirCharColourID equals dirCharColours1.DirCharColourID into dirCharColours2
                         * from dirCharColours in dirCharColours2.DefaultIfEmpty()
                         *
                         * join dirCharMaterials1 in db.DirCharMaterials on docAccountTabs.remParty.DirCharMaterialID equals dirCharMaterials1.DirCharMaterialID into dirCharMaterials2
                         * from dirCharMaterials in dirCharMaterials2.DefaultIfEmpty()
                         *
                         * join dirCharNames1 in db.DirCharNames on docAccountTabs.remParty.DirCharNameID equals dirCharNames1.DirCharNameID into dirCharNames2
                         * from dirCharNames in dirCharNames2.DefaultIfEmpty()
                         *
                         * join dirCharSeasons1 in db.DirCharSeasons on docAccountTabs.remParty.DirCharSeasonID equals dirCharSeasons1.DirCharSeasonID into dirCharSeasons2
                         * from dirCharSeasons in dirCharSeasons2.DefaultIfEmpty()
                         *
                         * join dirCharSexes1 in db.DirCharSexes on docAccountTabs.remParty.DirCharSexID equals dirCharSexes1.DirCharSexID into dirCharSexes2
                         * from dirCharSexes in dirCharSexes2.DefaultIfEmpty()
                         *
                         * join dirCharSizes1 in db.DirCharSizes on docAccountTabs.remParty.DirCharSizeID equals dirCharSizes1.DirCharSizeID into dirCharSizes2
                         * from dirCharSizes in dirCharSizes2.DefaultIfEmpty()
                         *
                         * join dirCharStyles1 in db.DirCharStyles on docAccountTabs.remParty.DirCharStyleID equals dirCharStyles1.DirCharStyleID into dirCharStyles2
                         * from dirCharStyles in dirCharStyles2.DefaultIfEmpty()
                         *
                         * join dirCharTextures1 in db.DirCharTextures on docAccountTabs.remParty.DirCharTextureID equals dirCharTextures1.DirCharTextureID into dirCharTextures2
                         * from dirCharTextures in dirCharTextures2.DefaultIfEmpty()
                         */

                        join dirNomens11 in db.DirNomens on docAccountTabs.dirNomen.Sub equals dirNomens11.DirNomenID into dirNomens12
                        from dirNomensSubGroup in dirNomens12.DefaultIfEmpty()

                        join dirNomens21 in db.DirNomens on dirNomensSubGroup.Sub equals dirNomens21.DirNomenID into dirNomens22
                        from dirNomensGroup in dirNomens22.DefaultIfEmpty()

                        where docAccountTabs.DocAccountID == _params.DocAccountID

                        #region select

                        select new
                {
                    DocAccountTabID = docAccountTabs.DocAccountTabID,
                    DocAccountID = docAccountTabs.DocAccountID,
                    DirNomenID = docAccountTabs.DirNomenID,

                    //DirNomenName = docAccountTabs.dirNomen.DirNomenName,
                    DirNomenName =
                        dirNomensSubGroup.DirNomenName == null ? docAccountTabs.dirNomen.DirNomenName :
                        dirNomensGroup.DirNomenName == null ? dirNomensSubGroup.DirNomenName + " / " + docAccountTabs.dirNomen.DirNomenName :
                        dirNomensGroup.DirNomenName + " / " + dirNomensSubGroup.DirNomenName + " / " + docAccountTabs.dirNomen.DirNomenName,

                    RemPartyID = docAccountTabs.RemPartyID,
                    Quantity = docAccountTabs.Quantity,

                    DirPriceTypeID = docAccountTabs.DirPriceTypeID,
                    DirPriceTypeName = docAccountTabs.dirPriceType.DirPriceTypeName,

                    PriceVAT = docAccountTabs.PriceVAT,

                    DirCurrencyID = docAccountTabs.DirCurrencyID,
                    DirCurrencyRate = docAccountTabs.DirCurrencyRate,
                    DirCurrencyMultiplicity = docAccountTabs.DirCurrencyMultiplicity,
                    DirCurrencyName = docAccountTabs.dirCurrency.DirCurrencyName + " (" + docAccountTabs.DirCurrencyRate + ", " + docAccountTabs.DirCurrencyMultiplicity + ")",

                    //RemParty

                    /*
                     * Barcode = docAccountTabs.remParty.Barcode,
                     * SerialNumber = docAccountTabs.remParty.SerialNumber,
                     *
                     * DirCharColourName = dirCharColours.DirCharColourName,
                     * DirCharMaterialName = dirCharMaterials.DirCharMaterialName,
                     * DirCharNameName = dirCharNames.DirCharNameName,
                     * DirCharSeasonName = dirCharSeasons.DirCharSeasonName,
                     * DirCharSexName = dirCharSexes.DirCharSexName,
                     * DirCharSizeName = dirCharSizes.DirCharSizeName,
                     * DirCharStyleName = dirCharStyles.DirCharStyleName,
                     * DirCharTextureName = dirCharTextures.DirCharTextureName,
                     * DirChar =
                     *  dirCharColours.DirCharColourName + " " +
                     *  dirCharMaterials.DirCharMaterialName + " " +
                     *  dirCharNames.DirCharNameName + " " +
                     *  dirCharSeasons.DirCharSeasonName + " " +
                     *  dirCharSexes.DirCharSexName + " " +
                     *  dirCharSizes.DirCharSizeName + " " +
                     *  dirCharStyles.DirCharStyleName + " " +
                     *  dirCharTextures.DirCharTextureName,
                     */

                    //Цена в т.в.
                    PriceCurrency = docAccountTabs.PriceCurrency,
                    //Себестоимость
                    SUMSalePriceVATCurrency = docAccountTabs.Quantity * docAccountTabs.PriceCurrency == null ? 0
                            :
                                              Math.Round(docAccountTabs.Quantity * docAccountTabs.PriceCurrency, sysSetting.FractionalPartInSum)
                }

                        #endregion
                    );

                #endregion


                #region Отправка JSON

                dynamic collectionWrapper = new
                {
                    sucess        = true,
                    total         = query.Count(),
                    DocAccountTab = query
                };
                return(await Task.Run(() => Ok(collectionWrapper)));

                #endregion
            }
            catch (Exception ex)
            {
                return(Ok(returnServer.Return(false, exceptionEntry.Return(ex))));
            }
        }
示例#15
0
        //int ListObjectID = 53;

        #endregion


        #region Не рабочий метод!!!

        //Не рабочий метод!!!
        public async Task <IHttpActionResult> GetSms(int SmsTemplateID, int DocServicePurchID, HttpRequestMessage request)
        {
            try
            {
                #region Проверяем Логин и Пароль + Изменяем строку соединения + Права + Разные Функции

                //Получаем Куку
                System.Web.HttpCookie authCookie = System.Web.HttpContext.Current.Request.Cookies["CookieIPOL"];

                // Проверяем Логин и Пароль
                Classes.Account.Login.Field field = await Task.Run(() => login.Return(authCookie, true));

                if (!field.Access)
                {
                    return(Ok(returnServer.Return(false, Classes.Language.Sklad.Language.msg10)));
                }

                //Изменяем строку соединения
                db = new DbConnectionSklad(connectionString.Return(field.DirCustomersID, null, true));

                //Права

                /*int Status = await Task.Run(() => accessRight.Access(db, field.DirEmployeeID, "DirBank"));
                 * if (Status >= 3) return Ok(returnServer.Return(false, Classes.Language.Sklad.Language.msg57(0)));*/

                //Права (1 - Write, 2 - Read, 3 - No Access)
                //int iRight = await Task.Run(() => accessRight.Access(connectionString.Return(field.DirCustomersID, null, true), field.DirEmployeeID, "RightDirBanks"));
                //if (iRight == 3) return Ok(returnServer.Return(false, Classes.Language.Sklad.Language.msg57(0)));

                //Разные Функции
                function.NumberDecimalSeparator();

                //Получам настройки
                Models.Sklad.Sys.SysSetting sysSetting = await db.SysSettings.FindAsync(1);

                #endregion


                string res = "";

                //Находим по "DocServicePurchID" номер телефона клиента
                Models.Sklad.Doc.DocServicePurch docServicePurch = await db.DocServicePurches.FindAsync(DocServicePurchID);

                // DirServiceContractorPhone == "79257711344"


                #region Проверки

                //Активны SMS
                if (sysSetting.SmsActive)
                {
                    return(Ok(returnServer.Return(false, "Активируйте в Настройках (верхнее меню) оповещение по SMS!")));
                }

                //Проверка номера телефона
                if (docServicePurch.DirServiceContractorPhone == null)
                {
                    return(Ok(returnServer.Return(false, "Номер телефоана клиента не корректный!")));
                }
                //Убираем + в самом начале
                docServicePurch.DirServiceContractorPhone = docServicePurch.DirServiceContractorPhone.Replace("+", "");
                //Проверка номера телефона
                if (docServicePurch.DirServiceContractorPhone.Length < 11)
                {
                    return(Ok(returnServer.Return(false, "Номер телефоана клиента не корректный!")));
                }

                #endregion


                if (sysSetting.SmsServiceID == 1)
                {
                    #region sms48_ru

                    PartionnyAccount.Classes.SMS.sms48_ru sms48_ru = new Classes.SMS.sms48_ru();
                    res = sms48_ru.Send(sysSetting, docServicePurch.DirServiceContractorPhone, "Apparat otremontirovan. Zaberite ego - 1200 RUR");

                    //Пишем в Лог + ещё куда-то
                    //Только, если успешно!
                    if (res == "8")
                    {
                        res = "Отправлено";
                    }
                    else if (res == "1")
                    {
                        res = "Доставлено";
                    }
                    else if (res == "2")
                    {
                        res = "Не удалось";
                    }
                    else
                    {
                        res = "Ошибка: " + res;
                    }

                    #endregion
                }
                else if (sysSetting.SmsServiceID == 2)
                {
                    #region sms4b_ru - не работает

                    /*
                     * PartionnyAccount.Classes.SMS.sms4b_ru sms4b_ru = new Classes.SMS.sms4b_ru();
                     * res = sms4b_ru.Send();
                     *
                     * //Пишем в Лог + ещё куда-то
                     * //Только, если успешно!
                     * if (res == "1")
                     * {
                     *
                     * }
                     */

                    #endregion
                }


                dynamic collectionWrapper = new
                {
                    Msg = res
                };
                return(Ok(returnServer.Return(true, collectionWrapper)));
            }
            catch (Exception ex)
            {
                return(Ok(returnServer.Return(false, exceptionEntry.Return(ex))));
            }
        }
示例#16
0
        // GET: api/ListObjectPFTabs
        public async Task <IHttpActionResult> GetListObjectPFTabs(HttpRequestMessage request)
        {
            try
            {
                #region Проверяем Логин и Пароль + Изменяем строку соединения + Права + Разные Функции

                //Получаем Куку
                System.Web.HttpCookie authCookie = System.Web.HttpContext.Current.Request.Cookies["CookieIPOL"];

                // Проверяем Логин и Пароль
                Classes.Account.Login.Field field = await Task.Run(() => login.Return(authCookie, true));

                if (!field.Access)
                {
                    return(Ok(returnServer.Return(false, Classes.Language.Sklad.Language.msg10)));
                }

                //Изменяем строку соединения
                db = new DbConnectionSklad(connectionString.Return(field.DirCustomersID, null, true));

                //Права (1 - Write, 2 - Read, 3 - No Access)

                /*
                 * int iRight = await Task.Run(() => accessRight.Access(connectionString.Return(field.DirCustomersID, null, true), field.DirEmployeeID, "RightListObjectPFTabs"));
                 * if (iRight == 3) return Ok(returnServer.Return(false, Classes.Language.Sklad.Language.msg57(0)));
                 */

                //Разные Функции
                function.NumberDecimalSeparator();

                //Получам настройки
                Models.Sklad.Sys.SysSetting sysSetting = await db.SysSettings.FindAsync(1);

                #endregion


                #region Параметры

                Params _params = new Params();

                //paramList -список параметров
                var paramList = request.GetQueryNameValuePairs();
                //Параметры
                _params.ListObjectPFID = Convert.ToInt32(paramList.FirstOrDefault(kv => string.Compare(kv.Key, "ListObjectPFID", true) == 0).Value);

                #endregion



                #region Основной запрос *** *** ***

                /*
                 * "SELECT ListDocPFTab.ListDocPFTabID, ListDocPFTab.ListDocPFTabName, ListDocPFTab.ListDocFieldID, ListDocFieldName." + ListDocFieldName + ", ListDocPFTab.PositionID " +
                 * "FROM ListDocPFTab, ListDocField, ListDocFieldName " +
                 * "WHERE " +
                 * "(ListDocPFTab.ListDocFieldID=ListDocField.ListDocFieldID)and" +
                 * "(ListDocField.ListDocFieldNameID=ListDocFieldName.ListDocFieldNameID)and" +
                 * "(ListDocPFTab.ListDocPFID=@ListDocPFID)";
                 */

                var query =
                    (
                        from listObjectPFTabs in db.ListObjectPFTabs
                        where listObjectPFTabs.ListObjectPFID == _params.ListObjectPFID
                        select new
                {
                    ListObjectPFTabID = listObjectPFTabs.ListObjectPFTabID,
                    ListObjectPFTabName = listObjectPFTabs.ListObjectPFTabName,

                    ListObjectFieldNameID = listObjectPFTabs.ListObjectFieldNameID,
                    ListObjectFieldNameRu = listObjectPFTabs.listObjectFieldName.ListObjectFieldNameRu,

                    PositionID = listObjectPFTabs.PositionID,
                    TabNum = listObjectPFTabs.TabNum,
                    Width = listObjectPFTabs.Width,
                }
                    );

                #endregion


                #region Отправка JSON

                dynamic collectionWrapper = new
                {
                    sucess          = true,
                    total           = query.Count(),
                    ListObjectPFTab = query
                };
                return(await Task.Run(() => Ok(collectionWrapper)));

                #endregion
            }
            catch (Exception ex)
            {
                return(Ok(returnServer.Return(false, exceptionEntry.Return(ex))));
            }
        }
示例#17
0
        // GET: api/RemPartyMinuses
        public async Task <IHttpActionResult> GetRemPartyMinuses(HttpRequestMessage request)
        {
            try
            {
                #region Проверяем Логин и Пароль + Изменяем строку соединения + Права + Разные Функции

                //Получаем Куку
                System.Web.HttpCookie authCookie = System.Web.HttpContext.Current.Request.Cookies["CookieIPOL"];

                // Проверяем Логин и Пароль
                Classes.Account.Login.Field field = await Task.Run(() => login.Return(authCookie, true));

                if (!field.Access)
                {
                    return(Ok(returnServer.Return(false, Classes.Language.Sklad.Language.msg10)));
                }

                //Изменяем строку соединения
                db = new DbConnectionSklad(connectionString.Return(field.DirCustomersID, null, true));

                //Права (1 - Write, 2 - Read, 3 - No Access)

                /*
                 * int iRight = await Task.Run(() => accessRight.Access(connectionString.Return(field.DirCustomersID, null, true), field.DirEmployeeID, "RightRemPartyMinuses"));
                 * if (iRight == 3) return Ok(returnServer.Return(false, Classes.Language.Sklad.Language.msg57(0)));
                 */

                //Разные Функции
                function.NumberDecimalSeparator();

                //Получам настройки
                Models.Sklad.Sys.SysSetting sysSetting = await db.SysSettings.FindAsync(1);

                #endregion


                #region Параметры

                Params _params = new Params();

                //paramList -список параметров
                var paramList = request.GetQueryNameValuePairs();
                //Параметры
                _params.RemPartyID  = Convert.ToInt32(paramList.FirstOrDefault(kv => string.Compare(kv.Key, "RemPartyID", true) == 0).Value);
                _params.DirNomenID  = Convert.ToInt32(paramList.FirstOrDefault(kv => string.Compare(kv.Key, "DirNomenID", true) == 0).Value);
                _params.DocSaleID   = Convert.ToInt32(paramList.FirstOrDefault(kv => string.Compare(kv.Key, "DocSaleID", true) == 0).Value);
                _params.DocRetailID = Convert.ToInt32(paramList.FirstOrDefault(kv => string.Compare(kv.Key, "DocRetailID", true) == 0).Value);
                _params.parSearch   = paramList.FirstOrDefault(kv => string.Compare(kv.Key, "parSearch", true) == 0).Value; if (_params.parSearch != null)
                {
                    _params.parSearch = _params.parSearch.ToLower();                                                                                                                                      //Поиск
                }
                _params.DirWarehouseID = Convert.ToInt32(paramList.FirstOrDefault(kv => string.Compare(kv.Key, "DirWarehouseID", true) == 0).Value);

                _params.DateS = Convert.ToDateTime(Convert.ToDateTime(paramList.FirstOrDefault(kv => string.Compare(kv.Key, "DateS", true) == 0).Value).ToString("yyyy-MM-dd 23:59:59"));
                if (_params.DateS < Convert.ToDateTime("01.01.1800"))
                {
                    _params.DateS = Convert.ToDateTime(sysSetting.JurDateS.ToString("yyyy-MM-dd 00:00:00")).AddDays(-1);
                }
                else
                {
                    _params.DateS = _params.DateS.Value.AddDays(-1);
                }

                _params.DatePo = Convert.ToDateTime(Convert.ToDateTime(paramList.FirstOrDefault(kv => string.Compare(kv.Key, "DocDate", true) == 0).Value).ToString("yyyy-MM-dd 23:59:59"));
                if (_params.DatePo < Convert.ToDateTime("01.01.1800"))
                {
                    _params.DatePo = Convert.ToDateTime(sysSetting.JurDatePo.ToString("yyyy-MM-dd 23:59:59"));
                }

                #endregion



                #region Основной запрос *** *** ***

                var query =
                    (
                        from remPartyMinuses in db.RemPartyMinuses

                        /*
                         * where
                         *  remPartyMinuses.Remnant > 0 &&
                         *  remPartyMinuses.DirContractorIDOrg == _params.DirContractorIDOrg &&
                         *  remPartyMinuses.DirNomenID == _params.DirNomenID &&
                         *  remPartyMinuses.DirWarehouseID == _params.DirWarehouseID
                         */
                        select new
                {
                    RemPartyMinusID = remPartyMinuses.RemPartyMinusID,
                    DocID = remPartyMinuses.DocID,
                    RemPartyID = remPartyMinuses.RemPartyID,
                    DirNomenID = remPartyMinuses.DirNomenID,
                    DirNomenName = remPartyMinuses.dirNomen.DirNomenName,
                    DocDate = remPartyMinuses.doc.DocDate,
                    DirContractorNameOrg = remPartyMinuses.doc.dirContractorOrg.DirContractorName,
                    DirContractorName = remPartyMinuses.doc.dirContractor.DirContractorName,

                    DirCurrencyID = remPartyMinuses.DirCurrencyID,
                    DirCurrencyName = remPartyMinuses.dirCurrency.DirCurrencyName,
                    DirCurrencyRate = remPartyMinuses.DirCurrencyRate,
                    DirCurrencyMultiplicity = remPartyMinuses.DirCurrencyMultiplicity,

                    DirVatValue = remPartyMinuses.DirVatValue,
                    DirWarehouseID = remPartyMinuses.dirWarehouse.DirWarehouseID, DirWarehouseName = remPartyMinuses.dirWarehouse.DirWarehouseName,
                    ListDocNameRu = remPartyMinuses.doc.listObject.ListObjectNameRu,
                    PriceVAT = remPartyMinuses.PriceVAT,
                    PriceCurrency = remPartyMinuses.PriceCurrency,
                    Quantity = remPartyMinuses.Quantity,
                    Reserve = remPartyMinuses.Reserve
                }
                    );

                #endregion


                #region Условия (параметры) *** *** ***


                #region Кликнули на товар - паказать список партий

                if (_params.RemPartyID > 0)
                {
                    query = query.Where(x => x.RemPartyID == _params.RemPartyID);
                }
                else if (_params.DirNomenID > 0)
                {
                    query = query.Where(x => x.DirNomenID == _params.DirNomenID);
                }
                else if (_params.DocSaleID > 0)
                {
                    //query = query.Where(x => x.DocSaleID == _params.DocSaleID);
                    //Алгоритм:
                    //1. Получаем DocID по DocSaleID
                    //2. query = query.Where(x => x.DocID == iDocID);

                    //1. Получаем DocID по DocSaleID
                    var queryDocSale = await db.DocSales.FindAsync(_params.DocSaleID);

                    int iDocID = Convert.ToInt32(queryDocSale.DocID);

                    //2. query = query.Where(x => x.DocID == iDocID);
                    query = query.Where(x => x.DocID == iDocID);
                }
                else if (_params.DocRetailID > 0)
                {
                    //query = query.Where(x => x.DocRetailID == _params.DocRetailID);
                    //Алгоритм:
                    //1. Получаем DocID по DocRetailID
                    //2. query = query.Where(x => x.DocID == iDocID);

                    //1. Получаем DocID по DocRetailID
                    var queryDocRetail = await db.DocRetails.FindAsync(_params.DocRetailID);

                    int iDocID = Convert.ToInt32(queryDocRetail.DocID);

                    //2. query = query.Where(x => x.DocID == iDocID);
                    query = query.Where(x => x.DocID == iDocID);
                }

                #endregion


                #region Поиск партии по Серийному номеру или по Штрих-коду

                if (!String.IsNullOrEmpty(_params.parSearch))
                {
                }

                #endregion

                //По дате
                if (_params.DateS != null)
                {
                    query = query.Where(x => x.DocDate >= _params.DateS && x.DocDate <= _params.DatePo);
                }
                //По складу
                if (_params.DirWarehouseID > 0)
                {
                    query = query.Where(x => x.DirWarehouseID == _params.DirWarehouseID);
                }

                #endregion


                #region Отправка JSON

                //А вдруг к-во меньше Лимита, тогда показать не общее к-во, а реальное!
                int dirCount = query.Count();

                dynamic collectionWrapper = new
                {
                    sucess        = true,
                    total         = dirCount,
                    RemPartyMinus = query
                };
                return(await Task.Run(() => Ok(collectionWrapper)));

                #endregion
            }
            catch (Exception ex)
            {
                return(Ok(returnServer.Return(false, exceptionEntry.Return(ex))));
            }
        }
        public async Task <IHttpActionResult> GetDirCurrencyHistories(HttpRequestMessage request)
        {
            try
            {
                #region Проверяем Логин и Пароль + Изменяем строку соединения + Права + Разные Функции

                //Получаем Куку
                System.Web.HttpCookie authCookie = System.Web.HttpContext.Current.Request.Cookies["CookieIPOL"];

                // Проверяем Логин и Пароль
                Classes.Account.Login.Field field = await Task.Run(() => login.Return(authCookie, true));

                if (!field.Access)
                {
                    return(Ok(returnServer.Return(false, Classes.Language.Sklad.Language.msg10)));
                }

                //Изменяем строку соединения
                db = new DbConnectionSklad(connectionString.Return(field.DirCustomersID, null, true));

                //Права (1 - Write, 2 - Read, 3 - No Access)
                int iRight = await Task.Run(() => accessRight.Access(connectionString.Return(field.DirCustomersID, null, true), field.DirEmployeeID, "RightDirCurrencies"));

                if (iRight == 3)
                {
                    return(Ok(returnServer.Return(false, Classes.Language.Sklad.Language.msg57(0))));
                }

                //Разные Функции
                function.NumberDecimalSeparator();

                //Получам настройки
                Models.Sklad.Sys.SysSetting sysSetting = await db.SysSettings.FindAsync(1);

                #endregion


                #region Параметры

                Params _params = new Params();

                //paramList -список параметров
                var paramList = request.GetQueryNameValuePairs();
                //Параметры
                //_params.limit = Convert.ToInt32(paramList.FirstOrDefault(kv => string.Compare(kv.Key, "limit", true) == 0).Value);  //Записей на страницу
                //_params.page = Convert.ToInt32(paramList.FirstOrDefault(kv => string.Compare(kv.Key, "page", true) == 0).Value);   //Номер страницы
                //_params.Skip = _params.limit * (_params.page - 1);
                _params.DirCurrencyID = Convert.ToInt32(paramList.FirstOrDefault(kv => string.Compare(kv.Key, "DirCurrencyID", true) == 0).Value);
                _params.parSearch     = paramList.FirstOrDefault(kv => string.Compare(kv.Key, "parSearch", true) == 0).Value; if (_params.parSearch != null)
                {
                    _params.parSearch = _params.parSearch.ToLower();                                                                                                                                      //Поиск
                }
                #endregion


                //Открытие на редактирование в форме

                #region Основной запрос *** *** ***

                var query =
                    (
                        from x in db.DirCurrencyHistories
                        where x.DirCurrencyID == _params.DirCurrencyID
                        select new
                {
                    DirCurrencyHistoryID = x.DirCurrencyHistoryID,
                    DirCurrencyName = x.dirCurrency.DirCurrencyName,
                    HistoryDate = x.HistoryDate.ToString(),
                    DirCurrencyRate = x.DirCurrencyRate,
                    DirCurrencyMultiplicity = x.DirCurrencyMultiplicity
                }
                    );

                #endregion


                #region Условия (параметры) *** *** ***


                #region Поиск

                if (!String.IsNullOrEmpty(_params.parSearch))
                {
                    //Проверяем
                    DateTime dDate;
                    bool     bResult1 = DateTime.TryParse(_params.parSearch, out dDate);
                    Double   dDecimal;
                    bool     bResult2 = Double.TryParse(_params.parSearch, out dDecimal);


                    //Если число, то задействуем в поиске и числовые поля (_params.parSearch == iNumber)
                    if (bResult1)
                    {
                        query = query.Where(x => x.HistoryDate.Contains(_params.parSearch));
                    }
                    else if (bResult2)
                    {
                        query = query.Where(x => x.DirCurrencyRate == dDecimal);
                    }
                    else
                    {
                        query = query.Where(x => x.DirCurrencyName.Contains(_params.parSearch));
                    }
                }

                #endregion


                #region OrderBy и Лимит

                query = query.OrderBy(x => x.HistoryDate); //.Skip(_params.Skip).Take(_params.limit);

                #endregion


                #endregion


                #region Отправка JSON

                int dirCount = await query.CountAsync();

                dynamic collectionWrapper = new
                {
                    sucess             = true,
                    total              = dirCount,
                    DirCurrencyHistory = query
                };
                return(await Task.Run(() => Ok(collectionWrapper)));

                #endregion
            }
            catch (Exception ex)
            {
                return(Ok(returnServer.Return(false, exceptionEntry.Return(ex))));
            }
        }
示例#19
0
        public async Task <IHttpActionResult> PostDocBankSum(DocBankSum docBankSum)
        {
            #region Проверяем Логин и Пароль + Изменяем строку соединения + Права + Разные Функции

            //Получаем Куку
            System.Web.HttpCookie authCookie = System.Web.HttpContext.Current.Request.Cookies["CookieIPOL"];

            // Проверяем Логин и Пароль
            Classes.Account.Login.Field field = await Task.Run(() => login.Return(authCookie, true));

            if (!field.Access)
            {
                return(Ok(returnServer.Return(false, Classes.Language.Sklad.Language.msg10)));
            }

            //Изменяем строку соединения
            db = new DbConnectionSklad(connectionString.Return(field.DirCustomersID, null, true));

            //Права (1 - Write, 2 - Read, 3 - No Access)
            int iRight = await Task.Run(() => accessRight.Access(connectionString.Return(field.DirCustomersID, null, true), field.DirEmployeeID, "RightDocBankSums"));

            if (iRight != 1)
            {
                return(Ok(returnServer.Return(false, Classes.Language.Sklad.Language.msg57(0))));
            }

            //Разные Функции
            function.NumberDecimalSeparator();

            //Получам настройки
            Models.Sklad.Sys.SysSetting sysSetting = await db.SysSettings.FindAsync(1);

            #endregion

            #region Проверки

            if (!ModelState.IsValid)
            {
                return(Ok(returnServer.Return(false, Classes.Language.Sklad.Language.msg91)));                     //return BadRequest(ModelState);
            }
            //Подстановки - некоторые поля надо заполнить, если они не заполены
            //docBankSum.Substitute();
            docBankSum.DirEmployeeID = field.DirEmployeeID;

            #endregion


            #region Сохранение

            try
            {
                docBankSum = await Task.Run(() => mPutPostDocBankSum(db, docBankSum, EntityState.Added));


                #region 6. JourDisp *** *** *** *** *** *** *** *** *** *

                Models.Sklad.Sys.SysJourDisp sysJourDisp = new Models.Sklad.Sys.SysJourDisp();
                sysJourDisp.DirDispOperationID = 3; //Добавление записи
                sysJourDisp.DirEmployeeID      = field.DirEmployeeID;
                sysJourDisp.ListObjectID       = ListObjectID;
                sysJourDisp.TableFieldID       = docBankSum.DocBankSumID;
                sysJourDisp.Description        = "";
                try { sysJourDispsController.mPutPostSysJourDisps(db, sysJourDisp, EntityState.Added); } catch (Exception ex) { }

                #endregion


                dynamic collectionWrapper = new
                {
                    ID = docBankSum.DocBankSumID
                };
                return(Ok(returnServer.Return(true, collectionWrapper))); //return Ok(returnServer.Return(true, ""));
            }
            catch (Exception ex)
            {
                return(Ok(returnServer.Return(false, exceptionEntry.Return(ex))));
            }

            #endregion
        }
示例#20
0
        // GET: api/DocServiceMovTabs
        public async Task <IHttpActionResult> GetDocServiceMovTabs(HttpRequestMessage request)
        {
            try
            {
                #region Проверяем Логин и Пароль + Изменяем строку соединения + Права + Разные Функции

                //Получаем Куку
                System.Web.HttpCookie authCookie = System.Web.HttpContext.Current.Request.Cookies["CookieIPOL"];

                // Проверяем Логин и Пароль
                Classes.Account.Login.Field field = await Task.Run(() => login.Return(authCookie, true));

                if (!field.Access)
                {
                    return(Ok(returnServer.Return(false, Classes.Language.Sklad.Language.msg10)));
                }

                //Изменяем строку соединения
                db = new DbConnectionSklad(connectionString.Return(field.DirCustomersID, null, true));

                //Права (1 - Write, 2 - Read, 3 - No Access)
                //Возможно доступна Логистика
                int iRight = await Task.Run(() => accessRight.Access(connectionString.Return(field.DirCustomersID, null, true), field.DirEmployeeID, "RightDocServiceMovements"));

                if (iRight == 3)
                {
                    iRight = await Task.Run(() => accessRight.Access(connectionString.Return(field.DirCustomersID, null, true), field.DirEmployeeID, "RightDocServiceMovementsLogistics"));

                    if (iRight == 3)
                    {
                        return(Ok(returnServer.Return(false, Classes.Language.Sklad.Language.msg57(0))));
                    }
                }

                //Разные Функции
                function.NumberDecimalSeparator();

                //Получам настройки
                Models.Sklad.Sys.SysSetting sysSetting = await db.SysSettings.FindAsync(1);

                #endregion


                #region Параметры

                Params _params = new Params();

                //paramList -список параметров
                var paramList = request.GetQueryNameValuePairs();
                //Параметры
                _params.DocServiceMovID = Convert.ToInt32(paramList.FirstOrDefault(kv => string.Compare(kv.Key, "DocServiceMovID", true) == 0).Value);

                #endregion



                #region Основной запрос *** *** ***

                var query =
                    (
                        from docMovementTabs in db.DocServiceMovTabs

                        join dirServiceNomens11 in db.DirServiceNomens on docMovementTabs.dirServiceNomen.Sub equals dirServiceNomens11.DirServiceNomenID into dirServiceNomens12
                        from dirServiceNomensSubGroup in dirServiceNomens12.DefaultIfEmpty()

                        join dirServiceNomens21 in db.DirServiceNomens on dirServiceNomensSubGroup.Sub equals dirServiceNomens21.DirServiceNomenID into dirServiceNomens22
                        from dirServiceNomensGroup in dirServiceNomens22.DefaultIfEmpty()

                        where docMovementTabs.DocServiceMovID == _params.DocServiceMovID

                        #region select

                        select new
                {
                    DocServiceMovTabID = docMovementTabs.DocServiceMovTabID,
                    DocServiceMovID = docMovementTabs.DocServiceMovID,
                    DirServiceNomenID = docMovementTabs.DirServiceNomenID,

                    DocServicePurchID = docMovementTabs.docServicePurch.DocServicePurchID,

                    //DirServiceNomenName = docMovementTabs.dirServiceNomen.DirServiceNomenName,
                    DirServiceNomenName =
                        dirServiceNomensSubGroup.DirServiceNomenName == null ? docMovementTabs.dirServiceNomen.DirServiceNomenName :
                        dirServiceNomensGroup.DirServiceNomenName == null ? dirServiceNomensSubGroup.DirServiceNomenName + " / " + docMovementTabs.dirServiceNomen.DirServiceNomenName :
                        dirServiceNomensGroup.DirServiceNomenName + " / " + dirServiceNomensSubGroup.DirServiceNomenName + " / " + docMovementTabs.dirServiceNomen.DirServiceNomenName,

                    DirServiceStatusID = docMovementTabs.DirServiceStatusID,
                    DirServiceStatusName = docMovementTabs.dirServiceStatus.DirServiceStatusName,

                    DirServiceStatusID_789 = docMovementTabs.DirServiceStatusID_789,
                    DirServiceStatusName_789 = docMovementTabs.dirServiceStatus_789.DirServiceStatusName,

                    //docServicePurch ===
                    PriceVAT = docMovementTabs.docServicePurch.PriceVAT,
                    SerialNumber = docMovementTabs.docServicePurch.SerialNumber,
                    DirServiceContractorName = docMovementTabs.docServicePurch.DirServiceContractorName,
                    DirServiceContractorPhone = docMovementTabs.docServicePurch.DirServiceContractorPhone,
                    PrepaymentSum = docMovementTabs.docServicePurch.PrepaymentSum,
                }

                        #endregion
                    );

                #endregion


                #region Отправка JSON

                dynamic collectionWrapper = new
                {
                    sucess           = true,
                    total            = query.Count(),
                    DocServiceMovTab = query
                };
                return(await Task.Run(() => Ok(collectionWrapper)));

                #endregion
            }
            catch (Exception ex)
            {
                return(Ok(returnServer.Return(false, exceptionEntry.Return(ex))));
            }
        }
示例#21
0
        // GET: api/DocSecondHandRazbor2Tabs
        public async Task <IHttpActionResult> GetDocSecondHandRazbor2Tabs(HttpRequestMessage request)
        {
            try
            {
                #region Проверяем Логин и Пароль + Изменяем строку соединения + Права + Разные Функции

                //Получаем Куку
                System.Web.HttpCookie authCookie = System.Web.HttpContext.Current.Request.Cookies["CookieIPOL"];

                // Проверяем Логин и Пароль
                Classes.Account.Login.Field field = await Task.Run(() => login.Return(authCookie, true));

                if (!field.Access)
                {
                    return(Ok(returnServer.Return(false, Classes.Language.Sklad.Language.msg10)));
                }

                //Изменяем строку соединения
                db = new DbConnectionSklad(connectionString.Return(field.DirCustomersID, null, true));

                //Права (1 - Write, 2 - Read, 3 - No Access)
                int iRight = await Task.Run(() => accessRight.Access(connectionString.Return(field.DirCustomersID, null, true), field.DirEmployeeID, "RightDocSecondHandRazbors"));

                if (iRight == 3)
                {
                    return(Ok(returnServer.Return(false, Classes.Language.Sklad.Language.msg57(0))));
                }

                //Разные Функции
                function.NumberDecimalSeparator();

                //Получам настройки
                sysSetting = await db.SysSettings.FindAsync(1);

                #endregion


                #region Параметры

                Params _params = new Params();

                //paramList -список параметров
                var paramList = request.GetQueryNameValuePairs();
                //Параметры
                _params.DocSecondHandPurchID = Convert.ToInt32(paramList.FirstOrDefault(kv => string.Compare(kv.Key, "DocSecondHandPurchID", true) == 0).Value);

                #endregion



                #region Основной запрос *** *** ***

                var query =
                    (
                        from docSecondHandRazbor2Tabs in db.DocSecondHandRazbor2Tabs

                        join dirNomens11 in db.DirNomens on docSecondHandRazbor2Tabs.dirNomen.Sub equals dirNomens11.DirNomenID into dirNomens12
                        from dirNomensSubGroup in dirNomens12.DefaultIfEmpty()

                        join dirNomens21 in db.DirNomens on dirNomensSubGroup.Sub equals dirNomens21.DirNomenID into dirNomens22
                        from dirNomensGroup in dirNomens22.DefaultIfEmpty()

                        where docSecondHandRazbor2Tabs.DocSecondHandPurchID == _params.DocSecondHandPurchID

                        #region select

                        select new
                {
                    //партия
                    //RemPartyID = remParties.RemPartyID,
                    //DocSecondHandPurchID = docSecondHandRazbor2Tabs.DocSecondHandPurchID,

                    DocSecondHandRazbor2TabID = docSecondHandRazbor2Tabs.DocSecondHandRazbor2TabID,
                    DocSecondHandPurchID = docSecondHandRazbor2Tabs.DocSecondHandPurchID,
                    DirNomenID = docSecondHandRazbor2Tabs.DirNomenID,

                    //DirNomenName = docSecondHandRazbor2Tabs.dirNomen.DirNomenName,

                    /*
                     * DirNomenName =
                     * dirNomensSubGroup1.DirNomenName == null ? docSecondHandRazbor2Tabs.dirNomen.DirNomenName
                     * :
                     * dirNomensSubGroup1.DirNomenName + " / " + docSecondHandRazbor2Tabs.dirNomen.DirNomenName,
                     */

                    //DirNomenName = dirNomensGroup.DirNomenName + " / " + dirNomensSubGroup.DirNomenName + " / " + docSecondHandRazbor2Tabs.dirNomen.DirNomenName,
                    DirNomenName =
                        dirNomensSubGroup.DirNomenName == null ? docSecondHandRazbor2Tabs.dirNomen.DirNomenName :
                        dirNomensGroup.DirNomenName == null ? dirNomensSubGroup.DirNomenName + " / " + docSecondHandRazbor2Tabs.dirNomen.DirNomenName :
                        dirNomensGroup.DirNomenName + " / " + dirNomensSubGroup.DirNomenName + " / " + docSecondHandRazbor2Tabs.dirNomen.DirNomenName,


                    Quantity = docSecondHandRazbor2Tabs.Quantity,

                    PriceVAT = docSecondHandRazbor2Tabs.PriceVAT,

                    DirCurrencyID = docSecondHandRazbor2Tabs.DirCurrencyID,
                    DirCurrencyRate = docSecondHandRazbor2Tabs.DirCurrencyRate,
                    DirCurrencyMultiplicity = docSecondHandRazbor2Tabs.DirCurrencyMultiplicity,
                    DirCurrencyName = docSecondHandRazbor2Tabs.dirCurrency.DirCurrencyName + " (" + docSecondHandRazbor2Tabs.DirCurrencyRate + ", " + docSecondHandRazbor2Tabs.DirCurrencyMultiplicity + ")",


                    //Характеристики
                    DirCharColourID = docSecondHandRazbor2Tabs.DirCharColourID,
                    DirCharColourName = docSecondHandRazbor2Tabs.dirCharColour.DirCharColourName,
                    DirCharMaterialID = docSecondHandRazbor2Tabs.DirCharMaterialID,
                    DirCharMaterialName = docSecondHandRazbor2Tabs.dirCharMaterial.DirCharMaterialName,
                    DirCharNameID = docSecondHandRazbor2Tabs.DirCharNameID,
                    DirCharNameName = docSecondHandRazbor2Tabs.dirCharName.DirCharNameName,
                    DirCharSeasonID = docSecondHandRazbor2Tabs.DirCharSeasonID,
                    DirCharSeasonName = docSecondHandRazbor2Tabs.dirCharSeason.DirCharSeasonName,
                    DirCharSexID = docSecondHandRazbor2Tabs.DirCharSexID,
                    DirCharSexName = docSecondHandRazbor2Tabs.dirCharSex.DirCharSexName,
                    DirCharSizeID = docSecondHandRazbor2Tabs.DirCharSizeID,
                    DirCharSizeName = docSecondHandRazbor2Tabs.dirCharSize.DirCharSizeName,
                    DirCharStyleID = docSecondHandRazbor2Tabs.DirCharStyleID,
                    DirCharStyleName = docSecondHandRazbor2Tabs.dirCharStyle.DirCharStyleName,
                    DirContractorID = docSecondHandRazbor2Tabs.DirContractorID,
                    DirContractorName = docSecondHandRazbor2Tabs.dirContractor.DirContractorName,
                    DirCharTextureID = docSecondHandRazbor2Tabs.DirCharTextureID,
                    DirCharTextureName = docSecondHandRazbor2Tabs.dirCharTexture.DirCharTextureName,
                    DirChar =
                        docSecondHandRazbor2Tabs.dirCharColour.DirCharColourName + " " +
                        docSecondHandRazbor2Tabs.dirCharMaterial.DirCharMaterialName + " " +
                        docSecondHandRazbor2Tabs.dirCharName.DirCharNameName + " " +
                        docSecondHandRazbor2Tabs.dirCharSeason.DirCharSeasonName + " " +
                        docSecondHandRazbor2Tabs.dirCharSex.DirCharSexName + " " +
                        docSecondHandRazbor2Tabs.dirCharSize.DirCharSizeName + " " +
                        docSecondHandRazbor2Tabs.dirCharStyle.DirCharStyleName + " " +
                        docSecondHandRazbor2Tabs.dirContractor.DirContractorName + " " +
                        docSecondHandRazbor2Tabs.dirCharTexture.DirCharTextureName,
                    SerialNumber = docSecondHandRazbor2Tabs.SerialNumber,
                    Barcode = docSecondHandRazbor2Tabs.Barcode,


                    //Цена в т.в.
                    PriceCurrency = docSecondHandRazbor2Tabs.PriceCurrency,
                    //Себестоимость
                    SUMPurchPriceVATCurrency = docSecondHandRazbor2Tabs.Quantity * docSecondHandRazbor2Tabs.PriceCurrency == null ? 0
                            :
                                               Math.Round(docSecondHandRazbor2Tabs.Quantity * docSecondHandRazbor2Tabs.PriceCurrency, sysSetting.FractionalPartInSum),

                    //Розница ***
                    //Наценка
                    MarkupRetail = 100 * (docSecondHandRazbor2Tabs.PriceRetailVAT - docSecondHandRazbor2Tabs.PriceVAT) / docSecondHandRazbor2Tabs.PriceVAT == null ? 0
                            :
                                   Math.Round(100 * (docSecondHandRazbor2Tabs.PriceRetailVAT - docSecondHandRazbor2Tabs.PriceVAT) / docSecondHandRazbor2Tabs.PriceVAT, sysSetting.FractionalPartInSum),
                    //Розничная цена
                    PriceRetailVAT = docSecondHandRazbor2Tabs.PriceRetailVAT,
                    //Розничная цена в текущей валюте
                    PriceRetailCurrency = docSecondHandRazbor2Tabs.PriceRetailCurrency,

                    //Опт ***
                    //Наценка
                    MarkupWholesale = 100 * (docSecondHandRazbor2Tabs.PriceWholesaleVAT - docSecondHandRazbor2Tabs.PriceVAT) / docSecondHandRazbor2Tabs.PriceVAT == null ? 0
                            : Math.Round(100 * (docSecondHandRazbor2Tabs.PriceWholesaleVAT - docSecondHandRazbor2Tabs.PriceVAT) / docSecondHandRazbor2Tabs.PriceVAT, sysSetting.FractionalPartInSum),
                    //Оптовая цена
                    PriceWholesaleVAT = docSecondHandRazbor2Tabs.PriceWholesaleVAT,
                    //Оптовая цена в текущей валюте
                    PriceWholesaleCurrency = docSecondHandRazbor2Tabs.PriceWholesaleCurrency,

                    //Интерне-Магазин ***
                    //Наценка
                    MarkupIM = 100 * (docSecondHandRazbor2Tabs.PriceIMVAT - docSecondHandRazbor2Tabs.PriceVAT) / docSecondHandRazbor2Tabs.PriceVAT == null ? 0
                            : Math.Round(100 * (docSecondHandRazbor2Tabs.PriceIMVAT - docSecondHandRazbor2Tabs.PriceVAT) / docSecondHandRazbor2Tabs.PriceVAT, sysSetting.FractionalPartInSum),
                    //Интернет-Магазин
                    PriceIMVAT = docSecondHandRazbor2Tabs.PriceIMVAT,
                    //Интернет-Магазин в текущей валюте
                    PriceIMCurrency = docSecondHandRazbor2Tabs.PriceIMCurrency,

                    DirNomenMinimumBalance = docSecondHandRazbor2Tabs.DirNomenMinimumBalance
                }

                        #endregion
                    );

                #endregion


                #region Отправка JSON

                dynamic collectionWrapper = new
                {
                    sucess = true,
                    total  = query.Count(),
                    DocSecondHandRazbor2Tab = query
                };
                return(await Task.Run(() => Ok(collectionWrapper)));

                #endregion
            }
            catch (Exception ex)
            {
                return(Ok(returnServer.Return(false, exceptionEntry.Return(ex))));
            }
        }
示例#22
0
        //public ActionResult Index()
        public async Task <ActionResult> Index(HttpRequestMessage request, FormCollection formCollection)
        {
            //return View();
            try
            {
                #region Права

                HttpCookie CookieIPOL = Request.Cookies["CookieIPOL"];

                Classes.Account.Login       login = new Classes.Account.Login();
                Classes.Account.Login.Field field = await Task.Run(() => login.Return(CookieIPOL, true)); //HttpCookie CookieIPOL = Request.Cookies["CookieIPOL"];

                if (!field.Access)
                {
                    return(Redirect("~/account/login/"));
                }
                //if (field.RetailOnly) { return Redirect("~/Retail/"); }

                #endregion


                #region Обновление - это есть в Дефолте

                Classes.Function.Variables.ConnectionString connectionString = new Classes.Function.Variables.ConnectionString();
                string ConStr = connectionString.Return(field.DirCustomersID, null, false);

                Classes.Update.Update update = new Classes.Update.Update();
                string[] sResultawait        = await update.UpdatingOne(ConStr, field.DirCustomersID); //update.Start();

                #endregion


                #region Тема, Язык, Интерфейс

                //Тема
                ViewData["CookieT"] = CookieIPOL["CookieT"]; if (ViewData["CookieT"] == null)
                {
                    ViewData["CookieT"] = 1;
                }
                //Язык
                ViewData["CookieL"] = CookieIPOL["CookieL"]; if (ViewData["CookieL"] == null)
                {
                    ViewData["CookieL"] = 1;
                }
                //Интерфейс
                ViewData["CookieI"] = CookieIPOL["CookieI"]; if (ViewData["CookieI"] == null)
                {
                    ViewData["CookieI"] = 1;
                }

                #endregion


                return(View());
            }
            catch (Exception ex)
            {
                Classes.Function.Exceptions.ExceptionEntry exceptionEntry = new Classes.Function.Exceptions.ExceptionEntry();
                return(Redirect("~/account/login?Err=" + exceptionEntry.Return(ex)));
            }
        }
示例#23
0
        // GET: api/DirWarehouses
        public async Task <IHttpActionResult> GetDirWarehouses(HttpRequestMessage request)
        {
            try
            {
                #region Проверяем Логин и Пароль + Изменяем строку соединения + Права + Разные Функции

                //Получаем Куку
                System.Web.HttpCookie authCookie = System.Web.HttpContext.Current.Request.Cookies["CookieIPOL"];

                // Проверяем Логин и Пароль
                Classes.Account.Login.Field field = await Task.Run(() => login.Return(authCookie, true));

                if (!field.Access)
                {
                    return(Ok(returnServer.Return(false, Classes.Language.Sklad.Language.msg10)));
                }

                //Изменяем строку соединения
                db = new DbConnectionSklad(connectionString.Return(field.DirCustomersID, null, true));

                //Права (1 - Write, 2 - Read, 3 - No Access)
                //int iRight = await Task.Run(() => accessRight.Access(connectionString.Return(field.DirCustomersID, null, true), field.DirEmployeeID, "RightDirWarehouses"));
                //if (iRight == 3) return Ok(returnServer.Return(false, Classes.Language.Sklad.Language.msg57(0)));

                //Разные Функции
                function.NumberDecimalSeparator();

                //Получам настройки
                Models.Sklad.Sys.SysSetting sysSetting = await db.SysSettings.FindAsync(1);

                #endregion


                #region Параметры

                Params _params = new Params();

                //paramList -список параметров
                var paramList = request.GetQueryNameValuePairs();
                //Параметры
                _params.limit     = 999999;                                                                                           // sysSetting.PageSizeDir; //Convert.ToInt32(paramList.FirstOrDefault(kv => string.Compare(kv.Key, "limit", true) == 0).Value); //Записей на страницу
                _params.page      = Convert.ToInt32(paramList.FirstOrDefault(kv => string.Compare(kv.Key, "page", true) == 0).Value); //Номер страницы
                _params.Skip      = _params.limit * (_params.page - 1);
                _params.type      = paramList.FirstOrDefault(kv => string.Compare(kv.Key, "type", true) == 0).Value;
                _params.parSearch = paramList.FirstOrDefault(kv => string.Compare(kv.Key, "parSearch", true) == 0).Value; if (_params.parSearch != null)
                {
                    _params.parSearch = _params.parSearch.ToLower();                                                                                                                                      //Поиск
                }
                _params.Sub = Convert.ToInt32(paramList.FirstOrDefault(kv => string.Compare(kv.Key, "Sub", true) == 0).Value); if (_params.Sub == 0)
                {
                    _params.Sub = null;
                }
                //_params.WarehouseAll = Convert.ToBoolean(paramList.FirstOrDefault(kv => string.Compare(kv.Key, "WarehouseAll", true) == 0).Value);

                //для документа "DocMovements" показать все склады
                _params.ListObjectID = Convert.ToInt32(paramList.FirstOrDefault(kv => string.Compare(kv.Key, "ListObjectID", true) == 0).Value);   //Склад привязанный к сотруднику

                #endregion


                if (_params.type == "Grid")
                {
                    //Если привязка к сотруднику (для документа "DocMovements" показать все склады)
                    if (field.DirEmployeeID != 1 && _params.ListObjectID != 33)
                    {
                        #region Основной запрос *** *** ***

                        var query =
                            (
                                from dirWarehouses in db.DirWarehouses
                                from x in db.DirEmployeeWarehouse

                                where dirWarehouses.Sub == _params.Sub && x.DirWarehouseID == dirWarehouses.DirWarehouseID && x.DirEmployeeID == field.DirEmployeeID
                                select new
                        {
                            DirWarehouseID = dirWarehouses.DirWarehouseID,
                            Sub = dirWarehouses.Sub,
                            Del = dirWarehouses.Del,
                            SysRecord = dirWarehouses.SysRecord,
                            DirWarehouseName = dirWarehouses.DirWarehouseName,
                            DirWarehouseAddress = dirWarehouses.DirWarehouseAddress,
                            Phone = dirWarehouses.Phone,

                            DirCashOfficeID = dirWarehouses.dirCashOffice.DirCashOfficeID,
                            DirCashOfficeName = dirWarehouses.dirCashOffice.DirCashOfficeName,
                            DirCurrencyID = dirWarehouses.dirCashOffice.DirCurrencyID,
                            DirCurrencyRate = dirWarehouses.dirCashOffice.dirCurrency.DirCurrencyRate,
                            DirCurrencyMultiplicity = dirWarehouses.dirCashOffice.dirCurrency.DirCurrencyMultiplicity,
                            DirCashOfficeSum = dirWarehouses.dirCashOffice.DirCashOfficeSum,

                            //DirWarehouseLocName = dirWarehouses.DirWarehouseLoc
                            DirWarehouseLocName =
                                dirWarehouses.DirWarehouseLoc == 1 ? SubWar1 :
                                dirWarehouses.DirWarehouseLoc == 2 ? SubWar2 :
                                dirWarehouses.DirWarehouseLoc == 3 ? SubWar3 :
                                dirWarehouses.DirWarehouseLoc == 4 ? SubWar4 :
                                dirWarehouses.DirWarehouseLoc == 5 ? SubWar5 :
                                "Ошибка!",

                            IsAdmin = x.IsAdmin,

                            //SalaryPercentTrade = dirWarehouses.SalaryPercentTrade,
                            //SalaryPercentService1Tabs = dirWarehouses.SalaryPercentService1Tabs,
                            //SalaryPercentService2Tabs = dirWarehouses.SalaryPercentService2Tabs,
                            //SalaryPercentSecond = dirWarehouses.SalaryPercentSecond,

                            //ККМ
                            KKMSActive = dirWarehouses.KKMSActive,

                            //Автоматическое закрытие смены
                            SmenaClose = dirWarehouses.SmenaClose,
                            SmenaCloseTime = dirWarehouses.SmenaCloseTime,
                        }
                            );

                        #endregion


                        #region Условия (параметры) *** *** ***


                        #region Не показывать удалённые

                        if (!Convert.ToBoolean(sysSetting.DeletedRecordsShow))
                        {
                            query = query.Where(x => x.Del == sysSetting.DeletedRecordsShow);
                        }

                        #endregion


                        #region Поиск

                        if (!String.IsNullOrEmpty(_params.parSearch))
                        {
                            //Проверяем число ли это
                            Int32 iNumber32;
                            bool  bResult32 = Int32.TryParse(_params.parSearch, out iNumber32);


                            //Если число, то задействуем в поиске и числовые поля (_params.parSearch == iNumber)
                            if (bResult32)
                            {
                                query = query.Where(x => x.DirWarehouseID == iNumber32 || x.DirWarehouseName.Contains(_params.parSearch) || x.DirWarehouseAddress.Contains(_params.parSearch));
                            }
                            else
                            {
                                query = query.Where(x => x.DirWarehouseName.Contains(_params.parSearch) || x.DirWarehouseAddress.Contains(_params.parSearch));
                            }
                        }

                        #endregion


                        //Если привязка к сотруднику (для документа "DocMovements" показать все склады)

                        /*
                         * if (field.DirEmployeeID != 1 && _params.ListObjectID != 33)
                         * {
                         *  //1. Получаем все склады к которым у Сотрудника есть доступ
                         *  var queryW = await Task.Run(() =>
                         *      (
                         *          from x in db.DirEmployeeWarehouse
                         *          where x.DirEmployeeID == field.DirEmployeeID
                         *          select x.DirWarehouseID
                         *      ).ToListAsync());
                         *
                         *  if (queryW.Count() > 0)
                         *  {
                         *      query = query.Where(x => queryW.Contains(x.DirWarehouseID));
                         *  }
                         * }
                         */


                        #region OrderBy и Лимит

                        query = query.OrderBy(x => x.DirWarehouseName).Skip(_params.Skip).Take(_params.limit);

                        #endregion


                        #endregion


                        #region Отправка JSON

                        //К-во Номенклатуры
                        int dirCount = await Task.Run(() => db.DirWarehouses.CountAsync());

                        //А вдруг к-во меньше Лимита, тогда показать не общее к-во, а реальное!
                        int dirCount2 = query.Count();
                        if (dirCount2 < _params.limit)
                        {
                            dirCount = _params.limit * (_params.page - 1) + dirCount2;
                        }

                        dynamic collectionWrapper = new
                        {
                            sucess       = true,
                            total        = dirCount,
                            DirWarehouse = query
                        };
                        return(await Task.Run(() => Ok(collectionWrapper)));

                        #endregion
                    }
                    else
                    {
                        #region Основной запрос *** *** ***

                        var query =
                            (
                                from dirWarehouses in db.DirWarehouses
                                where dirWarehouses.Sub == _params.Sub
                                select new
                        {
                            DirWarehouseID = dirWarehouses.DirWarehouseID,
                            Sub = dirWarehouses.Sub,
                            Del = dirWarehouses.Del,
                            SysRecord = dirWarehouses.SysRecord,
                            DirWarehouseName = dirWarehouses.DirWarehouseName,
                            DirWarehouseAddress = dirWarehouses.DirWarehouseAddress,
                            Phone = dirWarehouses.Phone,

                            DirCashOfficeID = dirWarehouses.dirCashOffice.DirCashOfficeID,
                            DirCashOfficeName = dirWarehouses.dirCashOffice.DirCashOfficeName,
                            DirCurrencyID = dirWarehouses.dirCashOffice.DirCurrencyID,
                            DirCurrencyRate = dirWarehouses.dirCashOffice.dirCurrency.DirCurrencyRate,
                            DirCurrencyMultiplicity = dirWarehouses.dirCashOffice.dirCurrency.DirCurrencyMultiplicity,
                            DirCashOfficeSum = dirWarehouses.dirCashOffice.DirCashOfficeSum,

                            //DirWarehouseLocName = dirWarehouses.DirWarehouseLoc
                            DirWarehouseLocName =
                                dirWarehouses.DirWarehouseLoc == 1 ? SubWar1 :
                                dirWarehouses.DirWarehouseLoc == 2 ? SubWar2 :
                                dirWarehouses.DirWarehouseLoc == 3 ? SubWar3 :
                                dirWarehouses.DirWarehouseLoc == 4 ? SubWar4 :
                                dirWarehouses.DirWarehouseLoc == 4 ? SubWar5 :
                                "Ошибка!",

                            //Админ - всегда Админ!
                            //IsAdmin = x.IsAdmin,

                            //ККМ
                            KKMSActive = dirWarehouses.KKMSActive,

                            //Автоматическое закрытие смены
                            SmenaClose = dirWarehouses.SmenaClose,
                            SmenaCloseTime = dirWarehouses.SmenaCloseTime,
                        }
                            );

                        #endregion


                        #region Условия (параметры) *** *** ***


                        #region Не показывать удалённые

                        if (!Convert.ToBoolean(sysSetting.DeletedRecordsShow))
                        {
                            query = query.Where(x => x.Del == sysSetting.DeletedRecordsShow);
                        }

                        #endregion


                        #region Поиск

                        if (!String.IsNullOrEmpty(_params.parSearch))
                        {
                            //Проверяем число ли это
                            Int32 iNumber32;
                            bool  bResult32 = Int32.TryParse(_params.parSearch, out iNumber32);


                            //Если число, то задействуем в поиске и числовые поля (_params.parSearch == iNumber)
                            if (bResult32)
                            {
                                query = query.Where(x => x.DirWarehouseID == iNumber32 || x.DirWarehouseName.Contains(_params.parSearch) || x.DirWarehouseAddress.Contains(_params.parSearch));
                            }
                            else
                            {
                                query = query.Where(x => x.DirWarehouseName.Contains(_params.parSearch) || x.DirWarehouseAddress.Contains(_params.parSearch));
                            }
                        }

                        #endregion


                        #region OrderBy и Лимит

                        query = query.OrderBy(x => x.DirWarehouseName).Skip(_params.Skip).Take(_params.limit);

                        #endregion


                        #endregion


                        #region Отправка JSON

                        //К-во Номенклатуры
                        int dirCount = await Task.Run(() => db.DirWarehouses.CountAsync());

                        //А вдруг к-во меньше Лимита, тогда показать не общее к-во, а реальное!
                        int dirCount2 = query.Count();
                        if (dirCount2 < _params.limit)
                        {
                            dirCount = _params.limit * (_params.page - 1) + dirCount2;
                        }

                        dynamic collectionWrapper = new
                        {
                            sucess       = true,
                            total        = dirCount,
                            DirWarehouse = query
                        };
                        return(await Task.Run(() => Ok(collectionWrapper)));

                        #endregion
                    }
                }
                else //Tree
                {
                    #region Отобразить только "Руты" *** *** ***

                    var query =
                        (
                            from x in db.DirWarehouses
                            where x.Sub == null && x.DirWarehouseID != _params.XGroupID_NotShow
                            select new
                    {
                        id = x.DirWarehouseID,
                        text = x.DirWarehouseName,
                        leaf = true,
                        Del = x.Del
                    }
                        );

                    #endregion


                    #region Отправка JSON

                    //return Ok(await Task.Run(() => query));

                    dynamic collectionWrapper = new
                    {
                        query
                    };
                    return(Ok(await Task.Run(() => collectionWrapper)));

                    #endregion
                }
            }
            catch (Exception ex)
            {
                return(Ok(returnServer.Return(false, exceptionEntry.Return(ex))));
            }
        }
        // GET: api/DocServicePurch2Tabs
        public async Task <IHttpActionResult> GetDocServicePurch2Tabs(HttpRequestMessage request)
        {
            try
            {
                #region Проверяем Логин и Пароль + Изменяем строку соединения + Права + Разные Функции

                //Получаем Куку
                System.Web.HttpCookie authCookie = System.Web.HttpContext.Current.Request.Cookies["CookieIPOL"];

                // Проверяем Логин и Пароль
                Classes.Account.Login.Field field = await Task.Run(() => login.Return(authCookie, true));

                if (!field.Access)
                {
                    return(Ok(returnServer.Return(false, Classes.Language.Sklad.Language.msg10)));
                }

                //Изменяем строку соединения
                db = new DbConnectionSklad(connectionString.Return(field.DirCustomersID, null, true));

                //Права (1 - Write, 2 - Read, 3 - No Access)

                /*
                 * int iRight = await Task.Run(() => accessRight.Access(connectionString.Return(field.DirCustomersID, null, true), field.DirEmployeeID, "RightDocServicePurches"));
                 * if (iRight == 3) return Ok(returnServer.Return(false, Classes.Language.Sklad.Language.msg57(0)));
                 */

                //Разные Функции
                function.NumberDecimalSeparator();

                //Получам настройки
                Models.Sklad.Sys.SysSetting sysSetting = await db.SysSettings.FindAsync(1);

                #endregion


                #region Параметры

                Params _params = new Params();

                //paramList -список параметров
                var paramList = request.GetQueryNameValuePairs();
                //Параметры
                _params.DocServicePurchID = Convert.ToInt32(paramList.FirstOrDefault(kv => string.Compare(kv.Key, "DocServicePurchID", true) == 0).Value);


                //Получаем Docs.DocIDBase
                int?_DocID         = 0;
                var queryDocIDBase = await
                                     (
                    from x in db.DocServicePurches
                    where x.DocServicePurchID == _params.DocServicePurchID
                    select x
                                     ).ToListAsync();
                if (queryDocIDBase.Count() > 0)
                {
                    _DocID = queryDocIDBase[0].doc.DocID;
                }

                #endregion



                #region Основной запрос *** *** ***
                var query =
                    (
                        from x in db.DocServicePurch2Tabs

                        join dirNomens11 in db.DirNomens on x.dirNomen.Sub equals dirNomens11.DirNomenID into dirNomens12
                        from dirNomensSubGroup in dirNomens12.DefaultIfEmpty()

                        where x.DocServicePurchID == _params.DocServicePurchID

                        #region select

                        select new
                {
                    IsZakaz = false,

                    DocServicePurch2TabID = x.DocServicePurch2TabID,
                    DocServicePurchID = x.DocServicePurchID,

                    DirEmployeeID = x.DirEmployeeID,
                    DirEmployeeName = x.dirEmployee.DirEmployeeName,

                    DirNomenID = x.DirNomenID,

                    //DirNomenName = x.dirNomen.DirNomenName,
                    DirNomenName =
                        dirNomensSubGroup.DirNomenName == null ? x.dirNomen.DirNomenName
                            :
                        dirNomensSubGroup.DirNomenName + " / " + x.dirNomen.DirNomenName,

                    RemPartyID = x.RemPartyID,
                    PriceVAT = x.PriceVAT,
                    PriceCurrency = x.PriceCurrency,

                    DirCurrencyID = x.DirCurrencyID,
                    DirCurrencyRate = x.DirCurrencyRate,
                    DirCurrencyMultiplicity = x.DirCurrencyMultiplicity,
                    DirCurrencyName = x.dirCurrency.DirCurrencyName + " (" + x.DirCurrencyRate + ", " + x.DirCurrencyMultiplicity + ")",

                    TabDate = x.TabDate,

                    PayDate = x.PayDate,
                    RemontN = x.RemontN,
                }

                        #endregion
                    );



                //Заказы !!!
                if (_DocID > 0)
                {
                    int?     DocServicePurch2TabID = null, RemontN = null;
                    int      DocServicePurchID = _params.DocServicePurchID;
                    DateTime?PayDate = null;

                    query = query.Concat
                            (
                        from x in db.DocOrderInts

                        //join dirNomens11 in db.DirNomens on x.dirNomen.Sub equals dirNomens11.DirNomenID into dirNomens12
                        //from dirNomensSubGroup in dirNomens12.DefaultIfEmpty()

                        where x.doc.DocIDBase == _DocID && x.DirOrderIntStatusID < 4

                        #region select

                        select new
                    {
                        IsZakaz = true,

                        DocServicePurch2TabID = DocServicePurch2TabID,         //x.DocServicePurch2TabID,
                        DocServicePurchID     = DocServicePurchID,

                        DirEmployeeID   = x.doc.DirEmployeeID,
                        DirEmployeeName = x.doc.dirEmployee.DirEmployeeName,

                        DirNomenID = x.DocOrderIntID,         //x.DirNomenID == null ? 0 : x.DirNomenID, //x.DirNomenCategoryID, //x.DirNomenID,  //===== !!! DirNomenCategoryID !!!

                        //DirNomenName = x.dirNomen.DirNomenName,
                        DirNomenName =
                            x.dirNomen1.DirNomenName + " / " + x.dirNomen2.DirNomenName + " / " + x.dirNomenCategory.DirNomenCategoryName,

                        RemPartyID    = 0,      //x.RemPartyID,
                        PriceVAT      = x.PriceVAT,
                        PriceCurrency = x.PriceCurrency,

                        DirCurrencyID           = x.DirCurrencyID,
                        DirCurrencyRate         = x.DirCurrencyRate,
                        DirCurrencyMultiplicity = x.DirCurrencyMultiplicity,
                        DirCurrencyName         = x.dirCurrency.DirCurrencyName + " (" + x.DirCurrencyRate + ", " + x.DirCurrencyMultiplicity + ")",

                        TabDate = x.doc.DocDate,   //x.TabDate,

                        PayDate = PayDate,         //x.PayDate,
                        RemontN = RemontN,
                    }

                        #endregion
                            );
                }

                #endregion


                #region Отправка JSON

                dynamic collectionWrapper = new
                {
                    sucess = true,
                    total  = query.Count(),
                    DocServicePurch2Tab = query
                };
                return(await Task.Run(() => Ok(collectionWrapper)));

                #endregion
            }
            catch (Exception ex)
            {
                return(Ok(returnServer.Return(false, exceptionEntry.Return(ex))));
            }
        }
        // GET: api/DocSecondHandRetailReturnTabs
        public async Task <IHttpActionResult> GetDocSecondHandRetailReturnTabs(HttpRequestMessage request)
        {
            try
            {
                #region Проверяем Логин и Пароль + Изменяем строку соединения + Права + Разные Функции

                //Получаем Куку
                System.Web.HttpCookie authCookie = System.Web.HttpContext.Current.Request.Cookies["CookieIPOL"];

                // Проверяем Логин и Пароль
                Classes.Account.Login.Field field = await Task.Run(() => login.Return(authCookie, true));

                if (!field.Access)
                {
                    return(Ok(returnServer.Return(false, Classes.Language.Sklad.Language.msg10)));
                }

                //Изменяем строку соединения
                db = new DbConnectionSklad(connectionString.Return(field.DirCustomersID, null, true));

                //Права (1 - Write, 2 - Read, 3 - No Access)
                int iRight = await Task.Run(() => accessRight.Access(connectionString.Return(field.DirCustomersID, null, true), field.DirEmployeeID, "RightDocSecondHandRetailReturns"));

                if (iRight == 3)
                {
                    return(Ok(returnServer.Return(false, Classes.Language.Sklad.Language.msg57(0))));
                }

                //Разные Функции
                function.NumberDecimalSeparator();

                //Получам настройки
                Models.Sklad.Sys.SysSetting sysSetting = await db.SysSettings.FindAsync(1);

                #endregion


                #region Параметры

                Params _params = new Params();

                //paramList -список параметров
                var paramList = request.GetQueryNameValuePairs();
                //Параметры
                _params.DocSecondHandRetailReturnID = Convert.ToInt32(paramList.FirstOrDefault(kv => string.Compare(kv.Key, "DocSecondHandRetailReturnID", true) == 0).Value);

                _params.DateS = Convert.ToDateTime(Convert.ToDateTime(paramList.FirstOrDefault(kv => string.Compare(kv.Key, "DateS", true) == 0).Value).ToString("yyyy-MM-dd 23:59:59"));
                if (_params.DateS < Convert.ToDateTime("01.01.1800"))
                {
                    _params.DateS = Convert.ToDateTime(sysSetting.JurDateS.ToString("yyyy-MM-dd 00:00:00")).AddDays(-1);
                }
                else
                {
                    _params.DateS = _params.DateS.Value.AddDays(-1);
                }

                _params.DatePo = Convert.ToDateTime(Convert.ToDateTime(paramList.FirstOrDefault(kv => string.Compare(kv.Key, "DocDate", true) == 0).Value).ToString("yyyy-MM-dd 23:59:59"));
                if (_params.DatePo < Convert.ToDateTime("01.01.1800"))
                {
                    _params.DatePo = Convert.ToDateTime(sysSetting.JurDatePo.ToString("yyyy-MM-dd 23:59:59"));
                }

                _params.DirWarehouseID = Convert.ToInt32(paramList.FirstOrDefault(kv => string.Compare(kv.Key, "DirWarehouseID", true) == 0).Value);

                #endregion



                #region Основной запрос *** *** ***

                var query =
                    (
                        from docSecondHandRetailReturnTabs in db.DocSecondHandRetailReturnTabs

                        join dirServiceNomens11 in db.DirServiceNomens on docSecondHandRetailReturnTabs.dirServiceNomen.Sub equals dirServiceNomens11.DirServiceNomenID into dirServiceNomens12
                        from dirServiceNomensSubGroup in dirServiceNomens12.DefaultIfEmpty()

                        join dirServiceNomens21 in db.DirServiceNomens on dirServiceNomensSubGroup.Sub equals dirServiceNomens21.DirServiceNomenID into dirServiceNomens22
                        from dirServiceNomensGroup in dirServiceNomens22.DefaultIfEmpty()

                        /*
                         * //Характеристики
                         * join dirCharColours1 in db.DirCharColours on docSecondHandRetailReturnTabs.rem2PartyMinus.rem2Party.DirCharColourID equals dirCharColours1.DirCharColourID into dirCharColours2
                         * from dirCharColours in dirCharColours2.DefaultIfEmpty()
                         *
                         * join dirCharMaterials1 in db.DirCharMaterials on docSecondHandRetailReturnTabs.rem2PartyMinus.rem2Party.DirCharMaterialID equals dirCharMaterials1.DirCharMaterialID into dirCharMaterials2
                         * from dirCharMaterials in dirCharMaterials2.DefaultIfEmpty()
                         *
                         * join dirCharNames1 in db.DirCharNames on docSecondHandRetailReturnTabs.rem2PartyMinus.rem2Party.DirCharNameID equals dirCharNames1.DirCharNameID into dirCharNames2
                         * from dirCharNames in dirCharNames2.DefaultIfEmpty()
                         *
                         * join dirCharSeasons1 in db.DirCharSeasons on docSecondHandRetailReturnTabs.rem2PartyMinus.rem2Party.DirCharSeasonID equals dirCharSeasons1.DirCharSeasonID into dirCharSeasons2
                         * from dirCharSeasons in dirCharSeasons2.DefaultIfEmpty()
                         *
                         * join dirCharSexes1 in db.DirCharSexes on docSecondHandRetailReturnTabs.rem2PartyMinus.rem2Party.DirCharSexID equals dirCharSexes1.DirCharSexID into dirCharSexes2
                         * from dirCharSexes in dirCharSexes2.DefaultIfEmpty()
                         *
                         * join dirCharSizes1 in db.DirCharSizes on docSecondHandRetailReturnTabs.rem2PartyMinus.rem2Party.DirCharSizeID equals dirCharSizes1.DirCharSizeID into dirCharSizes2
                         * from dirCharSizes in dirCharSizes2.DefaultIfEmpty()
                         *
                         * join dirCharStyles1 in db.DirCharStyles on docSecondHandRetailReturnTabs.rem2PartyMinus.rem2Party.DirCharStyleID equals dirCharStyles1.DirCharStyleID into dirCharStyles2
                         * from dirCharStyles in dirCharStyles2.DefaultIfEmpty()
                         *
                         * join dirCharTextures1 in db.DirCharTextures on docSecondHandRetailReturnTabs.rem2PartyMinus.rem2Party.DirCharTextureID equals dirCharTextures1.DirCharTextureID into dirCharTextures2
                         * from dirCharTextures in dirCharTextures2.DefaultIfEmpty()
                         */

                        //where docSecondHandRetailReturnTabs.DocSecondHandRetailReturnID == _params.DocSecondHandRetailReturnID

                        #region select

                        select new
                {
                    DocID = docSecondHandRetailReturnTabs.docSecondHandRetailReturn.DocID,
                    DocDate = docSecondHandRetailReturnTabs.docSecondHandRetailReturn.doc.DocDate,
                    Held = docSecondHandRetailReturnTabs.docSecondHandRetailReturn.doc.Held,
                    Discount = docSecondHandRetailReturnTabs.docSecondHandRetailReturn.doc.Discount,
                    DirWarehouseID = docSecondHandRetailReturnTabs.docSecondHandRetailReturn.DirWarehouseID,

                    //партия
                    Rem2PartyMinusID = docSecondHandRetailReturnTabs.rem2PartyMinus.Rem2PartyMinusID,

                    DocSecondHandRetailReturnTabID = docSecondHandRetailReturnTabs.DocSecondHandRetailReturnTabID,
                    DocSecondHandRetailReturnID = docSecondHandRetailReturnTabs.DocSecondHandRetailReturnID,
                    DirServiceNomenID = docSecondHandRetailReturnTabs.DirServiceNomenID,

                    //DirServiceNomenName = docSecondHandRetailReturnTabs.dirServiceNomen.DirServiceNomenName,
                    DirServiceNomenName =
                        dirServiceNomensSubGroup.DirServiceNomenName == null ? docSecondHandRetailReturnTabs.dirServiceNomen.DirServiceNomenName :
                        dirServiceNomensGroup.DirServiceNomenName == null ? dirServiceNomensSubGroup.DirServiceNomenName + " / " + docSecondHandRetailReturnTabs.dirServiceNomen.DirServiceNomenName :
                        dirServiceNomensGroup.DirServiceNomenName + " / " + dirServiceNomensSubGroup.DirServiceNomenName + " / " + docSecondHandRetailReturnTabs.dirServiceNomen.DirServiceNomenName,

                    Quantity = docSecondHandRetailReturnTabs.Quantity,
                    PriceVAT = docSecondHandRetailReturnTabs.PriceVAT,

                    DirCurrencyID = docSecondHandRetailReturnTabs.DirCurrencyID,
                    DirCurrencyRate = docSecondHandRetailReturnTabs.DirCurrencyRate,
                    DirCurrencyMultiplicity = docSecondHandRetailReturnTabs.DirCurrencyMultiplicity,
                    DirCurrencyName = docSecondHandRetailReturnTabs.dirCurrency.DirCurrencyName + " (" + docSecondHandRetailReturnTabs.DirCurrencyRate + ", " + docSecondHandRetailReturnTabs.DirCurrencyMultiplicity + ")",

                    DirEmployeeName = docSecondHandRetailReturnTabs.docSecondHandRetailReturn.doc.dirEmployee.DirEmployeeName,

                    //Характеристики

                    /*
                     * DirCharColourID = docSecondHandRetailReturnTabs.rem2PartyMinus.rem2Party.DirCharColourID,
                     * DirCharColourName = dirCharColours.DirCharColourName,
                     * DirCharMaterialID = docSecondHandRetailReturnTabs.rem2PartyMinus.rem2Party.DirCharMaterialID,
                     * DirCharMaterialName = dirCharMaterials.DirCharMaterialName,
                     * DirCharNameID = docSecondHandRetailReturnTabs.rem2PartyMinus.rem2Party.DirCharNameID,
                     * DirCharNameName = dirCharNames.DirCharNameName,
                     * DirCharSeasonID = docSecondHandRetailReturnTabs.rem2PartyMinus.rem2Party.DirCharSeasonID,
                     * DirCharSeasonName = dirCharSeasons.DirCharSeasonName,
                     * DirCharSexID = docSecondHandRetailReturnTabs.rem2PartyMinus.rem2Party.DirCharSexID,
                     * DirCharSexName = dirCharSexes.DirCharSexName,
                     * DirCharSizeID = docSecondHandRetailReturnTabs.rem2PartyMinus.rem2Party.DirCharSizeID,
                     * DirCharSizeName = dirCharSizes.DirCharSizeName,
                     * DirCharStyleID = docSecondHandRetailReturnTabs.rem2PartyMinus.rem2Party.DirCharStyleID,
                     * DirCharStyleName = dirCharStyles.DirCharStyleName,
                     * DirCharTextureID = docSecondHandRetailReturnTabs.rem2PartyMinus.rem2Party.DirCharTextureID,
                     * DirCharTextureName = dirCharTextures.DirCharTextureName,
                     * DirChar =
                     *  dirCharColours.DirCharColourName + " " +
                     *  dirCharMaterials.DirCharMaterialName + " " +
                     *  dirCharNames.DirCharNameName + " " +
                     *  dirCharSeasons.DirCharSeasonName + " " +
                     *  dirCharSexes.DirCharSexName + " " +
                     *  dirCharSizes.DirCharSizeName + " " +
                     *  dirCharStyles.DirCharStyleName + " " +
                     *  dirCharTextures.DirCharTextureName,
                     */
                    SerialNumber = docSecondHandRetailReturnTabs.rem2PartyMinus.rem2Party.SerialNumber,
                    Barcode = docSecondHandRetailReturnTabs.rem2PartyMinus.rem2Party.Barcode,


                    //Цена в т.в.
                    PriceCurrency = docSecondHandRetailReturnTabs.PriceCurrency,
                    //Себестоимость
                    SUMPurchPriceVATCurrency = docSecondHandRetailReturnTabs.Quantity * docSecondHandRetailReturnTabs.PriceCurrency == null ? 0
                            : Math.Round(docSecondHandRetailReturnTabs.Quantity * docSecondHandRetailReturnTabs.PriceCurrency, sysSetting.FractionalPartInSum),


                    //Розница ***
                    //Наценка
                    MarkupRetail = 100 * (docSecondHandRetailReturnTabs.rem2PartyMinus.rem2Party.PriceRetailVAT - docSecondHandRetailReturnTabs.PriceVAT) / docSecondHandRetailReturnTabs.PriceVAT == null ? 0
                            : Math.Round(100 * (docSecondHandRetailReturnTabs.rem2PartyMinus.rem2Party.PriceRetailVAT - docSecondHandRetailReturnTabs.PriceVAT) / docSecondHandRetailReturnTabs.PriceVAT, sysSetting.FractionalPartInSum),
                    //Розничная цена
                    PriceRetailVAT = docSecondHandRetailReturnTabs.rem2PartyMinus.rem2Party.PriceRetailVAT,
                    //Розничная цена в текущей валюте
                    PriceRetailCurrency = docSecondHandRetailReturnTabs.rem2PartyMinus.rem2Party.PriceRetailCurrency,

                    //Опт ***
                    //Наценка
                    MarkupWholesale = 100 * (docSecondHandRetailReturnTabs.rem2PartyMinus.rem2Party.PriceWholesaleVAT - docSecondHandRetailReturnTabs.PriceVAT) / docSecondHandRetailReturnTabs.PriceVAT == null ? 0
                            : Math.Round(100 * (docSecondHandRetailReturnTabs.rem2PartyMinus.rem2Party.PriceWholesaleVAT - docSecondHandRetailReturnTabs.PriceVAT) / docSecondHandRetailReturnTabs.PriceVAT, sysSetting.FractionalPartInSum)
                    ,
                    //Оптовая цена
                    PriceWholesaleVAT = docSecondHandRetailReturnTabs.rem2PartyMinus.rem2Party.PriceWholesaleVAT,
                    //Оптовая цена в текущей валюте
                    PriceWholesaleCurrency = docSecondHandRetailReturnTabs.rem2PartyMinus.rem2Party.PriceWholesaleCurrency,

                    //Интерне-Магазин ***
                    //Наценка
                    MarkupIM = 100 * (docSecondHandRetailReturnTabs.rem2PartyMinus.rem2Party.PriceIMVAT - docSecondHandRetailReturnTabs.PriceVAT) / docSecondHandRetailReturnTabs.PriceVAT == null ? 0
                            : Math.Round(100 * (docSecondHandRetailReturnTabs.rem2PartyMinus.rem2Party.PriceIMVAT - docSecondHandRetailReturnTabs.PriceVAT) / docSecondHandRetailReturnTabs.PriceVAT, sysSetting.FractionalPartInSum)
                    ,
                    //Интернет-Магазин
                    PriceIMVAT = docSecondHandRetailReturnTabs.rem2PartyMinus.rem2Party.PriceIMVAT,
                    //Интернет-Магазин в текущей валюте
                    PriceIMCurrency = docSecondHandRetailReturnTabs.rem2PartyMinus.rem2Party.PriceIMCurrency,
                }

                        #endregion
                    );


                //Параметры
                //1. По документу
                if (_params.DocSecondHandRetailReturnID > 0)
                {
                    query = query.Where(x => x.DocSecondHandRetailReturnID == _params.DocSecondHandRetailReturnID);
                }
                //2. По дате
                if (_params.DateS != null)
                {
                    query = query.Where(x => x.DocDate >= _params.DateS && x.DocDate <= _params.DatePo);
                }
                //3. Склад
                if (_params.DirWarehouseID > 0)
                {
                    query = query.Where(x => x.DirWarehouseID == _params.DirWarehouseID);
                }


                #endregion


                #region Отправка JSON

                dynamic collectionWrapper = new
                {
                    sucess = true,
                    total  = query.Count(),
                    DocSecondHandRetailReturnTab = query
                };
                return(await Task.Run(() => Ok(collectionWrapper)));

                #endregion
            }
            catch (Exception ex)
            {
                return(Ok(returnServer.Return(false, exceptionEntry.Return(ex))));
            }
        }
        // GET: api/DocSecondHandMovementTabs
        public async Task <IHttpActionResult> GetDocSecondHandMovementTabs(HttpRequestMessage request)
        {
            try
            {
                #region Проверяем Логин и Пароль + Изменяем строку соединения + Права + Разные Функции

                //Получаем Куку
                System.Web.HttpCookie authCookie = System.Web.HttpContext.Current.Request.Cookies["CookieIPOL"];

                // Проверяем Логин и Пароль
                Classes.Account.Login.Field field = await Task.Run(() => login.Return(authCookie, true));

                if (!field.Access)
                {
                    return(Ok(returnServer.Return(false, Classes.Language.Sklad.Language.msg10)));
                }

                //Изменяем строку соединения
                db = new DbConnectionSklad(connectionString.Return(field.DirCustomersID, null, true));

                //Права (1 - Write, 2 - Read, 3 - No Access)
                //Возможно доступна Логистика
                int iRight = await Task.Run(() => accessRight.Access(connectionString.Return(field.DirCustomersID, null, true), field.DirEmployeeID, "RightDocSecondHandMovements"));

                if (iRight == 3)
                {
                    iRight = await Task.Run(() => accessRight.Access(connectionString.Return(field.DirCustomersID, null, true), field.DirEmployeeID, "RightDocSecondHandMovementsLogistics"));

                    if (iRight == 3)
                    {
                        return(Ok(returnServer.Return(false, Classes.Language.Sklad.Language.msg57(0))));
                    }
                }

                //Разные Функции
                function.NumberDecimalSeparator();

                //Получам настройки
                Models.Sklad.Sys.SysSetting sysSetting = await db.SysSettings.FindAsync(1);

                #endregion


                #region Параметры

                Params _params = new Params();

                //paramList -список параметров
                var paramList = request.GetQueryNameValuePairs();
                //Параметры
                _params.DocSecondHandMovementID = Convert.ToInt32(paramList.FirstOrDefault(kv => string.Compare(kv.Key, "DocSecondHandMovementID", true) == 0).Value);

                #endregion



                #region APPLY JOINS ARE NOT SUPPORTED

                var query1 =
                    (
                        from docMovementTabs in db.DocSecondHandMovementTabs

                        //APPLY JOINS ARE NOT SUPPORTED
                        from docSecondHandPurches in db.DocSecondHandPurches //!!!

                        where
                        docMovementTabs.rem2Party.DocIDFirst == docSecondHandPurches.DocID && //docMovementTabs.rem2Party.DocID == docSecondHandPurches.DocID && //!!!
                        docMovementTabs.DocSecondHandMovementID == _params.DocSecondHandMovementID

                        #region select

                        select new
                {
                    DocSecondHandMovementTabID = docMovementTabs.DocSecondHandMovementTabID,
                    DocSecondHandMovementID = docMovementTabs.DocSecondHandMovementID,
                    DirServiceNomenID = docMovementTabs.DirServiceNomenID,

                    DocSecondHandPurchID = docSecondHandPurches.DocSecondHandPurchID,
                }

                        #endregion
                    );


                var query2 =
                    (
                        from docMovementTabs in db.DocSecondHandMovementTabs

                        //APPLY JOINS ARE NOT SUPPORTED
                        //from docSecondHandPurches in db.DocSecondHandPurches //!!!

                        where
                        //docMovementTabs.rem2Party.DocID == docSecondHandPurches.DocID && //!!!
                        docMovementTabs.DocSecondHandMovementID == _params.DocSecondHandMovementID

                        #region select

                        select new
                {
                    DocSecondHandMovementTabID = docMovementTabs.DocSecondHandMovementTabID,
                    DocSecondHandMovementID = docMovementTabs.DocSecondHandMovementID,
                    DirServiceNomenID = docMovementTabs.DirServiceNomenID,

                    //DocSecondHandPurchID = docSecondHandPurches.DocSecondHandPurchID,
                }

                        #endregion
                    );


                if (await query1.CountAsync() == await query2.CountAsync())
                {
                    #region Основной запрос *** *** ***

                    var query =
                        (
                            from docMovementTabs in db.DocSecondHandMovementTabs

                            //APPLY JOINS ARE NOT SUPPORTED
                            from docSecondHandPurches in db.DocSecondHandPurches //!!!
                            //join docSecondHandPurches11 in db.DocSecondHandPurches on docMovementTabs.rem2Party.DocID equals docSecondHandPurches11.DocID into docSecondHandPurches12
                            //from docSecondHandPurches in docSecondHandPurches12.DefaultIfEmpty()

                            join dirServiceNomens11 in db.DirServiceNomens on docMovementTabs.dirServiceNomen.Sub equals dirServiceNomens11.DirServiceNomenID into dirServiceNomens12
                            from dirServiceNomensSubGroup in dirServiceNomens12.DefaultIfEmpty()

                            join dirServiceNomens21 in db.DirServiceNomens on dirServiceNomensSubGroup.Sub equals dirServiceNomens21.DirServiceNomenID into dirServiceNomens22
                            from dirServiceNomensGroup in dirServiceNomens22.DefaultIfEmpty()

                            where
                            docMovementTabs.rem2Party.DocIDFirst == docSecondHandPurches.DocID && //docMovementTabs.rem2Party.DocID == docSecondHandPurches.DocID && //!!!
                            docMovementTabs.DocSecondHandMovementID == _params.DocSecondHandMovementID

                            #region select

                            select new
                    {
                        DocSecondHandMovementTabID = docMovementTabs.DocSecondHandMovementTabID,
                        DocSecondHandMovementID = docMovementTabs.DocSecondHandMovementID,
                        DirServiceNomenID = docMovementTabs.DirServiceNomenID,

                        DocSecondHandPurchID = docSecondHandPurches.DocSecondHandPurchID,

                        //DirServiceNomenName = docMovementTabs.dirServiceNomen.DirServiceNomenName,
                        DirServiceNomenName =
                            dirServiceNomensSubGroup.DirServiceNomenName == null ? docMovementTabs.dirServiceNomen.DirServiceNomenName :
                            dirServiceNomensGroup.DirServiceNomenName == null ? dirServiceNomensSubGroup.DirServiceNomenName + " / " + docMovementTabs.dirServiceNomen.DirServiceNomenName :
                            dirServiceNomensGroup.DirServiceNomenName + " / " + dirServiceNomensSubGroup.DirServiceNomenName + " / " + docMovementTabs.dirServiceNomen.DirServiceNomenName,

                        Rem2PartyID = docMovementTabs.Rem2PartyID,
                        Quantity = docMovementTabs.Quantity,

                        PriceVAT = docMovementTabs.PriceVAT,

                        DirCurrencyID = docMovementTabs.DirCurrencyID,
                        DirCurrencyRate = docMovementTabs.DirCurrencyRate,
                        DirCurrencyMultiplicity = docMovementTabs.DirCurrencyMultiplicity,
                        DirCurrencyName = docMovementTabs.dirCurrency.DirCurrencyName + " (" + docMovementTabs.DirCurrencyRate + ", " + docMovementTabs.DirCurrencyMultiplicity + ")",


                        //Цена в т.в.
                        PriceCurrency = docMovementTabs.PriceCurrency,
                        //Себестоимость
                        SUMMovementPriceVATCurrency = docMovementTabs.Quantity * docMovementTabs.PriceCurrency == null ? 0
                                    :
                                                      Math.Round(docMovementTabs.Quantity * docMovementTabs.PriceCurrency, sysSetting.FractionalPartInSum),

                        //Розница ***
                        //Наценка
                        MarkupRetail = 100 * (docMovementTabs.PriceRetailVAT - docMovementTabs.PriceVAT) / docMovementTabs.PriceVAT == null ? 0
                                    :
                                       Math.Round(100 * (docMovementTabs.PriceRetailVAT - docMovementTabs.PriceVAT) / docMovementTabs.PriceVAT, sysSetting.FractionalPartInSum),
                        //Розничная цена
                        PriceRetailVAT = docMovementTabs.PriceRetailVAT,
                        //Розничная цена в текущей валюте
                        PriceRetailCurrency = docMovementTabs.PriceRetailCurrency,

                        //Опт ***
                        //Наценка
                        MarkupWholesale = 100 * (docMovementTabs.PriceWholesaleVAT - docMovementTabs.PriceVAT) / docMovementTabs.PriceVAT == null ? 0
                                    :
                                          Math.Round(100 * (docMovementTabs.PriceWholesaleVAT - docMovementTabs.PriceVAT) / docMovementTabs.PriceVAT, sysSetting.FractionalPartInSum),
                        //Оптовая цена
                        PriceWholesaleVAT = docMovementTabs.PriceWholesaleVAT,
                        //Оптовая цена в текущей валюте
                        PriceWholesaleCurrency = docMovementTabs.PriceWholesaleCurrency,

                        //Интерне-Магазин ***
                        //Наценка
                        MarkupIM = 100 * (docMovementTabs.PriceIMVAT - docMovementTabs.PriceVAT) / docMovementTabs.PriceVAT == null ? 0
                                    :
                                   Math.Round(100 * (docMovementTabs.PriceIMVAT - docMovementTabs.PriceVAT) / docMovementTabs.PriceVAT, sysSetting.FractionalPartInSum)
                        ,
                        //Интернет-Магазин
                        PriceIMVAT = docMovementTabs.PriceIMVAT,
                        //Интернет-Магазин в текущей валюте
                        PriceIMCurrency = docMovementTabs.PriceIMCurrency,

                        //Причина возврата
                        DirDescriptionID = docMovementTabs.DirDescriptionID,
                        DirDescriptionName = docMovementTabs.dirDescription.DirDescriptionName,
                        DirReturnTypeID = docMovementTabs.DirReturnTypeID,
                        DirReturnTypeName = docMovementTabs.dirReturnType.DirReturnTypeName
                    }

                            #endregion
                        );

                    #endregion


                    #region Отправка JSON

                    dynamic collectionWrapper = new
                    {
                        sucess = true,
                        total  = query.Count(),
                        DocSecondHandMovementTab = query
                    };
                    return(await Task.Run(() => Ok(collectionWrapper)));

                    #endregion
                }
                else
                {
                    #region Основной запрос *** *** ***

                    var query =
                        (
                            from docMovementTabs in db.DocSecondHandMovementTabs

                            //APPLY JOINS ARE NOT SUPPORTED
                            //from docSecondHandPurches in db.DocSecondHandPurches //!!!
                            //join docSecondHandPurches11 in db.DocSecondHandPurches on docMovementTabs.rem2Party.DocID equals docSecondHandPurches11.DocID into docSecondHandPurches12
                            //from docSecondHandPurches in docSecondHandPurches12.DefaultIfEmpty()

                            join dirServiceNomens11 in db.DirServiceNomens on docMovementTabs.dirServiceNomen.Sub equals dirServiceNomens11.DirServiceNomenID into dirServiceNomens12
                            from dirServiceNomensSubGroup in dirServiceNomens12.DefaultIfEmpty()

                            join dirServiceNomens21 in db.DirServiceNomens on dirServiceNomensSubGroup.Sub equals dirServiceNomens21.DirServiceNomenID into dirServiceNomens22
                            from dirServiceNomensGroup in dirServiceNomens22.DefaultIfEmpty()

                            where
                            //docMovementTabs.rem2Party.DocID == docSecondHandPurches.DocID && //!!!
                            docMovementTabs.DocSecondHandMovementID == _params.DocSecondHandMovementID

                            #region select

                            select new
                    {
                        DocSecondHandMovementTabID = docMovementTabs.DocSecondHandMovementTabID,
                        DocSecondHandMovementID = docMovementTabs.DocSecondHandMovementID,
                        DirServiceNomenID = docMovementTabs.DirServiceNomenID,

                        //DocSecondHandPurchID = docSecondHandPurches.DocSecondHandPurchID,

                        //DirServiceNomenName = docMovementTabs.dirServiceNomen.DirServiceNomenName,
                        DirServiceNomenName =
                            dirServiceNomensSubGroup.DirServiceNomenName == null ? docMovementTabs.dirServiceNomen.DirServiceNomenName :
                            dirServiceNomensGroup.DirServiceNomenName == null ? dirServiceNomensSubGroup.DirServiceNomenName + " / " + docMovementTabs.dirServiceNomen.DirServiceNomenName :
                            dirServiceNomensGroup.DirServiceNomenName + " / " + dirServiceNomensSubGroup.DirServiceNomenName + " / " + docMovementTabs.dirServiceNomen.DirServiceNomenName,

                        Rem2PartyID = docMovementTabs.Rem2PartyID,
                        Quantity = docMovementTabs.Quantity,

                        PriceVAT = docMovementTabs.PriceVAT,

                        DirCurrencyID = docMovementTabs.DirCurrencyID,
                        DirCurrencyRate = docMovementTabs.DirCurrencyRate,
                        DirCurrencyMultiplicity = docMovementTabs.DirCurrencyMultiplicity,
                        DirCurrencyName = docMovementTabs.dirCurrency.DirCurrencyName + " (" + docMovementTabs.DirCurrencyRate + ", " + docMovementTabs.DirCurrencyMultiplicity + ")",


                        //Цена в т.в.
                        PriceCurrency = docMovementTabs.PriceCurrency,
                        //Себестоимость
                        SUMMovementPriceVATCurrency = docMovementTabs.Quantity * docMovementTabs.PriceCurrency == null ? 0
                                    :
                                                      Math.Round(docMovementTabs.Quantity * docMovementTabs.PriceCurrency, sysSetting.FractionalPartInSum),

                        //Розница ***
                        //Наценка
                        MarkupRetail = 100 * (docMovementTabs.PriceRetailVAT - docMovementTabs.PriceVAT) / docMovementTabs.PriceVAT == null ? 0
                                    :
                                       Math.Round(100 * (docMovementTabs.PriceRetailVAT - docMovementTabs.PriceVAT) / docMovementTabs.PriceVAT, sysSetting.FractionalPartInSum),
                        //Розничная цена
                        PriceRetailVAT = docMovementTabs.PriceRetailVAT,
                        //Розничная цена в текущей валюте
                        PriceRetailCurrency = docMovementTabs.PriceRetailCurrency,

                        //Опт ***
                        //Наценка
                        MarkupWholesale = 100 * (docMovementTabs.PriceWholesaleVAT - docMovementTabs.PriceVAT) / docMovementTabs.PriceVAT == null ? 0
                                    :
                                          Math.Round(100 * (docMovementTabs.PriceWholesaleVAT - docMovementTabs.PriceVAT) / docMovementTabs.PriceVAT, sysSetting.FractionalPartInSum),
                        //Оптовая цена
                        PriceWholesaleVAT = docMovementTabs.PriceWholesaleVAT,
                        //Оптовая цена в текущей валюте
                        PriceWholesaleCurrency = docMovementTabs.PriceWholesaleCurrency,

                        //Интерне-Магазин ***
                        //Наценка
                        MarkupIM = 100 * (docMovementTabs.PriceIMVAT - docMovementTabs.PriceVAT) / docMovementTabs.PriceVAT == null ? 0
                                    :
                                   Math.Round(100 * (docMovementTabs.PriceIMVAT - docMovementTabs.PriceVAT) / docMovementTabs.PriceVAT, sysSetting.FractionalPartInSum)
                        ,
                        //Интернет-Магазин
                        PriceIMVAT = docMovementTabs.PriceIMVAT,
                        //Интернет-Магазин в текущей валюте
                        PriceIMCurrency = docMovementTabs.PriceIMCurrency,

                        //Причина возврата
                        DirDescriptionID = docMovementTabs.DirDescriptionID,
                        DirDescriptionName = docMovementTabs.dirDescription.DirDescriptionName,
                        DirReturnTypeID = docMovementTabs.DirReturnTypeID,
                        DirReturnTypeName = docMovementTabs.dirReturnType.DirReturnTypeName
                    }

                            #endregion
                        );

                    #endregion


                    #region Отправка JSON

                    dynamic collectionWrapper = new
                    {
                        sucess = true,
                        total  = query.Count(),
                        DocSecondHandMovementTab = query
                    };
                    return(await Task.Run(() => Ok(collectionWrapper)));

                    #endregion
                }


                #endregion
            }
            catch (Exception ex)
            {
                return(Ok(returnServer.Return(false, exceptionEntry.Return(ex))));
            }
        }
示例#27
0
        // GET: api/DirBonuses
        public async Task <IHttpActionResult> GetDirBonuses(HttpRequestMessage request)
        {
            try
            {
                #region Проверяем Логин и Пароль + Изменяем строку соединения + Права + Разные Функции

                //Получаем Куку
                System.Web.HttpCookie authCookie = System.Web.HttpContext.Current.Request.Cookies["CookieIPOL"];

                // Проверяем Логин и Пароль
                Classes.Account.Login.Field field = await Task.Run(() => login.Return(authCookie, true));

                if (!field.Access)
                {
                    return(Ok(returnServer.Return(false, Classes.Language.Sklad.Language.msg10)));
                }

                //Изменяем строку соединения
                db = new DbConnectionSklad(connectionString.Return(field.DirCustomersID, null, true));

                //Права (1 - Write, 2 - Read, 3 - No Access)
                int iRight = await Task.Run(() => accessRight.Access(connectionString.Return(field.DirCustomersID, null, true), field.DirEmployeeID, "RightDirBonuses"));

                if (iRight == 3)
                {
                    return(Ok(returnServer.Return(false, Classes.Language.Sklad.Language.msg57(0))));
                }

                //Разные Функции
                function.NumberDecimalSeparator();

                //Получам настройки
                Models.Sklad.Sys.SysSetting sysSetting = await db.SysSettings.FindAsync(1);

                #endregion


                #region Параметры

                Params _params = new Params();

                //paramList -список параметров
                var paramList = request.GetQueryNameValuePairs();
                //Параметры
                _params.limit     = 999999;                                                                                           // sysSetting.PageSizeDir; //Convert.ToInt32(paramList.FirstOrDefault(kv => string.Compare(kv.Key, "limit", true) == 0).Value); //Записей на страницу
                _params.page      = Convert.ToInt32(paramList.FirstOrDefault(kv => string.Compare(kv.Key, "page", true) == 0).Value); //Номер страницы
                _params.Skip      = _params.limit * (_params.page - 1);
                _params.type      = paramList.FirstOrDefault(kv => string.Compare(kv.Key, "type", true) == 0).Value;
                _params.parSearch = paramList.FirstOrDefault(kv => string.Compare(kv.Key, "parSearch", true) == 0).Value; if (_params.parSearch != null)
                {
                    _params.parSearch = _params.parSearch.ToLower();                                                                                                                                      //Поиск
                }
                #endregion


                if (_params.type == "Grid")
                {
                    #region Основной запрос *** *** ***

                    var query =
                        (
                            from x in db.DirBonuses
                            select new
                    {
                        DirBonusID = x.DirBonusID,
                        Del = x.Del,
                        DirBonusName = x.DirBonusName
                    }
                        );

                    #endregion


                    #region Условия (параметры) *** *** ***


                    #region Не показывать удалённые

                    if (!Convert.ToBoolean(sysSetting.DeletedRecordsShow))
                    {
                        query = query.Where(x => x.Del == sysSetting.DeletedRecordsShow);
                    }

                    #endregion


                    #region Поиск

                    if (!String.IsNullOrEmpty(_params.parSearch))
                    {
                        //Проверяем число ли это
                        Int32 iNumber32;
                        bool  bResult32 = Int32.TryParse(_params.parSearch, out iNumber32);


                        //Если число, то задействуем в поиске и числовые поля (_params.parSearch == iNumber)
                        if (bResult32)
                        {
                            query = query.Where(x => x.DirBonusID == iNumber32 || x.DirBonusName.Contains(_params.parSearch));
                        }
                        else
                        {
                            query = query.Where(x => x.DirBonusName.Contains(_params.parSearch));
                        }
                    }

                    #endregion


                    #region OrderBy и Лимит

                    query = query.OrderBy(x => x.DirBonusName); //.Skip(_params.Skip).Take(_params.limit);

                    #endregion


                    #endregion


                    #region Отправка JSON

                    //К-во Номенклатуры
                    int dirCount = await Task.Run(() => db.DirBonuses.Count());

                    //А вдруг к-во меньше Лимита, тогда показать не общее к-во, а реальное!
                    int dirCount2 = query.Count();
                    //if (dirCount2 < _params.limit) dirCount = _params.limit * (_params.page - 1) + dirCount2;

                    dynamic collectionWrapper = new
                    {
                        sucess   = true,
                        total    = dirCount,
                        DirBonus = query
                    };
                    return(await Task.Run(() => Ok(collectionWrapper)));

                    #endregion
                }
                else //Tree
                {
                    #region Отобразить только "Руты" *** *** ***

                    var query =
                        (
                            from x in db.DirBonuses
                            select new
                    {
                        id = x.DirBonusID,
                        text = x.DirBonusName,
                        leaf = true,
                        Del = x.Del
                    }
                        );

                    #endregion


                    #region Отправка JSON

                    //return Ok(await Task.Run(() => query));

                    dynamic collectionWrapper = new
                    {
                        query
                    };
                    return(Ok(await Task.Run(() => collectionWrapper)));

                    #endregion
                }
            }
            catch (Exception ex)
            {
                return(Ok(returnServer.Return(false, exceptionEntry.Return(ex))));
            }
        }
示例#28
0
        // GET: api/DocSalaries
        public async Task <IHttpActionResult> GetDocSalaries(HttpRequestMessage request)
        {
            try
            {
                #region Проверяем Логин и Пароль + Изменяем строку соединения + Права + Разные Функции

                //Получаем Куку
                System.Web.HttpCookie authCookie = System.Web.HttpContext.Current.Request.Cookies["CookieIPOL"];

                // Проверяем Логин и Пароль
                Classes.Account.Login.Field field = await Task.Run(() => login.Return(authCookie, true));

                if (!field.Access)
                {
                    return(Ok(returnServer.Return(false, Classes.Language.Sklad.Language.msg10)));
                }

                //Изменяем строку соединения
                db     = new DbConnectionSklad(connectionString.Return(field.DirCustomersID, null, true));
                dbRead = new DbConnectionSklad(connectionString.Return(field.DirCustomersID, null, true));

                //Права (1 - Write, 2 - Read, 3 - No Access)
                int iRight = await Task.Run(() => accessRight.Access(connectionString.Return(field.DirCustomersID, null, true), field.DirEmployeeID, "RightDocSalaries"));

                if (iRight == 3)
                {
                    return(Ok(returnServer.Return(false, Classes.Language.Sklad.Language.msg57(0))));
                }

                //Разные Функции
                function.NumberDecimalSeparator();

                //Получам настройки
                Models.Sklad.Sys.SysSetting sysSetting = await db.SysSettings.FindAsync(1);

                //Получаем сотрудника: если к нему привязан Склад и/или Организация, то выбираем документы только по этим характеристикам
                Models.Sklad.Dir.DirEmployee dirEmployee = await db.DirEmployees.FindAsync(field.DirEmployeeID);

                #endregion


                #region Параметры

                Params _params = new Params();

                //paramList -список параметров
                var paramList = request.GetQueryNameValuePairs();
                //Параметры
                _params.limit     = sysSetting.PageSizeJurn;                                                                              //Convert.ToInt32(paramList.FirstOrDefault(kv => string.Compare(kv.Key, "limit", true) == 0).Value); //Записей на страницу
                _params.page      = Convert.ToInt32(paramList.FirstOrDefault(kv => string.Compare(kv.Key, "page", true) == 0).Value);     //Номер страницы
                _params.Skip      = _params.limit * (_params.page - 1);
                _params.GroupID   = Convert.ToInt32(paramList.FirstOrDefault(kv => string.Compare(kv.Key, "pGroupID", true) == 0).Value); //Кликнули по группе
                _params.parSearch = paramList.FirstOrDefault(kv => string.Compare(kv.Key, "parSearch", true) == 0).Value; if (_params.parSearch != null)
                {
                    _params.parSearch = _params.parSearch.ToLower();                                                                                                                                      //Поиск
                }
                _params.FilterType     = Convert.ToInt32(paramList.FirstOrDefault(kv => string.Compare(kv.Key, "FilterType", true) == 0).Value);
                _params.DirWarehouseID = Convert.ToInt32(paramList.FirstOrDefault(kv => string.Compare(kv.Key, "DirWarehouseID", true) == 0).Value);

                _params.DateS = Convert.ToDateTime(Convert.ToDateTime(paramList.FirstOrDefault(kv => string.Compare(kv.Key, "DateS", true) == 0).Value).ToString("yyyy-MM-dd 23:59:59"));
                if (_params.DateS < Convert.ToDateTime("01.01.1800"))
                {
                    _params.DateS = Convert.ToDateTime(sysSetting.JurDateS.ToString("yyyy-MM-dd 00:00:00")).AddDays(-1);
                }
                else
                {
                    _params.DateS = _params.DateS.Value.AddDays(-1);
                }

                _params.DatePo = Convert.ToDateTime(Convert.ToDateTime(paramList.FirstOrDefault(kv => string.Compare(kv.Key, "DatePo", true) == 0).Value).ToString("yyyy-MM-dd 23:59:59"));
                if (_params.DatePo < Convert.ToDateTime("01.01.1800"))
                {
                    _params.DatePo = Convert.ToDateTime(sysSetting.JurDatePo.ToString("yyyy-MM-dd 23:59:59"));
                }

                #endregion



                #region Основной запрос *** *** ***

                var query =
                    (
                        from docSalaries in db.DocSalaries

                        join docSalaryTabs1 in db.DocSalaryTabs on docSalaries.DocSalaryID equals docSalaryTabs1.DocSalaryID into docSalaryTabs2
                        from docSalaryTabs in docSalaryTabs2.DefaultIfEmpty()

                        where docSalaries.doc.DocDate >= _params.DateS && docSalaries.doc.DocDate <= _params.DatePo

                        group new { docSalaryTabs }
                        by new
                {
                    DocID = docSalaries.DocID,
                    DocDate = docSalaries.doc.DocDate,
                    DocYear = docSalaries.DocYear,
                    DocMonth = docSalaries.DocMonth,
                    Base = docSalaries.doc.Base,
                    Held = docSalaries.doc.Held,
                    Discount = docSalaries.doc.Discount,
                    Del = docSalaries.doc.Del,
                    Description = docSalaries.doc.Description,

                    DocSalaryID = docSalaries.DocSalaryID,
                    DirContractorIDOrg = docSalaries.doc.dirContractorOrg.DirContractorID,
                    DirContractorNameOrg = docSalaries.doc.dirContractorOrg.DirContractorName,
                }
                        into g

                        select new
                {
                    DocID = g.Key.DocID,
                    DocDate = g.Key.DocDate,
                    Held = g.Key.Held,
                    Base = g.Key.Base,

                    Del = g.Key.Del,
                    Description = g.Key.Description,

                    DocSalaryID = g.Key.DocSalaryID,

                    DirContractorIDOrg = g.Key.DirContractorIDOrg,
                    DirContractorNameOrg = g.Key.DirContractorNameOrg,

                    //1.
                    SumSalary =
                        g.Sum(x => x.docSalaryTabs.SumSalary) == null ? 0
                            :
                        g.Sum(x => x.docSalaryTabs.SumSalary),

                    //2.
                    DirBonusIDSalary =
                        g.Sum(x => x.docSalaryTabs.DirBonusIDSalary) == null ? 0
                            :
                        g.Sum(x => x.docSalaryTabs.DirBonusIDSalary),

                    //3.
                    DirBonus2IDSalary =
                        g.Sum(x => x.docSalaryTabs.DirBonus2IDSalary) == null ? 0
                            :
                        g.Sum(x => x.docSalaryTabs.DirBonus2IDSalary),

                    //4.
                    Sums =
                        g.Sum(x => x.docSalaryTabs.Sums) == null ? 0
                            :
                        g.Sum(x => x.docSalaryTabs.Sums),
                }
                    );

                #endregion


                #region Условия (параметры) *** *** ***


                #region dirEmployee.DirContractorIDOrg

                if (dirEmployee.DirContractorIDOrg != null && dirEmployee.DirContractorIDOrg > 0)
                {
                    query = query.Where(x => x.DirContractorIDOrg == dirEmployee.DirContractorIDOrg);
                }

                #endregion


                #region Не показывать удалённые

                if (!Convert.ToBoolean(sysSetting.DeletedRecordsShow))
                {
                    query = query.Where(x => x.Del == sysSetting.DeletedRecordsShow);
                }

                #endregion


                #region Фильтр

                if (_params.FilterType > 0)
                {
                    switch (_params.FilterType)
                    {
                    case 1: query = query.Where(x => x.Held == true); break;

                    case 2: query = query.Where(x => x.Held == false); break;
                    }
                }

                #endregion


                #region Поиск

                if (!String.IsNullOrEmpty(_params.parSearch))
                {
                    //Проверяем число ли это
                    Int32    iNumber32;
                    bool     bResult32 = Int32.TryParse(_params.parSearch, out iNumber32);
                    DateTime dDateTime;
                    bool     bDateTime = DateTime.TryParse(_params.parSearch, out dDateTime);


                    //Если число, то задействуем в поиске и числовые поля (_params.parSearch == iNumber)
                    if (bResult32)
                    {
                        query = query.Where(x => x.DocSalaryID == iNumber32);
                    }
                    //Если Дата
                    else if (bDateTime)
                    {
                        query = query.Where(x => x.DocDate == dDateTime);
                    }
                    //Иначе, только текстовые поля
                    else
                    {
                        //query = query.Where(x => x.DirContractorName.Contains(_params.parSearch) || x.DirWarehouseName.Contains(_params.parSearch) || x.NumberInt.Contains(_params.parSearch) || x.NumberTT.Contains(_params.parSearch));
                    }
                }

                #endregion


                #region OrderBy и Лимит

                query = query.OrderByDescending(x => x.DocDate).Skip(_params.Skip).Take(_params.limit);

                #endregion


                #endregion


                #region Отправка JSON

                //К-во Номенклатуры
                int dirCount = await Task.Run(() => db.DocSalaries.Where(x => x.doc.DocDate >= _params.DateS && x.doc.DocDate <= _params.DatePo).Count());

                //А вдруг к-во меньше Лимита, тогда показать не общее к-во, а реальное!
                int dirCount2 = query.Count();
                if (dirCount2 < _params.limit)
                {
                    dirCount = _params.limit * (_params.page - 1) + dirCount2;
                }

                dynamic collectionWrapper = new
                {
                    sucess    = true,
                    total     = dirCount,
                    DocSalary = query
                };
                return(await Task.Run(() => Ok(collectionWrapper)));

                #endregion
            }
            catch (Exception ex)
            {
                return(Ok(returnServer.Return(false, exceptionEntry.Return(ex))));
            }
        }
示例#29
0
        public async Task <IHttpActionResult> GetDirContractor1Types(HttpRequestMessage request)
        {
            try
            {
                #region Проверяем Логин и Пароль + Изменяем строку соединения + Права + Разные Функции

                //Получаем Куку
                System.Web.HttpCookie authCookie = System.Web.HttpContext.Current.Request.Cookies["CookieIPOL"];

                // Проверяем Логин и Пароль
                Classes.Account.Login.Field field = await Task.Run(() => login.Return(authCookie, true));

                if (!field.Access)
                {
                    return(Ok(returnServer.Return(false, Classes.Language.Sklad.Language.msg10)));
                }

                //Изменяем строку соединения
                db = new DbConnectionSklad(connectionString.Return(field.DirCustomersID, null, true));

                //Разные Функции
                function.NumberDecimalSeparator();

                //Получам настройки
                Models.Sklad.Sys.SysSetting sysSetting = await db.SysSettings.FindAsync(1);

                #endregion


                #region Параметры

                Params _params = new Params();

                //paramList -список параметров
                var paramList = request.GetQueryNameValuePairs();
                //Параметры
                _params.limit     = 999999;                                                                                           // sysSetting.PageSizeDir; //Convert.ToInt32(paramList.FirstOrDefault(kv => string.Compare(kv.Key, "limit", true) == 0).Value); //Записей на страницу
                _params.page      = Convert.ToInt32(paramList.FirstOrDefault(kv => string.Compare(kv.Key, "page", true) == 0).Value); //Номер страницы
                _params.Skip      = _params.limit * (_params.page - 1);
                _params.type      = paramList.FirstOrDefault(kv => string.Compare(kv.Key, "type", true) == 0).Value;
                _params.parSearch = paramList.FirstOrDefault(kv => string.Compare(kv.Key, "parSearch", true) == 0).Value; if (_params.parSearch != null)
                {
                    _params.parSearch = _params.parSearch.ToLower();                                                                                                                                      //Поиск
                }
                #endregion


                if (_params.type == "Grid")
                {
                    #region Основной запрос *** *** ***

                    var query =
                        (
                            from dirContractor1Types in db.DirContractor1Types
                            select new
                    {
                        DirContractor1TypeID = dirContractor1Types.DirContractor1TypeID,
                        DirContractor1TypeName = dirContractor1Types.DirContractor1TypeName,
                    }
                        );

                    #endregion


                    #region Условия (параметры) *** *** ***


                    #region OrderBy и Лимит

                    //query = query.OrderBy(x => x.DirContractor1TypeName); //.Skip(_params.Skip).Take(_params.limit);

                    #endregion


                    #endregion


                    #region Отправка JSON

                    //К-во Номенклатуры
                    int dirCount = await Task.Run(() => db.DirContractor1Types.Count());

                    //А вдруг к-во меньше Лимита, тогда показать не общее к-во, а реальное!
                    //int dirCount2 = query.Count();
                    //if (dirCount2 < _params.limit) dirCount = _params.limit * (_params.page - 1) + dirCount2;

                    dynamic collectionWrapper = new
                    {
                        sucess             = true,
                        total              = dirCount,
                        DirContractor1Type = query
                    };
                    return(await Task.Run(() => Ok(collectionWrapper)));

                    #endregion
                }
                else //Tree
                {
                    #region Отобразить только "Руты" *** *** ***

                    var query =
                        (
                            from x in db.DirContractor1Types
                            select new
                    {
                        id = x.DirContractor1TypeID,
                        text = x.DirContractor1TypeName,
                        leaf = true
                    }
                        );

                    #endregion


                    #region Отправка JSON

                    //return Ok(await Task.Run(() => query));

                    dynamic collectionWrapper = new
                    {
                        query
                    };
                    return(Ok(await Task.Run(() => collectionWrapper)));

                    #endregion
                }
            }
            catch (Exception ex)
            {
                return(Ok(returnServer.Return(false, exceptionEntry.Return(ex))));
            }
        }
示例#30
0
        // GET: api/RemParties
        public async Task <IHttpActionResult> GetRemParties(HttpRequestMessage request)
        {
            try
            {
                #region Проверяем Логин и Пароль + Изменяем строку соединения + Права + Разные Функции

                //Получаем Куку
                System.Web.HttpCookie authCookie = System.Web.HttpContext.Current.Request.Cookies["CookieIPOL"];

                // Проверяем Логин и Пароль
                Classes.Account.Login.Field field = await Task.Run(() => login.Return(authCookie, true));

                if (!field.Access)
                {
                    return(Ok(returnServer.Return(false, Classes.Language.Sklad.Language.msg10)));
                }

                //Изменяем строку соединения
                db = new DbConnectionSklad(connectionString.Return(field.DirCustomersID, null, true));

                //Права (1 - Write, 2 - Read, 3 - No Access)

                /*
                 * int iRight = await Task.Run(() => accessRight.Access(connectionString.Return(field.DirCustomersID, null, true), field.DirEmployeeID, "RightRemParties"));
                 * if (iRight == 3) return Ok(returnServer.Return(false, Classes.Language.Sklad.Language.msg57(0)));
                 */

                //Разные Функции
                function.NumberDecimalSeparator();

                //Получам настройки
                Models.Sklad.Sys.SysSetting sysSetting = await db.SysSettings.FindAsync(1);

                #endregion


                #region Параметры

                Params _params = new Params();

                //paramList -список параметров
                var paramList = request.GetQueryNameValuePairs();
                //Параметры
                _params.DocDate            = Convert.ToDateTime(Convert.ToDateTime(paramList.FirstOrDefault(kv => string.Compare(kv.Key, "DocDate", true) == 0).Value).ToString("yyyy-MM-dd 23:59:59"));
                _params.DirContractorIDOrg = Convert.ToInt32(paramList.FirstOrDefault(kv => string.Compare(kv.Key, "DirContractorIDOrg", true) == 0).Value);
                _params.DirWarehouseID     = Convert.ToInt32(paramList.FirstOrDefault(kv => string.Compare(kv.Key, "DirWarehouseID", true) == 0).Value);
                _params.DirNomenID         = Convert.ToInt32(paramList.FirstOrDefault(kv => string.Compare(kv.Key, "DirNomenID", true) == 0).Value);
                _params.DirContractorID    = Convert.ToInt32(paramList.FirstOrDefault(kv => string.Compare(kv.Key, "DirContractorID", true) == 0).Value);

                _params.parSearch = paramList.FirstOrDefault(kv => string.Compare(kv.Key, "parSearch", true) == 0).Value; if (_params.parSearch != null)
                {
                    _params.parSearch = _params.parSearch.ToLower();                                                                                                                                      //Поиск
                }
                //В "collectionWrapper" по умолчанию "RemParty = query"
                //Но, для DocActWriteOffTabs будет "DocActWriteOffTab = query"
                _params.queryIn = paramList.FirstOrDefault(kv => string.Compare(kv.Key, "queryIn", true) == 0).Value;

                #endregion


                #region Запрос и отправка

                if (String.IsNullOrEmpty(_params.queryIn))
                {
                    #region Основной запрос *** *** ***

                    var query =
                        (
                            from remParties in db.RemParties

                            where
                            remParties.Remnant > 0
                            //remParties.DirContractorIDOrg == _params.DirContractorIDOrg &&
                            //remParties.DirNomenID == _params.DirNomenID &&
                            //remParties.DirWarehouseID == _params.DirWarehouseID

                            select new
                    {
                        DocID = remParties.DocID,
                        NumberReal = remParties.doc.NumberReal,
                        RemPartyID = remParties.RemPartyID,
                        DirNomenID = remParties.DirNomenID,
                        DirNomenName = remParties.dirNomen.DirNomenName,
                        DocDate = remParties.doc.DocDate,
                        ListObjectID = remParties.doc.ListObjectID,

                        DirContractorIDOrg = remParties.DirContractorIDOrg,
                        DirContractorNameOrg = remParties.doc.dirContractorOrg.DirContractorName,

                        //DirContractorID = remParties.doc.dirContractor.DirContractorID,
                        //DirContractorName = remParties.doc.dirContractor.DirContractorName,
                        DirContractorID = remParties.dirContractor.DirContractorID,
                        DirContractorName = remParties.dirContractor.DirContractorName,

                        DocDatePurches = remParties.DocDatePurches,

                        //Характеристики
                        DirCharColourID = remParties.DirCharColourID,
                        DirCharColourName = remParties.dirCharColour.DirCharColourName,
                        DirCharMaterialID = remParties.DirCharMaterialID,
                        DirCharMaterialName = remParties.dirCharMaterial.DirCharMaterialName,
                        DirCharNameID = remParties.DirCharNameID,
                        DirCharNameName = remParties.dirCharName.DirCharNameName,
                        DirCharSeasonID = remParties.DirCharSeasonID,
                        DirCharSeasonName = remParties.dirCharSeason.DirCharSeasonName,
                        DirCharSexID = remParties.DirCharSexID,
                        DirCharSexName = remParties.dirCharSex.DirCharSexName,
                        DirCharSizeID = remParties.DirCharSizeID,
                        DirCharSizeName = remParties.dirCharSize.DirCharSizeName,
                        DirCharStyleID = remParties.DirCharStyleID,
                        DirCharStyleName = remParties.dirCharStyle.DirCharStyleName,
                        DirCharTextureID = remParties.DirCharTextureID,
                        DirCharTextureName = remParties.dirCharTexture.DirCharTextureName,
                        DirChar =
                            remParties.dirCharColour.DirCharColourName + " " +
                            remParties.dirCharMaterial.DirCharMaterialName + " " +
                            remParties.dirCharName.DirCharNameName + " " +
                            remParties.dirCharSeason.DirCharSeasonName + " " +
                            remParties.dirCharSex.DirCharSexName + " " +
                            remParties.dirCharSize.DirCharSizeName + " " +
                            remParties.dirCharStyle.DirCharStyleName + " " +
                            remParties.dirCharTexture.DirCharTextureName,
                        SerialNumber = remParties.SerialNumber,
                        Barcode = remParties.Barcode,


                        DirCurrencyID = remParties.DirCurrencyID,
                        DirCurrencyName = remParties.dirCurrency.DirCurrencyName,
                        DirCurrencyRate = remParties.dirCurrency.DirCurrencyRate,
                        DirCurrencyMultiplicity = remParties.dirCurrency.DirCurrencyMultiplicity,

                        DirVatValue = remParties.DirVatValue,
                        DirWarehouseID = remParties.DirWarehouseID,
                        DirWarehouseName = remParties.dirWarehouse.DirWarehouseName,
                        ListDocNameRu = remParties.doc.listObject.ListObjectNameRu,
                        PriceVAT = remParties.PriceVAT,           //PriceVAT = Math.Round(remParties.PriceVAT, sysSetting.FractionalPartInPrice),
                        PriceCurrency = remParties.PriceCurrency, //PriceCurrency = Math.Round(remParties.PriceCurrency, sysSetting.FractionalPartInPrice),
                        Quantity = remParties.Quantity,
                        Remnant = remParties.Remnant,
                        //Reserve = remParties.Reserve

                        MarkupRetail = ((remParties.PriceRetailVAT - remParties.PriceVAT) / remParties.PriceVAT) * 100 == null ? 0
                            :
                                       Math.Round(((remParties.PriceRetailVAT - remParties.PriceVAT) / remParties.PriceVAT) * 100, sysSetting.FractionalPartInPrice),
                        PriceRetailVAT = remParties.PriceRetailVAT - remParties.doc.Discount,
                        PriceRetailCurrency = (remParties.PriceRetailVAT * remParties.dirCurrency.DirCurrencyRate) / remParties.dirCurrency.DirCurrencyMultiplicity == null ? 0
                            :
                                              Math.Round((remParties.PriceRetailVAT * remParties.dirCurrency.DirCurrencyRate) / remParties.dirCurrency.DirCurrencyMultiplicity - remParties.doc.Discount, sysSetting.FractionalPartInPrice),

                        MarkupWholesale = ((remParties.PriceWholesaleVAT - remParties.PriceVAT) / remParties.PriceVAT) * 100 == null ? 0
                            :
                                          Math.Round(((remParties.PriceWholesaleVAT - remParties.PriceVAT) / remParties.PriceVAT) * 100, sysSetting.FractionalPartInPrice),
                        PriceWholesaleVAT = remParties.PriceWholesaleVAT - remParties.doc.Discount,
                        PriceWholesaleCurrency = (remParties.PriceWholesaleVAT * remParties.dirCurrency.DirCurrencyRate) / remParties.dirCurrency.DirCurrencyMultiplicity == null ? 0
                            :
                                                 Math.Round((remParties.PriceWholesaleVAT * remParties.dirCurrency.DirCurrencyRate) / remParties.dirCurrency.DirCurrencyMultiplicity - remParties.doc.Discount, sysSetting.FractionalPartInPrice),

                        MarkupIM = ((remParties.PriceIMVAT - remParties.PriceVAT) / remParties.PriceVAT) * 100 == null ? 0
                            :
                                   Math.Round(((remParties.PriceIMVAT - remParties.PriceVAT) / remParties.PriceVAT) * 100, sysSetting.FractionalPartInPrice),
                        PriceIMVAT = remParties.PriceIMVAT - remParties.doc.Discount,
                        PriceIMCurrency = (remParties.PriceIMVAT * remParties.dirCurrency.DirCurrencyRate) / remParties.dirCurrency.DirCurrencyMultiplicity == null ? 0
                            :
                                          Math.Round((remParties.PriceIMVAT * remParties.dirCurrency.DirCurrencyRate) / remParties.dirCurrency.DirCurrencyMultiplicity - remParties.doc.Discount, sysSetting.FractionalPartInPrice),

                        DirNomenMinimumBalance = remParties.DirNomenMinimumBalance,

                        DirEmployeeName = remParties.doc.dirEmployee.DirEmployeeName,

                        //Причина возврата
                        DirDescriptionID = remParties.DirDescriptionID,
                        DirDescriptionName = remParties.dirDescription.DirDescriptionName,
                        DirReturnTypeID = remParties.DirReturnTypeID,
                        DirReturnTypeName = remParties.dirReturnType.DirReturnTypeName,


                        SysGenID = remParties.dirNomen.SysGenID,
                        //SysGenIDPatch = @"UsersTemp/UserImage/" + field.DirCustomersID + "_" + x.SysGenID + ".jpg"
                        SysGenIDPatch = remParties.dirNomen.SysGenID == null ? "" :
                                        @"/Users/user_" + field.DirCustomersID + "/" + remParties.dirNomen.SysGenID + ".jpg"
                    }
                        );

                    #endregion


                    #region Условия (параметры) *** *** ***

                    //Поиск товара
                    if (_params.DirNomenID <= 0 && string.IsNullOrEmpty(_params.parSearch))
                    {
                        dynamic collectionWrapper1 = new
                        {
                            sucess   = true,
                            total    = 0,
                            RemParty = 0
                        };
                        return(await Task.Run(() => Ok(collectionWrapper1)));
                    }


                    #region Кликнули на товар - паказать список партий

                    //if (_params.DocDate > Convert.ToDateTime("2000-01-01")) query = query.Where(x => x.DocDate <= _params.DocDate);
                    if (_params.DirContractorIDOrg > 0)
                    {
                        query = query.Where(x => x.DirContractorIDOrg == _params.DirContractorIDOrg);
                    }
                    if (_params.DirNomenID > 0)
                    {
                        query = query.Where(x => x.DirNomenID == _params.DirNomenID);
                    }
                    if (_params.DirWarehouseID > 0)
                    {
                        query = query.Where(x => x.DirWarehouseID == _params.DirWarehouseID);
                    }
                    if (_params.DirContractorID > 0)
                    {
                        query = query.Where(x => x.DirContractorID == _params.DirContractorID);
                    }

                    #endregion


                    #region Поиск партии по Серийному номеру или по Штрих-коду

                    if (!string.IsNullOrEmpty(_params.parSearch))
                    {
                        //query = query.Where(x => x.SerialNumber == _params.parSearch || x.Barcode == _params.parSearch);

                        //Если число, то искать в коде товара
                        int?iID_ = 0;
                        int value;
                        if (int.TryParse(_params.parSearch, out value))
                        {
                            iID_  = Convert.ToInt32(_params.parSearch);
                            query = query.Where(x => x.SerialNumber == _params.parSearch || x.Barcode == _params.parSearch || x.DirNomenID == iID_);
                        }
                        else
                        {
                            query = query.Where(x => x.SerialNumber == _params.parSearch || x.Barcode == _params.parSearch);
                        }
                    }


                    #endregion


                    #region OrderBy

                    query = query.OrderByDescending(x => x.DocDate);

                    #endregion


                    #endregion


                    #region Отправка JSON

                    //А вдруг к-во меньше Лимита, тогда показать не общее к-во, а реальное!
                    int dirCount = query.Count();

                    dynamic collectionWrapper = new
                    {
                        sucess   = true,
                        total    = dirCount,
                        RemParty = query
                    };
                    return(await Task.Run(() => Ok(collectionWrapper)));

                    #endregion
                }
                else
                {
                    #region Основной запрос *** *** ***

                    var query =
                        (
                            from remParties in db.RemParties

                            where
                            remParties.Remnant > 0 &&
                            remParties.DirContractorIDOrg == _params.DirContractorIDOrg &&
                            remParties.DirWarehouseID == _params.DirWarehouseID

                            select new
                    {
                        DocID = remParties.DocID,
                        NumberReal = remParties.doc.NumberReal,
                        RemPartyID = remParties.RemPartyID,
                        DirNomenID = remParties.DirNomenID,
                        DirNomenName = remParties.dirNomen.DirNomenName,
                        //DocDate = remParties.doc.DocDate,
                        //ListObjectID = remParties.doc.ListObjectID,

                        //DirContractorIDOrg = remParties.DirContractorIDOrg,
                        //DirContractorNameOrg = remParties.doc.dirContractorOrg.DirContractorName,

                        DirContractorID = remParties.dirContractor.DirContractorID,
                        //DirContractorName = remParties.dirContractor.DirContractorName,

                        //DocDatePurches = remParties.DocDatePurches,

                        //Характеристики
                        DirCharColourID = remParties.DirCharColourID,
                        DirCharColourName = remParties.dirCharColour.DirCharColourName,
                        DirCharMaterialID = remParties.DirCharMaterialID,
                        DirCharMaterialName = remParties.dirCharMaterial.DirCharMaterialName,
                        DirCharNameID = remParties.DirCharNameID,
                        DirCharNameName = remParties.dirCharName.DirCharNameName,
                        DirCharSeasonID = remParties.DirCharSeasonID,
                        DirCharSeasonName = remParties.dirCharSeason.DirCharSeasonName,
                        DirCharSexID = remParties.DirCharSexID,
                        DirCharSexName = remParties.dirCharSex.DirCharSexName,
                        DirCharSizeID = remParties.DirCharSizeID,
                        DirCharSizeName = remParties.dirCharSize.DirCharSizeName,
                        DirCharStyleID = remParties.DirCharStyleID,
                        DirCharStyleName = remParties.dirCharStyle.DirCharStyleName,
                        DirCharTextureID = remParties.DirCharTextureID,
                        DirCharTextureName = remParties.dirCharTexture.DirCharTextureName,
                        DirChar =
                            remParties.dirCharColour.DirCharColourName + " " +
                            remParties.dirCharMaterial.DirCharMaterialName + " " +
                            remParties.dirCharName.DirCharNameName + " " +
                            remParties.dirCharSeason.DirCharSeasonName + " " +
                            remParties.dirCharSex.DirCharSexName + " " +
                            remParties.dirCharSize.DirCharSizeName + " " +
                            remParties.dirCharStyle.DirCharStyleName + " " +
                            remParties.dirCharTexture.DirCharTextureName,
                        //SerialNumber = remParties.SerialNumber,
                        //Barcode = remParties.Barcode,


                        DirCurrencyID = remParties.DirCurrencyID,
                        DirCurrencyName = remParties.dirCurrency.DirCurrencyName,
                        DirCurrencyRate = remParties.dirCurrency.DirCurrencyRate,
                        DirCurrencyMultiplicity = remParties.dirCurrency.DirCurrencyMultiplicity,

                        DirVatValue = remParties.DirVatValue,
                        //DirWarehouseID = remParties.DirWarehouseID,
                        //DirWarehouseName = remParties.dirWarehouse.DirWarehouseName,
                        //ListDocNameRu = remParties.doc.listObject.ListObjectNameRu,
                        PriceVAT = remParties.PriceVAT,           //PriceVAT = Math.Round(remParties.PriceVAT, sysSetting.FractionalPartInPrice),
                        PriceCurrency = remParties.PriceCurrency, //PriceCurrency = Math.Round(remParties.PriceCurrency, sysSetting.FractionalPartInPrice),

                        Quantity = remParties.Remnant,
                        Quantity_WriteOff = remParties.Remnant,
                        Quantity_Purch = 0,
                        //Quantity = remParties.Quantity,
                        //Remnant = remParties.Remnant,
                        //Reserve = remParties.Reserve


                        MarkupRetail = ((remParties.PriceRetailVAT - remParties.PriceVAT) / remParties.PriceVAT) * 100 == null ? 0
                            :
                                       Math.Round(((remParties.PriceRetailVAT - remParties.PriceVAT) / remParties.PriceVAT) * 100, sysSetting.FractionalPartInPrice),
                        PriceRetailVAT = remParties.PriceRetailVAT,
                        PriceRetailCurrency = (remParties.PriceRetailVAT * remParties.dirCurrency.DirCurrencyRate) / remParties.dirCurrency.DirCurrencyMultiplicity == null ? 0
                            :
                                              Math.Round((remParties.PriceRetailVAT * remParties.dirCurrency.DirCurrencyRate) / remParties.dirCurrency.DirCurrencyMultiplicity, sysSetting.FractionalPartInPrice),

                        MarkupWholesale = ((remParties.PriceWholesaleVAT - remParties.PriceVAT) / remParties.PriceVAT) * 100 == null ? 0
                            :
                                          Math.Round(((remParties.PriceWholesaleVAT - remParties.PriceVAT) / remParties.PriceVAT) * 100, sysSetting.FractionalPartInPrice),
                        PriceWholesaleVAT = remParties.PriceWholesaleVAT,
                        PriceWholesaleCurrency = (remParties.PriceWholesaleVAT * remParties.dirCurrency.DirCurrencyRate) / remParties.dirCurrency.DirCurrencyMultiplicity == null ? 0
                            :
                                                 Math.Round((remParties.PriceWholesaleVAT * remParties.dirCurrency.DirCurrencyRate) / remParties.dirCurrency.DirCurrencyMultiplicity, sysSetting.FractionalPartInPrice),

                        MarkupIM = ((remParties.PriceIMVAT - remParties.PriceVAT) / remParties.PriceVAT) * 100 == null ? 0
                            :
                                   Math.Round(((remParties.PriceIMVAT - remParties.PriceVAT) / remParties.PriceVAT) * 100, sysSetting.FractionalPartInPrice),
                        PriceIMVAT = remParties.PriceIMVAT,
                        PriceIMCurrency = (remParties.PriceIMVAT * remParties.dirCurrency.DirCurrencyRate) / remParties.dirCurrency.DirCurrencyMultiplicity == null ? 0
                            :
                                          Math.Round((remParties.PriceIMVAT * remParties.dirCurrency.DirCurrencyRate) / remParties.dirCurrency.DirCurrencyMultiplicity, sysSetting.FractionalPartInPrice),

                        DirNomenMinimumBalance = remParties.DirNomenMinimumBalance,

                        DirEmployeeName = remParties.doc.dirEmployee.DirEmployeeName,

                        //Причина возврата

                        /*
                         * DirDescriptionID = remParties.DirDescriptionID,
                         * DirDescriptionName = remParties.dirDescription.DirDescriptionName,
                         * DirReturnTypeID = remParties.DirReturnTypeID,
                         * DirReturnTypeName = remParties.dirReturnType.DirReturnTypeName,
                         *
                         *
                         * SysGenID = remParties.dirNomen.SysGenID,
                         * //SysGenIDPatch = @"UsersTemp/UserImage/" + field.DirCustomersID + "_" + x.SysGenID + ".jpg"
                         * SysGenIDPatch = remParties.dirNomen.SysGenID == null ? "" :
                         * @"/Users/user_" + field.DirCustomersID + "/" + remParties.dirNomen.SysGenID + ".jpg"
                         */
                    }
                        );

                    #endregion


                    #region Отправка JSON

                    //А вдруг к-во меньше Лимита, тогда показать не общее к-во, а реальное!
                    int dirCount = query.Count();

                    if (_params.queryIn == "DocActWriteOffTab")
                    {
                        dynamic collectionWrapper = new
                        {
                            sucess            = true,
                            total             = dirCount,
                            DocActWriteOffTab = query
                        };
                        return(await Task.Run(() => Ok(collectionWrapper)));
                    }
                    else //if (_params.queryIn == "DocInventoryTab")
                    {
                        dynamic collectionWrapper = new
                        {
                            sucess          = true,
                            total           = dirCount,
                            DocInventoryTab = query
                        };
                        return(await Task.Run(() => Ok(collectionWrapper)));
                    }

                    #endregion
                }


                #endregion
            }
            catch (Exception ex)
            {
                return(Ok(returnServer.Return(false, exceptionEntry.Return(ex))));
            }
        }