Esempio n. 1
0
        private void btnNarudzbe_Click(object sender, EventArgs e)
        {
            string    sql = "SELECT * FROM neuspjela_fiskalizacija";
            DataTable DT  = classSQL.select(sql, "neuspjela_fiskalizacija").Tables[0];

            Raverus.FiskalizacijaDEV.Schema.ZaglavljeType zaglavlje = new Raverus.FiskalizacijaDEV.Schema.ZaglavljeType()
            {
                DatumVrijeme = Razno.DohvatiFormatiranoTrenutnoDatumVrijeme(),
                IdPoruke     = Guid.NewGuid().ToString()
            };

            X509Certificate2 certifikat    = Raverus.FiskalizacijaDEV.PopratneFunkcije.Potpisivanje.DohvatiCertifikat(DTfis.Rows[0]["naziv_certifikata"].ToString());
            string           datum_vrijeme = DateTime.Now.ToString("dd.MM.yyyyThh:mm:ss");

            for (int i = 0; i < DT.Rows.Count; i++)
            {
                XmlDocument dokument = new XmlDocument();
                dokument.LoadXml(DT.Rows[i]["xml"].ToString());
                XmlNamespaceManager ns = new XmlNamespaceManager(dokument.NameTable);
                ns.AddNamespace("tns", "http://www.apis-it.hr/fin/2012/types/f73");
                string d = dokument.SelectSingleNode("/tns:RacunZahtjev/tns:Racun/tns:NakDost", ns).ChildNodes[0].Value = "true";

                Raverus.FiskalizacijaDEV.CentralniInformacijskiSustav cis = new CentralniInformacijskiSustav();
                if (Class.Postavke.TEST_FISKALIZACIJA)
                {
                    cis.CisUrl = "https://cistest.apis-it.hr:8449/FiskalizacijaServiceTest";
                }
                else
                {
                    cis.CisUrl = "https://cis.porezna-uprava.hr:8449/FiskalizacijaService";
                }
                Raverus.FiskalizacijaDEV.PopratneFunkcije.Potpisivanje.PotpisiXmlDokument(dokument, certifikat);
                Raverus.FiskalizacijaDEV.PopratneFunkcije.XmlDokumenti.DodajSoapEnvelope(ref dokument);

                try
                {
                    DateTime dd;
                    DateTime.TryParse(DT.Rows[i]["date"].ToString(), out dd);
                    string id_kasa  = DT.Rows[i]["id_kasa"].ToString();
                    string id_ducan = DT.Rows[i]["id_ducan"].ToString();

                    XmlDocument odgovor = cis.PosaljiSoapPoruku(dokument);
                    string      jir     = Raverus.FiskalizacijaDEV.PopratneFunkcije.XmlDokumenti.DohvatiJir(odgovor);

                    provjera_sql(classSQL.delete("DELETE FROM neuspjela_fiskalizacija WHERE broj_racuna='" + DT.Rows[i]["broj_racuna"].ToString() + "'" +
                                                 " AND id_kasa='" + id_kasa + "' AND id_ducan='" + id_ducan + "'"));

                    provjera_sql(classSQL.update("UPDATE racuni SET jir='" + jir + "' WHERE broj_racuna='" + DT.Rows[i]["broj_racuna"].ToString() + "'" +
                                                 " AND godina='" + dd.Year.ToString() + "' AND id_kasa='" + id_kasa + "' AND id_ducan='" + id_ducan + "'" +
                                                 ""));
                }
                catch (Exception ex)
                {
                    MessageBox.Show("Greška kod fiskalizacije\r\n\r\n\r\n" + cis.OdgovorGreska.InnerXml + ex.ToString() + "\r\n\r\n\r\n\r\n\r\n" + ex.ToString(), "Greška od strane FINE");
                }
            }

            Set();
        }
Esempio n. 2
0
        private static void EchoPrimjer()
        {
            Raverus.FiskalizacijaDEV.CentralniInformacijskiSustav cis = new CentralniInformacijskiSustav();

            bool bTest = cis.Echo();

            bTest = cis.Echo("moj test");

            XmlDocument doc = cis.PosaljiEcho("");

            doc = cis.PosaljiEcho("moja poruka");

            doc = Raverus.FiskalizacijaDEV.PopratneFunkcije.XmlDokumenti.DohvatiPorukuEchoZahtjev("moj prvi test");
            doc = cis.PosaljiSoapPoruku(doc);
        }
Esempio n. 3
0
        private void Fiskalizacija1()
        {
            string xml = @"<?xml version=""1.0"" encoding=""utf-8""?>" +
                         @"<tns:RacunZahtjev xmlns:xsi=""http://www.w3.org/2001/XMLSchema-instance"" Id=""signXmlId"" xmlns:tns=""http://www.apis-it.hr/fin/2012/types/f73"">" +
                         @"<tns:Zaglavlje>" +
                         @"<tns:IdPoruke>cff93023-850b-403c-ac8b-277619e81dc9</tns:IdPoruke>" +
                         @"<tns:DatumVrijeme>21.10.2012T10:10:28</tns:DatumVrijeme>" +
                         @"</tns:Zaglavlje>" +
                         @"<tns:Racun>" +
                         @"<tns:Oib>47165970760</tns:Oib>" +
                         @"<tns:USustPdv>true</tns:USustPdv>" +
                         @"<tns:DatVrijeme>21.10.2012T10:10:22</tns:DatVrijeme>" +
                         @"<tns:OznSlijed>P</tns:OznSlijed>" +
                         @"<tns:BrRac><tns:BrOznRac>1</tns:BrOznRac>" +
                         @"<tns:OznPosPr>123</tns:OznPosPr>" +
                         @"<tns:OznNapUr>1</tns:OznNapUr>" +
                         @"</tns:BrRac>" +
                         @"<tns:Pdv>" +
                         @"<tns:Porez>" +
                         @"<tns:Stopa>25.00</tns:Stopa>" +
                         @"<tns:Osnovica>10.00</tns:Osnovica>" +
                         @"<tns:Iznos>2.50</tns:Iznos>" +
                         @"</tns:Porez>" +
                         @"</tns:Pdv>" +
                         @"<tns:IznosUkupno>12.50</tns:IznosUkupno>" +
                         @"<tns:NacinPlac>G</tns:NacinPlac>" +
                         @"<tns:OibOper>47165970760</tns:OibOper>" +
                         @"<tns:ZastKod>e4d909c290d0fb1ca068ffaddf22cbd0</tns:ZastKod>" +
                         @"<tns:NakDost>false</tns:NakDost>" +
                         @"</tns:Racun>" +
                         @"</tns:RacunZahtjev>";

            XmlDocument dokument = new XmlDocument();

            dokument.LoadXml(xml);

            Raverus.FiskalizacijaDEV.CentralniInformacijskiSustav cis = new CentralniInformacijskiSustav();

            X509Certificate2 certifikat = Raverus.FiskalizacijaDEV.PopratneFunkcije.Potpisivanje.DohvatiCertifikat("FISKAL 1");

            Raverus.FiskalizacijaDEV.PopratneFunkcije.Potpisivanje.PotpisiXmlDokument(dokument, certifikat);

            Raverus.FiskalizacijaDEV.PopratneFunkcije.XmlDokumenti.DodajSoapEnvelope(ref dokument);

            XmlDocument odgovor = cis.PosaljiSoapPoruku(dokument);
        }
Esempio n. 4
0
        private void SnimiDokumentUDatoteku(string oib)
        {
            Raverus.FiskalizacijaDEV.CentralniInformacijskiSustav cis = new CentralniInformacijskiSustav();

            Raverus.FiskalizacijaDEV.Schema.RacunType racun = GetRacun(oib);


            Schema.RacunZahtjev zahtjev    = PopratneFunkcije.XmlDokumenti.KreirajRacunZahtjev(racun);
            XmlDocument         zahtjevXml = PopratneFunkcije.XmlDokumenti.SerijalizirajRacunZahtjev(zahtjev);

            PopratneFunkcije.Potpisivanje.PotpisiXmlDokument(zahtjevXml, PopratneFunkcije.Potpisivanje.DohvatiCertifikat("FISKAL 1"));
            PopratneFunkcije.XmlDokumenti.DodajSoapEnvelope(ref zahtjevXml);

            Raverus.FiskalizacijaDEV.PopratneFunkcije.XmlDokumenti.SnimiXmlDokumentDatoteka(zahtjevXml, @"D:\Users\Nino\Desktop\Zahtjev.xml");

            XmlDocument doc = cis.PosaljiSoapPoruku(zahtjevXml);

            Raverus.FiskalizacijaDEV.PopratneFunkcije.XmlDokumenti.SnimiXmlDokumentDatoteka(doc, @"D:\Users\Nino\Desktop\Odgovor.xml");
        }
