示例#1
0
        static void ReadWorkTypes()
        {
            string CatName = "";

            for (int i = 0; i < ar.Count; i++)
            {
                if (counts[i] == 1)
                {
                    CatName = ar[i][0];
                }
                else
                {
                    WorkTypeClass work = new WorkTypeClass();
                    work.Article = ar[i][0];
                    if (ar[i][1] != null)
                    {
                        work.parametrs = ar[i][1].Split(',').ToList();
                    }
                    work.setPriceFunc(ar[i][2]);
                    work.setCategory(CatName);
                    if (DelegateAssemblyService.isCreatedCorrect(work) && !JSONSerializeService.Contains(work))
                    {
                        JSONSerializeService.AddToOutput(work);
                    }
                }
            }
            JSONSerializeService.Save();
        }
        public static void Edit(WorkTypeClass work, WorkTypeClass newwork)
        {
            RemovefromList(work, true);
            bool check = false;

            foreach (WorksTypeTree comp in treelist)
            {
                if (comp.WorksList.CheckBoxes)
                {
                    WorkTypeClass oldwork = comp.CheckedWorks.Find(w => w.FullEquals(work));
                    if (oldwork != null)
                    {
                        check = true;
                        comp.CheckedWorks.Remove(oldwork);
                        WorkTypeClass newwork1 = newwork.Clone() as WorkTypeClass;
                        if (oldwork.parametrs.Count == newwork.parametrs.Count)
                        {
                            oldwork.ParametersValue.CopyTo(newwork1.ParametersValue, 0);
                        }
                        comp.CheckedWorks.Add(newwork1 as WorkTypeClass);
                    }
                }
            }
            AddtoList(newwork, check);
        }
 public static void RemovefromList(WorkTypeClass work, bool edit = false)
 {
     foreach (WorksTypeTree comp in treelist)
     {
         TreeNodeCollection tree     = comp.WorksList.Nodes[0].Nodes;
         TreeNode           itemNode = null;
         foreach (TreeNode node in tree)
         {
             itemNode = comp.FromID(work, node);
             if (itemNode != null)
             {
                 break;
             }
         }
         if (!edit)
         {
             WorkTypeClass del;
             if ((del = comp.CheckedWorks.Find(w => w.Equals(work))) != null)
             {
                 comp.CheckedWorks.Remove(del);
             }
         }
         tree[WorkTypeClass.CategoryNames[work.category]].Nodes.Remove(itemNode);
     }
 }
示例#4
0
 private void Remove(object sender, EventArgs e)
 {
     if (AdminWorks.WorksList.SelectedNode != null && AdminWorks.WorksList.SelectedNode.Tag is WorkTypeClass)
     {
         WorkTypeClass work  = AdminWorks.WorksList.SelectedNode.Tag as WorkTypeClass;
         WorkTypeClass work1 = JSONSerializeService.OutputItems.Find(w => w.FullEquals(work));
         WorksTypeTree.RemovefromList(work);
         JSONSerializeService.OutputItems.Remove(work1);
         JSONSerializeService.Save();
     }
 }
        public void isCreatedCorrect_workDelegateNameNotChanged()
        {
            WorkTypeClass InpWork = new WorkTypeClass(100);

            InpWork.Article  = "test";
            InpWork.category = WorkTypeClass.Category.other;

            string expected = null;

            DelegateAssemblyService.isCreatedCorrect(InpWork);
            Assert.AreEqual(expected, InpWork.delegateName);
        }
示例#6
0
        public void FullEquals()
        {
            //arrange
            WorkTypeClass work  = new WorkTypeClass();
            WorkTypeClass work1 = work.Clone() as WorkTypeClass;

            //act
            bool actual = work.FullEquals(work1);

            //assert

            Assert.AreEqual(true, actual);
        }
示例#7
0
        public void AddToOutput_AddNewWork()
        {
            WorkTypeClass work = new WorkTypeClass();

            work.Article  = "Test";
            work.category = WorkTypeClass.Category.other;
            work.setPriceFunc("0");

            bool expected = true;

            bool result = JSONSerializeService.AddToOutput(work);

            Assert.AreEqual(expected, result);
        }
 public static void AddtoList(WorkTypeClass work, bool check = false)
 {
     foreach (WorksTypeTree comp in treelist)
     {
         TreeNodeCollection tree    = comp.WorksList.Nodes[0].Nodes;
         TreeNode           newnode = new TreeNode();
         newnode.Text = work.Article;
         newnode.Name = work.ToString();
         newnode.Tag  = work;
         if (check)
         {
             newnode.Checked = check;
         }
         tree[WorkTypeClass.CategoryNames[work.category]].Nodes.Add(newnode);
     }
 }
 public TreeNode FromID(WorkTypeClass work, TreeNode rootNode)
 {
     foreach (TreeNode node in rootNode.Nodes)
     {
         if (node.Tag is WorkTypeClass && node.Tag as WorkTypeClass == work)
         {
             return(node);
         }
         TreeNode next = FromID(work, node);
         if (next != null)
         {
             return(next);
         }
     }
     return(null);
 }
        private void WorksList_AfterCheck(object sender, TreeViewEventArgs e)
        {
            TreeNode      node  = e.Node;
            bool          check = node.Checked;
            WorkTypeClass work  = null;

            if (node.Tag is WorkTypeClass)
            {
                work = node.Tag as WorkTypeClass;
            }
            if (work != null)
            {
                if (check)
                {
                    if (!CheckedWorks.Exists(w => w.Equals(work)))
                    {
                        CheckedWorks.Add((WorkTypeClass)work.Clone());
                    }
                }
                else
                {
                    CheckedWorks.Remove(CheckedWorks.Find(x => x.FullEquals(work)));
                }
                if (check)
                {
                    if (!CheckedCats.Contains(work.category))
                    {
                        CheckedCats.Add(work.category);
                    }
                }
                else
                {
                    CheckedCats.Remove(work.category);
                }
                CheckedNodesChanged?.Invoke(node, new EventArgs());
            }
        }
