/// <summary>
        ///     Метод, вызываемый вместе с сохранением документа
        /// </summary>
        private void SavePositionsRoles(bool reloadPostions, List <DBCommand> cmds = null)
        {
            var positionRoles0 = DocumentPosition <PositionRole> .LoadByDocId(int.Parse(Id));

            positionRoles0.ForEach(delegate(PositionRole p0)
            {
                var p = PositionRoles.FirstOrDefault(x => x.Id == p0.Id);
                if (p == null)
                {
                    p0.Delete(false);
                }
            });

            PositionRoles.ForEach(delegate(PositionRole p)
            {
                if (string.IsNullOrEmpty(p.Id))
                {
                    p.DocumentId = int.Parse(Id);
                    p.Save(reloadPostions, cmds);
                    return;
                }

                var p0 =
                    positionRoles0.FirstOrDefault(
                        x => x.Id == p.Id && (x.RoleId != p.RoleId || x.PersonId != p.PersonId));
                if (p0 != null)
                {
                    p.Save(reloadPostions, cmds);
                }
            });
        }
        /// <summary>
        ///     Метод, вызываемый вместе с сохранением документа
        /// </summary>
        private void SavePositionsCommonFolders(bool reloadPostions, List <DBCommand> cmds)
        {
            var positionCommonFolders0 = DocumentPosition <PositionCommonFolder> .LoadByDocId(int.Parse(Id));

            positionCommonFolders0.ForEach(delegate(PositionCommonFolder p0)
            {
                var p = PositionCommonFolders.FirstOrDefault(x => x.Id == p0.Id);
                if (p == null)
                {
                    p0.Delete(false);
                }
            });

            PositionCommonFolders.ForEach(delegate(PositionCommonFolder p)
            {
                if (string.IsNullOrEmpty(p.Id))
                {
                    p.DocumentId = int.Parse(Id);
                    p.Save(reloadPostions, cmds);
                    return;
                }

                var p0 = positionCommonFolders0.FirstOrDefault(x => x.Id == p.Id && x.ChangedTime != p.ChangedTime);
                if (p0 != null)
                {
                    p.Save(reloadPostions, cmds);
                }
            });
        }
        /// <summary>
        ///     Сохранение позиций документа
        /// </summary>
        public void SaveDocumentPositions(bool reloadPostions, List <DBCommand> cmds = null)
        {
            var documentPosition = DocumentPosition <DogovorPosition> .LoadByDocId(int.Parse(Id));

            documentPosition.ForEach(delegate(DogovorPosition p0)
            {
                var p = DogovorPositionList.FirstOrDefault(x => x.Id == p0.PositionId.ToString());
                if (p == null)
                {
                    p0.Delete(false);
                }
            });

            DogovorPositionList.ForEach(delegate(DogovorPosition p)
            {
                if (string.IsNullOrEmpty(p.PositionId.ToString()))
                {
                    p.DocumentId = int.Parse(Id);
                    p.Save(reloadPostions, cmds);
                    return;
                }

                var p0 =
                    documentPosition.FirstOrDefault(
                        x => x.Id == p.Id && x.PositionId != p.PositionId);
                if (p0 != null)
                {
                    p.Save(reloadPostions, cmds);
                }
            });
        }
 /// <summary>
 ///     Инициализация списка PositionAdvancedGrants и загрузка позиций ПозицииУказанийИТПрава из БД
 /// </summary>
 public void LoadPositionAdvancedGrants()
 {
     if (Id.IsNullEmptyOrZero())
     {
         PositionAdvancedGrants = new List <PositionAdvancedGrant>();
     }
     else
     {
         PositionAdvancedGrants = DocumentPosition <PositionAdvancedGrant> .LoadByDocId(int.Parse(Id));
     }
 }
 /// <summary>
 ///     Инициализация списка PositionCommonFolders и загрузка позиций ПозицииУказанийИТПапки из БД
 /// </summary>
 public void LoadPositionCommonFolders()
 {
     if (Id.IsNullEmptyOrZero())
     {
         PositionCommonFolders = new List <PositionCommonFolder>();
     }
     else
     {
         PositionCommonFolders = DocumentPosition <PositionCommonFolder> .LoadByDocId(int.Parse(Id));
     }
 }
 /// <summary>
 ///     Инициализация списка PositionTypes и загрузка позиций ПозицииУказанийИТТипыЛиц из БД
 /// </summary>
 public void LoadPositionTypes()
 {
     if (Id.IsNullEmptyOrZero())
     {
         PositionTypes = new List <PositionType>();
     }
     else
     {
         PositionTypes = DocumentPosition <PositionType> .LoadByDocId(int.Parse(Id));
     }
 }
 /// <summary>
 ///     Загрузка позиций документа
 /// </summary>
 private void LoadDogovorPosition()
 {
     if (Id.IsNullEmptyOrZero())
     {
         DogovorPositionList = new List <DogovorPosition>();
     }
     else
     {
         DogovorPositionList = DocumentPosition <DogovorPosition> .LoadByDocId(int.Parse(Id));
     }
 }
