Esempio n. 1
0
        //Используется в новых платежах по документу
        internal async Task <DocBankSum> mPutPostDocBankSum_2(
            DbConnectionSklad db,
            DocBankSum docBankSum,
            EntityState entityState         //EntityState.Added, Modified
            )
        {
            //Удалить платеж, но перед этим проверить был ли Z-отчет
            if (docBankSum.DocBankSumID > 0)
            {
                //Получем по "DocBankSumID" предыдущие значения платежа
                Models.Sklad.Doc.DocBankSum docBankSum_OLD = await Task.Run(() => db.DocBankSums.FindAsync(docBankSum.DocBankSumID));

                //Удаляем платеж
                db.Entry(docBankSum_OLD).State = EntityState.Deleted;
                await Task.Run(() => db.SaveChangesAsync());
            }


            //По кассе получаем
            Models.Sklad.Dir.DirBank dirBank = db.DirBanks.Find(docBankSum.DirBankID);

            //Проверка
            //1. В зависимости от "DirBankSumTypeID" сумма с "+" или с "-"
            Models.Sklad.Dir.DirBankSumType dirBankSumType = db.DirBankSumTypes.Find(docBankSum.DirBankSumTypeID);
            docBankSum.DocBankSumSum = dirBankSumType.Sign * docBankSum.DocBankSumSum;
            //2. Если изъятие из кассы и сумма в кассе меньше чем надо ихъять
            if (dirBankSumType.Sign < 0 && dirBank.DirBankSum < Math.Abs(docBankSum.DocBankSumSum))
            {
                throw new System.InvalidOperationException(
                          Classes.Language.Sklad.Language.msg27_4 + dirBank.DirBankSum +
                          Classes.Language.Sklad.Language.msg27_5 + Math.Abs(docBankSum.DocBankSumSum) +
                          Classes.Language.Sklad.Language.msg27_6
                          );
            }

            //4. Сохранение
            db.Entry(docBankSum).State = entityState;
            await Task.Run(() => db.SaveChangesAsync());

            //5. Ретурн
            return(docBankSum);
        }
Esempio n. 2
0
        //Сохранение
        internal async Task <DocBankSum> mPutPostDocBankSum(
            DbConnectionSklad db,
            DocBankSum docBankSum,
            EntityState entityState         //EntityState.Added, Modified
            )
        {
            //1. Дата операции
            DateTime DocBankSumDate = DateTime.Now;

            docBankSum.DocBankSumDate = DocBankSumDate;
            docBankSum.DateOnly       = Convert.ToDateTime(DocBankSumDate.ToString("yyyy-MM-dd"));
            //2. Валюта
            //2.1. По кассе получаем
            Models.Sklad.Dir.DirBank dirBank = db.DirBanks.Find(docBankSum.DirBankID);
            //2.2. Получаем Курсы
            Models.Sklad.Dir.DirCurrency dirCurrency = db.DirCurrencies.Find(dirBank.DirCurrencyID);
            docBankSum.DirCurrencyID           = dirCurrency.DirCurrencyID;
            docBankSum.DirCurrencyRate         = dirCurrency.DirCurrencyRate;
            docBankSum.DirCurrencyMultiplicity = dirCurrency.DirCurrencyMultiplicity;

            //3. Проверка
            //3.1. В зависимости от "DirBankSumTypeID" сумма с "+" или с "-"
            Models.Sklad.Dir.DirBankSumType dirBankSumType = db.DirBankSumTypes.Find(docBankSum.DirBankSumTypeID);
            docBankSum.DocBankSumSum = dirBankSumType.Sign * docBankSum.DocBankSumSum;
            //3.2. Если изъятие из кассы и сумма в кассе меньше чем надо ихъять
            if (dirBankSumType.Sign < 0 && dirBank.DirBankSum < Math.Abs(docBankSum.DocBankSumSum))
            {
                throw new System.InvalidOperationException(
                          Classes.Language.Sklad.Language.msg27_4 + dirBank.DirBankSum +
                          Classes.Language.Sklad.Language.msg27_5 + Math.Abs(docBankSum.DocBankSumSum) +
                          Classes.Language.Sklad.Language.msg27_6
                          );
            }

            //4. Сохранение
            db.Entry(docBankSum).State = entityState;
            await Task.Run(() => db.SaveChangesAsync());

            //5. Ретурн
            return(docBankSum);
        }
Esempio n. 3
0
        public async Task <IHttpActionResult> PutDirBank(int id, DirBank dirBank)
        {
            #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, "RightDirBanks"));

            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);
            }
            if (id != dirBank.DirBankID)
            {
                return(Ok(returnServer.Return(false, Classes.Language.Sklad.Language.msg8)));                         //return BadRequest();
            }
            //Подстановки - некоторые поля надо заполнить, если они не заполены
            //dirBank.Substitute();

            #endregion


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

            try
            {
                //При сохранении проблема с суммой: становится == 0
                Models.Sklad.Dir.DirBank dirBank_copy = await dbRead.DirBanks.FindAsync(id);

                dirBank.DirBankSum = dirBank_copy.DirBankSum;

                db.Entry(dirBank).State = EntityState.Modified;
                await Task.Run(() => db.SaveChangesAsync());


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

                Models.Sklad.Sys.SysJourDisp sysJourDisp = new Models.Sklad.Sys.SysJourDisp();
                sysJourDisp.DirDispOperationID = 4; //Изменение записи
                sysJourDisp.DirEmployeeID      = field.DirEmployeeID;
                sysJourDisp.ListObjectID       = ListObjectID;
                sysJourDisp.TableFieldID       = dirBank.DirBankID;
                sysJourDisp.Description        = "";
                try { sysJourDispsController.mPutPostSysJourDisps(db, sysJourDisp, EntityState.Added); } catch (Exception ex) { }

                #endregion


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

            #endregion
        }