示例#11
0
        private void Refresh(object sender, EventArgs e)
        {
            Regex reg = new Regex(@"[0-9]+");

            finaltable.Rows.Clear();
            RoomResT.Text = "";
            double[] results = new double[4];
            foreach (Room room in Rooms)
            {
                RoomResT.Text +=
                    room.Title + "\n" +
                    "Периметр пола: " + room.BottomPerimeter.ToString("#.##") + "\n" +
                    "Площадь потолка и пола: " + room.Area.ToString("#.##") + "\n" +
                    "Периметр потолка: " + room.Perimeter.ToString("#.##") + "\n" +
                    "Площадь стен: " + room.CommonArea.ToString("#.##") + "\n";
                results[0] += room.BottomPerimeter;
                results[1] += room.Area;
                results[2] += room.Perimeter;
                results[3] += room.CommonArea;
            }
            RoomResT.Text += "==Общее==" + "\n" +
                             "Периметр пола:" + results[0].ToString("#.##") + "\n" +
                             "Площадь потолка и пола: " + results[1].ToString("#.##") + "\n" +
                             "Периметр потолка: " + results[2].ToString("#.##") + "\n" +
                             "Площадь стен:" + results[3].ToString("#.##");
            SummT.Text = "========\n";
            double commonsumm = 0;

            for (int i = 0; i < Rooms.Count; i++)
            {
                SummT.Text += Rooms[i].Title + "\nСумма:" + Rooms[i].Summ.ToString("#.##") + "\n";
                commonsumm += Rooms[i].Summ;
            }
            SummT.Text += "========" + "\nОбщая сумма:" + commonsumm.ToString("#.##");
            if (Convert.ToBoolean(ConfigWorksService.getValue(ConfigWorksService.Options.ReportRooms)))
            {
                double commonsum = 0;
                foreach (Room room in Rooms)
                {
                    double sum = 0;
                    finaltable.Rows.Add(new string[] { room.Title, "", "", "" });
                    finaltable.Rows.Add(new string[] { "Площадь стен", room.CommonArea.ToString("#.##"), "", "" });
                    finaltable.Rows.Add(new string[] { "Площадь пола", room.Area.ToString("#.##"), "", "" });
                    finaltable.Rows.Add(new string[] { "Периметр пола", room.BottomPerimeter.ToString("#.##"), "", "" });
                    foreach (WorkTypeClass work in room.CheckedWorks)
                    {
                        finaltable.Rows.Add(new string[] { work.Article, work.Quantity, reg.Match(work.Formula, 0).Value, work.Price });
                        sum += work.GetPrice();
                    }
                    finaltable.Rows.Add(new string[] { "", "", "Сумма", sum.ToString("#.##") });
                    commonsum += sum;
                }
                finaltable.Rows.Add(new string[] { "", "", "Общая сумма", commonsum.ToString("#.##") });
                foreach (DataGridViewRow row in finaltable.Rows)
                {
                    row.ReadOnly = true;
                }
                finaltable.Rows[finaltable.RowCount - 1].ReadOnly = false;
            }
            else
            {
                //сумма для каждой работы
                Dictionary <WorkTypeClass, double> everyworksumm = new Dictionary <WorkTypeClass, double>();
                //сумма параметров
                Dictionary <WorkTypeClass, double[]> paramssumm = new Dictionary <WorkTypeClass, double[]>();
                double commonsum = 0;
                for (int i = 0; i < Rooms.Count; i++)
                {
                    for (int j = 0; j < Rooms[i].CheckedWorks.Count; j++)
                    {
                        WorkTypeClass work = Rooms[i].CheckedWorks[j];
                        if (work.ParametersValue.Length == 0)
                        {
                            work.ParametersValue = new double[work.parametrs.Count];
                        }
                        //проверяем содержит
                        if (everyworksumm.FirstOrDefault(x => x.Key.Article == work.Article && x.Key.category == work.category).Key == null)
                        {
                            everyworksumm.Add(work, 0);
                            paramssumm.Add(work, new double[work.ParametersValue.Length]);
                        }
                        if (work.ParametersValue.Length == 0)
                        {
                            work.ParametersValue = new double[work.parametrs.Count];
                        }
                        for (int k = 0; k < Rooms[i].CheckedWorks[j].parametrs.Count; k++)
                        {
                            paramssumm.First(x => x.Key.Article == work.Article && x.Key.category == work.category).Value[k] += work.ParametersValue[k];
                        }
                        everyworksumm[everyworksumm.First(x => x.Key.Article == work.Article && x.Key.category == work.category).Key] += work.GetPrice();
                        commonsum += work.GetPrice();
                    }
                }
                foreach (var pair in everyworksumm)
                {
                    string quantity = "";
                    for (int i = 0; i < paramssumm[pair.Key].Length; i++)
                    {
                        quantity += paramssumm[pair.Key][i] + " " + pair.Key.parametrs[i] + "\n";
                    }

                    finaltable.Rows.Add(new string[] { pair.Key.Article, quantity, reg.Match(pair.Key.Formula, 0).Value, pair.Value.ToString("#.##") });
                    finaltable.Rows[finaltable.RowCount - 2].ReadOnly = true;
                }
                DataGridViewRow row = new DataGridViewRow();
                finaltable.Rows.Add(new string[] { "", "", "Сумма", commonsum.ToString("#.##") });
                finaltable.Rows[finaltable.RowCount - 2].ReadOnly = false;
            }
        }