Esempio n. 5
0
        private void ObradaGreske(string oib)
        {
            //Greška je u datumu i vremenu slanja, "21.10.201210:10:28" umjesto "21.10.2012T10:10:28"
            string xml = @"<?xml version=""1.0"" encoding=""utf-8""?><tns:RacunZahtjev xmlns:xsi=""http://www.w3.org/2001/XMLSchema-instance"" Id=""signXmlId"" xmlns:tns=""http://www.apis-it.hr/fin/2012/types/f73""><tns:Zaglavlje><tns:IdPoruke>cff93023-850b-403c-ac8b-277619e81dc9</tns:IdPoruke><tns:DatumVrijeme>21.10.201210:10:28</tns:DatumVrijeme></tns:Zaglavlje><tns:Racun><tns:Oib>44718633471</tns:Oib><tns:USustPdv>true</tns:USustPdv><tns:DatVrijeme>21.10.2012T10:10:22</tns:DatVrijeme><tns:OznSlijed>P</tns:OznSlijed><tns:BrRac><tns:BrOznRac>1</tns:BrOznRac><tns:OznPosPr>123</tns:OznPosPr><tns:OznNapUr>1</tns:OznNapUr></tns:BrRac><tns:Pdv><tns:Porez><tns:Stopa>25.00</tns:Stopa><tns:Osnovica>10.00</tns:Osnovica><tns:Iznos>2.50</tns:Iznos></tns:Porez></tns:Pdv><tns:IznosUkupno>12.50</tns:IznosUkupno><tns:NacinPlac>G</tns:NacinPlac><tns:OibOper>12345678900</tns:OibOper><tns:ZastKod>e4d909c290d0fb1ca068ffaddf22cbd0</tns:ZastKod><tns:NakDost>false</tns:NakDost></tns:Racun></tns:RacunZahtjev>";

            XmlDocument dokument = new XmlDocument();

            dokument.LoadXml(xml);

            Raverus.FiskalizacijaDEV.CentralniInformacijskiSustav cis = new CentralniInformacijskiSustav();

            X509Certificate2 certifikat = Raverus.FiskalizacijaDEV.PopratneFunkcije.Potpisivanje.DohvatiCertifikat("FISKAL 1");

            PopratneFunkcije.Potpisivanje.PotpisiXmlDokument(dokument, certifikat);

            PopratneFunkcije.XmlDokumenti.DodajSoapEnvelope(ref dokument);

            try
            {
                XmlDocument odgovor = cis.PosaljiSoapPoruku(dokument);
                if (odgovor != null)
                {
                    string jir = Raverus.FiskalizacijaDEV.PopratneFunkcije.XmlDokumenti.DohvatiJir(odgovor);
                    MessageBox.Show(jir);
                }
            }
            catch (Exception ex)
            {
                if (cis.OdgovorGreska != null)
                {
                    MessageBox.Show(cis.OdgovorGreska.InnerXml);
                    MessageBox.Show(Raverus.FiskalizacijaDEV.PopratneFunkcije.XmlDokumenti.DohvatiSifruGreske(cis.OdgovorGreska, PopratneFunkcije.TipDokumentaEnum.RacunOdgovor));
                    MessageBox.Show(Raverus.FiskalizacijaDEV.PopratneFunkcije.XmlDokumenti.DohvatiPorukuGreske(cis.OdgovorGreska, PopratneFunkcije.TipDokumentaEnum.RacunOdgovor));
                    MessageBox.Show(Raverus.FiskalizacijaDEV.PopratneFunkcije.XmlDokumenti.DohvatiGreskuRezultataZahtjeva(cis.OdgovorGreska));
                }
                else
                {
                    MessageBox.Show(String.Format("Greška: {0}", ex.Message));
                }
            }
        }
Esempio n. 6
0
        private void CertifikatDatoteka(string oib)
        {
            Raverus.FiskalizacijaDEV.CentralniInformacijskiSustav cis = new CentralniInformacijskiSustav();

            Raverus.FiskalizacijaDEV.Schema.RacunType racun = GetRacun(oib);

            X509Certificate2 cert = Raverus.FiskalizacijaDEV.PopratneFunkcije.Potpisivanje.DohvatiCertifikat(@"D:\Users\Nino\Desktop\Fiskalizacija\MojCert.pfx", "PASSWORD");

            if (cert != null)
            {
                // varijanta 1
                XmlDocument odgovor = cis.PosaljiRacun(racun, cert);


                // varijanta 2
                Schema.RacunZahtjev zahtjev    = PopratneFunkcije.XmlDokumenti.KreirajRacunZahtjev(racun);
                XmlDocument         zahtjevXml = PopratneFunkcije.XmlDokumenti.SerijalizirajRacunZahtjev(zahtjev);

                PopratneFunkcije.Potpisivanje.PotpisiXmlDokument(zahtjevXml, cert);
                PopratneFunkcije.XmlDokumenti.DodajSoapEnvelope(ref zahtjevXml);

                XmlDocument doc = cis.PosaljiSoapPoruku(zahtjevXml);
            }
        }
Esempio n. 7
0
        private void Fiskalizacija(string oib, string oib_operatera)
        {
            string xml = @"<?xml version=""1.0"" encoding=""utf-8""?>" +
                         @"<tns:RacunZahtjev xmlns:xsi=""http://www.w3.org/2001/XMLSchema-instance"" Id=""signXmlId"" xmlns:tns=""http://www.apis-it.hr/fin/2012/types/f73"">" +

                         @"<tns:Zaglavlje>" +
                         @"<tns:IdPoruke>cff93023-850b-403c-ac8b-277619e81dc9</tns:IdPoruke>" +
                         @"<tns:DatumVrijeme>" + DateTime.Now.ToString("dd.MM.yyyyThh:mm:ss") + "</tns:DatumVrijeme>" +
                         @"</tns:Zaglavlje>" +

                         @"<tns:Racun>" +
                         @"<tns:Oib>" + oib + "</tns:Oib>" +
                         @"<tns:USustPdv>true</tns:USustPdv>" +
                         @"<tns:DatVrijeme>09.11.2012T12:25:28</tns:DatVrijeme>" +
                         @"<tns:OznSlijed>" + DTfis.Rows[0]["oznaka_slijednosti"].ToString() + "</tns:OznSlijed>" +

                         @"<tns:BrRac>" +
                         @"<tns:BrOznRac>1</tns:BrOznRac>" +
                         @"<tns:OznPosPr>123</tns:OznPosPr>" +
                         @"<tns:OznNapUr>1</tns:OznNapUr>" +
                         @"</tns:BrRac>" +

                         @"<tns:OstaliPor>" +
                         @"<tns:Porez>" +
                         @"<tns:Naziv>Porez na luksuz</tns:Naziv>" +
                         @"<tns:Stopa>15.00</tns:Stopa>" +
                         @"<tns:Osnovica>10.00</tns:Osnovica>" +
                         @"<tns:Iznos>1.50</tns:Iznos>" +
                         @"</tns:Porez>" +
                         @"</tns:OstaliPor>" +
                         @"<tns:IznosOslobPdv>12.00</tns:IznosOslobPdv>" +
                         @"<tns:IznosMarza>13.00</tns:IznosMarza>" +
                         @"<tns:Naknade>" +
                         @"<tns:Naknada>" +
                         @"<tns:NazivN>Povratna naknada</tns:NazivN>" +
                         @"<tns:IznosN>1.00</tns:IznosN>" +
                         @"</tns:Naknada>" +
                         @"</tns:Naknade>" +

                         @"<tns:IznosUkupno>12.50</tns:IznosUkupno>" +
                         @"<tns:NacinPlac>G</tns:NacinPlac>" +
                         @"<tns:OibOper>" + oib_operatera + "</tns:OibOper>" +
                         @"<tns:ZastKod>e4d909c290d0fb1ca068ffaddf22cbd0</tns:ZastKod>" +
                         @"<tns:NakDost>false</tns:NakDost>" +
                         @"</tns:Racun>" +

                         @"</tns:RacunZahtjev>";

            XmlDocument dokument = new XmlDocument();

            dokument.LoadXml(xml);

            Raverus.FiskalizacijaDEV.CentralniInformacijskiSustav cis = new CentralniInformacijskiSustav();

            X509Certificate2 certifikat = Raverus.FiskalizacijaDEV.PopratneFunkcije.Potpisivanje.DohvatiCertifikat("FISKAL 1");

            Raverus.FiskalizacijaDEV.PopratneFunkcije.Potpisivanje.PotpisiXmlDokument(dokument, certifikat);

            Raverus.FiskalizacijaDEV.PopratneFunkcije.XmlDokumenti.DodajSoapEnvelope(ref dokument);

            try
            {
                XmlDocument odgovor = cis.PosaljiSoapPoruku(dokument);
                if (odgovor != null)
                {
                    string jir = Raverus.FiskalizacijaDEV.PopratneFunkcije.XmlDokumenti.DohvatiJir(odgovor);
                    MessageBox.Show(jir);
                }
            }
            catch (Exception ex)
            {
                if (cis.OdgovorGreska != null)
                {
                    MessageBox.Show(cis.OdgovorGreska.InnerXml);
                }
                else
                {
                    MessageBox.Show(String.Format("Greska: {0}", ex.Message));
                }
            }
        }
