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

Wersja 49, 59.2 KB (wprowadzona przez dorota, 17 years temu)

zablokowanie usuwania faktury, gdy istnieje korekta

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