Exemple #8
0
        /// <summary>
        ///     ОказанныеУслуги
        /// </summary>
        public void LoadPositionFactUsl(string copyId = "")
        {
            if (Id.IsNullEmptyOrZero())
            {
                if (copyId.IsNullEmptyOrZero())
                {
                    PositionFactUsl = new List <FactUsl>();
                }
                else
                {
                    PositionFactUsl = DocumentPosition <FactUsl> .LoadByDocId(int.Parse(copyId));

                    foreach (var item in PositionFactUsl)
                    {
                        item.Id         = null;
                        item.DocumentId = 0;
                    }
                }
            }
            else
            {
                if (copyId.IsNullEmptyOrZero())
                {
                    PositionFactUsl = DocumentPosition <FactUsl> .LoadByDocId(int.Parse(Id));
                }
                else
                {
                    PositionFactUsl = DocumentPosition <FactUsl> .LoadByDocId(int.Parse(copyId));

                    foreach (var item in PositionFactUsl)
                    {
                        item.Id         = null;
                        item.DocumentId = 0;
                    }
                }
            }
        }
Exemple #9
0
 /// <summary>
 ///     Загрузка Позиции Счетов На Предоплату
 /// </summary>
 public void LoadPositionPrepaymentInvoice()
 {
     PositionPrepaymentInvoice = Id.IsNullEmptyOrZero()
         ? new List <PrepaymentInvoice>()
         : DocumentPosition <PrepaymentInvoice> .LoadByDocId(int.Parse(Id));
 }