Esempio n. 8
0
        public static string[] Fiskalizacija(string oib,
                                             string oib_operatera,
                                             DateTime datum_racuna,
                                             int broj_rac,
                                             DataTable DTpdv,
                                             string[] porez_na_potrosnju,
                                             DataTable DTostali_porezi,
                                             string iznososlobpdv,
                                             string iznos_marza,
                                             DataTable DTnaknade,
                                             decimal ukupno,
                                             string nacin_placanja,
                                             bool naknadno_poslano,
                                             string dokumenat
                                             )
        {
            string ZkiGotov = "";

            string[] za_vratiti = new string[3];

            DataTable DTducan = RemoteDB.select(string.Format("SELECT ime_ducana FROM ducan WHERE id_ducan='{0}';", DTfis.Rows[0]["oznakaPP"].ToString()), "ducan").Tables[0];

            if (DTducan.Rows.Count > 0)
            {
                prodajnoMJ = DTducan.Rows[0]["ime_ducana"].ToString();
            }
            else
            {
                prodajnoMJ = "1";
            }

            if (dokumenat == "F")
            {
                DataTable DT = RemoteDB.select("SELECT ime_blagajne FROM blagajna WHERE id_blagajna='" + DTfis.Rows[0]["oznaka_prodajnog_mj"].ToString() + "'", "blagajna").Tables[0];
                if (DT.Rows.Count > 0)
                {
                    broj_kase = Convert.ToInt16(DT.Rows[0]["ime_blagajne"].ToString());
                }
            }
            else if (dokumenat == "A")
            {
                DataTable DT = RemoteDB.select("SELECT ime_blagajne FROM blagajna WHERE id_blagajna='" + DTfis.Rows[0]["oznaka_prodajnog_mj_avans"].ToString() + "'", "blagajna").Tables[0];
                if (DT.Rows.Count > 0)
                {
                    broj_kase = Convert.ToInt16(DT.Rows[0]["ime_blagajne"].ToString());
                }
            }

            if (DTfis.Rows[0]["aktivnost"].ToString() != "1")
            {
                za_vratiti[0] = "";
                za_vratiti[1] = "";
                za_vratiti[2] = "";
                return(za_vratiti);
            }

            bool sustavPDV = false;

            if (DTfis.Rows[0]["sustav_pdv"].ToString() == "DA")
            {
                sustavPDV = true;
            }

            try
            {
                Raverus.FiskalizacijaDEV.Schema.ZaglavljeType zaglavlje = new Raverus.FiskalizacijaDEV.Schema.ZaglavljeType()
                {
                    DatumVrijeme = datum_racuna.ToString("dd.MM.yyyyTHH:mm:ss"),
                    IdPoruke     = Guid.NewGuid().ToString()
                };

                X509Certificate2 certifikat = Raverus.FiskalizacijaDEV.PopratneFunkcije.Potpisivanje.DohvatiCertifikat(DTfis.Rows[0]["naziv_certifikata"].ToString());
                if (certifikat == null)
                {
                    MessageBox.Show("Nije pravilno instalirani certifikat.", "Greška");
                }
                string datum_vrijeme = datum_racuna.ToString("dd.MM.yyyyTHH:mm:ss");
                ZkiGotov = ZKI(certifikat,
                               oib,
                               datum_vrijeme,
                               broj_rac.ToString(),
                               prodajnoMJ,
                               broj_kase.ToString(),
                               ukupno.ToString("#0.00").Replace(",", "."));

                xml = @"<?xml version=""1.0"" encoding=""utf-8""?>" +
                      @"<tns:RacunZahtjev xmlns:xsi=""http://www.w3.org/2001/XMLSchema-instance"" Id=""signXmlId"" xmlns:tns=""http://www.apis-it.hr/fin/2012/types/f73"">" +

                      @"<tns:Zaglavlje>" +
                      @"<tns:IdPoruke>" + zaglavlje.IdPoruke + "</tns:IdPoruke>" +
                      @"<tns:DatumVrijeme>" + datum_vrijeme + "</tns:DatumVrijeme>" +
                      @"</tns:Zaglavlje>" +

                      @"<tns:Racun>" +

                      @"<tns:Oib>" + oib + "</tns:Oib>" +
                      @"<tns:USustPdv>" + sustavPDV.ToString().ToLower() + "</tns:USustPdv>" +
                      @"<tns:DatVrijeme>" + datum_racuna.ToString("dd.MM.yyyyTHH:mm:ss") + "</tns:DatVrijeme>" +
                      @"<tns:OznSlijed>" + DTfis.Rows[0]["oznaka_slijednosti"].ToString() + "</tns:OznSlijed>" +

                      @"<tns:BrRac>" +
                      @"<tns:BrOznRac>" + broj_rac + "</tns:BrOznRac>" +
                      @"<tns:OznPosPr>" + prodajnoMJ + "</tns:OznPosPr>" +
                      @"<tns:OznNapUr>" + broj_kase + "</tns:OznNapUr>" +
                      @"</tns:BrRac>" +

                      PDVreturn(DTpdv, sustavPDV.ToString().ToLower()) +

                      PorezNaPotrosnju(porez_na_potrosnju) +

                      OstaliPorezi(DTostali_porezi) +
                      IznosOslobPdv(iznososlobpdv) +
                      IznosMarza(iznos_marza) +
                      Naknade(DTnaknade) +

                      @"<tns:IznosUkupno>" + ukupno.ToString("#0.00").Replace(",", ".") + "</tns:IznosUkupno>" +
                      @"<tns:NacinPlac>" + nacin_placanja + "</tns:NacinPlac>" +
                      @"<tns:OibOper>" + oib_operatera + "</tns:OibOper>" +
                      @"<tns:ZastKod>" + ZkiGotov + "</tns:ZastKod>" +
                      @"<tns:NakDost>" + naknadno_poslano.ToString().ToLower() + "</tns:NakDost>" +

                      @"</tns:Racun>" +
                      @"</tns:RacunZahtjev>";

                XmlDocument dokument = new XmlDocument();
                dokument.LoadXml(xml);

                Raverus.FiskalizacijaDEV.CentralniInformacijskiSustav cis = new CentralniInformacijskiSustav();
                if (DTfis.Rows[0]["test_Yes"].ToString() == "1")
                {
                    cis.CisUrl = "https://cistest.apis-it.hr:8449/FiskalizacijaServiceTest";
                }
                else
                {
                    cis.CisUrl = "https://cis.porezna-uprava.hr:8449/FiskalizacijaService";
                }

                Raverus.FiskalizacijaDEV.PopratneFunkcije.Potpisivanje.PotpisiXmlDokument(dokument, certifikat);
                Raverus.FiskalizacijaDEV.PopratneFunkcije.XmlDokumenti.DodajSoapEnvelope(ref dokument);

                try
                {
                    string path = System.Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments);

                    if (!Directory.Exists(path + "/FiskalniXMLResort"))
                    {
                        Directory.CreateDirectory(path + "/FiskalniXMLResort");
                    }

                    dokument.Save(path + "/FiskalniXMLResort/" + broj_rac + "-" + DateTime.Now.Year + ".xml");
                }
                catch { }

                try
                {
                    cis.TimeOut = 10000;

                    XmlDocument odgovor = cis.PosaljiSoapPoruku(dokument);

                    if (odgovor != null)
                    {
                        string jir = Raverus.FiskalizacijaDEV.PopratneFunkcije.XmlDokumenti.DohvatiJir(odgovor);
                        za_vratiti[0] = jir;
                        za_vratiti[1] = ZkiGotov;
                        za_vratiti[2] = zaglavlje.IdPoruke;
                        return(za_vratiti);
                    }
                    else
                    {
                        za_vratiti[0] = "";
                        za_vratiti[1] = ZkiGotov;
                        za_vratiti[2] = zaglavlje.IdPoruke;
                        //InsertNeuspjelaFis(broj_rac.ToString(), cis.OdgovorGreska.InnerXml, prodajnoMJ.ToString(), broj_kase.ToString(), oib_operatera, ukupno.ToString("#0.00").Replace(",", "."));
                        return(za_vratiti);
                    }
                }
                catch (Exception ex)
                {
                    za_vratiti[0] = "";
                    za_vratiti[1] = ZkiGotov;
                    za_vratiti[2] = zaglavlje.IdPoruke;

                    string greska;
                    if (cis.OdgovorGreska != null)
                    {
                        greska = cis.OdgovorGreska.InnerXml.Replace("\'", "");

                        //InsertNeuspjelaFis(broj_rac.ToString(), greska.Replace("\"", ""), prodajnoMJ.ToString(), broj_kase.ToString(), oib_operatera, ukupno.ToString("#0.00").Replace(",", "."));
                        MessageBox.Show("Greška kod fiskalizacije\r\n\r\n\r\n" + greska.Replace("\"", "") + "\r\n\r\n\r\n\r\n\r\n", "Greška od strane FINE");
                    }
                    else
                    {
                        greska = ex.ToString().Replace("\'", "");
                        //InsertNeuspjelaFis(broj_rac.ToString(), greska, prodajnoMJ.ToString(), broj_kase.ToString(), oib_operatera, ukupno.ToString("#0.00").Replace(",", "."));
                        MessageBox.Show("Greška kod fiskalizacije\r\n\r\n\r\n" + greska.Replace("\"", ""));
                    }

                    za_vratiti[1] = ZkiGotov;
                    return(za_vratiti);
                }
            }
            catch (Exception)
            {
                za_vratiti[0] = "";
                za_vratiti[1] = ZkiGotov;
                za_vratiti[2] = "";
                return(za_vratiti);
            }
        }
