root/tags/BazaReklam_1.2.9/Facturer.cs

Wersja 889, 42.0 KB (wprowadzona przez sylwek, 16 years temu)

Fix #184 Release version commit

Line 
1using System;
2using System.Collections.Generic;
3using System.Data;
4using System.Data.SqlClient;
5using System.Windows.Forms;
6using Baza_Reklam.Classes.Helpers;
7using Baza_Reklam.Classes.Interfaces;
8using Baza_Reklam.Classes.Model;
9using Baza_Reklam.Classes.Repositories;
10
11namespace Baza_Reklam
12{
13    public partial class Facturer : Form
14    {
15        private int reklamaId;
16        private int customerId;
17        private readonly string _connectionString = ConnString.getConnString().Value;
18
19        private List<Title> _titles;
20
21        public Facturer(int rekId)
22        {
23            InitializeComponent();
24            reklamaId = rekId;
25
26            kLIENCITableAdapter.Connection.ConnectionString = ConnString.getConnString().Value;
27            kONTATableAdapter.Connection.ConnectionString = ConnString.getConnString().Value;
28            fAKTURYTableAdapter.Connection.ConnectionString = ConnString.getConnString().Value;
29            rEKLAMATableAdapter.Connection.ConnectionString = ConnString.getConnString().Value;
30            emisjeTableAdapter.Connection.ConnectionString = ConnString.getConnString().Value;
31            fakturA_DETAILSTableAdapter.Connection.ConnectionString = ConnString.getConnString().Value;
32            datyWydanTableAdapter.Connection.ConnectionString = ConnString.getConnString().Value;
33
34            TitleRepository repository = new TitleRepository(ConnString.getConnString().Value);
35            _titles = repository.FindAllActive();
36        }
37
38        /// <summary>
39        /// £aduje informacje z reklamy o fakturze - je¿eli by³a wczeœniej wystawiona proforma
40        /// lub inna faktura, to w tabeli REKLAMA sa zapamietane min. daty. Je¿eli faktura jest wystawiana
41        /// po raz pierwszy to wpisuje daty systemowe.
42        /// </summary>
43        private void Facturer_Load(object sender, EventArgs e)
44        {
45            rEKLAMATableAdapter.FillByReklamaId(rEKLAMADataSet.REKLAMA, reklamaId);
46
47            if (rEKLAMABindingSource.Current != null)
48            {
49                DataRowView row = (DataRowView)rEKLAMABindingSource.Current;
50
51                int idAgencji = DbUtils.idAgencji(row["SYMBOL AKWIZYTORA"].ToString());
52
53                kONTATableAdapter.FillByIdAgencji(sLOWNIKDataSet.KONTA, idAgencji);
54
55                rEKLAMABindingSource.ResetBindings(false);
56
57                customerId = Convert.ToInt32(row["customerId"]);
58
59                kLIENCITableAdapter.FillByCustomerId(rEKLAMADataSet.KLIENCI, customerId);
60
61                if (row["id_faktury"] != DBNull.Value)
62                {
63                    wystawFaktureButton.Enabled = false;
64                    wystawProformeButton.Enabled = false;
65                    //  usunButton.Enabled = true & User.Instance().St_kierownik;
66
67                    nUMER_ROZTextBox.Text = DbUtils.tagAgenta(row["SYMBOL AKWIZYTORA"].ToString());
68
69                    string numer_fakt = Convert.ToString(row["FAKTURA NUMER"]);
70                    string[] read = new string[3];
71                    read = numer_fakt.Split("/".ToCharArray(), 3);
72                    nUMERTextBox.Text = read[0];
73
74                    groupBox2.Enabled = true & User.Instance().IsAdmin;
75                 
76                }
77                else
78                {
79                    Title title = _titles.Find(delegate(Title t) { return t.ShortName == row["TYTU£"].ToString(); });
80                    IInvoiceProvider invoiceProvider = InvoiceProviderFactory.GetInvoiceProviderById(title.InvoiceProvider);
81                   
82                    nUMER_ROZTextBox.Text = DbUtils.tagAgenta(row["SYMBOL AKWIZYTORA"].ToString());
83                    nUMERTextBox.Text = DbUtils.numerNowejFaktury(nUMER_ROZTextBox.Text, DateTime.Today.Year, invoiceProvider.SystemKsiegowyId).ToString();
84
85                    if (row["FAKTURA DATA SPRZEDA¯Y"] == DBNull.Value)
86                    {
87                        dATA_SPRZEDAZYDateTimePicker.Value = DateTime.Today;
88                    }
89
90                    if (row["FAKTURA DATA WYSTAWIENIA"] == DBNull.Value)
91                    {
92                        dATA_WYSTAWIENIADateTimePicker.Value = DateTime.Today;
93                    }
94
95                    if (row["Zaliczka_Data"] == DBNull.Value)
96                    {
97                        zaliczka_DataDateTimePicker.Value = DateTime.Today;
98                    }
99
100                    if (row["FAKTURA TERMIN ZAP£ATY"] == DBNull.Value)
101                    {
102                        tERMIN_ZAPLATYDateTimePicker.Value = DateTime.Today.AddDays(7);
103                    }
104
105                    sPOSOB_ZAPLATYListBox.SelectedIndex = 1;
106
107                    rEKLAMABindingSource.EndEdit();
108
109                    wystawFaktureButton.Enabled = true;
110                    wystawProformeButton.Enabled = true;
111                    // usunButton.Enabled = false;
112
113                    //  iD_KONTAComboBox.SelectedIndex = 0;
114                }
115            }
116        }
117
118        /// <summary>
119        /// Wyœwietla szczegó³y konta
120        /// </summary>
121        private void button1_Click(object sender, EventArgs e)
122        {
123            if (kONTABindingSource.Current != null)
124            {
125                DataRowView row = (DataRowView)kONTABindingSource.Current;
126                MessageBox.Show(row["konto"].ToString());
127            }
128        }
129
130        private void wystawFaktureButton_Click(object sender, EventArgs e)
131        {
132            Cursor = Cursors.WaitCursor;
133
134            bool ok = false;
135
136            // if (tYPLabel1.Text == "BEZP£ATNA"
137
138            if (zATWIERDZONO_DO_DRUKUCheckBox.CheckState != CheckState.Checked)
139            {
140                MessageBox.Show("Zamówienie nie jest zatwierdzone do druku.");
141                Cursor = Cursors.Default;
142                return;
143            }
144
145            if (DbUtils.istniejeFaktura(Convert.ToInt32(nUMERTextBox.Text),
146                nUMER_ROZTextBox.Text, dATA_WYSTAWIENIADateTimePicker.Value.Year))
147            {
148                MessageBox.Show("Istnieje ju¿ faktura o numerze " + nUMERTextBox.Text + "/" + nUMER_ROZTextBox.Text + "/" + dATA_WYSTAWIENIADateTimePicker.Value.Year.ToString());
149                Cursor = Cursors.Default;
150                return;
151            }
152
153            if (iD_KONTAComboBox.SelectedValue == null)
154            {
155                MessageBox.Show("Wybierz konto");
156                Cursor = Cursors.Default;
157                return;
158            }
159
160
161            if ((nipKrajTextBox.Text.Length == 0) && ((int)iD_KONTAComboBox.SelectedValue != 1))
162            {
163                if (MessageBox.Show("Brak kodu kraju w EU. Czy na pewno chcesz wystawiæ fakturê?", "", MessageBoxButtons.YesNo, MessageBoxIcon.Exclamation)
164                    == DialogResult.No)
165                {
166                    Cursor = Cursors.Default;
167                    return;
168                }
169            }
170
171            SqlConnection conn = new SqlConnection(ConnString.getConnString().Value);
172
173            SqlTransaction transaction;
174
175            SqlCommand command = new SqlCommand("Proc_Make_Faktura_Waluty", conn);
176            command.CommandType = CommandType.StoredProcedure;
177
178            //dodawanie parametrow
179            command.Parameters.AddWithValue("@ReklamaID", reklamaId);
180            command.Parameters.AddWithValue("@FakturaNumer", nUMERTextBox.Text);
181            command.Parameters.AddWithValue("@NumerRoz", nUMER_ROZTextBox.Text);
182
183            switch (sPOSOB_ZAPLATYListBox.SelectedIndex)
184            {
185                case 1:
186                    command.Parameters.AddWithValue("@FakturaSposobZaplaty", "Przelew");
187                    break;
188                case 2:
189                    command.Parameters.AddWithValue("@FakturaSposobZaplaty", "Gotówka");
190                    break;
191                case 3:
192                    command.Parameters.AddWithValue("@FakturaSposobZaplaty", "Barter");
193                    break;
194                default:
195                    command.Parameters.AddWithValue("@FakturaSposobZaplaty", "Karta kredytowa");
196                    break;
197            }
198
199            DataRowView row = (DataRowView)rEKLAMABindingSource.Current;
200
201            command.Parameters.AddWithValue("@Zaplacono", zAPLACONOCheckBox.Checked);
202            command.Parameters.AddWithValue("@FakturaDataWyst", dATA_WYSTAWIENIADateTimePicker.Value);
203            command.Parameters.AddWithValue("@FakturaDataSprzed", dATA_SPRZEDAZYDateTimePicker.Value);
204            command.Parameters.AddWithValue("@FakturaTerminZaplaty", tERMIN_ZAPLATYDateTimePicker.Value);
205            command.Parameters.AddWithValue("@Konto", iD_KONTAComboBox.SelectedValue);
206            command.Parameters.AddWithValue("@StawkaVat", row["VAT"]);
207
208            if (zaliczka_BruttoTextBox.Text != "")
209            {
210                command.Parameters.AddWithValue("@Zaliczka_Brutto", row["Zaliczka_Brutto"]);
211                command.Parameters.AddWithValue("@Zaliczka_Data", zaliczka_DataDateTimePicker.Value);
212            }
213
214            command.Parameters.AddWithValue("@wyroznienie", row["wyroznienie"]);
215
216            //dodawanie parametrow do faktury w walucie
217            SqlCommand command2 = new SqlCommand();
218            command2.Connection = conn;
219            command2.CommandType = CommandType.Text;
220            command2.CommandText = "select Brutto_Euro, Brutto_Euro_Miano, waluta_kurs, waluta_przelicznik,waluta_kurs_z_dnia,waluta_tabela_nr from "
221                + "reklama where reklamaId= " + reklamaId;
222
223            conn.Open();
224
225            SqlDataReader reader = command2.ExecuteReader();
226            while (reader.Read())
227            {
228                command.Parameters.AddWithValue("@waluta_brutto", reader.GetValue(0));
229                command.Parameters.AddWithValue("@waluta_miano", reader.GetValue(1));
230                command.Parameters.AddWithValue("@waluta_kurs", reader.GetValue(2));
231                command.Parameters.AddWithValue("@waluta_przelicznik", reader.GetValue(3));
232                command.Parameters.AddWithValue("@waluta_kurs_z_dnia", reader.GetValue(4));
233                command.Parameters.AddWithValue("@waluta_tabela_nr", reader.GetValue(5));
234            }
235
236            conn.Close();
237
238            conn.Open();
239
240            //wystawanie faktury
241            transaction = conn.BeginTransaction();
242
243            command.Transaction = transaction;
244
245            try
246            {
247                command.ExecuteNonQuery();
248                transaction.Commit();
249                ok = true;
250                MessageBox.Show("Fakture dodano!");
251            }
252            catch
253            {
254                transaction.Rollback();
255
256                throw;
257            }
258
259            conn.Close();
260
261
262            //odswiezanie - musi byæ bo faktura jest dodawana przez procedure
263
264            if (ok)
265            {
266                rEKLAMADataSet.REKLAMA.Clear();
267                rEKLAMATableAdapter.FillByReklamaId(rEKLAMADataSet.REKLAMA, reklamaId);
268                row = (DataRowView)rEKLAMABindingSource.Current;
269
270                rEKLAMADataSet.FAKTURY.Clear();
271                int idFaktury = Convert.ToInt32(row["id_faktury"]);
272                fAKTURYTableAdapter.FillByIdFaktury(rEKLAMADataSet.FAKTURY, idFaktury);
273
274                //wydruk faktury
275                FactureViewer fv = new FactureViewer(idFaktury, true);
276                fv.ShowDialog();
277
278                Cursor = Cursors.Default;
279
280                wystawFaktureButton.Enabled = false;
281                wystawProformeButton.Enabled = false;
282                DialogResult = DialogResult.OK;
283                Close();
284            }
285            else
286            {
287                Cursor = Cursors.Default;
288            }
289        }
290
291
292        /// <summary>
293        ///  Wystawienie proformy polega na wystawieniu faktury i poŸniejszym usuniêciu jej z bazy...
294        /// </summary>
295        private void wystawProformeButton_Click(object sender, EventArgs e)
296        {
297            bool ok = false;
298
299            if (iD_KONTAComboBox.SelectedValue == null)
300            {
301                MessageBox.Show("Wybierz konto");
302                return;
303            }
304
305            SqlConnection conn = new SqlConnection(
306                        ConnString.getConnString().Value);
307
308            SqlTransaction transaction;
309
310            SqlCommand command = new SqlCommand("Proc_Make_Faktura_Waluty", conn);
311            command.CommandType = CommandType.StoredProcedure;
312
313            command.Parameters.AddWithValue("@ReklamaID", reklamaId);
314            command.Parameters.AddWithValue("@FakturaNumer", nUMERTextBox.Text);
315            command.Parameters.AddWithValue("@NumerRoz", nUMER_ROZTextBox.Text);
316
317            switch (sPOSOB_ZAPLATYListBox.SelectedIndex)
318            {
319                case 1:
320                    command.Parameters.AddWithValue("@FakturaSposobZaplaty", "Przelew");
321                    break;
322                case 2:
323                    command.Parameters.AddWithValue("@FakturaSposobZaplaty", "Gotówka");
324                    break;
325                case 3:
326                    command.Parameters.AddWithValue("@FakturaSposobZaplaty", "Barter");
327                    break;
328                default:
329                    command.Parameters.AddWithValue("@FakturaSposobZaplaty", "Karta kredytowa");
330                    break;
331            }
332
333            DataRowView r = (DataRowView)rEKLAMABindingSource.Current;
334
335            command.Parameters.AddWithValue("@Zaplacono", zAPLACONOCheckBox.Checked);
336            command.Parameters.AddWithValue("@FakturaDataWyst", dATA_WYSTAWIENIADateTimePicker.Value);
337            command.Parameters.AddWithValue("@FakturaDataSprzed", dATA_SPRZEDAZYDateTimePicker.Value);
338            command.Parameters.AddWithValue("@FakturaTerminZaplaty", tERMIN_ZAPLATYDateTimePicker.Value);
339            command.Parameters.AddWithValue("@Konto", iD_KONTAComboBox.SelectedValue);
340            command.Parameters.AddWithValue("@StawkaVat", r["VAT"]);
341
342            if (zaliczka_BruttoTextBox.Text != "")
343            {
344                command.Parameters.AddWithValue("@Zaliczka_Brutto", r["Zaliczka_Brutto"]);
345                command.Parameters.AddWithValue("@Zaliczka_Data", zaliczka_DataDateTimePicker.Value);
346            }
347
348            command.Parameters.AddWithValue("@wyroznienie", r["wyroznienie"]);
349
350            SqlCommand command2 = new SqlCommand();
351            command2.Connection = conn;
352            command2.CommandType = CommandType.Text;
353            command2.CommandText = "select Brutto_Euro, Brutto_Euro_Miano, waluta_kurs, waluta_przelicznik,waluta_kurs_z_dnia,waluta_tabela_nr from "
354                + "reklama where reklamaId= " + reklamaId;
355
356            conn.Open();
357
358            SqlDataReader reader = command2.ExecuteReader();
359            while (reader.Read())
360            {
361                command.Parameters.AddWithValue("@waluta_brutto", reader.GetValue(0));
362                command.Parameters.AddWithValue("@waluta_miano", reader.GetValue(1));
363                command.Parameters.AddWithValue("@waluta_kurs", reader.GetValue(2));
364                command.Parameters.AddWithValue("@waluta_przelicznik", reader.GetValue(3));
365                command.Parameters.AddWithValue("@waluta_kurs_z_dnia", reader.GetValue(4));
366                command.Parameters.AddWithValue("@waluta_tabela_nr", reader.GetValue(5));
367            }
368
369            conn.Close();
370
371            conn.Open();
372
373            transaction = conn.BeginTransaction();
374
375            command.Transaction = transaction;
376
377            try
378            {
379                command.ExecuteNonQuery();
380                transaction.Commit();
381                ok = true;
382            }
383            catch
384            {
385                transaction.Rollback();
386                throw;
387            }
388            finally
389            {
390                conn.Close();
391            }
392
393            //odswiezanie
394            if (ok)
395            {
396                rEKLAMADataSet.REKLAMA.Clear();
397                rEKLAMATableAdapter.FillByReklamaId(rEKLAMADataSet.REKLAMA, reklamaId);
398                DataRowView row = (DataRowView)rEKLAMABindingSource.Current;
399
400                int idFaktury = Convert.ToInt32(row["id_faktury"]);
401                fAKTURYTableAdapter.FillByIdFaktury(rEKLAMADataSet.FAKTURY, idFaktury);
402
403                FactureViewer fv = new FactureViewer(idFaktury, false);
404                fv.ShowDialog();
405
406                usunFakture(idFaktury);
407
408                //odswiezenie reklam
409                rEKLAMADataSet.REKLAMA.Clear();
410                rEKLAMATableAdapter.FillByReklamaId(rEKLAMADataSet.REKLAMA, reklamaId);
411                row = (DataRowView)rEKLAMABindingSource.Current;
412
413                //ustawienie pól formularza na dodanie nowej faktury
414                Title title = _titles.Find(delegate(Title t) { return t.ShortName == row["TYTU£"].ToString(); });
415                IInvoiceProvider invoiceProvider = InvoiceProviderFactory.GetInvoiceProviderById(title.InvoiceProvider);
416               
417                nUMER_ROZTextBox.Text = DbUtils.tagAgenta(row["SYMBOL AKWIZYTORA"].ToString());
418                nUMERTextBox.Text = DbUtils.numerNowejFaktury(nUMER_ROZTextBox.Text, DateTime.Today.Year, invoiceProvider.SystemKsiegowyId).ToString();
419
420                if (row["FAKTURA DATA SPRZEDA¯Y"] == DBNull.Value)
421                {
422                    dATA_SPRZEDAZYDateTimePicker.Value = DateTime.Today;
423                }
424
425                if (row["FAKTURA DATA WYSTAWIENIA"] == DBNull.Value)
426                {
427                    dATA_WYSTAWIENIADateTimePicker.Value = DateTime.Today;
428                }
429
430                if (row["Zaliczka_Data"] == DBNull.Value)
431                {
432                    zaliczka_DataDateTimePicker.Value = DateTime.Today;
433                }
434
435                if (row["FAKTURA TERMIN ZAP£ATY"] == DBNull.Value)
436                {
437                    tERMIN_ZAPLATYDateTimePicker.Value = DateTime.Today.AddDays(7);
438                }
439
440                //iD_KONTAComboBox.SelectedIndex = 0;
441
442                sPOSOB_ZAPLATYListBox.SelectedIndex = 1;
443
444                rEKLAMABindingSource.EndEdit();
445
446                wystawFaktureButton.Enabled = true;
447                wystawProformeButton.Enabled = true;
448            }
449        }
450
451        /// <summary>
452        /// Zmiana faktury dla Poznania.
453        /// </summary>
454        private void fakturaPoznan(int idFaktury)
455        {
456
457            int idSprzedawcy = 6;
458            int idNabywcy = 18845;
459            int idKonta = 43;
460
461            SqlCommand command = new SqlCommand();
462            command.Connection = new SqlConnection(ConnString.getConnString().Value);
463            command.CommandText = "select Adres_Fkatura from Klienci where CustomerId=18845";
464
465            command.Connection.Open();
466
467            string nabywcaAdres = Convert.ToString(command.ExecuteScalar());
468
469            command.CommandText = "select Nip from KLIENCI where  CustomerId=18845";
470
471            string nabywcaNIP = Convert.ToString(command.ExecuteScalar());
472
473            command.CommandText = "select Adres_Fk from AGENCJE where Id_agencji = 2";
474
475            string sprzedawcaAdres = Convert.ToString(command.ExecuteScalar());
476
477            command.CommandText = "select NIP from AGENCJE where Id_agencji = 2";
478
479            string sprzedawcaNIP = Convert.ToString(command.ExecuteScalar());
480
481            command.Connection.Close();
482
483            command.CommandText = "update faktury set ID_SPRZEDAWCY=@idSprzedawcy, ID_NABYWCY=@idNabywcy," +
484            "NABYWCA_ADRES=@nadres,SPRZEDAWCA_ADRES=@sadres,NABYWCA_NIP=@nnip,SPRZEDAWCA_NIP=@snip," +
485            "ID_KONTA=@idKonta where ID_FAKTURY=@idFaktury";
486
487            command.Parameters.AddWithValue("@idSprzedawcy", idSprzedawcy);
488            command.Parameters.AddWithValue("@idNabywcy", idNabywcy);
489            command.Parameters.AddWithValue("@nadres", nabywcaAdres);
490            command.Parameters.AddWithValue("@sadres", sprzedawcaAdres);
491            command.Parameters.AddWithValue("@nnip", nabywcaNIP);
492            command.Parameters.AddWithValue("@snip", sprzedawcaNIP);
493            command.Parameters.AddWithValue("@idKonta", idKonta);
494            command.Parameters.AddWithValue("@idFaktury", idFaktury);
495
496            try
497            {
498                command.Connection.Open();
499                command.ExecuteNonQuery();
500            }
501            finally
502            {
503                command.Connection.Close();
504            }
505        }
506
507        /// <summary>
508        /// Zmiana faktury dla Katowic.
509        /// </summary>
510        private void fakturaKatowice(int idFaktury)
511        {
512            int idSprzedawcy = 4;
513            int idNabywcy = 678;
514            int idKonta = 43;
515
516            SqlCommand command = new SqlCommand();
517            command.Connection = new SqlConnection(ConnString.getConnString().Value);
518            command.CommandText = "select Adres_Fkatura from Klienci where CustomerId=678";
519
520            command.Connection.Open();
521
522            string nabywcaAdres = Convert.ToString(command.ExecuteScalar());
523
524            command.CommandText = "select Nip from KLIENCI where  CustomerId=678";
525
526            string nabywcaNIP = Convert.ToString(command.ExecuteScalar());
527
528            command.CommandText = "select Adres_Fk from AGENCJE where Id_agencji = 2";
529
530            string sprzedawcaAdres = Convert.ToString(command.ExecuteScalar());
531
532            command.CommandText = "select NIP from AGENCJE where Id_agencji = 2";
533
534            string sprzedawcaNIP = Convert.ToString(command.ExecuteScalar());
535
536            command.Connection.Close();
537
538            command.CommandText = "update faktury set ID_SPRZEDAWCY=@idSprzedawcy, ID_NABYWCY=@idNabywcy," +
539            "NABYWCA_ADRES=@nadres,SPRZEDAWCA_ADRES=@sadres,NABYWCA_NIP=@nnip,SPRZEDAWCA_NIP=@snip," +
540            "ID_KONTA=@idKonta where ID_FAKTURY=@idFaktury";
541
542            command.Parameters.AddWithValue("@idSprzedawcy", idSprzedawcy);
543            command.Parameters.AddWithValue("@idNabywcy", idNabywcy);
544            command.Parameters.AddWithValue("@nadres", nabywcaAdres);
545            command.Parameters.AddWithValue("@sadres", sprzedawcaAdres);
546            command.Parameters.AddWithValue("@nnip", nabywcaNIP);
547            command.Parameters.AddWithValue("@snip", sprzedawcaNIP);
548            command.Parameters.AddWithValue("@idKonta", idKonta);
549            command.Parameters.AddWithValue("@idFaktury", idFaktury);
550
551            try
552            {
553                command.Connection.Open();
554                command.ExecuteNonQuery();
555            }
556            finally
557            {
558                command.Connection.Close();
559            }
560
561
562        }
563
564        private void zamknijButton_Click(object sender, EventArgs e)
565        {
566            fAKTURYBindingSource.CancelEdit();
567            DialogResult = DialogResult.Cancel;
568            Close();
569        }
570
571        private void usunButton_Click(object sender, EventArgs e)
572        {
573            if (rEKLAMABindingSource.Current != null)
574            {
575                bool ok = MessageBox.Show("Czyna pewno chcesz usun¹æ fakturê?", "", MessageBoxButtons.YesNo) == DialogResult.Yes ? true : false;
576
577                if (ok)
578                {
579                    DataRowView row = (DataRowView)rEKLAMABindingSource.Current;
580                    int idFaktury = Convert.ToInt32(row["id_faktury"]);
581
582                    usunFakture(idFaktury);
583
584                    rEKLAMADataSet.REKLAMA.Clear();
585                    rEKLAMATableAdapter.FillByReklamaId(rEKLAMADataSet.REKLAMA, reklamaId);
586                    wystawFaktureButton.Enabled = true;
587                    wystawProformeButton.Enabled = true;
588                    //    usunButton.Enabled = false;
589                }
590            }
591        }
592
593        /// <summary>
594        /// Usuwa fakture z tabel: FAKTURA, FAKTURA_DETAILS, REKLAMA (czêsciowo)
595        /// </summary>
596        /// <param name="idFaktury"></param>
597        private void usunFakture(int idFaktury)
598        {
599
600            SqlConnection conn = new SqlConnection(
601                       ConnString.getConnString().Value);
602
603            //usuwanie faktury
604            SqlCommand command3 = new SqlCommand();
605            command3.CommandText = "delete from faktury where id_faktury = @param ";
606            command3.CommandType = CommandType.Text;
607            command3.Parameters.AddWithValue("@param", idFaktury);
608
609            command3.Connection = conn;
610
611            conn.Open();
612
613            command3.ExecuteNonQuery();
614
615            conn.Close();
616
617            //usuwanie pozycji faktury
618            command3 = new SqlCommand();
619            command3.CommandText = "delete from faktura_details where id_faktury = @param ";
620            command3.CommandType = CommandType.Text;
621            command3.Parameters.AddWithValue("@param", idFaktury);
622
623            command3.Connection = conn;
624
625            conn.Open();
626
627            command3.ExecuteNonQuery();
628
629            conn.Close();
630
631            //usuniecie informacji o fakturze z tabeli REKLAMA
632            command3.CommandText = "update REKLAMA set ID_FAKTURY = null where ID_FAKTURY = @param ";
633
634            conn.Open();
635
636            command3.ExecuteNonQuery();
637
638            conn.Close();
639        }
640
641        private void poznanKatowiceButton_Click(object sender, EventArgs e)
642        {
643            DataRowView row = (DataRowView)rEKLAMABindingSource.Current;
644
645            // zmiana faktury dla Poznania i Katowic
646            if (row["customerId_Sub"] != DBNull.Value)
647            {
648                if (row["id_faktury"] == DBNull.Value)
649                {
650                    MessageBox.Show("Faktura nie zosta³a wystawiona");
651                    return;
652                }
653
654                int idFaktury = Convert.ToInt32(row["id_faktury"]);
655
656                switch (Convert.ToInt32(row["customerId_Sub"]))
657                {
658                    case 678:
659                        fakturaKatowice(idFaktury);
660                        MessageBox.Show("Faktura zosta³a zmieniona");
661                        break;
662                    case 18845:
663                        fakturaPoznan(idFaktury);
664                        MessageBox.Show("Faktura zosta³a zmieniona");
665                        break;
666                }
667            }
668        }
669
670        private void Facturer_Shown(object sender, EventArgs e)
671        {
672            if (!User.Instance().IsKierownik)
673            {
674                foreach (Control c in Controls)
675                {
676                    c.Enabled = false;
677                }
678            }
679        }
680
681        private void korektaButton_Click(object sender, EventArgs e)
682        {           
683            Cursor = Cursors.WaitCursor;
684
685            REKLAMADataSet.REKLAMARow reklama = (REKLAMADataSet.REKLAMARow)
686          ((DataRowView)rEKLAMABindingSource.Current).Row;
687
688            fAKTURYTableAdapter.FillByIdFaktury(rEKLAMADataSet.FAKTURY,reklama.ID_FAKTURY);
689
690            REKLAMADataSet.FAKTURYRow faktura = rEKLAMADataSet.FAKTURY[0];
691                     
692            //sprawdzenie czy korekta nie byla juz wystawiona
693            if (!faktura.IsID_FK_KORNull())
694            {
695                MessageBox.Show("Istnieje ju¿ faktura korekta");
696                //   return;
697            }
698
699            SqlConnection conn = null;
700
701            try
702            {
703                REKLAMADataSet.FAKTURYRow naglowekKorekty = utworzNaglowekKorekty(faktura);
704                pobierzEmisjeDoKorekty(faktura, reklama.ReklamaID);
705                utworzPozycjeFakturyKorekty(naglowekKorekty);
706
707                if (!faktura.IsID_FK_KORNull())
708                {
709                    naglowekKorekty.idFakturyKorekta = faktura.ID_FK_KOR;
710                }
711
712                conn = new SqlConnection(ConnString.getConnString().Value);
713
714                fAKTURYTableAdapter.Connection = conn;
715                emisjeTableAdapter.Connection = conn;
716                fakturA_DETAILSTableAdapter.Connection = conn;
717                rEKLAMATableAdapter.Connection = conn;
718
719                conn.Open();
720
721                SqlTransaction transaction = conn.BeginTransaction();
722                fAKTURYTableAdapter.AttachTransaction(transaction);
723                emisjeTableAdapter.AttachTransaction(transaction);
724                fakturA_DETAILSTableAdapter.AttachTransaction(transaction);
725                rEKLAMATableAdapter.AttachTransaction(transaction);
726
727                try
728                {
729                    fAKTURYTableAdapter.Update(rEKLAMADataSet.FAKTURY);
730
731                    faktura.ID_FK_KOR = naglowekKorekty.ID_FAKTURY;
732                    faktura.EndEdit();
733
734                    fAKTURYTableAdapter.Update(rEKLAMADataSet.FAKTURY);
735
736                    emisjeTableAdapter.Update(rEKLAMADataSet.UKAZE_SIE_W_NR);
737                    fakturA_DETAILSTableAdapter.Update(rEKLAMADataSet.FAKTURA_DETAILS);
738
739                    transaction.Commit();
740                }
741                catch
742                {
743                    transaction.Rollback();
744                   
745                    throw;
746                }
747            }
748            finally
749            {
750                if(conn!=null && conn.State == ConnectionState.Open)
751                {
752                    conn.Close();
753                    conn.Dispose();
754                }
755
756                rEKLAMADataSet.UKAZE_SIE_W_NR.Clear();
757                rEKLAMADataSet.DatyWydan.Clear();
758                rEKLAMADataSet.FAKTURA_DETAILS.Clear();
759                fAKTURYBindingSource.ResetBindings(false);
760            }
761
762            RestoreConnections();
763
764            Cursor = Cursors.Default;
765
766        }
767
768        private REKLAMADataSet.FAKTURYRow utworzNaglowekKorekty(REKLAMADataSet.FAKTURYRow faktura)
769        {
770            REKLAMADataSet.FAKTURYRow naglowekKorekty = rEKLAMADataSet.FAKTURY.NewFAKTURYRow();
771            naglowekKorekty.KOREKTA = true;
772            //  naglowekKorekty.EKSPORT = true;
773
774            //naglowekKorekty.idZamowienia = faktura.idZamowienia;
775            naglowekKorekty.idFakturyKorekta = faktura.ID_FAKTURY;
776            naglowekKorekty.idFakturyVAT = faktura.ID_FAKTURY;
777
778            naglowekKorekty.NUMER_ROZ = faktura.NUMER_ROZ;
779            naglowekKorekty.NUMER = FakturaHelper.GetNewCorrectionInvoiceNumber(DateTime.Today.Year, faktura.SystemKsiegowyId);
780            naglowekKorekty.NUMER_ROK = DateTime.Today.Year;
781            naglowekKorekty.DATA_WYSTAWIENIA = DateTime.Today;
782
783            naglowekKorekty.ID_SPRZEDAWCY = faktura.ID_SPRZEDAWCY;
784
785            if (naglowekKorekty.ID_SPRZEDAWCY == 4 || naglowekKorekty.ID_SPRZEDAWCY == 6 ||
786                naglowekKorekty.ID_SPRZEDAWCY == 1223940400)
787            {
788                naglowekKorekty.EKSPORT = true;
789            }
790
791            naglowekKorekty.MIEJSCOWOSC_WYSTAWIENIA = faktura.MIEJSCOWOSC_WYSTAWIENIA;
792            naglowekKorekty.SPRZEDAWCA_ADRES = faktura.SPRZEDAWCA_ADRES;
793            naglowekKorekty.SPRZEDAWCA_NIP = faktura.SPRZEDAWCA_NIP;
794
795            naglowekKorekty.PODPIS_WYSTAWIL = faktura.PODPIS_WYSTAWIL;
796            naglowekKorekty.DATA_SPRZEDAZY = DateTime.Today;
797
798            naglowekKorekty.ID_NABYWCY = faktura.ID_NABYWCY;
799            naglowekKorekty.NABYWCA_ADRES = faktura.NABYWCA_ADRES;
800            naglowekKorekty.NABYWCA_NIP = faktura.NABYWCA_NIP;
801            naglowekKorekty.TERMIN_ZAPLATY = DateTime.Today.AddDays(7);
802            naglowekKorekty.opis = "rezygnacja z emisji reklamy";
803
804            naglowekKorekty.SPOSOB_ZAPLATY = faktura.SPOSOB_ZAPLATY;
805
806            naglowekKorekty.TERMIN_ZAPLATY = faktura.TERMIN_ZAPLATY;
807            naglowekKorekty.ZAPLACONO = false;
808
809            naglowekKorekty.FAKTURA_TYP = 2;
810            naglowekKorekty.FAKTURA_PODTYP = 1;
811
812            naglowekKorekty.ID_KONTA = faktura.ID_KONTA;
813
814            if (!faktura.Iswaluta_mianoNull())
815            {
816                naglowekKorekty.SPRZEDAWCA_NIP = faktura.SPRZEDAWCA_NIP;
817                naglowekKorekty.NABYWCA_NIP = faktura.NABYWCA_NIP;
818                naglowekKorekty.waluta_miano = faktura.waluta_miano;
819
820                naglowekKorekty.waluta_kurs = faktura.waluta_kurs;
821                naglowekKorekty.waluta_kurs_z_dnia = faktura.waluta_kurs_z_dnia;
822                naglowekKorekty.waluta_przelicznik = faktura.waluta_przelicznik;
823                naglowekKorekty.waluta_tabela_nr = faktura.waluta_tabela_nr;
824            }
825
826            rEKLAMADataSet.FAKTURY.AddFAKTURYRow(naglowekKorekty);
827
828            return naglowekKorekty;
829        }
830
831
832        private void pobierzEmisjeDoKorekty(REKLAMADataSet.FAKTURYRow naglowekFaktury, int reklamaID)
833        {
834            emisjeTableAdapter.ClearBeforeFill = false;
835            datyWydanTableAdapter.ClearBeforeFill = false;
836
837            emisjeTableAdapter.FillByReklamaId(rEKLAMADataSet.UKAZE_SIE_W_NR, reklamaID);
838            datyWydanTableAdapter.FillByReklamaId(rEKLAMADataSet.DatyWydan, reklamaID);
839        }
840
841        private void utworzPozycjeFakturyKorekty(REKLAMADataSet.FAKTURYRow naglowekFaktury)
842        {
843            decimal brutto_waluta = 0;
844
845            foreach (REKLAMADataSet.UKAZE_SIE_W_NRRow em in rEKLAMADataSet.UKAZE_SIE_W_NR)
846            {
847                if (em.status != 2)
848                {
849                    REKLAMADataSet.FAKTURA_DETAILSRow fakturaDetailsRow = rEKLAMADataSet.FAKTURA_DETAILS.NewFAKTURA_DETAILSRow();
850
851                    REKLAMADataSet.DatyWydanRow[] dataWydanTable =
852                        (REKLAMADataSet.DatyWydanRow[])em.GetChildRows("UKAZE_SIE_W_NR_DatyWydan");
853                    REKLAMADataSet.DatyWydanRow dataWydania = dataWydanTable[0];
854
855                    REKLAMADataSet.REKLAMARow reklama = (REKLAMADataSet.REKLAMARow)em.GetParentRow("REKLAMA_UKAZE_SIE_W_NR");
856
857                    fakturaDetailsRow.ROK = Convert.ToInt16(dataWydania.rok);
858                    fakturaDetailsRow.MIESIAC = Convert.ToInt16(dataWydania.ms);
859                    fakturaDetailsRow.TYTUL = Convert.ToInt16(dataWydania.idTytulu);
860                    fakturaDetailsRow.NAZWA_USLUGI = reklama.ID_REKLAMY + " | " + em.Nr_Wydania;
861                    fakturaDetailsRow.reklamaId = reklama.ReklamaID;
862                    fakturaDetailsRow.NR_WYDANIA = em.Nr_Wydania;
863
864                    fakturaDetailsRow.CENA_JEDN = Convert.ToDecimal(reklama.CENA_JEDN);
865                    fakturaDetailsRow.ILOSC = 1;
866                    fakturaDetailsRow.JM = "szt.";
867
868                    if (naglowekFaktury.Iswaluta_mianoNull())
869                    {
870                        fakturaDetailsRow.UPUST_NETTO = Convert.ToDecimal(reklama.RABAT) * fakturaDetailsRow.CENA_JEDN;
871                        fakturaDetailsRow.UPUST_PR = reklama.RABAT;
872                        decimal netto = (1 - Convert.ToDecimal(reklama.RABAT)) * fakturaDetailsRow.CENA_JEDN;
873                        fakturaDetailsRow.NETTO = netto;
874                        fakturaDetailsRow.S_VAT = reklama.VAT;
875                        decimal VAT = Convert.ToDecimal(reklama.VAT);
876                        fakturaDetailsRow.VAT = Convert.ToDecimal(Math.Round(VAT * netto, 2));
877                        fakturaDetailsRow.BRUTTO = Convert.ToDecimal(Math.Round((1 + VAT) * netto, 2));
878                    }
879                    else
880                    {
881                        //int krotnosc = this.rEKLAMADataSet.UKAZE_SIE_W_NR.PoliczAktywne(reklama.ReklamaID);
882
883                        fakturaDetailsRow.BRUTTO = Convert.ToDecimal((reklama.Brutto_Euro / reklama.KROTNOŒÆ) * naglowekFaktury.waluta_kurs);
884                        brutto_waluta += Convert.ToDecimal(reklama.Brutto_Euro / reklama.KROTNOŒÆ);
885                        fakturaDetailsRow.S_VAT = reklama.VAT;
886                        decimal VAT = Convert.ToDecimal(reklama.VAT);
887                        decimal brutto = fakturaDetailsRow.BRUTTO;
888                        fakturaDetailsRow.VAT = Convert.ToDecimal(Math.Round(VAT * brutto / (1 + VAT), 2));
889                        decimal netto = brutto - fakturaDetailsRow.VAT;
890                        fakturaDetailsRow.NETTO = netto;
891                        fakturaDetailsRow.UPUST_PR = reklama.RABAT;
892                        if (fakturaDetailsRow.UPUST_PR != 0)
893                        {
894                            fakturaDetailsRow.UPUST_NETTO = netto / Convert.ToDecimal(reklama.RABAT) - netto;
895                        }
896                        else
897                        {
898                            fakturaDetailsRow.UPUST_NETTO = 0;
899                        }
900
901                        fakturaDetailsRow.CENA_JEDN = Convert.ToDecimal(netto + fakturaDetailsRow.UPUST_NETTO);
902                    }
903
904                    fakturaDetailsRow.TYP = 2;
905                    fakturaDetailsRow.PODTYP = 1;
906                    fakturaDetailsRow.ID_FAKTURY = naglowekFaktury.ID_FAKTURY;
907
908                    if (reklama.wyroznienie)
909                    {
910                        fakturaDetailsRow.wyroznienie = true;
911                    }
912
913                    rEKLAMADataSet.FAKTURA_DETAILS.AddFAKTURA_DETAILSRow(fakturaDetailsRow);
914                }
915            }
916
917            if (brutto_waluta != 0)
918            {
919                naglowekFaktury.waluta_brutto = Math.Round(Convert.ToDouble(brutto_waluta), 2);
920                naglowekFaktury.EndEdit();
921            }
922        }
923
924        private void wydrukKorektyButton_Click(object sender, EventArgs e)
925        {
926            Cursor = Cursors.WaitCursor;
927
928            REKLAMADataSet.REKLAMARow reklama = (REKLAMADataSet.REKLAMARow)
929          ((DataRowView)rEKLAMABindingSource.Current).Row;
930
931            REKLAMADataSet.FAKTURYDataTable table =
932             fAKTURYTableAdapter.GetDataByFaktury(reklama.ID_FAKTURY);
933
934            if (table.Rows.Count < 1)
935            {
936                return;
937            }
938            REKLAMADataSet.FAKTURYRow faktura = table[0];
939
940            if (!faktura.IsID_FK_KORNull())
941            {
942                REKLAMADataSet.FAKTURYDataTable korekta =
943           fAKTURYTableAdapter.GetDataByFaktury(faktura.ID_FK_KOR);
944
945                if (korekta.Rows.Count > 0)
946                {
947                    if (!korekta[0].IsidFakturyKorektaNull())
948                    {
949                        FactureViewer fv = new FactureViewer(korekta[0].ID_FAKTURY, korekta[0].idFakturyVAT, korekta[0].idFakturyKorekta);
950                        fv.ShowDialog();
951                    }
952                }
953            }
954
955            Cursor = Cursors.Default;
956        }
957        private void RestoreConnections()
958        {
959            fAKTURYTableAdapter.Connection = new SqlConnection(ConnString.getConnString().Value);
960            emisjeTableAdapter.Connection = new SqlConnection(ConnString.getConnString().Value);
961            fakturA_DETAILSTableAdapter.Connection = new SqlConnection(ConnString.getConnString().Value);
962            rEKLAMATableAdapter.Connection = new SqlConnection(ConnString.getConnString().Value);
963        }
964
965        private void button2_Click(object sender, EventArgs e)
966        {
967            Cursor = Cursors.WaitCursor;
968
969            REKLAMADataSet.REKLAMARow reklama = (REKLAMADataSet.REKLAMARow)
970          ((DataRowView)rEKLAMABindingSource.Current).Row;
971
972            REKLAMADataSet.FAKTURYDataTable table =
973             fAKTURYTableAdapter.GetDataByFaktury(reklama.ID_FAKTURY);
974
975            if (table.Rows.Count < 1)
976            {
977                return;
978            }
979            REKLAMADataSet.FAKTURYRow faktura = table[0];
980
981            emisjeTableAdapter.UpdateQueryIdFaktury(faktura.ID_FAKTURY, reklama.ReklamaID);
982
983            Cursor = Cursors.Default;
984        }
985
986        private void usunKorekteButton_Click(object sender, EventArgs e)
987        {
988            Cursor = Cursors.WaitCursor;
989
990            REKLAMADataSet.REKLAMARow reklama = (REKLAMADataSet.REKLAMARow)
991          ((DataRowView)rEKLAMABindingSource.Current).Row;
992
993            REKLAMADataSet.FAKTURYDataTable table =
994             fAKTURYTableAdapter.GetDataByFaktury(reklama.ID_FAKTURY);
995
996            if (table.Rows.Count < 1)
997            {
998                return;
999            }
1000            REKLAMADataSet.FAKTURYRow faktura = table[0];
1001
1002            if (!faktura.IsID_FK_KORNull())
1003            {
1004                REKLAMADataSet.FAKTURYDataTable korekta =
1005           fAKTURYTableAdapter.GetDataByFaktury(faktura.ID_FK_KOR);
1006
1007                if (korekta.Rows.Count > 0)
1008                {
1009                    usunKorekte(faktura, korekta[0]);
1010                }
1011            }
1012
1013            Cursor = Cursors.Default;
1014        }
1015
1016
1017        private void usunKorekte(REKLAMADataSet.FAKTURYRow faktura, REKLAMADataSet.FAKTURYRow korekta)
1018        {
1019            int idKorekty = korekta.ID_FAKTURY;
1020            int idKorygowanejFaktury = korekta.idFakturyKorekta;
1021            //int idZam = korekta.idZamowienia;
1022
1023            REKLAMADataSet.FAKTURYRow korygowanaFaktura = faktura;
1024
1025            REKLAMADataSet.FAKTURYDataTable poprzedniaKorekta =
1026                fAKTURYTableAdapter.GetDataByFaktury(idKorygowanejFaktury);
1027 
1028            if (poprzedniaKorekta.Rows.Count > 0)
1029            {
1030                korygowanaFaktura.ID_FK_KOR = poprzedniaKorekta[0].ID_FAKTURY;
1031            }
1032            else
1033            {
1034                korygowanaFaktura.SetID_FK_KORNull();
1035            }
1036
1037            fAKTURYBindingSource.EndEdit();
1038
1039            SqlConnection conn = new SqlConnection(ConnString.getConnString().Value);
1040
1041            fAKTURYTableAdapter.Connection = conn;
1042            fakturA_DETAILSTableAdapter.Connection = conn;
1043
1044            conn.Open();
1045            SqlTransaction transaction = conn.BeginTransaction();
1046
1047            fAKTURYTableAdapter.AttachTransaction(transaction);
1048            fakturA_DETAILSTableAdapter.AttachTransaction(transaction);
1049
1050            try
1051            {
1052                fAKTURYTableAdapter.Update(korygowanaFaktura);
1053                fAKTURYTableAdapter.Delete(idKorekty);
1054                fakturA_DETAILSTableAdapter.Delete(idKorekty);
1055
1056                transaction.Commit();
1057            }
1058            catch
1059            {
1060                transaction.Rollback();
1061                throw;
1062            }
1063            finally
1064            {
1065                conn.Close();
1066            }
1067        }
1068
1069    }
1070}
1071
1072
Notatka: Zobacz TracBrowser aby uzyskać więcej informacji.