using System;
using System.Collections.Generic;
using System.Data;
using System.Data.SqlClient;
using System.Text;
using System.Text.RegularExpressions;


namespace ExportFaktur
{
    class ExpoToCDNExport
    {

		#region Fields (3) 

        public CDNDataSet CDNDataset;
        SqlConnection CDN_conn = new SqlConnection(ConnString.getConnString().CdnExpoConnStr);
        SqlConnection truck_expo_conn = new SqlConnection(ConnString.getConnString().TruckExpoConnStr);

		#endregion Fields 

		#region Methods (10) 


		// Public Methods (10) 

        public void DodajElementyFaktury(EXPODataSet.FAKTURA_DETAILSDataTable table, CDNDataSet.TraNagRow naglowekFaktury)
        {
            int lp = 1;

            CDNDataSet.TraNagRow naglowek = naglowekFaktury;

            foreach (EXPODataSet.FAKTURA_DETAILSRow row in table.Rows)
            {
                CDNDataSet.TraElemRow pozycjaFaktury = (CDNDataSet.TraElemRow)CDNDataset.TraElem.NewRow();

                pozycjaFaktury.TrE_TrNId = naglowek.TrN_TrNID;
                //  pozycjaFaktury.tre_tran
                if (istniejeKorekta())
                {
                    pozycjaFaktury.TrE_ZwrId = 0;
                }
                pozycjaFaktury.TrE_Lp = lp;
                pozycjaFaktury.TrE_TypDokumentu = 302;
                pozycjaFaktury.TrE_Aktywny = 1;
                pozycjaFaktury.TrE_DataDok = naglowek.TrN_DataDok;
                pozycjaFaktury.TrE_DataOpe = naglowek.TrN_DataOpe;
                pozycjaFaktury.TrE_PodmiotTyp = 1;
                pozycjaFaktury.TrE_PodID = naglowek.TrN_PodID;

                if ((row.ROK > naglowekFaktury.TrN_DataDok.Year) ||
                    ((row.ROK == naglowekFaktury.TrN_DataDok.Year) && (row.MIESIAC > naglowekFaktury.TrN_DataDok.Month)))
                {
                    pozycjaFaktury.TrE_KatID = podajIDKategorii(row.ROK, row.MIESIAC);
                }
                else
                {
                    pozycjaFaktury.TrE_KatID = naglowek.TrN_KatID;
                }              
                
                pozycjaFaktury.TrE_TwrId = 1;
                pozycjaFaktury.TrE_TwrNazwa = row.NAZWA_USLUGI + "   " + row.MIESIAC + "/" + row.ROK;


                pozycjaFaktury.TrE_TwrOpis = "";
                pozycjaFaktury.TrE_TwrSWW = "";
                pozycjaFaktury.TrE_Stawka = (decimal)row.S_VAT * 100; //svat'                @P14 numeric(5,2)     22.00                                  
                pozycjaFaktury.TrE_Flaga = 2;
                pozycjaFaktury.TrE_Zrodlowa = 0.00M;
                pozycjaFaktury.TrE_TwCNumer = 2;
                pozycjaFaktury.TrE_TypNB = 1;


                pozycjaFaktury.TrE_CenaT = row.NETTO; //Math.Abs(rsdet("netto"));
              //  pozycjaFaktury.TrE_CenaT = row.CENA_JEDN; //Math.Abs(rsdet("netto"));


                pozycjaFaktury.TrE_Cena0 = row.NETTO; //Math.Abs(netto);
                //pozycjaFaktury.TrE_Cena0 = row.CENA_JEDN; //Math.Abs(netto);
                pozycjaFaktury.TrE_Rabat = (decimal)row.UPUST_PR*100;
               // pozycjaFaktury.TrE_Rabat = 0;                
                pozycjaFaktury.TrE_CenaW = row.NETTO; //Math.Abs(netto);
                
               
                /*
                 * if rsdet("netto")<0 then
                  pozycjaFaktury.TrE_Ilosc")=-1.0000'                @P27 numeric(15,4)    1.0000                                 
                else  
                  pozycjaFaktury.TrE_Ilosc=1.0000'                @P27 numeric(15,4)    1.0000                                 
                end if  */
                pozycjaFaktury.TrE_Ilosc = 1M;


                pozycjaFaktury.TrE_Jm = "szt.";
                pozycjaFaktury.TrE_JmCalkowite = 0;
                pozycjaFaktury.TrE_JMPrzelicznikL = 1.00M;
                pozycjaFaktury.TrE_JMPrzelicznikM = 1;
                pozycjaFaktury.TrE_IloscJM = pozycjaFaktury.TrE_Ilosc;
                pozycjaFaktury.TrE_WartoscNetto = row.NETTO; //rsdet("netto")'          @P33 numeric(15,2)    1000.00                                
                pozycjaFaktury.TrE_WartoscBrutto = row.BRUTTO;  //rsdet("brutto")'         @P34 numeric(15,2)    1220.00                                
                pozycjaFaktury.TrE_TwrEAN = "";
                pozycjaFaktury.TrE_TwrNumerKat = "";
                pozycjaFaktury.TrE_TwrKod = "REKLAMA PRASOWA"; //towarkod'                @P37 varchar(3)       '125'                                  
                pozycjaFaktury.TrE_JmZ = "";
                pozycjaFaktury.TrE_LpPow = lp;
                pozycjaFaktury.TrE_Cena0WD = row.CENA_JEDN; //abs(rsdet("netto"))'               @P40 numeric(15,2)    1000.00                                
                pozycjaFaktury.TrE_CenaWWD = row.NETTO;//abs(rsdet("netto"))'               @P41 numeric(15,2)    1000.00                                
                pozycjaFaktury.TrE_WartoscNettoWal = row.NETTO; //rsdet("netto")'       @P42 numeric(15,2)    1000.00                                
                pozycjaFaktury.TrE_WartoscBruttoWal = row.BRUTTO; //rsdet("brutto")'      @P43 numeric(15,2)    1220.00                                
                pozycjaFaktury.TrE_Prog = 0.00M;
                pozycjaFaktury.TrE_UpustTyp = 0;
                pozycjaFaktury.TrE_Upust = 0.00M;
                pozycjaFaktury.TrE_UpustKnt = 0.00M;
                pozycjaFaktury.TrE_UpustKntTyp = 0;
                pozycjaFaktury.TrE_KosztUslugi = 0.00M;
                pozycjaFaktury.TrE_RabatPromocyjny = 0.0000M;
                pozycjaFaktury.TrE_RabatKorekta = 0.0000M;
                pozycjaFaktury.TrE_Kaucja = 0;
                pozycjaFaktury.TrE_IloscKW = 0.0000M;
                pozycjaFaktury.TrE_IloscJMKW = 0.0000M;
                pozycjaFaktury.TrE_MagId = 1;

                // ?????????????????????????????
                //  pozycjaFaktury.TrE_Atr1_DeAId = DBNull.Value;
                pozycjaFaktury.TrE_Atr1_Kod = "";
                pozycjaFaktury.TrE_Atr1_Wartosc = "";
                //  pozycjaFaktury.TrE_Atr2_DeAId = DBNull.Value;
                pozycjaFaktury.TrE_Atr2_Kod = "";
                pozycjaFaktury.TrE_Atr2_Wartosc = "";
                //  pozycjaFaktury.TrE_Atr3_DeAId = DBNull.Value;
                pozycjaFaktury.TrE_Atr3_Kod = "";
                pozycjaFaktury.TrE_Atr3_Wartosc = "";
                //  pozycjaFaktury.TrE_Atr4_DeAId = DBNull.Value;
                pozycjaFaktury.TrE_Atr4_Kod = "";
                pozycjaFaktury.TrE_Atr4_Wartosc = "";
                //  pozycjaFaktury.TrE_Atr5_DeAId = DBNull.Value;
                pozycjaFaktury.TrE_Atr5_Kod = "";
                pozycjaFaktury.TrE_Atr5_Wartosc = "";


                pozycjaFaktury.TrE_WartoscZakupuWylicz = 0;
                //'pozycjaFaktury.TrE_WartoscZakupu=0

                pozycjaFaktury.TrE_Waluta = "PLN";
                pozycjaFaktury.TrE_KursNumer = 2;
                pozycjaFaktury.TrE_KursL = 1.000M;
                pozycjaFaktury.TrE_KursM = 1;

                if (naglowek.TrN_Export == 7)
                {
                    pozycjaFaktury.TrE_Flaga = 4;
                    pozycjaFaktury.TrE_Cena0WD = row.CENA_JEDN / naglowek.TrN_KursL;
                    pozycjaFaktury.TrE_CenaWWD = row.NETTO / naglowek.TrN_KursL;
                    pozycjaFaktury.TrE_WartoscBruttoWal = row.BRUTTO / naglowek.TrN_KursL;
                    pozycjaFaktury.TrE_WartoscNettoWal = row.NETTO / naglowek.TrN_KursL;
                }

                CDNDataset.TraElem.AddTraElemRow(pozycjaFaktury);

                lp++;
            }


        }