Esempio n. 9
0
        private void btnStartTest_Click(object sender, EventArgs e)
        {
            txtLog.Text = "";
            if (CheckCertificate())
            {
                if (CheckOib())
                {
                    if (CheckSsl())
                    {
                        Raverus.FiskalizacijaDEV.Schema.RacunType racun = GetRacun(certifikat);
                        if (racun != null)
                        {
                            progressBar1.Maximum = iterations * 3;
                            btnStartTest.Enabled = false;
                            stopWatch.Reset();
                            RefreshLog("ECHO test počinje...");
                            stopWatch.Start();
                            Raverus.FiskalizacijaDEV.CentralniInformacijskiSustav cis = new CentralniInformacijskiSustav();
                            for (int i = 0; i < iterations; i++)
                            {
                                cis.Echo();
                                Application.DoEvents();
                                progressBar1.PerformStep();
                            }
                            stopWatch.Stop();
                            echo = stopWatch.Elapsed.TotalSeconds;
                            RefreshLog(String.Format("ECHO test završen. Vrijeme: {0:n4}. Prosjek: {1:n4}", echo, echo / iterations));
                            RefreshLog("");

                            RefreshLog("Račun test počinje...");
                            RefreshLog("Kreiranje i potpisivanje računa...");
                            SortedList <int, XmlDocument> sl = new SortedList <int, XmlDocument>();
                            stopWatch.Reset();
                            stopWatch.Start();
                            for (int i = 0; i < iterations; i++)
                            {
                                Schema.RacunZahtjev zahtjev    = PopratneFunkcije.XmlDokumenti.KreirajRacunZahtjev(racun);
                                XmlDocument         zahtjevXml = PopratneFunkcije.XmlDokumenti.SerijalizirajRacunZahtjev(zahtjev);
                                PopratneFunkcije.Potpisivanje.PotpisiXmlDokument(zahtjevXml, certifikat);
                                PopratneFunkcije.XmlDokumenti.DodajSoapEnvelope(ref zahtjevXml);

                                sl.Add(i, zahtjevXml);

                                Application.DoEvents();
                                progressBar1.PerformStep();
                            }
                            stopWatch.Stop();
                            potpis = stopWatch.Elapsed.TotalSeconds;
                            RefreshLog(String.Format("Kreiranje i potpisivanje završeno. Vrijeme: {0:n4}. Prosjek: {1:n4}", potpis, potpis / iterations));
                            RefreshLog("");

                            RefreshLog("Slanje računa...");
                            stopWatch.Reset();
                            stopWatch.Start();
                            foreach (XmlDocument item in sl.Values)
                            {
                                cis.PosaljiSoapPoruku(item);
                                Application.DoEvents();
                                progressBar1.PerformStep();
                            }
                            stopWatch.Stop();
                            slanje = stopWatch.Elapsed.TotalSeconds;
                            RefreshLog(String.Format("Slanje računa završeno. Vrijeme: {0:n4}. Prosjek: {1:n4}", slanje, slanje / iterations));
                            RefreshLog("");

                            RefreshLog(String.Format("Račun test završen. Vrijeme: {0:n4}. Prosjek: {1:n4}", potpis + slanje, (potpis + slanje) / iterations));

                            btnStartTest.Enabled = true;
                            testFinished         = true;
                        }
                        else
                        {
                            MessageBox.Show("Greška kod kreiranja test računa.");
                        }
                    }
                    else
                    {
                        MessageBox.Show("Nije moguće uspostaviti SSL vezu prema CIS-u. Provjerite da li su potrebni certifikati uredno instalirani.");
                        DialogResult dire = MessageBox.Show("Želite li provjeriti status CIS-a?", "Status CIS-a", MessageBoxButtons.YesNo);
                        if (dire == DialogResult.Yes)
                        {
                            MessageBox.Show(Raverus.FiskalizacijaDEV.PopratneFunkcije.Razno.DohvatiStatusCisServisa().ToString());
                        }
                    }
                }
                else
                {
                    MessageBox.Show("Greška kod dohvata OIB-a iz certifikata.");
                }
            }
        }
Esempio n. 10
0
        private void btnNarudzbe_Click(object sender, EventArgs e)
        {
            string    sql = "SELECT * FROM neuspjela_fiskalizacija";
            DataTable DT  = classSQL.select(sql, "neuspjela_fiskalizacija").Tables[0];

            Raverus.FiskalizacijaDEV.Schema.ZaglavljeType zaglavlje = new Raverus.FiskalizacijaDEV.Schema.ZaglavljeType()
            {
                DatumVrijeme = Razno.DohvatiFormatiranoTrenutnoDatumVrijeme(),
                IdPoruke     = Guid.NewGuid().ToString()
            };

            //X509Certificate2 certifikat = Raverus.FiskalizacijaDEV.PopratneFunkcije.Potpisivanje.DohvatiCertifikat(DTfis.Rows[0]["naziv_certifikata"].ToString());

            X509Certificate2 certifikat;

            if (File.Exists(Class.Postavke.putanja_certifikat))
            {
                certifikat = Raverus.FiskalizacijaDEV.PopratneFunkcije.Potpisivanje.DohvatiCertifikat(Class.Postavke.putanja_certifikat, Class.Postavke.certifikat_zaporka);
            }
            else
            {
                certifikat = Raverus.FiskalizacijaDEV.PopratneFunkcije.Potpisivanje.DohvatiCertifikat(DTfis.Rows[0]["naziv_certifikata"].ToString());
            }

            string datum_vrijeme = DateTime.Now.ToString("dd.MM.yyyyThh:mm:ss");

            for (int i = 0; i < DT.Rows.Count; i++)
            {
                XmlDocument dokument = new XmlDocument();
                dokument.LoadXml(DT.Rows[i]["xml"].ToString());
                XmlNamespaceManager ns = new XmlNamespaceManager(dokument.NameTable);
                ns.AddNamespace("tns", "http://www.apis-it.hr/fin/2012/types/f73");
                string d = dokument.SelectSingleNode("/tns:RacunZahtjev/tns:Racun/tns:NakDost", ns).ChildNodes[0].Value = "true";

                Raverus.FiskalizacijaDEV.CentralniInformacijskiSustav cis = new CentralniInformacijskiSustav();

                string testYes = File.Exists("FiskalTest") ? "1" : "0";
                if (Class.Postavke.TEST_FISKALIZACIJA)
                {
                    cis.CisUrl = "https://cistest.apis-it.hr:8449/FiskalizacijaServiceTest";
                }
                else
                {
                    cis.CisUrl = "https://cis.porezna-uprava.hr:8449/FiskalizacijaService";
                }

                Raverus.FiskalizacijaDEV.PopratneFunkcije.Potpisivanje.PotpisiXmlDokument(dokument, certifikat);
                Raverus.FiskalizacijaDEV.PopratneFunkcije.XmlDokumenti.DodajSoapEnvelope(ref dokument);

                try
                {
                    string vrsta    = DT.Rows[i]["vrsta"].ToString().ToLower();
                    string godina   = Convert.ToDateTime(DT.Rows[i]["date"].ToString()).Year.ToString();
                    string id       = DT.Rows[i]["id"].ToString();
                    string broj     = DT.Rows[i]["broj_racuna"].ToString();
                    string id_ducan = DT.Rows[i]["id_ducan"].ToString();
                    string id_kasa  = DT.Rows[i]["id_kasa"].ToString();

                    XmlDocument odgovor = cis.PosaljiSoapPoruku(dokument);
                    string      jir     = Raverus.FiskalizacijaDEV.PopratneFunkcije.XmlDokumenti.DohvatiJir(odgovor);
                    provjera_sql(classSQL.delete("DELETE FROM neuspjela_fiskalizacija WHERE id='" + id + "'"));
                    switch (vrsta)
                    {
                    case "račun":
                        provjera_sql(classSQL.update("UPDATE racuni SET jir='" + jir + "' WHERE broj_racuna='" + broj + "' AND id_ducan=" + id_ducan + " AND id_kasa=" + id_kasa));
                        break;

                    case "avans":
                        provjera_sql(classSQL.update("UPDATE avansi SET jir='" + jir + "' WHERE broj_avansa='" + broj + "'"));
                        //" AND godina_avansa ='" + godina + "'"));
                        break;

                    case "faktura":
                        provjera_sql(classSQL.update("UPDATE fakture SET jir='" + jir + "' WHERE broj_fakture='" + broj + "'"));
                        break;

                    case "ifb":
                        provjera_sql(classSQL.update("UPDATE ifb SET jir='" + jir + "' WHERE broj='" + broj + "'"));
                        break;

                    default:
                        provjera_sql(classSQL.update("UPDATE racuni SET jir='" + jir + "' WHERE broj_racuna='" + broj + "' AND id_ducan=" + id_ducan + " AND id_kasa=" + id_kasa));
                        break;
                    }
                }
                catch (Exception ex)
                {
                    string greska;
                    if (cis.OdgovorGreska != null)
                    {
                        greska = cis.OdgovorGreska.InnerXml.Replace("\'", "");
                        int x, y;
                        x = greska.IndexOf("<tns:PorukaGreske>") + 18;
                        y = greska.IndexOf("</tns:PorukaGreske>");
                        string porukaUseru = new string(greska.ToArray(), x, y - x);

                        MessageBox.Show("Greška kod fiskalizacije\r\n\r\n" + porukaUseru.Replace("\"", "") + "\r\n\r\nPokušajte naknadno fiskalizirati", "Greška od strane FINE");
                    }
                    else
                    {
                        greska = ex.ToString().Replace("\'", "");
                        MessageBox.Show("Greška kod fiskalizacije\r\n\r\n\r\nNije ostvarena veza sa poreznom upravom\r\n\r\nPokušajte naknadno fiskalizirati");
                    }
                }
            }

            Set();
        }
