Browse Source

Добавьте файлы проекта.

matvejskripov 3 years ago
parent
commit
e5073fd25b
62 changed files with 7965 additions and 0 deletions
  1. 31 0
      ProOdezhda.sln
  2. 38 0
      ProOdezhda/App.config
  3. 16 0
      ProOdezhda/App.xaml
  4. 17 0
      ProOdezhda/App.xaml.cs
  5. 29 0
      ProOdezhda/CATEGORY_C.cs
  6. 29 0
      ProOdezhda/CATEGORY_N.cs
  7. 49 0
      ProOdezhda/COUNTERPARTY.cs
  8. 25 0
      ProOdezhda/DISPATCH.cs
  9. 270 0
      ProOdezhda/Functionality/AdditionalFunctionality.cs
  10. 209 0
      ProOdezhda/Functionality/MainFunctionality.cs
  11. BIN
      ProOdezhda/Images/Logo.png
  12. 70 0
      ProOdezhda/MainWindow.xaml
  13. 41 0
      ProOdezhda/MainWindow.xaml.cs
  14. 46 0
      ProOdezhda/Model1.Context.cs
  15. 636 0
      ProOdezhda/Model1.Context.tt
  16. 10 0
      ProOdezhda/Model1.Designer.cs
  17. 9 0
      ProOdezhda/Model1.cs
  18. 1180 0
      ProOdezhda/Model1.edmx
  19. 46 0
      ProOdezhda/Model1.edmx.diagram
  20. 733 0
      ProOdezhda/Model1.tt
  21. 37 0
      ProOdezhda/NOMENCLATURE.cs
  22. 37 0
      ProOdezhda/ORDER.cs
  23. 27 0
      ProOdezhda/ORDER_LIST.cs
  24. 29 0
      ProOdezhda/POSITION.cs
  25. 23 0
      ProOdezhda/PURCHASE_INVOICE.cs
  26. 329 0
      ProOdezhda/ProOdezhda.csproj
  27. 55 0
      ProOdezhda/Properties/AssemblyInfo.cs
  28. 70 0
      ProOdezhda/Properties/Resources.Designer.cs
  29. 117 0
      ProOdezhda/Properties/Resources.resx
  30. 29 0
      ProOdezhda/Properties/Settings.Designer.cs
  31. 7 0
      ProOdezhda/Properties/Settings.settings
  32. 24 0
      ProOdezhda/RATING.cs
  33. 35 0
      ProOdezhda/REQUEST.cs
  34. 27 0
      ProOdezhda/REQUEST_LIST.cs
  35. 31 0
      ProOdezhda/RETAIL_REPORT.cs
  36. 27 0
      ProOdezhda/RETAIL_REPORT_LIST.cs
  37. 30 0
      ProOdezhda/TYPE.cs
  38. 35 0
      ProOdezhda/USER.cs
  39. 22 0
      ProOdezhda/USER_ACTIVITY.cs
  40. 90 0
      ProOdezhda/Windows/AdditionalWin/Agent/WinDISPATCH.xaml
  41. 86 0
      ProOdezhda/Windows/AdditionalWin/Agent/WinDISPATCH.xaml.cs
  42. 107 0
      ProOdezhda/Windows/AdditionalWin/Agent/WinREQUEST.xaml
  43. 118 0
      ProOdezhda/Windows/AdditionalWin/Agent/WinREQUEST.xaml.cs
  44. 103 0
      ProOdezhda/Windows/AdditionalWin/Agent/WinRETAIL_REPORT.xaml
  45. 107 0
      ProOdezhda/Windows/AdditionalWin/Agent/WinRETAIL_REPORT.xaml.cs
  46. 107 0
      ProOdezhda/Windows/AdditionalWin/Supplier/WinORDER.xaml
  47. 125 0
      ProOdezhda/Windows/AdditionalWin/Supplier/WinORDER.xaml.cs
  48. 90 0
      ProOdezhda/Windows/AdditionalWin/Supplier/WinPURCHASE_INVOICE.xaml
  49. 87 0
      ProOdezhda/Windows/AdditionalWin/Supplier/WinPURCHASE_INVOICE.xaml.cs
  50. 86 0
      ProOdezhda/Windows/AdditionalWin/WinCOUNTERPARTY.xaml
  51. 147 0
      ProOdezhda/Windows/AdditionalWin/WinCOUNTERPARTY.xaml.cs
  52. 63 0
      ProOdezhda/Windows/AdditionalWin/WinRegistration.xaml
  53. 80 0
      ProOdezhda/Windows/AdditionalWin/WinRegistration.xaml.cs
  54. 991 0
      ProOdezhda/Windows/MainWin/WorkWindow.xaml
  55. 261 0
      ProOdezhda/Windows/MainWin/WorkWindow.xaml.cs
  56. 17 0
      ProOdezhda/Windows/Test/TestWin.xaml
  57. 28 0
      ProOdezhda/Windows/Test/TestWin.xaml.cs
  58. 36 0
      ProOdezhdaTest/App.Config
  59. 522 0
      ProOdezhdaTest/ProOdezhdaTest.cs
  60. 187 0
      ProOdezhdaTest/ProOdezhdaTest.csproj
  61. 20 0
      ProOdezhdaTest/Properties/AssemblyInfo.cs
  62. 32 0
      ProOdezhdaTest/packages.config

+ 31 - 0
ProOdezhda.sln

@@ -0,0 +1,31 @@
+
+Microsoft Visual Studio Solution File, Format Version 12.00
+# Visual Studio Version 16
+VisualStudioVersion = 16.0.31829.152
+MinimumVisualStudioVersion = 10.0.40219.1
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ProOdezhda", "ProOdezhda\ProOdezhda.csproj", "{DD20B3D5-3680-4500-BD9B-EAB310E5C770}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ProOdezhdaTest", "ProOdezhdaTest\ProOdezhdaTest.csproj", "{B4C278C1-E22A-4B64-B57E-AACCC3CE4868}"
+EndProject
+Global
+	GlobalSection(SolutionConfigurationPlatforms) = preSolution
+		Debug|Any CPU = Debug|Any CPU
+		Release|Any CPU = Release|Any CPU
+	EndGlobalSection
+	GlobalSection(ProjectConfigurationPlatforms) = postSolution
+		{DD20B3D5-3680-4500-BD9B-EAB310E5C770}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{DD20B3D5-3680-4500-BD9B-EAB310E5C770}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{DD20B3D5-3680-4500-BD9B-EAB310E5C770}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{DD20B3D5-3680-4500-BD9B-EAB310E5C770}.Release|Any CPU.Build.0 = Release|Any CPU
+		{B4C278C1-E22A-4B64-B57E-AACCC3CE4868}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{B4C278C1-E22A-4B64-B57E-AACCC3CE4868}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{B4C278C1-E22A-4B64-B57E-AACCC3CE4868}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{B4C278C1-E22A-4B64-B57E-AACCC3CE4868}.Release|Any CPU.Build.0 = Release|Any CPU
+	EndGlobalSection
+	GlobalSection(SolutionProperties) = preSolution
+		HideSolutionNode = FALSE
+	EndGlobalSection
+	GlobalSection(ExtensibilityGlobals) = postSolution
+		SolutionGuid = {D6ECF57E-7385-4BA8-8863-C561A0EFFCA2}
+	EndGlobalSection
+EndGlobal

+ 38 - 0
ProOdezhda/App.config

@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="utf-8"?>
+<configuration>
+  <configSections>
+    <section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
+  </configSections>
+  <startup>
+    <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.7.2" />
+  </startup>
+  <connectionStrings>
+    <add name="ProOdezhdaEntities" connectionString="metadata=res://*/Model1.csdl|res://*/Model1.ssdl|res://*/Model1.msl;provider=System.Data.SqlClient;provider connection string=&quot;data source=DESKTOP-7CPP4TJ\SQLEXPRESS;initial catalog=ProOdezhda;integrated security=True;MultipleActiveResultSets=True;App=EntityFramework&quot;" providerName="System.Data.EntityClient" />
+  </connectionStrings>
+  <entityFramework>
+    <defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlConnectionFactory, EntityFramework" />
+    <providers>
+      <provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />
+    </providers>
+  </entityFramework>
+  <runtime>
+    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
+      <dependentAssembly>
+        <assemblyIdentity name="FluentMigrator.Runner.Core" publicKeyToken="aacfc7de5acabf05" culture="neutral" />
+        <bindingRedirect oldVersion="0.0.0.0-3.3.1.0" newVersion="3.3.1.0" />
+      </dependentAssembly>
+      <dependentAssembly>
+        <assemblyIdentity name="FluentMigrator.Abstractions" publicKeyToken="aacfc7de5acabf05" culture="neutral" />
+        <bindingRedirect oldVersion="0.0.0.0-3.3.1.0" newVersion="3.3.1.0" />
+      </dependentAssembly>
+      <dependentAssembly>
+        <assemblyIdentity name="FluentMigrator.Runner.SqlServer" publicKeyToken="aacfc7de5acabf05" culture="neutral" />
+        <bindingRedirect oldVersion="0.0.0.0-3.3.1.0" newVersion="3.3.1.0" />
+      </dependentAssembly>
+      <dependentAssembly>
+        <assemblyIdentity name="System.ValueTuple" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
+        <bindingRedirect oldVersion="0.0.0.0-4.0.3.0" newVersion="4.0.3.0" />
+      </dependentAssembly>
+    </assemblyBinding>
+  </runtime>
+</configuration>

+ 16 - 0
ProOdezhda/App.xaml

@@ -0,0 +1,16 @@
+<Application x:Class="ProOdezhda.App"
+             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
+             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
+             xmlns:local="clr-namespace:ProOdezhda"
+             StartupUri="MainWindow.xaml">
+    <Application.Resources>
+        <ResourceDictionary>
+            <ResourceDictionary.MergedDictionaries>
+                <ResourceDictionary Source="pack://application:,,,/MaterialDesignThemes.Wpf;component/Themes/MaterialDesignTheme.Light.xaml" />
+                <ResourceDictionary Source="pack://application:,,,/MaterialDesignThemes.Wpf;component/Themes/MaterialDesignTheme.Defaults.xaml" />
+                <ResourceDictionary Source="pack://application:,,,/MaterialDesignColors;component/Themes/Recommended/Primary/MaterialDesignColor.DeepPurple.xaml" />
+                <ResourceDictionary Source="pack://application:,,,/MaterialDesignColors;component/Themes/Recommended/Accent/MaterialDesignColor.Lime.xaml" />
+            </ResourceDictionary.MergedDictionaries>
+        </ResourceDictionary>
+    </Application.Resources>
+</Application>

+ 17 - 0
ProOdezhda/App.xaml.cs

@@ -0,0 +1,17 @@
+using System;
+using System.Collections.Generic;
+using System.Configuration;
+using System.Data;
+using System.Linq;
+using System.Threading.Tasks;
+using System.Windows;
+
+namespace ProOdezhda
+{
+    /// <summary>
+    /// Логика взаимодействия для App.xaml
+    /// </summary>
+    public partial class App : Application
+    {
+    }
+}

+ 29 - 0
ProOdezhda/CATEGORY_C.cs

@@ -0,0 +1,29 @@
+//------------------------------------------------------------------------------
+// <auto-generated>
+//     Этот код создан по шаблону.
+//
+//     Изменения, вносимые в этот файл вручную, могут привести к непредвиденной работе приложения.
+//     Изменения, вносимые в этот файл вручную, будут перезаписаны при повторном создании кода.
+// </auto-generated>
+//------------------------------------------------------------------------------
+
+namespace ProOdezhda
+{
+    using System;
+    using System.Collections.Generic;
+    
+    public partial class CATEGORY_C
+    {
+        [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2214:DoNotCallOverridableMethodsInConstructors")]
+        public CATEGORY_C()
+        {
+            this.COUNTERPARTies = new HashSet<COUNTERPARTY>();
+        }
+    
+        public int CATEGORY_C_ID { get; set; }
+        public string NAME { get; set; }
+    
+        [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2227:CollectionPropertiesShouldBeReadOnly")]
+        public virtual ICollection<COUNTERPARTY> COUNTERPARTies { get; set; }
+    }
+}

+ 29 - 0
ProOdezhda/CATEGORY_N.cs

@@ -0,0 +1,29 @@
+//------------------------------------------------------------------------------
+// <auto-generated>
+//     Этот код создан по шаблону.
+//
+//     Изменения, вносимые в этот файл вручную, могут привести к непредвиденной работе приложения.
+//     Изменения, вносимые в этот файл вручную, будут перезаписаны при повторном создании кода.
+// </auto-generated>
+//------------------------------------------------------------------------------
+
+namespace ProOdezhda
+{
+    using System;
+    using System.Collections.Generic;
+    
+    public partial class CATEGORY_N
+    {
+        [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2214:DoNotCallOverridableMethodsInConstructors")]
+        public CATEGORY_N()
+        {
+            this.NOMENCLATUREs = new HashSet<NOMENCLATURE>();
+        }
+    
+        public int CATEGORY_N_ID { get; set; }
+        public string NAME { get; set; }
+    
+        [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2227:CollectionPropertiesShouldBeReadOnly")]
+        public virtual ICollection<NOMENCLATURE> NOMENCLATUREs { get; set; }
+    }
+}

+ 49 - 0
ProOdezhda/COUNTERPARTY.cs

@@ -0,0 +1,49 @@
+//------------------------------------------------------------------------------
+// <auto-generated>
+//     Этот код создан по шаблону.
+//
+//     Изменения, вносимые в этот файл вручную, могут привести к непредвиденной работе приложения.
+//     Изменения, вносимые в этот файл вручную, будут перезаписаны при повторном создании кода.
+// </auto-generated>
+//------------------------------------------------------------------------------
+
+namespace ProOdezhda
+{
+    using System;
+    using System.Collections.Generic;
+    
+    public partial class COUNTERPARTY
+    {
+        [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2214:DoNotCallOverridableMethodsInConstructors")]
+        public COUNTERPARTY()
+        {
+            this.ORDERs = new HashSet<ORDER>();
+            this.RATINGs = new HashSet<RATING>();
+            this.REQUESTs = new HashSet<REQUEST>();
+            this.RETAIL_REPORT = new HashSet<RETAIL_REPORT>();
+        }
+    
+        public int COUNTERPARTY_ID { get; set; }
+        public string NAME { get; set; }
+        public int FK_TYPE_ID { get; set; }
+        public string ADDRESS { get; set; }
+        public string INN { get; set; }
+        public string KPP { get; set; }
+        public string OGRN { get; set; }
+        public string DIRECTOR { get; set; }
+        public string TELEPHONE { get; set; }
+        public string EMAIL { get; set; }
+        public Nullable<int> FK_CATEGORY_C_ID { get; set; }
+    
+        public virtual CATEGORY_C CATEGORY_C { get; set; }
+        public virtual TYPE TYPE { get; set; }
+        [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2227:CollectionPropertiesShouldBeReadOnly")]
+        public virtual ICollection<ORDER> ORDERs { get; set; }
+        [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2227:CollectionPropertiesShouldBeReadOnly")]
+        public virtual ICollection<RATING> RATINGs { get; set; }
+        [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2227:CollectionPropertiesShouldBeReadOnly")]
+        public virtual ICollection<REQUEST> REQUESTs { get; set; }
+        [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2227:CollectionPropertiesShouldBeReadOnly")]
+        public virtual ICollection<RETAIL_REPORT> RETAIL_REPORT { get; set; }
+    }
+}

+ 25 - 0
ProOdezhda/DISPATCH.cs

@@ -0,0 +1,25 @@
+//------------------------------------------------------------------------------
+// <auto-generated>
+//     Этот код создан по шаблону.
+//
+//     Изменения, вносимые в этот файл вручную, могут привести к непредвиденной работе приложения.
+//     Изменения, вносимые в этот файл вручную, будут перезаписаны при повторном создании кода.
+// </auto-generated>
+//------------------------------------------------------------------------------
+
+namespace ProOdezhda
+{
+    using System;
+    using System.Collections.Generic;
+    
+    public partial class DISPATCH
+    {
+        public int DISPATCH_ID { get; set; }
+        public int FK_REQUEST_ID { get; set; }
+        public System.DateTime DATE { get; set; }
+        public int FK_USER_ID { get; set; }
+    
+        public virtual REQUEST REQUEST { get; set; }
+        public virtual USER USER { get; set; }
+    }
+}

+ 270 - 0
ProOdezhda/Functionality/AdditionalFunctionality.cs

@@ -0,0 +1,270 @@
+using ProOdezhda.Windows;
+using System.Linq;
+using System.Windows;
+using System.Windows.Controls;
+using System.Windows.Media;
+
+namespace ProOdezhda
+{
+    public partial class Nomenclature
+    {
+        public Nomenclature(int id, string n, double q, decimal p)
+        {
+            this.NOMENCLATURE_ID = id;
+            this.NOMENCLATURE = n;
+            this.QUANTITY = q;
+            this.PRICE = p;
+            this.SUM = decimal.Parse(q.ToString()) * p;
+        }
+        public int NOMENCLATURE_ID { get; set; }
+        public string NOMENCLATURE { get; set; }
+        public double QUANTITY { get; set; }
+        public decimal PRICE { get; set; }
+        public decimal SUM { get; set; }
+    }
+
+    // Класс содержит методы предназначенные для заполнения форм
+    public class Working_With_Forms
+    {
+        MainFunctionality mf = new MainFunctionality();
+        ProOdezhdaEntities db = new ProOdezhdaEntities();
+
+        // Загрузить списки агентов/поставщиков и продукции/материалов
+        public void Load_COUNTERPARTY_and_NOMENCLATURE(ComboBox COUNTERPARTY, string CC, ComboBox NOMENCLATURE, string N)
+        { mf.Load_COUNTERPARTY(COUNTERPARTY, CC); Load_NOMENCLATURE(NOMENCLATURE, N); }
+
+        // Загрузить список продукции/материалов
+        public void Load_NOMENCLATURE(ComboBox NOMENCLATURE, string N)
+        {
+            NOMENCLATURE.ItemsSource = db.NOMENCLATUREs.Where(n => n.CATEGORY_N.NAME == N).ToList();
+
+            NOMENCLATURE.DisplayMemberPath = "NAME";
+            NOMENCLATURE.SelectedValuePath = "NOMENCLATURE_ID";
+        }
+
+        // Загрузить список заказов поставщику
+        public void Load_ORDER(ComboBox ORDER, int ID)
+        {
+            foreach (ORDER order in db.ORDERs.Where(c => c.FK_COUNTERPARTY_ID == ID))
+            { if (!db.PURCHASE_INVOICE.Any(o => o.FK_ORDER_ID == order.ORDER_ID)) { ORDER.Items.Add(order); } }
+            ORDER.SelectedValuePath = "ORDER_ID";
+        }
+
+        // Загрузить список запросов агента
+        public void Load_REQUEST(ComboBox REQUEST, int ID)
+        {
+            foreach(REQUEST request in db.REQUESTs.Where(c => c.FK_COUNTERPARTY_ID == ID))
+            { if (!db.DISPATCHes.Any(o => o.FK_REQUEST_ID == request.REQUEST_ID)) { REQUEST.Items.Add(request); }}
+            REQUEST.SelectedValuePath = "REQUEST_ID";
+        }
+
+        // Загрузить состав запроса/заказа
+        public void REQUEST_or_ORDER_Selection(string LR_LO, ComboBox RO, DataGrid LIST)
+        {
+            if (RO.SelectedItem != null)
+            {
+                int id = int.Parse(RO.SelectedValue.ToString());
+                if (LR_LO == "REQUEST")
+                { LIST.ItemsSource = db.REQUEST_LIST.Where(id_o => id_o.FK_REQUEST_ID == id).ToList(); }
+                else
+                { LIST.ItemsSource = db.ORDER_LIST.Where(id_o => id_o.FK_ORDER_ID == id).ToList(); }                    
+            }
+        }
+
+        // Загрузить список запросов/заказов при выборе контрагента
+        public void COUNTERPARTY_Selection(string LR_LO, ComboBox RO, DataGrid LIST, TextBlock Name, ComboBox COUNTERPARTYs)
+        {
+            RO.SelectedItem = null;
+            RO.Items.Clear();
+            LIST.ItemsSource = null;
+            Name.Foreground = new SolidColorBrush(Color.FromArgb(255, 81, 15, 173));
+            RO.IsEnabled = true;
+            if (LR_LO == "REQUEST")
+            { Load_REQUEST(RO, int.Parse(COUNTERPARTYs.SelectedValue.ToString())); }
+            else
+            { Load_ORDER(RO, int.Parse(COUNTERPARTYs.SelectedValue.ToString())); }
+        }
+
+        // Добавить запись в лист
+        public void Insert_List(DataGrid Grid, ComboBox NOMENCLATURE, TextBox QUANTITY, TextBox PRICE)
+        {
+            if (NOMENCLATURE.SelectedValue == null) { return; }
+            if (int.TryParse(NOMENCLATURE.SelectedValue.ToString(), out int id) &&
+                double.TryParse(QUANTITY.Text, out double q) &&
+                decimal.TryParse(PRICE.Text, out decimal p)                
+            )
+            { Grid.Items.Add(new Nomenclature(id, NOMENCLATURE.Text, q, p)); }
+        }
+        
+        // Изменить запись в листе
+        public void Update_List(DataGrid Grid, ComboBox NOMENCLATURE, TextBox QUANTITY, TextBox PRICE)
+        {
+            if (NOMENCLATURE.SelectedValue == null) { return; }
+            if (int.TryParse(NOMENCLATURE.SelectedValue.ToString(), out int id) &&
+                double.TryParse(QUANTITY.Text, out double q) &&
+                decimal.TryParse(PRICE.Text, out decimal p))
+            {
+                int index = Grid.SelectedIndex;
+                Delete_List(Grid);
+                Grid.Items.Insert(index, new Nomenclature(id, NOMENCLATURE.Text, q, p));
+            }
+        }
+
+        // Удалить запись из листа
+        public void Delete_List(DataGrid Grid) { Grid.Items.Remove(Grid.SelectedItem); }
+
+        // Заполнить строки
+        public void LIST_Selection_Changed(DataGrid Grid, ComboBox NOMENCLATURE, TextBox QUANTITY, TextBox PRICE)
+        {
+            if (Grid.SelectedItem is Nomenclature nom)
+            {
+                NOMENCLATURE.SelectedValue = nom.NOMENCLATURE_ID;
+                QUANTITY.Text = nom.QUANTITY.ToString();
+                PRICE.Text = nom.PRICE.ToString();
+            }
+        }        
+    }
+
+
+    // Класс содержит методы предназначенные для добавления и удаления записей базы данных
+    public class Insert_and_Delete
+    {
+
+        ProOdezhdaEntities db = new ProOdezhdaEntities();
+        MainFunctionality mf = new MainFunctionality();
+
+        public void NEW(string Choice, DataGrid Grid)
+        {
+            switch (Choice)
+            {
+                case "COUNTERPARTY":
+                    WinCOUNTERPARTY c = new WinCOUNTERPARTY(); c.ShowDialog(); 
+                    break;
+
+                case "ORDER":
+                    WinORDER o = new WinORDER(); o.ShowDialog();
+                    break;
+
+                case "PURCHASE_INVOICE":
+                    WinPURCHASE_INVOICE p_i = new WinPURCHASE_INVOICE(); p_i.ShowDialog();
+                    break;
+
+                case "REQUEST":
+                    WinREQUEST r = new WinREQUEST(); r.ShowDialog();
+                    break;
+
+                case "DISPATCH":
+                    WinDISPATCH d = new WinDISPATCH(); d.ShowDialog();
+                    break;
+
+                case "RETAIL_REPORT":
+                    WinRETAIL_REPORT r_r = new WinRETAIL_REPORT(); r_r.ShowDialog();
+                    break;
+
+                default:
+                    return;
+            }
+
+            mf.Load(Choice, Grid);
+        }
+
+        public void DELETE(string Choice, DataGrid Grid, TextBlock ID = null, TextBlock DATE = null, TextBlock CD_O_R = null, TextBlock COUNTERPARTY = null, DataGrid LIST = null, bool test = false)
+        {
+            if (Grid.SelectedItem == null) { return; }
+            MessageBoxResult yes;
+            if (!test) { yes = MessageBox.Show("Вы уверены?", "Удаление записи", MessageBoxButton.YesNo, MessageBoxImage.Question); }
+            else { yes = MessageBoxResult.Yes; }
+
+            if (yes == MessageBoxResult.Yes)
+            {            
+                int id = ID == null ? 0 : int.Parse(ID.Text);
+
+                switch (Choice)
+                {
+                    case "COUNTERPARTY": // Удаление записей о контрагентах
+                        if (Grid.SelectedItem is COUNTERPARTY selectedCOUNTERPARTY)
+                        {
+                            // Проверка наличия зависимых записей
+                            if (!db.REQUESTs.Any(r => r.FK_COUNTERPARTY_ID == selectedCOUNTERPARTY.COUNTERPARTY_ID) &&
+                                !db.RETAIL_REPORT.Any(r => r.FK_COUNTERPARTY_ID == selectedCOUNTERPARTY.COUNTERPARTY_ID) &&
+                                !db.ORDERs.Any(r => r.FK_COUNTERPARTY_ID == selectedCOUNTERPARTY.COUNTERPARTY_ID))
+
+                            { db.COUNTERPARTies.Remove(db.COUNTERPARTies.Where(c => c.COUNTERPARTY_ID == selectedCOUNTERPARTY.COUNTERPARTY_ID).FirstOrDefault()); }
+                            
+                            else { MessageBox.Show("Невозможно удалить контрагента, т.к. есть связанные с ним документы!"); return; }
+                        }
+                        
+                        break;
+
+                    case "ORDER": // Удаление записей о заказах материалов
+                        foreach (ORDER_LIST order_list in db.ORDER_LIST.Where(o => o.FK_ORDER_ID == id)) 
+                        { db.ORDER_LIST.Remove(order_list); }
+
+                        if (db.PURCHASE_INVOICE.Any(p_i => p_i.FK_ORDER_ID == id)) // Удаляет связанные с заказом приходные наклодные, если такие имеются
+                        {
+                            foreach (PURCHASE_INVOICE purchase_invoice in db.PURCHASE_INVOICE.Where(i => i.FK_ORDER_ID == id))
+                            { db.PURCHASE_INVOICE.Remove(purchase_invoice); }
+                        }
+
+                        db.ORDERs.Remove(db.ORDERs.Where(o => o.ORDER_ID == id).FirstOrDefault());
+
+                        break;
+
+                    case "PURCHASE_INVOICE": // Удаление записей о приходных накладных
+                        if (Grid.SelectedItem is PURCHASE_INVOICE selectedPURCHASE_INVOICE)
+                        { db.PURCHASE_INVOICE.Remove(db.PURCHASE_INVOICE.Where(p_i => p_i.PURCHASE_INVOICE_ID == selectedPURCHASE_INVOICE.PURCHASE_INVOICE_ID).FirstOrDefault()); }
+
+                        break;
+
+                    case "REQUEST": // Удаление записей о запросах агентов
+                        foreach (REQUEST_LIST request_list in db.REQUEST_LIST.Where(o => o.FK_REQUEST_ID == id)) 
+                        { db.REQUEST_LIST.Remove(request_list); }
+
+                        if (db.DISPATCHes.Any(d => d.FK_REQUEST_ID == id)) // Удаляет связанные с запросом поставки, если такие имеются
+                        {
+                            foreach (DISPATCH dispatch in db.DISPATCHes.Where(i => i.FK_REQUEST_ID == id))
+                            { db.DISPATCHes.Remove(dispatch); }
+                        }
+
+                        db.REQUESTs.Remove(db.REQUESTs.Where(r => r.REQUEST_ID == id).FirstOrDefault());
+
+                        break;
+
+                    case "DISPATCH": // Удаление записей о поставках продукции
+                        if (Grid.SelectedItem is DISPATCH selectedDISPATCHes)
+                        { db.DISPATCHes.Remove(db.DISPATCHes.Where(d => d.DISPATCH_ID == selectedDISPATCHes.DISPATCH_ID).FirstOrDefault()); }
+                        
+                        break;
+
+                    case "RETAIL_REPORT": // Удаление записей о розничных отчётах
+                        foreach (RETAIL_REPORT_LIST retail_report in db.RETAIL_REPORT_LIST.Where(o => o.FK_RETAIL_REPORT_ID == id))
+                        { db.RETAIL_REPORT_LIST.Remove(retail_report); }
+
+                        db.RETAIL_REPORT.Remove(db.RETAIL_REPORT.Where(r_r => r_r.RETAIL_REPORT_ID == id).FirstOrDefault());
+
+                        break;
+
+                    default:
+                        return;
+                }                
+
+                db.SaveChanges();
+
+                if (ID != null) { CLEANING(ID, DATE, CD_O_R, COUNTERPARTY, LIST); }
+
+                mf.Load(Choice, Grid);               
+            }
+        }
+
+        public void CLEANING(TextBlock ID, TextBlock DATE, TextBlock CD_O_R, TextBlock COUNTERPARTY, DataGrid LIST)
+        {
+            ID.Text = string.Empty;
+            DATE.Text = string.Empty;
+            if (CD_O_R != null) { CD_O_R.Text = string.Empty; }
+            COUNTERPARTY.Text = string.Empty;
+            LIST.ItemsSource = null;
+            LIST.Items.Clear();
+        }
+    }
+}
+

+ 209 - 0
ProOdezhda/Functionality/MainFunctionality.cs

@@ -0,0 +1,209 @@
+using System.Linq;
+using System.Windows.Controls;
+
+namespace ProOdezhda
+{
+    public class MainFunctionality
+    {
+        ProOdezhdaEntities db = new ProOdezhdaEntities();
+
+        public void Load_COUNTERPARTY(ComboBox COUNTERPARTY, string CC = "")
+        {
+            if (CC == "")
+            { COUNTERPARTY.ItemsSource = db.COUNTERPARTies.ToList(); }
+            else
+            {
+                COUNTERPARTY.ItemsSource = db.COUNTERPARTies.Where(c => c.CATEGORY_C.NAME == CC).ToList();
+                COUNTERPARTY.DisplayMemberPath = "NAME";
+            }
+
+            COUNTERPARTY.SelectedValuePath = "COUNTERPARTY_ID";
+        }
+
+        public void Load(string Choice, DataGrid Grid)
+        {
+            switch (Choice)
+            {
+                case "COUNTERPARTY":
+                    Grid.ItemsSource = db.COUNTERPARTies.ToList();
+                    break;
+
+                case "ORDER":
+                    Grid.ItemsSource = db.ORDERs.ToList();
+                    break;
+
+                case "PURCHASE_INVOICE":
+                    Grid.ItemsSource = db.PURCHASE_INVOICE.ToList();
+                    break;
+
+                case "REQUEST":
+                    Grid.ItemsSource = db.REQUESTs.ToList();
+                    break;
+
+                case "DISPATCH":
+                    Grid.ItemsSource = db.DISPATCHes.ToList();
+                    break;
+
+                case "RETAIL_REPORT":
+                    Grid.ItemsSource = db.RETAIL_REPORT.ToList();
+                    break;
+
+                case "RATING":
+                    Grid.ItemsSource = db.RATINGs.ToList();
+                    break;
+
+                default:
+                    return;
+            }            
+        }
+
+        public void Grid_SelectionChanged(string Choice, DataGrid Grid, TextBlock ID, TextBlock DATE, TextBlock CD_O_R, TextBlock COUNTERPARTY, DataGrid LIST, string dateformat)
+        {
+            switch (Choice)
+            {
+                case "ORDER":
+                    if (Grid.SelectedItem is ORDER o)
+                    {
+                        ID.Text = o.ORDER_ID.ToString();
+                        DATE.Text = o.DATE.ToString(dateformat);
+                        CD_O_R.Text = o.CUTOFF_DATE.ToString(dateformat);
+                        COUNTERPARTY.Text = o.COUNTERPARTY.NAME;
+                    }
+                    break;
+
+                case "PURCHASE_INVOICE":
+                    if (Grid.SelectedItem is PURCHASE_INVOICE p_i)
+                    {
+                        ID.Text = p_i.ORDER.ORDER_ID.ToString();
+                        DATE.Text = p_i.DATE.ToString(dateformat);
+                        CD_O_R.Text = "№" + p_i.FK_ORDER_ID.ToString() + " от " + p_i.ORDER.DATE.ToString(dateformat);
+                        COUNTERPARTY.Text = p_i.ORDER.COUNTERPARTY.NAME;
+                    }
+                    break;
+
+                case "REQUEST":
+                    if (Grid.SelectedItem is REQUEST r)
+                    {
+                        ID.Text = r.REQUEST_ID.ToString();
+                        DATE.Text = r.DATE.ToString(dateformat);
+                        CD_O_R.Text = r.CUTOFF_DATE.ToString(dateformat);
+                        COUNTERPARTY.Text = r.COUNTERPARTY.NAME;
+                    }
+                    break;
+
+                case "DISPATCH":
+                    if (Grid.SelectedItem is DISPATCH d)
+                    {
+                        ID.Text = d.REQUEST.REQUEST_ID.ToString();
+                        DATE.Text = d.DATE.ToString(dateformat);
+                        CD_O_R.Text = "№" + d.FK_REQUEST_ID.ToString() + " от " + d.REQUEST.DATE.ToString(dateformat);
+                        COUNTERPARTY.Text = d.REQUEST.COUNTERPARTY.NAME;
+                    }
+                    break;
+
+                case "RETAIL_REPORT":
+                    if (Grid.SelectedItem is RETAIL_REPORT r_r)
+                    {
+                        ID.Text = r_r.RETAIL_REPORT_ID.ToString();
+                        DATE.Text = r_r.DATE.ToString(dateformat);
+                        COUNTERPARTY.Text = r_r.COUNTERPARTY.NAME;
+                    }
+                    break;
+
+                default:
+                    return;
+            }
+            
+            Load_LIST(Choice, LIST, ID);
+        }
+
+        public void Load_LIST(string Choice, DataGrid LIST, TextBlock ID)
+        {
+            if (int.TryParse(ID.Text, out int id))
+            {
+                switch (Choice)
+                {
+                    case "ORDER":
+                        LIST.ItemsSource = db.ORDER_LIST.Where(o => o.FK_ORDER_ID == id).ToList();
+                        break;
+
+                    case "PURCHASE_INVOICE":
+                        LIST.ItemsSource = db.ORDER_LIST.Where(o => o.FK_ORDER_ID == id).ToList();
+                        break;
+
+                    case "REQUEST":
+                        LIST.ItemsSource = db.REQUEST_LIST.Where(o => o.FK_REQUEST_ID == id).ToList();
+                        break;
+
+                    case "DISPATCH":
+                        LIST.ItemsSource = db.REQUEST_LIST.Where(o => o.FK_REQUEST_ID == id).ToList();
+                        break;
+
+                    case "RETAIL_REPORT":
+                        LIST.ItemsSource = db.RETAIL_REPORT_LIST.Where(o => o.FK_RETAIL_REPORT_ID == id).ToList();
+                        break;
+
+                    default:
+                        return;
+                }
+            }
+        }
+
+        public void BC_Arrived_Orders(DataGrid Grid)
+        {
+            Grid.ItemsSource = (
+                from ORDER in db.ORDERs
+                join PURCHASE_INVOICE in db.PURCHASE_INVOICE on ORDER.ORDER_ID equals PURCHASE_INVOICE.FK_ORDER_ID
+                select new
+                {
+                    ORDER = "№" + ORDER.ORDER_ID,
+                    COUNTERPARTY = ORDER.COUNTERPARTY.NAME,
+                    ORDER_DATE = ORDER.DATE,
+                    ORDER.CUTOFF_DATE,
+                    PURCHASE_INVOICE = "№" + PURCHASE_INVOICE.PURCHASE_INVOICE_ID,
+                    PURCHASE_INVOICE_DATE = PURCHASE_INVOICE.DATE,
+                    STATUS = ORDER.CUTOFF_DATE < PURCHASE_INVOICE.DATE ? "Просрочен" : ""
+                }).ToList();
+        }
+        public void BC_Completed_Requests(DataGrid Grid)
+        {
+            Grid.ItemsSource = (
+                from REQUEST in db.REQUESTs
+                join DISPATCH in db.DISPATCHes on REQUEST.REQUEST_ID equals DISPATCH.FK_REQUEST_ID
+                select new
+                {
+                    REQUEST = "№" + REQUEST.REQUEST_ID,
+                    COUNTERPARTY = REQUEST.COUNTERPARTY.NAME,
+                    REQUEST_DATE = REQUEST.DATE,
+                    REQUEST.CUTOFF_DATE,
+                    DISPATCH = "№" + DISPATCH.DISPATCH_ID,
+                    DISPATCH_DATE = DISPATCH.DATE,
+                    STATUS = REQUEST.CUTOFF_DATE < DISPATCH.DATE ? "Просрочен" : ""
+                }).ToList();
+        }
+        public void BC_Products_Sold(DataGrid Grid)
+        {
+            Grid.ItemsSource = (
+                from RETAIL_REPORT_LIST in db.RETAIL_REPORT_LIST
+                group RETAIL_REPORT_LIST by RETAIL_REPORT_LIST.NOMENCLATURE.NAME into NOMENCLATUREGroup
+                select new
+                {
+                    NOMENCLATURE = NOMENCLATUREGroup.Key,
+                    QUANTITY = NOMENCLATUREGroup.Sum(s => s.QUANTITY),
+                    SUM = NOMENCLATUREGroup.Sum(s => s.SUM)
+                }).ToList();
+        }
+        public void BC_Counterparty_Rating(DataGrid Grid)
+        {
+            Grid.ItemsSource = (
+                from RATING in db.RATINGs
+                group RATING by RATING.COUNTERPARTY into COUNTERPARTYGroup
+                select new
+                {
+                    COUNTERPARTY = COUNTERPARTYGroup.Key.NAME,
+                    CATEGORY = COUNTERPARTYGroup.Key.CATEGORY_C.NAME,
+                    RATING = COUNTERPARTYGroup.OrderByDescending(c => c.DATE).FirstOrDefault().RATING1
+                }).OrderBy(c => c.CATEGORY).ThenByDescending(r => r.RATING).ToList();
+        }
+    }
+}

BIN
ProOdezhda/Images/Logo.png


+ 70 - 0
ProOdezhda/MainWindow.xaml

@@ -0,0 +1,70 @@
+<Window x:Class="ProOdezhda.MainWindow"
+        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
+        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
+        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
+        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
+        xmlns:local="clr-namespace:ProOdezhda"
+        mc:Ignorable="d"
+        Title="ProОдежда: Авторизация" Height="340" Width="560" WindowStartupLocation="CenterScreen" ResizeMode="NoResize" WindowStyle="None">
+    <Grid>
+        <Grid.Background>
+            <RadialGradientBrush>
+                <GradientStop Color="#FF852DFF"/>
+                <GradientStop Color="#FF2A0859" Offset="1"/>
+            </RadialGradientBrush>
+        </Grid.Background>
+        <Grid.RowDefinitions>
+            <RowDefinition Height="10"/>
+            <RowDefinition/>
+            <RowDefinition/>
+            <RowDefinition/>
+            <RowDefinition/>
+            <RowDefinition Height="10"/>
+        </Grid.RowDefinitions>
+        <Grid.ColumnDefinitions>
+            <ColumnDefinition Width="10"/>
+            <ColumnDefinition/>
+            <ColumnDefinition Width="10"/>
+        </Grid.ColumnDefinitions>
+
+        <Border Grid.RowSpan="4" Grid.Row="1" Grid.Column="1" CornerRadius="20" BorderBrush="Black" BorderThickness="1" Background="White"/>
+        
+        <Button Content="X" HorizontalAlignment="Right" Height="Auto" Margin="0,15,15,0" VerticalAlignment="Top" Click="Exit" Grid.Row="1" Grid.Column="1" BorderBrush="Black">
+            <Button.Background>
+                <LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">
+                    <GradientStop Color="#FF1D0842" Offset="1"/>
+                    <GradientStop Color="#FFF97272"/>
+                    <GradientStop Color="#FF5C00FF" Offset="0.018"/>
+                </LinearGradientBrush>
+            </Button.Background>
+        </Button>
+
+
+        <TextBox x:Name="LOGIN" HorizontalAlignment="Right" Margin="0,0,35,0" TextWrapping="Wrap" VerticalAlignment="Center" Width="350" Grid.Row="2" Grid.Column="1" FontSize="22" Height="37" Text="1"/>
+
+        <PasswordBox x:Name="PASSWORD" Margin="0,0,35,0" Grid.Column="1" Grid.Row="3" FontSize="22" VerticalAlignment="Center" Width="350" HorizontalAlignment="Right" Password="1"/>
+
+        <TextBlock Text="Логин" HorizontalAlignment="Left" Margin="35,0,0,0" VerticalAlignment="Center" Grid.Column="1" Grid.Row="2" Foreground="#FF510FAD" FontSize="22"/>
+
+        <TextBlock Text="Пароль" HorizontalAlignment="Left" Margin="35,0,0,0" VerticalAlignment="Center" Grid.Column="1" Grid.Row="3" Foreground="#FF510FAD" FontSize="22"/>
+
+        <TextBlock x:Name="NAME_F" Grid.Column="1" Margin="0" TextWrapping="Wrap" Text="АВТОРИЗАЦИЯ" VerticalAlignment="Center" HorizontalAlignment="Center" FontSize="24" TextAlignment="Center" FontWeight="Bold"  Foreground="#FF510FAD" Grid.Row="1"/>
+
+        <Button Content="Войти" HorizontalAlignment="Right" Margin="0,21,35,20" VerticalAlignment="Center" Width="100" Click="Login" Grid.Column="1" Grid.Row="4">
+            <Button.Background>
+                <LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">
+                    <GradientStop Color="#FF320571" Offset="1"/>
+                    <GradientStop Color="#FF9040FF"/>
+                </LinearGradientBrush>
+            </Button.Background>
+        </Button>
+        <Button Content="Регистрация" HorizontalAlignment="Left" Margin="35,21,0,20" VerticalAlignment="Center" Width="123" Click="Registration_Click" Grid.Column="1" Grid.Row="4" BorderBrush="Black">
+            <Button.Background>
+                <LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">
+                    <GradientStop Color="#FF713B05" Offset="1"/>
+                    <GradientStop Color="#FFFFC240"/>
+                </LinearGradientBrush>
+            </Button.Background>
+        </Button>
+    </Grid>
+</Window>

+ 41 - 0
ProOdezhda/MainWindow.xaml.cs

@@ -0,0 +1,41 @@
+using System;
+using System.Linq;
+using System.Windows;
+using ProOdezhda.Windows;
+
+namespace ProOdezhda
+{
+    public partial class MainWindow : Window
+    {
+        ProOdezhdaEntities db = new ProOdezhdaEntities();
+
+        public MainWindow() { InitializeComponent(); }
+
+        private void Login(object sender, RoutedEventArgs e)
+        {
+            if (Authorization(LOGIN.Text, PASSWORD.Password)) { WorkWindow w = new WorkWindow(); Hide(); w.Show(); Close(); }
+            else { MessageBox.Show("Неправильный логин или пароль!"); }
+        }
+
+        public bool Authorization(string login, string Password, bool test = false)
+        {
+            var id = db.USERs.Where(po => po.POSITION.NAME == "Менеджер")
+                             .Where(l => l.LOGIN == login)
+                             .Where(p => p.PASSWORD == Password
+                             .ToString()).FirstOrDefault();
+            if (id == null) { return false; }
+            if (!test)
+            {
+                Application.Current.Properties["USER_ID"] = id.USER_ID;
+                Application.Current.Properties["ENTRY_TIME"] = DateTime.Now;
+            }            
+            return true;
+        }
+
+        private void Registration_Click(object sender, RoutedEventArgs e)
+        { WinRegistration r = new WinRegistration(); r.ShowDialog(); }
+
+        private void Exit(object sender, RoutedEventArgs e)
+        { Application.Current.Shutdown(); }
+    }
+}

+ 46 - 0
ProOdezhda/Model1.Context.cs

@@ -0,0 +1,46 @@
+//------------------------------------------------------------------------------
+// <auto-generated>
+//     Этот код создан по шаблону.
+//
+//     Изменения, вносимые в этот файл вручную, могут привести к непредвиденной работе приложения.
+//     Изменения, вносимые в этот файл вручную, будут перезаписаны при повторном создании кода.
+// </auto-generated>
+//------------------------------------------------------------------------------
+
+namespace ProOdezhda
+{
+    using System;
+    using System.Data.Entity;
+    using System.Data.Entity.Infrastructure;
+    
+    public partial class ProOdezhdaEntities : DbContext
+    {
+        public ProOdezhdaEntities()
+            : base("name=ProOdezhdaEntities")
+        {
+        }
+    
+        protected override void OnModelCreating(DbModelBuilder modelBuilder)
+        {
+            throw new UnintentionalCodeFirstException();
+        }
+    
+        public virtual DbSet<CATEGORY_C> CATEGORY_C { get; set; }
+        public virtual DbSet<CATEGORY_N> CATEGORY_N { get; set; }
+        public virtual DbSet<COUNTERPARTY> COUNTERPARTies { get; set; }
+        public virtual DbSet<DISPATCH> DISPATCHes { get; set; }
+        public virtual DbSet<NOMENCLATURE> NOMENCLATUREs { get; set; }
+        public virtual DbSet<ORDER> ORDERs { get; set; }
+        public virtual DbSet<ORDER_LIST> ORDER_LIST { get; set; }
+        public virtual DbSet<POSITION> POSITIONs { get; set; }
+        public virtual DbSet<PURCHASE_INVOICE> PURCHASE_INVOICE { get; set; }
+        public virtual DbSet<RATING> RATINGs { get; set; }
+        public virtual DbSet<REQUEST> REQUESTs { get; set; }
+        public virtual DbSet<REQUEST_LIST> REQUEST_LIST { get; set; }
+        public virtual DbSet<RETAIL_REPORT> RETAIL_REPORT { get; set; }
+        public virtual DbSet<RETAIL_REPORT_LIST> RETAIL_REPORT_LIST { get; set; }
+        public virtual DbSet<TYPE> TYPEs { get; set; }
+        public virtual DbSet<USER> USERs { get; set; }
+        public virtual DbSet<USER_ACTIVITY> USER_ACTIVITY { get; set; }
+    }
+}

+ 636 - 0
ProOdezhda/Model1.Context.tt

@@ -0,0 +1,636 @@
+<#@ template language="C#" debug="false" hostspecific="true"#>
+<#@ include file="EF6.Utility.CS.ttinclude"#><#@
+ output extension=".cs"#><#
+
+const string inputFile = @"Model1.edmx";
+var textTransform = DynamicTextTransformation.Create(this);
+var code = new CodeGenerationTools(this);
+var ef = new MetadataTools(this);
+var typeMapper = new TypeMapper(code, ef, textTransform.Errors);
+var loader = new EdmMetadataLoader(textTransform.Host, textTransform.Errors);
+var itemCollection = loader.CreateEdmItemCollection(inputFile);
+var modelNamespace = loader.GetModelNamespace(inputFile);
+var codeStringGenerator = new CodeStringGenerator(code, typeMapper, ef);
+
+var container = itemCollection.OfType<EntityContainer>().FirstOrDefault();
+if (container == null)
+{
+    return string.Empty;
+}
+#>
+//------------------------------------------------------------------------------
+// <auto-generated>
+// <#=CodeGenerationTools.GetResourceString("Template_GeneratedCodeCommentLine1")#>
+//
+// <#=CodeGenerationTools.GetResourceString("Template_GeneratedCodeCommentLine2")#>
+// <#=CodeGenerationTools.GetResourceString("Template_GeneratedCodeCommentLine3")#>
+// </auto-generated>
+//------------------------------------------------------------------------------
+
+<#
+
+var codeNamespace = code.VsNamespaceSuggestion();
+if (!String.IsNullOrEmpty(codeNamespace))
+{
+#>
+namespace <#=code.EscapeNamespace(codeNamespace)#>
+{
+<#
+    PushIndent("    ");
+}
+
+#>
+using System;
+using System.Data.Entity;
+using System.Data.Entity.Infrastructure;
+<#
+if (container.FunctionImports.Any())
+{
+#>
+using System.Data.Entity.Core.Objects;
+using System.Linq;
+<#
+}
+#>
+
+<#=Accessibility.ForType(container)#> partial class <#=code.Escape(container)#> : DbContext
+{
+    public <#=code.Escape(container)#>()
+        : base("name=<#=container.Name#>")
+    {
+<#
+if (!loader.IsLazyLoadingEnabled(container))
+{
+#>
+        this.Configuration.LazyLoadingEnabled = false;
+<#
+}
+
+foreach (var entitySet in container.BaseEntitySets.OfType<EntitySet>())
+{
+    // Note: the DbSet members are defined below such that the getter and
+    // setter always have the same accessibility as the DbSet definition
+    if (Accessibility.ForReadOnlyProperty(entitySet) != "public")
+    {
+#>
+        <#=codeStringGenerator.DbSetInitializer(entitySet)#>
+<#
+    }
+}
+#>
+    }
+
+    protected override void OnModelCreating(DbModelBuilder modelBuilder)
+    {
+        throw new UnintentionalCodeFirstException();
+    }
+
+<#
+    foreach (var entitySet in container.BaseEntitySets.OfType<EntitySet>())
+    {
+#>
+    <#=codeStringGenerator.DbSet(entitySet)#>
+<#
+    }
+
+    foreach (var edmFunction in container.FunctionImports)
+    {
+        WriteFunctionImport(typeMapper, codeStringGenerator, edmFunction, modelNamespace, includeMergeOption: false);
+    }
+#>
+}
+<#
+
+if (!String.IsNullOrEmpty(codeNamespace))
+{
+    PopIndent();
+#>
+}
+<#
+}
+#>
+<#+
+
+private void WriteFunctionImport(TypeMapper typeMapper, CodeStringGenerator codeStringGenerator, EdmFunction edmFunction, string modelNamespace, bool includeMergeOption)
+{
+    if (typeMapper.IsComposable(edmFunction))
+    {
+#>
+
+    [DbFunction("<#=edmFunction.NamespaceName#>", "<#=edmFunction.Name#>")]
+    <#=codeStringGenerator.ComposableFunctionMethod(edmFunction, modelNamespace)#>
+    {
+<#+
+        codeStringGenerator.WriteFunctionParameters(edmFunction, WriteFunctionParameter);
+#>
+        <#=codeStringGenerator.ComposableCreateQuery(edmFunction, modelNamespace)#>
+    }
+<#+
+    }
+    else
+    {
+#>
+
+    <#=codeStringGenerator.FunctionMethod(edmFunction, modelNamespace, includeMergeOption)#>
+    {
+<#+
+        codeStringGenerator.WriteFunctionParameters(edmFunction, WriteFunctionParameter);
+#>
+        <#=codeStringGenerator.ExecuteFunction(edmFunction, modelNamespace, includeMergeOption)#>
+    }
+<#+
+        if (typeMapper.GenerateMergeOptionFunction(edmFunction, includeMergeOption))
+        {
+            WriteFunctionImport(typeMapper, codeStringGenerator, edmFunction, modelNamespace, includeMergeOption: true);
+        }
+    }
+}
+
+public void WriteFunctionParameter(string name, string isNotNull, string notNullInit, string nullInit)
+{
+#>
+        var <#=name#> = <#=isNotNull#> ?
+            <#=notNullInit#> :
+            <#=nullInit#>;
+
+<#+
+}
+
+public const string TemplateId = "CSharp_DbContext_Context_EF6";
+
+public class CodeStringGenerator
+{
+    private readonly CodeGenerationTools _code;
+    private readonly TypeMapper _typeMapper;
+    private readonly MetadataTools _ef;
+
+    public CodeStringGenerator(CodeGenerationTools code, TypeMapper typeMapper, MetadataTools ef)
+    {
+        ArgumentNotNull(code, "code");
+        ArgumentNotNull(typeMapper, "typeMapper");
+        ArgumentNotNull(ef, "ef");
+
+        _code = code;
+        _typeMapper = typeMapper;
+        _ef = ef;
+    }
+
+    public string Property(EdmProperty edmProperty)
+    {
+        return string.Format(
+            CultureInfo.InvariantCulture,
+            "{0} {1} {2} {{ {3}get; {4}set; }}",
+            Accessibility.ForProperty(edmProperty),
+            _typeMapper.GetTypeName(edmProperty.TypeUsage),
+            _code.Escape(edmProperty),
+            _code.SpaceAfter(Accessibility.ForGetter(edmProperty)),
+            _code.SpaceAfter(Accessibility.ForSetter(edmProperty)));
+    }
+
+    public string NavigationProperty(NavigationProperty navProp)
+    {
+        var endType = _typeMapper.GetTypeName(navProp.ToEndMember.GetEntityType());
+        return string.Format(
+            CultureInfo.InvariantCulture,
+            "{0} {1} {2} {{ {3}get; {4}set; }}",
+            AccessibilityAndVirtual(Accessibility.ForNavigationProperty(navProp)),
+            navProp.ToEndMember.RelationshipMultiplicity == RelationshipMultiplicity.Many ? ("ICollection<" + endType + ">") : endType,
+            _code.Escape(navProp),
+            _code.SpaceAfter(Accessibility.ForGetter(navProp)),
+            _code.SpaceAfter(Accessibility.ForSetter(navProp)));
+    }
+    
+    public string AccessibilityAndVirtual(string accessibility)
+    {
+        return accessibility + (accessibility != "private" ? " virtual" : "");
+    }
+    
+    public string EntityClassOpening(EntityType entity)
+    {
+        return string.Format(
+            CultureInfo.InvariantCulture,
+            "{0} {1}partial class {2}{3}",
+            Accessibility.ForType(entity),
+            _code.SpaceAfter(_code.AbstractOption(entity)),
+            _code.Escape(entity),
+            _code.StringBefore(" : ", _typeMapper.GetTypeName(entity.BaseType)));
+    }
+    
+    public string EnumOpening(SimpleType enumType)
+    {
+        return string.Format(
+            CultureInfo.InvariantCulture,
+            "{0} enum {1} : {2}",
+            Accessibility.ForType(enumType),
+            _code.Escape(enumType),
+            _code.Escape(_typeMapper.UnderlyingClrType(enumType)));
+        }
+    
+    public void WriteFunctionParameters(EdmFunction edmFunction, Action<string, string, string, string> writeParameter)
+    {
+        var parameters = FunctionImportParameter.Create(edmFunction.Parameters, _code, _ef);
+        foreach (var parameter in parameters.Where(p => p.NeedsLocalVariable))
+        {
+            var isNotNull = parameter.IsNullableOfT ? parameter.FunctionParameterName + ".HasValue" : parameter.FunctionParameterName + " != null";
+            var notNullInit = "new ObjectParameter(\"" + parameter.EsqlParameterName + "\", " + parameter.FunctionParameterName + ")";
+            var nullInit = "new ObjectParameter(\"" + parameter.EsqlParameterName + "\", typeof(" + TypeMapper.FixNamespaces(parameter.RawClrTypeName) + "))";
+            writeParameter(parameter.LocalVariableName, isNotNull, notNullInit, nullInit);
+        }
+    }
+    
+    public string ComposableFunctionMethod(EdmFunction edmFunction, string modelNamespace)
+    {
+        var parameters = _typeMapper.GetParameters(edmFunction);
+        
+        return string.Format(
+            CultureInfo.InvariantCulture,
+            "{0} IQueryable<{1}> {2}({3})",
+            AccessibilityAndVirtual(Accessibility.ForMethod(edmFunction)),
+            _typeMapper.GetTypeName(_typeMapper.GetReturnType(edmFunction), modelNamespace),
+            _code.Escape(edmFunction),
+            string.Join(", ", parameters.Select(p => TypeMapper.FixNamespaces(p.FunctionParameterType) + " " + p.FunctionParameterName).ToArray()));
+    }
+    
+    public string ComposableCreateQuery(EdmFunction edmFunction, string modelNamespace)
+    {
+        var parameters = _typeMapper.GetParameters(edmFunction);
+        
+        return string.Format(
+            CultureInfo.InvariantCulture,
+            "return ((IObjectContextAdapter)this).ObjectContext.CreateQuery<{0}>(\"[{1}].[{2}]({3})\"{4});",
+            _typeMapper.GetTypeName(_typeMapper.GetReturnType(edmFunction), modelNamespace),
+            edmFunction.NamespaceName,
+            edmFunction.Name,
+            string.Join(", ", parameters.Select(p => "@" + p.EsqlParameterName).ToArray()),
+            _code.StringBefore(", ", string.Join(", ", parameters.Select(p => p.ExecuteParameterName).ToArray())));
+    }
+    
+    public string FunctionMethod(EdmFunction edmFunction, string modelNamespace, bool includeMergeOption)
+    {
+        var parameters = _typeMapper.GetParameters(edmFunction);
+        var returnType = _typeMapper.GetReturnType(edmFunction);
+
+        var paramList = String.Join(", ", parameters.Select(p => TypeMapper.FixNamespaces(p.FunctionParameterType) + " " + p.FunctionParameterName).ToArray());
+        if (includeMergeOption)
+        {
+            paramList = _code.StringAfter(paramList, ", ") + "MergeOption mergeOption";
+        }
+
+        return string.Format(
+            CultureInfo.InvariantCulture,
+            "{0} {1} {2}({3})",
+            AccessibilityAndVirtual(Accessibility.ForMethod(edmFunction)),
+            returnType == null ? "int" : "ObjectResult<" + _typeMapper.GetTypeName(returnType, modelNamespace) + ">",
+            _code.Escape(edmFunction),
+            paramList);
+    }
+    
+    public string ExecuteFunction(EdmFunction edmFunction, string modelNamespace, bool includeMergeOption)
+    {
+        var parameters = _typeMapper.GetParameters(edmFunction);
+        var returnType = _typeMapper.GetReturnType(edmFunction);
+
+        var callParams = _code.StringBefore(", ", String.Join(", ", parameters.Select(p => p.ExecuteParameterName).ToArray()));
+        if (includeMergeOption)
+        {
+            callParams = ", mergeOption" + callParams;
+        }
+        
+        return string.Format(
+            CultureInfo.InvariantCulture,
+            "return ((IObjectContextAdapter)this).ObjectContext.ExecuteFunction{0}(\"{1}\"{2});",
+            returnType == null ? "" : "<" + _typeMapper.GetTypeName(returnType, modelNamespace) + ">",
+            edmFunction.Name,
+            callParams);
+    }
+    
+    public string DbSet(EntitySet entitySet)
+    {
+        return string.Format(
+            CultureInfo.InvariantCulture,
+            "{0} virtual DbSet<{1}> {2} {{ get; set; }}",
+            Accessibility.ForReadOnlyProperty(entitySet),
+            _typeMapper.GetTypeName(entitySet.ElementType),
+            _code.Escape(entitySet));
+    }
+
+    public string DbSetInitializer(EntitySet entitySet)
+    {
+        return string.Format(
+            CultureInfo.InvariantCulture,
+            "{0} = Set<{1}>();",
+            _code.Escape(entitySet),
+            _typeMapper.GetTypeName(entitySet.ElementType));
+    }
+
+    public string UsingDirectives(bool inHeader, bool includeCollections = true)
+    {
+        return inHeader == string.IsNullOrEmpty(_code.VsNamespaceSuggestion())
+            ? string.Format(
+                CultureInfo.InvariantCulture,
+                "{0}using System;{1}" +
+                "{2}",
+                inHeader ? Environment.NewLine : "",
+                includeCollections ? (Environment.NewLine + "using System.Collections.Generic;") : "",
+                inHeader ? "" : Environment.NewLine)
+            : "";
+    }
+}
+
+public class TypeMapper
+{
+    private const string ExternalTypeNameAttributeName = @"http://schemas.microsoft.com/ado/2006/04/codegeneration:ExternalTypeName";
+
+    private readonly System.Collections.IList _errors;
+    private readonly CodeGenerationTools _code;
+    private readonly MetadataTools _ef;
+
+    public static string FixNamespaces(string typeName)
+    {
+        return typeName.Replace("System.Data.Spatial.", "System.Data.Entity.Spatial.");
+    }
+
+    public TypeMapper(CodeGenerationTools code, MetadataTools ef, System.Collections.IList errors)
+    {
+        ArgumentNotNull(code, "code");
+        ArgumentNotNull(ef, "ef");
+        ArgumentNotNull(errors, "errors");
+
+        _code = code;
+        _ef = ef;
+        _errors = errors;
+    }
+
+    public string GetTypeName(TypeUsage typeUsage)
+    {
+        return typeUsage == null ? null : GetTypeName(typeUsage.EdmType, _ef.IsNullable(typeUsage), modelNamespace: null);
+    }
+
+    public string GetTypeName(EdmType edmType)
+    {
+        return GetTypeName(edmType, isNullable: null, modelNamespace: null);
+    }
+
+    public string GetTypeName(TypeUsage typeUsage, string modelNamespace)
+    {
+        return typeUsage == null ? null : GetTypeName(typeUsage.EdmType, _ef.IsNullable(typeUsage), modelNamespace);
+    }
+
+    public string GetTypeName(EdmType edmType, string modelNamespace)
+    {
+        return GetTypeName(edmType, isNullable: null, modelNamespace: modelNamespace);
+    }
+
+    public string GetTypeName(EdmType edmType, bool? isNullable, string modelNamespace)
+    {
+        if (edmType == null)
+        {
+            return null;
+        }
+
+        var collectionType = edmType as CollectionType;
+        if (collectionType != null)
+        {
+            return String.Format(CultureInfo.InvariantCulture, "ICollection<{0}>", GetTypeName(collectionType.TypeUsage, modelNamespace));
+        }
+
+        var typeName = _code.Escape(edmType.MetadataProperties
+                                .Where(p => p.Name == ExternalTypeNameAttributeName)
+                                .Select(p => (string)p.Value)
+                                .FirstOrDefault())
+            ?? (modelNamespace != null && edmType.NamespaceName != modelNamespace ?
+                _code.CreateFullName(_code.EscapeNamespace(edmType.NamespaceName), _code.Escape(edmType)) :
+                _code.Escape(edmType));
+
+        if (edmType is StructuralType)
+        {
+            return typeName;
+        }
+
+        if (edmType is SimpleType)
+        {
+            var clrType = UnderlyingClrType(edmType);
+            if (!IsEnumType(edmType))
+            {
+                typeName = _code.Escape(clrType);
+            }
+
+            typeName = FixNamespaces(typeName);
+
+            return clrType.IsValueType && isNullable == true ?
+                String.Format(CultureInfo.InvariantCulture, "Nullable<{0}>", typeName) :
+                typeName;
+        }
+
+        throw new ArgumentException("edmType");
+    }
+    
+    public Type UnderlyingClrType(EdmType edmType)
+    {
+        ArgumentNotNull(edmType, "edmType");
+
+        var primitiveType = edmType as PrimitiveType;
+        if (primitiveType != null)
+        {
+            return primitiveType.ClrEquivalentType;
+        }
+
+        if (IsEnumType(edmType))
+        {
+            return GetEnumUnderlyingType(edmType).ClrEquivalentType;
+        }
+
+        return typeof(object);
+    }
+    
+    public object GetEnumMemberValue(MetadataItem enumMember)
+    {
+        ArgumentNotNull(enumMember, "enumMember");
+        
+        var valueProperty = enumMember.GetType().GetProperty("Value");
+        return valueProperty == null ? null : valueProperty.GetValue(enumMember, null);
+    }
+    
+    public string GetEnumMemberName(MetadataItem enumMember)
+    {
+        ArgumentNotNull(enumMember, "enumMember");
+        
+        var nameProperty = enumMember.GetType().GetProperty("Name");
+        return nameProperty == null ? null : (string)nameProperty.GetValue(enumMember, null);
+    }
+
+    public System.Collections.IEnumerable GetEnumMembers(EdmType enumType)
+    {
+        ArgumentNotNull(enumType, "enumType");
+
+        var membersProperty = enumType.GetType().GetProperty("Members");
+        return membersProperty != null 
+            ? (System.Collections.IEnumerable)membersProperty.GetValue(enumType, null)
+            : Enumerable.Empty<MetadataItem>();
+    }
+    
+    public bool EnumIsFlags(EdmType enumType)
+    {
+        ArgumentNotNull(enumType, "enumType");
+        
+        var isFlagsProperty = enumType.GetType().GetProperty("IsFlags");
+        return isFlagsProperty != null && (bool)isFlagsProperty.GetValue(enumType, null);
+    }
+
+    public bool IsEnumType(GlobalItem edmType)
+    {
+        ArgumentNotNull(edmType, "edmType");
+
+        return edmType.GetType().Name == "EnumType";
+    }
+
+    public PrimitiveType GetEnumUnderlyingType(EdmType enumType)
+    {
+        ArgumentNotNull(enumType, "enumType");
+
+        return (PrimitiveType)enumType.GetType().GetProperty("UnderlyingType").GetValue(enumType, null);
+    }
+
+    public string CreateLiteral(object value)
+    {
+        if (value == null || value.GetType() != typeof(TimeSpan))
+        {
+            return _code.CreateLiteral(value);
+        }
+
+        return string.Format(CultureInfo.InvariantCulture, "new TimeSpan({0})", ((TimeSpan)value).Ticks);
+    }
+    
+    public bool VerifyCaseInsensitiveTypeUniqueness(IEnumerable<string> types, string sourceFile)
+    {
+        ArgumentNotNull(types, "types");
+        ArgumentNotNull(sourceFile, "sourceFile");
+        
+        var hash = new HashSet<string>(StringComparer.InvariantCultureIgnoreCase);
+        if (types.Any(item => !hash.Add(item)))
+        {
+            _errors.Add(
+                new CompilerError(sourceFile, -1, -1, "6023",
+                    String.Format(CultureInfo.CurrentCulture, CodeGenerationTools.GetResourceString("Template_CaseInsensitiveTypeConflict"))));
+            return false;
+        }
+        return true;
+    }
+    
+    public IEnumerable<SimpleType> GetEnumItemsToGenerate(IEnumerable<GlobalItem> itemCollection)
+    {
+        return GetItemsToGenerate<SimpleType>(itemCollection)
+            .Where(e => IsEnumType(e));
+    }
+    
+    public IEnumerable<T> GetItemsToGenerate<T>(IEnumerable<GlobalItem> itemCollection) where T: EdmType
+    {
+        return itemCollection
+            .OfType<T>()
+            .Where(i => !i.MetadataProperties.Any(p => p.Name == ExternalTypeNameAttributeName))
+            .OrderBy(i => i.Name);
+    }
+
+    public IEnumerable<string> GetAllGlobalItems(IEnumerable<GlobalItem> itemCollection)
+    {
+        return itemCollection
+            .Where(i => i is EntityType || i is ComplexType || i is EntityContainer || IsEnumType(i))
+            .Select(g => GetGlobalItemName(g));
+    }
+
+    public string GetGlobalItemName(GlobalItem item)
+    {
+        if (item is EdmType)
+        {
+            return ((EdmType)item).Name;
+        }
+        else
+        {
+            return ((EntityContainer)item).Name;
+        }
+    }
+
+    public IEnumerable<EdmProperty> GetSimpleProperties(EntityType type)
+    {
+        return type.Properties.Where(p => p.TypeUsage.EdmType is SimpleType && p.DeclaringType == type);
+    }
+    
+    public IEnumerable<EdmProperty> GetSimpleProperties(ComplexType type)
+    {
+        return type.Properties.Where(p => p.TypeUsage.EdmType is SimpleType && p.DeclaringType == type);
+    }
+    
+    public IEnumerable<EdmProperty> GetComplexProperties(EntityType type)
+    {
+        return type.Properties.Where(p => p.TypeUsage.EdmType is ComplexType && p.DeclaringType == type);
+    }
+    
+    public IEnumerable<EdmProperty> GetComplexProperties(ComplexType type)
+    {
+        return type.Properties.Where(p => p.TypeUsage.EdmType is ComplexType && p.DeclaringType == type);
+    }
+
+    public IEnumerable<EdmProperty> GetPropertiesWithDefaultValues(EntityType type)
+    {
+        return type.Properties.Where(p => p.TypeUsage.EdmType is SimpleType && p.DeclaringType == type && p.DefaultValue != null);
+    }
+    
+    public IEnumerable<EdmProperty> GetPropertiesWithDefaultValues(ComplexType type)
+    {
+        return type.Properties.Where(p => p.TypeUsage.EdmType is SimpleType && p.DeclaringType == type && p.DefaultValue != null);
+    }
+
+    public IEnumerable<NavigationProperty> GetNavigationProperties(EntityType type)
+    {
+        return type.NavigationProperties.Where(np => np.DeclaringType == type);
+    }
+    
+    public IEnumerable<NavigationProperty> GetCollectionNavigationProperties(EntityType type)
+    {
+        return type.NavigationProperties.Where(np => np.DeclaringType == type && np.ToEndMember.RelationshipMultiplicity == RelationshipMultiplicity.Many);
+    }
+    
+    public FunctionParameter GetReturnParameter(EdmFunction edmFunction)
+    {
+        ArgumentNotNull(edmFunction, "edmFunction");
+
+        var returnParamsProperty = edmFunction.GetType().GetProperty("ReturnParameters");
+        return returnParamsProperty == null
+            ? edmFunction.ReturnParameter
+            : ((IEnumerable<FunctionParameter>)returnParamsProperty.GetValue(edmFunction, null)).FirstOrDefault();
+    }
+
+    public bool IsComposable(EdmFunction edmFunction)
+    {
+        ArgumentNotNull(edmFunction, "edmFunction");
+
+        var isComposableProperty = edmFunction.GetType().GetProperty("IsComposableAttribute");
+        return isComposableProperty != null && (bool)isComposableProperty.GetValue(edmFunction, null);
+    }
+
+    public IEnumerable<FunctionImportParameter> GetParameters(EdmFunction edmFunction)
+    {
+        return FunctionImportParameter.Create(edmFunction.Parameters, _code, _ef);
+    }
+
+    public TypeUsage GetReturnType(EdmFunction edmFunction)
+    {
+        var returnParam = GetReturnParameter(edmFunction);
+        return returnParam == null ? null : _ef.GetElementType(returnParam.TypeUsage);
+    }
+    
+    public bool GenerateMergeOptionFunction(EdmFunction edmFunction, bool includeMergeOption)
+    {
+        var returnType = GetReturnType(edmFunction);
+        return !includeMergeOption && returnType != null && returnType.EdmType.BuiltInTypeKind == BuiltInTypeKind.EntityType;
+    }
+}
+
+public static void ArgumentNotNull<T>(T arg, string name) where T : class
+{
+    if (arg == null)
+    {
+        throw new ArgumentNullException(name);
+    }
+}
+#>

+ 10 - 0
ProOdezhda/Model1.Designer.cs

@@ -0,0 +1,10 @@
+// Создание кода T4 для модели "C:\Users\admin\source\repos\ProOdezhda\ProOdezhda\Model1.edmx" включено. 
+// Чтобы включить формирование кода прежних версий, измените значение свойства "Стратегия создания кода" конструктора
+// на "Legacy ObjectContext". Это свойство доступно в окне "Свойства", если модель
+// открыта в конструкторе.
+
+// Если не сформированы контекст и классы сущности, возможная причина в том, что вы создали пустую модель, но
+// еще не выбрали версию Entity Framework для использования. Чтобы сформировать класс контекста и классы сущностей
+// для своей модели, откройте модель в конструкторе, щелкните правой кнопкой область конструктора и
+// выберите "Обновить модель из базы данных", "Сформировать базу данных из модели" или "Добавить элемент формирования
+// кода...".

+ 9 - 0
ProOdezhda/Model1.cs

@@ -0,0 +1,9 @@
+//------------------------------------------------------------------------------
+// <auto-generated>
+//     Этот код создан по шаблону.
+//
+//     Изменения, вносимые в этот файл вручную, могут привести к непредвиденной работе приложения.
+//     Изменения, вносимые в этот файл вручную, будут перезаписаны при повторном создании кода.
+// </auto-generated>
+//------------------------------------------------------------------------------
+

File diff suppressed because it is too large
+ 1180 - 0
ProOdezhda/Model1.edmx


+ 46 - 0
ProOdezhda/Model1.edmx.diagram

@@ -0,0 +1,46 @@
+<?xml version="1.0" encoding="utf-8"?>
+<edmx:Edmx Version="3.0" xmlns:edmx="http://schemas.microsoft.com/ado/2009/11/edmx">
+ <!-- EF Designer content (DO NOT EDIT MANUALLY BELOW HERE) -->
+  <edmx:Designer xmlns="http://schemas.microsoft.com/ado/2009/11/edmx">
+    <!-- Diagram content (shape and connector positions) -->
+    <edmx:Diagrams>
+      <Diagram DiagramId="c8f1bc73e5ed46a58078e7863c9b6579" Name="Diagram1">
+        <EntityTypeShape EntityType="ProOdezhdaModel.CATEGORY_C" Width="1.5" PointX="0.75" PointY="11.125" IsExpanded="true" />
+        <EntityTypeShape EntityType="ProOdezhdaModel.CATEGORY_N" Width="1.5" PointX="3" PointY="2.25" IsExpanded="true" />
+        <EntityTypeShape EntityType="ProOdezhdaModel.COUNTERPARTY" Width="1.5" PointX="3" PointY="9.75" IsExpanded="true" />
+        <EntityTypeShape EntityType="ProOdezhdaModel.DISPATCH" Width="1.5" PointX="7.5" PointY="14.375" IsExpanded="true" />
+        <EntityTypeShape EntityType="ProOdezhdaModel.NOMENCLATURE" Width="1.5" PointX="5.25" PointY="0.75" IsExpanded="true" />
+        <EntityTypeShape EntityType="ProOdezhdaModel.ORDER" Width="1.5" PointX="5.25" PointY="7.5" IsExpanded="true" />
+        <EntityTypeShape EntityType="ProOdezhdaModel.ORDER_LIST" Width="1.5" PointX="7.5" PointY="7.625" IsExpanded="true" />
+        <EntityTypeShape EntityType="ProOdezhdaModel.POSITION" Width="1.5" PointX="0.75" PointY="5.125" IsExpanded="true" />
+        <EntityTypeShape EntityType="ProOdezhdaModel.PURCHASE_INVOICE" Width="1.5" PointX="7.5" PointY="11.375" IsExpanded="true" />
+        <EntityTypeShape EntityType="ProOdezhdaModel.RATING" Width="1.5" PointX="5.25" PointY="11.5" IsExpanded="true" />
+        <EntityTypeShape EntityType="ProOdezhdaModel.REQUEST" Width="1.5" PointX="5.25" PointY="14.25" IsExpanded="true" />
+        <EntityTypeShape EntityType="ProOdezhdaModel.REQUEST_LIST" Width="1.5" PointX="10.5" PointY="14.125" IsExpanded="true" />
+        <EntityTypeShape EntityType="ProOdezhdaModel.RETAIL_REPORT" Width="1.5" PointX="5.25" PointY="17.375" IsExpanded="true" />
+        <EntityTypeShape EntityType="ProOdezhdaModel.RETAIL_REPORT_LIST" Width="1.5" PointX="7.5" PointY="18.125" IsExpanded="true" />
+        <EntityTypeShape EntityType="ProOdezhdaModel.TYPE" Width="1.5" PointX="0.75" PointY="8" IsExpanded="true" />
+        <EntityTypeShape EntityType="ProOdezhdaModel.USER" Width="1.5" PointX="3" PointY="4.75" IsExpanded="true" />
+        <EntityTypeShape EntityType="ProOdezhdaModel.USER_ACTIVITY" Width="1.5" PointX="5.75" PointY="4.25" IsExpanded="true" />
+        <AssociationConnector Association="ProOdezhdaModel.FK__COUNTERPA__FK_CA__44FF419A" ManuallyRouted="false" />
+        <AssociationConnector Association="ProOdezhdaModel.FK__NOMENCLAT__FK_CA__52593CB8" ManuallyRouted="false" />
+        <AssociationConnector Association="ProOdezhdaModel.FK__COUNTERPA__FK_TY__440B1D61" ManuallyRouted="false" />
+        <AssociationConnector Association="ProOdezhdaModel.FK__ORDER__FK_COUNTE__4E88ABD4" ManuallyRouted="false" />
+        <AssociationConnector Association="ProOdezhdaModel.FK__RATING__FK_COUNT__4316F928" ManuallyRouted="false" />
+        <AssociationConnector Association="ProOdezhdaModel.FK__REQUEST__FK_COUN__47DBAE45" ManuallyRouted="false" />
+        <AssociationConnector Association="ProOdezhdaModel.FK__RETAIL_RE__FK_CO__4AB81AF0" ManuallyRouted="false" />
+        <AssociationConnector Association="ProOdezhdaModel.FK__DISPATCH__FK_REQ__45F365D3" ManuallyRouted="false" />
+        <AssociationConnector Association="ProOdezhdaModel.FK__DISPATCH__FK_USE__46E78A0C" ManuallyRouted="false" />
+        <AssociationConnector Association="ProOdezhdaModel.FK__ORDER_LIS__FK_NO__5165187F" ManuallyRouted="false" />
+        <AssociationConnector Association="ProOdezhdaModel.FK__REQUEST_L__FK_NO__49C3F6B7" ManuallyRouted="false" />
+        <AssociationConnector Association="ProOdezhdaModel.FK__RETAIL_RE__FK_NO__4CA06362" ManuallyRouted="false" />
+        <AssociationConnector Association="ProOdezhdaModel.FK__ORDER__FK_USER_I__4F7CD00D" ManuallyRouted="false" />
+        <AssociationConnector Association="ProOdezhdaModel.FK__ORDER_LIS__FK_OR__5070F446" ManuallyRouted="false" />
+        <AssociationConnector Association="ProOdezhdaModel.FK__PURCHASE___FK_OR__4D94879B" ManuallyRouted="false" />
+        <AssociationConnector Association="ProOdezhdaModel.FK__USER__FK_POSITIO__534D60F1" ManuallyRouted="false" />
+        <AssociationConnector Association="ProOdezhdaModel.FK__REQUEST_L__FK_RE__48CFD27E" ManuallyRouted="false" />
+        <AssociationConnector Association="ProOdezhdaModel.FK__RETAIL_RE__FK_RE__4BAC3F29" ManuallyRouted="false" />
+      </Diagram>
+    </edmx:Diagrams>
+  </edmx:Designer>
+</edmx:Edmx>

+ 733 - 0
ProOdezhda/Model1.tt

@@ -0,0 +1,733 @@
+<#@ template language="C#" debug="false" hostspecific="true"#>
+<#@ include file="EF6.Utility.CS.ttinclude"#><#@ 
+ output extension=".cs"#><#
+
+const string inputFile = @"Model1.edmx";
+var textTransform = DynamicTextTransformation.Create(this);
+var code = new CodeGenerationTools(this);
+var ef = new MetadataTools(this);
+var typeMapper = new TypeMapper(code, ef, textTransform.Errors);
+var	fileManager = EntityFrameworkTemplateFileManager.Create(this);
+var itemCollection = new EdmMetadataLoader(textTransform.Host, textTransform.Errors).CreateEdmItemCollection(inputFile);
+var codeStringGenerator = new CodeStringGenerator(code, typeMapper, ef);
+
+if (!typeMapper.VerifyCaseInsensitiveTypeUniqueness(typeMapper.GetAllGlobalItems(itemCollection), inputFile))
+{
+    return string.Empty;
+}
+
+WriteHeader(codeStringGenerator, fileManager);
+
+foreach (var entity in typeMapper.GetItemsToGenerate<EntityType>(itemCollection))
+{
+    fileManager.StartNewFile(entity.Name + ".cs");
+    BeginNamespace(code);
+#>
+<#=codeStringGenerator.UsingDirectives(inHeader: false)#>
+<#=codeStringGenerator.EntityClassOpening(entity)#>
+{
+<#
+    var propertiesWithDefaultValues = typeMapper.GetPropertiesWithDefaultValues(entity);
+    var collectionNavigationProperties = typeMapper.GetCollectionNavigationProperties(entity);
+    var complexProperties = typeMapper.GetComplexProperties(entity);
+
+    if (propertiesWithDefaultValues.Any() || collectionNavigationProperties.Any() || complexProperties.Any())
+    {
+#>
+    [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2214:DoNotCallOverridableMethodsInConstructors")]
+    public <#=code.Escape(entity)#>()
+    {
+<#
+        foreach (var edmProperty in propertiesWithDefaultValues)
+        {
+#>
+        this.<#=code.Escape(edmProperty)#> = <#=typeMapper.CreateLiteral(edmProperty.DefaultValue)#>;
+<#
+        }
+
+        foreach (var navigationProperty in collectionNavigationProperties)
+        {
+#>
+        this.<#=code.Escape(navigationProperty)#> = new HashSet<<#=typeMapper.GetTypeName(navigationProperty.ToEndMember.GetEntityType())#>>();
+<#
+        }
+
+        foreach (var complexProperty in complexProperties)
+        {
+#>
+        this.<#=code.Escape(complexProperty)#> = new <#=typeMapper.GetTypeName(complexProperty.TypeUsage)#>();
+<#
+        }
+#>
+    }
+
+<#
+    }
+
+    var simpleProperties = typeMapper.GetSimpleProperties(entity);
+    if (simpleProperties.Any())
+    {
+        foreach (var edmProperty in simpleProperties)
+        {
+#>
+    <#=codeStringGenerator.Property(edmProperty)#>
+<#
+        }
+    }
+
+    if (complexProperties.Any())
+    {
+#>
+
+<#
+        foreach(var complexProperty in complexProperties)
+        {
+#>
+    <#=codeStringGenerator.Property(complexProperty)#>
+<#
+        }
+    }
+
+    var navigationProperties = typeMapper.GetNavigationProperties(entity);
+    if (navigationProperties.Any())
+    {
+#>
+
+<#
+        foreach (var navigationProperty in navigationProperties)
+        {
+            if (navigationProperty.ToEndMember.RelationshipMultiplicity == RelationshipMultiplicity.Many)
+            {
+#>
+    [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2227:CollectionPropertiesShouldBeReadOnly")]
+<#
+            }
+#>
+    <#=codeStringGenerator.NavigationProperty(navigationProperty)#>
+<#
+        }
+    }
+#>
+}
+<#
+    EndNamespace(code);
+}
+
+foreach (var complex in typeMapper.GetItemsToGenerate<ComplexType>(itemCollection))
+{
+    fileManager.StartNewFile(complex.Name + ".cs");
+    BeginNamespace(code);
+#>
+<#=codeStringGenerator.UsingDirectives(inHeader: false, includeCollections: false)#>
+<#=Accessibility.ForType(complex)#> partial class <#=code.Escape(complex)#>
+{
+<#
+    var complexProperties = typeMapper.GetComplexProperties(complex);
+    var propertiesWithDefaultValues = typeMapper.GetPropertiesWithDefaultValues(complex);
+
+    if (propertiesWithDefaultValues.Any() || complexProperties.Any())
+    {
+#>
+    public <#=code.Escape(complex)#>()
+    {
+<#
+        foreach (var edmProperty in propertiesWithDefaultValues)
+        {
+#>
+        this.<#=code.Escape(edmProperty)#> = <#=typeMapper.CreateLiteral(edmProperty.DefaultValue)#>;
+<#
+        }
+
+        foreach (var complexProperty in complexProperties)
+        {
+#>
+        this.<#=code.Escape(complexProperty)#> = new <#=typeMapper.GetTypeName(complexProperty.TypeUsage)#>();
+<#
+        }
+#>
+    }
+
+<#
+    }
+
+    var simpleProperties = typeMapper.GetSimpleProperties(complex);
+    if (simpleProperties.Any())
+    {
+        foreach(var edmProperty in simpleProperties)
+        {
+#>
+    <#=codeStringGenerator.Property(edmProperty)#>
+<#
+        }
+    }
+
+    if (complexProperties.Any())
+    {
+#>
+
+<#
+        foreach(var edmProperty in complexProperties)
+        {
+#>
+    <#=codeStringGenerator.Property(edmProperty)#>
+<#
+        }
+    }
+#>
+}
+<#
+    EndNamespace(code);
+}
+
+foreach (var enumType in typeMapper.GetEnumItemsToGenerate(itemCollection))
+{
+    fileManager.StartNewFile(enumType.Name + ".cs");
+    BeginNamespace(code);
+#>
+<#=codeStringGenerator.UsingDirectives(inHeader: false, includeCollections: false)#>
+<#
+    if (typeMapper.EnumIsFlags(enumType))
+    {
+#>
+[Flags]
+<#
+    }
+#>
+<#=codeStringGenerator.EnumOpening(enumType)#>
+{
+<#
+    var foundOne = false;
+    
+    foreach (MetadataItem member in typeMapper.GetEnumMembers(enumType))
+    {
+        foundOne = true;
+#>
+    <#=code.Escape(typeMapper.GetEnumMemberName(member))#> = <#=typeMapper.GetEnumMemberValue(member)#>,
+<#
+    }
+
+    if (foundOne)
+    {
+        this.GenerationEnvironment.Remove(this.GenerationEnvironment.Length - 3, 1);
+    }
+#>
+}
+<#
+    EndNamespace(code);
+}
+
+fileManager.Process();
+
+#>
+<#+
+
+public void WriteHeader(CodeStringGenerator codeStringGenerator, EntityFrameworkTemplateFileManager fileManager)
+{
+    fileManager.StartHeader();
+#>
+//------------------------------------------------------------------------------
+// <auto-generated>
+// <#=CodeGenerationTools.GetResourceString("Template_GeneratedCodeCommentLine1")#>
+//
+// <#=CodeGenerationTools.GetResourceString("Template_GeneratedCodeCommentLine2")#>
+// <#=CodeGenerationTools.GetResourceString("Template_GeneratedCodeCommentLine3")#>
+// </auto-generated>
+//------------------------------------------------------------------------------
+<#=codeStringGenerator.UsingDirectives(inHeader: true)#>
+<#+
+    fileManager.EndBlock();
+}
+
+public void BeginNamespace(CodeGenerationTools code)
+{
+    var codeNamespace = code.VsNamespaceSuggestion();
+    if (!String.IsNullOrEmpty(codeNamespace))
+    {
+#>
+namespace <#=code.EscapeNamespace(codeNamespace)#>
+{
+<#+
+        PushIndent("    ");
+    }
+}
+
+public void EndNamespace(CodeGenerationTools code)
+{
+    if (!String.IsNullOrEmpty(code.VsNamespaceSuggestion()))
+    {
+        PopIndent();
+#>
+}
+<#+
+    }
+}
+
+public const string TemplateId = "CSharp_DbContext_Types_EF6";
+
+public class CodeStringGenerator
+{
+    private readonly CodeGenerationTools _code;
+    private readonly TypeMapper _typeMapper;
+    private readonly MetadataTools _ef;
+
+    public CodeStringGenerator(CodeGenerationTools code, TypeMapper typeMapper, MetadataTools ef)
+    {
+        ArgumentNotNull(code, "code");
+        ArgumentNotNull(typeMapper, "typeMapper");
+        ArgumentNotNull(ef, "ef");
+
+        _code = code;
+        _typeMapper = typeMapper;
+        _ef = ef;
+    }
+
+    public string Property(EdmProperty edmProperty)
+    {
+        return string.Format(
+            CultureInfo.InvariantCulture,
+            "{0} {1} {2} {{ {3}get; {4}set; }}",
+            Accessibility.ForProperty(edmProperty),
+            _typeMapper.GetTypeName(edmProperty.TypeUsage),
+            _code.Escape(edmProperty),
+            _code.SpaceAfter(Accessibility.ForGetter(edmProperty)),
+            _code.SpaceAfter(Accessibility.ForSetter(edmProperty)));
+    }
+
+    public string NavigationProperty(NavigationProperty navProp)
+    {
+        var endType = _typeMapper.GetTypeName(navProp.ToEndMember.GetEntityType());
+        return string.Format(
+            CultureInfo.InvariantCulture,
+            "{0} {1} {2} {{ {3}get; {4}set; }}",
+            AccessibilityAndVirtual(Accessibility.ForNavigationProperty(navProp)),
+            navProp.ToEndMember.RelationshipMultiplicity == RelationshipMultiplicity.Many ? ("ICollection<" + endType + ">") : endType,
+            _code.Escape(navProp),
+            _code.SpaceAfter(Accessibility.ForGetter(navProp)),
+            _code.SpaceAfter(Accessibility.ForSetter(navProp)));
+    }
+    
+    public string AccessibilityAndVirtual(string accessibility)
+    {
+        return accessibility + (accessibility != "private" ? " virtual" : "");
+    }
+    
+    public string EntityClassOpening(EntityType entity)
+    {
+        return string.Format(
+            CultureInfo.InvariantCulture,
+            "{0} {1}partial class {2}{3}",
+            Accessibility.ForType(entity),
+            _code.SpaceAfter(_code.AbstractOption(entity)),
+            _code.Escape(entity),
+            _code.StringBefore(" : ", _typeMapper.GetTypeName(entity.BaseType)));
+    }
+    
+    public string EnumOpening(SimpleType enumType)
+    {
+        return string.Format(
+            CultureInfo.InvariantCulture,
+            "{0} enum {1} : {2}",
+            Accessibility.ForType(enumType),
+            _code.Escape(enumType),
+            _code.Escape(_typeMapper.UnderlyingClrType(enumType)));
+        }
+    
+    public void WriteFunctionParameters(EdmFunction edmFunction, Action<string, string, string, string> writeParameter)
+    {
+        var parameters = FunctionImportParameter.Create(edmFunction.Parameters, _code, _ef);
+        foreach (var parameter in parameters.Where(p => p.NeedsLocalVariable))
+        {
+            var isNotNull = parameter.IsNullableOfT ? parameter.FunctionParameterName + ".HasValue" : parameter.FunctionParameterName + " != null";
+            var notNullInit = "new ObjectParameter(\"" + parameter.EsqlParameterName + "\", " + parameter.FunctionParameterName + ")";
+            var nullInit = "new ObjectParameter(\"" + parameter.EsqlParameterName + "\", typeof(" + TypeMapper.FixNamespaces(parameter.RawClrTypeName) + "))";
+            writeParameter(parameter.LocalVariableName, isNotNull, notNullInit, nullInit);
+        }
+    }
+    
+    public string ComposableFunctionMethod(EdmFunction edmFunction, string modelNamespace)
+    {
+        var parameters = _typeMapper.GetParameters(edmFunction);
+        
+        return string.Format(
+            CultureInfo.InvariantCulture,
+            "{0} IQueryable<{1}> {2}({3})",
+            AccessibilityAndVirtual(Accessibility.ForMethod(edmFunction)),
+            _typeMapper.GetTypeName(_typeMapper.GetReturnType(edmFunction), modelNamespace),
+            _code.Escape(edmFunction),
+            string.Join(", ", parameters.Select(p => TypeMapper.FixNamespaces(p.FunctionParameterType) + " " + p.FunctionParameterName).ToArray()));
+    }
+    
+    public string ComposableCreateQuery(EdmFunction edmFunction, string modelNamespace)
+    {
+        var parameters = _typeMapper.GetParameters(edmFunction);
+        
+        return string.Format(
+            CultureInfo.InvariantCulture,
+            "return ((IObjectContextAdapter)this).ObjectContext.CreateQuery<{0}>(\"[{1}].[{2}]({3})\"{4});",
+            _typeMapper.GetTypeName(_typeMapper.GetReturnType(edmFunction), modelNamespace),
+            edmFunction.NamespaceName,
+            edmFunction.Name,
+            string.Join(", ", parameters.Select(p => "@" + p.EsqlParameterName).ToArray()),
+            _code.StringBefore(", ", string.Join(", ", parameters.Select(p => p.ExecuteParameterName).ToArray())));
+    }
+    
+    public string FunctionMethod(EdmFunction edmFunction, string modelNamespace, bool includeMergeOption)
+    {
+        var parameters = _typeMapper.GetParameters(edmFunction);
+        var returnType = _typeMapper.GetReturnType(edmFunction);
+
+        var paramList = String.Join(", ", parameters.Select(p => TypeMapper.FixNamespaces(p.FunctionParameterType) + " " + p.FunctionParameterName).ToArray());
+        if (includeMergeOption)
+        {
+            paramList = _code.StringAfter(paramList, ", ") + "MergeOption mergeOption";
+        }
+
+        return string.Format(
+            CultureInfo.InvariantCulture,
+            "{0} {1} {2}({3})",
+            AccessibilityAndVirtual(Accessibility.ForMethod(edmFunction)),
+            returnType == null ? "int" : "ObjectResult<" + _typeMapper.GetTypeName(returnType, modelNamespace) + ">",
+            _code.Escape(edmFunction),
+            paramList);
+    }
+    
+    public string ExecuteFunction(EdmFunction edmFunction, string modelNamespace, bool includeMergeOption)
+    {
+        var parameters = _typeMapper.GetParameters(edmFunction);
+        var returnType = _typeMapper.GetReturnType(edmFunction);
+
+        var callParams = _code.StringBefore(", ", String.Join(", ", parameters.Select(p => p.ExecuteParameterName).ToArray()));
+        if (includeMergeOption)
+        {
+            callParams = ", mergeOption" + callParams;
+        }
+        
+        return string.Format(
+            CultureInfo.InvariantCulture,
+            "return ((IObjectContextAdapter)this).ObjectContext.ExecuteFunction{0}(\"{1}\"{2});",
+            returnType == null ? "" : "<" + _typeMapper.GetTypeName(returnType, modelNamespace) + ">",
+            edmFunction.Name,
+            callParams);
+    }
+    
+    public string DbSet(EntitySet entitySet)
+    {
+        return string.Format(
+            CultureInfo.InvariantCulture,
+            "{0} virtual DbSet<{1}> {2} {{ get; set; }}",
+            Accessibility.ForReadOnlyProperty(entitySet),
+            _typeMapper.GetTypeName(entitySet.ElementType),
+            _code.Escape(entitySet));
+    }
+
+    public string UsingDirectives(bool inHeader, bool includeCollections = true)
+    {
+        return inHeader == string.IsNullOrEmpty(_code.VsNamespaceSuggestion())
+            ? string.Format(
+                CultureInfo.InvariantCulture,
+                "{0}using System;{1}" +
+                "{2}",
+                inHeader ? Environment.NewLine : "",
+                includeCollections ? (Environment.NewLine + "using System.Collections.Generic;") : "",
+                inHeader ? "" : Environment.NewLine)
+            : "";
+    }
+}
+
+public class TypeMapper
+{
+    private const string ExternalTypeNameAttributeName = @"http://schemas.microsoft.com/ado/2006/04/codegeneration:ExternalTypeName";
+
+    private readonly System.Collections.IList _errors;
+    private readonly CodeGenerationTools _code;
+    private readonly MetadataTools _ef;
+
+    public TypeMapper(CodeGenerationTools code, MetadataTools ef, System.Collections.IList errors)
+    {
+        ArgumentNotNull(code, "code");
+        ArgumentNotNull(ef, "ef");
+        ArgumentNotNull(errors, "errors");
+
+        _code = code;
+        _ef = ef;
+        _errors = errors;
+    }
+
+    public static string FixNamespaces(string typeName)
+    {
+        return typeName.Replace("System.Data.Spatial.", "System.Data.Entity.Spatial.");
+    }
+
+    public string GetTypeName(TypeUsage typeUsage)
+    {
+        return typeUsage == null ? null : GetTypeName(typeUsage.EdmType, _ef.IsNullable(typeUsage), modelNamespace: null);
+    }
+
+    public string GetTypeName(EdmType edmType)
+    {
+        return GetTypeName(edmType, isNullable: null, modelNamespace: null);
+    }
+
+    public string GetTypeName(TypeUsage typeUsage, string modelNamespace)
+    {
+        return typeUsage == null ? null : GetTypeName(typeUsage.EdmType, _ef.IsNullable(typeUsage), modelNamespace);
+    }
+
+    public string GetTypeName(EdmType edmType, string modelNamespace)
+    {
+        return GetTypeName(edmType, isNullable: null, modelNamespace: modelNamespace);
+    }
+
+    public string GetTypeName(EdmType edmType, bool? isNullable, string modelNamespace)
+    {
+        if (edmType == null)
+        {
+            return null;
+        }
+
+        var collectionType = edmType as CollectionType;
+        if (collectionType != null)
+        {
+            return String.Format(CultureInfo.InvariantCulture, "ICollection<{0}>", GetTypeName(collectionType.TypeUsage, modelNamespace));
+        }
+
+        var typeName = _code.Escape(edmType.MetadataProperties
+                                .Where(p => p.Name == ExternalTypeNameAttributeName)
+                                .Select(p => (string)p.Value)
+                                .FirstOrDefault())
+            ?? (modelNamespace != null && edmType.NamespaceName != modelNamespace ?
+                _code.CreateFullName(_code.EscapeNamespace(edmType.NamespaceName), _code.Escape(edmType)) :
+                _code.Escape(edmType));
+
+        if (edmType is StructuralType)
+        {
+            return typeName;
+        }
+
+        if (edmType is SimpleType)
+        {
+            var clrType = UnderlyingClrType(edmType);
+            if (!IsEnumType(edmType))
+            {
+                typeName = _code.Escape(clrType);
+            }
+
+            typeName = FixNamespaces(typeName);
+
+            return clrType.IsValueType && isNullable == true ?
+                String.Format(CultureInfo.InvariantCulture, "Nullable<{0}>", typeName) :
+                typeName;
+        }
+
+        throw new ArgumentException("edmType");
+    }
+    
+    public Type UnderlyingClrType(EdmType edmType)
+    {
+        ArgumentNotNull(edmType, "edmType");
+
+        var primitiveType = edmType as PrimitiveType;
+        if (primitiveType != null)
+        {
+            return primitiveType.ClrEquivalentType;
+        }
+
+        if (IsEnumType(edmType))
+        {
+            return GetEnumUnderlyingType(edmType).ClrEquivalentType;
+        }
+
+        return typeof(object);
+    }
+    
+    public object GetEnumMemberValue(MetadataItem enumMember)
+    {
+        ArgumentNotNull(enumMember, "enumMember");
+        
+        var valueProperty = enumMember.GetType().GetProperty("Value");
+        return valueProperty == null ? null : valueProperty.GetValue(enumMember, null);
+    }
+    
+    public string GetEnumMemberName(MetadataItem enumMember)
+    {
+        ArgumentNotNull(enumMember, "enumMember");
+        
+        var nameProperty = enumMember.GetType().GetProperty("Name");
+        return nameProperty == null ? null : (string)nameProperty.GetValue(enumMember, null);
+    }
+
+    public System.Collections.IEnumerable GetEnumMembers(EdmType enumType)
+    {
+        ArgumentNotNull(enumType, "enumType");
+
+        var membersProperty = enumType.GetType().GetProperty("Members");
+        return membersProperty != null 
+            ? (System.Collections.IEnumerable)membersProperty.GetValue(enumType, null)
+            : Enumerable.Empty<MetadataItem>();
+    }
+    
+    public bool EnumIsFlags(EdmType enumType)
+    {
+        ArgumentNotNull(enumType, "enumType");
+        
+        var isFlagsProperty = enumType.GetType().GetProperty("IsFlags");
+        return isFlagsProperty != null && (bool)isFlagsProperty.GetValue(enumType, null);
+    }
+
+    public bool IsEnumType(GlobalItem edmType)
+    {
+        ArgumentNotNull(edmType, "edmType");
+
+        return edmType.GetType().Name == "EnumType";
+    }
+
+    public PrimitiveType GetEnumUnderlyingType(EdmType enumType)
+    {
+        ArgumentNotNull(enumType, "enumType");
+
+        return (PrimitiveType)enumType.GetType().GetProperty("UnderlyingType").GetValue(enumType, null);
+    }
+
+    public string CreateLiteral(object value)
+    {
+        if (value == null || value.GetType() != typeof(TimeSpan))
+        {
+            return _code.CreateLiteral(value);
+        }
+
+        return string.Format(CultureInfo.InvariantCulture, "new TimeSpan({0})", ((TimeSpan)value).Ticks);
+    }
+    
+    public bool VerifyCaseInsensitiveTypeUniqueness(IEnumerable<string> types, string sourceFile)
+    {
+        ArgumentNotNull(types, "types");
+        ArgumentNotNull(sourceFile, "sourceFile");
+        
+        var hash = new HashSet<string>(StringComparer.InvariantCultureIgnoreCase);
+        if (types.Any(item => !hash.Add(item)))
+        {
+            _errors.Add(
+                new CompilerError(sourceFile, -1, -1, "6023",
+                    String.Format(CultureInfo.CurrentCulture, CodeGenerationTools.GetResourceString("Template_CaseInsensitiveTypeConflict"))));
+            return false;
+        }
+        return true;
+    }
+    
+    public IEnumerable<SimpleType> GetEnumItemsToGenerate(IEnumerable<GlobalItem> itemCollection)
+    {
+        return GetItemsToGenerate<SimpleType>(itemCollection)
+            .Where(e => IsEnumType(e));
+    }
+    
+    public IEnumerable<T> GetItemsToGenerate<T>(IEnumerable<GlobalItem> itemCollection) where T: EdmType
+    {
+        return itemCollection
+            .OfType<T>()
+            .Where(i => !i.MetadataProperties.Any(p => p.Name == ExternalTypeNameAttributeName))
+            .OrderBy(i => i.Name);
+    }
+
+    public IEnumerable<string> GetAllGlobalItems(IEnumerable<GlobalItem> itemCollection)
+    {
+        return itemCollection
+            .Where(i => i is EntityType || i is ComplexType || i is EntityContainer || IsEnumType(i))
+            .Select(g => GetGlobalItemName(g));
+    }
+
+    public string GetGlobalItemName(GlobalItem item)
+    {
+        if (item is EdmType)
+        {
+            return ((EdmType)item).Name;
+        }
+        else
+        {
+            return ((EntityContainer)item).Name;
+        }
+    }
+
+    public IEnumerable<EdmProperty> GetSimpleProperties(EntityType type)
+    {
+        return type.Properties.Where(p => p.TypeUsage.EdmType is SimpleType && p.DeclaringType == type);
+    }
+    
+    public IEnumerable<EdmProperty> GetSimpleProperties(ComplexType type)
+    {
+        return type.Properties.Where(p => p.TypeUsage.EdmType is SimpleType && p.DeclaringType == type);
+    }
+    
+    public IEnumerable<EdmProperty> GetComplexProperties(EntityType type)
+    {
+        return type.Properties.Where(p => p.TypeUsage.EdmType is ComplexType && p.DeclaringType == type);
+    }
+    
+    public IEnumerable<EdmProperty> GetComplexProperties(ComplexType type)
+    {
+        return type.Properties.Where(p => p.TypeUsage.EdmType is ComplexType && p.DeclaringType == type);
+    }
+
+    public IEnumerable<EdmProperty> GetPropertiesWithDefaultValues(EntityType type)
+    {
+        return type.Properties.Where(p => p.TypeUsage.EdmType is SimpleType && p.DeclaringType == type && p.DefaultValue != null);
+    }
+    
+    public IEnumerable<EdmProperty> GetPropertiesWithDefaultValues(ComplexType type)
+    {
+        return type.Properties.Where(p => p.TypeUsage.EdmType is SimpleType && p.DeclaringType == type && p.DefaultValue != null);
+    }
+
+    public IEnumerable<NavigationProperty> GetNavigationProperties(EntityType type)
+    {
+        return type.NavigationProperties.Where(np => np.DeclaringType == type);
+    }
+    
+    public IEnumerable<NavigationProperty> GetCollectionNavigationProperties(EntityType type)
+    {
+        return type.NavigationProperties.Where(np => np.DeclaringType == type && np.ToEndMember.RelationshipMultiplicity == RelationshipMultiplicity.Many);
+    }
+    
+    public FunctionParameter GetReturnParameter(EdmFunction edmFunction)
+    {
+        ArgumentNotNull(edmFunction, "edmFunction");
+
+        var returnParamsProperty = edmFunction.GetType().GetProperty("ReturnParameters");
+        return returnParamsProperty == null
+            ? edmFunction.ReturnParameter
+            : ((IEnumerable<FunctionParameter>)returnParamsProperty.GetValue(edmFunction, null)).FirstOrDefault();
+    }
+
+    public bool IsComposable(EdmFunction edmFunction)
+    {
+        ArgumentNotNull(edmFunction, "edmFunction");
+
+        var isComposableProperty = edmFunction.GetType().GetProperty("IsComposableAttribute");
+        return isComposableProperty != null && (bool)isComposableProperty.GetValue(edmFunction, null);
+    }
+
+    public IEnumerable<FunctionImportParameter> GetParameters(EdmFunction edmFunction)
+    {
+        return FunctionImportParameter.Create(edmFunction.Parameters, _code, _ef);
+    }
+
+    public TypeUsage GetReturnType(EdmFunction edmFunction)
+    {
+        var returnParam = GetReturnParameter(edmFunction);
+        return returnParam == null ? null : _ef.GetElementType(returnParam.TypeUsage);
+    }
+    
+    public bool GenerateMergeOptionFunction(EdmFunction edmFunction, bool includeMergeOption)
+    {
+        var returnType = GetReturnType(edmFunction);
+        return !includeMergeOption && returnType != null && returnType.EdmType.BuiltInTypeKind == BuiltInTypeKind.EntityType;
+    }
+}
+
+public static void ArgumentNotNull<T>(T arg, string name) where T : class
+{
+    if (arg == null)
+    {
+        throw new ArgumentNullException(name);
+    }
+}
+#>

+ 37 - 0
ProOdezhda/NOMENCLATURE.cs

@@ -0,0 +1,37 @@
+//------------------------------------------------------------------------------
+// <auto-generated>
+//     Этот код создан по шаблону.
+//
+//     Изменения, вносимые в этот файл вручную, могут привести к непредвиденной работе приложения.
+//     Изменения, вносимые в этот файл вручную, будут перезаписаны при повторном создании кода.
+// </auto-generated>
+//------------------------------------------------------------------------------
+
+namespace ProOdezhda
+{
+    using System;
+    using System.Collections.Generic;
+    
+    public partial class NOMENCLATURE
+    {
+        [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2214:DoNotCallOverridableMethodsInConstructors")]
+        public NOMENCLATURE()
+        {
+            this.ORDER_LIST = new HashSet<ORDER_LIST>();
+            this.REQUEST_LIST = new HashSet<REQUEST_LIST>();
+            this.RETAIL_REPORT_LIST = new HashSet<RETAIL_REPORT_LIST>();
+        }
+    
+        public int NOMENCLATURE_ID { get; set; }
+        public string NAME { get; set; }
+        public Nullable<int> FK_CATEGORY_N_ID { get; set; }
+    
+        public virtual CATEGORY_N CATEGORY_N { get; set; }
+        [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2227:CollectionPropertiesShouldBeReadOnly")]
+        public virtual ICollection<ORDER_LIST> ORDER_LIST { get; set; }
+        [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2227:CollectionPropertiesShouldBeReadOnly")]
+        public virtual ICollection<REQUEST_LIST> REQUEST_LIST { get; set; }
+        [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2227:CollectionPropertiesShouldBeReadOnly")]
+        public virtual ICollection<RETAIL_REPORT_LIST> RETAIL_REPORT_LIST { get; set; }
+    }
+}

+ 37 - 0
ProOdezhda/ORDER.cs

@@ -0,0 +1,37 @@
+//------------------------------------------------------------------------------
+// <auto-generated>
+//     Этот код создан по шаблону.
+//
+//     Изменения, вносимые в этот файл вручную, могут привести к непредвиденной работе приложения.
+//     Изменения, вносимые в этот файл вручную, будут перезаписаны при повторном создании кода.
+// </auto-generated>
+//------------------------------------------------------------------------------
+
+namespace ProOdezhda
+{
+    using System;
+    using System.Collections.Generic;
+    
+    public partial class ORDER
+    {
+        [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2214:DoNotCallOverridableMethodsInConstructors")]
+        public ORDER()
+        {
+            this.ORDER_LIST = new HashSet<ORDER_LIST>();
+            this.PURCHASE_INVOICE = new HashSet<PURCHASE_INVOICE>();
+        }
+    
+        public int ORDER_ID { get; set; }
+        public int FK_COUNTERPARTY_ID { get; set; }
+        public System.DateTime DATE { get; set; }
+        public System.DateTime CUTOFF_DATE { get; set; }
+        public int FK_USER_ID { get; set; }
+    
+        public virtual COUNTERPARTY COUNTERPARTY { get; set; }
+        public virtual USER USER { get; set; }
+        [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2227:CollectionPropertiesShouldBeReadOnly")]
+        public virtual ICollection<ORDER_LIST> ORDER_LIST { get; set; }
+        [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2227:CollectionPropertiesShouldBeReadOnly")]
+        public virtual ICollection<PURCHASE_INVOICE> PURCHASE_INVOICE { get; set; }
+    }
+}

+ 27 - 0
ProOdezhda/ORDER_LIST.cs

@@ -0,0 +1,27 @@
+//------------------------------------------------------------------------------
+// <auto-generated>
+//     Этот код создан по шаблону.
+//
+//     Изменения, вносимые в этот файл вручную, могут привести к непредвиденной работе приложения.
+//     Изменения, вносимые в этот файл вручную, будут перезаписаны при повторном создании кода.
+// </auto-generated>
+//------------------------------------------------------------------------------
+
+namespace ProOdezhda
+{
+    using System;
+    using System.Collections.Generic;
+    
+    public partial class ORDER_LIST
+    {
+        public int ORDER_LIST_ID { get; set; }
+        public int FK_ORDER_ID { get; set; }
+        public int FK_NOMENCLATURE_ID { get; set; }
+        public double QUANTITY { get; set; }
+        public decimal PRICE { get; set; }
+        public decimal SUM { get; set; }
+    
+        public virtual NOMENCLATURE NOMENCLATURE { get; set; }
+        public virtual ORDER ORDER { get; set; }
+    }
+}

+ 29 - 0
ProOdezhda/POSITION.cs

@@ -0,0 +1,29 @@
+//------------------------------------------------------------------------------
+// <auto-generated>
+//     Этот код создан по шаблону.
+//
+//     Изменения, вносимые в этот файл вручную, могут привести к непредвиденной работе приложения.
+//     Изменения, вносимые в этот файл вручную, будут перезаписаны при повторном создании кода.
+// </auto-generated>
+//------------------------------------------------------------------------------
+
+namespace ProOdezhda
+{
+    using System;
+    using System.Collections.Generic;
+    
+    public partial class POSITION
+    {
+        [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2214:DoNotCallOverridableMethodsInConstructors")]
+        public POSITION()
+        {
+            this.USERs = new HashSet<USER>();
+        }
+    
+        public int POSITION_ID { get; set; }
+        public string NAME { get; set; }
+    
+        [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2227:CollectionPropertiesShouldBeReadOnly")]
+        public virtual ICollection<USER> USERs { get; set; }
+    }
+}

+ 23 - 0
ProOdezhda/PURCHASE_INVOICE.cs

@@ -0,0 +1,23 @@
+//------------------------------------------------------------------------------
+// <auto-generated>
+//     Этот код создан по шаблону.
+//
+//     Изменения, вносимые в этот файл вручную, могут привести к непредвиденной работе приложения.
+//     Изменения, вносимые в этот файл вручную, будут перезаписаны при повторном создании кода.
+// </auto-generated>
+//------------------------------------------------------------------------------
+
+namespace ProOdezhda
+{
+    using System;
+    using System.Collections.Generic;
+    
+    public partial class PURCHASE_INVOICE
+    {
+        public int PURCHASE_INVOICE_ID { get; set; }
+        public int FK_ORDER_ID { get; set; }
+        public System.DateTime DATE { get; set; }
+    
+        public virtual ORDER ORDER { get; set; }
+    }
+}

+ 329 - 0
ProOdezhda/ProOdezhda.csproj

@@ -0,0 +1,329 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
+  <PropertyGroup>
+    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+    <ProjectGuid>{DD20B3D5-3680-4500-BD9B-EAB310E5C770}</ProjectGuid>
+    <OutputType>WinExe</OutputType>
+    <RootNamespace>ProOdezhda</RootNamespace>
+    <AssemblyName>ProOdezhda</AssemblyName>
+    <TargetFrameworkVersion>v4.7.2</TargetFrameworkVersion>
+    <FileAlignment>512</FileAlignment>
+    <ProjectTypeGuids>{60dc8134-eba5-43b8-bcc9-bb4bc16c2548};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
+    <WarningLevel>4</WarningLevel>
+    <AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
+    <Deterministic>true</Deterministic>
+    <NuGetPackageImportStamp>
+    </NuGetPackageImportStamp>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+    <PlatformTarget>AnyCPU</PlatformTarget>
+    <DebugSymbols>true</DebugSymbols>
+    <DebugType>full</DebugType>
+    <Optimize>false</Optimize>
+    <OutputPath>bin\Debug\</OutputPath>
+    <DefineConstants>DEBUG;TRACE</DefineConstants>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+    <PlatformTarget>AnyCPU</PlatformTarget>
+    <DebugType>pdbonly</DebugType>
+    <Optimize>true</Optimize>
+    <OutputPath>bin\Release\</OutputPath>
+    <DefineConstants>TRACE</DefineConstants>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+  </PropertyGroup>
+  <ItemGroup>
+    <Reference Include="netstandard" />
+    <Reference Include="System" />
+    <Reference Include="System.ComponentModel.DataAnnotations" />
+    <Reference Include="System.Configuration" />
+    <Reference Include="System.Data" />
+    <Reference Include="System.Drawing" />
+    <Reference Include="System.IdentityModel" />
+    <Reference Include="System.Runtime.Serialization" />
+    <Reference Include="System.Security" />
+    <Reference Include="System.Windows.Forms" />
+    <Reference Include="System.Xml" />
+    <Reference Include="Microsoft.CSharp" />
+    <Reference Include="System.Core" />
+    <Reference Include="System.Xml.Linq" />
+    <Reference Include="System.Data.DataSetExtensions" />
+    <Reference Include="System.Net.Http" />
+    <Reference Include="System.Xaml">
+      <RequiredTargetFramework>4.0</RequiredTargetFramework>
+    </Reference>
+    <Reference Include="WindowsBase" />
+    <Reference Include="PresentationCore" />
+    <Reference Include="PresentationFramework" />
+  </ItemGroup>
+  <ItemGroup>
+    <ApplicationDefinition Include="App.xaml">
+      <Generator>MSBuild:Compile</Generator>
+      <SubType>Designer</SubType>
+    </ApplicationDefinition>
+    <Compile Include="CATEGORY_C.cs">
+      <DependentUpon>Model1.tt</DependentUpon>
+    </Compile>
+    <Compile Include="CATEGORY_N.cs">
+      <DependentUpon>Model1.tt</DependentUpon>
+    </Compile>
+    <Compile Include="COUNTERPARTY.cs">
+      <DependentUpon>Model1.tt</DependentUpon>
+    </Compile>
+    <Compile Include="DISPATCH.cs">
+      <DependentUpon>Model1.tt</DependentUpon>
+    </Compile>
+    <Compile Include="Functionality\AdditionalFunctionality.cs" />
+    <Compile Include="Functionality\MainFunctionality.cs" />
+    <Compile Include="Model1.Context.cs">
+      <AutoGen>True</AutoGen>
+      <DesignTime>True</DesignTime>
+      <DependentUpon>Model1.Context.tt</DependentUpon>
+    </Compile>
+    <Compile Include="Model1.cs">
+      <AutoGen>True</AutoGen>
+      <DesignTime>True</DesignTime>
+      <DependentUpon>Model1.tt</DependentUpon>
+    </Compile>
+    <Compile Include="Model1.Designer.cs">
+      <AutoGen>True</AutoGen>
+      <DesignTime>True</DesignTime>
+      <DependentUpon>Model1.edmx</DependentUpon>
+    </Compile>
+    <Compile Include="NOMENCLATURE.cs">
+      <DependentUpon>Model1.tt</DependentUpon>
+    </Compile>
+    <Compile Include="ORDER.cs">
+      <DependentUpon>Model1.tt</DependentUpon>
+    </Compile>
+    <Compile Include="ORDER_LIST.cs">
+      <DependentUpon>Model1.tt</DependentUpon>
+    </Compile>
+    <Compile Include="POSITION.cs">
+      <DependentUpon>Model1.tt</DependentUpon>
+    </Compile>
+    <Compile Include="PURCHASE_INVOICE.cs">
+      <DependentUpon>Model1.tt</DependentUpon>
+    </Compile>
+    <Compile Include="RATING.cs">
+      <DependentUpon>Model1.tt</DependentUpon>
+    </Compile>
+    <Compile Include="REQUEST.cs">
+      <DependentUpon>Model1.tt</DependentUpon>
+    </Compile>
+    <Compile Include="REQUEST_LIST.cs">
+      <DependentUpon>Model1.tt</DependentUpon>
+    </Compile>
+    <Compile Include="RETAIL_REPORT.cs">
+      <DependentUpon>Model1.tt</DependentUpon>
+    </Compile>
+    <Compile Include="RETAIL_REPORT_LIST.cs">
+      <DependentUpon>Model1.tt</DependentUpon>
+    </Compile>
+    <Compile Include="TYPE.cs">
+      <DependentUpon>Model1.tt</DependentUpon>
+    </Compile>
+    <Compile Include="USER.cs">
+      <DependentUpon>Model1.tt</DependentUpon>
+    </Compile>
+    <Compile Include="USER_ACTIVITY.cs">
+      <DependentUpon>Model1.tt</DependentUpon>
+    </Compile>
+    <Compile Include="Windows\AdditionalWin\WinCOUNTERPARTY.xaml.cs">
+      <DependentUpon>WinCOUNTERPARTY.xaml</DependentUpon>
+    </Compile>
+    <Compile Include="Windows\AdditionalWin\Agent\WinDISPATCH.xaml.cs">
+      <DependentUpon>WinDISPATCH.xaml</DependentUpon>
+    </Compile>
+    <Compile Include="Windows\AdditionalWin\Supplier\WinORDER.xaml.cs">
+      <DependentUpon>WinORDER.xaml</DependentUpon>
+    </Compile>
+    <Compile Include="Windows\AdditionalWin\Supplier\WinPURCHASE_INVOICE.xaml.cs">
+      <DependentUpon>WinPURCHASE_INVOICE.xaml</DependentUpon>
+    </Compile>
+    <Compile Include="Windows\AdditionalWin\WinRegistration.xaml.cs">
+      <DependentUpon>WinRegistration.xaml</DependentUpon>
+    </Compile>
+    <Compile Include="Windows\AdditionalWin\Agent\WinREQUEST.xaml.cs">
+      <DependentUpon>WinREQUEST.xaml</DependentUpon>
+    </Compile>
+    <Compile Include="Windows\AdditionalWin\Agent\WinRETAIL_REPORT.xaml.cs">
+      <DependentUpon>WinRETAIL_REPORT.xaml</DependentUpon>
+    </Compile>
+    <Compile Include="Windows\MainWin\WorkWindow.xaml.cs">
+      <DependentUpon>WorkWindow.xaml</DependentUpon>
+    </Compile>
+    <Compile Include="Windows\Test\TestWin.xaml.cs">
+      <DependentUpon>TestWin.xaml</DependentUpon>
+    </Compile>
+    <Page Include="MainWindow.xaml">
+      <Generator>MSBuild:Compile</Generator>
+      <SubType>Designer</SubType>
+    </Page>
+    <Compile Include="App.xaml.cs">
+      <DependentUpon>App.xaml</DependentUpon>
+      <SubType>Code</SubType>
+    </Compile>
+    <Compile Include="MainWindow.xaml.cs">
+      <DependentUpon>MainWindow.xaml</DependentUpon>
+      <SubType>Code</SubType>
+    </Compile>
+    <Page Include="Windows\AdditionalWin\WinCOUNTERPARTY.xaml">
+      <SubType>Designer</SubType>
+      <Generator>MSBuild:Compile</Generator>
+    </Page>
+    <Page Include="Windows\AdditionalWin\Agent\WinDISPATCH.xaml">
+      <SubType>Designer</SubType>
+      <Generator>MSBuild:Compile</Generator>
+    </Page>
+    <Page Include="Windows\AdditionalWin\Supplier\WinORDER.xaml">
+      <SubType>Designer</SubType>
+      <Generator>MSBuild:Compile</Generator>
+    </Page>
+    <Page Include="Windows\AdditionalWin\Supplier\WinPURCHASE_INVOICE.xaml">
+      <SubType>Designer</SubType>
+      <Generator>MSBuild:Compile</Generator>
+    </Page>
+    <Page Include="Windows\AdditionalWin\WinRegistration.xaml">
+      <SubType>Designer</SubType>
+      <Generator>MSBuild:Compile</Generator>
+    </Page>
+    <Page Include="Windows\AdditionalWin\Agent\WinREQUEST.xaml">
+      <SubType>Designer</SubType>
+      <Generator>MSBuild:Compile</Generator>
+    </Page>
+    <Page Include="Windows\AdditionalWin\Agent\WinRETAIL_REPORT.xaml">
+      <SubType>Designer</SubType>
+      <Generator>MSBuild:Compile</Generator>
+    </Page>
+    <Page Include="Windows\MainWin\WorkWindow.xaml">
+      <SubType>Designer</SubType>
+      <Generator>MSBuild:Compile</Generator>
+    </Page>
+    <Page Include="Windows\Test\TestWin.xaml">
+      <SubType>Designer</SubType>
+      <Generator>MSBuild:Compile</Generator>
+    </Page>
+  </ItemGroup>
+  <ItemGroup>
+    <Compile Include="Properties\AssemblyInfo.cs">
+      <SubType>Code</SubType>
+    </Compile>
+    <Compile Include="Properties\Resources.Designer.cs">
+      <AutoGen>True</AutoGen>
+      <DesignTime>True</DesignTime>
+      <DependentUpon>Resources.resx</DependentUpon>
+    </Compile>
+    <Compile Include="Properties\Settings.Designer.cs">
+      <AutoGen>True</AutoGen>
+      <DependentUpon>Settings.settings</DependentUpon>
+      <DesignTimeSharedInput>True</DesignTimeSharedInput>
+    </Compile>
+    <EmbeddedResource Include="Properties\Resources.resx">
+      <Generator>ResXFileCodeGenerator</Generator>
+      <LastGenOutput>Resources.Designer.cs</LastGenOutput>
+    </EmbeddedResource>
+    <EntityDeploy Include="Model1.edmx">
+      <Generator>EntityModelCodeGenerator</Generator>
+      <LastGenOutput>Model1.Designer.cs</LastGenOutput>
+    </EntityDeploy>
+    <None Include="Model1.edmx.diagram">
+      <DependentUpon>Model1.edmx</DependentUpon>
+    </None>
+    <None Include="Properties\Settings.settings">
+      <Generator>SettingsSingleFileGenerator</Generator>
+      <LastGenOutput>Settings.Designer.cs</LastGenOutput>
+    </None>
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="App.config" />
+  </ItemGroup>
+  <ItemGroup>
+    <COMReference Include="Microsoft.Office.Core">
+      <Guid>{2DF8D04C-5BFA-101B-BDE5-00AA0044DE52}</Guid>
+      <VersionMajor>2</VersionMajor>
+      <VersionMinor>8</VersionMinor>
+      <Lcid>0</Lcid>
+      <WrapperTool>primary</WrapperTool>
+      <Isolated>False</Isolated>
+      <EmbedInteropTypes>True</EmbedInteropTypes>
+    </COMReference>
+    <COMReference Include="Microsoft.Office.Interop.Word">
+      <Guid>{00020905-0000-0000-C000-000000000046}</Guid>
+      <VersionMajor>8</VersionMajor>
+      <VersionMinor>7</VersionMinor>
+      <Lcid>0</Lcid>
+      <WrapperTool>primary</WrapperTool>
+      <Isolated>False</Isolated>
+      <EmbedInteropTypes>True</EmbedInteropTypes>
+    </COMReference>
+    <COMReference Include="VBIDE">
+      <Guid>{0002E157-0000-0000-C000-000000000046}</Guid>
+      <VersionMajor>5</VersionMajor>
+      <VersionMinor>3</VersionMinor>
+      <Lcid>0</Lcid>
+      <WrapperTool>primary</WrapperTool>
+      <Isolated>False</Isolated>
+      <EmbedInteropTypes>True</EmbedInteropTypes>
+    </COMReference>
+  </ItemGroup>
+  <ItemGroup>
+    <Service Include="{508349B6-6B84-4DF5-91F0-309BEEBAD82D}" />
+  </ItemGroup>
+  <ItemGroup>
+    <PackageReference Include="EntityFramework">
+      <Version>6.2.0</Version>
+    </PackageReference>
+    <PackageReference Include="EntityFramework.ru">
+      <Version>6.2.0</Version>
+    </PackageReference>
+    <PackageReference Include="Extended.Wpf.Toolkit">
+      <Version>4.2.0</Version>
+    </PackageReference>
+    <PackageReference Include="FluentMigrator.Runner.SqlServer">
+      <Version>3.3.1</Version>
+    </PackageReference>
+    <PackageReference Include="FluentMigrator.Runner.SqlServerCe">
+      <Version>3.3.0</Version>
+    </PackageReference>
+    <PackageReference Include="MaterialDesignThemes">
+      <Version>4.4.0-ci24-ci24</Version>
+    </PackageReference>
+    <PackageReference Include="Microsoft.SqlServer.Compact">
+      <Version>4.0.8876.1</Version>
+    </PackageReference>
+    <PackageReference Include="Microsoft.Windows.SDK.Contracts">
+      <Version>10.0.18362.2005</Version>
+    </PackageReference>
+    <PackageReference Include="System.ValueTuple">
+      <Version>4.5.0</Version>
+    </PackageReference>
+  </ItemGroup>
+  <ItemGroup>
+    <Folder Include="Properties\DataSources\" />
+  </ItemGroup>
+  <ItemGroup>
+    <Resource Include="Images\Logo.png" />
+  </ItemGroup>
+  <ItemGroup>
+    <Content Include="Model1.Context.tt">
+      <Generator>TextTemplatingFileGenerator</Generator>
+      <DependentUpon>Model1.edmx</DependentUpon>
+      <LastGenOutput>Model1.Context.cs</LastGenOutput>
+    </Content>
+    <Content Include="Model1.tt">
+      <Generator>TextTemplatingFileGenerator</Generator>
+      <DependentUpon>Model1.edmx</DependentUpon>
+      <LastGenOutput>Model1.cs</LastGenOutput>
+    </Content>
+  </ItemGroup>
+  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
+  <PropertyGroup>
+    <PostBuildEvent>
+    </PostBuildEvent>
+  </PropertyGroup>
+</Project>

+ 55 - 0
ProOdezhda/Properties/AssemblyInfo.cs

@@ -0,0 +1,55 @@
+using System.Reflection;
+using System.Resources;
+using System.Runtime.CompilerServices;
+using System.Runtime.InteropServices;
+using System.Windows;
+
+// Общие сведения об этой сборке предоставляются следующим набором
+// набор атрибутов. Измените значения этих атрибутов, чтобы изменить сведения,
+// связанные со сборкой.
+[assembly: AssemblyTitle("ProOdezhda")]
+[assembly: AssemblyDescription("")]
+[assembly: AssemblyConfiguration("")]
+[assembly: AssemblyCompany("")]
+[assembly: AssemblyProduct("ProOdezhda")]
+[assembly: AssemblyCopyright("Copyright ©  2021")]
+[assembly: AssemblyTrademark("")]
+[assembly: AssemblyCulture("")]
+
+// Установка значения False для параметра ComVisible делает типы в этой сборке невидимыми
+// для компонентов COM. Если необходимо обратиться к типу в этой сборке через
+// из модели COM, установите атрибут ComVisible для этого типа в значение true.
+[assembly: ComVisible(false)]
+
+//Чтобы начать создание локализуемых приложений, задайте
+//<UICulture>CultureYouAreCodingWith</UICulture> в файле .csproj
+//в <PropertyGroup>. Например, при использовании английского (США)
+//в своих исходных файлах установите <UICulture> в en-US.  Затем отмените преобразование в комментарий
+//атрибута NeutralResourceLanguage ниже.  Обновите "en-US" в
+//строка внизу для обеспечения соответствия настройки UICulture в файле проекта.
+
+//[assembly: NeutralResourcesLanguage("en-US", UltimateResourceFallbackLocation.Satellite)]
+
+
+[assembly: ThemeInfo(
+    ResourceDictionaryLocation.None, //где расположены словари ресурсов по конкретным тематикам
+                                     //(используется, если ресурс не найден на странице,
+                                     // или в словарях ресурсов приложения)
+    ResourceDictionaryLocation.SourceAssembly //где расположен словарь универсальных ресурсов
+                                              //(используется, если ресурс не найден на странице,
+                                              // в приложении или в каких-либо словарях ресурсов для конкретной темы)
+)]
+
+
+// Сведения о версии для сборки включают четыре следующих значения:
+//
+//      Основной номер версии
+//      Дополнительный номер версии
+//      Номер сборки
+//      Номер редакции
+//
+// Можно задать все значения или принять номера сборки и редакции по умолчанию 
+// используя "*", как показано ниже:
+// [assembly: AssemblyVersion("1.0.*")]
+[assembly: AssemblyVersion("1.0.0.0")]
+[assembly: AssemblyFileVersion("1.0.0.0")]

+ 70 - 0
ProOdezhda/Properties/Resources.Designer.cs

@@ -0,0 +1,70 @@
+//------------------------------------------------------------------------------
+// <auto-generated>
+//     Этот код был создан программным средством.
+//     Версия среды выполнения: 4.0.30319.42000
+//
+//     Изменения в этом файле могут привести к неправильному поведению и будут утрачены, если
+//     код создан повторно.
+// </auto-generated>
+//------------------------------------------------------------------------------
+
+
+namespace ProOdezhda.Properties
+{
+    /// <summary>
+    ///   Класс ресурсов со строгим типом для поиска локализованных строк и пр.
+    /// </summary>
+    // Этот класс был автоматически создан при помощи StronglyTypedResourceBuilder
+    // класс с помощью таких средств, как ResGen или Visual Studio.
+    // Для добавления или удаления члена измените файл .ResX, а затем перезапустите ResGen
+    // с параметром /str или заново постройте свой VS-проект.
+    [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")]
+    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+    [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
+    internal class Resources
+    {
+
+        private static global::System.Resources.ResourceManager resourceMan;
+
+        private static global::System.Globalization.CultureInfo resourceCulture;
+
+        [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
+        internal Resources()
+        {
+        }
+
+        /// <summary>
+        ///   Возврат кэшированного экземпляра ResourceManager, используемого этим классом.
+        /// </summary>
+        [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
+        internal static global::System.Resources.ResourceManager ResourceManager
+        {
+            get
+            {
+                if ((resourceMan == null))
+                {
+                    global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("ProOdezhda.Properties.Resources", typeof(Resources).Assembly);
+                    resourceMan = temp;
+                }
+                return resourceMan;
+            }
+        }
+
+        /// <summary>
+        ///   Переопределяет свойство CurrentUICulture текущего потока для всех
+        ///   подстановки ресурсов с помощью этого класса ресурсов со строгим типом.
+        /// </summary>
+        [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
+        internal static global::System.Globalization.CultureInfo Culture
+        {
+            get
+            {
+                return resourceCulture;
+            }
+            set
+            {
+                resourceCulture = value;
+            }
+        }
+    }
+}

+ 117 - 0
ProOdezhda/Properties/Resources.resx

@@ -0,0 +1,117 @@
+<?xml version="1.0" encoding="utf-8"?>
+<root>
+  <!-- 
+    Microsoft ResX Schema 
+    
+    Version 2.0
+    
+    The primary goals of this format is to allow a simple XML format 
+    that is mostly human readable. The generation and parsing of the 
+    various data types are done through the TypeConverter classes 
+    associated with the data types.
+    
+    Example:
+    
+    ... ado.net/XML headers & schema ...
+    <resheader name="resmimetype">text/microsoft-resx</resheader>
+    <resheader name="version">2.0</resheader>
+    <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
+    <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
+    <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
+    <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
+    <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
+        <value>[base64 mime encoded serialized .NET Framework object]</value>
+    </data>
+    <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
+        <comment>This is a comment</comment>
+    </data>
+                
+    There are any number of "resheader" rows that contain simple 
+    name/value pairs.
+    
+    Each data row contains a name, and value. The row also contains a 
+    type or mimetype. Type corresponds to a .NET class that support 
+    text/value conversion through the TypeConverter architecture. 
+    Classes that don't support this are serialized and stored with the 
+    mimetype set.
+    
+    The mimetype is used for serialized objects, and tells the 
+    ResXResourceReader how to depersist the object. This is currently not 
+    extensible. For a given mimetype the value must be set accordingly:
+    
+    Note - application/x-microsoft.net.object.binary.base64 is the format 
+    that the ResXResourceWriter will generate, however the reader can 
+    read any of the formats listed below.
+    
+    mimetype: application/x-microsoft.net.object.binary.base64
+    value   : The object must be serialized with 
+            : System.Serialization.Formatters.Binary.BinaryFormatter
+            : and then encoded with base64 encoding.
+    
+    mimetype: application/x-microsoft.net.object.soap.base64
+    value   : The object must be serialized with 
+            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
+            : and then encoded with base64 encoding.
+
+    mimetype: application/x-microsoft.net.object.bytearray.base64
+    value   : The object must be serialized into a byte array 
+            : using a System.ComponentModel.TypeConverter
+            : and then encoded with base64 encoding.
+    -->
+  <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
+    <xsd:element name="root" msdata:IsDataSet="true">
+      <xsd:complexType>
+        <xsd:choice maxOccurs="unbounded">
+          <xsd:element name="metadata">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" />
+              <xsd:attribute name="type" type="xsd:string" />
+              <xsd:attribute name="mimetype" type="xsd:string" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="assembly">
+            <xsd:complexType>
+              <xsd:attribute name="alias" type="xsd:string" />
+              <xsd:attribute name="name" type="xsd:string" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="data">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+                <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" msdata:Ordinal="1" />
+              <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
+              <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="resheader">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" />
+            </xsd:complexType>
+          </xsd:element>
+        </xsd:choice>
+      </xsd:complexType>
+    </xsd:element>
+  </xsd:schema>
+  <resheader name="resmimetype">
+    <value>text/microsoft-resx</value>
+  </resheader>
+  <resheader name="version">
+    <value>2.0</value>
+  </resheader>
+  <resheader name="reader">
+    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <resheader name="writer">
+    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+</root>

+ 29 - 0
ProOdezhda/Properties/Settings.Designer.cs

@@ -0,0 +1,29 @@
+//------------------------------------------------------------------------------
+// <auto-generated>
+//     This code was generated by a tool.
+//     Runtime Version:4.0.30319.42000
+//
+//     Changes to this file may cause incorrect behavior and will be lost if
+//     the code is regenerated.
+// </auto-generated>
+//------------------------------------------------------------------------------
+
+
+namespace ProOdezhda.Properties
+{
+    [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
+    [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "11.0.0.0")]
+    internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase
+    {
+
+        private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));
+
+        public static Settings Default
+        {
+            get
+            {
+                return defaultInstance;
+            }
+        }
+    }
+}

+ 7 - 0
ProOdezhda/Properties/Settings.settings

@@ -0,0 +1,7 @@
+<?xml version='1.0' encoding='utf-8'?>
+<SettingsFile xmlns="uri:settings" CurrentProfile="(Default)">
+  <Profiles>
+    <Profile Name="(Default)" />
+  </Profiles>
+  <Settings />
+</SettingsFile>

+ 24 - 0
ProOdezhda/RATING.cs

@@ -0,0 +1,24 @@
+//------------------------------------------------------------------------------
+// <auto-generated>
+//     Этот код создан по шаблону.
+//
+//     Изменения, вносимые в этот файл вручную, могут привести к непредвиденной работе приложения.
+//     Изменения, вносимые в этот файл вручную, будут перезаписаны при повторном создании кода.
+// </auto-generated>
+//------------------------------------------------------------------------------
+
+namespace ProOdezhda
+{
+    using System;
+    using System.Collections.Generic;
+    
+    public partial class RATING
+    {
+        public int RATING_ID { get; set; }
+        public int FK_COUNTERPARTY_ID { get; set; }
+        public double RATING1 { get; set; }
+        public System.DateTime DATE { get; set; }
+    
+        public virtual COUNTERPARTY COUNTERPARTY { get; set; }
+    }
+}

+ 35 - 0
ProOdezhda/REQUEST.cs

@@ -0,0 +1,35 @@
+//------------------------------------------------------------------------------
+// <auto-generated>
+//     Этот код создан по шаблону.
+//
+//     Изменения, вносимые в этот файл вручную, могут привести к непредвиденной работе приложения.
+//     Изменения, вносимые в этот файл вручную, будут перезаписаны при повторном создании кода.
+// </auto-generated>
+//------------------------------------------------------------------------------
+
+namespace ProOdezhda
+{
+    using System;
+    using System.Collections.Generic;
+    
+    public partial class REQUEST
+    {
+        [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2214:DoNotCallOverridableMethodsInConstructors")]
+        public REQUEST()
+        {
+            this.DISPATCHes = new HashSet<DISPATCH>();
+            this.REQUEST_LIST = new HashSet<REQUEST_LIST>();
+        }
+    
+        public int REQUEST_ID { get; set; }
+        public int FK_COUNTERPARTY_ID { get; set; }
+        public System.DateTime DATE { get; set; }
+        public System.DateTime CUTOFF_DATE { get; set; }
+    
+        public virtual COUNTERPARTY COUNTERPARTY { get; set; }
+        [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2227:CollectionPropertiesShouldBeReadOnly")]
+        public virtual ICollection<DISPATCH> DISPATCHes { get; set; }
+        [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2227:CollectionPropertiesShouldBeReadOnly")]
+        public virtual ICollection<REQUEST_LIST> REQUEST_LIST { get; set; }
+    }
+}

+ 27 - 0
ProOdezhda/REQUEST_LIST.cs

@@ -0,0 +1,27 @@
+//------------------------------------------------------------------------------
+// <auto-generated>
+//     Этот код создан по шаблону.
+//
+//     Изменения, вносимые в этот файл вручную, могут привести к непредвиденной работе приложения.
+//     Изменения, вносимые в этот файл вручную, будут перезаписаны при повторном создании кода.
+// </auto-generated>
+//------------------------------------------------------------------------------
+
+namespace ProOdezhda
+{
+    using System;
+    using System.Collections.Generic;
+    
+    public partial class REQUEST_LIST
+    {
+        public int REQUEST_LIST_ID { get; set; }
+        public int FK_REQUEST_ID { get; set; }
+        public int FK_NOMENCLATURE_ID { get; set; }
+        public double QUANTITY { get; set; }
+        public decimal PRICE { get; set; }
+        public decimal SUM { get; set; }
+    
+        public virtual NOMENCLATURE NOMENCLATURE { get; set; }
+        public virtual REQUEST REQUEST { get; set; }
+    }
+}

+ 31 - 0
ProOdezhda/RETAIL_REPORT.cs

@@ -0,0 +1,31 @@
+//------------------------------------------------------------------------------
+// <auto-generated>
+//     Этот код создан по шаблону.
+//
+//     Изменения, вносимые в этот файл вручную, могут привести к непредвиденной работе приложения.
+//     Изменения, вносимые в этот файл вручную, будут перезаписаны при повторном создании кода.
+// </auto-generated>
+//------------------------------------------------------------------------------
+
+namespace ProOdezhda
+{
+    using System;
+    using System.Collections.Generic;
+    
+    public partial class RETAIL_REPORT
+    {
+        [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2214:DoNotCallOverridableMethodsInConstructors")]
+        public RETAIL_REPORT()
+        {
+            this.RETAIL_REPORT_LIST = new HashSet<RETAIL_REPORT_LIST>();
+        }
+    
+        public int RETAIL_REPORT_ID { get; set; }
+        public int FK_COUNTERPARTY_ID { get; set; }
+        public System.DateTime DATE { get; set; }
+    
+        public virtual COUNTERPARTY COUNTERPARTY { get; set; }
+        [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2227:CollectionPropertiesShouldBeReadOnly")]
+        public virtual ICollection<RETAIL_REPORT_LIST> RETAIL_REPORT_LIST { get; set; }
+    }
+}

+ 27 - 0
ProOdezhda/RETAIL_REPORT_LIST.cs

@@ -0,0 +1,27 @@
+//------------------------------------------------------------------------------
+// <auto-generated>
+//     Этот код создан по шаблону.
+//
+//     Изменения, вносимые в этот файл вручную, могут привести к непредвиденной работе приложения.
+//     Изменения, вносимые в этот файл вручную, будут перезаписаны при повторном создании кода.
+// </auto-generated>
+//------------------------------------------------------------------------------
+
+namespace ProOdezhda
+{
+    using System;
+    using System.Collections.Generic;
+    
+    public partial class RETAIL_REPORT_LIST
+    {
+        public int RETAIL_REPORT_LIST_ID { get; set; }
+        public int FK_RETAIL_REPORT_ID { get; set; }
+        public int FK_NOMENCLATURE_ID { get; set; }
+        public double QUANTITY { get; set; }
+        public decimal PRICE { get; set; }
+        public decimal SUM { get; set; }
+    
+        public virtual NOMENCLATURE NOMENCLATURE { get; set; }
+        public virtual RETAIL_REPORT RETAIL_REPORT { get; set; }
+    }
+}

+ 30 - 0
ProOdezhda/TYPE.cs

@@ -0,0 +1,30 @@
+//------------------------------------------------------------------------------
+// <auto-generated>
+//     Этот код создан по шаблону.
+//
+//     Изменения, вносимые в этот файл вручную, могут привести к непредвиденной работе приложения.
+//     Изменения, вносимые в этот файл вручную, будут перезаписаны при повторном создании кода.
+// </auto-generated>
+//------------------------------------------------------------------------------
+
+namespace ProOdezhda
+{
+    using System;
+    using System.Collections.Generic;
+    
+    public partial class TYPE
+    {
+        [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2214:DoNotCallOverridableMethodsInConstructors")]
+        public TYPE()
+        {
+            this.COUNTERPARTies = new HashSet<COUNTERPARTY>();
+        }
+    
+        public int TYPE_ID { get; set; }
+        public string NAME { get; set; }
+        public string SHORT_NAME { get; set; }
+    
+        [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2227:CollectionPropertiesShouldBeReadOnly")]
+        public virtual ICollection<COUNTERPARTY> COUNTERPARTies { get; set; }
+    }
+}

+ 35 - 0
ProOdezhda/USER.cs

@@ -0,0 +1,35 @@
+//------------------------------------------------------------------------------
+// <auto-generated>
+//     Этот код создан по шаблону.
+//
+//     Изменения, вносимые в этот файл вручную, могут привести к непредвиденной работе приложения.
+//     Изменения, вносимые в этот файл вручную, будут перезаписаны при повторном создании кода.
+// </auto-generated>
+//------------------------------------------------------------------------------
+
+namespace ProOdezhda
+{
+    using System;
+    using System.Collections.Generic;
+    
+    public partial class USER
+    {
+        [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2214:DoNotCallOverridableMethodsInConstructors")]
+        public USER()
+        {
+            this.DISPATCHes = new HashSet<DISPATCH>();
+            this.ORDERs = new HashSet<ORDER>();
+        }
+    
+        public int USER_ID { get; set; }
+        public string LOGIN { get; set; }
+        public string PASSWORD { get; set; }
+        public int FK_POSITION_ID { get; set; }
+    
+        [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2227:CollectionPropertiesShouldBeReadOnly")]
+        public virtual ICollection<DISPATCH> DISPATCHes { get; set; }
+        [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2227:CollectionPropertiesShouldBeReadOnly")]
+        public virtual ICollection<ORDER> ORDERs { get; set; }
+        public virtual POSITION POSITION { get; set; }
+    }
+}

+ 22 - 0
ProOdezhda/USER_ACTIVITY.cs

@@ -0,0 +1,22 @@
+//------------------------------------------------------------------------------
+// <auto-generated>
+//     Этот код создан по шаблону.
+//
+//     Изменения, вносимые в этот файл вручную, могут привести к непредвиденной работе приложения.
+//     Изменения, вносимые в этот файл вручную, будут перезаписаны при повторном создании кода.
+// </auto-generated>
+//------------------------------------------------------------------------------
+
+namespace ProOdezhda
+{
+    using System;
+    using System.Collections.Generic;
+    
+    public partial class USER_ACTIVITY
+    {
+        public int USER_ACTIVITY_ID { get; set; }
+        public int FK_USER_ID { get; set; }
+        public System.DateTime ENTRY_TIME { get; set; }
+        public System.DateTime EXIT_TIME { get; set; }
+    }
+}

+ 90 - 0
ProOdezhda/Windows/AdditionalWin/Agent/WinDISPATCH.xaml

@@ -0,0 +1,90 @@
+<Window x:Class="ProOdezhda.Windows.WinDISPATCH"
+        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
+        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
+        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
+        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
+        xmlns:local="clr-namespace:ProOdezhda.Windows"
+        mc:Ignorable="d"
+        Title="WinDISPATCH" Height="450" Width="800" WindowStyle="None" ResizeMode="NoResize" WindowStartupLocation="CenterScreen">
+    <Grid>
+        <Grid.Background>
+            <RadialGradientBrush>
+                <GradientStop Color="#FF852DFF"/>
+                <GradientStop Color="#FF2A0859" Offset="1"/>
+            </RadialGradientBrush>
+        </Grid.Background>
+        <Grid.RowDefinitions>
+            <RowDefinition Height="10"/>
+            <RowDefinition Height="43"/>
+            <RowDefinition Height="27"/>
+            <RowDefinition Height="27"/>
+            <RowDefinition Height="27"/>
+            <RowDefinition Height="27*"/>
+            <RowDefinition Height="57*"/>
+            <RowDefinition Height="78*"/>
+            <RowDefinition Height="78*"/>
+            <RowDefinition Height="62*"/>
+            <RowDefinition Height="10*"/>
+        </Grid.RowDefinitions>
+        <Grid.ColumnDefinitions>
+            <ColumnDefinition Width="10"/>
+            <ColumnDefinition/>
+            <ColumnDefinition Width="10"/>
+        </Grid.ColumnDefinitions>
+
+        <Border CornerRadius="20" BorderBrush="Black" BorderThickness="1" Background="White" Grid.RowSpan="9" Grid.Row="1" Grid.Column="1"/>
+        <TextBlock x:Name="NAME_F" Grid.Column="1" Margin="215,10,215,9" TextWrapping="Wrap" Text="СОЗДАНИЕ ПОСТАВКИ ПРОДУКЦИ" VerticalAlignment="Center" HorizontalAlignment="Center" FontSize="18" TextAlignment="Center" FontWeight="Bold" Grid.Row="1"  Foreground="#FF510FAD"/>
+
+        <Button Grid.Row ="1" Grid.Column="1" Content="СОХРАНИТЬ" HorizontalAlignment="Right" Height="22" Margin="0,10,35,11" VerticalAlignment="Center" Width="130" FontSize="12" Click="BC_Save">
+            <Button.Background>
+                <LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">
+                    <GradientStop Color="#FF320571" Offset="1"/>
+                    <GradientStop Color="#FF9040FF"/>
+                </LinearGradientBrush>
+            </Button.Background>
+        </Button>
+
+        <DatePicker x:Name="DATE" Height="24" Margin="112,2,396,1" VerticalAlignment="Center" x:FieldModifier="public" Grid.Row="2" BorderBrush="Black" Grid.Column="1"/>
+        <TextBlock Text="Дата оформления" HorizontalAlignment="Left" Margin="10,6,0,5" VerticalAlignment="Center" Width="99" Grid.Column="1" Grid.Row="2" Foreground="#FF510FAD" Height="16"/>
+
+        <ComboBox x:Name="REQUESTs" Height="24" Margin="112,1,396,2" VerticalAlignment="Center" x:FieldModifier="public" Grid.Column="1" Grid.Row="4" BorderBrush="Black" IsEnabled="False" Foreground="Black" SelectionChanged="REQUESTs_SelectionChanged">
+            <ComboBox.ItemTemplate>
+                <DataTemplate>
+                    <TextBlock Foreground="Black">
+                        <TextBlock.Text>
+                            <MultiBinding StringFormat="{}№{0} от {1:dd.MM.yyyy} до {2:dd.MM.yyyy}">
+                                <Binding Path="REQUEST_ID"/>
+                                <Binding Path="DATE"/>
+                                <Binding Path="CUTOFF_DATE"/>
+                            </MultiBinding>
+                        </TextBlock.Text>
+                    </TextBlock>
+                </DataTemplate>
+            </ComboBox.ItemTemplate>
+        </ComboBox>
+
+        <TextBlock x:Name="N_REQUEST" Text="Запрос" HorizontalAlignment="Left" Margin="10,5,0,6" VerticalAlignment="Center" Width="98" Grid.Row="4" Foreground="Gray" Height="16" Grid.Column="1"/>
+
+        <ComboBox x:Name="COUNTERPARTYs" Height="24" Margin="112,2,10,1" VerticalAlignment="Center" x:FieldModifier="public" Grid.Row="3" BorderBrush="Black" Grid.Column="1" Background="White" SelectionChanged="COUNTERPARTYs_SelectionChanged"/>
+
+        <TextBlock Text="Агент" HorizontalAlignment="Left" Margin="10,6,0,6" VerticalAlignment="Center" Width="98" Grid.Column="1" Grid.Row="3" Foreground="#FF510FAD" Height="15"/>
+
+        <DataGrid x:Name="LIST_Grid" Margin="12,0,10,11" AutoGenerateColumns="False" IsReadOnly="True" ColumnWidth="*" Grid.Row="5" Grid.RowSpan="5" Grid.Column="1" ItemsSource="{Binding}">
+            <DataGrid.Columns>
+                <DataGridTextColumn Binding="{Binding FK_NOMENCLATURE_ID}" Visibility="Hidden"/>
+                <DataGridTextColumn Header="Материал" Binding="{Binding NOMENCLATURE.NAME}"/>
+                <DataGridTextColumn Header="Количество" Binding="{Binding QUANTITY}"/>
+                <DataGridTextColumn Header="Цена" Binding="{Binding PRICE}"/>
+                <DataGridTextColumn Header="Стоимость" Binding="{Binding SUM}"/>
+            </DataGrid.Columns>
+        </DataGrid>
+        <Button Grid.Row ="1" Grid.Column="1" HorizontalAlignment="Left" Height="22" Margin="35,10,0,11" VerticalAlignment="Center" Width="89" FontSize="12" Content="ОТМЕНА" Click="BC_Cancel">
+            <Button.Background>
+                <LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">
+                    <GradientStop Color="#FF320571" Offset="1"/>
+                    <GradientStop Color="#FF9040FF"/>
+                </LinearGradientBrush>
+            </Button.Background>
+        </Button>
+    </Grid>
+</Window>

+ 86 - 0
ProOdezhda/Windows/AdditionalWin/Agent/WinDISPATCH.xaml.cs

@@ -0,0 +1,86 @@
+using System;
+using System.Linq;
+using System.Windows;
+using System.Windows.Controls;
+
+namespace ProOdezhda.Windows
+{
+    public partial class WinDISPATCH : Window
+    {
+        ProOdezhdaEntities db = new ProOdezhdaEntities();
+        Working_With_Forms af = new Working_With_Forms();
+        MainFunctionality mf = new MainFunctionality();
+
+        public WinDISPATCH() { InitializeComponent(); mf.Load_COUNTERPARTY(COUNTERPARTYs, "Агент"); }
+
+        private void BC_Cancel(object sender, RoutedEventArgs e) { Hide(); }
+        private void BC_Save(object sender, RoutedEventArgs e) { if (Save()) { Hide(); } }
+
+        private void COUNTERPARTYs_SelectionChanged(object sender, SelectionChangedEventArgs e) 
+        { af.COUNTERPARTY_Selection("REQUEST", REQUESTs, LIST_Grid, N_REQUEST, COUNTERPARTYs); }        
+
+        private void REQUESTs_SelectionChanged(object sender, SelectionChangedEventArgs e) 
+        { af.REQUEST_or_ORDER_Selection("REQUEST", REQUESTs, LIST_Grid); }   
+        
+        public bool Save(int user = 0, bool test = false)
+        {
+            if (Check(test))
+            {
+                int u = test ? user : int.Parse(Application.Current.Properties["USER_ID"].ToString());
+
+                DISPATCH dispatch = new DISPATCH
+                {
+                    DATE = DateTime.Parse(DATE.SelectedDate.ToString()),
+                    FK_REQUEST_ID = int.Parse(REQUESTs.SelectedValue.ToString()),
+                   
+                    FK_USER_ID = u
+                };
+
+                db.DISPATCHes.Add(dispatch);
+
+                db.SaveChanges();
+
+                return true;
+            }
+
+            return false;
+        }
+
+        public bool Check(bool test = false)
+        {
+            if (REQUESTs.SelectedValue == null) { return false; }
+            int id = int.Parse(REQUESTs.SelectedValue.ToString());
+            if (DATE.SelectedDate == null)
+            { 
+                if (test) { return false; } 
+                MessageBox.Show("Дата оформления не введена!"); return false; 
+            }
+            else if (DATE.SelectedDate < db.REQUESTs.Where(r_id => r_id.REQUEST_ID == id).FirstOrDefault().DATE)
+            { 
+                if (test) { return false; } 
+                MessageBox.Show("Дата оформления поставки раньше чем у запроса!"); return false; 
+            }
+
+            if (COUNTERPARTYs.SelectedValue == null)
+            { 
+                if (test) { return false; } 
+                MessageBox.Show("Агент не выбран!"); return false; 
+            }
+
+            if (REQUESTs.SelectedValue == null)
+            { 
+                if (test) { return false; } 
+                MessageBox.Show("Запрос не выбран!"); return false; 
+            }
+
+            return true;
+        }
+
+        public void Filling(DateTime date, int counterparty, int requests)
+        {
+            DATE.SelectedDate = date;
+            COUNTERPARTYs.SelectedIndex = counterparty;
+            REQUESTs.SelectedIndex = requests;
+        }
+    }
+}

+ 107 - 0
ProOdezhda/Windows/AdditionalWin/Agent/WinREQUEST.xaml

@@ -0,0 +1,107 @@
+<Window x:Class="ProOdezhda.Windows.WinREQUEST"
+        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
+        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
+        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
+        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
+        xmlns:local="clr-namespace:ProOdezhda.Windows"
+        mc:Ignorable="d"
+        Title="WinREQUEST" Height="450" Width="800" WindowStyle="None" ResizeMode="NoResize" WindowStartupLocation="CenterScreen">
+    <Grid>
+        <Grid.Background>
+            <RadialGradientBrush>
+                <GradientStop Color="#FF852DFF"/>
+                <GradientStop Color="#FF2A0859" Offset="1"/>
+            </RadialGradientBrush>
+        </Grid.Background>
+        <Grid.RowDefinitions>
+            <RowDefinition Height="10"/>
+            <RowDefinition Height="43"/>
+            <RowDefinition Height="27"/>
+            <RowDefinition Height="27"/>
+            <RowDefinition Height="27"/>
+            <RowDefinition Height="27*"/>
+            <RowDefinition Height="57*"/>
+            <RowDefinition Height="78*"/>
+            <RowDefinition Height="78*"/>
+            <RowDefinition Height="62*"/>
+            <RowDefinition Height="10*"/>
+        </Grid.RowDefinitions>
+        <Grid.ColumnDefinitions>
+            <ColumnDefinition Width="10"/>
+            <ColumnDefinition Width="197*"/>
+            <ColumnDefinition Width="193*"/>
+            <ColumnDefinition Width="10"/>
+        </Grid.ColumnDefinitions>
+
+        <Border CornerRadius="20" BorderBrush="Black" BorderThickness="1" Background="White" Grid.RowSpan="9" Grid.ColumnSpan="2" Grid.Row="1" Grid.Column="1"/>
+        <TextBlock x:Name="NAME_F" Grid.Column="1" Margin="0,10,0,9" TextWrapping="Wrap" Text="СОЗДАНИЕ ЗАПРОСА" VerticalAlignment="Center" HorizontalAlignment="Center" FontSize="18" TextAlignment="Center" FontWeight="Bold" Grid.ColumnSpan="2" Grid.Row="1"  Foreground="#FF510FAD"/>
+
+        <Button Grid.Row ="1" Grid.Column="2" Content="СОХРАНИТЬ" HorizontalAlignment="Right" Height="22" Margin="0,10,35,11" VerticalAlignment="Center" Width="130" FontSize="12" Click="BC_Save">
+            <Button.Background>
+                <LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">
+                    <GradientStop Color="#FF320571" Offset="1"/>
+                    <GradientStop Color="#FF9040FF"/>
+                </LinearGradientBrush>
+            </Button.Background>
+        </Button>
+
+        <DatePicker x:Name="DATE" Height="24" Margin="112,2,10,1" VerticalAlignment="Center" x:FieldModifier="public" Grid.Row="2" BorderBrush="Black" Grid.Column="1"/>
+        <TextBlock Text="Дата оформления" HorizontalAlignment="Left" Margin="10,6,0,5" VerticalAlignment="Center" Width="99" Grid.Column="1" Grid.Row="2" Foreground="#FF510FAD" Height="16"/>
+
+        <DatePicker x:Name="CUTOFF_DATE" Height="24" Margin="114,2,10,1" VerticalAlignment="Center" x:FieldModifier="public" Grid.Column="2" Grid.Row="2" BorderBrush="Black"/>
+        <TextBlock Text="Крайний срок" HorizontalAlignment="Left" Margin="10,6,0,5" VerticalAlignment="Center" Width="98" Grid.Row="2" Foreground="#FF510FAD" Height="16" Grid.Column="2"/>
+
+        <ComboBox x:Name="FK_COUNTERPARTY_ID" Height="24" Margin="112,1,10,2" VerticalAlignment="Center" x:FieldModifier="public" Grid.ColumnSpan="2" Grid.Row="3" BorderBrush="Black" Grid.Column="1"/>
+
+        <TextBlock Text="Агент" HorizontalAlignment="Left" Margin="10,6,0,6" VerticalAlignment="Center" Width="98" Grid.Column="1" Grid.Row="3" Foreground="#FF510FAD" Height="15"/>
+
+        <DataGrid x:Name="REQUEST_LIST_Grid" Margin="12,0,0,11" AutoGenerateColumns="False" IsReadOnly="True" ColumnWidth="*" Grid.Row="5" Grid.RowSpan="5" Grid.Column="1" ItemsSource="{Binding}" SelectionChanged="REQUEST_LIST_Grid_SelectionChanged">
+            <DataGrid.Columns>
+                <DataGridTextColumn Binding="{Binding NOMENCLATURE_ID}" Visibility="Hidden"/>
+                <DataGridTextColumn Header="Материал" Binding="{Binding NOMENCLATURE}"/>
+                <DataGridTextColumn Header="Количество" Binding="{Binding QUANTITY}"/>
+                <DataGridTextColumn Header="Цена" Binding="{Binding PRICE}"/>
+                <DataGridTextColumn Header="Стоимость" Binding="{Binding SUM}"/>
+            </DataGrid.Columns>
+        </DataGrid>
+       
+        <Button x:Name="Insert_N" Grid.Row ="5" Grid.Column="2" Content="ДОБАВИТЬ" HorizontalAlignment="Left" Height="22" Margin="35,2,0,3" VerticalAlignment="Center" Width="85" FontSize="10" Click="Insert_N_Click">
+            <Button.Background>
+                <LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">
+                    <GradientStop Color="#FF320571" Offset="1"/>
+                    <GradientStop Color="#FF9040FF"/>
+                </LinearGradientBrush>
+            </Button.Background>
+        </Button>
+        <Button x:Name="Update_N" Grid.Row ="5" Grid.Column="2" Content="ИЗМЕНИТЬ" HorizontalAlignment="Center" Height="22" Margin="148,2,148,3" VerticalAlignment="Center" Width="90" FontSize="10" Click="Update_N_Click">
+            <Button.Background>
+                <LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">
+                    <GradientStop Color="#FF320571" Offset="1"/>
+                    <GradientStop Color="#FF9040FF"/>
+                </LinearGradientBrush>
+            </Button.Background>
+        </Button>
+        <Button x:Name="Delete_N" Grid.Row ="5" Grid.Column="2" Content="УДАЛИТЬ" HorizontalAlignment="Right" Height="22" Margin="0,2,35,3" VerticalAlignment="Center" Width="84" FontSize="10" Click="Delete_N_Click">
+            <Button.Background>
+                <LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">
+                    <GradientStop Color="#FF320571" Offset="1"/>
+                    <GradientStop Color="#FF9040FF"/>
+                </LinearGradientBrush>
+            </Button.Background>
+        </Button>
+        <ComboBox x:Name="FK_NOMENCLATURE_ID" Height="24" Margin="89,0,10,0" VerticalAlignment="Center" x:FieldModifier="public" Grid.Row="6" BorderBrush="Black" Grid.Column="2"/>
+        <TextBlock Text="Продукция" HorizontalAlignment="Left" Margin="10,0" VerticalAlignment="Center" Width="78" Grid.Column="2" Grid.Row="6" Foreground="#FF510FAD"/>
+        <TextBlock Text="Количество" HorizontalAlignment="Left" Margin="10,0" VerticalAlignment="Center" Width="78" Grid.Column="2" Grid.Row="7" Foreground="#FF510FAD" Height="15"/>
+        <TextBox Grid.Row ="7" Grid.Column="2" x:Name="QUANTITY" Height="24" Margin="88,0,10,0" TextWrapping="Wrap" VerticalAlignment="Center" x:FieldModifier="public" Background="White" BorderBrush="Black"/>
+        <TextBlock Text="Цена" HorizontalAlignment="Left" Margin="10,0" VerticalAlignment="Center" Width="78" Grid.Column="2" Grid.Row="8" Foreground="#FF510FAD" Height="15"/>
+        <TextBox Grid.Row ="8" Grid.Column="2" x:Name="PRICE" Height="24" Margin="88,0,10,0" TextWrapping="Wrap" VerticalAlignment="Center" x:FieldModifier="public" Background="White" BorderBrush="Black"/>
+        <Button Grid.Row ="1" Grid.Column="1" Content="ОТМЕНА" HorizontalAlignment="Left" Height="22" Margin="35,10,0,11" VerticalAlignment="Center" Width="89" FontSize="12" Click="BC_Cancel">
+            <Button.Background>
+                <LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">
+                    <GradientStop Color="#FF320571" Offset="1"/>
+                    <GradientStop Color="#FF9040FF"/>
+                </LinearGradientBrush>
+            </Button.Background>
+        </Button>
+    </Grid>
+</Window>

+ 118 - 0
ProOdezhda/Windows/AdditionalWin/Agent/WinREQUEST.xaml.cs

@@ -0,0 +1,118 @@
+using System;
+using System.Linq;
+using System.Windows;
+using System.Windows.Controls;
+
+namespace ProOdezhda.Windows
+{
+    public partial class WinREQUEST : Window
+    {
+        ProOdezhdaEntities db = new ProOdezhdaEntities();
+        Working_With_Forms af = new Working_With_Forms();
+
+        public WinREQUEST()
+        {
+            InitializeComponent();
+            af.Load_COUNTERPARTY_and_NOMENCLATURE(FK_COUNTERPARTY_ID, "Агент", FK_NOMENCLATURE_ID, "Продукция");
+        }
+
+        private void BC_Cancel(object sender, RoutedEventArgs e) { Hide(); }
+        private void BC_Save(object sender, RoutedEventArgs e) { if (Save()) { Hide(); } }
+
+        public bool Save(bool test = false)
+        {
+            if (Check(test))
+            {
+                int id = db.ORDERs.OrderByDescending(o => o.ORDER_ID).FirstOrDefault() == null ?
+                    1 : int.Parse(db.ORDERs.OrderByDescending(o => o.ORDER_ID).FirstOrDefault().ORDER_ID.ToString()) + 1;
+
+                REQUEST request = new REQUEST
+                {
+                    REQUEST_ID = id,
+                    DATE = DateTime.Parse(DATE.SelectedDate.ToString()),
+                    CUTOFF_DATE = DateTime.Parse(CUTOFF_DATE.SelectedDate.ToString()),
+                    FK_COUNTERPARTY_ID = int.Parse(FK_COUNTERPARTY_ID.SelectedValue.ToString()),
+                };
+
+                db.REQUESTs.Add(request);
+
+                foreach (Nomenclature o_L in REQUEST_LIST_Grid.Items)
+                {
+                    REQUEST_LIST order_list = new REQUEST_LIST
+                    {
+                        FK_REQUEST_ID = id,
+                        FK_NOMENCLATURE_ID = o_L.NOMENCLATURE_ID,
+                        QUANTITY = o_L.QUANTITY,
+                        PRICE = decimal.Parse(o_L.PRICE.ToString()),
+                        SUM = decimal.Parse(o_L.SUM.ToString())
+                    };
+
+                    db.REQUEST_LIST.Add(order_list);
+                }
+
+                db.SaveChanges();
+
+                return true;
+            }
+
+            return false;
+        }
+
+        public bool Check(bool test = false)
+        {
+            if (DATE.SelectedDate == null)
+            {
+                if (test) { return false; }
+                MessageBox.Show("Дата оформления не введена!"); return false; 
+            }
+
+            if (CUTOFF_DATE.SelectedDate == null)
+            { 
+                if (test) { return false; } 
+                MessageBox.Show("Дата крайнего срока не введена!"); return false; 
+            }
+            else if (DATE.SelectedDate > CUTOFF_DATE.SelectedDate)
+            {
+                if (test) { return false; }
+                MessageBox.Show("Дата крайнего срока меньше даты оформления!"); return false; 
+            }
+
+            if (FK_COUNTERPARTY_ID.SelectedValue == null)
+            { 
+                if (test) { return false; } 
+                MessageBox.Show("Агент не выбран!"); return false; 
+            }
+
+            if (REQUEST_LIST_Grid.Items.Count == 0)
+            { 
+                if (test) { return false; } 
+                MessageBox.Show("Состав заказа пуст!"); return false; 
+            }
+
+            return true;
+        }
+
+        private void Insert_N_Click(object sender, RoutedEventArgs e) { INC(); }
+        public void INC() { af.Insert_List(REQUEST_LIST_Grid, FK_NOMENCLATURE_ID, QUANTITY, PRICE); }
+        
+        private void Update_N_Click(object sender, RoutedEventArgs e) { af.Update_List(REQUEST_LIST_Grid, FK_NOMENCLATURE_ID, QUANTITY, PRICE); }
+        
+        private void Delete_N_Click(object sender, RoutedEventArgs e) { af.Delete_List(REQUEST_LIST_Grid); }
+        
+        private void REQUEST_LIST_Grid_SelectionChanged(object sender, SelectionChangedEventArgs e) 
+        { af.LIST_Selection_Changed(REQUEST_LIST_Grid, FK_NOMENCLATURE_ID, QUANTITY, PRICE); }
+
+        public void Filling(DateTime date, DateTime cutoff_date, int countrparty)
+        {
+            DATE.SelectedDate = date;
+            CUTOFF_DATE.SelectedDate = cutoff_date;
+            FK_COUNTERPARTY_ID.SelectedIndex = countrparty;
+        }
+        public void Filling_LIST(int nomenclature, string quantity, string price)
+        {
+            FK_NOMENCLATURE_ID.SelectedIndex = nomenclature;
+            QUANTITY.Text = quantity;
+            PRICE.Text = price;
+        }
+    }
+}

+ 103 - 0
ProOdezhda/Windows/AdditionalWin/Agent/WinRETAIL_REPORT.xaml

@@ -0,0 +1,103 @@
+<Window x:Class="ProOdezhda.Windows.WinRETAIL_REPORT"
+        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
+        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
+        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
+        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
+        xmlns:local="clr-namespace:ProOdezhda.Windows"
+        mc:Ignorable="d"
+        Title="WinRETAIL_REPORT" Height="450" Width="800" WindowStyle="None" ResizeMode="NoResize" WindowStartupLocation="CenterScreen">
+    <Grid>
+        <Grid.Background>
+            <RadialGradientBrush>
+                <GradientStop Color="#FF852DFF"/>
+                <GradientStop Color="#FF2A0859" Offset="1"/>
+            </RadialGradientBrush>
+        </Grid.Background>
+        <Grid.RowDefinitions>
+            <RowDefinition Height="10"/>
+            <RowDefinition Height="43"/>
+            <RowDefinition Height="27"/>
+            <RowDefinition Height="27"/>
+            <RowDefinition Height="27"/>
+            <RowDefinition Height="27*"/>
+            <RowDefinition Height="57*"/>
+            <RowDefinition Height="78*"/>
+            <RowDefinition Height="78*"/>
+            <RowDefinition Height="62*"/>
+            <RowDefinition Height="10*"/>
+        </Grid.RowDefinitions>
+        <Grid.ColumnDefinitions>
+            <ColumnDefinition Width="10"/>
+            <ColumnDefinition Width="197*"/>
+            <ColumnDefinition Width="193*"/>
+            <ColumnDefinition Width="10"/>
+        </Grid.ColumnDefinitions>
+
+        <Border CornerRadius="20" BorderBrush="Black" BorderThickness="1" Background="White" Grid.RowSpan="9" Grid.ColumnSpan="2" Grid.Row="1" Grid.Column="1"/>
+        <TextBlock x:Name="NAME_F" Grid.Column="1" Margin="0" TextWrapping="Wrap" Text="СОЗДАНИЕ РОЗНИЧНОГО ОТЧЁТА" VerticalAlignment="Center" HorizontalAlignment="Center" FontSize="18" TextAlignment="Center" FontWeight="Bold" Grid.ColumnSpan="2" Grid.Row="1"  Foreground="#FF510FAD"/>
+
+        <Button Grid.Row ="1" Grid.Column="2" Content="СОХРАНИТЬ" HorizontalAlignment="Right" Height="22" Margin="0,10,35,11" VerticalAlignment="Center" Width="130" FontSize="12" Click="Button_Click_1">
+            <Button.Background>
+                <LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">
+                    <GradientStop Color="#FF320571" Offset="1"/>
+                    <GradientStop Color="#FF9040FF"/>
+                </LinearGradientBrush>
+            </Button.Background>
+        </Button>
+
+        <DatePicker x:Name="DATE" Height="24" Margin="112,2,10,1" VerticalAlignment="Center" x:FieldModifier="public" Grid.Row="2" BorderBrush="Black" Grid.Column="1"/>
+        <TextBlock Text="Дата оформления" HorizontalAlignment="Left" Margin="10,6,0,5" VerticalAlignment="Center" Width="99" Grid.Column="1" Grid.Row="2" Foreground="#FF510FAD" Height="16"/>
+
+        <ComboBox x:Name="FK_COUNTERPARTY_ID" Height="24" Margin="112,1,10,2" VerticalAlignment="Center" x:FieldModifier="public" Grid.ColumnSpan="2" Grid.Row="3" BorderBrush="Black" Grid.Column="1"/>
+
+        <TextBlock Text="Поставщик" HorizontalAlignment="Left" Margin="10,6,0,6" VerticalAlignment="Center" Width="98" Grid.Column="1" Grid.Row="3" Foreground="#FF510FAD" Height="15"/>
+
+        <DataGrid x:Name="RETAIL_REPORT_LIST_Grid" Margin="12,0,0,11" AutoGenerateColumns="False" IsReadOnly="True" ColumnWidth="*" Grid.Row="5" Grid.RowSpan="5" Grid.Column="1" ItemsSource="{Binding}" SelectionChanged="RETAIL_REPORT_LIST_Grid_SelectionChanged">
+            <DataGrid.Columns>
+                <DataGridTextColumn Binding="{Binding NOMENCLATURE_ID}" Visibility="Hidden"/>
+                <DataGridTextColumn Header="Материал" Binding="{Binding NOMENCLATURE}"/>
+                <DataGridTextColumn Header="Количество" Binding="{Binding QUANTITY}"/>
+                <DataGridTextColumn Header="Цена" Binding="{Binding PRICE}"/>
+                <DataGridTextColumn Header="Стоимость" Binding="{Binding SUM}"/>
+            </DataGrid.Columns>
+        </DataGrid>
+        <Button x:Name="Insert_N" Grid.Row ="5" Grid.Column="2" Content="ДОБАВИТЬ" HorizontalAlignment="Left" Height="22" Margin="35,2,0,3" VerticalAlignment="Center" Width="85" FontSize="10" Click="Insert_N_Click">
+            <Button.Background>
+                <LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">
+                    <GradientStop Color="#FF320571" Offset="1"/>
+                    <GradientStop Color="#FF9040FF"/>
+                </LinearGradientBrush>
+            </Button.Background>
+        </Button>
+        <Button x:Name="Update_N" Grid.Row ="5" Grid.Column="2" Content="ИЗМЕНИТЬ" HorizontalAlignment="Center" Height="22" Margin="148,2,148,3" VerticalAlignment="Center" Width="90" FontSize="10" Click="Update_N_Click">
+            <Button.Background>
+                <LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">
+                    <GradientStop Color="#FF320571" Offset="1"/>
+                    <GradientStop Color="#FF9040FF"/>
+                </LinearGradientBrush>
+            </Button.Background>
+        </Button>
+        <Button x:Name="Delete_N" Grid.Row ="5" Grid.Column="2" Content="УДАЛИТЬ" HorizontalAlignment="Right" Height="22" Margin="0,2,35,3" VerticalAlignment="Center" Width="84" FontSize="10" Click="Delete_N_Click">
+            <Button.Background>
+                <LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">
+                    <GradientStop Color="#FF320571" Offset="1"/>
+                    <GradientStop Color="#FF9040FF"/>
+                </LinearGradientBrush>
+            </Button.Background>
+        </Button>
+        <ComboBox x:Name="FK_NOMENCLATURE_ID" Height="24" Margin="89,0,10,0" VerticalAlignment="Center" x:FieldModifier="public" Grid.Row="6" BorderBrush="Black" Grid.Column="2"/>
+        <TextBlock Text="Продукция" HorizontalAlignment="Left" Margin="10,0,0,0" VerticalAlignment="Center" Width="78" Grid.Column="2" Grid.Row="6" Foreground="#FF510FAD"/>
+        <TextBlock Text="Количество" HorizontalAlignment="Left" Margin="10,0,0,0" VerticalAlignment="Center" Width="78" Grid.Column="2" Grid.Row="7" Foreground="#FF510FAD" Height="15"/>
+        <TextBox Grid.Row ="7" Grid.Column="2" x:Name="QUANTITY" Height="24" Margin="88,0,10,0" TextWrapping="Wrap" VerticalAlignment="Center" x:FieldModifier="public" Background="White" BorderBrush="Black"/>
+        <TextBlock Text="Цена" HorizontalAlignment="Left" Margin="10,0,0,0" VerticalAlignment="Center" Width="78" Grid.Column="2" Grid.Row="8" Foreground="#FF510FAD" Height="15"/>
+        <TextBox Grid.Row ="8" Grid.Column="2" x:Name="PRICE" Height="24" Margin="88,0,10,0" TextWrapping="Wrap" VerticalAlignment="Center" x:FieldModifier="public" Background="White" BorderBrush="Black"/>
+        <Button Grid.Row ="1" Grid.Column="1" Content="ОТМЕНА" HorizontalAlignment="Left" Height="22" Margin="35,10,0,11" VerticalAlignment="Center" Width="89" FontSize="12" Click="Button_Click">
+            <Button.Background>
+                <LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">
+                    <GradientStop Color="#FF320571" Offset="1"/>
+                    <GradientStop Color="#FF9040FF"/>
+                </LinearGradientBrush>
+            </Button.Background>
+        </Button>
+    </Grid>
+</Window>

+ 107 - 0
ProOdezhda/Windows/AdditionalWin/Agent/WinRETAIL_REPORT.xaml.cs

@@ -0,0 +1,107 @@
+using System;
+using System.Linq;
+using System.Windows;
+using System.Windows.Controls;
+
+namespace ProOdezhda.Windows
+{
+    public partial class WinRETAIL_REPORT : Window
+    {
+        ProOdezhdaEntities db = new ProOdezhdaEntities();
+        Working_With_Forms af = new Working_With_Forms();
+
+        public WinRETAIL_REPORT()
+        {
+            InitializeComponent();
+            af.Load_COUNTERPARTY_and_NOMENCLATURE(FK_COUNTERPARTY_ID, "Агент", FK_NOMENCLATURE_ID, "Продукция");
+        }
+
+        private void Button_Click(object sender, RoutedEventArgs e) { Hide(); }
+        private void Button_Click_1(object sender, RoutedEventArgs e) { if (Save()) { Hide(); } }
+
+        public bool Save(bool test = false)
+        {
+            if (Check(test))
+            {
+                int id = db.RETAIL_REPORT.OrderByDescending(o => o.RETAIL_REPORT_ID).FirstOrDefault() == null ?
+                    1 : int.Parse(db.RETAIL_REPORT.OrderByDescending(o => o.RETAIL_REPORT_ID).FirstOrDefault().RETAIL_REPORT_ID.ToString()) + 1;
+
+                RETAIL_REPORT order = new RETAIL_REPORT
+                {
+                    RETAIL_REPORT_ID = id,
+                    DATE = DateTime.Parse(DATE.SelectedDate.ToString()),
+                    FK_COUNTERPARTY_ID = int.Parse(FK_COUNTERPARTY_ID.SelectedValue.ToString()),
+                };
+
+                db.RETAIL_REPORT.Add(order);
+
+                foreach (Nomenclature o_L in RETAIL_REPORT_LIST_Grid.Items)
+                {
+                    RETAIL_REPORT_LIST order_list = new RETAIL_REPORT_LIST
+                    {
+                        FK_RETAIL_REPORT_ID = id,
+                        FK_NOMENCLATURE_ID = o_L.NOMENCLATURE_ID,
+                        QUANTITY = o_L.QUANTITY,
+                        PRICE = decimal.Parse(o_L.PRICE.ToString()),
+                        SUM = decimal.Parse(o_L.SUM.ToString())
+                    };
+
+                    db.RETAIL_REPORT_LIST.Add(order_list);
+                }
+
+                db.SaveChanges();
+
+                return true;
+            }
+
+            return false;
+        }
+
+        private bool Check(bool test = false)
+        {
+            if (DATE.SelectedDate == null)
+            {
+                if (test) { return false; }
+                MessageBox.Show("Дата оформления не введена!"); return false; 
+            }
+
+            if (FK_COUNTERPARTY_ID.SelectedValue == null)
+            {
+                if (test) { return false; }
+                MessageBox.Show("Агент не выбран!"); return false; 
+            }
+
+            if (RETAIL_REPORT_LIST_Grid.Items.Count == 0)
+            {
+                if (test) { return false; }
+                MessageBox.Show("Состав заказа пуст!"); return false; 
+            }
+
+            return true;
+        }
+
+        private void Insert_N_Click(object sender, RoutedEventArgs e) { INC(); }
+        public void INC() { af.Insert_List(RETAIL_REPORT_LIST_Grid, FK_NOMENCLATURE_ID, QUANTITY, PRICE); }
+
+        private void Update_N_Click(object sender, RoutedEventArgs e) 
+        { af.Update_List(RETAIL_REPORT_LIST_Grid, FK_NOMENCLATURE_ID, QUANTITY, PRICE); }
+
+        private void Delete_N_Click(object sender, RoutedEventArgs e) 
+        { af.Delete_List(RETAIL_REPORT_LIST_Grid); }
+
+        private void RETAIL_REPORT_LIST_Grid_SelectionChanged(object sender, SelectionChangedEventArgs e) 
+        { af.LIST_Selection_Changed(RETAIL_REPORT_LIST_Grid, FK_NOMENCLATURE_ID, QUANTITY, PRICE); }
+
+        public void Filling(DateTime date, int countrparty)
+        {
+            DATE.SelectedDate = date;
+            FK_COUNTERPARTY_ID.SelectedIndex = countrparty;
+        }
+        public void Filling_LIST(int nomenclature, string quantity, string price)
+        {
+            FK_NOMENCLATURE_ID.SelectedIndex = nomenclature;
+            QUANTITY.Text = quantity;
+            PRICE.Text = price;
+        }
+    }
+}

+ 107 - 0
ProOdezhda/Windows/AdditionalWin/Supplier/WinORDER.xaml

@@ -0,0 +1,107 @@
+<Window
+        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
+        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
+        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
+        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
+        xmlns:local="clr-namespace:ProOdezhda.Windows"
+        xmlns:ProOdezhda="clr-namespace:ProOdezhda" x:Class="ProOdezhda.Windows.WinORDER"
+        mc:Ignorable="d"
+        Title="WinORDER" Height="450" Width="800" WindowStyle="None" ResizeMode="NoResize" WindowStartupLocation="CenterScreen">
+    <Grid>
+        <Grid.Background>
+            <RadialGradientBrush>
+                <GradientStop Color="#FF852DFF"/>
+                <GradientStop Color="#FF2A0859" Offset="1"/>
+            </RadialGradientBrush>
+        </Grid.Background>
+        <Grid.RowDefinitions>
+            <RowDefinition Height="10"/>
+            <RowDefinition Height="43"/>
+            <RowDefinition Height="27"/>
+            <RowDefinition Height="27"/>
+            <RowDefinition Height="27"/>
+            <RowDefinition Height="27*"/>
+            <RowDefinition Height="57*"/>
+            <RowDefinition Height="78*"/>
+            <RowDefinition Height="78*"/>
+            <RowDefinition Height="62*"/>
+            <RowDefinition Height="10*"/>
+        </Grid.RowDefinitions>
+        <Grid.ColumnDefinitions>
+            <ColumnDefinition Width="10"/>
+            <ColumnDefinition Width="197*"/>
+            <ColumnDefinition Width="193*"/>
+            <ColumnDefinition Width="10"/>
+        </Grid.ColumnDefinitions>
+
+        <Border CornerRadius="20" BorderBrush="Black" BorderThickness="1" Background="White" Grid.RowSpan="9" Grid.ColumnSpan="2" Grid.Row="1" Grid.Column="1"/>
+        <TextBlock x:Name="NAME_F" Grid.Column="1" Margin="308,10,298,9" TextWrapping="Wrap" Text="СОЗДАНИЕ ЗАКАЗА" VerticalAlignment="Center" HorizontalAlignment="Center" FontSize="18" TextAlignment="Center" FontWeight="Bold" Grid.ColumnSpan="2" Grid.Row="1"  Foreground="#FF510FAD"/>
+
+        <Button Grid.Row ="1" Grid.Column="2" Content="СОХРАНИТЬ" HorizontalAlignment="Right" Height="22" Margin="0,10,35,11" VerticalAlignment="Center" Width="130" FontSize="12" Click="BC_Save">
+            <Button.Background>
+                <LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">
+                    <GradientStop Color="#FF320571" Offset="1"/>
+                    <GradientStop Color="#FF9040FF"/>
+                </LinearGradientBrush>
+            </Button.Background>
+        </Button>
+
+        <DatePicker x:Name="DATE" Height="24" Margin="112,2,10,1" VerticalAlignment="Center" x:FieldModifier="public" Grid.Row="2" BorderBrush="Black" Grid.Column="1"/>
+        <TextBlock Text="Дата оформления" HorizontalAlignment="Left" Margin="10,6,0,5" VerticalAlignment="Center" Width="99" Grid.Column="1" Grid.Row="2" Foreground="#FF510FAD" Height="16"/>
+
+        <DatePicker x:Name="CUTOFF_DATE" Height="24" Margin="114,2,10,1" VerticalAlignment="Center" x:FieldModifier="public" Grid.Column="2" Grid.Row="2" BorderBrush="Black"/>
+        <TextBlock Text="Крайний срок" HorizontalAlignment="Left" Margin="10,6,0,5" VerticalAlignment="Center" Width="98" Grid.Row="2" Foreground="#FF510FAD" Height="16" Grid.Column="2"/>
+
+        <ComboBox x:Name="FK_COUNTERPARTY_ID" Height="24" Margin="112,1,10,2" VerticalAlignment="Center" x:FieldModifier="public" Grid.ColumnSpan="2" Grid.Row="3" BorderBrush="Black" Grid.Column="1"/>
+
+        <TextBlock Text="Поставщик" HorizontalAlignment="Left" Margin="10,6,0,6" VerticalAlignment="Center" Width="98" Grid.Column="1" Grid.Row="3" Foreground="#FF510FAD" Height="15"/>
+
+        <DataGrid x:Name="ORDER_LIST_Grid" Margin="12,0,0,11" AutoGenerateColumns="False" IsReadOnly="True" ColumnWidth="*" Grid.Row="5" Grid.RowSpan="5" Grid.Column="1" ItemsSource="{Binding}" SelectionChanged="ORDER_LIST_Grid_SelectionChanged">
+            <DataGrid.Columns>
+                <DataGridTextColumn Binding="{Binding NOMENCLATURE_ID}" Visibility="Hidden"/>
+                <DataGridTextColumn Header="Материал" Binding="{Binding NOMENCLATURE}"/>
+                <DataGridTextColumn Header="Количество" Binding="{Binding QUANTITY}"/>
+                <DataGridTextColumn Header="Цена" Binding="{Binding PRICE}"/>
+                <DataGridTextColumn Header="Стоимость" Binding="{Binding SUM}"/>
+            </DataGrid.Columns>
+        </DataGrid>
+        <Button x:Name="Insert_N" Grid.Row ="5" Grid.Column="2" Content="ДОБАВИТЬ" HorizontalAlignment="Left" Height="22" Margin="35,2,0,3" VerticalAlignment="Center" Width="85" FontSize="10" Click="Insert_N_Click">
+            <Button.Background>
+                <LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">
+                    <GradientStop Color="#FF320571" Offset="1"/>
+                    <GradientStop Color="#FF9040FF"/>
+                </LinearGradientBrush>
+            </Button.Background>
+        </Button>
+        <Button x:Name="Update_N" Grid.Row ="5" Grid.Column="2" Content="ИЗМЕНИТЬ" HorizontalAlignment="Center" Height="22" Margin="148,2,148,3" VerticalAlignment="Center" Width="90" FontSize="10" Click="Update_N_Click">
+            <Button.Background>
+                <LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">
+                    <GradientStop Color="#FF320571" Offset="1"/>
+                    <GradientStop Color="#FF9040FF"/>
+                </LinearGradientBrush>
+            </Button.Background>
+        </Button>
+        <Button x:Name="Delete_N" Grid.Row ="5" Grid.Column="2" Content="УДАЛИТЬ" HorizontalAlignment="Right" Height="22" Margin="0,2,35,3" VerticalAlignment="Center" Width="84" FontSize="10" Click="Delete_N_Click">
+            <Button.Background>
+                <LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">
+                    <GradientStop Color="#FF320571" Offset="1"/>
+                    <GradientStop Color="#FF9040FF"/>
+                </LinearGradientBrush>
+            </Button.Background>
+        </Button>
+        <ComboBox x:Name="FK_NOMENCLATURE_ID" Height="24" Margin="89,17,10,17" VerticalAlignment="Center" x:FieldModifier="public" Grid.Row="6" BorderBrush="Black" Grid.Column="2"/>
+        <TextBlock Text="Материал" HorizontalAlignment="Left" Margin="10,21,0,21" VerticalAlignment="Center" Width="78" Grid.Column="2" Grid.Row="6" Foreground="#FF510FAD"/>
+        <TextBlock Text="Количество" HorizontalAlignment="Left" Margin="10,32,0,32" VerticalAlignment="Center" Width="78" Grid.Column="2" Grid.Row="7" Foreground="#FF510FAD" Height="15"/>
+        <TextBox Grid.Row ="7" Grid.Column="2" x:Name="QUANTITY" Height="24" Margin="88,28,10,27" TextWrapping="Wrap" VerticalAlignment="Center" x:FieldModifier="public" Background="White" BorderBrush="Black"/>
+        <TextBlock Text="Цена" HorizontalAlignment="Left" Margin="10,32,0,32" VerticalAlignment="Center" Width="78" Grid.Column="2" Grid.Row="8" Foreground="#FF510FAD" Height="15"/>
+        <TextBox Grid.Row ="8" Grid.Column="2" x:Name="PRICE" Height="24" Margin="88,27,10,28" TextWrapping="Wrap" VerticalAlignment="Center" x:FieldModifier="public" Background="White" BorderBrush="Black"/>
+        <Button Grid.Row ="1" Grid.Column="1" Content="ОТМЕНА" HorizontalAlignment="Left" Height="22" Margin="35,10,0,11" VerticalAlignment="Center" Width="89" FontSize="12" Click="BC_Cancel">
+            <Button.Background>
+                <LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">
+                    <GradientStop Color="#FF320571" Offset="1"/>
+                    <GradientStop Color="#FF9040FF"/>
+                </LinearGradientBrush>
+            </Button.Background>
+        </Button>
+    </Grid>
+</Window>

+ 125 - 0
ProOdezhda/Windows/AdditionalWin/Supplier/WinORDER.xaml.cs

@@ -0,0 +1,125 @@
+using System;
+using System.Linq;
+using System.Windows;
+using System.Windows.Controls;
+
+namespace ProOdezhda.Windows
+{
+    public partial class WinORDER : Window
+    {
+        ProOdezhdaEntities db = new ProOdezhdaEntities();
+        Working_With_Forms af = new Working_With_Forms();
+
+        public WinORDER()
+        {
+            InitializeComponent();
+            af.Load_COUNTERPARTY_and_NOMENCLATURE (FK_COUNTERPARTY_ID, "Поставщик", FK_NOMENCLATURE_ID, "Материал");
+        }
+
+        private void BC_Cancel(object sender, RoutedEventArgs e) { Hide(); }
+
+        private void BC_Save(object sender, RoutedEventArgs e) { if (Save()) { Hide(); } }
+
+        public bool Save(int user = 0, bool test = false)
+        {
+            if (Check(test))
+            {
+                int id = db.ORDERs.OrderByDescending(o => o.ORDER_ID).FirstOrDefault() == null ?
+                    1 : int.Parse(db.ORDERs.OrderByDescending(o => o.ORDER_ID).FirstOrDefault().ORDER_ID.ToString()) + 1;
+
+                int u = test ? user : int.Parse(Application.Current.Properties["USER_ID"].ToString());
+
+                ORDER order = new ORDER
+                {
+                    ORDER_ID = id,
+                    DATE = DateTime.Parse(DATE.SelectedDate.ToString()),
+                    CUTOFF_DATE = DateTime.Parse(CUTOFF_DATE.SelectedDate.ToString()),
+                    FK_COUNTERPARTY_ID = int.Parse(FK_COUNTERPARTY_ID.SelectedValue.ToString()),
+
+                    FK_USER_ID = u
+                };
+
+                db.ORDERs.Add(order);
+
+                foreach (Nomenclature o_L in ORDER_LIST_Grid.Items)
+                {
+                    ORDER_LIST order_list = new ORDER_LIST
+                    {
+                        FK_ORDER_ID = id,
+                        FK_NOMENCLATURE_ID = o_L.NOMENCLATURE_ID,
+                        QUANTITY = o_L.QUANTITY,
+                        PRICE = decimal.Parse(o_L.PRICE.ToString()),
+                        SUM = decimal.Parse(o_L.SUM.ToString())
+                    };
+
+                    db.ORDER_LIST.Add(order_list);
+                }
+
+                db.SaveChanges();
+
+                return true;
+            }
+
+            return false;
+        }
+
+        private bool Check(bool test = false)
+        {
+            if(DATE.SelectedDate == null)
+            {
+                if (test) { return false; }
+                MessageBox.Show("Дата оформления не введена!"); return false;  
+            }
+            
+            if (CUTOFF_DATE.SelectedDate == null)
+            {
+                if (test) { return false; }
+                MessageBox.Show("Дата крайнего срока не введена!"); return false; 
+            }
+            else if (DATE.SelectedDate > CUTOFF_DATE.SelectedDate)
+            {
+                if (test) { return false; }
+                MessageBox.Show("Дата крайнего срока меньше даты оформления!"); return false; 
+            }
+
+            if (FK_COUNTERPARTY_ID.SelectedValue == null)
+            {
+                if (test) { return false; }
+                MessageBox.Show("Поставщик не выбран!"); return false; 
+            }
+
+            if (ORDER_LIST_Grid.Items.Count == 0)
+            {
+                if (test) { return false; }
+                MessageBox.Show("Состав заказа пуст!"); return false; 
+            }
+            
+            return true;
+        }
+
+        private void Insert_N_Click(object sender, RoutedEventArgs e) { INC(); }   
+        public void INC() { af.Insert_List(ORDER_LIST_Grid, FK_NOMENCLATURE_ID, QUANTITY, PRICE); }
+
+        private void Update_N_Click(object sender, RoutedEventArgs e) { UNC(); }
+        public void UNC() { af.Update_List(ORDER_LIST_Grid, FK_NOMENCLATURE_ID, QUANTITY, PRICE); }    
+        
+        private void Delete_N_Click(object sender, RoutedEventArgs e) { DNC(); }
+        public void DNC() { af.Delete_List(ORDER_LIST_Grid); }
+
+        private void ORDER_LIST_Grid_SelectionChanged(object sender, SelectionChangedEventArgs e) { OLGSC(); }
+        public void OLGSC() { af.LIST_Selection_Changed(ORDER_LIST_Grid, FK_NOMENCLATURE_ID, QUANTITY, PRICE); }
+
+        public void Filling(DateTime date, DateTime cutoff_date, int countrparty)
+        {
+            DATE.SelectedDate = date;
+            CUTOFF_DATE.SelectedDate = cutoff_date;
+            FK_COUNTERPARTY_ID.SelectedIndex = countrparty;
+        }
+        public void Filling_LIST(int nomenclature, string quantity, string price)
+        {
+            FK_NOMENCLATURE_ID.SelectedIndex = nomenclature;
+            QUANTITY.Text = quantity;
+            PRICE.Text = price;
+        }
+    }
+}

+ 90 - 0
ProOdezhda/Windows/AdditionalWin/Supplier/WinPURCHASE_INVOICE.xaml

@@ -0,0 +1,90 @@
+<Window x:Class="ProOdezhda.Windows.WinPURCHASE_INVOICE"
+        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
+        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
+        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
+        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
+        xmlns:local="clr-namespace:ProOdezhda.Windows"
+        mc:Ignorable="d"
+        Title="WinPURCHASE_INVOICE" Height="450" Width="800" WindowStyle="None" ResizeMode="NoResize" WindowStartupLocation="CenterScreen">
+    <Grid>
+        <Grid.Background>
+            <RadialGradientBrush>
+                <GradientStop Color="#FF852DFF"/>
+                <GradientStop Color="#FF2A0859" Offset="1"/>
+            </RadialGradientBrush>
+        </Grid.Background>
+        <Grid.RowDefinitions>
+            <RowDefinition Height="10"/>
+            <RowDefinition Height="43"/>
+            <RowDefinition Height="27"/>
+            <RowDefinition Height="27"/>
+            <RowDefinition Height="27"/>
+            <RowDefinition Height="27*"/>
+            <RowDefinition Height="57*"/>
+            <RowDefinition Height="78*"/>
+            <RowDefinition Height="78*"/>
+            <RowDefinition Height="62*"/>
+            <RowDefinition Height="10*"/>
+        </Grid.RowDefinitions>
+        <Grid.ColumnDefinitions>
+            <ColumnDefinition Width="10"/>
+            <ColumnDefinition/>
+            <ColumnDefinition Width="10"/>
+        </Grid.ColumnDefinitions>
+
+        <Border CornerRadius="20" BorderBrush="Black" BorderThickness="1" Background="White" Grid.RowSpan="9" Grid.Row="1" Grid.Column="1"/>
+        <TextBlock x:Name="NAME_F" Grid.Column="1" Margin="215,10,215,9" TextWrapping="Wrap" Text="СОЗДАНИЕ ПРИХОДНОЙ НАКЛАДНОЙ" VerticalAlignment="Center" HorizontalAlignment="Center" FontSize="18" TextAlignment="Center" FontWeight="Bold" Grid.Row="1"  Foreground="#FF510FAD"/>
+
+        <Button Grid.Row ="1" Grid.Column="1" Content="СОХРАНИТЬ" HorizontalAlignment="Right" Height="22" Margin="0,10,35,11" VerticalAlignment="Center" Width="130" FontSize="12" Click="BC_Save">
+            <Button.Background>
+                <LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">
+                    <GradientStop Color="#FF320571" Offset="1"/>
+                    <GradientStop Color="#FF9040FF"/>
+                </LinearGradientBrush>
+            </Button.Background>
+        </Button>
+
+        <DatePicker x:Name="DATE" Height="24" Margin="112,2,396,1" VerticalAlignment="Center" x:FieldModifier="public" Grid.Row="2" BorderBrush="Black" Grid.Column="1"/>
+        <TextBlock Text="Дата оформления" HorizontalAlignment="Left" Margin="10,6,0,5" VerticalAlignment="Center" Width="99" Grid.Column="1" Grid.Row="2" Foreground="#FF510FAD" Height="16"/>
+
+        <ComboBox x:Name="ORDERs" Height="24" Margin="112,1,396,2" VerticalAlignment="Center" x:FieldModifier="public" Grid.Column="1" Grid.Row="4" BorderBrush="Black" IsEnabled="False" Foreground="Black" SelectionChanged="ORDERs_SelectionChanged">
+            <ComboBox.ItemTemplate>
+                <DataTemplate>
+                    <TextBlock Foreground="Black">
+                        <TextBlock.Text>
+                            <MultiBinding StringFormat="{}№{0} от {1:dd.MM.yyyy} до {2:dd.MM.yyyy}">
+                                <Binding Path="ORDER_ID"/>
+                                <Binding Path="DATE"/>
+                                <Binding Path="CUTOFF_DATE"/>
+                            </MultiBinding>
+                        </TextBlock.Text>
+                    </TextBlock>
+                </DataTemplate>
+            </ComboBox.ItemTemplate>
+        </ComboBox>
+
+        <TextBlock x:Name="N_ORDER" Text="Заказ" HorizontalAlignment="Left" Margin="10,5,0,6" VerticalAlignment="Center" Width="98" Grid.Row="4" Foreground="Gray" Height="16" Grid.Column="1"/>
+
+        <ComboBox x:Name="COUNTERPARTYs" Height="24" Margin="112,2,10,1" VerticalAlignment="Center" x:FieldModifier="public" Grid.Row="3" BorderBrush="Black" Grid.Column="1" Background="White" SelectionChanged="COUNTERPARTYs_SelectionChanged"/>
+
+        <TextBlock Text="Поставщик" HorizontalAlignment="Left" Margin="10,6,0,6" VerticalAlignment="Center" Width="98" Grid.Column="1" Grid.Row="3" Foreground="#FF510FAD" Height="15"/>
+
+        <DataGrid x:Name="LIST_Grid" Margin="12,0,10,11" AutoGenerateColumns="False" IsReadOnly="True" ColumnWidth="*" Grid.Row="5" Grid.RowSpan="5" Grid.Column="1" ItemsSource="{Binding}">
+            <DataGrid.Columns>
+                <DataGridTextColumn Binding="{Binding FK_NOMENCLATURE_ID}" Visibility="Hidden"/>
+                <DataGridTextColumn Header="Материал" Binding="{Binding NOMENCLATURE.NAME}"/>
+                <DataGridTextColumn Header="Количество" Binding="{Binding QUANTITY}"/>
+                <DataGridTextColumn Header="Цена" Binding="{Binding PRICE}"/>
+                <DataGridTextColumn Header="Стоимость" Binding="{Binding SUM}"/>
+            </DataGrid.Columns>
+        </DataGrid>
+        <Button Grid.Row ="1" Grid.Column="1" HorizontalAlignment="Left" Height="22" Margin="35,10,0,11" VerticalAlignment="Center" Width="89" FontSize="12" Content="ОТМЕНА" Click="BC_Cancel">
+            <Button.Background>
+                <LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">
+                    <GradientStop Color="#FF320571" Offset="1"/>
+                    <GradientStop Color="#FF9040FF"/>
+                </LinearGradientBrush>
+            </Button.Background>
+        </Button>
+    </Grid>
+</Window>

+ 87 - 0
ProOdezhda/Windows/AdditionalWin/Supplier/WinPURCHASE_INVOICE.xaml.cs

@@ -0,0 +1,87 @@
+using System;
+using System.Data;
+using System.Linq;
+using System.Windows;
+using System.Windows.Controls;
+
+namespace ProOdezhda.Windows
+{
+    public partial class WinPURCHASE_INVOICE : Window
+    {
+        ProOdezhdaEntities db = new ProOdezhdaEntities();
+        Working_With_Forms af = new Working_With_Forms();
+        MainFunctionality mf = new MainFunctionality();
+
+        public WinPURCHASE_INVOICE()
+        {
+            InitializeComponent();
+            mf.Load_COUNTERPARTY(COUNTERPARTYs, "Поставщик");
+        }
+
+        private void BC_Cancel(object sender, RoutedEventArgs e) { Hide(); }
+        private void BC_Save(object sender, RoutedEventArgs e) { if (Save()) { Hide(); } }
+
+        private void COUNTERPARTYs_SelectionChanged(object sender, SelectionChangedEventArgs e) 
+        { af.COUNTERPARTY_Selection("ORDER", ORDERs, LIST_Grid, N_ORDER, COUNTERPARTYs); }
+        
+        private void ORDERs_SelectionChanged(object sender, SelectionChangedEventArgs e) 
+        { af.REQUEST_or_ORDER_Selection("ORDER", ORDERs, LIST_Grid); }    
+
+        public bool Save(bool test = false)
+        {
+            if (Check(test))
+            {
+                PURCHASE_INVOICE purchase_invoice = new PURCHASE_INVOICE
+                {
+                    DATE = DateTime.Parse(DATE.SelectedDate.ToString()),
+                    FK_ORDER_ID = int.Parse(ORDERs.SelectedValue.ToString()),
+                };
+
+                db.PURCHASE_INVOICE.Add(purchase_invoice);                
+
+                db.SaveChanges();
+
+                return true;
+            }
+
+            return false;
+        }
+
+        public bool Check(bool test = false)
+        {
+            if(ORDERs.SelectedValue == null) { return false; }
+            int id = int.Parse(ORDERs.SelectedValue.ToString());
+            if (DATE.SelectedDate == null)
+            {
+                if (test) { return false; }
+                MessageBox.Show("Дата оформления не введена!"); return false; 
+            }
+            else if (DATE.SelectedDate < db.ORDERs.Where(o_id => o_id.ORDER_ID == id).FirstOrDefault().DATE)
+            {
+                if (test) { return false; }
+                MessageBox.Show("Дата оформления накладной раньше чем у заказа!"); return false; 
+            }
+
+            if (COUNTERPARTYs.SelectedValue == null)
+            {
+                if (test) { return false; }
+                MessageBox.Show("Поставщик не выбран!"); return false; 
+            }
+
+            if (ORDERs.SelectedValue == null)
+            {
+                if (test) { return false; }
+                MessageBox.Show("Заказ не выбран!"); return false; 
+            }
+
+            return true;
+        }
+
+        public void Filling(DateTime date, int counterparty, int order)
+        {
+            DATE.SelectedDate = date;
+            COUNTERPARTYs.SelectedIndex = counterparty;
+            ORDERs.SelectedIndex = order;
+        }
+    }
+}

+ 86 - 0
ProOdezhda/Windows/AdditionalWin/WinCOUNTERPARTY.xaml

@@ -0,0 +1,86 @@
+<Window x:Class="ProOdezhda.Windows.WinCOUNTERPARTY"
+        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
+        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
+        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
+        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
+        xmlns:local="clr-namespace:ProOdezhda.Windows" xmlns:wpfTool="http://schemas.xceed.com/wpf/xaml/toolkit"
+        mc:Ignorable="d"
+        Title="WinCOUNTERPARTY" Height="450" Width="800" WindowStyle="None" ResizeMode="NoResize" WindowStartupLocation="CenterScreen">
+    <Grid>
+        <Grid.Background>
+            <RadialGradientBrush>
+                <GradientStop Color="#FF852DFF"/>
+                <GradientStop Color="#FF2A0859" Offset="1"/>
+            </RadialGradientBrush>
+        </Grid.Background>
+        <Grid.RowDefinitions>
+            <RowDefinition Height="10"/>
+            <RowDefinition Height="43"/>
+            <RowDefinition Height="27*"/>
+            <RowDefinition Height="27*"/>
+            <RowDefinition Height="27*"/>
+            <RowDefinition Height="27*"/>
+            <RowDefinition Height="27*"/>
+            <RowDefinition Height="27*"/>
+            <RowDefinition Height="27*"/>
+            <RowDefinition Height="27*"/>
+            <RowDefinition Height="27*"/>
+            <RowDefinition Height="27*"/>
+            <RowDefinition Height="10"/>
+        </Grid.RowDefinitions>
+        <Grid.ColumnDefinitions>
+            <ColumnDefinition Width="10"/>
+            <ColumnDefinition/>
+            <ColumnDefinition Width="10"/>
+        </Grid.ColumnDefinitions>
+
+        <Border CornerRadius="20" BorderBrush="Black" BorderThickness="1" Background="White" Grid.RowSpan="11" Grid.Row="1" Grid.Column="1"/>
+        <TextBlock x:Name="NAME_F" Grid.Column="1" Margin="0" TextWrapping="Wrap" Text="СОЗДАНИЕ КОНТРАГЕНТА" VerticalAlignment="Center" HorizontalAlignment="Center" FontSize="18" TextAlignment="Center" FontWeight="Bold"  Foreground="#FF510FAD" Grid.ColumnSpan="2" Grid.Row="1"/>
+
+        <Button Grid.Row ="1" Grid.Column="1" Content="СОХРАНИТЬ" HorizontalAlignment="Right" Height="22" Margin="0,10,35,11" VerticalAlignment="Center" Width="130" FontSize="12" Click="BC_Cancel">
+            <Button.Background>
+                <LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">
+                    <GradientStop Color="#FF320571" Offset="1"/>
+                    <GradientStop Color="#FF9040FF"/>
+                </LinearGradientBrush>
+            </Button.Background>
+        </Button>
+        <Button Grid.Row ="1" Grid.Column="1" Content="ОТМЕНА" HorizontalAlignment="Left" Height="22" Margin="35,10,0,11" VerticalAlignment="Center" Width="89" FontSize="12" Click="BC_Save">
+            <Button.Background>
+                <LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">
+                    <GradientStop Color="#FF320571" Offset="1"/>
+                    <GradientStop Color="#FF9040FF"/>
+                </LinearGradientBrush>
+            </Button.Background>
+        </Button>
+        <TextBox Grid.Row ="2" Grid.Column="1" x:Name="NAME" Height="24" Margin="139,0,10,0" TextWrapping="Wrap" VerticalAlignment="Center" x:FieldModifier="public" Background="White" BorderBrush="Black"/>
+        <TextBlock Grid.Row ="2" Grid.Column="1" Text="Наименование" HorizontalAlignment="Left" Margin="10,5,0,5" VerticalAlignment="Center" Width="124" FontSize="14" Foreground="#FF510FAD"/>
+
+        <ComboBox Grid.Row ="3" Grid.Column="1" x:Name="TYPE" Height="24" Margin="139,0,10,0" VerticalAlignment="Center" x:FieldModifier="public" Background="White" BorderBrush="Black"/>
+        <TextBlock Grid.Row ="3" Grid.Column="1" Text="Тип" HorizontalAlignment="Left" Margin="10,5,0,5" VerticalAlignment="Center" Width="124" FontSize="14" Foreground="#FF510FAD"/>
+
+        <TextBox Grid.Row ="4" Grid.Column="1" x:Name="ADDRESS" Height="24" Margin="139,0,10,0" TextWrapping="Wrap" VerticalAlignment="Center" x:FieldModifier="public" Background="White" BorderBrush="Black"/>
+        <TextBlock Grid.Row ="4" Grid.Column="1" Text="Адрес" HorizontalAlignment="Left" Margin="10,5,0,5" VerticalAlignment="Center" Width="124" FontSize="14" Foreground="#FF510FAD"/>
+
+        <wpfTool:MaskedTextBox Mask="000000000000" Grid.Row ="5" Grid.Column="1" x:Name="INN" Margin="139,0,0,0" TextWrapping="Wrap" VerticalAlignment="Center" x:FieldModifier="public" MouseDoubleClick="MouseDoubleClick_CursorToStart" Background="White" Height="22" HorizontalAlignment="Left" Width="117" BorderBrush="Black"/>
+        <TextBlock Grid.Row ="5" Grid.Column="1" Text="ИНН" HorizontalAlignment="Left" Margin="10,5,0,5" VerticalAlignment="Center" Width="124" FontSize="14" Foreground="#FF510FAD"/>
+
+        <wpfTool:MaskedTextBox Mask="000000000" Grid.Row ="6" Grid.Column="1" x:Name="KPP" Margin="139,0,0,0" TextWrapping="Wrap" VerticalAlignment="Center" x:FieldModifier="public" MouseDoubleClick="MouseDoubleClick_CursorToStart" Background="White" Height="22" HorizontalAlignment="Left" Width="117" BorderBrush="Black"/>
+        <TextBlock Grid.Row ="6" Grid.Column="1" Text="КПП" HorizontalAlignment="Left" Margin="10,5,0,5" VerticalAlignment="Center" Width="124" FontSize="14" Foreground="#FF510FAD"/>
+
+        <wpfTool:MaskedTextBox Mask="0000000000000" Grid.Row ="7" Grid.Column="1" x:Name="OGRN" Margin="139,0,0,0" TextWrapping="Wrap" VerticalAlignment="Center" x:FieldModifier="public" MouseDoubleClick="MouseDoubleClick_CursorToStart" Background="White" Height="22" HorizontalAlignment="Left" Width="117" BorderBrush="Black"/>
+        <TextBlock Grid.Row ="7" Grid.Column="1" Text="ОГРН" HorizontalAlignment="Left" Margin="10,5,0,5" VerticalAlignment="Center" Width="124" FontSize="14" Foreground="#FF510FAD"/>
+
+        <TextBox Grid.Row ="8" Grid.Column="1" x:Name="DIRECTOR" Height="24" Margin="139,0,10,0" TextWrapping="Wrap" VerticalAlignment="Center" x:FieldModifier="public" Background="White" BorderBrush="Black"/>
+        <TextBlock Grid.Row ="8" Grid.Column="1" Text="ФИО директора" HorizontalAlignment="Left" Margin="10,4,0,5" VerticalAlignment="Center" Width="124" FontSize="14" Foreground="#FF510FAD"/>
+
+        <wpfTool:MaskedTextBox Mask="+8 (000) 000-00-00" Grid.Row ="9" Grid.Column="1" x:Name="TELEPHONE" Height="24" Margin="139,0,0,0" TextWrapping="Wrap" VerticalAlignment="Center" x:FieldModifier="public" MouseDoubleClick="MouseDoubleClick_CursorToStart" Background="White" HorizontalAlignment="Left" Width="117" BorderBrush="Black"/>
+        <TextBlock Grid.Row ="9" Grid.Column="1" Text="Телефон" HorizontalAlignment="Left" Margin="10,5,0,4" VerticalAlignment="Center" Width="124" FontSize="14" Foreground="#FF510FAD"/>
+
+        <TextBox Grid.Row ="10" Grid.Column="1" x:Name="EMAIL" Height="24" Margin="139,0,10,0" TextWrapping="Wrap" VerticalAlignment="Center" x:FieldModifier="public" Background="White" BorderBrush="Black"/>
+        <TextBlock Grid.Row ="10" Grid.Column="1" Text="Email" HorizontalAlignment="Left" Margin="10,4,0,5" VerticalAlignment="Center" Width="124" FontSize="14" Foreground="#FF510FAD"/>
+
+        <ComboBox Grid.Row ="11" Grid.Column="1" x:Name="CATEGORY_C" Height="24" Margin="139,0,10,0" VerticalAlignment="Center" x:FieldModifier="public" Background="White" BorderBrush="Black"/>
+        <TextBlock Grid.Row ="11" Grid.Column="1" Text="Категория" HorizontalAlignment="Left" Margin="10,5,0,4" VerticalAlignment="Center" Width="124" FontSize="14" Foreground="#FF510FAD"/>
+    </Grid>
+</Window>

+ 147 - 0
ProOdezhda/Windows/AdditionalWin/WinCOUNTERPARTY.xaml.cs

@@ -0,0 +1,147 @@
+using System.Linq;
+using System.Text.RegularExpressions;
+using System.Windows;
+using System.Windows.Controls;
+using System.Windows.Input;
+
+
+namespace ProOdezhda.Windows
+{
+    public partial class WinCOUNTERPARTY : Window
+    {
+        ProOdezhdaEntities db = new ProOdezhdaEntities();
+        
+        public WinCOUNTERPARTY() { InitializeComponent(); Load(); }
+
+        private void BC_Save(object sender, RoutedEventArgs e) { Hide(); }
+        private void BC_Cancel(object sender, RoutedEventArgs e) { if (Save()) { Hide(); } }
+
+        public void Load()
+        {
+            TYPE.ItemsSource = db.TYPEs.ToList();
+
+            TYPE.DisplayMemberPath = "NAME";
+            TYPE.SelectedValuePath = "TYPE_ID";
+
+            CATEGORY_C.ItemsSource = db.CATEGORY_C.ToList();
+
+            CATEGORY_C.DisplayMemberPath = "NAME";
+            CATEGORY_C.SelectedValuePath = "CATEGORY_C_ID";
+        }
+
+        public bool Save(bool test = false)
+        {
+            if (Chack(test))
+            {
+                COUNTERPARTY c = new COUNTERPARTY()
+                {
+                    NAME = NAME.Text,
+                    FK_TYPE_ID = int.Parse(TYPE.SelectedValue.ToString()),
+                    ADDRESS = ADDRESS.Text,
+                    INN = INN.Text,
+                    KPP = KPP.Text,
+                    OGRN = OGRN.Text,
+                    DIRECTOR = DIRECTOR.Text,
+                    TELEPHONE = TELEPHONE.Text,
+                    EMAIL = EMAIL.Text                    
+                };
+                if (CATEGORY_C.SelectedValue != null) { c.FK_CATEGORY_C_ID = int.Parse(CATEGORY_C.SelectedValue.ToString()); }
+                db.COUNTERPARTies.Add(c); db.SaveChanges();
+                return true;
+            }
+            return false;
+        }
+
+        public bool Chack(bool test = false)
+        {
+            if (NAME.Text == string.Empty)
+            {
+                if (test) { return false; }
+                MessageBox.Show("Название не введено!"); return false; 
+            }
+           
+            if (TYPE.SelectedValue == null)
+            {
+                if (test) { return false; }
+                MessageBox.Show("Тип не выбранн!"); return false; 
+            }
+           
+            if (ADDRESS.Text == string.Empty)
+            {
+                if (test) { return false; }
+                MessageBox.Show("Адрес не введён!"); return false; 
+            }
+            
+            if (INN.Text.Trim('_').Length < 12 && !Regex.IsMatch(INN.Text.Trim('_'), @"([0-9])+")) 
+            {
+                if (test) { return false; }
+                MessageBox.Show("ИНН введён неправильно!"); return false; 
+            }
+            
+            if (KPP.Text.Trim('_').Length < 9 && !Regex.IsMatch(KPP.Text.Trim('_'), @"([0-9])+")) 
+            {
+                if (test) { return false; }
+                MessageBox.Show("КПП введён неправильно!"); return false; 
+            }
+            
+            if (OGRN.Text.Trim('_').Length < 13 && !Regex.IsMatch(OGRN.Text.Trim('_'), @"([0-9])+")) 
+            {
+                if (test) { return false; }
+                MessageBox.Show("ОГРН введён неправильно!"); return false; 
+            }
+            
+            if (DIRECTOR.Text == string.Empty)
+            {
+                if (test) { return false; }
+                MessageBox.Show("ФИО директора не введено!"); return false; 
+            }
+            else if (!Regex.IsMatch(DIRECTOR.Text, @"^\S+ \S+$") && !Regex.IsMatch(DIRECTOR.Text, @"^\S+ \S+ \S+$"))
+            {
+                if (test) { return false; }
+                MessageBox.Show("ФИО директора введено неправильно!"); return false; 
+            }
+            
+            if (TELEPHONE.Text.Replace("+8 (", "").Replace(") ", "").Replace("-", "").Replace("_", "").Length < 10 &&
+                !Regex.IsMatch(TELEPHONE.Text.Replace("+8 (", "").Replace(") ", "").Replace("-", "").Replace("_", ""), @"([0-9])+"))
+            {
+                if (test) { return false; }
+                MessageBox.Show("Телефон введён неправильно!"); return false; 
+            }
+            
+            if (EMAIL.Text == string.Empty)
+            {
+                if (test) { return false; }
+                MessageBox.Show("Email не введён!"); return false; 
+            }
+            else if (Regex.IsMatch(EMAIL.Text, @"([а-я])+"))
+            {
+                if (test) { return false; }
+                MessageBox.Show("Email не должен содержать в себе кириллицу!"); return false; 
+            }
+            else if (!Regex.IsMatch(EMAIL.Text, @"^[^@\s]+@[^@\s]+\.[^@\s]+$"))
+            {
+                if (test) { return false; }
+                MessageBox.Show("Email введён неправильно!"); return false; 
+            }
+
+            return true;
+        }
+
+        public void Filling(string name, int type, string address, string inn, string kpp, string ogrn, string director, string telephone, string email, int? category = null)
+        {
+            Load();
+            NAME.Text = name;
+            TYPE.SelectedIndex = type;
+            ADDRESS.Text = address;
+            INN.Text = inn;
+            KPP.Text = kpp;
+            OGRN.Text = ogrn;
+            DIRECTOR.Text = director;
+            TELEPHONE.Text = telephone;
+            EMAIL.Text = email;
+            if (category != null) { CATEGORY_C.SelectedIndex = (int)category; }
+        }
+
+        private void MouseDoubleClick_CursorToStart(object sender, MouseButtonEventArgs e) { (sender as TextBox).Select(0, 0); }        
+    }
+}

+ 63 - 0
ProOdezhda/Windows/AdditionalWin/WinRegistration.xaml

@@ -0,0 +1,63 @@
+<Window x:Class="ProOdezhda.Windows.WinRegistration"
+        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
+        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
+        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
+        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
+        xmlns:local="clr-namespace:ProOdezhda.Windows"
+        mc:Ignorable="d"
+        Title="WinRegistration" Height="340" Width="560" WindowStartupLocation="CenterScreen" ResizeMode="NoResize" WindowStyle="None">
+    <Grid>
+        <Grid.Background>
+            <RadialGradientBrush>
+                <GradientStop Color="#FF852DFF"/>
+                <GradientStop Color="#FF2A0859" Offset="1"/>
+            </RadialGradientBrush>
+        </Grid.Background>
+        <Grid.RowDefinitions>
+            <RowDefinition Height="10"/>
+            <RowDefinition/>
+            <RowDefinition/>
+            <RowDefinition/>
+            <RowDefinition/>
+            <RowDefinition/>
+            <RowDefinition Height="10"/>
+        </Grid.RowDefinitions>
+        <Grid.ColumnDefinitions>
+            <ColumnDefinition Width="10"/>
+            <ColumnDefinition/>
+            <ColumnDefinition Width="10"/>
+        </Grid.ColumnDefinitions>
+        <Border Grid.RowSpan="5" Grid.Row="1" Grid.Column="1" CornerRadius="20" BorderBrush="Black" BorderThickness="1" Background="White"/>
+
+        <TextBox x:Name="LOGIN" HorizontalAlignment="Right" Margin="0,14,35,14" TextWrapping="Wrap" VerticalAlignment="Center" Width="343" Grid.Row="2" Grid.Column="1" FontSize="22" Height="36"/>
+
+        <TextBox x:Name="PASSWORD" HorizontalAlignment="Right" Margin="0,14,35,14" TextWrapping="Wrap" VerticalAlignment="Center" Width="343" Grid.Row="3" Grid.Column="1" FontSize="22" Height="36"/>
+
+        <ComboBox x:Name="POSITION" HorizontalAlignment="Right" Height="36" Margin="0,14,37,14" VerticalAlignment="Center" Width="343" Grid.Column="1" Grid.Row="4" FontSize="22"/>
+
+
+        <TextBlock Text="Логин" HorizontalAlignment="Left" Margin="35,0,0,0" VerticalAlignment="Center" Grid.Column="1" Grid.Row="2" Foreground="#FF510FAD" FontSize="22"/>
+
+        <TextBlock Text="Пароль" HorizontalAlignment="Left" Margin="35,0,0,0" VerticalAlignment="Center" Grid.Column="1" Grid.Row="3" Foreground="#FF510FAD" FontSize="22"/>
+
+        <TextBlock x:Name="NAME_F" Grid.Column="1" Margin="0" TextWrapping="Wrap" Text="РЕГИСТРАЦИЯ" VerticalAlignment="Center" HorizontalAlignment="Center" FontSize="24" TextAlignment="Center" FontWeight="Bold"  Foreground="#FF510FAD" Grid.Row="1"/>
+
+        <Button Content="Отмена" HorizontalAlignment="Left" Margin="35,0,0,0" VerticalAlignment="Center" Width="100" Click="BC_Cancel" Grid.Column="1" Grid.Row="5">
+            <Button.Background>
+                <LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">
+                    <GradientStop Color="#FF320571" Offset="1"/>
+                    <GradientStop Color="#FF9040FF"/>
+                </LinearGradientBrush>
+            </Button.Background>
+        </Button>
+        <Button Content="Зарегистрироваться" HorizontalAlignment="Right" Margin="0,0,35,0" VerticalAlignment="Center" Width="167" Click="BC_Save" Grid.Column="1" Grid.Row="5">
+            <Button.Background>
+                <LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">
+                    <GradientStop Color="#FF320571" Offset="1"/>
+                    <GradientStop Color="#FF9040FF"/>
+                </LinearGradientBrush>
+            </Button.Background>
+        </Button>
+        <TextBlock Text="Должность" HorizontalAlignment="Left" Margin="35,17.368,0,16.631" VerticalAlignment="Center" Grid.Column="1" Grid.Row="4" Foreground="#FF510FAD" FontSize="22"/>
+    </Grid>
+</Window>

+ 80 - 0
ProOdezhda/Windows/AdditionalWin/WinRegistration.xaml.cs

@@ -0,0 +1,80 @@
+using System.Linq;
+using System.Text.RegularExpressions;
+using System.Windows;
+using System.Windows.Controls;
+
+namespace ProOdezhda.Windows
+{
+    public partial class WinRegistration : Window
+    {
+        ProOdezhdaEntities db = new ProOdezhdaEntities();
+
+        public WinRegistration()
+        {
+            InitializeComponent();
+            POSITION.ItemsSource = db.POSITIONs.ToList();
+
+            POSITION.DisplayMemberPath = "NAME";
+            POSITION.SelectedValuePath = "POSITION_ID";
+        }
+
+        private void BC_Cancel(object sender, RoutedEventArgs e) { Hide(); }
+        private void BC_Save(object sender, RoutedEventArgs e) 
+        { if (Save(LOGIN.Text, PASSWORD.Text, POSITION)) { Hide(); } }
+
+        public bool Save(string login, string password, ComboBox position, bool test = false)
+        {
+            if (Check(login, password, position, test))
+            {
+                USER u = new USER
+                {
+                    LOGIN = login,
+                    PASSWORD = password,
+                    FK_POSITION_ID = int.Parse(position.SelectedValue.ToString())
+                };
+                db.USERs.Add(u); db.SaveChanges();
+
+                return true;
+            }
+            return false;
+        }
+
+        public bool Check(string login, string password, ComboBox position, bool test = false)
+        {
+            if (login == string.Empty)
+            {
+                if (!test) { MessageBox.Show("Логин не введён!"); }
+                return false; 
+            }
+            else if (login.Contains(" "))
+            {
+                if (!test) { MessageBox.Show("Логин введён неправильно!"); }
+                return false; 
+            }
+            else if (db.USERs.Where(l => l.LOGIN == login).FirstOrDefault() != null)
+            {
+                if (!test) { MessageBox.Show("Логин уже занят!"); }
+                return false; 
+            }
+
+            if (password == string.Empty)
+            {
+                if (!test) { MessageBox.Show("Пароль не введён!"); }
+                return false; 
+            }
+            else if (password.Contains(" ") || Regex.IsMatch(password, @"([а-я])+"))
+            {
+                if (!test) { MessageBox.Show("Пароль введён неправильно!"); }
+                return false; 
+            }
+
+            if (position.SelectedValue == null)
+            {
+                if (!test) { MessageBox.Show("Должность не выбранна!"); } 
+                return false; 
+            }
+
+            return true;
+        }        
+    }
+}

+ 991 - 0
ProOdezhda/Windows/MainWin/WorkWindow.xaml

@@ -0,0 +1,991 @@
+<Window
+        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
+        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
+        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
+        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
+        xmlns:local="clr-namespace:ProOdezhda.Windows"
+        xmlns:ProOdezhda="clr-namespace:ProOdezhda" x:Class="ProOdezhda.Windows.WorkWindow"  
+        xmlns:wpfTool="clr-namespace:Xceed.Wpf.Toolkit;assembly=Xceed.Wpf.Toolkit"
+        mc:Ignorable="d"
+        xmlns:materialDesign="http://materialdesigninxaml.net/winfx/xaml/themes"
+        Title="ProОдежда" Height="450" Width="1359" WindowStartupLocation="CenterScreen" Closed="Window_Closed">
+    <Window.Resources>
+        <Style x:Key="FocusVisual">
+            <Setter Property="Control.Template">
+                <Setter.Value>
+                    <ControlTemplate>
+                        <Rectangle Margin="2" SnapsToDevicePixels="true" Stroke="{DynamicResource {x:Static SystemColors.ControlTextBrushKey}}" StrokeThickness="1" StrokeDashArray="1 2"/>
+                    </ControlTemplate>
+                </Setter.Value>
+            </Setter>
+        </Style>
+        <LinearGradientBrush x:Key="TabItem.Static.Background" EndPoint="0,1" StartPoint="0,0">
+            <GradientStop Color="#F0F0F0" Offset="0.0"/>
+            <GradientStop Color="#E5E5E5" Offset="1.0"/>
+        </LinearGradientBrush>
+        <SolidColorBrush x:Key="TabItem.Static.Border" Color="#ACACAC"/>
+        <LinearGradientBrush x:Key="TabItem.MouseOver.Background" EndPoint="0,1" StartPoint="0,0">
+            <GradientStop Color="#ECF4FC" Offset="0.0"/>
+            <GradientStop Color="#DCECFC" Offset="1.0"/>
+        </LinearGradientBrush>
+        <SolidColorBrush x:Key="TabItem.MouseOver.Border" Color="#7EB4EA"/>
+        <SolidColorBrush x:Key="TabItem.Disabled.Background" Color="#F0F0F0"/>
+        <SolidColorBrush x:Key="TabItem.Disabled.Border" Color="#D9D9D9"/>
+        <SolidColorBrush x:Key="TabItem.Selected.Border" Color="#ACACAC"/>
+        <SolidColorBrush x:Key="TabItem.Selected.Background" Color="#FFFFFF"/>
+        <Style x:Key="ProOdezhda_Button" TargetType="{x:Type TabItem}">
+            <Setter Property="FocusVisualStyle" Value="{StaticResource FocusVisual}"/>
+            <Setter Property="Foreground" Value="White"/>
+            <Setter Property="Background" Value="{StaticResource TabItem.Static.Background}"/>
+            <Setter Property="BorderBrush" Value="{StaticResource TabItem.Static.Border}"/>
+            <Setter Property="Margin" Value="0"/>
+            <Setter Property="Padding" Value="6,2,6,2"/>
+            <Setter Property="HorizontalContentAlignment" Value="Stretch"/>
+            <Setter Property="VerticalContentAlignment" Value="Stretch"/>
+            <Setter Property="Template">
+                <Setter.Value>
+                    <ControlTemplate TargetType="{x:Type TabItem}">
+                        <Grid x:Name="templateRoot" SnapsToDevicePixels="true">
+                            <Border x:Name="mainBorder" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="1,1,1,0" Background="{TemplateBinding Background}" Margin="0">
+                                <Border x:Name="innerBorder" BorderBrush="#FF4E2982" BorderThickness="1,1,1,0" Margin="-1" Opacity="0">
+                                    <Border.Background>
+                                        <LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">
+                                            <GradientStop Color="#FF29015F" Offset="0"/>
+                                            <GradientStop Color="#FF9866DE" Offset="1"/>
+                                        </LinearGradientBrush>
+                                    </Border.Background>
+                                </Border>
+                            </Border>
+                            <ContentPresenter x:Name="contentPresenter" ContentSource="Header" Focusable="False" HorizontalAlignment="{Binding HorizontalContentAlignment, RelativeSource={RelativeSource AncestorType={x:Type ItemsControl}}}" Margin="{TemplateBinding Padding}" RecognizesAccessKey="True" SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" VerticalAlignment="{Binding VerticalContentAlignment, RelativeSource={RelativeSource AncestorType={x:Type ItemsControl}}}"/>
+                        </Grid>
+                        <ControlTemplate.Triggers>
+                            <MultiDataTrigger>
+                                <MultiDataTrigger.Conditions>
+                                    <Condition Binding="{Binding IsMouseOver, RelativeSource={RelativeSource Self}}" Value="true"/>
+                                    <Condition Binding="{Binding TabStripPlacement, RelativeSource={RelativeSource AncestorType={x:Type TabControl}}}" Value="Left"/>
+                                </MultiDataTrigger.Conditions>
+                                <Setter Property="Background" TargetName="mainBorder" Value="{StaticResource TabItem.MouseOver.Background}"/>
+                                <Setter Property="BorderBrush" TargetName="mainBorder" Value="{StaticResource TabItem.MouseOver.Border}"/>
+                                <Setter Property="BorderThickness" TargetName="innerBorder" Value="1,1,0,1"/>
+                                <Setter Property="BorderThickness" TargetName="mainBorder" Value="1,1,0,1"/>
+                            </MultiDataTrigger>
+                            <MultiDataTrigger>
+                                <MultiDataTrigger.Conditions>
+                                    <Condition Binding="{Binding IsMouseOver, RelativeSource={RelativeSource Self}}" Value="true"/>
+                                    <Condition Binding="{Binding TabStripPlacement, RelativeSource={RelativeSource AncestorType={x:Type TabControl}}}" Value="Bottom"/>
+                                </MultiDataTrigger.Conditions>
+                                <Setter Property="Background" TargetName="mainBorder" Value="{StaticResource TabItem.MouseOver.Background}"/>
+                                <Setter Property="BorderBrush" TargetName="mainBorder" Value="{StaticResource TabItem.MouseOver.Border}"/>
+                                <Setter Property="BorderThickness" TargetName="innerBorder" Value="1,0,1,1"/>
+                                <Setter Property="BorderThickness" TargetName="mainBorder" Value="1,0,1,1"/>
+                            </MultiDataTrigger>
+                            <MultiDataTrigger>
+                                <MultiDataTrigger.Conditions>
+                                    <Condition Binding="{Binding IsMouseOver, RelativeSource={RelativeSource Self}}" Value="true"/>
+                                    <Condition Binding="{Binding TabStripPlacement, RelativeSource={RelativeSource AncestorType={x:Type TabControl}}}" Value="Right"/>
+                                </MultiDataTrigger.Conditions>
+                                <Setter Property="Background" TargetName="mainBorder" Value="{StaticResource TabItem.MouseOver.Background}"/>
+                                <Setter Property="BorderBrush" TargetName="mainBorder" Value="{StaticResource TabItem.MouseOver.Border}"/>
+                                <Setter Property="BorderThickness" TargetName="innerBorder" Value="0,1,1,1"/>
+                                <Setter Property="BorderThickness" TargetName="mainBorder" Value="0,1,1,1"/>
+                            </MultiDataTrigger>
+                            <MultiDataTrigger>
+                                <MultiDataTrigger.Conditions>
+                                    <Condition Binding="{Binding IsMouseOver, RelativeSource={RelativeSource Self}}" Value="true"/>
+                                    <Condition Binding="{Binding TabStripPlacement, RelativeSource={RelativeSource AncestorType={x:Type TabControl}}}" Value="Top"/>
+                                </MultiDataTrigger.Conditions>
+                                <Setter Property="Background" TargetName="mainBorder" Value="{StaticResource TabItem.MouseOver.Background}"/>
+                                <Setter Property="BorderBrush" TargetName="mainBorder" Value="{StaticResource TabItem.MouseOver.Border}"/>
+                                <Setter Property="BorderThickness" TargetName="innerBorder" Value="1,1,1,0"/>
+                                <Setter Property="BorderThickness" TargetName="mainBorder" Value="1,1,1,0"/>
+                            </MultiDataTrigger>
+                            <MultiDataTrigger>
+                                <MultiDataTrigger.Conditions>
+                                    <Condition Binding="{Binding IsEnabled, RelativeSource={RelativeSource Self}}" Value="false"/>
+                                    <Condition Binding="{Binding TabStripPlacement, RelativeSource={RelativeSource AncestorType={x:Type TabControl}}}" Value="Left"/>
+                                </MultiDataTrigger.Conditions>
+                                <Setter Property="Opacity" TargetName="contentPresenter" Value="0.56"/>
+                                <Setter Property="Background" TargetName="mainBorder" Value="{StaticResource TabItem.Disabled.Background}"/>
+                                <Setter Property="BorderBrush" TargetName="mainBorder" Value="{StaticResource TabItem.Disabled.Border}"/>
+                                <Setter Property="BorderThickness" TargetName="innerBorder" Value="1,1,0,1"/>
+                                <Setter Property="BorderThickness" TargetName="mainBorder" Value="1,1,0,1"/>
+                            </MultiDataTrigger>
+                            <MultiDataTrigger>
+                                <MultiDataTrigger.Conditions>
+                                    <Condition Binding="{Binding IsEnabled, RelativeSource={RelativeSource Self}}" Value="false"/>
+                                    <Condition Binding="{Binding TabStripPlacement, RelativeSource={RelativeSource AncestorType={x:Type TabControl}}}" Value="Bottom"/>
+                                </MultiDataTrigger.Conditions>
+                                <Setter Property="Opacity" TargetName="contentPresenter" Value="0.56"/>
+                                <Setter Property="Background" TargetName="mainBorder" Value="{StaticResource TabItem.Disabled.Background}"/>
+                                <Setter Property="BorderBrush" TargetName="mainBorder" Value="{StaticResource TabItem.Disabled.Border}"/>
+                                <Setter Property="BorderThickness" TargetName="innerBorder" Value="1,0,1,1"/>
+                                <Setter Property="BorderThickness" TargetName="mainBorder" Value="1,0,1,1"/>
+                            </MultiDataTrigger>
+                            <MultiDataTrigger>
+                                <MultiDataTrigger.Conditions>
+                                    <Condition Binding="{Binding IsEnabled, RelativeSource={RelativeSource Self}}" Value="false"/>
+                                    <Condition Binding="{Binding TabStripPlacement, RelativeSource={RelativeSource AncestorType={x:Type TabControl}}}" Value="Right"/>
+                                </MultiDataTrigger.Conditions>
+                                <Setter Property="Opacity" TargetName="contentPresenter" Value="0.56"/>
+                                <Setter Property="Background" TargetName="mainBorder" Value="{StaticResource TabItem.Disabled.Background}"/>
+                                <Setter Property="BorderBrush" TargetName="mainBorder" Value="{StaticResource TabItem.Disabled.Border}"/>
+                                <Setter Property="BorderThickness" TargetName="innerBorder" Value="0,1,1,1"/>
+                                <Setter Property="BorderThickness" TargetName="mainBorder" Value="0,1,1,1"/>
+                            </MultiDataTrigger>
+                            <MultiDataTrigger>
+                                <MultiDataTrigger.Conditions>
+                                    <Condition Binding="{Binding IsEnabled, RelativeSource={RelativeSource Self}}" Value="false"/>
+                                    <Condition Binding="{Binding TabStripPlacement, RelativeSource={RelativeSource AncestorType={x:Type TabControl}}}" Value="Top"/>
+                                </MultiDataTrigger.Conditions>
+                                <Setter Property="Opacity" TargetName="contentPresenter" Value="0.56"/>
+                                <Setter Property="Background" TargetName="mainBorder" Value="{StaticResource TabItem.Disabled.Background}"/>
+                                <Setter Property="BorderBrush" TargetName="mainBorder" Value="{StaticResource TabItem.Disabled.Border}"/>
+                                <Setter Property="BorderThickness" TargetName="innerBorder" Value="1,1,1,0"/>
+                                <Setter Property="BorderThickness" TargetName="mainBorder" Value="1,1,1,0"/>
+                            </MultiDataTrigger>
+                            <MultiDataTrigger>
+                                <MultiDataTrigger.Conditions>
+                                    <Condition Binding="{Binding IsSelected, RelativeSource={RelativeSource Self}}" Value="false"/>
+                                    <Condition Binding="{Binding TabStripPlacement, RelativeSource={RelativeSource AncestorType={x:Type TabControl}}}" Value="Left"/>
+                                </MultiDataTrigger.Conditions>
+                                <Setter Property="BorderThickness" TargetName="innerBorder" Value="1,1,0,1"/>
+                                <Setter Property="BorderThickness" TargetName="mainBorder" Value="1,1,0,1"/>
+                            </MultiDataTrigger>
+                            <MultiDataTrigger>
+                                <MultiDataTrigger.Conditions>
+                                    <Condition Binding="{Binding IsSelected, RelativeSource={RelativeSource Self}}" Value="true"/>
+                                    <Condition Binding="{Binding TabStripPlacement, RelativeSource={RelativeSource AncestorType={x:Type TabControl}}}" Value="Left"/>
+                                </MultiDataTrigger.Conditions>
+                                <Setter Property="Panel.ZIndex" Value="1"/>
+                                <Setter Property="Margin" Value="-2,-2,0,-2"/>
+                                <Setter Property="Opacity" TargetName="innerBorder" Value="1"/>
+                                <Setter Property="BorderThickness" TargetName="innerBorder" Value="1,1,0,1"/>
+                                <Setter Property="BorderThickness" TargetName="mainBorder" Value="1,1,0,1"/>
+                            </MultiDataTrigger>
+                            <MultiDataTrigger>
+                                <MultiDataTrigger.Conditions>
+                                    <Condition Binding="{Binding IsSelected, RelativeSource={RelativeSource Self}}" Value="false"/>
+                                    <Condition Binding="{Binding TabStripPlacement, RelativeSource={RelativeSource AncestorType={x:Type TabControl}}}" Value="Bottom"/>
+                                </MultiDataTrigger.Conditions>
+                                <Setter Property="BorderThickness" TargetName="innerBorder" Value="1,0,1,1"/>
+                                <Setter Property="BorderThickness" TargetName="mainBorder" Value="1,0,1,1"/>
+                            </MultiDataTrigger>
+                            <MultiDataTrigger>
+                                <MultiDataTrigger.Conditions>
+                                    <Condition Binding="{Binding IsSelected, RelativeSource={RelativeSource Self}}" Value="true"/>
+                                    <Condition Binding="{Binding TabStripPlacement, RelativeSource={RelativeSource AncestorType={x:Type TabControl}}}" Value="Bottom"/>
+                                </MultiDataTrigger.Conditions>
+                                <Setter Property="Panel.ZIndex" Value="1"/>
+                                <Setter Property="Margin" Value="-2,0,-2,-2"/>
+                                <Setter Property="Opacity" TargetName="innerBorder" Value="1"/>
+                                <Setter Property="BorderThickness" TargetName="innerBorder" Value="1,0,1,1"/>
+                                <Setter Property="BorderThickness" TargetName="mainBorder" Value="1,0,1,1"/>
+                            </MultiDataTrigger>
+                            <MultiDataTrigger>
+                                <MultiDataTrigger.Conditions>
+                                    <Condition Binding="{Binding IsSelected, RelativeSource={RelativeSource Self}}" Value="false"/>
+                                    <Condition Binding="{Binding TabStripPlacement, RelativeSource={RelativeSource AncestorType={x:Type TabControl}}}" Value="Right"/>
+                                </MultiDataTrigger.Conditions>
+                                <Setter Property="BorderThickness" TargetName="innerBorder" Value="0,1,1,1"/>
+                                <Setter Property="BorderThickness" TargetName="mainBorder" Value="0,1,1,1"/>
+                            </MultiDataTrigger>
+                            <MultiDataTrigger>
+                                <MultiDataTrigger.Conditions>
+                                    <Condition Binding="{Binding IsSelected, RelativeSource={RelativeSource Self}}" Value="true"/>
+                                    <Condition Binding="{Binding TabStripPlacement, RelativeSource={RelativeSource AncestorType={x:Type TabControl}}}" Value="Right"/>
+                                </MultiDataTrigger.Conditions>
+                                <Setter Property="Panel.ZIndex" Value="1"/>
+                                <Setter Property="Margin" Value="0,-2,-2,-2"/>
+                                <Setter Property="Opacity" TargetName="innerBorder" Value="1"/>
+                                <Setter Property="BorderThickness" TargetName="innerBorder" Value="0,1,1,1"/>
+                                <Setter Property="BorderThickness" TargetName="mainBorder" Value="0,1,1,1"/>
+                            </MultiDataTrigger>
+                            <MultiDataTrigger>
+                                <MultiDataTrigger.Conditions>
+                                    <Condition Binding="{Binding IsSelected, RelativeSource={RelativeSource Self}}" Value="false"/>
+                                    <Condition Binding="{Binding TabStripPlacement, RelativeSource={RelativeSource AncestorType={x:Type TabControl}}}" Value="Top"/>
+                                </MultiDataTrigger.Conditions>
+                                <Setter Property="BorderThickness" TargetName="innerBorder" Value="1,1,1,0"/>
+                                <Setter Property="BorderThickness" TargetName="mainBorder" Value="1,1,1,0"/>
+                            </MultiDataTrigger>
+                            <MultiDataTrigger>
+                                <MultiDataTrigger.Conditions>
+                                    <Condition Binding="{Binding IsSelected, RelativeSource={RelativeSource Self}}" Value="true"/>
+                                    <Condition Binding="{Binding TabStripPlacement, RelativeSource={RelativeSource AncestorType={x:Type TabControl}}}" Value="Top"/>
+                                </MultiDataTrigger.Conditions>
+                                <Setter Property="Panel.ZIndex" Value="1"/>
+                                <Setter Property="Margin" Value="-2,-2,-2,0"/>
+                                <Setter Property="Opacity" TargetName="innerBorder" Value="1"/>
+                                <Setter Property="BorderThickness" TargetName="innerBorder" Value="1,1,1,0"/>
+                                <Setter Property="BorderThickness" TargetName="mainBorder" Value="1,1,1,0"/>
+                            </MultiDataTrigger>
+                        </ControlTemplate.Triggers>
+                    </ControlTemplate>
+                </Setter.Value>
+            </Setter>
+        </Style>
+        <CollectionViewSource x:Key="tYPEViewSource" d:DesignSource="{d:DesignInstance {x:Type ProOdezhda:TYPE}, CreateList=True}"/>
+    </Window.Resources>
+    <Grid>
+        <Grid.ColumnDefinitions>
+            <ColumnDefinition/>
+        </Grid.ColumnDefinitions>
+        <Grid.Background>
+            <LinearGradientBrush EndPoint="0.5,1" MappingMode="RelativeToBoundingBox" StartPoint="0.5,0">
+                <GradientStop Color="#FF852DFF"/>
+                <GradientStop Color="#FF2A0859" Offset="0.272"/>
+            </LinearGradientBrush>
+        </Grid.Background>
+        <Grid.RowDefinitions>
+            <RowDefinition/>
+        </Grid.RowDefinitions>
+        <TabControl BorderBrush="#FF4E2982">
+            <TabControl.Background>
+                <LinearGradientBrush EndPoint="0.5,1" MappingMode="RelativeToBoundingBox" StartPoint="0.5,0">
+                    <GradientStop Color="#FF8144D6"/>
+                    <GradientStop Color="#FF58159B" Offset="0.762"/>
+                </LinearGradientBrush>
+            </TabControl.Background>
+
+            <TabItem Header="Отчёты" Foreground="White" BorderBrush="#FF4E2982" Style="{DynamicResource ProOdezhda_Button}">
+                <TabItem.Background>
+                    <LinearGradientBrush EndPoint="0.5,1" MappingMode="RelativeToBoundingBox" StartPoint="0.5,0">
+                        <GradientStop Color="#FF8144D6"/>
+                        <GradientStop Color="#FF58159B" Offset="0.762"/>
+                    </LinearGradientBrush>
+                </TabItem.Background>
+
+                <TabControl TabStripPlacement="Left" Background="#FF4E2982" BorderBrush="#FF4E2982">
+                    
+                    
+                    
+                    <TabItem Header="Прибывшие заказы" Width="140" Foreground="White" BorderBrush="#FF4E2982" Style="{DynamicResource ProOdezhda_Button}">
+                        <TabItem.Background>
+                            <LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">
+                                <GradientStop Color="#FF320571" Offset="1"/>
+                                <GradientStop Color="#FF9040FF"/>
+                            </LinearGradientBrush>
+                        </TabItem.Background>
+                        
+                        <Grid Background="#FFE5E5E5">
+                            <Grid.RowDefinitions>
+                                <RowDefinition Height="27"/>
+                                <RowDefinition/>
+                            </Grid.RowDefinitions>
+                            <Grid.ColumnDefinitions>
+                                <ColumnDefinition/>
+                            </Grid.ColumnDefinitions>
+
+                            <DataGrid x:Name="Arrived_Orders" Margin="0" AutoGenerateColumns="False" IsReadOnly="True" ColumnWidth="*" Background="White" Grid.Row="1" x:FieldModifier="public">
+                                <DataGrid.Columns>
+                                    <DataGridTextColumn Header="Заказ" Binding="{Binding ORDER}"/>
+                                    <DataGridTextColumn Header="Поставщик" Binding="{Binding COUNTERPARTY}"/>
+                                    <DataGridTextColumn Header="Дата оформления" Binding="{Binding ORDER_DATE, StringFormat=\{0:dd.MM.yyyy\}}"/>
+                                    <DataGridTextColumn Header="Крайний срок" Binding="{Binding CUTOFF_DATE, StringFormat=\{0:dd.MM.yyyy\}}"/>
+                                    <DataGridTextColumn Header="Приходная накладная" Binding="{Binding PURCHASE_INVOICE}"/>
+                                    <DataGridTextColumn Header="Дата оформления" Binding="{Binding PURCHASE_INVOICE_DATE, StringFormat=\{0:dd.MM.yyyy\}}"/>
+                                    <DataGridTextColumn Header="Статус" Binding="{Binding STATUS}"/>
+                                </DataGrid.Columns>
+                            </DataGrid>
+                            
+                            <Button Content="СФОРМИРОВАТЬ" HorizontalAlignment="Left" Height="22" Margin="15,0,0,0" VerticalAlignment="Center" Width="130" FontSize="12" Click="BC_Arrived_Orders">
+                                <Button.Background>
+                                    <LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">
+                                        <GradientStop Color="#FF320571" Offset="1"/>
+                                        <GradientStop Color="#FF9040FF"/>
+                                    </LinearGradientBrush>
+                                </Button.Background>
+                            </Button>
+                        </Grid>
+                    </TabItem>
+                    
+                    
+                    
+                    <TabItem Header="Выполненные запросы" Width="140" Foreground="White" BorderBrush="#FF4E2982" Style="{DynamicResource ProOdezhda_Button}" Margin="-1,5,1,-5">
+                        <TabItem.Background>
+                            <LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">
+                                <GradientStop Color="#FF320571" Offset="1"/>
+                                <GradientStop Color="#FF9040FF"/>
+                            </LinearGradientBrush>
+                        </TabItem.Background>
+                        
+                        <Grid Background="#FFE5E5E5">
+                            <Grid.RowDefinitions>
+                                <RowDefinition Height="27"/>
+                                <RowDefinition/>
+                            </Grid.RowDefinitions>
+                            <Grid.ColumnDefinitions>
+                                <ColumnDefinition/>
+                            </Grid.ColumnDefinitions>
+
+                            <DataGrid x:Name="Completed_Requests" Margin="0" AutoGenerateColumns="False" IsReadOnly="True" ColumnWidth="*" Background="White" Grid.Row="1" x:FieldModifier="public">
+                                <DataGrid.Columns>
+                                    <DataGridTextColumn Header="Запрос" Binding="{Binding REQUEST}"/>
+                                    <DataGridTextColumn Header="Агент" Binding="{Binding COUNTERPARTY}"/>
+                                    <DataGridTextColumn Header="Дата оформления" Binding="{Binding REQUEST_DATE, StringFormat=\{0:dd.MM.yyyy\}}"/>
+                                    <DataGridTextColumn Header="Крайний срок" Binding="{Binding CUTOFF_DATE, StringFormat=\{0:dd.MM.yyyy\}}"/>
+                                    <DataGridTextColumn Header="Поставка" Binding="{Binding DISPATCH}"/>
+                                    <DataGridTextColumn Header="Дата оформления" Binding="{Binding DISPATCH_DATE, StringFormat=\{0:dd.MM.yyyy\}}"/>
+                                    <DataGridTextColumn Header="Статус" Binding="{Binding STATUS}"/>
+                                </DataGrid.Columns>
+                            </DataGrid>
+                            
+                            <Button Content="СФОРМИРОВАТЬ" HorizontalAlignment="Left" Height="22" Margin="15,2.5,0,2.5" VerticalAlignment="Center" Width="130" FontSize="12" Click="BC_Completed_Requests">
+                                <Button.Background>
+                                    <LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">
+                                        <GradientStop Color="#FF320571" Offset="1"/>
+                                        <GradientStop Color="#FF9040FF"/>
+                                    </LinearGradientBrush>
+                                </Button.Background>
+                            </Button>
+                        </Grid>
+                    </TabItem>
+                    
+                    
+                    
+                    <TabItem Header="Проданная продукция" Width="140" Foreground="White" BorderBrush="#FF4E2982" Style="{DynamicResource ProOdezhda_Button}" Margin="-1,10,1,-10">
+                        <TabItem.Background>
+                            <LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">
+                                <GradientStop Color="#FF320571" Offset="1"/>
+                                <GradientStop Color="#FF9040FF"/>
+                            </LinearGradientBrush>
+                        </TabItem.Background>
+                        
+                        <Grid Background="#FFE5E5E5">
+                            <Grid.RowDefinitions>
+                                <RowDefinition Height="27"/>
+                                <RowDefinition/>
+                            </Grid.RowDefinitions>
+                            <Grid.ColumnDefinitions>
+                                <ColumnDefinition/>
+                            </Grid.ColumnDefinitions>
+
+                            <DataGrid x:Name="Products_Sold" Margin="0" AutoGenerateColumns="False" IsReadOnly="True" ColumnWidth="*" Background="White" Grid.Row="1" x:FieldModifier="public">
+                                <DataGrid.Columns>
+                                    <DataGridTextColumn Header="Продукт" Binding="{Binding NOMENCLATURE}"/>
+                                    <DataGridTextColumn Header="Количество" Binding="{Binding QUANTITY}"/>
+                                    <DataGridTextColumn Header="Стоимость" Binding="{Binding SUM}"/>
+                                </DataGrid.Columns>
+                            </DataGrid>
+                            
+                            <Button Content="СФОРМИРОВАТЬ" HorizontalAlignment="Left" Height="22" Margin="15,2.5,0,2.5" VerticalAlignment="Center" Width="130" FontSize="12" Click="BC_Products_Sold">
+                                <Button.Background>
+                                    <LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">
+                                        <GradientStop Color="#FF320571" Offset="1"/>
+                                        <GradientStop Color="#FF9040FF"/>
+                                    </LinearGradientBrush>
+                                </Button.Background>
+                            </Button>
+                        </Grid>
+                    </TabItem>
+                    
+                    
+                    
+                    <TabItem Header="Рейтинг контрагентов" Width="140" Foreground="White" BorderBrush="#FF4E2982" Style="{DynamicResource ProOdezhda_Button}" Margin="-1,15,1,-15">
+                        <TabItem.Background>
+                            <LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">
+                                <GradientStop Color="#FF320571" Offset="1"/>
+                                <GradientStop Color="#FF9040FF"/>
+                            </LinearGradientBrush>
+                        </TabItem.Background>
+                        
+                        <Grid Background="#FFE5E5E5">
+                            <Grid.RowDefinitions>
+                                <RowDefinition Height="27"/>
+                                <RowDefinition/>
+                            </Grid.RowDefinitions>
+                            <Grid.ColumnDefinitions>
+                                <ColumnDefinition/>
+                            </Grid.ColumnDefinitions>
+
+                            <DataGrid x:Name="Counterparty_Rating" Margin="0" AutoGenerateColumns="False" IsReadOnly="True" ColumnWidth="*" Background="White" Grid.Row="1" x:FieldModifier="public">
+                                <DataGrid.Columns>
+                                    <DataGridTextColumn Header="Категория" Binding="{Binding CATEGORY}"/>
+                                    <DataGridTextColumn Header="Контрагент" Binding="{Binding COUNTERPARTY}"/>
+                                    <DataGridTextColumn Header="Рейтинг" Binding="{Binding RATING}"/>
+                                </DataGrid.Columns>
+                            </DataGrid>
+                            
+                            <Button Content="СФОРМИРОВАТЬ" HorizontalAlignment="Left" Height="22" Margin="15,2.5,0,2.5" VerticalAlignment="Center" Width="130" FontSize="12" Click="BC_Counterparty_Rating">
+                                <Button.Background>
+                                    <LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">
+                                        <GradientStop Color="#FF320571" Offset="1"/>
+                                        <GradientStop Color="#FF9040FF"/>
+                                    </LinearGradientBrush>
+                                </Button.Background>
+                            </Button>
+                        </Grid>
+                    </TabItem>
+                </TabControl>
+                
+            </TabItem>
+
+
+
+            <TabItem Header="Предприятие" Foreground="White" BorderBrush="#FF4E2982" Style="{DynamicResource ProOdezhda_Button}">
+                <TabItem.Background>
+                    <LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">
+                        <GradientStop Color="#FF320571" Offset="1"/>
+                        <GradientStop Color="#FF9040FF"/>
+                    </LinearGradientBrush>
+                </TabItem.Background>
+                <TabControl TabStripPlacement="Left" Background="#FF4E2982" BorderBrush="#FF4E2982">
+
+                    
+                    
+                    <TabItem Header="Контрагенты" Margin="-2,-2,0,0" Foreground="White" BorderBrush="#FF4E2982" Style="{DynamicResource ProOdezhda_Button}">
+                        <TabItem.Background>
+                            <LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">
+                                <GradientStop Color="#FF320571" Offset="1"/>
+                                <GradientStop Color="#FF9040FF"/>
+                            </LinearGradientBrush>
+                        </TabItem.Background>
+                        
+                        <Grid Background="White">
+                            <Grid.RowDefinitions>
+                                <RowDefinition Height="27"/>
+                                <RowDefinition/>
+                            </Grid.RowDefinitions>
+                            <Grid.ColumnDefinitions>
+                                <ColumnDefinition/>
+                            </Grid.ColumnDefinitions>
+                            
+                            <Border CornerRadius="20" BorderBrush="Black" BorderThickness="1" Grid.Column="0"  Margin="3,0,3,7" Grid.Row="1"/>
+
+                            <DataGrid x:Name="COUNTERPARTY_Grid" AutoGenerateColumns="False" IsReadOnly="True" ColumnWidth="*" Grid.Row="1" Background="White" Margin="10,10,10,17" x:FieldModifier="public">
+                                <DataGrid.Columns>
+                                    <DataGridTextColumn Header="Наименование" Binding="{Binding NAME}"/>
+                                    <DataGridTextColumn Header="Тип" Binding="{Binding TYPE.SHORT_NAME}"/>
+                                    <DataGridTextColumn Header="Адрес" Binding="{Binding ADDRESS}"/>
+                                    <DataGridTextColumn Header="ИНН" Binding="{Binding INN}"/>
+                                    <DataGridTextColumn Header="КПП" Binding="{Binding KPP}"/>
+                                    <DataGridTextColumn Header="ОГРН" Binding="{Binding OGRN}"/>
+                                    <DataGridTextColumn Header="Директор" Binding="{Binding DIRECTOR}"/>
+                                    <DataGridTextColumn Header="Телефон" Binding="{Binding TELEPHONE}"/>
+                                    <DataGridTextColumn Header="Email" Binding="{Binding EMAIL}"/>
+                                    <DataGridTextColumn Header="Категория" Binding="{Binding CATEGORY_C.NAME}"/>
+                                </DataGrid.Columns>
+                            </DataGrid>
+                            
+                            <Button Content="CОЗДАТЬ" HorizontalAlignment="Left" Height="22" Margin="35,2,0,3" VerticalAlignment="Center" Width="130" FontSize="12" Click="NEW_COUNTERPARTY" BorderBrush="Black">
+                                <Button.Background>
+                                    <LinearGradientBrush EndPoint="0.5,1" MappingMode="RelativeToBoundingBox" StartPoint="0.5,0">
+                                        <GradientStop Color="#FF713B05" Offset="1"/>
+                                        <GradientStop Color="#FFFFC240"/>
+                                    </LinearGradientBrush>
+                                </Button.Background>
+                            </Button>
+                            <Button Content="УДАЛИТЬ" HorizontalAlignment="Right" Height="22" Margin="0,2,35,3" VerticalAlignment="Center" Width="130" FontSize="12" Click="DELETE_COUNTERPARTY" BorderBrush="Black">
+                                <Button.Background>
+                                    <LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">
+                                        <GradientStop Color="#FF713B05" Offset="1"/>
+                                        <GradientStop Color="#FFFFC240"/>
+                                    </LinearGradientBrush>
+                                </Button.Background>
+                            </Button>
+
+                            <TextBlock HorizontalAlignment="Center" Margin="0" TextWrapping="Wrap" Text="CПИCОК КОНТРАГЕНТОВ" VerticalAlignment="Center" TextAlignment="Center" FontSize="18" FontWeight="Bold" Foreground="#FF510FAD"/>
+                        </Grid>
+                    </TabItem>
+
+                    
+                    
+                    <TabItem Header="Заказы материалов" Margin="-2,5,0,-5" Foreground="White" BorderBrush="#FF4E2982" Style="{DynamicResource ProOdezhda_Button}" >
+                        <TabItem.Background>
+                            <LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">
+                                <GradientStop Color="#FF320571" Offset="1"/>
+                                <GradientStop Color="#FF9040FF"/>
+                            </LinearGradientBrush>
+                        </TabItem.Background>
+
+                        <Grid Background="#FFFAFAFA">
+                            <Grid.RowDefinitions>
+                                <RowDefinition Height="27"/>
+                                <RowDefinition Height="27"/>
+                                <RowDefinition Height="27"/>
+                                <RowDefinition Height="27"/>
+                                <RowDefinition Height="27"/>
+                                <RowDefinition/>
+                            </Grid.RowDefinitions>
+                            <Grid.ColumnDefinitions>
+                                <ColumnDefinition Width="2*"/>
+                                <ColumnDefinition/>
+                                <ColumnDefinition/>
+                            </Grid.ColumnDefinitions>
+                            
+                            <TextBlock x:Name="O_ORDER_ID" HorizontalAlignment="Left" Height="13" Margin="0" TextWrapping="Wrap" Text="TextBox" VerticalAlignment="Top" Width="45" Visibility="Hidden"/>
+                            
+                            <Border CornerRadius="20" BorderBrush="Black" BorderThickness="1" Grid.Column="1" Margin="4,0,4,4" Grid.RowSpan="5" Grid.ColumnSpan="2" Grid.Row="1"/>
+                            <Border CornerRadius="20" BorderBrush="Black" BorderThickness="1" Margin="3,0,3,4" Grid.RowSpan="5" Grid.Row="1"/>
+
+                            <DataGrid x:Name="ORDER_Grid" Margin="10,10,9,17" AutoGenerateColumns="False" IsReadOnly="True" ColumnWidth="*" Grid.RowSpan="5" Grid.Row="1" SelectionChanged="ORDER_Grid_SelectionChanged" x:FieldModifier="public">
+                                <DataGrid.Columns>
+                                    <DataGridTextColumn Binding="{Binding ORDER_ID}" Visibility="Hidden"/>
+                                    <DataGridTextColumn Header="Контрагент" Binding="{Binding COUNTERPARTY.NAME}"/>
+                                    <DataGridTextColumn Header="Дата оформления" Binding="{Binding DATE, StringFormat=\{0:dd.MM.yyyy\}}"/>
+                                    <DataGridTextColumn Header="Крайний Cрок" Binding="{Binding CUTOFF_DATE, StringFormat=\{0:dd.MM.yyyy\}}"/>
+                                </DataGrid.Columns>
+                            </DataGrid>
+
+                            <Button Grid.Column="1" Content="CОЗДАТЬ" HorizontalAlignment="Left" Height="22" Margin="100,3,0,2" VerticalAlignment="Center" Width="130" FontSize="12" Click="NEW_ORDER" BorderBrush="Black">
+                                <Button.Background>
+                                    <LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">
+                                        <GradientStop Color="#FF713B05" Offset="1"/>
+                                        <GradientStop Color="#FFFFC240"/>
+                                    </LinearGradientBrush>
+                                </Button.Background>
+                            </Button>
+                            <Button Grid.Column="2" Content="УДАЛИТЬ" HorizontalAlignment="Right" Height="22" Margin="0,2,100,3" VerticalAlignment="Center" Width="130" FontSize="12" Click="DELETE_ORDER" BorderBrush="Black">
+                                <Button.Background>
+                                    <LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">
+                                        <GradientStop Color="#FF713B05" Offset="1"/>
+                                        <GradientStop Color="#FFFFC240"/>
+                                    </LinearGradientBrush>
+                                </Button.Background>
+                            </Button>
+
+                            <TextBlock x:Name="O_DATE" Margin="139,6,35,5" VerticalAlignment="Center" Grid.Column="1" Grid.Row="1" Foreground="Black" Background="#0C6B00FF" x:FieldModifier="public"/>
+                            <TextBlock Text="Дата оформления" HorizontalAlignment="Left" Margin="35,6,0,5" VerticalAlignment="Center" Width="99" Grid.Column="1" Grid.Row="1" Foreground="#FF510FAD"/>
+
+                            <TextBlock x:Name="O_CUTOFF_DATE" Margin="117,6,35,5" VerticalAlignment="Center" Grid.Column="2" Grid.Row="1" Foreground="Black" Background="#0C6B00FF" x:FieldModifier="public"/>
+                            <TextBlock Text="Крайний срок" HorizontalAlignment="Left" Margin="35,6,0,5" VerticalAlignment="Center" Grid.Column="2" Grid.Row="1" Foreground="#FF510FAD"/>
+
+                            <TextBlock x:Name="O_FK_COUNTERPARTY_ID" Margin="114,4,10,4" VerticalAlignment="Center" Grid.Column="1" Grid.ColumnSpan="2" Grid.Row="2" Foreground="Black" Background="#0C6B00FF" x:FieldModifier="public"/>
+                            <TextBlock Text="Контрагент" HorizontalAlignment="Left" Margin="35,6,0,5" VerticalAlignment="Center" Grid.Column="1" Grid.Row="2" Foreground="#FF510FAD"/>
+
+                            <DataGrid x:Name="ORDER_LIST_Grid" Margin="10,0,10,17" AutoGenerateColumns="False" IsReadOnly="True" ColumnWidth="*" Grid.Row="4" Grid.Column="1" Grid.RowSpan="2" Grid.ColumnSpan="2" x:FieldModifier="public">
+                                <DataGrid.Columns>
+                                    <DataGridTextColumn Binding="{Binding FK_ORDER_LIST_ID}" Visibility="Hidden"/>
+                                    <DataGridTextColumn Header="Материал" Binding="{Binding NOMENCLATURE.NAME}"/>
+                                    <DataGridTextColumn Header="Количество" Binding="{Binding QUANTITY}"/>
+                                    <DataGridTextColumn Header="Цена" Binding="{Binding PRICE}"/>
+                                    <DataGridTextColumn Header="Cтоимость" Binding="{Binding SUM}"/>
+                                </DataGrid.Columns>
+                            </DataGrid>
+
+                            <TextBlock Grid.Column="0" Margin="0" TextWrapping="Wrap" Text="CПИCОК ЗАКАЗОВ" VerticalAlignment="Center" HorizontalAlignment="Center" FontSize="18" TextAlignment="Center"  FontWeight="Bold" Grid.Row="0" Foreground="#FF510FAD"/>
+                            <TextBlock Grid.Column="1" Margin="0" TextWrapping="Wrap" Text="ЗАКАЗ" VerticalAlignment="Center" HorizontalAlignment="Center" FontSize="18" TextAlignment="Center" FontWeight="Bold" Grid.ColumnSpan="2" Grid.Row="0"  Foreground="#FF510FAD"/>
+                            <TextBlock Grid.Column="1" Margin="0" TextWrapping="Wrap" Text="CОCТАВ ЗАКАЗА" VerticalAlignment="Center" HorizontalAlignment="Center" FontSize="14" TextAlignment="Center" FontWeight="Bold" Grid.ColumnSpan="2" Foreground="#FF510FAD" Grid.Row="3"/>
+                        </Grid>
+                    </TabItem>
+
+                    
+                    
+                    <TabItem Header="Приходные накладные" Margin="-2,10,0,-10" Foreground="White" BorderBrush="#FF4E2982" Style="{DynamicResource ProOdezhda_Button}">
+                        <TabItem.Background>
+                            <LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">
+                                <GradientStop Color="#FF320571" Offset="1"/>
+                                <GradientStop Color="#FF9040FF"/>
+                            </LinearGradientBrush>
+                        </TabItem.Background>
+
+                        <Grid Background="#FFFAFAFA">
+                            <Grid.RowDefinitions>
+                                <RowDefinition Height="27"/>
+                                <RowDefinition Height="27"/>
+                                <RowDefinition Height="27"/>
+                                <RowDefinition Height="27"/>
+                                <RowDefinition Height="27"/>
+                                <RowDefinition Height="27*"/>
+                            </Grid.RowDefinitions>
+                            <Grid.ColumnDefinitions>
+                                <ColumnDefinition Width="2*"/>
+                                <ColumnDefinition/>
+                                <ColumnDefinition/>
+                            </Grid.ColumnDefinitions>
+                            
+                            <TextBlock x:Name="P_I_ORDER_ID" HorizontalAlignment="Left" Height="13" Margin="0" TextWrapping="Wrap" Text="TextBox" VerticalAlignment="Top" Width="45" Visibility="Hidden"/>
+                            
+                            <Border CornerRadius="20" BorderBrush="Black" BorderThickness="1" Grid.Column="1" Margin="4,0,4,4" Grid.RowSpan="5" Grid.ColumnSpan="2" Grid.Row="1"/>
+                            <Border CornerRadius="20" BorderBrush="Black" BorderThickness="1" Margin="3,0,3,4" Grid.RowSpan="6" Grid.Row="1"/>
+
+                            <DataGrid x:Name="PURCHASE_INVOICE_Grid" Margin="10,10,9,17" AutoGenerateColumns="False" IsReadOnly="True" ColumnWidth="*" Grid.RowSpan="5" Grid.Row="1" SelectionChanged="PURCHASE_INVOICE_Grid_SelectionChanged" x:FieldModifier="public">
+                                <DataGrid.Columns>
+                                    <DataGridTextColumn Binding="{Binding PURCHASE_INVOICE_ID}" Visibility="Hidden"/>
+                                    <DataGridTextColumn Header="Контрагент" Binding="{Binding ORDER.COUNTERPARTY.NAME}"/>
+                                    <DataGridTextColumn Header="Дата оформления" Binding="{Binding DATE, StringFormat=\{0:dd.MM.yyyy\}}"/>
+                                    <DataGridTextColumn Header="Номер заказа" Binding="{Binding FK_ORDER_ID}"/>
+                                </DataGrid.Columns>
+                            </DataGrid>
+
+                            <Button Grid.Column="1" Content="CОЗДАТЬ" HorizontalAlignment="Left" Height="22" Margin="25,2,0,3" VerticalAlignment="Center" Width="130" FontSize="12" Click="NEW_PURCHASE_INVOICE" BorderBrush="Black">
+                                <Button.Background>
+                                    <LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">
+                                        <GradientStop Color="#FF713B05" Offset="1"/>
+                                        <GradientStop Color="#FFFFC240"/>
+                                    </LinearGradientBrush>
+                                </Button.Background>
+                            </Button>
+                            <Button Grid.Column="2" Content="УДАЛИТЬ" HorizontalAlignment="Right" Height="22" Margin="0,2,25,3" VerticalAlignment="Center" Width="130" FontSize="12" Click="DELETE_PURCHASE_INVOICE" BorderBrush="Black">
+                                <Button.Background>
+                                    <LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">
+                                        <GradientStop Color="#FF713B05" Offset="1"/>
+                                        <GradientStop Color="#FFFFC240"/>
+                                    </LinearGradientBrush>
+                                </Button.Background>
+                            </Button>
+
+                            <TextBlock x:Name="P_I_DATE" Margin="139,6,35,5" VerticalAlignment="Center" x:FieldModifier="public" Grid.Column="1" Grid.Row="1" Foreground="Black" Background="#0C6B00FF"/>
+                            <TextBlock Text="Дата оформления" HorizontalAlignment="Left" Margin="35,6,0,5" VerticalAlignment="Center" Width="99" Grid.Column="1" Grid.Row="1" Foreground="#FF510FAD"/>
+
+                            <TextBlock x:Name="P_I_FK_ORDER_ID" Margin="70,6,35,5" VerticalAlignment="Center" x:FieldModifier="public" Grid.Column="2" Grid.Row="1" Foreground="Black" Background="#0C6B00FF"/>
+                            <TextBlock Text="Заказ" HorizontalAlignment="Left" Margin="35,6,0,5" VerticalAlignment="Center" Grid.Column="2" Grid.Row="1" Foreground="#FF510FAD"/>
+
+                            <TextBlock x:Name="P_I_FK_COUNTERPARTY_ID" Margin="114,4,10,4" VerticalAlignment="Center" x:FieldModifier="public" Grid.Column="1" Grid.ColumnSpan="2" Grid.Row="2" Foreground="Black" Background="#0C6B00FF"/>
+                            <TextBlock Text="Контрагент" HorizontalAlignment="Left" Margin="35,6,0,5" VerticalAlignment="Center" Grid.Column="1" Grid.Row="2" Foreground="#FF510FAD"/>
+
+                            <DataGrid x:Name="PURCHASE_INVOICE_LIST_Grid" Margin="10,0,10,17" AutoGenerateColumns="False" IsReadOnly="True" ColumnWidth="*" Grid.Row="4" Grid.Column="1" Grid.ColumnSpan="2" Grid.RowSpan="2">
+                                <DataGrid.Columns>
+                                    <DataGridTextColumn Binding="{Binding ORDER_LIST_ID}" Visibility="Hidden"/>
+                                    <DataGridTextColumn Header="Материал" Binding="{Binding NOMENCLATURE.NAME}"/>
+                                    <DataGridTextColumn Header="Количество" Binding="{Binding QUANTITY}"/>
+                                    <DataGridTextColumn Header="Цена" Binding="{Binding PRICE}"/>
+                                    <DataGridTextColumn Header="Cтоимость" Binding="{Binding SUM}"/>
+                                </DataGrid.Columns>
+                            </DataGrid>
+
+                            <TextBlock Grid.Column="0" Margin="0" TextWrapping="Wrap" Text="CПИCОК ПРИХОДНЫХ НАКЛАДНЫХ" VerticalAlignment="Center" HorizontalAlignment="Center" FontSize="18" TextAlignment="Center"  FontWeight="Bold" Grid.Row="0" Foreground="#FF510FAD"/>
+                            <TextBlock Grid.Column="1" Margin="0" TextWrapping="Wrap" Text="ПРИХОДНАЯ НАКЛАДНАЯ" VerticalAlignment="Center" HorizontalAlignment="Center" FontSize="18" TextAlignment="Center" FontWeight="Bold" Grid.ColumnSpan="2" Grid.Row="0"  Foreground="#FF510FAD"/>
+                            <TextBlock Grid.Column="1" Margin="0" TextWrapping="Wrap" Text="CОCТАВ ПРИХОДНОЙ НАКЛАДНОЙ" VerticalAlignment="Center" HorizontalAlignment="Center" FontSize="14" TextAlignment="Center" FontWeight="Bold" Grid.ColumnSpan="2" Foreground="#FF510FAD" Grid.Row="3"/>
+                        </Grid>
+                    </TabItem>
+
+                    
+                    
+                    <TabItem Header="Запросы агентов " Margin="-2,15,0,-15" Foreground="White" BorderBrush="#FF4E2982" Style="{DynamicResource ProOdezhda_Button}">
+                        <TabItem.Background>
+                            <LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">
+                                <GradientStop Color="#FF320571" Offset="1"/>
+                                <GradientStop Color="#FF9040FF"/>
+                            </LinearGradientBrush>
+                        </TabItem.Background>
+
+                        <Grid Background="#FFFAFAFA">
+                            <Grid.RowDefinitions>
+                                <RowDefinition Height="27"/>
+                                <RowDefinition Height="27"/>
+                                <RowDefinition Height="27"/>
+                                <RowDefinition Height="27"/>
+                                <RowDefinition Height="27"/>
+                                <RowDefinition/>
+                            </Grid.RowDefinitions>
+                            <Grid.ColumnDefinitions>
+                                <ColumnDefinition Width="2*"/>
+                                <ColumnDefinition/>
+                                <ColumnDefinition/>
+                            </Grid.ColumnDefinitions>
+                            
+                            <TextBlock x:Name="R_REQUEST_ID" HorizontalAlignment="Left" Height="13" Margin="0" TextWrapping="Wrap" Text="TextBox" VerticalAlignment="Top" Width="45" Visibility="Hidden"/>
+                            
+                            <Border CornerRadius="20" BorderBrush="Black" BorderThickness="1" Grid.Column="1" Margin="4,0,4,4" Grid.RowSpan="5" Grid.ColumnSpan="2" Grid.Row="1"/>
+                            <Border CornerRadius="20" BorderBrush="Black" BorderThickness="1" Margin="3,0,3,4" Grid.RowSpan="5" Grid.Row="1"/>
+
+                            <DataGrid x:Name="REQUEST_Grid" Margin="10,10,9,17" AutoGenerateColumns="False" IsReadOnly="True" ColumnWidth="*" Grid.RowSpan="5" Grid.Row="1" SelectionChanged="REQUEST_Grid_SelectionChanged" x:FieldModifier="public">
+                                <DataGrid.Columns>
+                                    <DataGridTextColumn Binding="{Binding ORDER_ID}" Visibility="Hidden"/>
+                                    <DataGridTextColumn Header="Контрагент" Binding="{Binding COUNTERPARTY.NAME}"/>
+                                    <DataGridTextColumn Header="Дата оформления" Binding="{Binding DATE, StringFormat=\{0:dd.MM.yyyy\}}"/>
+                                    <DataGridTextColumn Header="Крайний Cрок" Binding="{Binding CUTOFF_DATE, StringFormat=\{0:dd.MM.yyyy\}}"/>
+                                </DataGrid.Columns>
+                            </DataGrid>
+
+                            <Button Grid.Column="1" Content="CОЗДАТЬ" HorizontalAlignment="Left" Height="22" Margin="100,3,0,2" VerticalAlignment="Center" Width="130" FontSize="12" Click="NEW_REQUEST" BorderBrush="Black">
+                                <Button.Background>
+                                    <LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">
+                                        <GradientStop Color="#FF713B05" Offset="1"/>
+                                        <GradientStop Color="#FFFFC240"/>
+                                    </LinearGradientBrush>
+                                </Button.Background>
+                            </Button>
+                            <Button Grid.Column="2" Content="УДАЛИТЬ" HorizontalAlignment="Right" Height="22" Margin="0,2,100,3" VerticalAlignment="Center" Width="130" FontSize="12" Click="DELETE_REQUEST" BorderBrush="Black">
+                                <Button.Background>
+                                    <LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">
+                                        <GradientStop Color="#FF713B05" Offset="1"/>
+                                        <GradientStop Color="#FFFFC240"/>
+                                    </LinearGradientBrush>
+                                </Button.Background>
+                            </Button>
+
+                            <TextBlock x:Name="R_DATE" Margin="139,6,35,5" VerticalAlignment="Center" x:FieldModifier="public" Grid.Column="1" Grid.Row="1" Foreground="Black" Background="#0C6B00FF"/>
+                            <TextBlock Text="Дата оформления" HorizontalAlignment="Left" Margin="35,6,0,5" VerticalAlignment="Center" Width="99" Grid.Column="1" Grid.Row="1" Foreground="#FF510FAD"/>
+
+                            <TextBlock x:Name="R_CUTOFF_DATE" Margin="117,6,35,5" VerticalAlignment="Center" x:FieldModifier="public" Grid.Column="2" Grid.Row="1" Foreground="Black" Background="#0C6B00FF"/>
+                            <TextBlock Text="Крайний срок" HorizontalAlignment="Left" Margin="35,6,0,5" VerticalAlignment="Center" Grid.Column="2" Grid.Row="1" Foreground="#FF510FAD"/>
+
+                            <TextBlock x:Name="R_FK_COUNTERPARTY_ID" Margin="114,4,10,4" VerticalAlignment="Center" x:FieldModifier="public" Grid.Column="1" Grid.ColumnSpan="2" Grid.Row="2" Foreground="Black" Background="#0C6B00FF"/>
+                            <TextBlock Text="Контрагент" HorizontalAlignment="Left" Margin="35,6,0,5" VerticalAlignment="Center" Grid.Column="1" Grid.Row="2" Foreground="#FF510FAD"/>
+
+                            <DataGrid x:Name="REQUEST_LIST_Grid" Margin="10,0,10,17" AutoGenerateColumns="False" IsReadOnly="True" ColumnWidth="*" Grid.Row="4" Grid.Column="1" Grid.RowSpan="2" Grid.ColumnSpan="2">
+                                <DataGrid.Columns>
+                                    <DataGridTextColumn Binding="{Binding FK_ORDER_LIST_ID}" Visibility="Hidden"/>
+                                    <DataGridTextColumn Header="Продукт" Binding="{Binding NOMENCLATURE.NAME}"/>
+                                    <DataGridTextColumn Header="Количество" Binding="{Binding QUANTITY}"/>
+                                    <DataGridTextColumn Header="Цена" Binding="{Binding PRICE}"/>
+                                    <DataGridTextColumn Header="Cтоимость" Binding="{Binding SUM}"/>
+                                </DataGrid.Columns>
+                            </DataGrid>
+
+                            <TextBlock Grid.Column="0" Margin="0" TextWrapping="Wrap" Text="CПИCОК ЗАПРОСОВ" VerticalAlignment="Center" HorizontalAlignment="Center" FontSize="18" TextAlignment="Center"  FontWeight="Bold" Grid.Row="0" Foreground="#FF510FAD"/>
+                            <TextBlock Grid.Column="1" Margin="0" TextWrapping="Wrap" Text="ЗАПРОС" VerticalAlignment="Center" HorizontalAlignment="Center" FontSize="18" TextAlignment="Center" FontWeight="Bold" Grid.ColumnSpan="2" Grid.Row="0"  Foreground="#FF510FAD"/>
+                            <TextBlock Grid.Column="1" Margin="0" TextWrapping="Wrap" Text="CОCТАВ ЗАПРОСА" VerticalAlignment="Center" HorizontalAlignment="Center" FontSize="14" TextAlignment="Center" FontWeight="Bold" Grid.ColumnSpan="2" Foreground="#FF510FAD" Grid.Row="3"/>
+                        </Grid>
+                    </TabItem>
+
+
+                    
+                    <TabItem Header="Поставки продукции" Margin="-2,20,0,-20" BorderBrush="#FF4E2982" Foreground="White" Style="{DynamicResource ProOdezhda_Button}">
+                        <TabItem.Background>
+                            <LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">
+                                <GradientStop Color="#FF320571" Offset="1"/>
+                                <GradientStop Color="#FF9040FF"/>
+                            </LinearGradientBrush>
+                        </TabItem.Background>
+
+                        <Grid Background="#FFFAFAFA">
+                            <Grid.RowDefinitions>
+                                <RowDefinition Height="27"/>
+                                <RowDefinition Height="27"/>
+                                <RowDefinition Height="27"/>
+                                <RowDefinition Height="27"/>
+                                <RowDefinition Height="27"/>
+                                <RowDefinition Height="27*"/>
+                            </Grid.RowDefinitions>
+                            <Grid.ColumnDefinitions>
+                                <ColumnDefinition Width="2*"/>
+                                <ColumnDefinition/>
+                                <ColumnDefinition/>
+                            </Grid.ColumnDefinitions>
+
+                            <TextBlock x:Name="D_REQUEST_ID" HorizontalAlignment="Left" Height="13" Margin="0" TextWrapping="Wrap" Text="TextBox" VerticalAlignment="Top" Width="45" Visibility="Hidden"/>
+                            
+                            <Border CornerRadius="20" BorderBrush="Black" BorderThickness="1" Grid.Column="1" Margin="4,0,4,4" Grid.RowSpan="5" Grid.ColumnSpan="2" Grid.Row="1"/>
+                            <Border CornerRadius="20" BorderBrush="Black" BorderThickness="1" Margin="3,0,3,4" Grid.RowSpan="6" Grid.Row="1"/>
+
+                            <DataGrid x:Name="DISPATCH_Grid" Margin="10,10,9,17" AutoGenerateColumns="False" IsReadOnly="True" ColumnWidth="*" Grid.RowSpan="5" Grid.Row="1" SelectionChanged="DISPATCH_Grid_SelectionChanged" x:FieldModifier="public">
+                                <DataGrid.Columns>
+                                    <DataGridTextColumn Binding="{Binding DISPATCH_ID}" Visibility="Hidden"/>
+                                    <DataGridTextColumn Header="Контрагент" Binding="{Binding REQUEST.COUNTERPARTY.NAME}"/>
+                                    <DataGridTextColumn Header="Дата оформления" Binding="{Binding DATE, StringFormat=\{0:dd.MM.yyyy\}}"/>
+                                    <DataGridTextColumn Header="Номер запроса" Binding="{Binding FK_REQUEST_ID}"/>
+                                </DataGrid.Columns>
+                            </DataGrid>
+
+                            <Button Grid.Column="1" Content="CОЗДАТЬ" HorizontalAlignment="Left" Height="22" Margin="25,2,0,3" VerticalAlignment="Center" Width="130" FontSize="12" Click="NEW_DISPATCH" BorderBrush="Black">
+                                <Button.Background>
+                                    <LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">
+                                        <GradientStop Color="#FF713B05" Offset="1"/>
+                                        <GradientStop Color="#FFFFC240"/>
+                                    </LinearGradientBrush>
+                                </Button.Background>
+                            </Button>
+                            <Button Grid.Column="2" Content="УДАЛИТЬ" HorizontalAlignment="Right" Height="22" Margin="0,2,25,3" VerticalAlignment="Center" Width="130" FontSize="12" Click="DELETE_DISPATCH" BorderBrush="Black">
+                                <Button.Background>
+                                    <LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">
+                                        <GradientStop Color="#FF713B05" Offset="1"/>
+                                        <GradientStop Color="#FFFFC240"/>
+                                    </LinearGradientBrush>
+                                </Button.Background>
+                            </Button>
+
+                            <TextBlock x:Name="D_DATE" Margin="139,6,35,5" VerticalAlignment="Center" x:FieldModifier="public" Grid.Column="1" Grid.Row="1" Foreground="Black" Background="#0C6B00FF"/>
+                            <TextBlock Text="Дата оформления" HorizontalAlignment="Left" Margin="35,6,0,5" VerticalAlignment="Center" Width="99" Grid.Column="1" Grid.Row="1" Foreground="#FF510FAD"/>
+
+                            <TextBlock x:Name="D_FK_REQUEST_ID" Margin="79,6,35,5" VerticalAlignment="Center" x:FieldModifier="public" Grid.Column="2" Grid.Row="1" Foreground="Black" Background="#0C6B00FF"/>
+                            <TextBlock Text="Запрос" HorizontalAlignment="Left" Margin="35,6,0,5" VerticalAlignment="Center" Grid.Column="2" Grid.Row="1" Foreground="#FF510FAD"/>
+
+                            <TextBlock x:Name="D_FK_COUNTERPARTY_ID" Margin="114,4,10,4" VerticalAlignment="Center" x:FieldModifier="public" Grid.Column="1" Grid.ColumnSpan="2" Grid.Row="2" Foreground="Black" Background="#0C6B00FF"/>
+                            <TextBlock Text="Контрагент" HorizontalAlignment="Left" Margin="35,6,0,5" VerticalAlignment="Center" Grid.Column="1" Grid.Row="2" Foreground="#FF510FAD"/>
+
+                            <DataGrid x:Name="DISPATCH_LIST_Grid" Margin="10,0,10,17" AutoGenerateColumns="False" IsReadOnly="True" ColumnWidth="*" Grid.Row="4" Grid.Column="1" Grid.ColumnSpan="2" Grid.RowSpan="2">
+                                <DataGrid.Columns>
+                                    <DataGridTextColumn Binding="{Binding FK_DISPATCH_LIST_ID}" Visibility="Hidden"/>
+                                    <DataGridTextColumn Header="Продукт" Binding="{Binding NOMENCLATURE.NAME}"/>
+                                    <DataGridTextColumn Header="Количество" Binding="{Binding QUANTITY}"/>
+                                    <DataGridTextColumn Header="Цена" Binding="{Binding PRICE}"/>
+                                    <DataGridTextColumn Header="Cтоимость" Binding="{Binding SUM}"/>
+                                </DataGrid.Columns>
+                            </DataGrid>
+
+                            <TextBlock Grid.Column="0" Margin="0" TextWrapping="Wrap" Text="CПИCОК ПОСТАВОК ПРОДУКЦИИ" VerticalAlignment="Center" HorizontalAlignment="Center" FontSize="18" TextAlignment="Center"  FontWeight="Bold" Grid.Row="0" Foreground="#FF510FAD"/>
+                            <TextBlock Grid.Column="1" Margin="0" TextWrapping="Wrap" Text="ПОСТАВКА ПРОДУКЦИИ" VerticalAlignment="Center" HorizontalAlignment="Center" FontSize="18" TextAlignment="Center" FontWeight="Bold" Grid.ColumnSpan="2" Grid.Row="0"  Foreground="#FF510FAD"/>
+                            <TextBlock Grid.Column="1" Margin="0" TextWrapping="Wrap" Text="CОCТАВ ПОСТАВКИ" VerticalAlignment="Center" HorizontalAlignment="Center" FontSize="14" TextAlignment="Center" FontWeight="Bold" Grid.ColumnSpan="2" Foreground="#FF510FAD" Grid.Row="3"/>
+                        </Grid>
+                    </TabItem>
+
+                    
+                    
+                    <TabItem Header="Розничные продажи" Margin="-2,25,0,-25" Foreground="White" BorderBrush="#FF4E2982" Style="{DynamicResource ProOdezhda_Button}">
+                        <TabItem.Background>
+                            <LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">
+                                <GradientStop Color="#FF320571" Offset="1"/>
+                                <GradientStop Color="#FF9040FF"/>
+                            </LinearGradientBrush>
+                        </TabItem.Background>
+
+                        <Grid Background="#FFFAFAFA">
+                            <Grid.RowDefinitions>
+                                <RowDefinition Height="27"/>
+                                <RowDefinition Height="27"/>
+                                <RowDefinition Height="27"/>
+                                <RowDefinition Height="27"/>
+                                <RowDefinition Height="27"/>
+                                <RowDefinition/>
+                            </Grid.RowDefinitions>
+                            <Grid.ColumnDefinitions>
+                                <ColumnDefinition Width="599*"/>
+                                <ColumnDefinition Width="600*"/>
+                            </Grid.ColumnDefinitions>
+                            
+                            <TextBlock x:Name="R_R_RETAIL_REPORT_ID" HorizontalAlignment="Left" Height="13" Margin="0" TextWrapping="Wrap" Text="TextBox" VerticalAlignment="Top" Width="45" Visibility="Hidden"/>
+                           
+                            <Border CornerRadius="20" BorderBrush="Black" BorderThickness="1" Grid.Column="1" Margin="4,0,4,4" Grid.RowSpan="5" Grid.Row="1"/>
+                            <Border CornerRadius="20" BorderBrush="Black" BorderThickness="1" Margin="3,0,3,4" Grid.RowSpan="5" Grid.Row="1"/>
+
+                            <DataGrid x:Name="RETAIL_REPORT_Grid" Margin="10,10,9,17" AutoGenerateColumns="False" IsReadOnly="True" ColumnWidth="*" Grid.RowSpan="5" Grid.Row="1" SelectionChanged="RETAIL_REPORT_Grid_SelectionChanged" x:FieldModifier="public">
+                                <DataGrid.Columns>
+                                    <DataGridTextColumn Binding="{Binding RETAIL_REPORT_ID}" Visibility="Hidden"/>
+                                    <DataGridTextColumn Header="Контрагент" Binding="{Binding COUNTERPARTY.NAME}"/>
+                                    <DataGridTextColumn Header="Дата оформления" Binding="{Binding DATE, StringFormat=\{0:dd.MM.yyyy\}}"/>
+                                </DataGrid.Columns>
+                            </DataGrid>
+
+                            <Button Grid.Column="1" Content="CОЗДАТЬ" HorizontalAlignment="Left" Height="22" Margin="25,3,0,2" VerticalAlignment="Center" Width="130" FontSize="12" Click="NEW_RETAIL_REPORT" BorderBrush="Black">
+                                <Button.Background>
+                                    <LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">
+                                        <GradientStop Color="#FF713B05" Offset="1"/>
+                                        <GradientStop Color="#FFFFC240"/>
+                                    </LinearGradientBrush>
+                                </Button.Background>
+                            </Button>
+                            <Button Grid.Column="1" Content="УДАЛИТЬ" HorizontalAlignment="Right" Height="22" Margin="0,2,25,3" VerticalAlignment="Center" Width="130" FontSize="12" Click="DELETE_RETAIL_REPORT" BorderBrush="Black">
+                                <Button.Background>
+                                    <LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">
+                                        <GradientStop Color="#FF713B05" Offset="1"/>
+                                        <GradientStop Color="#FFFFC240"/>
+                                    </LinearGradientBrush>
+                                </Button.Background>
+                            </Button>
+
+                            <TextBlock x:Name="R_R_DATE" Margin="139,6,335,5" VerticalAlignment="Center" x:FieldModifier="public" Grid.Column="1" Grid.Row="1" Foreground="Black" Background="#0C6B00FF"/>
+                            <TextBlock Text="Дата оформления" HorizontalAlignment="Left" Margin="35,6,0,5" VerticalAlignment="Center" Width="99" Grid.Column="1" Grid.Row="1" Foreground="#FF510FAD"/>
+
+                            <TextBlock x:Name="R_R_FK_COUNTERPARTY_ID" Margin="114,4,10,4" VerticalAlignment="Center" x:FieldModifier="public" Grid.Column="1" Grid.Row="2" Foreground="Black" Background="#0C6B00FF"/>
+                            <TextBlock Text="Контрагент" HorizontalAlignment="Left" Margin="35,6,0,5" VerticalAlignment="Center" Grid.Column="1" Grid.Row="2" Foreground="#FF510FAD"/>
+
+                            <DataGrid x:Name="RETAIL_REPORT_LIST_Grid" Margin="10,0,10,17" AutoGenerateColumns="False" IsReadOnly="True" ColumnWidth="*" Grid.Row="4" Grid.Column="1" Grid.RowSpan="2">
+                                <DataGrid.Columns>
+                                    <DataGridTextColumn Binding="{Binding FK_ORDER_LIST_ID}" Visibility="Hidden"/>
+                                    <DataGridTextColumn Header="Продукт" Binding="{Binding NOMENCLATURE.NAME}"/>
+                                    <DataGridTextColumn Header="Количество" Binding="{Binding QUANTITY}"/>
+                                    <DataGridTextColumn Header="Цена" Binding="{Binding PRICE}"/>
+                                    <DataGridTextColumn Header="Cтоимость" Binding="{Binding SUM}"/>
+                                </DataGrid.Columns>
+                            </DataGrid>
+
+                            <TextBlock Grid.Column="0" Margin="0" TextWrapping="Wrap" Text="CПИCОК РОЗНИЧНЫХ ОТЧЁТОВ" VerticalAlignment="Center" HorizontalAlignment="Center" FontSize="18" TextAlignment="Center"  FontWeight="Bold" Grid.Row="0" Foreground="#FF510FAD"/>
+                            <TextBlock Grid.Column="1" Margin="0" TextWrapping="Wrap" Text="РОЗНИЧНЫЙ ОТЧЁТ" VerticalAlignment="Center" HorizontalAlignment="Center" FontSize="18" TextAlignment="Center" FontWeight="Bold" Grid.Row="0"  Foreground="#FF510FAD"/>
+                            <TextBlock Grid.Column="1" Margin="0" TextWrapping="Wrap" Text="CОCТАВ ОТЧЁТА" VerticalAlignment="Center" HorizontalAlignment="Center" FontSize="14" TextAlignment="Center" FontWeight="Bold" Foreground="#FF510FAD" Grid.Row="3"/>
+                        </Grid>
+                    </TabItem>
+
+                    
+                    
+                    
+                    <TabItem Header="Рейтинг контрагентов" Margin="-2,30,0,-30" Foreground="White" BorderBrush="#FF4E2982" Style="{DynamicResource ProOdezhda_Button}" MouseLeftButtonUp="RATING_MouseLeftButtonUp">
+                        <TabItem.Background>
+                            <LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">
+                                <GradientStop Color="#FF320571" Offset="1"/>
+                                <GradientStop Color="#FF9040FF"/>
+                            </LinearGradientBrush>
+                        </TabItem.Background>
+
+                        <Grid Background="#FFFAFAFA">
+                            <Grid.RowDefinitions>
+                                <RowDefinition Height="27"/>
+                                <RowDefinition Height="38"/>
+                                <RowDefinition Height="27*"/>
+                                <RowDefinition Height="27*"/>
+                                <RowDefinition Height="27*"/>
+                                <RowDefinition/>
+                            </Grid.RowDefinitions>
+                            <Grid.ColumnDefinitions>
+                                <ColumnDefinition Width="599*"/>
+                                <ColumnDefinition Width="600*"/>
+                            </Grid.ColumnDefinitions>
+
+                            <TextBlock x:Name="Ra_RATING_ID" HorizontalAlignment="Left" Height="13" Margin="0" TextWrapping="Wrap" Text="TextBox" VerticalAlignment="Top" Width="45" Visibility="Hidden"/>
+                            
+                            <Border CornerRadius="20" BorderBrush="Black" BorderThickness="1" Grid.Column="1" Margin="4,0,4,4" Grid.RowSpan="5" Grid.Row="1"/>
+                            <Border CornerRadius="20" BorderBrush="Black" BorderThickness="1" Margin="3,0,3,4" Grid.RowSpan="5" Grid.Row="1"/>
+
+                            <DataGrid x:Name="RATING_Grid" Margin="10,10,9,17" AutoGenerateColumns="False" IsReadOnly="True" ColumnWidth="*" Grid.RowSpan="5" Grid.Row="1" SelectionChanged="RATING_Grid_SelectionChanged" x:FieldModifier="public">
+                                <DataGrid.Columns>
+                                    <DataGridTextColumn Binding="{Binding RATING_ID}" Visibility="Hidden"/>
+                                    <DataGridTextColumn Header="Контрагент" Binding="{Binding COUNTERPARTY.NAME}"/>
+                                    <DataGridTextColumn Header="Дата назначения" Binding="{Binding DATE, StringFormat=\{0:dd.MM.yyyy\}}"/>
+                                    <DataGridTextColumn Header="Рейтинг" Binding="{Binding RATING1}"/>
+                                </DataGrid.Columns>
+                            </DataGrid>
+
+                            <Button Grid.Column="1" Content="СОХРАНИТЬ" HorizontalAlignment="Left" Height="22" Margin="25,9,0,7" VerticalAlignment="Center" Width="130" FontSize="12" Click="NEW_RATING" Grid.Row="1">
+                                <Button.Background>
+                                    <LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">
+                                        <GradientStop Color="#FF320571" Offset="1"/>
+                                        <GradientStop Color="#FF9040FF"/>
+                                    </LinearGradientBrush>
+                                </Button.Background>
+                            </Button>
+                            <Button Grid.Column="1" Content="УДАЛИТЬ" HorizontalAlignment="Right" Height="22" Margin="0,9,25,7" VerticalAlignment="Center" Width="130" FontSize="12" Click="DELETE_RATING" Grid.Row="1">
+                                <Button.Background>
+                                    <LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">
+                                        <GradientStop Color="#FF320571" Offset="1"/>
+                                        <GradientStop Color="#FF9040FF"/>
+                                    </LinearGradientBrush>
+                                </Button.Background>
+                            </Button>
+                            <Button Grid.Column="1" Content="ИЗМЕНИТЬ" HorizontalAlignment="Center" Height="22" Margin="0" VerticalAlignment="Center" Width="130" FontSize="12" Click="UPDATE_RATING" Grid.Row="1">
+                                <Button.Background>
+                                    <LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">
+                                        <GradientStop Color="#FF320571" Offset="1"/>
+                                        <GradientStop Color="#FF9040FF"/>
+                                    </LinearGradientBrush>
+                                </Button.Background>
+                            </Button>
+
+                            <DatePicker x:Name="Ra_DATE" Margin="191,41,25,39" VerticalAlignment="Center" x:FieldModifier="public" Grid.Column="1" Grid.Row="4" Foreground="Black" Background="#0C6B00FF"/>
+                            <TextBlock Text="Дата назначени" HorizontalAlignment="Left" Margin="35,0,0,0" VerticalAlignment="Center" Grid.Column="1" Grid.Row="4" Foreground="#FF510FAD" FontSize="20"/>
+
+                            <TextBox x:Name="Ra_RATING" Margin="112,39,25,39" VerticalAlignment="Center" x:FieldModifier="public" Grid.Column="1" Grid.Row="3" Foreground="Black" Background="#0C6B00FF" Height="25"/>
+                            <TextBlock Text="Рейтинг" HorizontalAlignment="Left" Margin="35,0,0,0" VerticalAlignment="Center" Grid.Column="1" Grid.Row="3" Foreground="#FF510FAD" FontSize="20"/>
+
+                            <ComboBox x:Name="Ra_FK_COUNTERPARTY_ID" Margin="143,39,25,39" VerticalAlignment="Center" x:FieldModifier="public" Grid.Column="1" Grid.Row="2" Foreground="Black" Background="#0C6B00FF">
+                                <ComboBox.ItemTemplate>
+                                    <DataTemplate>
+                                        <TextBlock>
+                                            <TextBlock.Text>
+                                                <MultiBinding StringFormat="{}{0} ({1})">
+                                                    <Binding Path="NAME"/>
+                                                    <Binding Path="CATEGORY_C.NAME"/>
+                                                </MultiBinding>
+                                            </TextBlock.Text>
+                                        </TextBlock>
+                                    </DataTemplate>
+                                </ComboBox.ItemTemplate>
+                            </ComboBox>
+                            <TextBlock Text="Контрагент" HorizontalAlignment="Left" Margin="35,0,0,0" VerticalAlignment="Center" Grid.Column="1" Grid.Row="2" Foreground="#FF510FAD" FontSize="20"/>
+
+                            <TextBlock Grid.Column="0" Margin="186,2,186,1" TextWrapping="Wrap" Text="РЕЙТИНГ КОНТРАГЕНТОВ" VerticalAlignment="Center" HorizontalAlignment="Center" FontSize="18" TextAlignment="Center"  FontWeight="Bold" Grid.Row="0" Foreground="#FF510FAD" Height="24" Width="227" Grid.ColumnSpan="2"/>
+                        </Grid>
+                    </TabItem>
+
+                    
+                    
+                    
+                </TabControl>
+            </TabItem>
+
+        </TabControl>
+        
+        <Image Source="/ProOdezhda;component/Images/Logo.png" Margin="8,245,0,45" Height="129" Width="126" HorizontalAlignment="Left"/>
+    </Grid>
+</Window>

+ 261 - 0
ProOdezhda/Windows/MainWin/WorkWindow.xaml.cs

@@ -0,0 +1,261 @@
+using System;
+using System.Linq;
+using System.Windows;
+using System.Windows.Controls;
+using System.Windows.Input;
+
+namespace ProOdezhda.Windows
+{
+    public partial class WorkWindow : Window
+    {
+        ProOdezhdaEntities db = new ProOdezhdaEntities();
+        Insert_and_Delete af_oar = new Insert_and_Delete();
+        MainFunctionality mf = new MainFunctionality();
+
+        string dateformat = "dd.MM.yyyy";
+
+        public WorkWindow()
+        {
+            InitializeComponent();
+            mf.Load("COUNTERPARTY", COUNTERPARTY_Grid);
+            mf.Load("ORDER", ORDER_Grid);
+            mf.Load("PURCHASE_INVOICE", PURCHASE_INVOICE_Grid);
+            mf.Load("REQUEST", REQUEST_Grid);
+            mf.Load("DISPATCH", DISPATCH_Grid);
+            mf.Load("RETAIL_REPORT", RETAIL_REPORT_Grid);
+            mf.Load("RATING", RATING_Grid);
+        }        
+
+        //---------------------------------------------Контрагенты---------------------------------------------------\\
+        //---------------------------------------------\\\-----///---------------------------------------------------\\
+
+        private void NEW_COUNTERPARTY(object sender, RoutedEventArgs e) { af_oar.NEW("COUNTERPARTY", COUNTERPARTY_Grid); }
+        private void DELETE_COUNTERPARTY(object sender, RoutedEventArgs e) { af_oar.DELETE("COUNTERPARTY", COUNTERPARTY_Grid); }
+
+        //---------------------------------------------///-----\\\---------------------------------------------------\\
+        //---------------------------------------------Контрагенты---------------------------------------------------\\
+
+
+        //-----------------------------------------------------------------------------------------------------------\\
+
+
+        //------------------------------------------Заказы материалов------------------------------------------------\\
+        //---------------------------------------------\\\-----///---------------------------------------------------\\
+
+        private void NEW_ORDER(object sender, RoutedEventArgs e) { af_oar.NEW("ORDER", ORDER_Grid); }
+
+        private void DELETE_ORDER(object sender, RoutedEventArgs e) { DO(); }
+        public void DO(bool test = false) { af_oar.DELETE("ORDER", ORDER_Grid, O_ORDER_ID, O_DATE, O_CUTOFF_DATE, O_FK_COUNTERPARTY_ID, ORDER_LIST_Grid, test); }
+        
+        private void ORDER_Grid_SelectionChanged(object sender, SelectionChangedEventArgs e) 
+        { mf.Grid_SelectionChanged("ORDER", ORDER_Grid, O_ORDER_ID, O_DATE, O_CUTOFF_DATE, O_FK_COUNTERPARTY_ID, ORDER_LIST_Grid, dateformat); }
+
+        //---------------------------------------------///-----\\\---------------------------------------------------\\
+        //------------------------------------------Заказы материалов------------------------------------------------\\
+
+
+        //-----------------------------------------------------------------------------------------------------------\\
+
+
+        //-----------------------------------------Приходные накладные-----------------------------------------------\\
+        //---------------------------------------------\\\-----///---------------------------------------------------\\
+
+        private void NEW_PURCHASE_INVOICE(object sender, RoutedEventArgs e) { af_oar.NEW("PURCHASE_INVOICE", PURCHASE_INVOICE_Grid); }
+        private void DELETE_PURCHASE_INVOICE(object sender, RoutedEventArgs e) { DPI(); }
+        public void DPI(bool test = false) { af_oar.DELETE("PURCHASE_INVOICE", PURCHASE_INVOICE_Grid, P_I_ORDER_ID, P_I_DATE, P_I_FK_ORDER_ID, P_I_FK_COUNTERPARTY_ID, PURCHASE_INVOICE_LIST_Grid, test); }
+        private void PURCHASE_INVOICE_Grid_SelectionChanged(object sender, SelectionChangedEventArgs e)
+        { mf.Grid_SelectionChanged("PURCHASE_INVOICE", PURCHASE_INVOICE_Grid, P_I_ORDER_ID, P_I_DATE, P_I_FK_ORDER_ID, P_I_FK_COUNTERPARTY_ID, PURCHASE_INVOICE_LIST_Grid, dateformat); }            
+
+
+        //---------------------------------------------///-----\\\---------------------------------------------------\\
+        //-----------------------------------------Приходные накладные-----------------------------------------------\\
+
+
+        //-----------------------------------------------------------------------------------------------------------\\
+
+
+        //-------------------------------------------Запросы агентов-------------------------------------------------\\
+        //---------------------------------------------\\\-----///---------------------------------------------------\\
+
+        private void NEW_REQUEST(object sender, RoutedEventArgs e) { af_oar.NEW("REQUEST", REQUEST_Grid); }
+        private void DELETE_REQUEST(object sender, RoutedEventArgs e) { DR(); }
+        public void DR(bool test = false) { af_oar.DELETE("REQUEST", REQUEST_Grid, R_REQUEST_ID, R_DATE, R_CUTOFF_DATE, R_FK_COUNTERPARTY_ID, REQUEST_LIST_Grid, test); }
+        private void REQUEST_Grid_SelectionChanged(object sender, SelectionChangedEventArgs e)
+        { mf.Grid_SelectionChanged("REQUEST", REQUEST_Grid, R_REQUEST_ID, R_DATE, R_CUTOFF_DATE, R_FK_COUNTERPARTY_ID, REQUEST_LIST_Grid, dateformat); }
+
+
+        //---------------------------------------------///-----\\\---------------------------------------------------\\
+        //-------------------------------------------Запросы агентов-------------------------------------------------\\
+
+
+        //-----------------------------------------------------------------------------------------------------------\\
+
+
+        //------------------------------------------Поставки продукции-----------------------------------------------\\
+        //---------------------------------------------\\\-----///---------------------------------------------------\\
+
+        private void NEW_DISPATCH(object sender, RoutedEventArgs e) { af_oar.NEW("DISPATCH", DISPATCH_Grid); }
+        private void DELETE_DISPATCH(object sender, RoutedEventArgs e) { DD(); }
+        public void DD(bool test = false) { af_oar.DELETE("DISPATCH", DISPATCH_Grid, D_REQUEST_ID, D_DATE, D_FK_REQUEST_ID, D_FK_COUNTERPARTY_ID, DISPATCH_LIST_Grid, test); }
+        private void DISPATCH_Grid_SelectionChanged(object sender, SelectionChangedEventArgs e)
+        { mf.Grid_SelectionChanged("DISPATCH", DISPATCH_Grid, D_REQUEST_ID, D_DATE, D_FK_REQUEST_ID, D_FK_COUNTERPARTY_ID, DISPATCH_LIST_Grid, dateformat); }
+
+        //---------------------------------------------///-----\\\---------------------------------------------------\\
+        //------------------------------------------Поставки продукции-----------------------------------------------\\
+
+
+        //-----------------------------------------------------------------------------------------------------------\\
+
+
+        //------------------------------------------Розничные продажи------------------------------------------------\\
+        //---------------------------------------------\\\-----///---------------------------------------------------\\
+
+        private void NEW_RETAIL_REPORT(object sender, RoutedEventArgs e) { af_oar.NEW("RETAIL_REPORT", RETAIL_REPORT_Grid); }
+        private void DELETE_RETAIL_REPORT(object sender, RoutedEventArgs e) { DRR(); }
+        public void DRR(bool test = false) { af_oar.DELETE("RETAIL_REPORT", RETAIL_REPORT_Grid, R_R_RETAIL_REPORT_ID, R_R_DATE, null, R_R_FK_COUNTERPARTY_ID, RETAIL_REPORT_LIST_Grid, test); }
+        private void RETAIL_REPORT_Grid_SelectionChanged(object sender, SelectionChangedEventArgs e)
+        { mf.Grid_SelectionChanged("RETAIL_REPORT", RETAIL_REPORT_Grid, R_R_RETAIL_REPORT_ID, R_R_DATE, null, R_R_FK_COUNTERPARTY_ID, RETAIL_REPORT_LIST_Grid, dateformat); }
+
+        //---------------------------------------------///-----\\\---------------------------------------------------\\
+        //------------------------------------------Розничные продажи------------------------------------------------\\
+
+
+        //-----------------------------------------------------------------------------------------------------------\\
+
+
+        //-----------------------------------------Рейтинг контрагентов----------------------------------------------\\
+        //---------------------------------------------\\\-----///---------------------------------------------------\\
+
+        private void NEW_RATING(object sender, RoutedEventArgs e) { N_R(); }
+        public bool N_R(bool test = false)
+        {
+            if (Check(test))
+            {
+                RATING rating = new RATING
+                {
+                    DATE = DateTime.Parse(Ra_DATE.SelectedDate.ToString()),
+                    FK_COUNTERPARTY_ID = int.Parse(Ra_FK_COUNTERPARTY_ID.SelectedValue.ToString()),
+                    RATING1 = double.Parse(Ra_RATING.Text)
+                };
+                db.RATINGs.Add(rating);
+                db.SaveChanges();
+                mf.Load("RATING", RATING_Grid);
+
+                return true;
+            }
+            return false;
+        }
+        private bool Check(bool test = false)
+        {
+            if (Ra_FK_COUNTERPARTY_ID.SelectedValue == null)
+            {
+                if (test) { return false; }
+                MessageBox.Show("Контрагент не выбран!"); return false; 
+            }
+            
+            if (!double.TryParse(Ra_RATING.Text, out double rating))
+            {
+                if (test) { return false; }
+                MessageBox.Show("Рейтинг введён неправильно!"); return false; 
+            }
+
+            if (Ra_DATE.SelectedDate == null)
+            {
+                if (test) { return false; }
+                MessageBox.Show("Дата назначения не введена!"); return false; 
+            }
+
+            return true;
+        }
+
+        private void DELETE_RATING(object sender, RoutedEventArgs e) { D_R(); }
+        public bool D_R()
+        {
+            if(RATING_Grid.SelectedItem is RATING rating)
+            {
+                db.RATINGs.Remove(db.RATINGs.Where(r => r.RATING_ID == rating.RATING_ID).FirstOrDefault());
+                db.SaveChanges();
+                mf.Load("RATING", RATING_Grid);
+
+                Ra_DATE.SelectedDate = null;
+                Ra_FK_COUNTERPARTY_ID.SelectedValue = null;
+                Ra_RATING.Text = "";
+                
+                return true;
+            }
+            return false;
+        }
+
+        private void UPDATE_RATING(object sender, RoutedEventArgs e) { U_R(); }
+        public bool U_R(bool test = false)
+        {
+            if (Check(test))
+            {
+                if (RATING_Grid.SelectedItem is RATING rating)
+                {
+                    rating.DATE = DateTime.Parse(Ra_DATE.SelectedDate.ToString());
+                    rating.FK_COUNTERPARTY_ID = int.Parse(Ra_FK_COUNTERPARTY_ID.SelectedValue.ToString());
+                    rating.RATING1 = double.Parse(Ra_RATING.Text);
+
+                    db.SaveChanges();
+                    mf.Load("RATING", RATING_Grid);
+                }
+                return true;
+            }
+            return false;
+        }
+
+        private void RATING_MouseLeftButtonUp(object sender, MouseButtonEventArgs e) { RMLBU(); }
+        public void RMLBU() { mf.Load_COUNTERPARTY(Ra_FK_COUNTERPARTY_ID); }
+        
+        private void RATING_Grid_SelectionChanged(object sender, SelectionChangedEventArgs e)
+        {
+            if (RATING_Grid.SelectedItem is RATING rating)
+            {
+                Ra_DATE.SelectedDate = rating.DATE;
+                Ra_FK_COUNTERPARTY_ID.SelectedValue = rating.FK_COUNTERPARTY_ID;
+                Ra_RATING.Text = rating.RATING1.ToString();
+            }
+        }
+
+        public void RATING_Filling(DateTime date, int countrparty, string rating)
+        {
+            Ra_DATE.SelectedDate = date;
+            Ra_FK_COUNTERPARTY_ID.SelectedIndex = countrparty;
+            Ra_RATING.Text = rating;
+        }
+
+        //---------------------------------------------///-----\\\---------------------------------------------------\\
+        //-----------------------------------------Рейтинг контрагентов----------------------------------------------\\
+
+
+        //-----------------------------------------------------------------------------------------------------------\\
+
+
+        //-----------------------------------------------Отчёты------------------------------------------------------\\
+        //---------------------------------------------\\\-----///---------------------------------------------------\\
+
+        private void BC_Arrived_Orders(object sender, RoutedEventArgs e) { mf.BC_Arrived_Orders(Arrived_Orders); }
+        private void BC_Completed_Requests(object sender, RoutedEventArgs e) { mf.BC_Completed_Requests(Completed_Requests); }
+        private void BC_Products_Sold(object sender, RoutedEventArgs e) { mf.BC_Products_Sold(Products_Sold); }
+        private void BC_Counterparty_Rating(object sender, RoutedEventArgs e) { mf.BC_Counterparty_Rating(Counterparty_Rating); }
+
+        //---------------------------------------------///-----\\\---------------------------------------------------\\
+        //-----------------------------------------------Отчёты------------------------------------------------------\\
+
+        private void Window_Closed(object sender, EventArgs e) 
+        {
+            USER_ACTIVITY ACTIVITY = new USER_ACTIVITY
+            {
+                FK_USER_ID = int.Parse(Application.Current.Properties["USER_ID"].ToString()),
+                ENTRY_TIME = DateTime.Parse(Application.Current.Properties["ENTRY_TIME"].ToString()),
+                EXIT_TIME = DateTime.Now
+            };
+
+            db.USER_ACTIVITY.Add(ACTIVITY);
+            db.SaveChanges();
+
+            Application.Current.Shutdown(); 
+        }        
+    }
+}

+ 17 - 0
ProOdezhda/Windows/Test/TestWin.xaml

@@ -0,0 +1,17 @@
+<Window x:Class="ProOdezhda.Windows.Test.TestWin"
+        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
+        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
+        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
+        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
+        xmlns:local="clr-namespace:ProOdezhda.Windows.Test"
+        mc:Ignorable="d"
+        Title="TestWin" Height="450" Width="800">
+    <Grid>
+        <ComboBox x:Name="ComboBox1" HorizontalAlignment="Left" Margin="42,30,0,0" VerticalAlignment="Top" Width="339" x:FieldModifier="public"/>
+        <ComboBox x:Name="ComboBox2" HorizontalAlignment="Left" Margin="42,99,0,0" VerticalAlignment="Top" Width="339" x:FieldModifier="public"/>
+        <ComboBox x:Name="ComboBox3" HorizontalAlignment="Left" Margin="447,210,0,0" VerticalAlignment="Top" Width="183" x:FieldModifier="public"/>
+        <DataGrid x:Name="DataGrid" HorizontalAlignment="Left" Height="191" Margin="42,186,0,0" VerticalAlignment="Top" Width="339" x:FieldModifier="public"/>
+        <TextBox x:Name="TextBox1" HorizontalAlignment="Left" Height="24" Margin="447,265,0,0" TextWrapping="Wrap" Text="TextBox" VerticalAlignment="Top" Width="183" x:FieldModifier="public"/>
+        <TextBox x:Name="TextBox2" HorizontalAlignment="Left" Height="24" Margin="447,322,0,0" TextWrapping="Wrap" Text="TextBox" VerticalAlignment="Top" Width="183" x:FieldModifier="public"/>
+    </Grid>
+</Window>

+ 28 - 0
ProOdezhda/Windows/Test/TestWin.xaml.cs

@@ -0,0 +1,28 @@
+using System.Windows;
+
+namespace ProOdezhda.Windows.Test
+{
+    public partial class TestWin : Window
+    {
+        public TestWin()
+        {
+            InitializeComponent();
+        }
+        public void Clear()
+        {
+            ComboBox1.ItemsSource = null; 
+            ComboBox1.SelectedValuePath = null;
+            ComboBox1.Items.Clear();
+            ComboBox2.ItemsSource = null;
+            ComboBox2.SelectedValuePath = null;
+            ComboBox2.Items.Clear();
+            ComboBox3.ItemsSource = null;
+            ComboBox3.SelectedValuePath = null;
+            ComboBox3.Items.Clear();
+            DataGrid.ItemsSource = null; 
+            DataGrid.Items.Clear();
+            TextBox1.Clear();
+            TextBox2.Clear();
+        }
+    }
+}

+ 36 - 0
ProOdezhdaTest/App.Config

@@ -0,0 +1,36 @@
+<?xml version="1.0" encoding="utf-8"?>
+<configuration>
+  <configSections>
+    <!-- For more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?LinkID=237468 -->
+    <section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
+  </configSections>
+	<connectionStrings>
+		<add name="ProOdezhdaEntities" connectionString="metadata=res://*/Model1.csdl|res://*/Model1.ssdl|res://*/Model1.msl;provider=System.Data.SqlClient;provider connection string=&quot;data source=DESKTOP-7CPP4TJ\SQLEXPRESS;initial catalog=ProOdezhda;integrated security=True;MultipleActiveResultSets=True;App=EntityFramework&quot;" providerName="System.Data.EntityClient" />
+	</connectionStrings>
+	<entityFramework>
+		<defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlConnectionFactory, EntityFramework" />
+		<providers>
+			<provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />
+		</providers>
+	</entityFramework>
+	<runtime>
+		<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
+			<dependentAssembly>
+				<assemblyIdentity name="FluentMigrator.Runner.Core" publicKeyToken="aacfc7de5acabf05" culture="neutral" />
+				<bindingRedirect oldVersion="0.0.0.0-3.3.1.0" newVersion="3.3.1.0" />
+			</dependentAssembly>
+			<dependentAssembly>
+				<assemblyIdentity name="FluentMigrator.Abstractions" publicKeyToken="aacfc7de5acabf05" culture="neutral" />
+				<bindingRedirect oldVersion="0.0.0.0-3.3.1.0" newVersion="3.3.1.0" />
+			</dependentAssembly>
+			<dependentAssembly>
+				<assemblyIdentity name="FluentMigrator.Runner.SqlServer" publicKeyToken="aacfc7de5acabf05" culture="neutral" />
+				<bindingRedirect oldVersion="0.0.0.0-3.3.1.0" newVersion="3.3.1.0" />
+			</dependentAssembly>
+			<dependentAssembly>
+				<assemblyIdentity name="System.ValueTuple" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
+				<bindingRedirect oldVersion="0.0.0.0-4.0.3.0" newVersion="4.0.3.0" />
+			</dependentAssembly>
+		</assemblyBinding>
+	</runtime>
+</configuration>

+ 522 - 0
ProOdezhdaTest/ProOdezhdaTest.cs

@@ -0,0 +1,522 @@
+using Microsoft.VisualStudio.TestTools.UnitTesting;
+using System;
+using ProOdezhda;
+using ProOdezhda.Windows;
+using System.Linq;
+using ProOdezhda.Windows.Test;
+using System.Windows.Controls;
+
+namespace ProOdezhdaTest
+{
+    [TestClass]
+    public class ProOdezhdaTest
+    {
+        [TestClass]
+        public class Working_With_Forms_Test
+        {
+            ProOdezhdaEntities db = new ProOdezhdaEntities();
+            TestWin tw = new TestWin();
+            Working_With_Forms wwf = new Working_With_Forms();
+
+            [TestMethod]
+            public void Test1_Load_COUNTERPARTY_and_NOMENCLATURE()
+            {
+                // Тест Load_COUNTERPARTY_and_NOMENCLATURE: Load_NOMENCLATURE, Load_COUNTERPARTY
+                wwf.Load_COUNTERPARTY_and_NOMENCLATURE(tw.ComboBox1, "Агент", tw.ComboBox2, "Продукция");
+                Assert.AreEqual("NAME", tw.ComboBox1.DisplayMemberPath); Assert.AreEqual("COUNTERPARTY_ID", tw.ComboBox1.SelectedValuePath);
+                Assert.AreEqual("NAME", tw.ComboBox2.DisplayMemberPath); Assert.AreEqual("NOMENCLATURE_ID", tw.ComboBox2.SelectedValuePath);
+
+                foreach (COUNTERPARTY c in tw.ComboBox1.Items) { Assert.AreEqual("Агент", c.CATEGORY_C.NAME); }
+                foreach (NOMENCLATURE c in tw.ComboBox2.Items) { Assert.AreEqual("Продукция", c.CATEGORY_N.NAME); }
+
+                wwf.Load_COUNTERPARTY_and_NOMENCLATURE(tw.ComboBox1, "Поставщик", tw.ComboBox2, "Материал");
+
+                foreach (COUNTERPARTY c in tw.ComboBox1.Items) { Assert.AreEqual("Поставщик", c.CATEGORY_C.NAME); }
+                foreach (NOMENCLATURE c in tw.ComboBox2.Items) { Assert.AreEqual("Материал", c.CATEGORY_N.NAME); }
+            }
+
+            [TestMethod]
+            public void Test2_Load_ORDER()
+            {
+                // Тест Load_ORDER
+                tw.Clear();
+
+                foreach (ORDER o in db.ORDERs)
+                {
+                    if (!db.PURCHASE_INVOICE.Any(p_i => p_i.FK_ORDER_ID == o.ORDER_ID))
+                    {
+                        wwf.Load_ORDER(tw.ComboBox1, o.FK_COUNTERPARTY_ID);
+                        Assert.AreEqual("ORDER_ID", tw.ComboBox1.SelectedValuePath);
+                        foreach (ORDER c in tw.ComboBox1.Items) { Assert.AreEqual(o.FK_COUNTERPARTY_ID, c.FK_COUNTERPARTY_ID); }
+                        goto Load_ORDER;
+                    }
+                }
+                Assert.Fail("Тест Load_ORDER невозможен, т.к. отсутствуют заказы или на каждый из них оформлена накладная");
+            Load_ORDER:;
+            }
+
+            [TestMethod]
+            public void Test3_Load_REQUEST()
+            {
+                // Тест Load_REQUEST
+                tw.Clear();
+
+                foreach (REQUEST r in db.REQUESTs)
+                {
+                    if (!db.DISPATCHes.Any(d => d.FK_REQUEST_ID == r.REQUEST_ID))
+                    {
+                        wwf.Load_REQUEST(tw.ComboBox1, r.FK_COUNTERPARTY_ID);
+                        Assert.AreEqual("REQUEST_ID", tw.ComboBox1.SelectedValuePath);
+                        foreach (REQUEST c in tw.ComboBox1.Items) { Assert.AreEqual(r.FK_COUNTERPARTY_ID, c.FK_COUNTERPARTY_ID); }
+                        goto Load_REQUEST;
+                    }
+                }
+                Assert.Fail("Тест Load_REQUEST невозможен, т.к. отсутствуют запросы или на каждый из них оформлена поставка");
+            Load_REQUEST:;
+            }
+
+            [TestMethod]
+            public void Test4_REQUEST_or_ORDER_Selection()
+            {
+                // Тест REQUEST_or_ORDER_Selection
+                tw.Clear();
+
+                foreach (ORDER o in db.ORDERs)
+                {
+                    if (!db.PURCHASE_INVOICE.Any(i => i.FK_ORDER_ID == o.ORDER_ID))
+                    {
+                        wwf.Load_ORDER(tw.ComboBox1, o.COUNTERPARTY.COUNTERPARTY_ID);
+                        tw.ComboBox1.SelectedValue = o.ORDER_ID;
+                        wwf.REQUEST_or_ORDER_Selection("ORDER", tw.ComboBox1, tw.DataGrid);
+                        Assert.IsFalse(tw.DataGrid.Items.Count == 0, "DaraGrid пуст");
+                        goto ORDER_Selection;
+                    }
+                }
+                Assert.Fail("Тест REQUEST_or_ORDER_Selection невозможен, т.к. отсутствуют заказы");
+            ORDER_Selection:;
+
+                tw.Clear();
+
+                foreach (REQUEST r in db.REQUESTs)
+                {
+                    if (!db.DISPATCHes.Any(i => i.FK_REQUEST_ID == r.REQUEST_ID))
+                    {
+                        wwf.Load_REQUEST(tw.ComboBox1, r.COUNTERPARTY.COUNTERPARTY_ID);
+                        tw.ComboBox1.SelectedValue = r.REQUEST_ID;
+                        wwf.REQUEST_or_ORDER_Selection("REQUEST", tw.ComboBox1, tw.DataGrid);
+                        Assert.IsFalse(tw.DataGrid.Items.Count == 0, "DaraGrid пуст");
+                        goto REQUEST_Selection;
+                    }
+                }
+                Assert.Fail("Тест REQUEST_or_ORDER_Selection невозможен, т.к. отсутствуют запросы");
+            REQUEST_Selection:;
+            }
+
+            [TestMethod]
+            public void Test5_IUDS()
+            {
+                // Тест Insert_List, Update_List, Delete_List и LIST_Selection_Changed
+                tw.Clear();
+                wwf.Load_NOMENCLATURE(tw.ComboBox3, "Продукция");
+
+                tw.ComboBox3.SelectedIndex = 0;
+                tw.TextBox1.Text = "100";
+                tw.TextBox2.Text = "10";
+
+                wwf.Insert_List(tw.DataGrid, tw.ComboBox3, tw.TextBox1, tw.TextBox2);
+                Assert.IsTrue(tw.DataGrid.Items.Count == 1, "Запись не добавленна");
+
+                tw.ComboBox3.SelectedIndex = 1;
+                tw.TextBox1.Text = "10";
+                tw.TextBox2.Text = "100";
+                wwf.Insert_List(tw.DataGrid, tw.ComboBox3, tw.TextBox1, tw.TextBox2);
+                Assert.IsTrue(tw.DataGrid.Items.Count == 2, "Запись не добавленна");
+
+                tw.DataGrid.SelectedIndex = 0;
+
+                wwf.LIST_Selection_Changed(tw.DataGrid, tw.ComboBox3, tw.TextBox1, tw.TextBox2);
+                Assert.AreEqual(0, tw.ComboBox3.SelectedIndex);
+                Assert.AreEqual("100", tw.TextBox1.Text);
+                Assert.AreEqual("10", tw.TextBox2.Text);
+
+                tw.DataGrid.SelectedIndex = 1;
+                wwf.Delete_List(tw.DataGrid);
+                Assert.IsTrue(tw.DataGrid.Items.Count == 1, "Запись не удалена");
+            }
+        }
+
+        [TestClass]
+        public class WindowTest
+        {
+            [TestClass]
+            public class MainWindowTest
+            {
+                ProOdezhdaEntities db = new ProOdezhdaEntities();
+                MainWindow mw = new MainWindow();
+
+                [TestMethod]
+                public void Test_Authorization()
+                {
+                    Assert.IsTrue(mw.Authorization("Менеджер", "692", true));
+                    Assert.IsFalse(mw.Authorization("Дизайнер", "123", true));
+                    Assert.IsFalse(mw.Authorization("", "", true));
+                    Assert.IsFalse(mw.Authorization("Дизайнер", "", true));
+                }
+            }
+
+            [TestClass]
+            public class WinRegistrationTest
+            {
+                ProOdezhdaEntities db = new ProOdezhdaEntities();
+                WinRegistration wreg = new WinRegistration();
+
+                [TestMethod]
+                public void Test_Save()
+                {
+                    int users = db.USERs.Count() + 1;
+                    ComboBox a = new ComboBox();
+                    a.ItemsSource = db.POSITIONs.ToList();
+                    a.DisplayMemberPath = "NAME";
+                    a.SelectedValuePath = "POSITION_ID";
+
+                    a.SelectedIndex = 1;
+                    Assert.IsTrue(wreg.Save("Матвей", "123", a, true)); Assert.AreEqual(users, db.USERs.Count());
+
+                    Assert.IsFalse(wreg.Save("", "123", a, true)); Assert.AreEqual(users, db.USERs.Count());
+                    Assert.IsFalse(wreg.Save("Матвей Скрипов", "123", a, true)); Assert.AreEqual(users, db.USERs.Count());
+                    Assert.IsFalse(wreg.Save(" ", "123", a, true)); Assert.AreEqual(users, db.USERs.Count());
+                    Assert.IsFalse(wreg.Save("Менеджер", "123", a, true)); Assert.AreEqual(users, db.USERs.Count());
+
+
+                    Assert.IsFalse(wreg.Save("Матвей", "", a, true)); Assert.AreEqual(users, db.USERs.Count());
+                    Assert.IsFalse(wreg.Save("Матвей", " ", a, true)); Assert.AreEqual(users, db.USERs.Count());
+                    Assert.IsFalse(wreg.Save("Матвей", "Lord #1", a, true)); Assert.AreEqual(users, db.USERs.Count());
+                    Assert.IsFalse(wreg.Save("Матвей", "пароль", a, true)); Assert.AreEqual(users, db.USERs.Count());
+                    
+                    a.SelectedValue = null;
+                    Assert.IsFalse(wreg.Save("Матвей", "123", a, true)); Assert.AreEqual(users, db.USERs.Count());
+
+                    db.USERs.Remove(db.USERs.Where(l => l.LOGIN == "Матвей").Where(p => p.PASSWORD == "123").FirstOrDefault());
+                    db.SaveChanges();
+                }
+            }
+
+            [TestClass]
+            public class WinCOUNTERPARTYTest
+            {
+                ProOdezhdaEntities db = new ProOdezhdaEntities();
+                WinCOUNTERPARTY wcoun = new WinCOUNTERPARTY();
+                
+                [TestMethod]
+                public void Test1_Insert()
+                {
+                    int counterparty = db.COUNTERPARTies.Count() + 1;
+                    wcoun.Filling("Рога и копыта", 0, "г. Томск", "102938746573", "927318456", "2348569374234", "Марченко Н.Н.", "9039563456", "cow@gmail.com", 0);
+                    Assert.IsTrue(wcoun.Save(true)); Assert.AreEqual(counterparty, db.COUNTERPARTies.Count());
+
+                    wcoun.Filling("", 2, "", "", "", "", "", "", "");
+                    Assert.IsFalse(wcoun.Save(true)); Assert.AreEqual(counterparty, db.COUNTERPARTies.Count());
+
+                    wcoun.Filling("Рога и копыта", 0, "", "", "", "", "", "", "");
+                    Assert.IsFalse(wcoun.Save(true)); Assert.AreEqual(counterparty, db.COUNTERPARTies.Count());
+
+                    wcoun.Filling("Рога и копыта", 0, "г. Томск", "324", "", "", "", "", "");
+                    Assert.IsFalse(wcoun.Save(true)); Assert.AreEqual(counterparty, db.COUNTERPARTies.Count());
+
+                    wcoun.Filling("Рога и копыта", 0, "г. Томск", "asffdgsfdhdgh", "", "", "", "", "");
+                    Assert.IsFalse(wcoun.Save(true)); Assert.AreEqual(counterparty, db.COUNTERPARTies.Count());
+
+                    wcoun.Filling("Рога и копыта", 0, "г. Томск", "102938746573", "234", "", "", "", "");
+                    Assert.IsFalse(wcoun.Save(true)); Assert.AreEqual(counterparty, db.COUNTERPARTies.Count());
+
+                    wcoun.Filling("Рога и копыта", 0, "г. Томск", "102938746573", "asfdgfdhh", "", "", "", "");
+                    Assert.IsFalse(wcoun.Save(true)); Assert.AreEqual(counterparty, db.COUNTERPARTies.Count());
+
+                    wcoun.Filling("Рога и копыта", 0, "г. Томск", "102938746573", "927318456", "324", "", "", "");
+                    Assert.IsFalse(wcoun.Save(true)); Assert.AreEqual(counterparty, db.COUNTERPARTies.Count());
+
+                    wcoun.Filling("Рога и копыта", 0, "г. Томск", "102938746573", "927318456", "asfdfgfhggfhg", "", "", "");
+                    Assert.IsFalse(wcoun.Save(true)); Assert.AreEqual(counterparty, db.COUNTERPARTies.Count());
+
+                    wcoun.Filling("Рога и копыта", 0, "г. Томск", "102938746573", "927318456", "2348569374234", "Марченко", "", "");
+                    Assert.IsFalse(wcoun.Save(true)); Assert.AreEqual(counterparty, db.COUNTERPARTies.Count());
+
+                    wcoun.Filling("Рога и копыта", 0, "г. Томск", "102938746573", "927318456", "2348569374234", "Марченко Н.Н.", "123", "");
+                    Assert.IsFalse(wcoun.Save(true)); Assert.AreEqual(counterparty, db.COUNTERPARTies.Count());
+
+                    wcoun.Filling("Рога и копыта", 0, "г. Томск", "102938746573", "927318456", "2348569374234", "Марченко Н.Н.", "asd", "");
+                    Assert.IsFalse(wcoun.Save(true)); Assert.AreEqual(counterparty, db.COUNTERPARTies.Count());
+                   
+                    wcoun.Filling("Рога и копыта", 0, "г. Томск", "102938746573", "927318456", "2348569374234", "Марченко Н.Н.", "9039563456", "Привет!");
+                    Assert.IsFalse(wcoun.Save(true)); Assert.AreEqual(counterparty, db.COUNTERPARTies.Count());
+                    
+                    wcoun.Filling("Рога и копыта", 0, "г. Томск", "102938746573", "927318456", "2348569374234", "Марченко Н.Н.", "9039563456", "cow @gmail.com");
+                    Assert.IsFalse(wcoun.Save(true)); Assert.AreEqual(counterparty, db.COUNTERPARTies.Count());
+                }
+
+                Insert_and_Delete iad = new Insert_and_Delete();
+                WorkWindow ww = new WorkWindow();
+                
+                [TestMethod]
+                public void Test2_Delete()
+                {
+                    int counterparty = db.COUNTERPARTies.Count() - 1;
+                    ww.COUNTERPARTY_Grid.SelectedIndex = ww.COUNTERPARTY_Grid.Items.Count - 1;
+                    iad.DELETE("COUNTERPARTY", ww.COUNTERPARTY_Grid, null, null, null, null, null, true);
+                    Assert.AreEqual(counterparty, db.COUNTERPARTies.Count());
+                }
+            }
+
+            [TestClass]
+            public class WinORDERTest
+            {
+                ProOdezhdaEntities db = new ProOdezhdaEntities();
+                WinORDER wo = new WinORDER();
+
+                [TestMethod]
+                public void Test1_Insert()
+                {
+                    int orders = db.ORDERs.Count();
+                    int list = db.ORDER_LIST.Count();
+                    Assert.IsFalse(wo.Save(1,true));
+
+                    wo.Filling(DateTime.Now, DateTime.Now.AddDays(-1), 0);
+                    Assert.IsFalse(wo.Save(1, true));
+
+                    wo.Filling(DateTime.Now, DateTime.Now.AddDays(1), 0);
+                    Assert.IsFalse(wo.Save(1, true));
+
+                    wo.Filling_LIST(0,"10","10");
+                    wo.INC(); wo.INC(); wo.INC();
+                    Assert.IsTrue(wo.Save(1, true)); 
+                    Assert.AreEqual(orders + 1, db.ORDERs.Count());
+                    Assert.AreEqual(list + 3, db.ORDER_LIST.Count());
+                }
+
+                WorkWindow ww = new WorkWindow();
+
+                [TestMethod]
+                public void Test2_Delete()
+                {
+                    int orders = db.ORDERs.Count() - 1;
+                    ww.ORDER_Grid.SelectedIndex = ww.ORDER_Grid.Items.Count - 1;
+                    ww.DO(true); Assert.AreEqual(orders, db.ORDERs.Count());
+                }
+            }
+
+            [TestClass]
+            public class WinPURCHASE_INVOICETest
+            {
+                ProOdezhdaEntities db = new ProOdezhdaEntities();
+                WinPURCHASE_INVOICE wpi = new WinPURCHASE_INVOICE();
+
+                [TestMethod]
+                public void Test1_Insert()
+                {
+                    int purchase_invoice = db.PURCHASE_INVOICE.Count();
+                    
+                    Assert.IsFalse(wpi.Save(true));
+
+                    wpi.Filling(DateTime.Now.AddYears(-100), 0, 0);
+                    Assert.IsFalse(wpi.Save(true));
+
+                    wpi.Filling(DateTime.Now, 0, 0);
+                    Assert.IsTrue(wpi.Save(true));
+                    Assert.AreEqual(purchase_invoice + 1, db.PURCHASE_INVOICE.Count());
+                }
+
+                WorkWindow ww = new WorkWindow();
+
+                [TestMethod]
+                public void Test2_Delete()
+                {
+                    int purchase_invoice = db.PURCHASE_INVOICE.Count() - 1;
+                    ww.PURCHASE_INVOICE_Grid.SelectedIndex = ww.PURCHASE_INVOICE_Grid.Items.Count - 1;
+                    ww.DPI(true); Assert.AreEqual(purchase_invoice, db.PURCHASE_INVOICE.Count());
+                }
+            }
+
+            [TestClass]
+            public class WinREQUESTTest
+            {
+                ProOdezhdaEntities db = new ProOdezhdaEntities();
+                WinREQUEST wreq = new WinREQUEST();
+
+                [TestMethod]
+                public void Test1_Insert()
+                {
+                    int requests = db.REQUESTs.Count();
+                    int list = db.REQUEST_LIST.Count();
+                    Assert.IsFalse(wreq.Save( true));
+
+                    wreq.Filling(DateTime.Now, DateTime.Now.AddDays(-1), 0);
+                    Assert.IsFalse(wreq.Save(true));
+
+                    wreq.Filling(DateTime.Now, DateTime.Now.AddDays(1), 0);
+                    Assert.IsFalse(wreq.Save( true));
+
+                    wreq.Filling_LIST(0, "10", "10");
+                    wreq.INC(); wreq.INC(); wreq.INC();
+                    Assert.IsTrue(wreq.Save(true));
+                    Assert.AreEqual(requests + 1, db.REQUESTs.Count());
+                    Assert.AreEqual(list + 3, db.REQUEST_LIST.Count());
+                }
+
+                WorkWindow ww = new WorkWindow();
+
+                [TestMethod]
+                public void Test2_Delete()
+                {
+                    int requests = db.REQUESTs.Count() - 1;
+                    ww.REQUEST_Grid.SelectedIndex = ww.REQUEST_Grid.Items.Count - 1;
+                    ww.DR(true); Assert.AreEqual(requests, db.REQUESTs.Count());
+                }
+            }
+
+            [TestClass]
+            public class WinDISPATCHTest
+            {
+                ProOdezhdaEntities db = new ProOdezhdaEntities();
+                WinDISPATCH wd = new WinDISPATCH();
+
+                [TestMethod]
+                public void Test1_Insert()
+                {
+                    int dispatch = db.DISPATCHes.Count();
+
+                    Assert.IsFalse(wd.Save(1, true));
+
+                    wd.Filling(DateTime.Now.AddYears(-100), 0, 0);
+                    Assert.IsFalse(wd.Save(1, true));
+
+                    wd.Filling(DateTime.Now, 0, 0);
+                    Assert.IsTrue(wd.Save(1, true), "Все запросы выполнены");
+                    Assert.AreEqual(dispatch + 1, db.DISPATCHes.Count());
+                }
+
+                WorkWindow ww = new WorkWindow();
+
+                [TestMethod]
+                public void Test2_Delete()
+                {
+                    int dispatch = db.DISPATCHes.Count() - 1;
+                    ww.DISPATCH_Grid.SelectedIndex = ww.DISPATCH_Grid.Items.Count - 1;
+                    ww.DD(true); Assert.AreEqual(dispatch, db.DISPATCHes.Count());
+                }
+            }
+
+            [TestClass]
+            public class WinRETAIL_REPORTTest
+            {
+                ProOdezhdaEntities db = new ProOdezhdaEntities();
+                WinRETAIL_REPORT wrr = new WinRETAIL_REPORT();
+
+                [TestMethod]
+                public void Test1_Insert()
+                {
+                    int retail_repoet = db.RETAIL_REPORT.Count();
+                    int list = db.RETAIL_REPORT_LIST.Count();
+                    Assert.IsFalse(wrr.Save(true));
+
+                    wrr.Filling(DateTime.Now, 0);
+                    Assert.IsFalse(wrr.Save(true));
+
+                    wrr.Filling(DateTime.Now, 0);
+                    Assert.IsFalse(wrr.Save(true));
+
+                    wrr.Filling_LIST(0, "10", "10");
+                    wrr.INC(); wrr.INC(); wrr.INC();
+                    Assert.IsTrue(wrr.Save(true));
+                    Assert.AreEqual(retail_repoet + 1, db.RETAIL_REPORT.Count());
+                    Assert.AreEqual(list + 3, db.RETAIL_REPORT_LIST.Count());
+                }
+
+                WorkWindow ww = new WorkWindow();
+
+                [TestMethod]
+                public void Test2_Delete()
+                {
+                    int retail_repoet = db.RETAIL_REPORT.Count() - 1;
+                    ww.RETAIL_REPORT_Grid.SelectedIndex = ww.RETAIL_REPORT_Grid.Items.Count - 1;
+                    ww.DRR(true); Assert.AreEqual(retail_repoet, db.RETAIL_REPORT.Count());
+                }
+            }
+
+            [TestClass]
+            public class WorkWindowTest
+            {
+                ProOdezhdaEntities db = new ProOdezhdaEntities();
+                WorkWindow ww = new WorkWindow();
+
+                [TestMethod]
+                public void Test1_Insert()
+                {
+                    int rating = db.RATINGs.Count();
+                    ww.RMLBU();
+                    Assert.IsFalse(ww.N_R(true));
+
+                    ww.RATING_Filling(DateTime.Now, 0, "2erdsf");
+                    Assert.IsFalse(ww.N_R(true));
+
+                    ww.RATING_Filling(DateTime.Now, 0, "13,4"); 
+                    Assert.IsTrue(ww.N_R());
+
+                    Assert.AreEqual(rating + 1, db.RATINGs.Count());
+                }
+
+                [TestMethod]
+                public void Test2_Update()
+                {
+                    ww.RATING_Grid.SelectedIndex = ww.RATING_Grid.Items.Count - 1;
+                    if (ww.RATING_Grid.SelectedItem is RATING rating1) 
+                    {
+                        ww.RATING_Filling(DateTime.Now.AddDays(1), 0, "asfds");
+                        Assert.IsFalse(ww.U_R(true));
+
+                        ww.RATING_Filling(DateTime.Now.AddDays(1), 0, "20,7");
+                        Assert.IsTrue(ww.U_R(true));
+                        if (ww.RATING_Grid.SelectedItem is RATING rating2) 
+                        { Assert.AreEqual(rating1, rating2); }
+                        else
+                        { Assert.Fail("Ошибка конвертации (2)"); }
+                    }
+                    else { Assert.Fail("Ошибка конвертации (1)"); }
+                }
+
+                [TestMethod]
+                public void Test3_Delete()
+                {
+                    int rating = db.RATINGs.Count();
+
+                    ww.RATING_Grid.SelectedIndex = ww.RATING_Grid.Items.Count - 1;
+                    Assert.IsTrue(ww.D_R());
+
+                    Assert.AreEqual(rating - 1, db.RATINGs.Count());
+                }
+            }
+        }
+        [TestClass]
+        public class ReportsTest
+        {
+            ProOdezhdaEntities db = new ProOdezhdaEntities();
+            WorkWindow ww = new WorkWindow();
+            MainFunctionality mf = new MainFunctionality();
+
+            [TestMethod]
+            public void Test_Formation()
+            {
+                mf.BC_Arrived_Orders(ww.Arrived_Orders);
+                Assert.IsFalse(ww.Arrived_Orders.Items.Count == 0, "Нет прибывших заказов");
+
+                mf.BC_Completed_Requests(ww.Completed_Requests);
+                Assert.IsFalse(ww.Completed_Requests.Items.Count == 0, "Нет выполненных запросов");
+
+                mf.BC_Products_Sold(ww.Products_Sold);
+                Assert.IsFalse(ww.Products_Sold.Items.Count == 0, "Нет розничных отчётов");
+
+                mf.BC_Counterparty_Rating(ww.Counterparty_Rating);
+                Assert.IsFalse(ww.Counterparty_Rating.Items.Count == 0, "Нет рейтингов");
+            }
+        }
+    }
+}

+ 187 - 0
ProOdezhdaTest/ProOdezhdaTest.csproj

@@ -0,0 +1,187 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="15.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <Import Project="..\packages\MSTest.TestAdapter.2.1.2\build\net45\MSTest.TestAdapter.props" Condition="Exists('..\packages\MSTest.TestAdapter.2.1.2\build\net45\MSTest.TestAdapter.props')" />
+  <Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
+  <PropertyGroup>
+    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+    <ProjectGuid>{B4C278C1-E22A-4B64-B57E-AACCC3CE4868}</ProjectGuid>
+    <OutputType>Library</OutputType>
+    <AppDesignerFolder>Properties</AppDesignerFolder>
+    <RootNamespace>ProOdezhdaTest</RootNamespace>
+    <AssemblyName>ProOdezhdaTest</AssemblyName>
+    <TargetFrameworkVersion>v4.7.2</TargetFrameworkVersion>
+    <FileAlignment>512</FileAlignment>
+    <ProjectTypeGuids>{3AC096D0-A1C2-E12C-1390-A8335801FDAB};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
+    <VisualStudioVersion Condition="'$(VisualStudioVersion)' == ''">15.0</VisualStudioVersion>
+    <VSToolsPath Condition="'$(VSToolsPath)' == ''">$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)</VSToolsPath>
+    <ReferencePath>$(ProgramFiles)\Common Files\microsoft shared\VSTT\$(VisualStudioVersion)\UITestExtensionPackages</ReferencePath>
+    <IsCodedUITest>False</IsCodedUITest>
+    <TestProjectType>UnitTest</TestProjectType>
+    <NuGetPackageImportStamp>
+    </NuGetPackageImportStamp>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+    <DebugSymbols>true</DebugSymbols>
+    <DebugType>full</DebugType>
+    <Optimize>false</Optimize>
+    <OutputPath>bin\Debug\</OutputPath>
+    <DefineConstants>DEBUG;TRACE</DefineConstants>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+    <DebugType>pdbonly</DebugType>
+    <Optimize>true</Optimize>
+    <OutputPath>bin\Release\</OutputPath>
+    <DefineConstants>TRACE</DefineConstants>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+  </PropertyGroup>
+  <ItemGroup>
+    <Reference Include="EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089, processorArchitecture=MSIL">
+      <HintPath>..\packages\EntityFramework.6.2.0\lib\net45\EntityFramework.dll</HintPath>
+    </Reference>
+    <Reference Include="EntityFramework.SqlServer, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089, processorArchitecture=MSIL">
+      <HintPath>..\packages\EntityFramework.6.2.0\lib\net45\EntityFramework.SqlServer.dll</HintPath>
+    </Reference>
+    <Reference Include="FluentMigrator.Abstractions, Version=3.3.1.0, Culture=neutral, PublicKeyToken=aacfc7de5acabf05, processorArchitecture=MSIL">
+      <HintPath>..\packages\FluentMigrator.Abstractions.3.3.1\lib\net461\FluentMigrator.Abstractions.dll</HintPath>
+    </Reference>
+    <Reference Include="FluentMigrator.Extensions.SqlServer, Version=3.3.1.0, Culture=neutral, PublicKeyToken=aacfc7de5acabf05, processorArchitecture=MSIL">
+      <HintPath>..\packages\FluentMigrator.Extensions.SqlServer.3.3.1\lib\net461\FluentMigrator.Extensions.SqlServer.dll</HintPath>
+    </Reference>
+    <Reference Include="FluentMigrator.Runner.Core, Version=3.3.1.0, Culture=neutral, PublicKeyToken=aacfc7de5acabf05, processorArchitecture=MSIL">
+      <HintPath>..\packages\FluentMigrator.Runner.Core.3.3.1\lib\net461\FluentMigrator.Runner.Core.dll</HintPath>
+    </Reference>
+    <Reference Include="FluentMigrator.Runner.SqlServer, Version=3.3.1.0, Culture=neutral, PublicKeyToken=aacfc7de5acabf05, processorArchitecture=MSIL">
+      <HintPath>..\packages\FluentMigrator.Runner.SqlServer.3.3.1\lib\net461\FluentMigrator.Runner.SqlServer.dll</HintPath>
+    </Reference>
+    <Reference Include="MaterialDesignColors, Version=2.0.5.0, Culture=neutral, PublicKeyToken=df2a72020bd7962a, processorArchitecture=MSIL">
+      <HintPath>..\packages\MaterialDesignColors.2.0.5-ci24-ci24\lib\net452\MaterialDesignColors.dll</HintPath>
+    </Reference>
+    <Reference Include="MaterialDesignThemes.Wpf, Version=4.4.0.0, Culture=neutral, PublicKeyToken=df2a72020bd7962a, processorArchitecture=MSIL">
+      <HintPath>..\packages\MaterialDesignThemes.4.4.0-ci24-ci24\lib\net452\MaterialDesignThemes.Wpf.dll</HintPath>
+    </Reference>
+    <Reference Include="Microsoft.CSharp" />
+    <Reference Include="Microsoft.Data.SqlClient, Version=2.0.20168.4, Culture=neutral, PublicKeyToken=23ec7fc2d6eaa4a5, processorArchitecture=MSIL">
+      <HintPath>..\packages\Microsoft.Data.SqlClient.2.1.2\lib\net46\Microsoft.Data.SqlClient.dll</HintPath>
+    </Reference>
+    <Reference Include="Microsoft.Extensions.Configuration.Abstractions, Version=2.0.1.0, Culture=neutral, PublicKeyToken=adb9793829ddae60, processorArchitecture=MSIL">
+      <HintPath>..\packages\Microsoft.Extensions.Configuration.Abstractions.2.0.1\lib\netstandard2.0\Microsoft.Extensions.Configuration.Abstractions.dll</HintPath>
+    </Reference>
+    <Reference Include="Microsoft.Extensions.DependencyInjection, Version=2.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60, processorArchitecture=MSIL">
+      <HintPath>..\packages\Microsoft.Extensions.DependencyInjection.2.0.0\lib\netstandard2.0\Microsoft.Extensions.DependencyInjection.dll</HintPath>
+    </Reference>
+    <Reference Include="Microsoft.Extensions.DependencyInjection.Abstractions, Version=2.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60, processorArchitecture=MSIL">
+      <HintPath>..\packages\Microsoft.Extensions.DependencyInjection.Abstractions.2.0.0\lib\netstandard2.0\Microsoft.Extensions.DependencyInjection.Abstractions.dll</HintPath>
+    </Reference>
+    <Reference Include="Microsoft.Extensions.Logging.Abstractions, Version=2.0.1.0, Culture=neutral, PublicKeyToken=adb9793829ddae60, processorArchitecture=MSIL">
+      <HintPath>..\packages\Microsoft.Extensions.Logging.Abstractions.2.0.1\lib\netstandard2.0\Microsoft.Extensions.Logging.Abstractions.dll</HintPath>
+    </Reference>
+    <Reference Include="Microsoft.Extensions.Options, Version=2.0.1.0, Culture=neutral, PublicKeyToken=adb9793829ddae60, processorArchitecture=MSIL">
+      <HintPath>..\packages\Microsoft.Extensions.Options.2.0.1\lib\netstandard2.0\Microsoft.Extensions.Options.dll</HintPath>
+    </Reference>
+    <Reference Include="Microsoft.Extensions.Primitives, Version=2.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60, processorArchitecture=MSIL">
+      <HintPath>..\packages\Microsoft.Extensions.Primitives.2.0.0\lib\netstandard2.0\Microsoft.Extensions.Primitives.dll</HintPath>
+    </Reference>
+    <Reference Include="Microsoft.Identity.Client, Version=4.21.1.0, Culture=neutral, PublicKeyToken=0a613f4dd989e8ae, processorArchitecture=MSIL">
+      <HintPath>..\packages\Microsoft.Identity.Client.4.21.1\lib\net461\Microsoft.Identity.Client.dll</HintPath>
+    </Reference>
+    <Reference Include="Microsoft.IdentityModel.JsonWebTokens, Version=6.8.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
+      <HintPath>..\packages\Microsoft.IdentityModel.JsonWebTokens.6.8.0\lib\net461\Microsoft.IdentityModel.JsonWebTokens.dll</HintPath>
+    </Reference>
+    <Reference Include="Microsoft.IdentityModel.Logging, Version=6.8.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
+      <HintPath>..\packages\Microsoft.IdentityModel.Logging.6.8.0\lib\net461\Microsoft.IdentityModel.Logging.dll</HintPath>
+    </Reference>
+    <Reference Include="Microsoft.IdentityModel.Protocols, Version=6.8.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
+      <HintPath>..\packages\Microsoft.IdentityModel.Protocols.6.8.0\lib\net461\Microsoft.IdentityModel.Protocols.dll</HintPath>
+    </Reference>
+    <Reference Include="Microsoft.IdentityModel.Protocols.OpenIdConnect, Version=6.8.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
+      <HintPath>..\packages\Microsoft.IdentityModel.Protocols.OpenIdConnect.6.8.0\lib\net461\Microsoft.IdentityModel.Protocols.OpenIdConnect.dll</HintPath>
+    </Reference>
+    <Reference Include="Microsoft.IdentityModel.Tokens, Version=6.8.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
+      <HintPath>..\packages\Microsoft.IdentityModel.Tokens.6.8.0\lib\net461\Microsoft.IdentityModel.Tokens.dll</HintPath>
+    </Reference>
+    <Reference Include="Microsoft.VisualStudio.TestPlatform.TestFramework, Version=14.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
+      <HintPath>..\packages\MSTest.TestFramework.2.1.2\lib\net45\Microsoft.VisualStudio.TestPlatform.TestFramework.dll</HintPath>
+    </Reference>
+    <Reference Include="Microsoft.VisualStudio.TestPlatform.TestFramework.Extensions, Version=14.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
+      <HintPath>..\packages\MSTest.TestFramework.2.1.2\lib\net45\Microsoft.VisualStudio.TestPlatform.TestFramework.Extensions.dll</HintPath>
+    </Reference>
+    <Reference Include="PresentationCore" />
+    <Reference Include="PresentationFramework" />
+    <Reference Include="System" />
+    <Reference Include="System.ComponentModel.Annotations, Version=4.2.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
+      <HintPath>..\packages\System.ComponentModel.Annotations.4.4.1\lib\net461\System.ComponentModel.Annotations.dll</HintPath>
+    </Reference>
+    <Reference Include="System.ComponentModel.DataAnnotations" />
+    <Reference Include="System.Core" />
+    <Reference Include="System.Data" />
+    <Reference Include="System.Data.DataSetExtensions" />
+    <Reference Include="System.Drawing" />
+    <Reference Include="System.IdentityModel" />
+    <Reference Include="System.IdentityModel.Tokens.Jwt, Version=6.8.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
+      <HintPath>..\packages\System.IdentityModel.Tokens.Jwt.6.8.0\lib\net461\System.IdentityModel.Tokens.Jwt.dll</HintPath>
+    </Reference>
+    <Reference Include="System.Net.Http" />
+    <Reference Include="System.Runtime.CompilerServices.Unsafe, Version=4.0.3.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
+      <HintPath>..\packages\System.Runtime.CompilerServices.Unsafe.4.4.0\lib\netstandard2.0\System.Runtime.CompilerServices.Unsafe.dll</HintPath>
+    </Reference>
+    <Reference Include="System.Runtime.Serialization" />
+    <Reference Include="System.Security" />
+    <Reference Include="System.ValueTuple, Version=4.0.2.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
+      <HintPath>..\packages\System.ValueTuple.4.4.0\lib\net47\System.ValueTuple.dll</HintPath>
+    </Reference>
+    <Reference Include="System.Windows.Forms" />
+    <Reference Include="System.Xml" />
+    <Reference Include="System.Xml.Linq" />
+    <Reference Include="WindowsBase" />
+    <Reference Include="Xceed.Wpf.AvalonDock, Version=4.2.0.0, Culture=neutral, PublicKeyToken=3e4669d2f30244f4, processorArchitecture=MSIL">
+      <HintPath>..\packages\Extended.Wpf.Toolkit.4.2.0\lib\net40\Xceed.Wpf.AvalonDock.dll</HintPath>
+    </Reference>
+    <Reference Include="Xceed.Wpf.AvalonDock.Themes.Aero, Version=4.2.0.0, Culture=neutral, PublicKeyToken=3e4669d2f30244f4, processorArchitecture=MSIL">
+      <HintPath>..\packages\Extended.Wpf.Toolkit.4.2.0\lib\net40\Xceed.Wpf.AvalonDock.Themes.Aero.dll</HintPath>
+    </Reference>
+    <Reference Include="Xceed.Wpf.AvalonDock.Themes.Metro, Version=4.2.0.0, Culture=neutral, PublicKeyToken=3e4669d2f30244f4, processorArchitecture=MSIL">
+      <HintPath>..\packages\Extended.Wpf.Toolkit.4.2.0\lib\net40\Xceed.Wpf.AvalonDock.Themes.Metro.dll</HintPath>
+    </Reference>
+    <Reference Include="Xceed.Wpf.AvalonDock.Themes.VS2010, Version=4.2.0.0, Culture=neutral, PublicKeyToken=3e4669d2f30244f4, processorArchitecture=MSIL">
+      <HintPath>..\packages\Extended.Wpf.Toolkit.4.2.0\lib\net40\Xceed.Wpf.AvalonDock.Themes.VS2010.dll</HintPath>
+    </Reference>
+    <Reference Include="Xceed.Wpf.Toolkit, Version=4.2.0.0, Culture=neutral, PublicKeyToken=3e4669d2f30244f4, processorArchitecture=MSIL">
+      <HintPath>..\packages\Extended.Wpf.Toolkit.4.2.0\lib\net40\Xceed.Wpf.Toolkit.dll</HintPath>
+    </Reference>
+  </ItemGroup>
+  <ItemGroup>
+    <Compile Include="ProOdezhdaTest.cs" />
+    <Compile Include="Properties\AssemblyInfo.cs" />
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="App.Config" />
+    <None Include="packages.config" />
+  </ItemGroup>
+  <ItemGroup>
+    <ProjectReference Include="..\ProOdezhda\ProOdezhda.csproj">
+      <Project>{dd20b3d5-3680-4500-bd9b-eab310e5c770}</Project>
+      <Name>ProOdezhda</Name>
+    </ProjectReference>
+  </ItemGroup>
+  <ItemGroup>
+    <Service Include="{508349B6-6B84-4DF5-91F0-309BEEBAD82D}" />
+  </ItemGroup>
+  <Import Project="$(VSToolsPath)\TeamTest\Microsoft.TestTools.targets" Condition="Exists('$(VSToolsPath)\TeamTest\Microsoft.TestTools.targets')" />
+  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
+  <Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
+    <PropertyGroup>
+      <ErrorText>Данный проект ссылается на пакеты NuGet, отсутствующие на этом компьютере. Используйте восстановление пакетов NuGet, чтобы скачать их.  Дополнительную информацию см. по адресу: http://go.microsoft.com/fwlink/?LinkID=322105. Отсутствует следующий файл: {0}.</ErrorText>
+    </PropertyGroup>
+    <Error Condition="!Exists('..\packages\MSTest.TestAdapter.2.1.2\build\net45\MSTest.TestAdapter.props')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\MSTest.TestAdapter.2.1.2\build\net45\MSTest.TestAdapter.props'))" />
+    <Error Condition="!Exists('..\packages\MSTest.TestAdapter.2.1.2\build\net45\MSTest.TestAdapter.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\MSTest.TestAdapter.2.1.2\build\net45\MSTest.TestAdapter.targets'))" />
+    <Error Condition="!Exists('..\packages\MaterialDesignThemes.4.4.0-ci24-ci24\build\MaterialDesignThemes.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\MaterialDesignThemes.4.4.0-ci24-ci24\build\MaterialDesignThemes.targets'))" />
+    <Error Condition="!Exists('..\packages\Microsoft.Data.SqlClient.SNI.2.1.1\build\net46\Microsoft.Data.SqlClient.SNI.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\Microsoft.Data.SqlClient.SNI.2.1.1\build\net46\Microsoft.Data.SqlClient.SNI.targets'))" />
+  </Target>
+  <Import Project="..\packages\MSTest.TestAdapter.2.1.2\build\net45\MSTest.TestAdapter.targets" Condition="Exists('..\packages\MSTest.TestAdapter.2.1.2\build\net45\MSTest.TestAdapter.targets')" />
+  <Import Project="..\packages\MaterialDesignThemes.4.4.0-ci24-ci24\build\MaterialDesignThemes.targets" Condition="Exists('..\packages\MaterialDesignThemes.4.4.0-ci24-ci24\build\MaterialDesignThemes.targets')" />
+  <Import Project="..\packages\Microsoft.Data.SqlClient.SNI.2.1.1\build\net46\Microsoft.Data.SqlClient.SNI.targets" Condition="Exists('..\packages\Microsoft.Data.SqlClient.SNI.2.1.1\build\net46\Microsoft.Data.SqlClient.SNI.targets')" />
+</Project>

+ 20 - 0
ProOdezhdaTest/Properties/AssemblyInfo.cs

@@ -0,0 +1,20 @@
+using System.Reflection;
+using System.Runtime.CompilerServices;
+using System.Runtime.InteropServices;
+
+[assembly: AssemblyTitle("ProOdezhdaTest")]
+[assembly: AssemblyDescription("")]
+[assembly: AssemblyConfiguration("")]
+[assembly: AssemblyCompany("")]
+[assembly: AssemblyProduct("ProOdezhdaTest")]
+[assembly: AssemblyCopyright("Copyright ©  2021")]
+[assembly: AssemblyTrademark("")]
+[assembly: AssemblyCulture("")]
+
+[assembly: ComVisible(false)]
+
+[assembly: Guid("b4c278c1-e22a-4b64-b57e-aaccc3ce4868")]
+
+// [assembly: AssemblyVersion("1.0.*")]
+[assembly: AssemblyVersion("1.0.0.0")]
+[assembly: AssemblyFileVersion("1.0.0.0")]

+ 32 - 0
ProOdezhdaTest/packages.config

@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="utf-8"?>
+<packages>
+  <package id="EntityFramework" version="6.2.0" targetFramework="net472" />
+  <package id="EntityFramework.ru" version="6.2.0" targetFramework="net472" />
+  <package id="Extended.Wpf.Toolkit" version="4.2.0" targetFramework="net472" />
+  <package id="FluentMigrator.Abstractions" version="3.3.1" targetFramework="net472" />
+  <package id="FluentMigrator.Extensions.SqlServer" version="3.3.1" targetFramework="net472" />
+  <package id="FluentMigrator.Runner.Core" version="3.3.1" targetFramework="net472" />
+  <package id="FluentMigrator.Runner.SqlServer" version="3.3.1" targetFramework="net472" />
+  <package id="MaterialDesignColors" version="2.0.5-ci24-ci24" targetFramework="net472" />
+  <package id="MaterialDesignThemes" version="4.4.0-ci24-ci24" targetFramework="net472" />
+  <package id="Microsoft.Data.SqlClient" version="2.1.2" targetFramework="net472" />
+  <package id="Microsoft.Data.SqlClient.SNI" version="2.1.1" targetFramework="net472" />
+  <package id="Microsoft.Extensions.Configuration.Abstractions" version="2.0.1" targetFramework="net472" />
+  <package id="Microsoft.Extensions.DependencyInjection" version="2.0.0" targetFramework="net472" />
+  <package id="Microsoft.Extensions.DependencyInjection.Abstractions" version="2.0.0" targetFramework="net472" />
+  <package id="Microsoft.Extensions.Logging.Abstractions" version="2.0.1" targetFramework="net472" />
+  <package id="Microsoft.Extensions.Options" version="2.0.1" targetFramework="net472" />
+  <package id="Microsoft.Extensions.Primitives" version="2.0.0" targetFramework="net472" />
+  <package id="Microsoft.Identity.Client" version="4.21.1" targetFramework="net472" />
+  <package id="Microsoft.IdentityModel.JsonWebTokens" version="6.8.0" targetFramework="net472" />
+  <package id="Microsoft.IdentityModel.Logging" version="6.8.0" targetFramework="net472" />
+  <package id="Microsoft.IdentityModel.Protocols" version="6.8.0" targetFramework="net472" />
+  <package id="Microsoft.IdentityModel.Protocols.OpenIdConnect" version="6.8.0" targetFramework="net472" />
+  <package id="Microsoft.IdentityModel.Tokens" version="6.8.0" targetFramework="net472" />
+  <package id="MSTest.TestAdapter" version="2.1.2" targetFramework="net472" />
+  <package id="MSTest.TestFramework" version="2.1.2" targetFramework="net472" />
+  <package id="System.ComponentModel.Annotations" version="4.4.1" targetFramework="net472" />
+  <package id="System.IdentityModel.Tokens.Jwt" version="6.8.0" targetFramework="net472" />
+  <package id="System.Runtime.CompilerServices.Unsafe" version="4.4.0" targetFramework="net472" />
+  <package id="System.ValueTuple" version="4.4.0" targetFramework="net472" />
+</packages>