        public void DodajKlienta(EXPODataSet.KLIENCIRow klient)
        {
            CDNDataSetTableAdapters.KontrahenciTableAdapter adapter = new ExportFaktur.CDNDataSetTableAdapters.KontrahenciTableAdapter();
            adapter.Connection = CDN_conn;

            adapter.FillByKnt_Kod(this.CDNDataset.Kontrahenci, klient.CustomerID.ToString());

            bool klientIstnieje;
            CDNDataSet.KontrahenciRow kontrahent;

            if (this.CDNDataset.Kontrahenci.Count == 0)
            {
                klientIstnieje = false;
                kontrahent = (CDNDataSet.KontrahenciRow)this.CDNDataset.Kontrahenci.NewRow();
            }
            else
            {
                klientIstnieje = true;
                kontrahent = this.CDNDataset.Kontrahenci[0];
            }

            kontrahent.Knt_ZgodaNaEFaktury = 0;
            kontrahent.Knt_PodmiotTyp = 1;
            kontrahent.Knt_Kod = klient.CustomerID.ToString();
            kontrahent.Knt_GLN = "";
            kontrahent.Knt_EAN = "";
            kontrahent.Knt_Grupa = "ODBIORCA";
            kontrahent.Knt_Nazwa1 = klient.IsFirstNameNull() ? "" : klient.FirstName;
            kontrahent.Knt_Nazwa2 = klient.IsLastNameNull() ? "" : klient.LastName;
            kontrahent.Knt_Nazwa3 = klient.IsOrganizationNameNull() ? "" : klient.OrganizationName;
            
            string kraj = "";
            if (!klient.IsCountryNull())
            {
                kraj = (klient.Country.Length > 40) ? klient.Country.Substring(0, 40) : klient.Country;
            }
                        
            kontrahent.Knt_Kraj = kraj;

            string wojewodztwo = "";
            if (!klient.IsStateNull())
            {
                wojewodztwo = (klient.State.Length > 40) ? klient.State.Substring(0, 40) : klient.State;
            }

            kontrahent.Knt_Wojewodztwo = wojewodztwo;

            kontrahent.Knt_Powiat = "";
            kontrahent.Knt_Gmina = "";

            string adres = "";
            if (!klient.IsAddressNull())
            {
                adres = (klient.Address.Length > 40) ? klient.Address.Substring(0, 40) : klient.Address;
            }
            kontrahent.Knt_Ulica = adres;

            kontrahent.Knt_NrDomu = "";
            kontrahent.Knt_NrLokalu = "";

            string miasto = "";
            if (!klient.IsCityNull())
            {
                miasto = (klient.City.Length > 40) ? klient.City.Substring(0, 40) : klient.City;
            }
            kontrahent.Knt_Miasto = miasto;
            kontrahent.Knt_Poczta = miasto;
            
            string kodPocztowy = "";
            if (!klient.IsPostalCodeNull())
            {
                kodPocztowy = (klient.PostalCode.Length > 10) ? klient.PostalCode.Substring(0, 10) : klient.PostalCode;
            }
            kontrahent.Knt_KodPocztowy = kodPocztowy;
            
            kontrahent.Knt_Adres2 = "";

            if (!klient.IsNipNull())
            {
             //   kontrahent.Knt_NipKraj = PodajKrajNIP(klient.Nip);
             //   kontrahent.Knt_NipE = PodajNumerNIP(klient.Nip);
             //   kontrahent.Knt_Nip = PodajNumerNIP(klient.Nip);
                if (klient.nipKraj == "" && klient.Country.Trim() == "Polska")
                {
                    kontrahent.Knt_NipKraj = "PL";
                    kontrahent.Knt_KrajISO = "PL";
                }
                else
                {
                    kontrahent.Knt_NipKraj = klient.nipKraj.Length > 2 ? klient.nipKraj.Substring(0, 2) : klient.nipKraj;
                    kontrahent.Knt_KrajISO = klient.nipKraj.Length > 2 ? klient.nipKraj.Substring(0, 2) : klient.nipKraj;
                }

                kontrahent.Knt_NipE = klient.Nip.Length > 13 ? klient.Nip.Substring(0, 13) : klient.Nip;
                kontrahent.Knt_Nip = klient.Nip.Length > 13 ? klient.Nip.Substring(0,13) : klient.Nip;
                
            }
            else
            {
                kontrahent.Knt_NipKraj = "";
                kontrahent.Knt_NipE = "";
                kontrahent.Knt_Nip = "";
                kontrahent.Knt_KrajISO = "";
            }

            kontrahent.Knt_Regon = "";
            kontrahent.Knt_Pesel = "";
            kontrahent.Knt_Telefon1 = "";
            kontrahent.Knt_Telefon2 = "";
            kontrahent.Knt_Fax = "";

            string email = "";
            if (!klient.IsEmailNull())
            {
                email = (klient.Email.Length > 40) ? klient.Email.Substring(0, 40) : klient.Email;
            }
            kontrahent.Knt_Email = email;
            
            kontrahent.Knt_URL = "";
          

            if (!klientIstnieje)
            {
                kontrahent.Knt_Zezwolenie = "";
                kontrahent.Knt_KodTransakcji = "";
                //kontrahent.Knt_BNaID=""
                kontrahent.Knt_RachunekNr = "";
                kontrahent.Knt_IBAN = 0;
                //kontrahent.Knt_RachunekNr0=""
                kontrahent.Knt_OsTytul = "";
                kontrahent.Knt_OsPlec = 1;
                kontrahent.Knt_OsNazwisko = "";
                kontrahent.Knt_OsKraj = kontrahent.Knt_Kraj;
                kontrahent.Knt_OsWojewodztwo = kontrahent.Knt_Wojewodztwo;
                kontrahent.Knt_OsPowiat = "";
                kontrahent.Knt_OsGmina = "";
                kontrahent.Knt_OsUlica = "";
                kontrahent.Knt_OsNrDomu = "";
                kontrahent.Knt_OsNrLokalu = "";
                kontrahent.Knt_OsMiasto = "";
                kontrahent.Knt_OsKodPocztowy = "";
                kontrahent.Knt_OsPoczta = "";
                kontrahent.Knt_OsAdres2 = "";
                kontrahent.Knt_OsTelefon = "";
                kontrahent.Knt_OsGSM = "";
                kontrahent.Knt_OsEmail = "";
                kontrahent.Knt_Informacje = 0;
                kontrahent.Knt_Upust = 0;
                kontrahent.Knt_LimitFlag = 0;
                kontrahent.Knt_LimitKredytu = 0;
                kontrahent.Knt_LimitPrzeterKredytFlag = 0;
                kontrahent.Knt_LimitPrzeterKredytWartosc = 0;
                kontrahent.Knt_Ceny = 0;
                kontrahent.Knt_FplID = 1;
                kontrahent.Knt_MaxZwloka = 7;
                kontrahent.Knt_TerminPlat = 1;
                kontrahent.Knt_Termin = 7;
                kontrahent.Knt_KontoOdb = "";
                kontrahent.Knt_KontoDost = "";
                //kontrahent.Knt_KatID=
                kontrahent.Knt_BlokadaDok = 0;
                kontrahent.Knt_LimitKredytuWal = "";
                kontrahent.Knt_LimitKredytuWykorzystany = 0;
                kontrahent.Knt_NieRozliczac = 0;
                kontrahent.Knt_PodatekVat = 1;
                kontrahent.Knt_Finalny = 0;
                kontrahent.Knt_Export = 0;

                if (kontrahent.Knt_NipKraj != "PL")
                {
                    kontrahent.Knt_Export = 7;
                }

                kontrahent.Knt_Rodzaj = 0;
                kontrahent.Knt_Rodzaj_Dostawca = 0;
                kontrahent.Knt_Rodzaj_Odbiorca = 1;
                kontrahent.Knt_Rodzaj_Konkurencja = 0;
                kontrahent.Knt_Rodzaj_Partner = 0;
                kontrahent.Knt_Rodzaj_Potencjalny = 0;
                kontrahent.Knt_Medialny = 0;
                kontrahent.Knt_MalyPod = 0;
                kontrahent.Knt_Rolnik = 0;
                kontrahent.Knt_Nieaktywny = 0;
                kontrahent.Knt_Chroniony = 0;
                kontrahent.Knt_Opis = "";
                //kontrahent.Knt_OdbiorcaId=
                //kontrahent.Knt_OpiekunTyp=
                //kontrahent.Knt_OpiekunId=
                kontrahent.Knt_TerminZwrotuKaucji = 60;
                kontrahent.Knt_NaliczajPlatnosc = 0;
                kontrahent.Knt_ZakazDokumentowHaMag = 0;
                //'kontrahent.Knt_TS_Export=
                //'kontrahent.Knt_ImportAppId=
                //'kontrahent.Knt_ImportRowId=
                kontrahent.Knt_OpeZalID = 11;
                kontrahent.Knt_StaZalId = 6;
                kontrahent.Knt_TS_Zal = DateTime.Now;
            }

            kontrahent.Knt_OpeModID = 11;
            kontrahent.Knt_StaModId = 6;
            kontrahent.Knt_TS_Mod = DateTime.Now;
            //kontrahent.Knt_GIDTyp=
            //kontrahent.Knt_GIDFirma=
            //kontrahent.Knt_GIDNumer=
            //kontrahent.Knt_GIDLp=

            if (!klientIstnieje)
            {
                this.CDNDataset.Kontrahenci.AddKontrahenciRow(kontrahent);
            }

        }

