Index: branches/Abonament/BazaReklam/ZamowieniaForm.cs
===================================================================
--- branches/Abonament/BazaReklam/ZamowieniaForm.cs (revision 703)
+++ branches/Abonament/BazaReklam/ZamowieniaForm.cs (revision 704)
@@ -4,8 +4,9 @@
 using System.Data.SqlClient;
 using System.Drawing;
+using System.Text;
 using System.Windows.Forms;
 using Baza_Reklam.Classes.Helpers;
 using Baza_Reklam.Classes.Interfaces;
-using Baza_Reklam.Classes.Model;
+using Baza_Reklam.Classes.Model.Enums;
 using Baza_Reklam.Classes.Repositories;
 
@@ -14,4 +15,8 @@
     public partial class ZamowieniaForm : Form
     {
+        private CustomerRepository customerRepository;
+        private List<IProduct> productsWithOrder = new List<IProduct>();
+        private List<IProduct> productsWithoutOrder = new List<IProduct>();
+        
         private REKLAMADataSet.KLIENCIRow klient;
 
@@ -57,5 +62,5 @@
         {
             InitializeComponent();
-            InitTableAdatpers();
+            InitTableAdatpers(klient.CustomerID);
 
             this.klient = klient;
@@ -65,5 +70,5 @@
         {
             InitializeComponent();
-            InitTableAdatpers();
+            InitTableAdatpers(idKlienta);
 
             klient = klienciTableAdapter.GetDataByCustomerId(idKlienta)[0];
@@ -73,5 +78,5 @@
         {
             InitializeComponent();
-            InitTableAdatpers();
+            InitTableAdatpers(idKlienta);
 
             klient = klienciTableAdapter.GetDataByCustomerId(idKlienta)[0];
@@ -80,6 +85,11 @@
         }
 
-        private void InitTableAdatpers()
-        {
+        private void InitTableAdatpers(int customerId)
+        {
+            customerRepository = new CustomerRepository(ConnString.getConnString().Value);
+
+            productsWithOrder = customerRepository.FindProductsWithOrders(customerId);
+            productsWithoutOrder = customerRepository.FindProductsWithoutOrders(customerId);
+
             rEKLAMABindingSource1.DataSource = ReklamyBezZamowienia;
             zamowieniaTableAdapter.Connection.ConnectionString = ConnString.getConnString().Value;
@@ -96,12 +106,21 @@
         }
 
+        private void BindProductsWithoutOrders()
+        {
+            rEKLAMADataGridView1.AutoGenerateColumns = false;
+            rEKLAMADataGridView1.DataSource = null;
+            rEKLAMADataGridView1.DataSource = productsWithoutOrder;
+        }
+
+        private void BindProductsWithOrders(int orderId)
+        {
+            rEKLAMADataGridView.AutoGenerateColumns = false;
+            rEKLAMADataGridView.DataSource = null;
+            rEKLAMADataGridView.DataSource = productsWithOrder.FindAll(delegate(IProduct p) { return p.OrderId == orderId; });
+        }
+
         private void ZamowieniaForm_Load(object sender, EventArgs e)
         {
-            CustomerRepository customerRepository = new CustomerRepository(ConnString.getConnString().Value);
-
-            
-            rEKLAMADataGridView1.AutoGenerateColumns = false;
-            rEKLAMADataGridView1.DataSource = customerRepository.FindProductsWithoutOrders(klient.CustomerID);
-            
+            BindProductsWithoutOrders();
             
             usunFaktureButton.Enabled = User.Instance().IsKierownik;
@@ -119,5 +138,7 @@
             {
                 zamowieniaBindingSource.Position = zamowieniaBindingSource.Find("idZamowienia", idZamowienia);
-                rEKLAMATableAdapter.FillByIdZamowienia(rEKLAMADataSet.REKLAMA, idZamowienia);
+
+                BindProductsWithOrders(idZamowienia);
+                
                 fAKTURYTableAdapter.FillByIdZamowienia(rEKLAMADataSet.FAKTURY, idZamowienia);
             }
@@ -182,120 +203,103 @@
         private void dodajDoZamButton_Click(object sender, EventArgs e)
         {
-            if (zamowieniaBindingSource.Current != null)
-            {
-                if (rEKLAMADataGridView1.SelectedRows.Count > 0)
-                {
-                    DataRowView z = (DataRowView)zamowieniaBindingSource.Current;
-                    REKLAMADataSet.zamowieniaRow zamowienie = (REKLAMADataSet.zamowieniaRow)z.Row;
-
-                    REKLAMADataSet.REKLAMARow row = (REKLAMADataSet.REKLAMARow)((DataRowView)rEKLAMADataGridView1.SelectedRows[0].DataBoundItem).Row;
-
-                    string s = string.Empty;
-
-                    s = CzyMoznaDodacDoZam(zamowienie,rEKLAMADataSet.REKLAMA, row, s);
-
-                    if (s != string.Empty)
+            if (zamowieniaBindingSource.Current == null || rEKLAMADataGridView1.SelectedRows.Count <= 0) return;
+
+            DataRowView z = (DataRowView) zamowieniaBindingSource.Current;
+            REKLAMADataSet.zamowieniaRow zamowienie = (REKLAMADataSet.zamowieniaRow) z.Row;
+
+            IProduct product = (IProduct) rEKLAMADataGridView1.SelectedRows[0].DataBoundItem;
+            
+            string s = string.Empty;
+            if (!CanAddProductToOrder(product, productsWithOrder, zamowienie, out s))
+            {
+                MessageBox.Show(s, "Baza Reklam - Zamówienia i faktury", MessageBoxButtons.OK, MessageBoxIcon.Error);
+                return;
+            }
+
+            //TODO: move that piece to separate method
+            if (product.ProductType == ProductType.Advertisment)
+            {
+                if (zamowienie.IsidKontaNull())
+                {
+                    // zmiana domylnego konta do faktury dla EUR
+                    if (User.Instance().IdAgencji != 4 && product.Currency == "EUR")
                     {
-                        s += "\n Reklamy nie mog¹ byæ w obrêbie jednego zamówienia";
-                        MessageBox.Show(s, "", MessageBoxButtons.OK, MessageBoxIcon.Error);
-                        return;
+                        if (User.Instance().IdAgencji == 1223940396 || User.Instance().IdAgencji == 1223940398)
+                            zamowienie.idKonta = 3;
+                        else
+                            zamowienie.idKonta = 5;
+
+                        zamowieniaTableAdapter.Update(rEKLAMADataSet.zamowienia);
                     }
-
-                    row.idZamowienia = zamowienie.idZamowienia;
-
-                    if (zamowienie.IsidKontaNull() && !row.IsBrutto_Euro_MianoNull())
-                    {
-                        // zmiana domylnego konta do faktury dla EUR
-                        if (User.Instance().IdAgencji != 4 & (row.Brutto_Euro_Miano == "EUR"))
-                        {
-                            if (User.Instance().IdAgencji == 1223940396 | User.Instance().IdAgencji == 1223940398)
-                            {
-                                zamowienie.idKonta = 3;
-                            }
-                            else
-                            {
-                                zamowienie.idKonta = 5;
-                            }
-                        }
-                    }
-
-                    rEKLAMADataSet.REKLAMA.ImportRow(row);
-                    ReklamyBezZamowienia.Rows.Remove(row);
-                    rEKLAMATableAdapter.Update(rEKLAMADataSet.REKLAMA);
-                    zamowieniaTableAdapter.Update(rEKLAMADataSet.zamowienia);
-                }
-            }
-        }
-
-        private string CzyMoznaDodacDoZam(REKLAMADataSet.zamowieniaRow zamowienie,
-            REKLAMADataSet.REKLAMADataTable reklamyWZamowieniu,
-            REKLAMADataSet.REKLAMARow row, string s)
-        {
-            if (zamowienie.zafakturowanoWszystko || zamowienie.zafakturowano)
-            {
-                s += "Zamówienie jest ju¿ zafakturowane.";
-            }
-
-            //sprawdzenie waluty i VAT
-            if (reklamyWZamowieniu.Count > 0)
-            {
-                REKLAMADataSet.REKLAMARow rek = reklamyWZamowieniu[0];
-
-                if (rek.IsBrutto_Euro_MianoNull() ^ row.IsBrutto_Euro_MianoNull())
-                {
-                    if ((rek.IsBrutto_Euro_MianoNull() || row.IsBrutto_Euro_MianoNull())
-                        ||
-                        (rek.Brutto_Euro_Miano != row.Brutto_Euro_Miano))
-                    {
-                        s += "Reklamy s¹ w ró¿nych walutach. \n";
-                    }
-                }
-
-                REKLAMADataSet.DatyWydanDataTable t = datyWydanTableAdapter.GetDataByPierwszaEmisjaWZamowieniu(zamowienie.idZamowienia);
-
-                if (t.Rows.Count == 0)
-                {
-                    s += "Reklama nie ma wybranych emisji. \n";
-                }
-                else
-                {
-                    if (!zamowienie.IsdataOstatniejZafakturowanejEmisjiNull())
-                    {
-                        if (t[0].DATA_W < zamowienie.dataOstatniejZafakturowanejEmisji)
-                        {
-                            s += "Reklama zawiera emisjê na okres, który ju¿ zosta³ zafakturowany";
-                        }
-                    }
-                }
-
-                if (rek.VAT != row.VAT)
-                {
-                    s += "Reklamy maj¹ ró¿ne stawki VAT. \n";
-                }
-            }
-            return s;
+                }
+            }
+
+            product.OrderId = zamowienie.idZamowienia;
+            customerRepository.AddProductToOrder(product);
+
+            productsWithoutOrder.Remove(product);
+            productsWithOrder.Add(product);
+
+            BindProductsWithOrders(zamowienie.idZamowienia);
+            BindProductsWithoutOrders();
+        }
+
+        private bool CanAddProductToOrder(IProduct product, List<IProduct> products, REKLAMADataSet.zamowieniaRow order, out string errorMessage)
+        {
+            StringBuilder sb = new StringBuilder();
+            bool canAddProduct = true;
+            
+            if (order.zafakturowanoWszystko || order.zafakturowano)
+            {
+                sb.AppendLine("Zamówienie jest ju¿ zafakturowane.");
+                canAddProduct = false;
+            }
+            
+            if (products.FindAll(delegate(IProduct p) { return p.Currency != product.Currency && p.OrderId == order.idZamowienia; }).Count > 0)
+            {
+                sb.AppendLine("Produkt jest w innej walucie ni¿ pozosta³e produkty w zamówieniu.");
+                canAddProduct = false;
+            }
+            if (products.FindAll(delegate(IProduct p) { return p.Vat != product.Vat && p.OrderId == order.idZamowienia; }).Count > 0)
+            {
+                sb.AppendLine("Produkt ma inn¹ stawkê VAT ni¿ pozosta³e produkty w zamówieniu.");
+                canAddProduct = false;
+            }
+
+            if(canAddProduct && product.ProductType == ProductType.Advertisment)
+            {
+                if (datyWydanTableAdapter.GetDataByPierwszaEmisjaWReklamie(product.Id).Rows.Count <= 0)
+                {
+                    sb.AppendLine("Reklama nie ma wybranych emisji.");
+                    canAddProduct = false;
+                }
+            }
+
+            errorMessage = sb.ToString();
+            return canAddProduct;
         }
 
         private void usunZZamButton_Click(object sender, EventArgs e)
         {
-            if (zamowieniaBindingSource.Current != null && rEKLAMADataGridView.SelectedRows.Count != 0)
-            {
-                DataRowView row = (DataRowView)rEKLAMADataGridView.SelectedRows[0].DataBoundItem;
-
-                if (Convert.ToBoolean(row["FAKTURA WYSTAWIONO"]))
-                {
-                    MessageBox.Show("Reklama ma zafakturowane emisje. Nie mo¿na usun¹æ reklamy.");
-                    return;
-                }
-
-                row["idZamowienia"] = DBNull.Value;
-                row.EndEdit();
-
-                ReklamyBezZamowienia.ImportRow(row.Row);
-                rEKLAMADataSet.REKLAMA.Rows.Remove(row.Row);
-
-                rEKLAMATableAdapter.Update(ReklamyBezZamowienia);
-                zamowieniaTableAdapter.Update(rEKLAMADataSet.zamowienia);
-            }
+            if (zamowieniaBindingSource.Current == null || rEKLAMADataGridView.SelectedRows.Count == 0) return;
+
+            IProduct product = (IProduct) rEKLAMADataGridView.SelectedRows[0].DataBoundItem;
+
+            if (product.HasInvoice)
+            {
+                MessageBox.Show("Wybrany produkt posiada ju¿ zafakturowane elementy. Nie mo¿na go usun¹æ.", 
+                                "Baza Reklam - Zamówienia i faktury");
+                return;
+            }
+
+            customerRepository.RemoveProductFromOrder(product);
+            
+            productsWithOrder.Remove(product);
+            int orderId = product.OrderId.Value;
+            product.OrderId = null;
+            productsWithoutOrder.Add(product);
+            
+            BindProductsWithOrders(orderId);
+            BindProductsWithoutOrders();
         }
 
@@ -1128,36 +1132,32 @@
         private void reklama1Button_Click(object sender, EventArgs e)
         {
-            if (rEKLAMABindingSource.Current != null)
-            {
-                DataRowView row = (DataRowView)rEKLAMABindingSource.Current;
-                REKLAMADataSet.REKLAMARow reklama = (REKLAMADataSet.REKLAMARow)row.Row;
-                int id = reklama.ReklamaID;
-
-                OrderDetails.getOrderDetails().pokazSzczegolyZamowienia(id);
-
-                if (OrderDetails.getOrderDetails().ShowDialog() == DialogResult.OK)
-                {
-                    rEKLAMATableAdapter.FillByIdZamowienia(rEKLAMADataSet.REKLAMA, reklama.idZamowienia);
-                    rEKLAMABindingSource.Position = rEKLAMABindingSource.Find("reklamaId", id);
-                }
-            }
+            if (rEKLAMADataGridView.SelectedRows.Count <= 0) return;
+
+            IProduct product = (IProduct) rEKLAMADataGridView.SelectedRows[0].DataBoundItem;
+            if (product.ProductType != ProductType.Advertisment) return;
+
+            OrderDetails.getOrderDetails().pokazSzczegolyZamowienia(product.Id);
+
+            if (OrderDetails.getOrderDetails().ShowDialog() != DialogResult.OK) return;
+
+            //refresh items
+            productsWithOrder = customerRepository.FindProductsWithOrders(klient.CustomerID);
+            BindProductsWithOrders(product.OrderId.Value);
         }
 
         private void reklama2Button_Click(object sender, EventArgs e)
         {
-            if (rEKLAMABindingSource1.Current != null)
-            {
-                DataRowView row = (DataRowView)rEKLAMABindingSource1.Current;
-                REKLAMADataSet.REKLAMARow reklama = (REKLAMADataSet.REKLAMARow)row.Row;
-                int id = reklama.ReklamaID;
-
-                OrderDetails.getOrderDetails().pokazSzczegolyZamowienia(id);
-                if (OrderDetails.getOrderDetails().ShowDialog() == DialogResult.OK)
-                {
-                    ReklamyBezZamowienia = rEKLAMATableAdapter.GetDataByCustomerIdandIdZamowienia(klient.CustomerID);
-                    rEKLAMABindingSource1.DataSource = ReklamyBezZamowienia;
-                    rEKLAMABindingSource1.Position = rEKLAMABindingSource1.Find("reklamaId", id);
-                }
-            }
+            if (rEKLAMADataGridView1.SelectedRows.Count <= 0) return;
+
+            IProduct product = (IProduct)rEKLAMADataGridView1.SelectedRows[0].DataBoundItem;
+            if (product.ProductType != ProductType.Advertisment) return;
+
+            OrderDetails.getOrderDetails().pokazSzczegolyZamowienia(product.Id);
+
+            if (OrderDetails.getOrderDetails().ShowDialog() != DialogResult.OK) return;
+
+            //refresh items
+            productsWithoutOrder = customerRepository.FindProductsWithoutOrders(klient.CustomerID);
+            BindProductsWithoutOrders();
         }
 
@@ -1171,30 +1171,32 @@
         private void zamowieniaBindingSource_CurrentChanged(object sender, EventArgs e)
         {
-            if (zamowieniaBindingSource.Current != null)
-            {
-                DataRowView z = (DataRowView)zamowieniaBindingSource.Current;
-                REKLAMADataSet.zamowieniaRow zamowienie = (REKLAMADataSet.zamowieniaRow)z.Row;
+            if (zamowieniaBindingSource.Current == null) return;
+            
+            
+            DataRowView z = (DataRowView)zamowieniaBindingSource.Current;
+            REKLAMADataSet.zamowieniaRow zamowienie = (REKLAMADataSet.zamowieniaRow)z.Row;
                 
-                rEKLAMATableAdapter.FillByIdZamowienia(rEKLAMADataSet.REKLAMA, zamowienie.idZamowienia);
-                fAKTURYTableAdapter.FillByIdZamowienia(rEKLAMADataSet.FAKTURY, zamowienie.idZamowienia);
-
-                dodajDoZamButton.Enabled = !zamowienie.zafakturowanoWszystko;
-                usunZZamButton.Enabled = !zamowienie.zafakturowanoWszystko;
-                fakturujButton.Enabled = !zamowienie.zafakturowanoWszystko;
-
-                if (!zamowienie.IsdataOstatniejZafakturowanejEmisjiNull())
-                {
-                    DateTime data = zamowienie.dataOstatniejZafakturowanejEmisji;
-                    DateTime dzis = DateTime.Today;
-
-                    if ((dzis.Year > data.Year) ||
-                        (dzis.Year == data.Year & dzis.Month > data.Month))
-                    {
-                        fakturujButton.Enabled = true;
-                    }
-                    else
-                    {
-                        fakturujButton.Enabled = false;
-                    }
+            //rEKLAMATableAdapter.FillByIdZamowienia(rEKLAMADataSet.REKLAMA, zamowienie.idZamowienia);
+            BindProductsWithOrders(zamowienie.idZamowienia);
+
+            fAKTURYTableAdapter.FillByIdZamowienia(rEKLAMADataSet.FAKTURY, zamowienie.idZamowienia);
+
+            dodajDoZamButton.Enabled = !zamowienie.zafakturowanoWszystko;
+            usunZZamButton.Enabled = !zamowienie.zafakturowanoWszystko;
+            fakturujButton.Enabled = !zamowienie.zafakturowanoWszystko;
+
+            if (!zamowienie.IsdataOstatniejZafakturowanejEmisjiNull())
+            {
+                DateTime data = zamowienie.dataOstatniejZafakturowanejEmisji;
+                DateTime dzis = DateTime.Today;
+
+                if ((dzis.Year > data.Year) ||
+                    (dzis.Year == data.Year & dzis.Month > data.Month))
+                {
+                    fakturujButton.Enabled = true;
+                }
+                else
+                {
+                    fakturujButton.Enabled = false;
                 }
             }
Index: branches/Abonament/BazaReklam/Baza Reklam.csproj
===================================================================
--- branches/Abonament/BazaReklam/Baza Reklam.csproj (revision 703)
+++ branches/Abonament/BazaReklam/Baza Reklam.csproj (revision 704)
@@ -142,4 +142,5 @@
     <Compile Include="Classes\Interfaces\IForm.cs" />
     <Compile Include="Classes\Interfaces\IProduct.cs" />
+    <Compile Include="Classes\Model\Enums\ProductType.cs" />
     <Compile Include="Classes\Model\Product.cs" />
     <Compile Include="Classes\Model\Agent.cs" />
Index: branches/Abonament/BazaReklam/ZamowieniaForm.Designer.cs
===================================================================
--- branches/Abonament/BazaReklam/ZamowieniaForm.Designer.cs (revision 703)
+++ branches/Abonament/BazaReklam/ZamowieniaForm.Designer.cs (revision 704)
@@ -33,10 +33,11 @@
             System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle2 = new System.Windows.Forms.DataGridViewCellStyle();
             System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle3 = new System.Windows.Forms.DataGridViewCellStyle();
-            System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle4 = new System.Windows.Forms.DataGridViewCellStyle();
             System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle5 = new System.Windows.Forms.DataGridViewCellStyle();
             System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle6 = new System.Windows.Forms.DataGridViewCellStyle();
             System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(ZamowieniaForm));
+            System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle9 = new System.Windows.Forms.DataGridViewCellStyle();
+            System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle4 = new System.Windows.Forms.DataGridViewCellStyle();
+            System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle7 = new System.Windows.Forms.DataGridViewCellStyle();
             System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle8 = new System.Windows.Forms.DataGridViewCellStyle();
-            System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle7 = new System.Windows.Forms.DataGridViewCellStyle();
             this.zamowieniaDataGridView = new System.Windows.Forms.DataGridView();
             this.dataGridViewCheckBoxColumn1 = new System.Windows.Forms.DataGridViewCheckBoxColumn();
@@ -48,10 +49,4 @@
             this.rEKLAMADataSet = new Baza_Reklam.REKLAMADataSet();
             this.rEKLAMADataGridView = new System.Windows.Forms.DataGridView();
-            this.dataGridViewTextBoxColumn9 = new System.Windows.Forms.DataGridViewTextBoxColumn();
-            this.TYP = new System.Windows.Forms.DataGridViewTextBoxColumn();
-            this.dataGridViewTextBoxColumn27 = new System.Windows.Forms.DataGridViewTextBoxColumn();
-            this.VAT = new System.Windows.Forms.DataGridViewTextBoxColumn();
-            this.Brutto_Euro_Miano = new System.Windows.Forms.DataGridViewTextBoxColumn();
-            this.ZATWIERDZONO_DO_DRUKU = new System.Windows.Forms.DataGridViewCheckBoxColumn();
             this.rEKLAMABindingSource = new System.Windows.Forms.BindingSource(this.components);
             this.rEKLAMADataGridView1 = new System.Windows.Forms.DataGridView();
@@ -94,5 +89,11 @@
             this.toolTip = new System.Windows.Forms.ToolTip(this.components);
             this.KlientLabel = new System.Windows.Forms.Label();
+            this.TYP = new System.Windows.Forms.DataGridViewTextBoxColumn();
+            this.ShortName = new System.Windows.Forms.DataGridViewTextBoxColumn();
+            this.VAT = new System.Windows.Forms.DataGridViewTextBoxColumn();
+            this.Brutto_Euro_Miano = new System.Windows.Forms.DataGridViewTextBoxColumn();
+            this.ZATWIERDZONO_DO_DRUKU = new System.Windows.Forms.DataGridViewCheckBoxColumn();
             this.Data1Emisji = new System.Windows.Forms.DataGridViewTextBoxColumn();
+            this.ShortName1 = new System.Windows.Forms.DataGridViewTextBoxColumn();
             this.dataGridViewTextBoxColumn1 = new System.Windows.Forms.DataGridViewTextBoxColumn();
             this.dataGridViewTextBoxColumn43 = new System.Windows.Forms.DataGridViewTextBoxColumn();
@@ -202,5 +203,4 @@
             this.rEKLAMADataGridView.AllowUserToAddRows = false;
             this.rEKLAMADataGridView.AllowUserToDeleteRows = false;
-            this.rEKLAMADataGridView.AutoGenerateColumns = false;
             this.rEKLAMADataGridView.AutoSizeColumnsMode = System.Windows.Forms.DataGridViewAutoSizeColumnsMode.Fill;
             this.rEKLAMADataGridView.BackgroundColor = System.Drawing.Color.White;
@@ -215,11 +215,9 @@
             this.rEKLAMADataGridView.ColumnHeadersDefaultCellStyle = dataGridViewCellStyle3;
             this.rEKLAMADataGridView.Columns.AddRange(new System.Windows.Forms.DataGridViewColumn[] {
-            this.dataGridViewTextBoxColumn9,
             this.TYP,
-            this.dataGridViewTextBoxColumn27,
+            this.ShortName,
             this.VAT,
             this.Brutto_Euro_Miano,
             this.ZATWIERDZONO_DO_DRUKU});
-            this.rEKLAMADataGridView.DataSource = this.rEKLAMABindingSource;
             this.rEKLAMADataGridView.Location = new System.Drawing.Point(6, 33);
             this.rEKLAMADataGridView.MultiSelect = false;
@@ -230,53 +228,4 @@
             this.rEKLAMADataGridView.Size = new System.Drawing.Size(379, 173);
             this.rEKLAMADataGridView.TabIndex = 1;
-            // 
-            // dataGridViewTextBoxColumn9
-            // 
-            this.dataGridViewTextBoxColumn9.DataPropertyName = "ID REKLAMY";
-            this.dataGridViewTextBoxColumn9.HeaderText = "Symbol";
-            this.dataGridViewTextBoxColumn9.Name = "dataGridViewTextBoxColumn9";
-            this.dataGridViewTextBoxColumn9.ReadOnly = true;
-            // 
-            // TYP
-            // 
-            this.TYP.AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.None;
-            this.TYP.DataPropertyName = "TYP";
-            this.TYP.HeaderText = "TYP";
-            this.TYP.Name = "TYP";
-            this.TYP.ReadOnly = true;
-            this.TYP.Width = 50;
-            // 
-            // dataGridViewTextBoxColumn27
-            // 
-            this.dataGridViewTextBoxColumn27.DataPropertyName = "NETTO";
-            this.dataGridViewTextBoxColumn27.HeaderText = "NETTO";
-            this.dataGridViewTextBoxColumn27.Name = "dataGridViewTextBoxColumn27";
-            this.dataGridViewTextBoxColumn27.ReadOnly = true;
-            // 
-            // VAT
-            // 
-            this.VAT.DataPropertyName = "VAT";
-            dataGridViewCellStyle4.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleCenter;
-            dataGridViewCellStyle4.Format = "P";
-            this.VAT.DefaultCellStyle = dataGridViewCellStyle4;
-            this.VAT.HeaderText = "VAT";
-            this.VAT.Name = "VAT";
-            this.VAT.ReadOnly = true;
-            // 
-            // Brutto_Euro_Miano
-            // 
-            this.Brutto_Euro_Miano.DataPropertyName = "Brutto_Euro_Miano";
-            this.Brutto_Euro_Miano.HeaderText = "Waluta";
-            this.Brutto_Euro_Miano.Name = "Brutto_Euro_Miano";
-            this.Brutto_Euro_Miano.ReadOnly = true;
-            // 
-            // ZATWIERDZONO_DO_DRUKU
-            // 
-            this.ZATWIERDZONO_DO_DRUKU.AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.None;
-            this.ZATWIERDZONO_DO_DRUKU.DataPropertyName = "ZATWIERDZONO DO DRUKU";
-            this.ZATWIERDZONO_DO_DRUKU.HeaderText = "ZD";
-            this.ZATWIERDZONO_DO_DRUKU.Name = "ZATWIERDZONO_DO_DRUKU";
-            this.ZATWIERDZONO_DO_DRUKU.ReadOnly = true;
-            this.ZATWIERDZONO_DO_DRUKU.Width = 25;
             // 
             // rEKLAMABindingSource
@@ -304,4 +253,5 @@
             this.rEKLAMADataGridView1.Columns.AddRange(new System.Windows.Forms.DataGridViewColumn[] {
             this.Data1Emisji,
+            this.ShortName1,
             this.dataGridViewTextBoxColumn1,
             this.dataGridViewTextBoxColumn43,
@@ -385,6 +335,6 @@
             this.fAKTURYDataGridView.AllowUserToAddRows = false;
             this.fAKTURYDataGridView.AllowUserToDeleteRows = false;
-            dataGridViewCellStyle8.BackColor = System.Drawing.Color.MintCream;
-            this.fAKTURYDataGridView.AlternatingRowsDefaultCellStyle = dataGridViewCellStyle8;
+            dataGridViewCellStyle9.BackColor = System.Drawing.Color.MintCream;
+            this.fAKTURYDataGridView.AlternatingRowsDefaultCellStyle = dataGridViewCellStyle9;
             this.fAKTURYDataGridView.AutoGenerateColumns = false;
             this.fAKTURYDataGridView.AutoSizeColumnsMode = System.Windows.Forms.DataGridViewAutoSizeColumnsMode.Fill;
@@ -708,10 +658,62 @@
             this.KlientLabel.Text = "----";
             // 
+            // TYP
+            // 
+            this.TYP.AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.None;
+            this.TYP.DataPropertyName = "Type";
+            this.TYP.HeaderText = "Typ";
+            this.TYP.Name = "TYP";
+            this.TYP.ReadOnly = true;
+            this.TYP.Width = 50;
+            // 
+            // ShortName
+            // 
+            this.ShortName.DataPropertyName = "ShortName";
+            this.ShortName.HeaderText = "Symbol";
+            this.ShortName.Name = "ShortName";
+            this.ShortName.ReadOnly = true;
+            // 
+            // VAT
+            // 
+            this.VAT.DataPropertyName = "Vat";
+            dataGridViewCellStyle4.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleCenter;
+            dataGridViewCellStyle4.Format = "P";
+            this.VAT.DefaultCellStyle = dataGridViewCellStyle4;
+            this.VAT.HeaderText = "Vat";
+            this.VAT.Name = "VAT";
+            this.VAT.ReadOnly = true;
+            // 
+            // Brutto_Euro_Miano
+            // 
+            this.Brutto_Euro_Miano.DataPropertyName = "Currency";
+            this.Brutto_Euro_Miano.HeaderText = "Waluta";
+            this.Brutto_Euro_Miano.Name = "Brutto_Euro_Miano";
+            this.Brutto_Euro_Miano.ReadOnly = true;
+            // 
+            // ZATWIERDZONO_DO_DRUKU
+            // 
+            this.ZATWIERDZONO_DO_DRUKU.AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.None;
+            this.ZATWIERDZONO_DO_DRUKU.DataPropertyName = "IsActivated";
+            this.ZATWIERDZONO_DO_DRUKU.HeaderText = "ZD";
+            this.ZATWIERDZONO_DO_DRUKU.Name = "ZATWIERDZONO_DO_DRUKU";
+            this.ZATWIERDZONO_DO_DRUKU.ReadOnly = true;
+            this.ZATWIERDZONO_DO_DRUKU.Width = 25;
+            // 
             // Data1Emisji
             // 
             this.Data1Emisji.DataPropertyName = "StartDate";
+            dataGridViewCellStyle7.Format = "d";
+            dataGridViewCellStyle7.NullValue = null;
+            this.Data1Emisji.DefaultCellStyle = dataGridViewCellStyle7;
             this.Data1Emisji.HeaderText = "1 Emisja";
             this.Data1Emisji.Name = "Data1Emisji";
             this.Data1Emisji.ReadOnly = true;
+            // 
+            // ShortName1
+            // 
+            this.ShortName1.DataPropertyName = "ShortName";
+            this.ShortName1.HeaderText = "Symbol";
+            this.ShortName1.Name = "ShortName1";
+            this.ShortName1.ReadOnly = true;
             // 
             // dataGridViewTextBoxColumn1
@@ -727,7 +729,7 @@
             // 
             this.dataGridViewTextBoxColumn43.DataPropertyName = "Vat";
-            dataGridViewCellStyle7.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleCenter;
-            dataGridViewCellStyle7.Format = "P";
-            this.dataGridViewTextBoxColumn43.DefaultCellStyle = dataGridViewCellStyle7;
+            dataGridViewCellStyle8.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleCenter;
+            dataGridViewCellStyle8.Format = "P";
+            this.dataGridViewTextBoxColumn43.DefaultCellStyle = dataGridViewCellStyle8;
             this.dataGridViewTextBoxColumn43.HeaderText = "Vat";
             this.dataGridViewTextBoxColumn43.Name = "dataGridViewTextBoxColumn43";
@@ -816,10 +818,4 @@
         private System.Windows.Forms.Button reklama2Button;
         private System.Windows.Forms.Button reklama1Button;
-        private System.Windows.Forms.DataGridViewTextBoxColumn dataGridViewTextBoxColumn9;
-        private System.Windows.Forms.DataGridViewTextBoxColumn TYP;
-        private System.Windows.Forms.DataGridViewTextBoxColumn dataGridViewTextBoxColumn27;
-        private System.Windows.Forms.DataGridViewTextBoxColumn VAT;
-        private System.Windows.Forms.DataGridViewTextBoxColumn Brutto_Euro_Miano;
-        private System.Windows.Forms.DataGridViewCheckBoxColumn ZATWIERDZONO_DO_DRUKU;
         private System.Windows.Forms.Button usunFaktureButton;
         private System.Windows.Forms.DateTimePicker dtpZmianaDaty;
@@ -841,5 +837,11 @@
         private System.Windows.Forms.DataGridViewTextBoxColumn kodAgenta;
         private System.Windows.Forms.Button proformaButton;
+        private System.Windows.Forms.DataGridViewTextBoxColumn TYP;
+        private System.Windows.Forms.DataGridViewTextBoxColumn ShortName;
+        private System.Windows.Forms.DataGridViewTextBoxColumn VAT;
+        private System.Windows.Forms.DataGridViewTextBoxColumn Brutto_Euro_Miano;
+        private System.Windows.Forms.DataGridViewCheckBoxColumn ZATWIERDZONO_DO_DRUKU;
         private System.Windows.Forms.DataGridViewTextBoxColumn Data1Emisji;
+        private System.Windows.Forms.DataGridViewTextBoxColumn ShortName1;
         private System.Windows.Forms.DataGridViewTextBoxColumn dataGridViewTextBoxColumn1;
         private System.Windows.Forms.DataGridViewTextBoxColumn dataGridViewTextBoxColumn43;
Index: branches/Abonament/BazaReklam/ZamowieniaForm.resx
===================================================================
--- branches/Abonament/BazaReklam/ZamowieniaForm.resx (revision 703)
+++ branches/Abonament/BazaReklam/ZamowieniaForm.resx (revision 704)
@@ -139,4 +139,7 @@
     <value>True</value>
   </metadata>
+  <metadata name="ShortName.UserAddedColumn" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+    <value>True</value>
+  </metadata>
   <metadata name="VAT.UserAddedColumn" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
     <value>True</value>
@@ -152,4 +155,7 @@
   </metadata>
   <metadata name="Data1Emisji.UserAddedColumn" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+    <value>True</value>
+  </metadata>
+  <metadata name="ShortName1.UserAddedColumn" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
     <value>True</value>
   </metadata>
@@ -540,5 +546,5 @@
   </data>
   <metadata name="$this.TrayHeight" type="System.Int32, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
-    <value>183</value>
+    <value>87</value>
   </metadata>
 </root>
Index: branches/Abonament/BazaReklam/Classes/Interfaces/IProduct.cs
===================================================================
--- branches/Abonament/BazaReklam/Classes/Interfaces/IProduct.cs (revision 703)
+++ branches/Abonament/BazaReklam/Classes/Interfaces/IProduct.cs (revision 704)
@@ -1,3 +1,4 @@
 using System;
+using Baza_Reklam.Classes.Model.Enums;
 
 namespace Baza_Reklam.Classes.Interfaces
@@ -6,4 +7,5 @@
     {
         int Id { get; set; }
+        ProductType ProductType { get; set; }
         string Type { get; set; }
         string ShortName { get; set; }
@@ -14,4 +16,6 @@
         string Currency { get; set; }
         bool IsActivated { get; set; }
+        int? OrderId { get; set; }
+        bool HasInvoice { get; set; }
     }
 }
Index: branches/Abonament/BazaReklam/Classes/Repositories/CustomerRepository.cs
===================================================================
--- branches/Abonament/BazaReklam/Classes/Repositories/CustomerRepository.cs (revision 703)
+++ branches/Abonament/BazaReklam/Classes/Repositories/CustomerRepository.cs (revision 704)
@@ -5,4 +5,5 @@
 using Baza_Reklam.Classes.Interfaces;
 using Baza_Reklam.Classes.Model;
+using Baza_Reklam.Classes.Model.Enums;
 
 namespace Baza_Reklam.Classes.Repositories
@@ -177,12 +178,14 @@
                         product.Id = _reader.GetInt32(0);
                         product.Type = _reader.GetString(1);
-                        product.ShortName = _reader.GetString(2);
-                        product.StartDate = _reader.GetDateTime(3);
-                        product.Price = _reader.GetDecimal(4);
-                        product.TotalPrice = _reader.GetDecimal(5);
-                        product.Vat = _reader.GetDecimal(6);
-                        product.Currency = _reader.GetString(7);
-                        product.IsActivated = _reader.GetBoolean(8);
-                        
+                        product.ProductType = (ProductType)_reader.GetInt32(2);
+                        product.ShortName = _reader.GetString(3);
+                        product.StartDate = _reader.GetDateTime(4);
+                        product.Price = _reader.GetDecimal(5);
+                        product.TotalPrice = _reader.GetDecimal(6);
+                        product.Vat = _reader.GetDecimal(7);
+                        product.Currency = _reader.GetString(8);
+                        product.IsActivated = _reader.GetBoolean(9);
+                        product.HasInvoice = _reader.GetBoolean(10);
+
                         products.Add(product);
                     }
@@ -196,4 +199,90 @@
             return products;
         }
+
+        public List<IProduct> FindProductsWithOrders(int clientId)
+        {
+
+            List<IProduct> products = new List<IProduct>();
+
+            const string query = "sp_GetProductsWithOrder";
+
+            try
+            {
+                _connection.Open();
+                _command = new SqlCommand(query, _connection);
+                _command.Parameters.AddWithValue("@clientId", clientId);
+                _command.CommandType = CommandType.StoredProcedure;
+
+                _reader = _command.ExecuteReader();
+                if (_reader != null)
+                {
+                    while (_reader.Read())
+                    {
+                        Product product = new Product();
+                        product.Id = _reader.GetInt32(0);
+                        product.Type = _reader.GetString(1);
+                        product.ProductType = (ProductType) _reader.GetInt32(2);
+                        product.ShortName = _reader.GetString(3);
+                        product.StartDate = _reader.GetDateTime(4);
+                        product.Price = _reader.GetDecimal(5);
+                        product.TotalPrice = _reader.GetDecimal(6);
+                        product.Vat = _reader.GetDecimal(7);
+                        product.Currency = _reader.GetString(8);
+                        product.IsActivated = _reader.GetBoolean(9);
+                        if (_reader[10] != DBNull.Value)
+                            product.OrderId = _reader.GetInt32(10);
+                        product.HasInvoice = _reader.GetBoolean(11);
+
+                        products.Add(product);
+                    }
+                }
+            }
+            finally
+            {
+                CleanUp();
+            }
+
+            return products;
+        }
+
+        public void RemoveProductFromOrder(IProduct product)
+        {
+            const string query = "sp_RemoveProductFromOrder";
+            try
+            {
+                _connection.Open();
+                _command = new SqlCommand(query, _connection);
+                _command.Parameters.AddWithValue("@productId", product.Id);
+                _command.Parameters.AddWithValue("@productType", product.ProductType);
+                _command.CommandType = CommandType.StoredProcedure;
+
+                _command.ExecuteNonQuery();
+            }
+            finally
+            {
+                CleanUp();
+            }
+        }
+
+        public void AddProductToOrder(IProduct product)
+        {
+            const string query = "sp_AddProductToOrder";
+            try
+            {
+                _connection.Open();
+                _command = new SqlCommand(query, _connection);
+                _command.Parameters.AddWithValue("@productId", product.Id);
+                _command.Parameters.AddWithValue("@productType", product.ProductType);
+                _command.Parameters.AddWithValue("@orderId", product.OrderId);
+                _command.CommandType = CommandType.StoredProcedure;
+
+                _command.ExecuteNonQuery();
+            }
+            finally
+            {
+                CleanUp();
+            }
+        }
+
     }
 }
Index: branches/Abonament/BazaReklam/Classes/Model/Product.cs
===================================================================
--- branches/Abonament/BazaReklam/Classes/Model/Product.cs (revision 703)
+++ branches/Abonament/BazaReklam/Classes/Model/Product.cs (revision 704)
@@ -1,4 +1,5 @@
 using System;
 using Baza_Reklam.Classes.Interfaces;
+using Baza_Reklam.Classes.Model.Enums;
 
 namespace Baza_Reklam.Classes.Model
@@ -7,4 +8,5 @@
     {
         private int _id;
+        private ProductType _productType;
         private string _type;
         private string _shortName;
@@ -15,8 +17,17 @@
         private string _currency;
         private bool _isActivated;
+        private int? _orderId;
+        private bool _hasInvoice;
+
         public int Id
         {
             get { return _id; }
             set { _id = value; }
+        }
+
+        public ProductType ProductType
+        {
+            get { return _productType; }
+            set { _productType = value; }
         }
 
@@ -68,4 +79,16 @@
             set { _isActivated = value; }
         }
+
+        public int? OrderId
+        {
+            get { return _orderId; }
+            set { _orderId = value; }
+        }
+
+        public bool HasInvoice
+        {
+            get { return _hasInvoice; }
+            set { _hasInvoice = value; }
+        }
     }
 }
Index: branches/Abonament/BazaReklam/Classes/Model/Enums/ProductType.cs
===================================================================
--- branches/Abonament/BazaReklam/Classes/Model/Enums/ProductType.cs (revision 704)
+++ branches/Abonament/BazaReklam/Classes/Model/Enums/ProductType.cs (revision 704)
@@ -0,0 +1,8 @@
+namespace Baza_Reklam.Classes.Model.Enums
+{
+    public enum ProductType
+    {
+        Advertisment = 1,
+        Subscription = 2
+    }
+}