Exemple #10
0
        /// <summary>
        ///     Сохранение табличных данных
        /// </summary>
        /// <param name="reloadPostions"></param>
        /// <param name="cmds"></param>
        public void SaveDocumentPositions(bool reloadPostions, List <DBCommand> cmds = null)
        {
            // товары
            var positionMris = DocumentPosition <Mris> .LoadByDocId(int.Parse(Id));

            if (PositionMris != null && PositionMris.Count > 0)
            {
                PositionMris.ForEach(delegate(Mris p0)
                {
                    var p = positionMris.FirstOrDefault(x => x.Id == p0.PositionId.ToString());
                    if (p == null)
                    {
                        p0.Delete(false);
                    }
                });

                PositionMris.ForEach(delegate(Mris p)
                {
                    if (string.IsNullOrEmpty(p.PositionId.ToString()))
                    {
                        p.DocumentId = int.Parse(Id);
                        p.Save(reloadPostions, cmds);
                        return;
                    }

                    var p0 =
                        positionMris.FirstOrDefault(
                            x => x.Id == p.Id && x.PositionId != p.PositionId);
                    if (p0 != null)
                    {
                        p.Save(reloadPostions, cmds);
                    }
                });
            }

            // услуги
            var positionFactUsl = DocumentPosition <FactUsl> .LoadByDocId(int.Parse(Id));

            if (PositionFactUsl != null && PositionFactUsl.Count > 0)
            {
                PositionFactUsl.ForEach(delegate(FactUsl p0)
                {
                    var p = positionFactUsl.FirstOrDefault(x => x.Id == p0.PositionId.ToString());
                    if (p == null)
                    {
                        p0.Delete(false);
                    }
                });

                PositionFactUsl.ForEach(delegate(FactUsl p)
                {
                    if (string.IsNullOrEmpty(p.PositionId.ToString()))
                    {
                        p.DocumentId = int.Parse(Id);
                        p.Save(reloadPostions, cmds);
                        return;
                    }

                    var p0 =
                        positionFactUsl.FirstOrDefault(
                            x => x.Id == p.Id && x.PositionId != p.PositionId);
                    if (p0 != null)
                    {
                        p.Save(reloadPostions, cmds);
                    }
                });
            }
        }
        /// <summary>
        ///     Сохранение позици ПозицииУказанийИТПапки
        /// </summary>
        /// <param name="folders">Список выбранных папок</param>
        /// <param name="reloadPostions">Перезапросить данные о позициях</param>
        public void SavePositionsCommonFoldersByDictionary(Dictionary <string, string> folders, bool reloadPostions)
        {
            //Удаляем те позиции, которых нет в списке
            var positionForClear = new List <PositionCommonFolder>();

            foreach (var p in from p in PositionCommonFolders
                     let f = folders.Where(x => x.Key == p.CommonFolderId.ToString())
                             .Select(x => (KeyValuePair <string, string>?)x)
                             .FirstOrDefault()
                             where f == null
                             select p)
            {
                if (string.IsNullOrEmpty(p.Id))
                {
                    positionForClear.Add(p);
                }
                else
                {
                    p.Delete(false);
                }
            }

            positionForClear.ForEach(
                delegate(PositionCommonFolder p) { PositionCommonFolders.RemoveAll(x => x.GuidId == p.GuidId); });

            //получаем сохраненные позиции
            var cfSaved = DocumentPosition <PositionCommonFolder> .LoadByDocId(int.Parse(Id));


            //сохраняем те выбранные элементы, для которых уже были созданы объекты PositionCommonFolders
            PositionCommonFolders.Where(x => string.IsNullOrEmpty(x.Id)).ToList().ForEach(
                delegate(PositionCommonFolder p)
            {
                if (cfSaved.Count > 0)
                {
                    var cf = cfSaved.FirstOrDefault(x => x.CommonFolderId == p.CommonFolderId);
                    if (cf != null)
                    {
                        return;
                    }
                }

                p.DocumentId = int.Parse(Id);
                p.Save(false);
            });

            //сохраняем те выбранные элементы, для которых не созданы объекты PositionCommonFolders
            foreach (var p in from f in folders
                     let p = PositionCommonFolders.FirstOrDefault(x => x.CommonFolderId.ToString() == f.Key)
                             where p == null
                             select new PositionCommonFolder
            {
                DocumentId = int.Parse(Id),
                CommonFolderId = int.Parse(f.Key),
                CommonFolderName = f.Value
            })
            {
                if (cfSaved.Count > 0)
                {
                    var cf = cfSaved.FirstOrDefault(x => x.CommonFolderId == p.CommonFolderId);
                    if (cf != null)
                    {
                        continue;
                    }
                }

                p.Save(false);
                PositionCommonFolders.Add(p);
            }

            //удаляем те позиции, которых нет в PositionCommonFolders
            cfSaved.ForEach(delegate(PositionCommonFolder p)
            {
                var delP = PositionCommonFolders.FirstOrDefault(x => x.CommonFolderId == p.CommonFolderId);
                if (delP == null)
                {
                    p.Delete(false);
                }
            });

            if (reloadPostions)
            {
                LoadPositionCommonFolders();
            }
        }