        public void DodajNaglowekFaktury(EXPODataSet.FAKTURYRow EXPOfaktura, CDNDataSet.KontrahenciRow kontrahent, decimal sumaNETTO, decimal VAT, decimal rabatProcent)
        {

            CDNDataSet.TraNagRow nowaFaktura = (CDNDataSet.TraNagRow)this.CDNDataset.TraNag.NewRow();

            //!!!!!!!!!!!!!!!
            //nowaFaktura.TrN_DDfId = 1;

            CDNDataSetTableAdapters.DokDefinicjeTableAdapter adapter = new ExportFaktur.CDNDataSetTableAdapters.DokDefinicjeTableAdapter();
            adapter.Connection = CDN_conn;

            CDNDataSet.DokDefinicjeRow dokDef = adapter.GetDataByNumerRozHandlowca(EXPOfaktura.NUMER_ROZ)[0];

            nowaFaktura.TrN_DDfId = dokDef.DDf_DDfID;
            nowaFaktura.TrN_TypDokumentu = 302;

            nowaFaktura.TrN_NumerNr = Int32.Parse(EXPOfaktura.NUMER);
            nowaFaktura.TrN_NumerString = "@numerS" + "/" + EXPOfaktura.NUMER_ROZ + "/" + EXPOfaktura.NUMER_ROK; //numerstring'              @P4 varchar(13)     '@numer/O/2007'

            // 'rsnag("TrN_NumerPelny=numerpelny                   
            nowaFaktura.TrN_Bufor = 1;
            nowaFaktura.TrN_DataDok = EXPOfaktura.DATA_WYSTAWIENIA;
            nowaFaktura.TrN_DataWys = EXPOfaktura.DATA_WYSTAWIENIA;
            nowaFaktura.TrN_DataOpe = EXPOfaktura.DATA_SPRZEDAZY;
            nowaFaktura.TrN_NumerObcy = "";
            nowaFaktura.TrN_DataKur = DateTime.Now;
            if (istniejeKorekta())
            {
                nowaFaktura.TrN_Korekta = 1;
                nowaFaktura.TrN_Rodzaj = 302001;
                int idkorekty = 0;
                nowaFaktura.TrN_ZwrId = idkorekty;
            }
            else
            {
                nowaFaktura.TrN_Korekta = 0;
                nowaFaktura.TrN_Rodzaj = 302000;
            }
            nowaFaktura.TrN_Fiskalna = 0;
            nowaFaktura.TrN_Detal = 0;
            nowaFaktura.TrN_PodmiotTyp = 1;
            nowaFaktura.TrN_PodID = kontrahent.Knt_KntId;

            nowaFaktura.TrN_PodNazwa1 = kontrahent.Knt_Nazwa1;
            nowaFaktura.TrN_PodNazwa2 = kontrahent.Knt_Nazwa2;
            nowaFaktura.TrN_PodNazwa3 = kontrahent.Knt_Nazwa3;

            /*
    if (kontrahent.Knt_Kraj){
     nowaFaktura.TrN_PodKraj="Polska";
        }
    else {
     nowaFaktura.TrN_PodKraj=kontrahent.Knt_Kraj;
    }*/

            nowaFaktura.TrN_PodKraj = kontrahent.Knt_Kraj;

            nowaFaktura.TrN_PodWojewodztwo = kontrahent.Knt_Wojewodztwo;
            nowaFaktura.TrN_PodPowiat = "";
            nowaFaktura.TrN_PodGmina = "";
            nowaFaktura.TrN_PodUlica = kontrahent.Knt_Ulica;
            nowaFaktura.TrN_PodNrDomu = kontrahent.Knt_NrDomu;
            nowaFaktura.TrN_PodNrLokalu = kontrahent.Knt_NrLokalu;
            nowaFaktura.TrN_PodMiasto = kontrahent.Knt_Miasto;
            nowaFaktura.TrN_PodKodPocztowy = kontrahent.Knt_KodPocztowy;
            nowaFaktura.TrN_PodPoczta = kontrahent.Knt_Poczta;
            nowaFaktura.TrN_PodAdres2 = "";
            nowaFaktura.TrN_PodNipKraj = kontrahent.Knt_NipKraj;
            nowaFaktura.TrN_PodNipE = kontrahent.Knt_NipE;
            nowaFaktura.TrN_Finalny = 0;
            nowaFaktura.TrN_Export = 0;
            nowaFaktura.TrN_OdbiorcaTyp = 1;

            //ustawione w dataset
            nowaFaktura.TrN_OdbID = kontrahent.Knt_KntId;
            nowaFaktura.TrN_OdbNazwa1 = kontrahent.Knt_Nazwa1;
            nowaFaktura.TrN_OdbNazwa2 = kontrahent.Knt_Nazwa2;
            nowaFaktura.TrN_OdbNazwa3 = kontrahent.Knt_Nazwa3;

            nowaFaktura.TrN_OdbKraj = kontrahent.Knt_Kraj;

            nowaFaktura.TrN_OdbWojewodztwo = kontrahent.Knt_Wojewodztwo;
            nowaFaktura.TrN_OdbPowiat = "";
            nowaFaktura.TrN_OdbGmina = "";
            nowaFaktura.TrN_OdbUlica = kontrahent.Knt_Ulica;
            nowaFaktura.TrN_OdbNrDomu = kontrahent.Knt_NrDomu;
            nowaFaktura.TrN_OdbNrLokalu = kontrahent.Knt_NrLokalu;
            nowaFaktura.TrN_OdbMiasto = kontrahent.Knt_Miasto;
            nowaFaktura.TrN_OdbKodPocztowy = kontrahent.Knt_KodPocztowy;
            nowaFaktura.TrN_OdbPoczta = kontrahent.Knt_Poczta;
            nowaFaktura.TrN_OdbAdres2 = "";
            nowaFaktura.TrN_OdbNipKraj = kontrahent.Knt_NipKraj;
            nowaFaktura.TrN_OdbNipE = kontrahent.Knt_NipE;


            //w zaleznosci od handlowca
            /*
            nowaFaktura.TrN_KatID = 42;
            nowaFaktura.TrN_Kategoria = "Dorota";
             */
            nowaFaktura.TrN_KatID = 1;
            nowaFaktura.TrN_Kategoria = "SPRZEDAŻ";

            nowaFaktura.TrN_FPlId = 3;
            nowaFaktura.TrN_Termin = EXPOfaktura.TERMIN_ZAPLATY;

            //NETT, VAT itp.
            nowaFaktura.TrN_RazemNetto = sumaNETTO;
            nowaFaktura.TrN_RazemVAT = VAT * sumaNETTO;
            nowaFaktura.TrN_RazemBrutto = (decimal)((1 + VAT) * nowaFaktura.TrN_RazemNetto);
            nowaFaktura.TrN_BlokadaPlatnosci = 0;
            nowaFaktura.TrN_MagZrdId = 1;
            nowaFaktura.TrN_TypNB = 1;
            nowaFaktura.TrN_Rabat = rabatProcent * 100;
           //nowaFaktura.TrN_Rabat = 0;
            

            if (EXPOfaktura.IsPODPIS_ODEBRALNull())
            {
                nowaFaktura.TrN_Odebral = "zgodnie z oświadczeniem nabywcy";
            }
            else
            {
                nowaFaktura.TrN_Odebral = EXPOfaktura.PODPIS_ODEBRAL;
            }

            nowaFaktura.TrN_Opis = EXPOfaktura.opis;
            nowaFaktura.TrN_OpeZalID = 9;
            nowaFaktura.TrN_TS_Zal = EXPOfaktura.TERMIN_ZAPLATY;
            nowaFaktura.TrN_OpeModID = 9;
            nowaFaktura.TrN_TS_Mod = EXPOfaktura.TERMIN_ZAPLATY;
            nowaFaktura.TrN_NotaKorPrzed = "";
            nowaFaktura.TrN_NotaKorPo = "";
            nowaFaktura.TrN_TrSTyp = 3;
            nowaFaktura.TrN_RazemNettoWal = sumaNETTO;
            nowaFaktura.TrN_Waluta = "";
            nowaFaktura.TrN_KursNumer = 2;
            nowaFaktura.TrN_KursL = (decimal)1.00;
            nowaFaktura.TrN_KursM = 1;
            nowaFaktura.TrN_PodNazwa3 = "";
            nowaFaktura.TrN_OdbNazwa3 = "";
            nowaFaktura.TrN_Centrala = 0;
            nowaFaktura.TrN_PodmiotGLN = "";
            nowaFaktura.TrN_OdbiorcaGLN = "";
            nowaFaktura.TrN_NumerPelnyPrw = "";
            nowaFaktura.TrN_PlatElemWalSys = 0;

            nowaFaktura.TrN_RazemVATWal = VAT*100;
            nowaFaktura.TrN_RazemBruttoWal = (decimal)((1 + VAT) * nowaFaktura.TrN_RazemNetto);
            nowaFaktura.TrN_StaZalId = 1;
            nowaFaktura.TrN_StaModId = 1;
            //  'rsnag("TrN_PodNipKraj=""'              @P84 varchar(1)     ''                                
            //  'rsnag("TrN_OdbNipKraj="" '             @P85 varchar(1)     ''                                
            nowaFaktura.TrN_KodTransakcji = "";

            //???
            DateTime datadok = DateTime.Now;
            nowaFaktura.TrN_DataTransportu = datadok;
            nowaFaktura.TrN_KodKraju = "";
            nowaFaktura.TrN_Anulowany = 0;
            nowaFaktura.TrN_TerminZwrotuKaucji = datadok.AddDays(30);
            nowaFaktura.TrN_PlatKaucje = 0;
            nowaFaktura.TrN_TaxFreePotwierdzony = 0;
            nowaFaktura.TrN_VatDlaDokWal = 0;

            if (!EXPOfaktura.Iswaluta_bruttoNull() && EXPOfaktura.waluta_brutto > 0)
            {
                nowaFaktura.TrN_Export = 7;
                nowaFaktura.TrN_WartoscZakupu = 0;
                nowaFaktura.TrN_RazemVATWal = VAT * 100;            
                nowaFaktura.TrN_RazemBruttoWal = (decimal)EXPOfaktura.waluta_brutto;
                nowaFaktura.TrN_RazemNettoWal = ((decimal)EXPOfaktura.waluta_brutto / (1 + VAT));
                nowaFaktura.TrN_Waluta =  EXPOfaktura.Iswaluta_mianoNull() ? "" : EXPOfaktura.waluta_miano;
                nowaFaktura.TrN_KursL = EXPOfaktura.Iswaluta_kursNull()? 1M : (decimal)EXPOfaktura.waluta_kurs;
                nowaFaktura.TrN_KursM = 1;
                nowaFaktura.TrN_KursNumer = 1;
            }

            this.CDNDataset.TraNag.AddTraNagRow(nowaFaktura);

        }