Esempio n. 11
0
        private static void DoWork(string[] args, X509Certificate2 certifikat)
        {
            Raverus.FiskalizacijaDEV.PopratneFunkcije.TipDokumentaEnum tip = PopratneFunkcije.TipDokumentaEnum.Nepoznato;
            string tipDokumenta;
            string datoteka;
            string odgovorDatoteka;
            string logging;
            string url;
            bool   bLogging;
            string snimanje;
            bool   bSnimanje;
            bool   bNemojPoslati   = false;
            bool   bNemojPotpisati = false;


            tipDokumenta    = args[0];
            url             = args[1];
            datoteka        = args[2];
            odgovorDatoteka = args[3];
            logging         = args[4];
            snimanje        = args[5];


            if (string.IsNullOrEmpty(tipDokumenta))
            {
                Console.WriteLine("Tip dokumenta mora biti postavljen.");
                return;
            }

            if (string.IsNullOrEmpty(datoteka))
            {
                switch (tipDokumenta.ToUpper())
                {
                case "RACUNZAHTJEV":
                case "RZ":
                    datoteka        = Properties.Settings.Default.RacunZahtjevDatoteka;
                    odgovorDatoteka = Properties.Settings.Default.RacunOdgovorDatoteka;
                    break;

                case "POSLOVNIPROSTORZAHTJEV":
                case "PPZ":
                    datoteka        = Properties.Settings.Default.PoslovniProstorZahtjevDatoteka;
                    odgovorDatoteka = Properties.Settings.Default.PoslovniProstorOdgovorDatoteka;
                    break;

                case "RACUNZAHTJEVPOTPISI":
                case "RZPOT":
                    datoteka        = Properties.Settings.Default.RacunZahtjevPotpisiDatoteka;
                    odgovorDatoteka = Properties.Settings.Default.RacunOdgovorPotpisiDatoteka;
                    break;

                case "RACUNZAHTJEVPOSALJI":
                case "RZPOS":
                    datoteka        = Properties.Settings.Default.RacunZahtjevPosaljiDatoteka;
                    odgovorDatoteka = Properties.Settings.Default.RacunOdgovorPosaljiDatoteka;
                    break;

                case "POSLOVNIPROSTORZAHTJEVPOTPISI":
                case "PPZPOT":
                    datoteka        = Properties.Settings.Default.PoslovniProstorZahtjevPotpisiDatoteka;
                    odgovorDatoteka = Properties.Settings.Default.PoslovniProstorOdgovorPotpisiDatoteka;
                    break;

                case "POSLOVNIPROSTORZAHTJEVPOSALJI":
                case "PPZPOS":
                    datoteka        = Properties.Settings.Default.PoslovniProstorZahtjevPosaljiDatoteka;
                    odgovorDatoteka = Properties.Settings.Default.PoslovniProstorOdgovorPosaljiDatoteka;
                    break;

                default:
                    break;
                }
            }

            if (string.IsNullOrEmpty(datoteka))
            {
                Console.WriteLine("Datoteka mora biti postavljena.");
                return;
            }

            if (string.IsNullOrEmpty(odgovorDatoteka))
            {
                Console.WriteLine("Datoteka za odgovor mora biti postavljena.");
                return;
            }

            if (string.IsNullOrEmpty(logging))
            {
                Console.WriteLine("Opcija za logging mora biti postavljena.");
                return;
            }

            bool bTest = Boolean.TryParse(logging, out bLogging);

            if (!bTest)
            {
                Console.WriteLine("Vrijednost za logging mora biti postavljena na 'true' ili 'false'.");
                return;
            }

            if (string.IsNullOrEmpty(snimanje))
            {
                Console.WriteLine("Opcija za snimanje mora biti postavljena.");
                return;
            }

            bTest = Boolean.TryParse(snimanje, out bSnimanje);
            if (!bTest)
            {
                Console.WriteLine("Vrijednost za snimanje mora biti postavljena na 'true' ili 'false'.");
                return;
            }



            switch (tipDokumenta.ToUpper())
            {
            case "RACUNZAHTJEV":
            case "RZ":
                tip = PopratneFunkcije.TipDokumentaEnum.RacunOdgovor;
                break;

            case "POSLOVNIPROSTORZAHTJEV":
            case "PPZ":
                tip = PopratneFunkcije.TipDokumentaEnum.PoslovniProstorOdgovor;
                break;

            case "RACUNZAHTJEVPOTPISI":
            case "RZPOT":
                bNemojPoslati = true;
                tip           = PopratneFunkcije.TipDokumentaEnum.Nepoznato;
                break;

            case "RACUNZAHTJEVPOSALJI":
            case "RZPOS":
                bNemojPotpisati = true;
                tip             = PopratneFunkcije.TipDokumentaEnum.RacunOdgovor;
                break;

            case "POSLOVNIPROSTORZAHTJEVPOTPISI":
            case "PPZPOT":
                bNemojPoslati = true;
                tip           = PopratneFunkcije.TipDokumentaEnum.Nepoznato;
                break;

            case "POSLOVNIPROSTORZAHTJEVPOSALJI":
            case "PPZPOS":
                bNemojPotpisati = true;
                tip             = PopratneFunkcije.TipDokumentaEnum.PoslovniProstorOdgovor;
                break;

            default:
                break;
            }


            FileInfo fi = new FileInfo(datoteka);

            if (!fi.Exists)
            {
                Console.WriteLine("Datoteka ne postoji.");
                if (bLogging)
                {
                    DoLog(String.Format("Datoteka '{0}' ne postoji.", datoteka));
                }
                return;
            }

            XmlDocument dokument = null;

            try
            {
                if (bLogging)
                {
                    DoLog(String.Format("Učitavanje XML datoteke '{0}'.", datoteka));
                }

                dokument = new XmlDocument();
                dokument.Load(datoteka);

                if (bLogging)
                {
                    DoLog(String.Format("XML datoteka '{0}' uspješno učitana.", datoteka));
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine(String.Format("Greška kod učitavanja XML datoteke: {0}", ex.Message));
                if (bLogging)
                {
                    DoLog(String.Format("Greška kod učitavanja XML datoteke: {0}", ex.Message));
                }
                return;
            }

            if (dokument != null)
            {
                XmlDocument odgovor = null;
                Raverus.FiskalizacijaDEV.CentralniInformacijskiSustav cis = new CentralniInformacijskiSustav()
                {
                    TimeOut = Properties.Settings.Default.TimeOut
                };
                if (!string.IsNullOrEmpty(url))
                {
                    cis.CisUrl = url;
                }
                else
                {
                    cis.CisUrl = Properties.Settings.Default.CisUrl;
                }

                try
                {
                    if (bSnimanje)
                    {
                        cis.NazivAutoGeneriranje = true;
                        cis.NazivMapeZahtjev     = Path.Combine(Environment.CurrentDirectory, "Zahtjev");
                        cis.NazivMapeOdgovor     = Path.Combine(Environment.CurrentDirectory, "Odgovor");
                    }

                    if (!bNemojPotpisati)
                    {
                        if (bLogging)
                        {
                            DoLog(String.Format("Certifikat: {0}", certifikat.Subject));
                        }

                        if (bLogging)
                        {
                            DoLog(String.Format("Potpisujem dokument: {0}", dokument.InnerXml));
                        }

                        PopratneFunkcije.Potpisivanje.PotpisiXmlDokument(dokument, certifikat);

                        if (bLogging)
                        {
                            DoLog(String.Format("Potpisani dokument: {0}", dokument.InnerXml));
                        }

                        PopratneFunkcije.XmlDokumenti.DodajSoapEnvelope(ref dokument);
                    }



                    if (bLogging)
                    {
                        DoLog(String.Format("Šaljem dokument: {0}", dokument.InnerXml));
                    }


                    if (!bNemojPoslati)
                    {
                        odgovor = cis.PosaljiSoapPoruku(dokument);
                    }
                    else
                    {
                        odgovor = dokument;
                    }
                }
                catch (Exception ex)
                {
                    Console.WriteLine(String.Format("Greška kod obrade i slanja dokumenta: {0}", ex.Message));
                    if (bLogging)
                    {
                        DoLog(String.Format("Greška kod obrade i slanja dokumenta: {0}", ex.Message));
                    }

                    if (cis.OdgovorGreskaStatus.HasValue)
                    {
                        HandleResponseError(cis.OdgovorGreskaStatus.Value.ToString(), cis.OdgovorGreska);
                    }
                }


                if (odgovor != null)
                {
                    try
                    {
                        if (bLogging)
                        {
                            DoLog(String.Format("Odgovor: {0}", odgovor.InnerXml));
                        }

                        if (bLogging)
                        {
                            DoLog(String.Format("Spremanje u XML datoteku '{0}'.", odgovorDatoteka));
                        }


                        Raverus.FiskalizacijaDEV.PopratneFunkcije.XmlDokumenti.SnimiXmlDokumentDatoteka(odgovor, odgovorDatoteka);

                        if (tip == PopratneFunkcije.TipDokumentaEnum.RacunOdgovor)
                        {
                            string uuid = Raverus.FiskalizacijaDEV.PopratneFunkcije.XmlDokumenti.DohvatiUuid(odgovor, tip);
                            string jir  = Raverus.FiskalizacijaDEV.PopratneFunkcije.XmlDokumenti.DohvatiJir(odgovor);
                            WriteToFile(jirDatoteka, String.Format("{0};{1}", uuid, jir));
                        }

                        if (bLogging)
                        {
                            DoLog(String.Format("Odgovor je spremljen u XML datoteku '{0}'.", odgovorDatoteka));
                        }

                        Console.WriteLine("Status OK");

                        if (bLogging)
                        {
                            DoLog("Status OK");
                        }
                    }
                    catch (Exception ex)
                    {
                        WriteToFile(jirDatoteka, "");
                        Console.WriteLine(String.Format("Greška kod snimanja odgovora u datoteku: {0}", ex.Message));
                        if (bLogging)
                        {
                            DoLog(String.Format("Greška kod snimanja odgovora u datoteku: {0}", ex.Message));
                        }
                    }
                }
            }
        }
Esempio n. 12
0
        public static string[] Fiskalizacija(string oib,
                                             string oib_operatera,
                                             DataTable DTartikli,
                                             DateTime datum_racuna,
                                             bool sustavPDV,
                                             int broj_rac,
                                             string prodajnoMJ,
                                             int broj_kase,
                                             DataTable DTpdv,
                                             string[] porez_na_potrosnju,
                                             DataTable DTostali_porezi,
                                             string iznososlobpdv,
                                             string iznos_marza,
                                             DataTable DTnaknade,
                                             decimal ukupno,
                                             string nacin_placanja,
                                             bool naknadno_poslano,
                                             double osnovica)
        {
            sifra_prodajnog_mjesta = prodajnoMJ;

            DataTable DTdd = classSQL.select("SELECT ime_ducana FROM ducan WHERE id_ducan='" + prodajnoMJ + "'", "ducan").Tables[0];

            if (DTdd.Rows.Count > 0)
            {
                prodajnoMJ = DTdd.Rows[0][0].ToString();
            }

            string ZkiGotov = "";

            string[] za_vratiti = new string[3];
            try
            {
                Raverus.FiskalizacijaDEV.Schema.ZaglavljeType zaglavlje = new Raverus.FiskalizacijaDEV.Schema.ZaglavljeType()
                {
                    DatumVrijeme = Razno.DohvatiFormatiranoTrenutnoDatumVrijeme(),
                    IdPoruke     = Guid.NewGuid().ToString()
                };

                osnovica_sve = osnovica;

                X509Certificate2 certifikat;
                if (File.Exists(DTpostavke.Rows[0]["putanja_certifikat"].ToString()))
                {
                    certifikat = Raverus.FiskalizacijaDEV.PopratneFunkcije.Potpisivanje.DohvatiCertifikat(DTpostavke.Rows[0]["putanja_certifikat"].ToString(), DTpostavke.Rows[0]["certifikat_zaporka"].ToString());
                }
                else
                {
                    certifikat = Raverus.FiskalizacijaDEV.PopratneFunkcije.Potpisivanje.DohvatiCertifikat(DTfis.Rows[0]["naziv_certifikata"].ToString());
                }

                if (certifikat == null)
                {
                    MessageBox.Show("Nije pravilno instalirani certifikat.", "Greška");
                    return(za_vratiti);
                }

                string datum_vrijeme = DateTime.Now.ToString("dd.MM.yyyyTHH:mm:ss");
                ZkiGotov = ZKI(certifikat,
                               oib,
                               datum_vrijeme,
                               broj_rac.ToString(),
                               prodajnoMJ,
                               broj_kase.ToString(),
                               ukupno.ToString("#0.00").Replace(",", "."));

                xml = @"<?xml version=""1.0"" encoding=""utf-8""?>" +
                      @"<tns:RacunZahtjev xmlns:xsi=""http://www.w3.org/2001/XMLSchema-instance"" Id=""signXmlId"" xmlns:tns=""http://www.apis-it.hr/fin/2012/types/f73"">" +
                      @"<tns:Zaglavlje>" +
                      @"<tns:IdPoruke>" + zaglavlje.IdPoruke + "</tns:IdPoruke>" +
                      @"<tns:DatumVrijeme>" + datum_vrijeme + "</tns:DatumVrijeme>" +
                      @"</tns:Zaglavlje>" +

                      @"<tns:Racun>" +

                      @"<tns:Oib>" + oib + "</tns:Oib>" +
                      @"<tns:USustPdv>" + sustavPDV.ToString().ToLower() + "</tns:USustPdv>" +
                      @"<tns:DatVrijeme>" + datum_racuna.ToString("dd.MM.yyyyTHH:mm:ss") + "</tns:DatVrijeme>" +
                      @"<tns:OznSlijed>" + DTfis.Rows[0]["oznaka_slijednosti"].ToString() + "</tns:OznSlijed>" +

                      @"<tns:BrRac>" +
                      @"<tns:BrOznRac>" + broj_rac + "</tns:BrOznRac>" +
                      @"<tns:OznPosPr>" + prodajnoMJ + "</tns:OznPosPr>" +
                      @"<tns:OznNapUr>" + broj_kase + "</tns:OznNapUr>" +
                      @"</tns:BrRac>" +

                      PDVreturn(DTpdv, sustavPDV.ToString().ToLower()) +

                      PorezNaPotrosnju(porez_na_potrosnju) +

                      OstaliPorezi(DTostali_porezi) +
                      IznosOslobPdv(iznososlobpdv) +
                      IznosMarza(iznos_marza) +
                      Naknade(DTnaknade) +

                      @"<tns:IznosUkupno>" + ukupno.ToString("#0.00").Replace(",", ".") + "</tns:IznosUkupno>" +
                      @"<tns:NacinPlac>" + nacin_placanja + "</tns:NacinPlac>" +
                      @"<tns:OibOper>" + oib_operatera + "</tns:OibOper>" +
                      @"<tns:ZastKod>" + ZkiGotov + "</tns:ZastKod>" +
                      @"<tns:NakDost>" + naknadno_poslano.ToString().ToLower() + "</tns:NakDost>" +

                      @"</tns:Racun>" +
                      @"</tns:RacunZahtjev>";

                XmlDocument dokument = new XmlDocument();
                dokument.LoadXml(xml);

                try
                {
                    string path = System.Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments);

                    if (!Directory.Exists(path + "/FiskalniXML"))
                    {
                        Directory.CreateDirectory(path + "/FiskalniXML");
                    }

                    dokument.Save(path + "/FiskalniXML/" + Util.Korisno.GodinaKojaSeKoristiUbazi + "-" + broj_rac + "-" + prodajnoMJ + "-" + broj_kase + ".xml");
                }
                catch { }

                Raverus.FiskalizacijaDEV.CentralniInformacijskiSustav cis = new CentralniInformacijskiSustav();
                if (Class.Postavke.TEST_FISKALIZACIJA)
                {
                    cis.CisUrl = "https://cistest.apis-it.hr:8449/FiskalizacijaServiceTest";
                }
                else
                {
                    cis.CisUrl = "https://cis.porezna-uprava.hr:8449/FiskalizacijaService";
                }
                Raverus.FiskalizacijaDEV.PopratneFunkcije.Potpisivanje.PotpisiXmlDokument(dokument, certifikat);
                Raverus.FiskalizacijaDEV.PopratneFunkcije.XmlDokumenti.DodajSoapEnvelope(ref dokument);

                try
                {
                    cis.TimeOut = 8000;

                    XmlDocument odgovor = null;

                    try
                    {
                        odgovor = cis.PosaljiSoapPoruku(dokument);
                    }
                    catch
                    {
                    }

                    if (odgovor != null)
                    {
                        string jir = Raverus.FiskalizacijaDEV.PopratneFunkcije.XmlDokumenti.DohvatiJir(odgovor);
                        za_vratiti[0] = jir;
                        za_vratiti[1] = ZkiGotov;
                        za_vratiti[2] = zaglavlje.IdPoruke;
                        return(za_vratiti);
                    }
                    else
                    {
                        za_vratiti[0] = "";
                        za_vratiti[1] = ZkiGotov;
                        za_vratiti[2] = zaglavlje.IdPoruke;
                        string gr = cis.OdgovorGreska == null ? "" : cis.OdgovorGreska.ToString();
                        InsertNeuspjelaFis(broj_rac.ToString(), gr, sifra_prodajnog_mjesta, broj_kase.ToString(), oib_operatera, ukupno.ToString("#0.00").Replace(",", "."));
                        return(za_vratiti);
                    }
                }
                catch (Exception ex)
                {
                    za_vratiti[0] = "";
                    za_vratiti[1] = ZkiGotov;
                    za_vratiti[2] = zaglavlje.IdPoruke;

                    string greska;
                    if (cis.OdgovorGreska != null)
                    {
                        greska = cis.OdgovorGreska.InnerXml.Replace("\'", "");

                        InsertNeuspjelaFis(broj_rac.ToString(), greska.Replace("\"", ""), sifra_prodajnog_mjesta, broj_kase.ToString(), oib_operatera, ukupno.ToString("#0.00").Replace(",", "."));
                        MessageBox.Show("Greška kod fiskalizacije\r\n\r\n\r\n" + greska.Replace("\"", "") + "\r\n\r\n\r\n\r\n\r\n", "Greška od strane FINE");
                    }
                    else
                    {
                        greska = ex.ToString().Replace("\'", "");
                        InsertNeuspjelaFis(broj_rac.ToString(), greska, sifra_prodajnog_mjesta, broj_kase.ToString(), oib_operatera, ukupno.ToString("#0.00").Replace(",", "."));
                        MessageBox.Show("Greška kod fiskalizacije\r\n\r\n\r\n" + greska.Replace("\"", ""));
                    }

                    za_vratiti[1] = ZkiGotov;
                    return(za_vratiti);
                }
            }
            catch
            {
                za_vratiti[0] = "";
                za_vratiti[1] = ZkiGotov;
                za_vratiti[2] = "";
                return(za_vratiti);
            }
        }
