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

Wersja 121, 59.8 KB (wprowadzona przez dorota, 17 years temu)

1.0.0.63

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