示例#12
0
        public void RefrehTable(object sender, EventArgs e)
        {
            //Area.Text = $"Площадь:{Room.Area}\nПериметр:{Room.Perimeter}\nПлощадь стен:{Room.CommonArea}";
            DataGridView worktable;

            switch (RoomTypeSelect.SelectedIndex)
            {
            case 0: worktable = this.worktable; break;

            case 1: worktable = this.NonStandardWorkTable; break;

            default: worktable = null; break;
            }
            if (sender is TreeNode && (sender as TreeNode).Checked)
            {
                WorkTypeClass work = worksTypeTree1.CheckedWorks.Find(w => w.Equals(((sender as TreeNode).Tag as WorkTypeClass)));
                if (work.ParametersValue.Length != 0)
                {
                    int i1 = 0;
                    if (Room.GetAreaFromCat(work.category) != -1)
                    {
                        work.ParametersValue[0] = Room.GetAreaFromCat(work.category);
                        i1++;
                    }
                    for (int i = i1; !work.IsFixedPrice && i < work.ParametersValue.Length; i++)
                    {
                        inputparams param = new inputparams();
                        param.WorkTitle.Text = work.Article;
                        param.Paramname.Text = work.parametrs[i];
                        Classes.Functions.CenterForm(param, ParentForm);
                        param.ShowDialog();
                        if (param.Paramname.Text == "")
                        {
                            param.Paramname.Text = "1";
                        }
                        work.ParametersValue[i] = double.Parse(param.TextBox.Text);
                    }
                    work.Quantity = work.getQuantity();
                }
            }
            else
            {
                foreach (WorkTypeClass work in worksTypeTree1.CheckedWorks)
                {
                    if (Room.GetAreaFromCat(work.category) != -1 && work.ParametersValue.Length != 0)
                    {
                        work.ParametersValue[0] = Room.GetAreaFromCat(work.category);
                    }
                    work.Quantity = work.getQuantity();
                }
            }
            BindingSource source = new BindingSource();

            source.DataSource              = worksTypeTree1.CheckedWorks;
            worktable.DataBindingComplete += (send, ea) =>
            {
                foreach (DataGridViewRow dgvr in worktable.Rows)
                {
                    WorkTypeClass work = dgvr.DataBoundItem as WorkTypeClass;
                    if (Room.GetAreaFromCat(work.category) == -1 || work.ParametersValue.Length > 1)
                    {
                        dgvr.DefaultCellStyle.BackColor = System.Drawing.Color.LightGray;
                    }
                }
            };
            string[] names = new string[4];
            names[0] = "Title";
            names[1] = "Count";
            names[2] = "Price";
            names[3] = "Summ";
            if (worktable == NonStandardWorkTable)
            {
                for (int i = 0; i < names.Length; i++)
                {
                    names[i] += "1";
                }
            }
            worktable.DataSource = source;
            worktable.Columns[names[0]].DisplayIndex     = 0;
            worktable.Columns[names[1]].DisplayIndex     = 1;
            worktable.Columns[names[2]].DisplayIndex     = 2;
            worktable.Columns[names[3]].DisplayIndex     = 3;
            worktable.Columns[names[0]].DataPropertyName = "Article";
            worktable.Columns[names[1]].DataPropertyName = "Quantity";
            worktable.Columns[names[2]].DataPropertyName = "Formula";
            worktable.Columns[names[3]].DataPropertyName = "Price";
            for (int i = 5; i < worktable.ColumnCount; i++)
            {
                worktable.Columns[i].Visible = false;
            }
        }