        public void DodajVAT(CDNDataSet.TraNagRow naglowekFaktury, decimal sumaNetto, decimal stawkaVAT)
        {
            CDNDataSet.TraVatRow nowyVat = (CDNDataSet.TraVatRow)this.CDNDataset.TraVat.NewRow();

            nowyVat.TrV_TrNID = naglowekFaktury.TrN_TrNID;
            nowyVat.TrV_Stawka = stawkaVAT * 100;
            nowyVat.TrV_Flaga = 2;
            nowyVat.TrV_Zrodlowa = 0.00M;
            nowyVat.TrV_Netto = sumaNetto;
            nowyVat.TrV_VAT = stawkaVAT * sumaNetto;
            nowyVat.TrV_NettoWal = sumaNetto;
            nowyVat.TrV_VATWal = stawkaVAT * sumaNetto;
            nowyVat.TrV_Typ = 0;

            if (naglowekFaktury.TrN_Export == 7)
            {
                nowyVat.TrV_Flaga = 4;
                nowyVat.TrV_VATWal = naglowekFaktury.TrN_RazemBruttoWal - naglowekFaktury.TrN_RazemNettoWal;
                nowyVat.TrV_NettoWal = naglowekFaktury.TrN_RazemNettoWal;                
            }

            this.CDNDataset.TraVat.AddTraVatRow(nowyVat);
        }

