root/Baza Reklam 2 - Faktury/ZamowieniaForm.cs @ 33

Wersja 33, 57.5 KB (wprowadzona przez dorota, 17 years temu)
RevLine 
[2]1using System;
2using System.Collections.Generic;
3using System.ComponentModel;
4using System.Data;
5using System.Data.SqlClient;
6using System.Drawing;
7using System.Text;
8using System.Windows.Forms;
9
10namespace Baza_Reklam
11{
12    public partial class ZamowieniaForm : Form
13    {
14        private REKLAMADataSet.KLIENCIRow klient;
15
16        private int idZamowienia = 0;
17        private int idFaktury = 0;
18
19        private REKLAMADataSet.REKLAMADataTable reklamyBezZamowienia;
20
21        private REKLAMADataSetTableAdapters.KLIENCITableAdapter klienciTableAdapter =
22            new REKLAMADataSetTableAdapters.KLIENCITableAdapter();
23
24        private SLOWNIKDataSetTableAdapters.AGENCJETableAdapter agencjeTableAdapter =
25            new SLOWNIKDataSetTableAdapters.AGENCJETableAdapter();
26
27        private SLOWNIKDataSetTableAdapters.AGENCITableAdapter agenciTableAdapter =
28            new SLOWNIKDataSetTableAdapters.AGENCITableAdapter();
29
30        private REKLAMADataSetTableAdapters.UKAZE_SIE_W_NRTableAdapter emisjeTableAdapter =
31            new Baza_Reklam.REKLAMADataSetTableAdapters.UKAZE_SIE_W_NRTableAdapter();
32
33        private REKLAMADataSetTableAdapters.FAKTURA_DETAILSTableAdapter fakturyDetailsTableAdapter =
34            new Baza_Reklam.REKLAMADataSetTableAdapters.FAKTURA_DETAILSTableAdapter();
35
[28]36        private REKLAMADataSetTableAdapters.WplatyTableAdapter wplatyTableAdapter =
37            new Baza_Reklam.REKLAMADataSetTableAdapters.WplatyTableAdapter();
38
[2]39        private REKLAMADataSetTableAdapters.DatyWydanTableAdapter datyWydanTableAdapter =
40            new Baza_Reklam.REKLAMADataSetTableAdapters.DatyWydanTableAdapter();
41
42        private SLOWNIKDataSetTableAdapters.Kursy_WalutTableAdapter kursyWalutTableAdapter =
43            new Baza_Reklam.SLOWNIKDataSetTableAdapters.Kursy_WalutTableAdapter();
44
45        #region properties
46
47        public REKLAMADataSet.REKLAMADataTable ReklamyBezZamowienia
48        {
49            get { return reklamyBezZamowienia; }
50            set { reklamyBezZamowienia = value; }
51        }
52
53        #endregion properties
54
55        public ZamowieniaForm(REKLAMADataSet.KLIENCIRow klient)
56        {
57            InitializeComponent();
[4]58            InitTableAdatpers();
[2]59
60            this.klient = klient;
61        }
62
63        public ZamowieniaForm(int idKlienta)
64        {
65            InitializeComponent();
[4]66            InitTableAdatpers();
[2]67
68            this.klient = klienciTableAdapter.GetDataByCustomerId(idKlienta)[0];
69        }
70
71        public ZamowieniaForm(int idKlienta, int idZamowienia)
72        {
73            InitializeComponent();
[4]74            InitTableAdatpers();
75
76            this.klient = klienciTableAdapter.GetDataByCustomerId(idKlienta)[0];
77            this.idZamowienia = idZamowienia;
[19]78
[4]79        }
80
81        private void InitTableAdatpers()
82        {
[2]83            this.rEKLAMABindingSource1.DataSource = ReklamyBezZamowienia;
84            this.zamowieniaTableAdapter.Connection.ConnectionString = ConnString.getConnString().Value;
85            this.rEKLAMATableAdapter.Connection.ConnectionString = ConnString.getConnString().Value;
86            this.fAKTURYTableAdapter.Connection.ConnectionString = ConnString.getConnString().Value;
87            this.fakturyDetailsTableAdapter.Connection.ConnectionString = ConnString.getConnString().Value;
88            this.klienciTableAdapter.Connection.ConnectionString = ConnString.getConnString().Value;
89            this.agencjeTableAdapter.Connection.ConnectionString = ConnString.getConnString().Value;
90            this.agenciTableAdapter.Connection.ConnectionString = ConnString.getConnString().Value;
91            this.emisjeTableAdapter.Connection.ConnectionString = ConnString.getConnString().Value;
92            this.datyWydanTableAdapter.Connection.ConnectionString = ConnString.getConnString().Value;
93            this.kursyWalutTableAdapter.Connection.ConnectionString = ConnString.getConnString().Value;
[28]94            this.wplatyTableAdapter.Connection.ConnectionString = ConnString.getConnString().Value;
[2]95        }
96
97        private void ZamowieniaForm_Load(object sender, EventArgs e)
[5]98        {
[6]99            usunFaktureButton.Enabled = User.getUser().St_kierownik;
[8]100            dtpZmianaDaty.Enabled = User.getUser().St_kierownik;
101            dtpZmianaDaty.Value = DateTime.Today;
102            dtpZmianaDaty.MaxDate = DateTime.Today;
[6]103
[5]104            zamowieniaBindingSource.CurrentChanged += zamowieniaBindingSource_CurrentChanged;
[7]105
[2]106            ReklamyBezZamowienia = rEKLAMATableAdapter.GetDataByCustomerIdandIdZamowienia(klient.CustomerID);
107            rEKLAMABindingSource1.DataSource = ReklamyBezZamowienia;
108            this.zamowieniaTableAdapter.FillByIdKlienta(this.rEKLAMADataSet.zamowienia, klient.CustomerID);
[7]109
[2]110            if (idZamowienia != 0)
111            {
112                zamowieniaBindingSource.Position = zamowieniaBindingSource.Find("idZamowienia", idZamowienia);
113                rEKLAMATableAdapter.FillByIdZamowienia(this.rEKLAMADataSet.REKLAMA, idZamowienia);
114                fAKTURYTableAdapter.FillByIdZamowienia(this.rEKLAMADataSet.FAKTURY, idZamowienia);
115            }
[5]116            else
117            {
118                zamowieniaBindingSource.Position = 0;
119            }
[22]120
121            if (klient != null)
122            {
123                this.KlientLabel.Text = "KOD KLIENTA:  " + klient.kodKlienta;
124            }
[2]125        }
126
127        private void dodajButton_Click(object sender, EventArgs e)
128        {
129            if (klient.IskodKlientaNull() || klient.kodKlienta.Trim() == string.Empty)
130            {
131                MessageBox.Show("Uzupe³nij kod klienta");
132                return;
133            }
134
135            AddZamowienieForm azf = new AddZamowienieForm(0, klient.CustomerID);
136            if (azf.ShowDialog() == DialogResult.OK)
137            {
[4]138                //rEKLAMADataSet.zamowienia.Clear();
139                //this.zamowieniaTableAdapter.FillByIdKlienta(this.rEKLAMADataSet.zamowienia, klient.CustomerID);
140                rEKLAMADataSet.zamowienia.ImportRow(azf.Zamowienia[0]);
141                int idZam = azf.Zamowienia[0].idZamowienia;
142                zamowieniaBindingSource.Position = zamowieniaBindingSource.Find("idZamowienia", idZam);
143                rEKLAMATableAdapter.FillByIdZamowienia(this.rEKLAMADataSet.REKLAMA, idZam);
144                fAKTURYTableAdapter.FillByIdZamowienia(this.rEKLAMADataSet.FAKTURY, idZam);
[2]145            }
146        }
147
148        private void edytujButton_Click(object sender, EventArgs e)
149        {
150            if (zamowieniaBindingSource.Current != null)
151            {
152                DataRowView z = (DataRowView)zamowieniaBindingSource.Current;
153                REKLAMADataSet.zamowieniaRow zamowienie = (REKLAMADataSet.zamowieniaRow)z.Row;
154
[5]155                int idZam = zamowienie.idZamowienia;
[7]156
[5]157                AddZamowienieForm azf = new AddZamowienieForm(idZam, klient.CustomerID);
[2]158                if (azf.ShowDialog() == DialogResult.OK)
159                {
160                    rEKLAMADataSet.zamowienia.Clear();
161                    this.zamowieniaTableAdapter.FillByIdKlienta(this.rEKLAMADataSet.zamowienia, klient.CustomerID);
[5]162                    zamowieniaBindingSource.Position = zamowieniaBindingSource.Find("idZamowienia", idZam);
[2]163                }
164            }
165        }
166
167        private void dodajDoZamButton_Click(object sender, EventArgs e)
168        {
169            if (zamowieniaBindingSource.Current != null)
[7]170            {
[2]171                if (rEKLAMADataGridView1.SelectedRows.Count > 0)
172                {
173                    DataRowView z = (DataRowView)zamowieniaBindingSource.Current;
174                    REKLAMADataSet.zamowieniaRow zamowienie = (REKLAMADataSet.zamowieniaRow)z.Row;
175
176                    REKLAMADataSet.REKLAMARow row = (REKLAMADataSet.REKLAMARow)((DataRowView)rEKLAMADataGridView1.SelectedRows[0].DataBoundItem).Row;
[7]177
[18]178                    string s = string.Empty;
[2]179
[18]180                    s = CzyMoznaDodacDoZam(zamowienie,rEKLAMADataSet.REKLAMA, row, s);
[2]181
[18]182                    if (s != string.Empty)
183                    {
184                        s += "\n Reklamy nie mog¹ byæ w obrêbie jednego zamówienia";
185                        MessageBox.Show(s, "", MessageBoxButtons.OK, MessageBoxIcon.Error);
186                        return;
[2]187                    }
[7]188
[2]189                    row.idZamowienia = zamowienie.idZamowienia;
190
191                    if (zamowienie.IsidKontaNull() && !row.IsBrutto_Euro_MianoNull())
192                    {
193                        // zmiana domyœlnego konta do faktury dla EUR
194                        if (User.getUser().IdAgencji != 4 & (row.Brutto_Euro_Miano == "EUR"))
195                        {
196                            if (User.getUser().IdAgencji == 1223940396 | User.getUser().IdAgencji == 1223940398)
197                            {
198                                zamowienie.idKonta = 3;
199                            }
200                            else
201                            {
202                                zamowienie.idKonta = 5;
203                            }
204                        }
205                    }
[7]206
[2]207                    this.rEKLAMADataSet.REKLAMA.ImportRow(row);
208                    ReklamyBezZamowienia.Rows.Remove(row);
209                    rEKLAMATableAdapter.Update(this.rEKLAMADataSet.REKLAMA);
210                    zamowieniaTableAdapter.Update(this.rEKLAMADataSet.zamowienia);
211                }
212            }
213        }
214
[18]215        private string CzyMoznaDodacDoZam(REKLAMADataSet.zamowieniaRow zamowienie,
216            REKLAMADataSet.REKLAMADataTable reklamyWZamowieniu,
217            REKLAMADataSet.REKLAMARow row, string s)
218        {
219            if (zamowienie.zafakturowanoWszystko)
220            {
221                s += "Zamówienie jest ju¿ w ca³oœci zafakturowane.";
222            }
223
224            //sprawdzenie waluty i VAT
225            if (reklamyWZamowieniu.Count > 0)
226            {
227                REKLAMADataSet.REKLAMARow rek = reklamyWZamowieniu[0];
228
229                if (rek.IsBrutto_Euro_MianoNull() ^ row.IsBrutto_Euro_MianoNull())
230                {
231                    if ((rek.IsBrutto_Euro_MianoNull() || row.IsBrutto_Euro_MianoNull())
232                        ||
233                        (rek.Brutto_Euro_Miano != row.Brutto_Euro_Miano))
234                    {
235                        s += "Reklamy s¹ w ró¿nych walutach. \n";
236                    }
237                }
238
239                REKLAMADataSet.DatyWydanDataTable t = datyWydanTableAdapter.GetDataByPierwszaEmisjaWZamowieniu(zamowienie.idZamowienia);
240
241                if (t.Rows.Count == 0)
242                {
243                    s += "Reklama nie ma wybranych emisji. \n";
244                }
245                else
246                {
247                    if (!zamowienie.IsdataOstatniejZafakturowanejEmisjiNull())
248                    {
249                        if (t[0].DATA_W < zamowienie.dataOstatniejZafakturowanejEmisji)
250                        {
251                            s += "Reklama zawiera emisjê na okres, który ju¿ zosta³ zafakturowany";
252                        }
253                    }
254                }
255
256                if (rek.VAT != row.VAT)
257                {
258                    s += "Reklamy maj¹ ró¿ne stawki VAT. \n";
259                }
260            }
261            return s;
262        }
263
[2]264        private void usunZZamButton_Click(object sender, EventArgs e)
265        {
266            if (zamowieniaBindingSource.Current != null && rEKLAMADataGridView.SelectedRows.Count != 0)
[7]267            {
[2]268                DataRowView z = (DataRowView)zamowieniaBindingSource.Current;
269                REKLAMADataSet.zamowieniaRow zamowienie = (REKLAMADataSet.zamowieniaRow)z.Row;
[7]270
[2]271                DataRowView row = (DataRowView)rEKLAMADataGridView.SelectedRows[0].DataBoundItem;
272
273                if (Convert.ToBoolean(row["FAKTURA WYSTAWIONO"]) == true)
274                {
275                    MessageBox.Show("Reklama ma zafakturowane emisje. Nie mo¿na usun¹æ reklamy.");
276                    return;
277                }
278
279                row["idZamowienia"] = DBNull.Value;
280                row.EndEdit();
281
282                ReklamyBezZamowienia.ImportRow(row.Row);
283                this.rEKLAMADataSet.REKLAMA.Rows.Remove(row.Row);
[7]284
[2]285                rEKLAMATableAdapter.Update(ReklamyBezZamowienia);
286                zamowieniaTableAdapter.Update(this.rEKLAMADataSet.zamowienia);
287            }
288        }
289
290        private void button1_Click(object sender, EventArgs e)
[7]291        {
[2]292            if (zamowieniaBindingSource.Current != null)
293            {
294                this.Cursor = Cursors.WaitCursor;
295
296                DataRowView z = (DataRowView)zamowieniaBindingSource.Current;
297                REKLAMADataSet.zamowieniaRow zamowienie = (REKLAMADataSet.zamowieniaRow)z.Row;
298
299                REKLAMADataSet.KLIENCIRow klient = (REKLAMADataSet.KLIENCIRow)this.klienciTableAdapter.GetDataByCustomerId(zamowienie.idKlienta).Rows[0];
[7]300                string errorMessage = czyMoznaZafakturowac(zamowienie, klient);
[2]301
302                if (errorMessage != string.Empty)
303                {
304                    MessageBox.Show(errorMessage);
305                    this.Cursor = Cursors.Default;
306                    return;
307                }
308
[25]309                wystawFakture(zamowienie, klient);
[2]310
[25]311                this.Cursor = Cursors.Default;
312            }
313        }
[7]314
[25]315        private int wystawFakture(REKLAMADataSet.zamowieniaRow zamowienie, REKLAMADataSet.KLIENCIRow klient)
316        {
317            int idNaglowka = 0;
318           
319            try
320            {
321                REKLAMADataSet.FAKTURYRow naglowekFaktury = utworzNaglowekFaktury(zamowienie, klient);
322                this.rEKLAMADataSet.FAKTURY.AddFAKTURYRow(naglowekFaktury);
323                pobierzOznaczEmisje(zamowienie, naglowekFaktury);
324                utworzPozycjeFaktury(naglowekFaktury);
[28]325                dodajWplate(naglowekFaktury);
326
[25]327                zamowienie.zafakturowano = true;
328                zamowienie.EndEdit();
[7]329
[25]330                SqlConnection conn = new SqlConnection(ConnString.getConnString().Value);
[2]331
[25]332                fAKTURYTableAdapter.Connection = conn;
333                emisjeTableAdapter.Connection = conn;
334                zamowieniaTableAdapter.Connection = conn;
335                fakturyDetailsTableAdapter.Connection = conn;
336                rEKLAMATableAdapter.Connection = conn;
[28]337                wplatyTableAdapter.Connection = conn;
[7]338
[25]339                conn.Open();
[2]340
[25]341                SqlTransaction transaction = conn.BeginTransaction();
342                fAKTURYTableAdapter.AttachTransaction(transaction);
343                emisjeTableAdapter.AttachTransaction(transaction);
344                zamowieniaTableAdapter.AttachTransaction(transaction);
345                fakturyDetailsTableAdapter.AttachTransaction(transaction);
346                rEKLAMATableAdapter.AttachTransaction(transaction);
[28]347                wplatyTableAdapter.AttachTransaction(transaction);
[18]348
[25]349                try
350                {
351                    fAKTURYTableAdapter.Update(this.rEKLAMADataSet.FAKTURY);
352                    idNaglowka = naglowekFaktury.ID_FAKTURY;
353                    emisjeTableAdapter.Update(this.rEKLAMADataSet.UKAZE_SIE_W_NR);
354                    fakturyDetailsTableAdapter.Update(this.rEKLAMADataSet.FAKTURA_DETAILS);
[28]355                    wplatyTableAdapter.Update(this.rEKLAMADataSet.Wplaty);
[2]356
[25]357                    int il = (int)emisjeTableAdapter.iloscNiezafakturowanychEmisjiWZamowieniu(
358                        zamowienie.idZamowienia);
359                    if (il == 0)
[2]360                    {
[25]361                        zamowienie.zafakturowanoWszystko = true;
[2]362                    }
[25]363
364                    zamowieniaTableAdapter.Update(this.rEKLAMADataSet.zamowienia);
365                    rEKLAMATableAdapter.Update(this.rEKLAMADataSet.REKLAMA);
366
367                    transaction.Commit();
368                    dtpZmianaDaty.Value = DateTime.Today;
[2]369                }
[25]370                catch (Exception e1)
[2]371                {
[25]372                    transaction.Rollback();
373                    conn.Close();
[28]374                    this.rEKLAMADataSet.UKAZE_SIE_W_NR.Clear();
375                    this.rEKLAMADataSet.DatyWydan.Clear();
376                    this.rEKLAMADataSet.FAKTURA_DETAILS.Clear();
377                    this.rEKLAMADataSet.Wplaty.Clear();
[25]378                    this.rEKLAMADataSet.FAKTURY.RemoveFAKTURYRow(naglowekFaktury);
[2]379                    this.fAKTURYBindingSource.ResetBindings(false);
380                    this.fAKTURYDataGridView.Refresh();
[25]381                    throw e1;
[2]382                }
[25]383            }
384            catch (Exception e2)
385            {
386                MessageBox.Show("Wyst¹pi³ b³¹d: \n" + e2.ToString());
387            }
388            finally
389            {
390                this.rEKLAMADataSet.UKAZE_SIE_W_NR.Clear();
391                this.rEKLAMADataSet.DatyWydan.Clear();
392                this.rEKLAMADataSet.FAKTURA_DETAILS.Clear();
[28]393                this.rEKLAMADataSet.Wplaty.Clear();
[25]394                this.fAKTURYBindingSource.ResetBindings(false);
395                this.fAKTURYBindingSource.Sort = "NUMER";
396                this.fAKTURYDataGridView.Refresh();
397                this.zamowieniaBindingSource.ResetBindings(false);
398               
399            }
[2]400
[25]401            return idNaglowka;
[2]402        }
403
[28]404        private void dodajWplate(REKLAMADataSet.FAKTURYRow naglowekFaktury)
405        {
406            REKLAMADataSet.WplatyRow wplata = this.rEKLAMADataSet.Wplaty.NewWplatyRow();
407            wplata.idFaktury = naglowekFaktury.ID_FAKTURY;
408            wplata.idZamowienia = naglowekFaktury.idZamowienia;
409            this.rEKLAMADataSet.Wplaty.AddWplatyRow(wplata);
410        }
411
[2]412        private void utworzPozycjeFaktury(REKLAMADataSet.FAKTURYRow naglowekFaktury)
413        {
414            decimal brutto_waluta = 0;
415
416            foreach (REKLAMADataSet.UKAZE_SIE_W_NRRow em in this.rEKLAMADataSet.UKAZE_SIE_W_NR)
417            {
418                REKLAMADataSet.FAKTURA_DETAILSRow fakturaDetailsRow = this.rEKLAMADataSet.FAKTURA_DETAILS.NewFAKTURA_DETAILSRow();
[7]419
[2]420                REKLAMADataSet.DatyWydanRow[] dataWydanTable =
421                    (REKLAMADataSet.DatyWydanRow[])em.GetChildRows("UKAZE_SIE_W_NR_DatyWydan");
422                REKLAMADataSet.DatyWydanRow dataWydania = dataWydanTable[0];
423
424                REKLAMADataSet.REKLAMARow reklama = (REKLAMADataSet.REKLAMARow)em.GetParentRow("REKLAMA_UKAZE_SIE_W_NR");
[7]425
[2]426                fakturaDetailsRow.ROK = Convert.ToInt16(dataWydania.rok);
427                fakturaDetailsRow.MIESIAC = Convert.ToInt16(dataWydania.ms);
428                fakturaDetailsRow.TYTUL = Convert.ToInt16(dataWydania.idTytulu);
429                fakturaDetailsRow.NAZWA_USLUGI = reklama.ID_REKLAMY + " | " + em.Nr_Wydania;
[7]430                fakturaDetailsRow.reklamaId = reklama.ReklamaID;
[2]431                fakturaDetailsRow.NR_WYDANIA = em.Nr_Wydania;
432
433                fakturaDetailsRow.CENA_JEDN = Convert.ToDecimal(reklama.CENA_JEDN);
434                fakturaDetailsRow.ILOSC = 1;
435                fakturaDetailsRow.JM = "szt.";
436
437                if (naglowekFaktury.Iswaluta_mianoNull())
438                {
439                    fakturaDetailsRow.UPUST_NETTO = Convert.ToDecimal(reklama.RABAT) * fakturaDetailsRow.CENA_JEDN;
440                    fakturaDetailsRow.UPUST_PR = reklama.RABAT;
441                    decimal netto = (1 - Convert.ToDecimal(reklama.RABAT)) * fakturaDetailsRow.CENA_JEDN;
442                    fakturaDetailsRow.NETTO = netto;
443                    fakturaDetailsRow.S_VAT = reklama.VAT;
444                    decimal VAT = Convert.ToDecimal(reklama.VAT);
445                    fakturaDetailsRow.VAT = Convert.ToDecimal(Math.Round(VAT * netto, 2));
446                    fakturaDetailsRow.BRUTTO = Convert.ToDecimal(Math.Round((1 + VAT) * netto, 2));
447                }
448                else
449                {
[7]450                    fakturaDetailsRow.BRUTTO = Convert.ToDecimal((reklama.Brutto_Euro / reklama.KROTNOŒÆ) * naglowekFaktury.waluta_kurs);
[2]451                    brutto_waluta += Convert.ToDecimal(reklama.Brutto_Euro / reklama.KROTNOŒÆ);
452                    fakturaDetailsRow.S_VAT = reklama.VAT;
453                    decimal VAT = Convert.ToDecimal(reklama.VAT);
454                    decimal brutto = fakturaDetailsRow.BRUTTO;
[7]455                    fakturaDetailsRow.VAT = Convert.ToDecimal(Math.Round(VAT * brutto / (1 + VAT), 2));
[2]456                    decimal netto = brutto - fakturaDetailsRow.VAT;
457                    fakturaDetailsRow.NETTO = netto;
458                    fakturaDetailsRow.UPUST_PR = reklama.RABAT;
459                    if (fakturaDetailsRow.UPUST_PR != 0)
460                    {
461                        fakturaDetailsRow.UPUST_NETTO = netto / Convert.ToDecimal(reklama.RABAT) - netto;
462                    }
463                    else
464                    {
465                        fakturaDetailsRow.UPUST_NETTO = 0;
466                    }
[7]467
[2]468                    fakturaDetailsRow.CENA_JEDN = Convert.ToDecimal(netto + fakturaDetailsRow.UPUST_NETTO);
469                }
470
471                fakturaDetailsRow.TYP = 2;
472                fakturaDetailsRow.PODTYP = 1;
473                fakturaDetailsRow.ID_FAKTURY = naglowekFaktury.ID_FAKTURY;
474
475                if (reklama.wyroznienie)
476                {
477                    fakturaDetailsRow.wyroznienie = true;
478                }
479
480                this.rEKLAMADataSet.FAKTURA_DETAILS.AddFAKTURA_DETAILSRow(fakturaDetailsRow);
481            }
[7]482
[2]483            if (brutto_waluta != 0)
484            {
[7]485                naglowekFaktury.waluta_brutto = Math.Round(Convert.ToDouble(brutto_waluta),2);
486                naglowekFaktury.EndEdit();
[2]487            }
488        }
[7]489
[2]490        private void pobierzOznaczEmisje(REKLAMADataSet.zamowieniaRow zamowienie, REKLAMADataSet.FAKTURYRow naglowekFaktury)
491        {
492            this.emisjeTableAdapter.ClearBeforeFill = false;
493            this.datyWydanTableAdapter.ClearBeforeFill = false;
494
[7]495            REKLAMADataSet.DatyWydanDataTable t = datyWydanTableAdapter.GetDataByPierwszaEmisjaWZamowieniu(zamowienie.idZamowienia);
[2]496
[7]497            if (t.Rows.Count == 0)
498            {
[2]499                throw new Exception("Nie ma co fakturowaæ!");
500            }
501
502            DateTime d = t[0].DATA_W;
503            d = zamowienie.IsdataOstatniejZafakturowanejEmisjiNull() ? d : zamowienie.dataOstatniejZafakturowanejEmisji.AddMonths(1);
504
505            foreach (DataRow r in this.rEKLAMADataSet.REKLAMA.Rows)
506            {
507                REKLAMADataSet.REKLAMARow reklama = (REKLAMADataSet.REKLAMARow)r;
508
509                switch (zamowienie.rodzajFakturowania)
510                {
511                    //3m
512                    case 1:
513                        this.emisjeTableAdapter.FillByNiezafakturowane3MSRekID(
514                            this.rEKLAMADataSet.UKAZE_SIE_W_NR,
515                            reklama.ReklamaID,
516                            d);
517                        this.datyWydanTableAdapter.FillByReklamaId(this.rEKLAMADataSet.DatyWydan, reklama.ReklamaID);
518                        break;
519                    //calosc
520                    case 2:
[7]521                        this.emisjeTableAdapter.FillByNiezafakturowane(this.rEKLAMADataSet.UKAZE_SIE_W_NR, reklama.ReklamaID);
[2]522                        this.datyWydanTableAdapter.FillByReklamaId(this.rEKLAMADataSet.DatyWydan, reklama.ReklamaID);
523                        break;
524                    //1ms
525                    default:
526                        this.emisjeTableAdapter.FillByNiezafakturowane1MSrekId(
[7]527                            this.rEKLAMADataSet.UKAZE_SIE_W_NR,
[2]528                            reklama.ReklamaID,
529                            d);
530                        this.datyWydanTableAdapter.FillByReklamaId(this.rEKLAMADataSet.DatyWydan, reklama.ReklamaID);
531                        break;
532                }
533
534                // ustawiane by pozniej blokowac mozliwosc zmiany rabatu itp.
535                reklama.FAKTURA_WYSTAWIONO = true;
[4]536                reklama.EndEdit();
[2]537            }
538
539            if (zamowienie.IsdataOstatniejZafakturowanejEmisjiNull())
540            {
541                zamowienie.dataOstatniejZafakturowanejEmisji = DateTime.Today.AddMonths(-1);
542            }
543
544            foreach (DataRow r in this.rEKLAMADataSet.REKLAMA.Rows)
545            {
546                REKLAMADataSet.REKLAMARow reklama = (REKLAMADataSet.REKLAMARow)r;
[18]547               
[2]548                foreach (DataRow em in this.rEKLAMADataSet.UKAZE_SIE_W_NR)
549                {
550                    REKLAMADataSet.UKAZE_SIE_W_NRRow emisja = (REKLAMADataSet.UKAZE_SIE_W_NRRow)em;
551                    emisja.idFaktury = naglowekFaktury.ID_FAKTURY;
552                    emisja.zafakturowana = true;
553
554                    if (emisja.ReklamaId == reklama.ReklamaID)
555                    {
556                        reklama.FAKTURA_WYSTAWIONO = true;
557
558                        if (naglowekFaktury.Iswaluta_mianoNull())
559                        {
[17]560                            emisja.netto = Convert.ToDecimal(reklama.CENA_JEDN * (1 - reklama.RABAT));
[2]561                        }
562                        else
563                        {
[17]564                            emisja.netto = Convert.ToDecimal(Math.Round(reklama.Brutto_Euro / reklama.KROTNOŒÆ, 2) * (1 - reklama.RABAT));
565                            emisja.netto = emisja.netto * Convert.ToDecimal(naglowekFaktury.waluta_kurs);
[2]566                        }
567                    }
[7]568
[2]569                    REKLAMADataSet.DatyWydanRow[] dataWydanTable =
570                                       (REKLAMADataSet.DatyWydanRow[])em.GetChildRows("UKAZE_SIE_W_NR_DatyWydan");
571                    REKLAMADataSet.DatyWydanRow dataWydania = dataWydanTable[0];
572
573                    if (dataWydania.DATA_W > zamowienie.dataOstatniejZafakturowanejEmisji)
574                    {
575                        zamowienie.dataOstatniejZafakturowanejEmisji = dataWydania.DATA_W;
576                    }
577                }
578            }
579
580            zamowienie.EndEdit();
581        }
582
[7]583        private REKLAMADataSet.FAKTURYRow utworzNaglowekFaktury(REKLAMADataSet.zamowieniaRow zamowienie, REKLAMADataSet.KLIENCIRow klient)
[2]584        {
585            REKLAMADataSet.FAKTURYRow naglowekFaktury = (REKLAMADataSet.FAKTURYRow)this.rEKLAMADataSet.FAKTURY.NewRow();
586
587            naglowekFaktury.idZamowienia = zamowienie.idZamowienia;
588            naglowekFaktury.NUMER_ROZ = zamowienie.kodAgenta;
589            naglowekFaktury.NUMER = Utils.numerNowejFaktury(naglowekFaktury.NUMER_ROZ, DateTime.Today.Year);
590            naglowekFaktury.NUMER_ROK = DateTime.Today.Year;
591            naglowekFaktury.DATA_WYSTAWIENIA = DateTime.Today;
592
[8]593            if (User.getUser().St_kierownik)
594            {
595                if (dtpZmianaDaty.Value != DateTime.Today)
596                {
597                    naglowekFaktury.DATA_WYSTAWIENIA = dtpZmianaDaty.Value;
598                }
599            }
600
[2]601            SLOWNIKDataSet.AGENCJERow agencja = (SLOWNIKDataSet.AGENCJERow)this.agencjeTableAdapter.GetDataByKodAgenta(zamowienie.kodAgenta).Rows[0];
602            naglowekFaktury.ID_SPRZEDAWCY = agencja.Id_agencji;
[33]603           
604            if (naglowekFaktury.ID_SPRZEDAWCY == 4 || naglowekFaktury.ID_SPRZEDAWCY == 6 ||
605                naglowekFaktury.ID_SPRZEDAWCY == 1223940400)
606            {
607                naglowekFaktury.EKSPORT = true;
608            }
609
[2]610            naglowekFaktury.MIEJSCOWOSC_WYSTAWIENIA = agencja.miasto;
611            naglowekFaktury.SPRZEDAWCA_ADRES = agencja.Adres_Fk;
612            naglowekFaktury.SPRZEDAWCA_NIP = agencja.NIP;
613
614            SLOWNIKDataSet.AGENCIRow agent = (SLOWNIKDataSet.AGENCIRow)this.agenciTableAdapter.GetDataByKodAgenta(zamowienie.kodAgenta).Rows[0];
615            naglowekFaktury.PODPIS_WYSTAWIL = agent.Imiê + " " + agent.Nazwisko;
[8]616            naglowekFaktury.DATA_SPRZEDAZY = naglowekFaktury.DATA_WYSTAWIENIA;
[2]617
618            naglowekFaktury.ID_NABYWCY = zamowienie.idKlienta;
619            naglowekFaktury.NABYWCA_ADRES = klient.Adres_Fkatura;
620            naglowekFaktury.NABYWCA_NIP = klient.Nip;
[26]621            naglowekFaktury.opis = "Faktura za reklamy zgodnie z zamówieniem: "
622                + klient.kodKlienta +
623                "/" + zamowienie.nrZamowienia +
624                "/" + zamowienie.kodAgenta +
625                "/" + zamowienie.rokZamowienia;
[2]626
627            switch (zamowienie.sposobZaplaty)
628            {
629                case 0:
630                    naglowekFaktury.SPOSOB_ZAPLATY = "Karta kredytowa";
631                    break;
632                case 1:
633                    naglowekFaktury.SPOSOB_ZAPLATY = "Przelew";
634                    break;
635                case 2:
636                    naglowekFaktury.SPOSOB_ZAPLATY = "Gotówka";
637                    break;
638                case 3:
639                    naglowekFaktury.SPOSOB_ZAPLATY = "Barter";
640                    break;
641                default:
642                    break;
643            }
644
645            naglowekFaktury.TERMIN_ZAPLATY = naglowekFaktury.DATA_SPRZEDAZY.AddDays(zamowienie.czasPlatnosci);
646            naglowekFaktury.ZAPLACONO = false;
647
648            naglowekFaktury.FAKTURA_TYP = 2;
649            naglowekFaktury.FAKTURA_PODTYP = 1;
650
651            naglowekFaktury.ID_KONTA = Convert.ToInt16(zamowienie.idKonta);
652
653            //WALUTOWE
654            if (!this.rEKLAMADataSet.REKLAMA[0].IsBrutto_Euro_MianoNull() &&
655                this.rEKLAMADataSet.REKLAMA[0].Brutto_Euro_Miano != string.Empty)
656            {
657                naglowekFaktury.SPRZEDAWCA_NIP = agencja.vies;
658                naglowekFaktury.NABYWCA_NIP = klient.nipKraj + " " + klient.Nip;
659                naglowekFaktury.waluta_miano = this.rEKLAMADataSet.REKLAMA[0].Brutto_Euro_Miano;
660
[8]661                DateTime dataPublikacji = naglowekFaktury.DATA_WYSTAWIENIA;
[2]662
663                SLOWNIKDataSet.Kursy_WalutDataTable kurs = kursyWalutTableAdapter.GetDataByDataPublikacji(
[7]664                     naglowekFaktury.waluta_miano, dataPublikacji);
[2]665
666                if (kurs.Count == 0)
667                {
668                    throw new Exception("B³¹d przy pobieraniu kursu waluty.");
669                }
670
671                naglowekFaktury.waluta_kurs = User.getUser().IdAgencji == 6 ? kurs[0].Kurs_Sredni_Poznan : kurs[0].Kurs_Sredni;
672                naglowekFaktury.waluta_kurs_z_dnia = kurs[0].Data_Publikacji;
673                naglowekFaktury.waluta_przelicznik = kurs[0].przelicznik;
674                naglowekFaktury.waluta_tabela_nr = kurs[0].Numer_Tabeli;
675            }
[7]676
[2]677            naglowekFaktury.EndEdit();
678            return naglowekFaktury;
679        }
680
681        private string czyMoznaZafakturowac(REKLAMADataSet.zamowieniaRow zamowienie, REKLAMADataSet.KLIENCIRow klient)
682        {
683            string errorMessage = string.Empty;
684
[18]685            errorMessage += zamowienie.zafakturowanoWszystko ? "Nie ma co fakturowac! \n" : "";
[2]686            errorMessage += zamowienie.IsrodzajFakturowaniaNull() ? "Nie wybrano sposobu fakturowania. \n" : "";
687            errorMessage += zamowienie.IsidKontaNull() ? "Nie wybrano konta. \n" : "";
688            errorMessage += zamowienie.IssposobZaplatyNull() ? "Nie wybrano sposobu zap³aty. \n" : "";
[18]689            errorMessage += klient.IsCountryNull() || klient.Country == string.Empty ? "Brak pañstwa klienta. \n" : "";
[2]690            errorMessage += klient.IsAdres_FkaturaNull() || klient.Adres_Fkatura == string.Empty ? "Brak adresu faktury klienta. \n" : "";
691            errorMessage += klient.IsNipNull() || klient.Nip == string.Empty ? "Brak nipu klienta. \n" : "";
692
693            if (klient.Country != "Polska")
694            {
695                errorMessage += klient.IsnipKrajNull() || klient.nipKraj == string.Empty ? "Brak symbolu kraju w nipie klienta. \n" : "";
696            }
697
698            if (rEKLAMADataSet.REKLAMA.Select("[ZATWIERDZONO DO DRUKU] = 0").Length > 0)
699            {
700                errorMessage += "W zamówieniu s¹ reklamy niezatwierdzone do druku \n";
701            }
[7]702
[2]703            return errorMessage;
704        }
705
706
707        private void WydrukButton_Click(object sender, EventArgs e)
708        {
709            if (zamowieniaBindingSource.Current != null)
710            {
711                DataRowView z = (DataRowView)zamowieniaBindingSource.Current;
712                REKLAMADataSet.zamowieniaRow zamowienie = (REKLAMADataSet.zamowieniaRow)z.Row;
713
714                OrderViewer ov = new OrderViewer(zamowienie.idZamowienia, 9);
715                ov.ShowDialog();
716            }
717        }
718
719        private void button2_Click(object sender, EventArgs e)
720        {
721            if (fAKTURYBindingSource.Current != null)
722            {
[7]723                REKLAMADataSet.FAKTURYRow row =
724                    (REKLAMADataSet.FAKTURYRow)
725                    ((DataRowView)fAKTURYBindingSource.Current).Row;
[2]726
[7]727                if (row.IsidFakturyKorektaNull())
728                {
[28]729                    FactureViewer fv = new FactureViewer(row.ID_FAKTURY,false);
[7]730                    fv.ShowDialog();
731                }
732                else
733                {
734                    FactureViewer fv = new FactureViewer(row.idFakturyKorekta, row.ID_FAKTURY);
735                    fv.ShowDialog();
736                }
737
[2]738            }
739        }
740
741        private void button3_Click(object sender, EventArgs e)
742        {
743            if (rEKLAMADataSet.REKLAMA.Rows.Count == 0 && rEKLAMADataSet.FAKTURY.Rows.Count == 0)
744            {
745                this.zamowieniaBindingSource.Remove(this.zamowieniaBindingSource.Current);
746                this.zamowieniaBindingSource.EndEdit();
747                this.zamowieniaTableAdapter.Update(this.rEKLAMADataSet.zamowienia);
748            }
749            else
750            {
751                MessageBox.Show("Nie mo¿na usun¹æ zamówienia.");
752            }
753        }
754
755        private void korektaButton_Click(object sender, EventArgs e)
756        {
757            if (fAKTURYBindingSource.Current != null)
758            {
759                this.Cursor = Cursors.WaitCursor;
760
761                DataRowView row = (DataRowView)fAKTURYBindingSource.Current;
762                REKLAMADataSet.FAKTURYRow faktura = (REKLAMADataSet.FAKTURYRow)row.Row;
[17]763                               
764                if (faktura.KOREKTA)
[2]765                {
766                    MessageBox.Show("Nie mo¿na wystawiæ korekty do korekty");
[7]767                    this.Cursor = Cursors.Default;
[2]768                    return;
769                }
770
771                //sprawdzenie czy korekta nie byla juz wystawiona
772                if (!faktura.IsID_FK_KORNull())
773                {
774                    MessageBox.Show("Istnieje ju¿ faktura korekta");
[17]775                 //   return;
[2]776                }
777
[7]778                try
[2]779                {
[7]780                    REKLAMADataSet.FAKTURYRow naglowekKorekty = utworzNaglowekKorekty(faktura);
781                    pobierzEmisjeDoKorekty(faktura);
782                    utworzPozycjeFakturyKorekty(naglowekKorekty);
[2]783
[17]784                    if (!faktura.IsID_FK_KORNull())
785                    {
786                        naglowekKorekty.idFakturyKorekta = faktura.ID_FK_KOR;
787                    }
788                   
[7]789                    faktura.ID_FK_KOR = naglowekKorekty.ID_FAKTURY;
790                    faktura.EndEdit();
[2]791
[7]792                    SqlConnection conn = new SqlConnection(ConnString.getConnString().Value);
[2]793
794                    fAKTURYTableAdapter.Connection = conn;
795                    emisjeTableAdapter.Connection = conn;
796                    zamowieniaTableAdapter.Connection = conn;
797                    fakturyDetailsTableAdapter.Connection = conn;
798                    rEKLAMATableAdapter.Connection = conn;
799
800                    conn.Open();
[7]801
[2]802                    SqlTransaction transaction = conn.BeginTransaction();
803                    fAKTURYTableAdapter.AttachTransaction(transaction);
804                    emisjeTableAdapter.AttachTransaction(transaction);
805                    zamowieniaTableAdapter.AttachTransaction(transaction);
806                    fakturyDetailsTableAdapter.AttachTransaction(transaction);
807                    rEKLAMATableAdapter.AttachTransaction(transaction);
808
809                    try
810                    {
811                        fAKTURYTableAdapter.Update(this.rEKLAMADataSet.FAKTURY);
812                        emisjeTableAdapter.Update(this.rEKLAMADataSet.UKAZE_SIE_W_NR);
813                        fakturyDetailsTableAdapter.Update(this.rEKLAMADataSet.FAKTURA_DETAILS);
814                        zamowieniaTableAdapter.Update(this.rEKLAMADataSet.zamowienia);
815
816                        transaction.Commit();
817                    }
818                    catch (Exception e1)
819                    {
820                        transaction.Rollback();
821                        conn.Close();
822                        throw e1;
823                    }
824                }
825                catch (Exception e2)
826                {
827                    MessageBox.Show("Wyst¹pi³ b³¹d: \n" + e2.ToString());
828                }
829                finally
830                {
831                    this.rEKLAMADataSet.UKAZE_SIE_W_NR.Clear();
832                    this.rEKLAMADataSet.DatyWydan.Clear();
833                    this.rEKLAMADataSet.FAKTURA_DETAILS.Clear();
834                    this.fAKTURYBindingSource.ResetBindings(false);
835                    this.fAKTURYDataGridView.Refresh();
836                }
837            }
838
839            this.Cursor = Cursors.Default;
840        }
841
[7]842        private REKLAMADataSet.FAKTURYRow utworzNaglowekKorekty(REKLAMADataSet.FAKTURYRow faktura)
843        {
844            REKLAMADataSet.FAKTURYRow naglowekKorekty = this.rEKLAMADataSet.FAKTURY.NewFAKTURYRow();
[17]845            naglowekKorekty.KOREKTA = true;
[7]846            //  naglowekKorekty.EKSPORT = true;
[2]847
[7]848            naglowekKorekty.idZamowienia = faktura.idZamowienia;
849            naglowekKorekty.idFakturyKorekta = faktura.ID_FAKTURY;
850
851            naglowekKorekty.NUMER_ROZ = faktura.NUMER_ROZ; ;
852            naglowekKorekty.NUMER = Utils.numerNowejFakturyKorekty(naglowekKorekty.NUMER_ROZ, DateTime.Today.Year);
853            naglowekKorekty.NUMER_ROK = DateTime.Today.Year;
854            naglowekKorekty.DATA_WYSTAWIENIA = DateTime.Today;
855
856            naglowekKorekty.ID_SPRZEDAWCY = faktura.ID_SPRZEDAWCY;
[33]857
858            if (naglowekKorekty.ID_SPRZEDAWCY == 4 || naglowekKorekty.ID_SPRZEDAWCY == 6 ||
859                naglowekKorekty.ID_SPRZEDAWCY == 1223940400)
860            {
861                naglowekKorekty.EKSPORT = true;
862            }
863
[7]864            naglowekKorekty.MIEJSCOWOSC_WYSTAWIENIA = faktura.MIEJSCOWOSC_WYSTAWIENIA;
865            naglowekKorekty.SPRZEDAWCA_ADRES = faktura.SPRZEDAWCA_ADRES;
866            naglowekKorekty.SPRZEDAWCA_NIP = faktura.SPRZEDAWCA_NIP;
867
868            naglowekKorekty.PODPIS_WYSTAWIL = faktura.PODPIS_WYSTAWIL;
869            naglowekKorekty.DATA_SPRZEDAZY = DateTime.Today;
870
871            naglowekKorekty.ID_NABYWCY = faktura.ID_NABYWCY;
872            naglowekKorekty.NABYWCA_ADRES = faktura.NABYWCA_ADRES;
873            naglowekKorekty.NABYWCA_NIP = faktura.NABYWCA_NIP;
874            naglowekKorekty.TERMIN_ZAPLATY = DateTime.Today.AddDays(7);
[29]875            naglowekKorekty.opis = "rezygnacja z emisji reklamy";
[7]876
877            naglowekKorekty.SPOSOB_ZAPLATY = faktura.SPOSOB_ZAPLATY;
878
879            naglowekKorekty.TERMIN_ZAPLATY = faktura.TERMIN_ZAPLATY;
880            naglowekKorekty.ZAPLACONO = false;
881
882            naglowekKorekty.FAKTURA_TYP = 2;
883            naglowekKorekty.FAKTURA_PODTYP = 1;
884
885            naglowekKorekty.ID_KONTA = faktura.ID_KONTA;
886
887            if (!faktura.Iswaluta_mianoNull())
888            {
889                naglowekKorekty.SPRZEDAWCA_NIP = faktura.SPRZEDAWCA_NIP;
890                naglowekKorekty.NABYWCA_NIP = faktura.NABYWCA_NIP;
891                naglowekKorekty.waluta_miano = faktura.waluta_miano;
892
893                naglowekKorekty.waluta_kurs = faktura.waluta_kurs;
894                naglowekKorekty.waluta_kurs_z_dnia = faktura.waluta_kurs_z_dnia;
895                naglowekKorekty.waluta_przelicznik = faktura.waluta_przelicznik;
896                naglowekKorekty.waluta_tabela_nr = faktura.waluta_tabela_nr;
897            }
898
899            this.rEKLAMADataSet.FAKTURY.AddFAKTURYRow(naglowekKorekty);
900
901            return naglowekKorekty;
902        }
903
904
[2]905        private void pobierzEmisjeDoKorekty(REKLAMADataSet.FAKTURYRow naglowekFaktury)
906        {
907            this.emisjeTableAdapter.ClearBeforeFill = false;
908            this.datyWydanTableAdapter.ClearBeforeFill = false;
[7]909
[2]910            this.emisjeTableAdapter.FillByIdFaktury(this.rEKLAMADataSet.UKAZE_SIE_W_NR, naglowekFaktury.ID_FAKTURY);
911            this.datyWydanTableAdapter.FillByIdFaktury(this.rEKLAMADataSet.DatyWydan, naglowekFaktury.ID_FAKTURY);
912        }
913
914        private void utworzPozycjeFakturyKorekty(REKLAMADataSet.FAKTURYRow naglowekFaktury)
915        {
916            decimal brutto_waluta = 0;
917
918            foreach (REKLAMADataSet.UKAZE_SIE_W_NRRow em in this.rEKLAMADataSet.UKAZE_SIE_W_NR)
919            {
[7]920                if (em.status != 2)
921                {
[2]922                    REKLAMADataSet.FAKTURA_DETAILSRow fakturaDetailsRow = this.rEKLAMADataSet.FAKTURA_DETAILS.NewFAKTURA_DETAILSRow();
923
924                    REKLAMADataSet.DatyWydanRow[] dataWydanTable =
925                        (REKLAMADataSet.DatyWydanRow[])em.GetChildRows("UKAZE_SIE_W_NR_DatyWydan");
926                    REKLAMADataSet.DatyWydanRow dataWydania = dataWydanTable[0];
927
928                    REKLAMADataSet.REKLAMARow reklama = (REKLAMADataSet.REKLAMARow)em.GetParentRow("REKLAMA_UKAZE_SIE_W_NR");
[7]929                                       
[2]930                    fakturaDetailsRow.ROK = Convert.ToInt16(dataWydania.rok);
931                    fakturaDetailsRow.MIESIAC = Convert.ToInt16(dataWydania.ms);
932                    fakturaDetailsRow.TYTUL = Convert.ToInt16(dataWydania.idTytulu);
933                    fakturaDetailsRow.NAZWA_USLUGI = reklama.ID_REKLAMY + " | " + em.Nr_Wydania;
[7]934                    fakturaDetailsRow.reklamaId = reklama.ReklamaID;
[2]935                    fakturaDetailsRow.NR_WYDANIA = em.Nr_Wydania;
936
937                    fakturaDetailsRow.CENA_JEDN = Convert.ToDecimal(reklama.CENA_JEDN);
938                    fakturaDetailsRow.ILOSC = 1;
939                    fakturaDetailsRow.JM = "szt.";
940
941                    if (naglowekFaktury.Iswaluta_mianoNull())
942                    {
943                        fakturaDetailsRow.UPUST_NETTO = Convert.ToDecimal(reklama.RABAT) * fakturaDetailsRow.CENA_JEDN;
944                        fakturaDetailsRow.UPUST_PR = reklama.RABAT;
945                        decimal netto = (1 - Convert.ToDecimal(reklama.RABAT)) * fakturaDetailsRow.CENA_JEDN;
946                        fakturaDetailsRow.NETTO = netto;
947                        fakturaDetailsRow.S_VAT = reklama.VAT;
948                        decimal VAT = Convert.ToDecimal(reklama.VAT);
949                        fakturaDetailsRow.VAT = Convert.ToDecimal(Math.Round(VAT * netto, 2));
950                        fakturaDetailsRow.BRUTTO = Convert.ToDecimal(Math.Round((1 + VAT) * netto, 2));
951                    }
952                    else
953                    {
[7]954                        //int krotnosc = this.rEKLAMADataSet.UKAZE_SIE_W_NR.PoliczAktywne(reklama.ReklamaID);
955
[2]956                        fakturaDetailsRow.BRUTTO = Convert.ToDecimal((reklama.Brutto_Euro / reklama.KROTNOŒÆ) * naglowekFaktury.waluta_kurs);
957                        brutto_waluta += Convert.ToDecimal(reklama.Brutto_Euro / reklama.KROTNOŒÆ);
958                        fakturaDetailsRow.S_VAT = reklama.VAT;
959                        decimal VAT = Convert.ToDecimal(reklama.VAT);
960                        decimal brutto = fakturaDetailsRow.BRUTTO;
961                        fakturaDetailsRow.VAT = Convert.ToDecimal(Math.Round(VAT * brutto / (1 + VAT), 2));
962                        decimal netto = brutto - fakturaDetailsRow.VAT;
963                        fakturaDetailsRow.NETTO = netto;
964                        fakturaDetailsRow.UPUST_PR = reklama.RABAT;
965                        if (fakturaDetailsRow.UPUST_PR != 0)
966                        {
967                            fakturaDetailsRow.UPUST_NETTO = netto / Convert.ToDecimal(reklama.RABAT) - netto;
968                        }
969                        else
970                        {
971                            fakturaDetailsRow.UPUST_NETTO = 0;
972                        }
973
974                        fakturaDetailsRow.CENA_JEDN = Convert.ToDecimal(netto + fakturaDetailsRow.UPUST_NETTO);
975                    }
976
977                    fakturaDetailsRow.TYP = 2;
978                    fakturaDetailsRow.PODTYP = 1;
979                    fakturaDetailsRow.ID_FAKTURY = naglowekFaktury.ID_FAKTURY;
980
981                    if (reklama.wyroznienie)
982                    {
983                        fakturaDetailsRow.wyroznienie = true;
984                    }
985
986                    this.rEKLAMADataSet.FAKTURA_DETAILS.AddFAKTURA_DETAILSRow(fakturaDetailsRow);
987                }
988            }
989
990            if (brutto_waluta != 0)
991            {
[7]992                naglowekFaktury.waluta_brutto = Math.Round(Convert.ToDouble(brutto_waluta),2);
993                naglowekFaktury.EndEdit();
[2]994            }
995        }
996
997        private void fAKTURYDataGridView_DataBindingComplete(object sender, DataGridViewBindingCompleteEventArgs e)
998        {
999            foreach (DataGridViewRow row in fAKTURYDataGridView.Rows)
1000            {
1001                DataRowView r = (DataRowView)row.DataBoundItem;
[7]1002                REKLAMADataSet.FAKTURYRow f = (REKLAMADataSet.FAKTURYRow)r.Row;
[2]1003                if (!f.IsidFakturyKorektaNull())
1004                {
1005                    row.DefaultCellStyle.ForeColor = Color.Red;
1006                }
1007            }
1008        }
1009
1010        private void korektaDoExportButton_Click(object sender, EventArgs e)
1011        {
1012            if (fAKTURYBindingSource.Current != null)
1013            {
1014                this.Cursor = Cursors.WaitCursor;
1015
1016                DataRowView row = (DataRowView)fAKTURYBindingSource.Current;
1017                REKLAMADataSet.FAKTURYRow faktura = (REKLAMADataSet.FAKTURYRow)row.Row;
1018
[17]1019                if (faktura.KOREKTA && faktura.EKSPORT)
[2]1020                {
1021                    faktura.EKSPORT = false;
1022                    fAKTURYBindingSource.EndEdit();
1023                    fAKTURYTableAdapter.Update(this.rEKLAMADataSet.FAKTURY);
1024                }
1025
1026                this.Cursor = Cursors.Default;
1027            }
1028        }
1029
1030        private void button6_Click(object sender, EventArgs e)
1031        {
1032            if (fAKTURYBindingSource.Current != null)
1033            {
1034                DataRowView row = (DataRowView)fAKTURYBindingSource.Current;
1035                REKLAMADataSet.FAKTURYRow f =
1036                    (REKLAMADataSet.FAKTURYRow)row.Row;
1037
1038                REKLAMADataSetTableAdapters.WplatyTableAdapter wplatyTableAdapter
1039                = new Baza_Reklam.REKLAMADataSetTableAdapters.WplatyTableAdapter();
1040                wplatyTableAdapter.Connection.ConnectionString = ConnString.getConnString().Value;
1041                REKLAMADataSet.WplatyDataTable table = wplatyTableAdapter.GetDataByIdFaktury(f.ID_FAKTURY);
1042
1043                PaymentForm2 pf2;
1044
1045                if (table.Count == 0)
1046                {
1047                    pf2 = new PaymentForm2(0, f.ID_FAKTURY);
1048                }
1049                else
1050                {
1051                    pf2 = new PaymentForm2(table[0].idWplaty, f.ID_FAKTURY);
1052                }
1053
1054                pf2.ShowDialog();
1055            }
1056        }
1057
1058        private void reklama1Button_Click(object sender, EventArgs e)
1059        {
1060            if (rEKLAMABindingSource.Current != null)
1061            {
1062                DataRowView row = (DataRowView)rEKLAMABindingSource.Current;
[5]1063                REKLAMADataSet.REKLAMARow reklama = (REKLAMADataSet.REKLAMARow)row.Row;
1064                int id = reklama.ReklamaID;
1065
1066                OrderDetails.getOrderDetails().pokazSzczegolyZamowienia(id);
[7]1067
[2]1068                if (OrderDetails.getOrderDetails().ShowDialog() == DialogResult.OK)
1069                {
[7]1070                    rEKLAMATableAdapter.FillByIdZamowienia(this.rEKLAMADataSet.REKLAMA, reklama.idZamowienia);
1071                    rEKLAMABindingSource.Position = rEKLAMABindingSource.Find("reklamaId", id);
[2]1072                }
1073            }
1074        }
1075
1076        private void reklama2Button_Click(object sender, EventArgs e)
1077        {
1078            if (rEKLAMABindingSource1.Current != null)
1079            {
[33]1080                DataRowView row = (DataRowView)rEKLAMABindingSource1.Current;
[5]1081                REKLAMADataSet.REKLAMARow reklama = (REKLAMADataSet.REKLAMARow)row.Row;
1082                int id = reklama.ReklamaID;
1083
1084                OrderDetails.getOrderDetails().pokazSzczegolyZamowienia(id);
[2]1085                if (OrderDetails.getOrderDetails().ShowDialog() == DialogResult.OK)
1086                {
[5]1087                    ReklamyBezZamowienia = rEKLAMATableAdapter.GetDataByCustomerIdandIdZamowienia(klient.CustomerID);
1088                    rEKLAMABindingSource1.Position = rEKLAMABindingSource1.Find("reklamaId", id);
[2]1089                }
1090            }
1091        }
1092
1093        private void fAKTURYBindingSource_CurrentChanged(object sender, EventArgs e)
1094        {
1095            if (fAKTURYBindingSource.Current != null)
1096            {
1097                if (
1098                    ((REKLAMADataSet.FAKTURYRow)
[17]1099                    ((DataRowView)fAKTURYBindingSource.Current).Row).KOREKTA)
[2]1100                {
1101                    wplataButton.Enabled = false;
1102                }
1103                else
1104                {
1105                    wplataButton.Enabled = true;
1106                }
1107            }
1108        }
1109
1110        private void zamowieniaBindingSource_CurrentChanged(object sender, EventArgs e)
1111        {
1112            if (zamowieniaBindingSource.Current != null)
1113            {
[18]1114                DataRowView z = (DataRowView)zamowieniaBindingSource.Current;
1115                REKLAMADataSet.zamowieniaRow zamowienie = (REKLAMADataSet.zamowieniaRow)z.Row;
1116                rEKLAMATableAdapter.FillByIdZamowienia(this.rEKLAMADataSet.REKLAMA, zamowienie.idZamowienia);
1117                fAKTURYTableAdapter.FillByIdZamowienia(this.rEKLAMADataSet.FAKTURY, zamowienie.idZamowienia);
1118
1119                dodajDoZamButton.Enabled = !zamowienie.zafakturowanoWszystko;
1120                usunZZamButton.Enabled = !zamowienie.zafakturowanoWszystko;
[2]1121            }
1122        }
[5]1123
[6]1124        private void usunFaktureButton_Click(object sender, EventArgs e)
1125        {
[7]1126            if (fAKTURYBindingSource.Current != null)
1127            {
1128                if (
1129                    MessageBox.Show("Czy na pewno chcesz usun¹æ fakturê ?",
1130                    "",
1131                    MessageBoxButtons.OKCancel,
1132                    MessageBoxIcon.Question)
1133                    == DialogResult.OK)
1134                {
1135                    this.Cursor = Cursors.WaitCursor;
1136
1137                    REKLAMADataSet.FAKTURYRow faktura = (REKLAMADataSet.FAKTURYRow)
1138                        ((DataRowView)fAKTURYBindingSource.Current).Row;
1139
[17]1140                    if (faktura.KOREKTA)
[7]1141                    {
[30]1142                        int i = fAKTURYBindingSource.Find("idFakturyKorekta",faktura.ID_FAKTURY);
1143                        if (i > -1)
1144                        {
1145                            MessageBox.Show("Nie mo¿na usun¹æ faktury");
1146                        }
1147                        else
1148                        {
1149                            usunKorekte(faktura);
1150                        }
[7]1151                    }
1152                    else
1153                    {
1154                        usunFakture(faktura);
1155                    }
1156
1157                    this.Cursor = Cursors.Default;
1158                }
1159            }
[6]1160        }
1161
[30]1162        private void usunKorekte(REKLAMADataSet.FAKTURYRow korekta)
[7]1163        {
[30]1164            int idKorekty = korekta.ID_FAKTURY;
1165            int idKorygowanejFaktury = korekta.idFakturyKorekta;
1166            int idZam = korekta.idZamowienia;
[7]1167
[30]1168              int i = fAKTURYBindingSource.Find("ID_FK_KOR",idKorekty);
1169         
1170            REKLAMADataSet.FAKTURYRow korygowanaFaktura = (REKLAMADataSet.FAKTURYRow)
1171                ((DataRowView)fAKTURYBindingSource.List[i]).Row;
[7]1172
[30]1173             int j = fAKTURYBindingSource.Find("ID_FAKTURY",idKorygowanejFaktury);
1174
[32]1175             if (j > -1 && i!= j)
[30]1176             {
1177                 REKLAMADataSet.FAKTURYRow poprzedniaKorekta = (REKLAMADataSet.FAKTURYRow)
1178                     ((DataRowView)fAKTURYBindingSource.List[j]).Row;
1179
1180                 korygowanaFaktura.ID_FK_KOR = poprzedniaKorekta.ID_FAKTURY;
1181             }
1182             else
1183             {
1184                 korygowanaFaktura.SetID_FK_KORNull();
1185             }
1186           
[7]1187            fAKTURYBindingSource.EndEdit();
1188
1189            SqlConnection conn = new SqlConnection(ConnString.getConnString().Value);
1190
1191            fAKTURYTableAdapter.Connection = conn;
1192            fakturyDetailsTableAdapter.Connection = conn;
1193
1194            conn.Open();
1195            SqlTransaction transaction = conn.BeginTransaction();
1196
1197            fAKTURYTableAdapter.AttachTransaction(transaction);
1198            fakturyDetailsTableAdapter.AttachTransaction(transaction);
1199
1200            try
1201            {
1202                fAKTURYTableAdapter.Update(this.rEKLAMADataSet.FAKTURY);
1203                fAKTURYTableAdapter.Delete(idKorekty);
1204                fakturyDetailsTableAdapter.Delete(idKorekty);
1205
1206                transaction.Commit();
1207            }
1208            catch (Exception ex)
1209            {
1210                transaction.Rollback();
1211                throw ex;
1212            }
1213            finally
1214            {
1215                fAKTURYTableAdapter.FillByIdZamowienia(this.rEKLAMADataSet.FAKTURY, idZam);
1216                conn.Close();
1217            }
1218        }
1219
1220        private void usunFakture(REKLAMADataSet.FAKTURYRow faktura)
1221        {
1222            int idFakt = faktura.ID_FAKTURY;
1223            int idZam = faktura.idZamowienia;
1224            bool zmienReklamyOrazZamowienie = false;
1225
1226            if (this.fAKTURYBindingSource.List.Count == 1)
1227            {
1228                zmienReklamyOrazZamowienie = true;
1229            }
1230
1231            this.emisjeTableAdapter.ClearBeforeFill = false;
1232            this.emisjeTableAdapter.FillByIdFaktury(this.rEKLAMADataSet.UKAZE_SIE_W_NR, idFakt);
1233
1234            foreach (DataRow r in this.rEKLAMADataSet.UKAZE_SIE_W_NR.Rows)
1235            {
1236                REKLAMADataSet.UKAZE_SIE_W_NRRow row = (REKLAMADataSet.UKAZE_SIE_W_NRRow)r;
1237
1238                row.SetidFakturyNull();
1239                row.SetnettoNull();
1240                row.zafakturowana = false;
1241                row.EndEdit();
1242            }
1243
[8]1244            DataRowView zam = (DataRowView)zamowieniaBindingSource.Current;
1245            REKLAMADataSet.zamowieniaRow zamowienie =
1246                (REKLAMADataSet.zamowieniaRow)zam.Row;
1247         
[7]1248            if (zmienReklamyOrazZamowienie)
1249            {
1250                foreach (DataRow r in this.rEKLAMADataSet.REKLAMA.Rows)
1251                {
1252                    REKLAMADataSet.REKLAMARow reklama = (REKLAMADataSet.REKLAMARow)r;
1253                    reklama.FAKTURA_WYSTAWIONO = false;
1254                    reklama.EndEdit();
1255                }
1256
1257                zamowienie.zafakturowano = false;
[18]1258                zamowienie.zafakturowanoWszystko = false;
[7]1259            }
1260
[8]1261            zamowienie.SetdataOstatniejZafakturowanejEmisjiNull();
1262            zamowienie.EndEdit();
1263           
[7]1264            SqlConnection conn = new SqlConnection(ConnString.getConnString().Value);
1265
1266            fAKTURYTableAdapter.Connection = conn;
1267            emisjeTableAdapter.Connection = conn;
1268            zamowieniaTableAdapter.Connection = conn;
1269            fakturyDetailsTableAdapter.Connection = conn;
1270            rEKLAMATableAdapter.Connection = conn;
1271
1272            conn.Open();
1273            SqlTransaction transaction = conn.BeginTransaction();
1274
1275            fAKTURYTableAdapter.AttachTransaction(transaction);
1276            emisjeTableAdapter.AttachTransaction(transaction);
1277            zamowieniaTableAdapter.AttachTransaction(transaction);
1278            fakturyDetailsTableAdapter.AttachTransaction(transaction);
1279            rEKLAMATableAdapter.AttachTransaction(transaction);
1280
1281            try
1282            {
1283                fAKTURYTableAdapter.Delete(idFakt);
1284                fakturyDetailsTableAdapter.Delete(idFakt);
[28]1285                wplatyTableAdapter.Delete(idFakt);
[7]1286                emisjeTableAdapter.Update(this.rEKLAMADataSet.UKAZE_SIE_W_NR);
1287                zamowieniaTableAdapter.Update(this.rEKLAMADataSet.zamowienia);
1288                rEKLAMATableAdapter.Update(this.rEKLAMADataSet.REKLAMA);
1289
1290                transaction.Commit();
1291            }
1292            catch (Exception e)
1293            {
1294                transaction.Rollback();
1295            }
1296            finally
1297            {
1298                this.rEKLAMADataSet.UKAZE_SIE_W_NR.Clear();
1299                fAKTURYTableAdapter.FillByIdZamowienia(this.rEKLAMADataSet.FAKTURY, idZam);
1300                conn.Close();
1301            }
1302        }
[25]1303
1304        private void proformaButton_Click(object sender, EventArgs e)
1305        {
1306            if (zamowieniaBindingSource.Current != null)
1307            {
1308                this.Cursor = Cursors.WaitCursor;
1309
1310                DataRowView z = (DataRowView)zamowieniaBindingSource.Current;
1311                REKLAMADataSet.zamowieniaRow zamowienie = (REKLAMADataSet.zamowieniaRow)z.Row;
1312
1313                REKLAMADataSet.KLIENCIRow klient = (REKLAMADataSet.KLIENCIRow)this.klienciTableAdapter.GetDataByCustomerId(zamowienie.idKlienta).Rows[0];
1314                string errorMessage = czyMoznaZafakturowac(zamowienie, klient);
1315
1316                if (errorMessage != string.Empty)
1317                {
1318                    MessageBox.Show(errorMessage);
1319                    this.Cursor = Cursors.Default;
1320                    return;
1321                }
1322
1323                int id = wystawFakture(zamowienie, klient);
[28]1324                FactureViewer fv = new FactureViewer(id,true);
[25]1325
1326                fv.ShowDialog();
1327
1328                DataRow[] rows = this.rEKLAMADataSet.FAKTURY.Select("id_faktury=" + id);
1329                usunFakture((REKLAMADataSet.FAKTURYRow)rows[0]);
1330
1331                this.Cursor = Cursors.Default;
1332            }
1333        }
[2]1334    }
1335}
Notatka: Zobacz TracBrowser aby uzyskać więcej informacji.