Esempio n. 13
0
        public static string[] Fiskalizacija(string oib,
                                             string oib_operatera,
                                             DataTable DTartikli,
                                             DateTime datum_racuna,
                                             bool sustavPDV,
                                             int broj_rac,
                                             string prodajnoMJ,
                                             int broj_kase,
                                             DataTable DTpdv,
                                             string[] porez_na_potrosnju,
                                             DataTable DTostali_porezi,
                                             string iznososlobpdv,
                                             string iznos_marza,
                                             DataTable DTnaknade,
                                             decimal ukupno,
                                             string nacin_placanja,
                                             bool naknadno_poslano)
        {
            string[] za_vratiti = new string[3];

            Raverus.FiskalizacijaDEV.Schema.ZaglavljeType zaglavlje = new Raverus.FiskalizacijaDEV.Schema.ZaglavljeType()
            {
                DatumVrijeme = Razno.DohvatiFormatiranoTrenutnoDatumVrijeme(),
                IdPoruke     = Guid.NewGuid().ToString()
            };

            X509Certificate2 certifikat    = Raverus.FiskalizacijaDEV.PopratneFunkcije.Potpisivanje.DohvatiCertifikat(DTfis.Rows[0]["naziv_certifikata"].ToString());
            string           datum_vrijeme = DateTime.Now.ToString("dd.MM.yyyyThh:mm:ss");
            string           ZkiGotov      = ZKI(certifikat,
                                                 oib,
                                                 datum_vrijeme,
                                                 broj_rac.ToString(),
                                                 prodajnoMJ,
                                                 broj_kase.ToString(),
                                                 ukupno.ToString("#0.00").Replace(",", "."));

            string xml = @"<?xml version=""1.0"" encoding=""utf-8""?>" +
                         @"<tns:RacunZahtjev xmlns:xsi=""http://www.w3.org/2001/XMLSchema-instance"" Id=""signXmlId"" xmlns:tns=""http://www.apis-it.hr/fin/2012/types/f73"">" +

                         @"<tns:Zaglavlje>" +
                         @"<tns:IdPoruke>" + zaglavlje.IdPoruke + "</tns:IdPoruke>" +
                         @"<tns:DatumVrijeme>" + datum_vrijeme + "</tns:DatumVrijeme>" +
                         @"</tns:Zaglavlje>" +

                         @"<tns:Racun>" +

                         @"<tns:Oib>" + oib + "</tns:Oib>" +
                         @"<tns:USustPdv>" + sustavPDV.ToString().ToLower() + "</tns:USustPdv>" +
                         @"<tns:DatVrijeme>" + datum_racuna.ToString("dd.MM.yyyyThh:mm:ss") + "</tns:DatVrijeme>" +
                         @"<tns:OznSlijed>" + DTfis.Rows[0]["oznaka_slijednosti"].ToString() + "</tns:OznSlijed>" +

                         @"<tns:BrRac>" +
                         @"<tns:BrOznRac>" + broj_rac + "</tns:BrOznRac>" +
                         @"<tns:OznPosPr>" + prodajnoMJ + "</tns:OznPosPr>" +
                         @"<tns:OznNapUr>" + broj_kase + "</tns:OznNapUr>" +
                         @"</tns:BrRac>" +

                         PDVreturn(DTpdv) +
                         PorezNaPotrosnju(porez_na_potrosnju) +
                         OstaliPorezi(DTostali_porezi) +
                         IznosOslobPdv(iznososlobpdv) +
                         IznosMarza(iznos_marza) +
                         Naknade(DTnaknade) +

                         @"<tns:IznosUkupno>" + ukupno.ToString("#0.00").Replace(",", ".") + "</tns:IznosUkupno>" +
                         @"<tns:NacinPlac>" + nacin_placanja + "</tns:NacinPlac>" +
                         @"<tns:OibOper>" + oib_operatera + "</tns:OibOper>" +
                         @"<tns:ZastKod>" + ZkiGotov + "</tns:ZastKod>" +
                         @"<tns:NakDost>" + naknadno_poslano.ToString().ToLower() + "</tns:NakDost>" +

                         @"</tns:Racun>" +

                         @"</tns:RacunZahtjev>";

            XmlDocument dokument = new XmlDocument();

            dokument.LoadXml(xml);

            Raverus.FiskalizacijaDEV.CentralniInformacijskiSustav cis = new CentralniInformacijskiSustav();

            Raverus.FiskalizacijaDEV.PopratneFunkcije.Potpisivanje.PotpisiXmlDokument(dokument, certifikat);

            Raverus.FiskalizacijaDEV.PopratneFunkcije.XmlDokumenti.DodajSoapEnvelope(ref dokument);

            //XmlNode node = dokument.SelectSingleNode("Root/Node/Element");
            //node.Attributes[0].Value = "true";

            //string s = node.Attributes[0].ToString();

            dokument.Save("d:/fiskalizacija" + broj_rac + ".xml");

            try
            {
                XmlDocument odgovor = cis.PosaljiSoapPoruku(dokument);
                if (odgovor != null)
                {
                    string jir = Raverus.FiskalizacijaDEV.PopratneFunkcije.XmlDokumenti.DohvatiJir(odgovor);
                    za_vratiti[0] = jir;
                    za_vratiti[1] = ZkiGotov;
                    za_vratiti[1] = zaglavlje.IdPoruke;
                    return(za_vratiti);
                }
                else
                {
                    za_vratiti[1] = ZkiGotov;
                    return(za_vratiti);
                }
            }
            catch (Exception ex)
            {
                if (cis.OdgovorGreska != null)
                {
                    XmlNamespaceManager xmlnsManager = new XmlNamespaceManager(dokument.NameTable);
                    xmlnsManager.AddNamespace("tns", "http://www.apis-it.hr/fin/2012/types/f73");
                    xmlnsManager.AddNamespace("s", "http://schemas.xmlsoap.org/soap/envelope/");
                    string Severity = dokument.SelectSingleNode("s:Envelope/s:Body/tns:RacunZahtjev/tns:Racun/tns:NakDost", xmlnsManager).ChildNodes[0].Value = "true";
                    dokument.Save("Fiskalizacija/_" + broj_rac.ToString() + ".xml");

                    MessageBox.Show(cis.OdgovorGreska.InnerXml); za_vratiti[1] = ZkiGotov; return(za_vratiti);
                }
                else
                {
                    MessageBox.Show(string.Format("Greska: {0}", ex.Message));
                } za_vratiti[1] = ZkiGotov; return(za_vratiti);
            }
        }