        public bool isNumeric(string a)
        {
            Regex reNum = new Regex(@"^\d+$");
            return reNum.Match(a).Success;
        }

        public bool istniejeKorekta()
        {
            return false;
        }

        //przyszle okresy
        public int podajIDKategorii(int rok, int ms)
        {
            switch (rok)
            {
                case 2008:
                    switch (ms)
                    {
                        case 6:
                            return 107;
                        case 7:
                            return 108;
                        case 8:
                            return 109;
                        case 9:
                            return 110;
                        case 10:
                            return 111;
                        case 11:
                            return 112;
                        case 12:
                            return 113;
                    }
                    break;
                case 2009:
                    switch (ms)
                    {
                        case 1:
                            return 121;
                        case 2:
                            return 122;
                        case 3:
                            return 123;
                        case 4:
                            return 124;
                        case 5:
                            return 125;                        
                    }
                    break;
            }

            return 1;
        }

        public string PodajKrajNIP(string NIP)
        {
            string nip = NIP.Replace(" ", "").Replace("-", "").Trim();

            if (polskiNIP(nip))
            {
                return "PL";
            }
            else
            {
                if ((nip.Length >= 2) && (!isNumeric(nip.Substring(0, 2))))
                {
                    return nip.Substring(0, 2);
                }
                else
                {
                    return "";
                }
                
            }
        }

