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

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