Esempio n. 14
0
        public static string[] Fiskalizacija(string oib,
                                             string oib_operatera,
                                             DateTime datum_racuna,
                                             bool sustavPDV,
                                             int broj_rac,
                                             DataTable DTpdv,
                                             string[] porez_na_potrosnju,
                                             DataTable DTostali_porezi,
                                             string iznososlobpdv,
                                             string iznos_marza,
                                             DataTable DTnaknade,
                                             decimal ukupno,
                                             string nacin_placanja,
                                             bool naknadno_poslano,
                                             string vrstaUredjaja
                                             )
        {
            string ZkiGotov = "";

            string[] za_vratiti = new string[3];
            try
            {
                Raverus.FiskalizacijaDEV.Schema.ZaglavljeType zaglavlje = new Raverus.FiskalizacijaDEV.Schema.ZaglavljeType()
                {
                    DatumVrijeme = datum_racuna.ToString("dd.MM.yyyyTHH:mm:ss"),
                    IdPoruke     = Guid.NewGuid().ToString()
                };

                string    nazivCertifikata, oznaka_slijednosti;
                DataTable dt = classSQL.select_settings("SELECT naziv_certifikata, oznaka_slijednosti FROM fiskalizacija", "fiskalizacija").Tables[0];
                nazivCertifikata   = dt.Rows.Count > 0 ? dt.Rows[0][0].ToString() : "";
                oznaka_slijednosti = dt.Rows.Count > 0 ? dt.Rows[0][1].ToString() : "";

                dt = classSQL.select_settings("SELECT * FROM postavke", "postavke").Tables[0];

                switch (vrstaUredjaja.ToLower())
                {
                case "faktura":
                    broj_kase = dt.Rows.Count > 0 ? dt.Rows[0]["naplatni_uredaj_faktura"].ToString() : broj_kase;
                    break;

                case "avans":
                    broj_kase = dt.Rows.Count > 0 ? dt.Rows[0]["naplatni_uredaj_avans"].ToString() : broj_kase;
                    break;

                case "ifb":
                    broj_kase = dt.Rows.Count > 0 ? dt.Rows[0]["naplatni_uredaj_faktura_bez_robe"].ToString() : broj_kase;
                    break;

                case "račun":
                    broj_kase = dt.Rows.Count > 0 ? dt.Rows[0]["default_blagajna"].ToString() : broj_kase;
                    break;

                //po defaultu šalje ko račun
                default:
                    broj_kase = dt.Rows.Count > 0 ? dt.Rows[0]["default_blagajna"].ToString() : broj_kase;
                    break;
                }

                dt         = classSQL.select("SELECT ime_ducana FROM ducan WHERE id_ducan = '" + Class.Postavke.id_default_ducan + "'", "ducan").Tables[0];
                prodajnoMJ = dt.Rows.Count > 0 ? dt.Rows[0][0].ToString() : prodajnoMJ;

                //X509Certificate2 certifikat = Raverus.FiskalizacijaDEV.PopratneFunkcije.Potpisivanje.DohvatiCertifikat(nazivCertifikata);

                X509Certificate2 certifikat;

                if (File.Exists(Class.Postavke.putanja_certifikat))
                {
                    certifikat = Raverus.FiskalizacijaDEV.PopratneFunkcije.Potpisivanje.DohvatiCertifikat(Class.Postavke.putanja_certifikat, Class.Postavke.certifikat_zaporka);
                }
                else
                {
                    certifikat = Raverus.FiskalizacijaDEV.PopratneFunkcije.Potpisivanje.DohvatiCertifikat(DTfis.Rows[0]["naziv_certifikata"].ToString());
                }

                if (certifikat == null)
                {
                    InsertNeuspjelaFis(broj_rac.ToString(), "Nema certifikata", prodajnoMJ.ToString(),
                                       broj_kase.ToString(), oib_operatera, ukupno.ToString("#0.00").Replace(",", "."), vrstaUredjaja);

                    za_vratiti[0] = "";
                    za_vratiti[1] = "";
                    za_vratiti[2] = "";

                    MessageBox.Show("Nije pravilno instalirani certifikat.", "Greška");

                    return(za_vratiti);
                }

                string datum_vrijeme = datum_racuna.ToString("dd.MM.yyyyTHH:mm:ss");

                ZkiGotov = ZKI(certifikat,
                               oib,
                               datum_vrijeme,
                               broj_rac.ToString(),
                               prodajnoMJ,
                               broj_kase.ToString(),
                               ukupno.ToString("#0.00").Replace(",", "."));

                xml = @"<?xml version=""1.0"" encoding=""utf-8""?>" +
                      @"<tns:RacunZahtjev xmlns:xsi=""http://www.w3.org/2001/XMLSchema-instance"" Id=""signXmlId"" xmlns:tns=""http://www.apis-it.hr/fin/2012/types/f73"">" +

                      @"<tns:Zaglavlje>" +
                      @"<tns:IdPoruke>" + zaglavlje.IdPoruke + "</tns:IdPoruke>" +
                      @"<tns:DatumVrijeme>" + datum_vrijeme + "</tns:DatumVrijeme>" +
                      @"</tns:Zaglavlje>" +

                      @"<tns:Racun>" +

                      @"<tns:Oib>" + oib + "</tns:Oib>" +
                      @"<tns:USustPdv>" + sustavPDV.ToString().ToLower() + "</tns:USustPdv>" +
                      @"<tns:DatVrijeme>" + datum_racuna.ToString("dd.MM.yyyyTHH:mm:ss") + "</tns:DatVrijeme>" +
                      @"<tns:OznSlijed>" + oznaka_slijednosti + "</tns:OznSlijed>" +

                      @"<tns:BrRac>" +
                      @"<tns:BrOznRac>" + broj_rac + "</tns:BrOznRac>" +
                      @"<tns:OznPosPr>" + prodajnoMJ + "</tns:OznPosPr>" +
                      @"<tns:OznNapUr>" + broj_kase + "</tns:OznNapUr>" +
                      @"</tns:BrRac>" +

                      PDVreturn(DTpdv, sustavPDV.ToString().ToLower()) +

                      PorezNaPotrosnju(porez_na_potrosnju) +

                      OstaliPorezi(DTostali_porezi) +
                      IznosOslobPdv(iznososlobpdv) +
                      IznosMarza(iznos_marza) +
                      Naknade(DTnaknade) +

                      @"<tns:IznosUkupno>" + ukupno.ToString("#0.00").Replace(",", ".") + "</tns:IznosUkupno>" +
                      @"<tns:NacinPlac>" + nacin_placanja + "</tns:NacinPlac>" +
                      @"<tns:OibOper>" + oib_operatera + "</tns:OibOper>" +
                      @"<tns:ZastKod>" + ZkiGotov + "</tns:ZastKod>" +
                      @"<tns:NakDost>" + naknadno_poslano.ToString().ToLower() + "</tns:NakDost>" +

                      @"</tns:Racun>" +
                      @"</tns:RacunZahtjev>";

                XmlDocument dokument = new XmlDocument();
                dokument.LoadXml(xml);

                try
                {
                    string path = System.Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments);

                    if (!Directory.Exists(path + "/FiskalniXMLPCPOS"))
                    {
                        Directory.CreateDirectory(path + "/FiskalniXMLPCPOS");
                    }
                    int    god   = Util.Korisno.GodinaKojaSeKoristiUbazi;
                    string naziv = god.ToString() + "-" + broj_rac + "-" + prodajnoMJ + "-" + broj_kase + ".xml";

                    dokument.Save(path + "/FiskalniXMLPCPOS/" + naziv);
                }
                catch { }

                Raverus.FiskalizacijaDEV.CentralniInformacijskiSustav cis = new CentralniInformacijskiSustav();

                //testYes = File.Exists("FiskalTest") ? "1" : "0";

                if (Class.Postavke.TEST_FISKALIZACIJA)
                {
                    cis.CisUrl = "https://cistest.apis-it.hr:8449/FiskalizacijaServiceTest";
                }
                else
                {
                    cis.CisUrl = "https://cis.porezna-uprava.hr:8449/FiskalizacijaService";
                }

                Raverus.FiskalizacijaDEV.PopratneFunkcije.Potpisivanje.PotpisiXmlDokument(dokument, certifikat);
                Raverus.FiskalizacijaDEV.PopratneFunkcije.XmlDokumenti.DodajSoapEnvelope(ref dokument);

                //XmlNode node = dokument.SelectSingleNode("Root/Node/Element");
                //node.Attributes[0].Value = "true";

                //string s = node.Attributes[0].ToString();

                //if (!Util.CheckConnection.Check())
                //{
                //    MessageBox.Show("Niste spojeni na Internet! Dokument se neće fiskalizirati!", "Upozorenje!");
                //    //return;
                //}

                try
                {
                    cis.TimeOut = 10000;

                    XmlDocument odgovor = cis.PosaljiSoapPoruku(dokument);

                    if (odgovor != null)
                    {
                        string jir = Raverus.FiskalizacijaDEV.PopratneFunkcije.XmlDokumenti.DohvatiJir(odgovor);
                        za_vratiti[0] = jir;
                        za_vratiti[1] = ZkiGotov;
                        za_vratiti[2] = zaglavlje.IdPoruke;
                        return(za_vratiti);
                    }
                    else
                    {
                        za_vratiti[0] = "";
                        za_vratiti[1] = ZkiGotov;
                        za_vratiti[2] = zaglavlje.IdPoruke;
                        string gr = cis.OdgovorGreska == null ? "" : cis.OdgovorGreska.ToString();
                        InsertNeuspjelaFis(broj_rac.ToString(), gr, prodajnoMJ.ToString(),
                                           broj_kase.ToString(), oib_operatera, ukupno.ToString("#0.00").Replace(",", "."), vrstaUredjaja);
                        return(za_vratiti);
                    }
                }
                catch (Exception ex)
                {
                    za_vratiti[0] = "";
                    za_vratiti[1] = ZkiGotov;
                    za_vratiti[2] = zaglavlje.IdPoruke;

                    string greska;
                    if (cis.OdgovorGreska != null)
                    {
                        greska = cis.OdgovorGreska.InnerXml.Replace("\'", "");
                        int x, y;
                        x = greska.IndexOf("<tns:PorukaGreske>") + 18;
                        y = greska.IndexOf("</tns:PorukaGreske>");
                        string porukaUseru = new string(greska.ToArray(), x, y - x);

                        InsertNeuspjelaFis(broj_rac.ToString(), greska.Replace("\"", ""), prodajnoMJ.ToString(),
                                           broj_kase.ToString(), oib_operatera, ukupno.ToString("#0.00").Replace(",", "."), vrstaUredjaja);
                        MessageBox.Show("Greška kod fiskalizacije\r\n\r\n" + porukaUseru.Replace("\"", "") + "\r\n\r\nPokušajte naknadno fiskalizirati\r\nMaloprodaja -> Neuspjele transakcije fiskalizacije", "Greška od strane FINE");
                    }
                    else
                    {
                        greska = ex.ToString().Replace("\'", "");
                        InsertNeuspjelaFis(broj_rac.ToString(), greska, prodajnoMJ.ToString(), broj_kase.ToString(),
                                           oib_operatera, ukupno.ToString("#0.00").Replace(",", "."), vrstaUredjaja);
                        MessageBox.Show("Greška kod fiskalizacije\r\n\r\n\r\nNije ostvarena veza sa poreznom upravom\r\n\r\nPokušajte naknadno fiskalizirati\r\nMaloprodaja -> Neuspjele transakcije fiskalizacije");
                    }

                    za_vratiti[1] = ZkiGotov; return(za_vratiti);
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.ToString());
                za_vratiti[0] = "";
                za_vratiti[1] = ZkiGotov;
                za_vratiti[2] = "";
                return(za_vratiti);
            }
        }