        public string PodajNumerNIP(string NIP)
        {
            string nip = NIP.Replace(" ", "").Replace("-", "").Trim();
    
            if (polskiNIP(nip))
            {
                return nip.Length > 13 ? nip.Substring(0, 13) : nip;
            }
            else
            {
                if ((nip.Length >= 2) && (!isNumeric(nip.Substring(0, 2))))
                {
                    return nip.Length > 15 ? nip.Substring(2, 13) : nip.Substring(2, nip.Length - 2);
                }
                else
                {
                    return nip.Length > 13 ? nip.Substring(0, 13) : nip;
                }
                
            }
        }

        public bool polskiNIP(string nip)
        {
            int[] wagi = new int[] {6,5,7,2,3,4,5,6,7};
                
            string  shortNIP; 
            int suma, iloczyn, kontrolny;
	        suma=0;
	        kontrolny=0;
	        shortNIP = nip.Replace(" ", "").Replace("-", "").Trim();

            if ((shortNIP.Length == 10) && isNumeric(shortNIP))
            {

                for (int i = 0; i <= 8; i++)
                {
                    iloczyn = Convert.ToInt32(shortNIP.Substring(i, 1)) * wagi[i];
                    suma = suma + iloczyn;
                }
                kontrolny = suma % 11;

                if (kontrolny == Convert.ToInt32(shortNIP.Substring(shortNIP.Length - 1, 1)))
                {
                    return true;
                }
            }
            return false;
        }


		#endregion Methods 

    }
}
