private static void SendEcho(string[] args) { CentralniInformacijskiSustav cis = new CentralniInformacijskiSustav() { CisUrl = Properties.Settings.Default.CisUrl, TimeOut = Properties.Settings.Default.TimeOut }; try { XmlDocument doc = cis.PosaljiEcho(args[1]); if (doc != null) { Raverus.FiskalizacijaDEV.PopratneFunkcije.XmlDokumenti.SnimiXmlDokumentDatoteka(doc, echoDatoteka); } else { Console.WriteLine("Greška kod slanja ECHO poruke."); } } catch (Exception ex) { Console.WriteLine(String.Format("Greška kod obrade i slanja dokumenta: {0}", ex.Message)); if (cis.OdgovorGreskaStatus.HasValue) { HandleResponseError(cis.OdgovorGreskaStatus.Value.ToString(), cis.OdgovorGreska); } } }
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(); }
private void RacunPrimjer(string oib) { Raverus.FiskalizacijaDEV.CentralniInformacijskiSustav cis = new CentralniInformacijskiSustav(); Raverus.FiskalizacijaDEV.Schema.RacunType racun = GetRacun(oib); XmlDocument doc = cis.PosaljiRacun(racun, "FISKAL 1"); }
private void button1_Click(object sender, EventArgs e) { CultureInfo culture = new CultureInfo("hr-HR"); button1.Enabled = false; Raverus.FiskalizacijaDEV.Schema.RacunType racun = new Schema.RacunType() { Oib = textBox18.Text, USustPdv = checkBox1.Checked, DatVrijeme = Raverus.FiskalizacijaDEV.PopratneFunkcije.Razno.DohvatiFormatiranoTrenutnoDatumVrijeme(), OznSlijed = Schema.OznakaSlijednostiType.P }; Raverus.FiskalizacijaDEV.Schema.BrojRacunaType br = new Schema.BrojRacunaType() { BrOznRac = textBox13.Text, OznPosPr = textBox12.Text, OznNapUr = textBox15.Text }; racun.BrRac = br; Raverus.FiskalizacijaDEV.Schema.PdvType pdv = new Schema.PdvType(); Raverus.FiskalizacijaDEV.Schema.PorezType porez = new Schema.PorezType() { Stopa = textBox11.Text, Osnovica = textBox10.Text, Iznos = textBox19.Text }; pdv.Porez.Add(porez); racun.Pdv.Add(porez); racun.IznosUkupno = textBox20.Text; racun.NacinPlac = Schema.NacinPlacanjaType.G; racun.OibOper = textBox22.Text; textBox23.Text = Raverus.FiskalizacijaDEV.PopratneFunkcije.Razno.ZastitniKodIzracun("FISKAL 1", racun.Oib, racun.DatVrijeme.Replace('T', ' '), racun.BrRac.BrOznRac, racun.BrRac.OznPosPr, racun.BrRac.OznNapUr, racun.IznosUkupno.ToString()); racun.ZastKod = textBox23.Text; racun.NakDost = checkBox2.Checked; Raverus.FiskalizacijaDEV.CentralniInformacijskiSustav cis = new CentralniInformacijskiSustav(); cis.SoapMessageSending += cis_SoapMessageSending; cis.SoapMessageSent += cis_SoapMessageSent; XmlDocument doc = cis.PosaljiRacun(racun, "FISKAL 1"); if (doc != null) { textBox14.Text = doc.InnerXml; bool potpisTest = Raverus.FiskalizacijaDEV.PopratneFunkcije.Potpisivanje.ProvjeriPotpis(doc); if (potpisTest) { label27.Text = "Potpis na odgovoru je OK"; } else { label27.Text = "Greška kod provjere potpisa na odgovoru."; } } else { textBox14.Text = "GREŠKA"; stopWatch.Stop(); pictureBox1.Visible = false; button1.Enabled = true; } }
private void ProvjeraPotpisa(string oib) { Raverus.FiskalizacijaDEV.CentralniInformacijskiSustav cis = new CentralniInformacijskiSustav(); Raverus.FiskalizacijaDEV.Schema.RacunType racun = GetRacun(oib); XmlDocument doc = cis.PosaljiRacun(racun, "FISKAL 1"); bool potpisTest = Raverus.FiskalizacijaDEV.PopratneFunkcije.Potpisivanje.ProvjeriPotpis(doc); }
private void AutomatskoSnimanjeDatoteka(string oib) { Raverus.FiskalizacijaDEV.CentralniInformacijskiSustav cis = new CentralniInformacijskiSustav() { NazivMapeZahtjev = @"D:\Users\Nino\Desktop\Zahtjevi", NazivMapeOdgovor = @"D:\Users\Nino\Desktop\Odgovori", NazivAutoGeneriranje = true }; Raverus.FiskalizacijaDEV.Schema.RacunType racun = GetRacun(oib); XmlDocument doc = cis.PosaljiRacun(racun, "FISKAL 1"); }
private void DohvatiJir(string oib) { Raverus.FiskalizacijaDEV.CentralniInformacijskiSustav cis = new CentralniInformacijskiSustav(); Raverus.FiskalizacijaDEV.Schema.RacunType racun = GetRacun(oib); XmlDocument doc = cis.PosaljiRacun(racun, "FISKAL 1"); if (doc != null) { string jir = Raverus.FiskalizacijaDEV.PopratneFunkcije.XmlDokumenti.DohvatiJir(doc); } }
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); }
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); }
static bool CheckSsl() { bool bOut = false; try { Raverus.FiskalizacijaDEV.CentralniInformacijskiSustav cis = new CentralniInformacijskiSustav(); bOut = cis.Echo(); } catch (Exception ex) { MessageBox.Show(String.Format("Nije moguće uspostaviti SSL vezu prema CIS-u. Greška: {0}. Provjerite da li su potrebni certifikati uredno instalirani.", ex.Message)); } return(bOut); }
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"); }
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)); } } }
private void ViseStopaPoreza(string oib) { Raverus.FiskalizacijaDEV.CentralniInformacijskiSustav cis = new CentralniInformacijskiSustav(); Raverus.FiskalizacijaDEV.Schema.RacunType racun = new Schema.RacunType(); racun.Oib = oib; racun.USustPdv = true; racun.DatVrijeme = Raverus.FiskalizacijaDEV.PopratneFunkcije.Razno.DohvatiFormatiranoTrenutnoDatumVrijeme(); racun.OznSlijed = Schema.OznakaSlijednostiType.P; Raverus.FiskalizacijaDEV.Schema.BrojRacunaType broj = new Schema.BrojRacunaType(); broj.BrOznRac = "1"; broj.OznPosPr = "123"; broj.OznNapUr = "1"; racun.BrRac = broj; Raverus.FiskalizacijaDEV.Schema.PorezType porez25 = new Schema.PorezType(); porez25.Stopa = "25.00"; porez25.Osnovica = "10.00"; porez25.Iznos = "2.50"; Raverus.FiskalizacijaDEV.Schema.PorezType porez0 = new Schema.PorezType(); porez0.Stopa = "0.00"; porez0.Osnovica = "10.00"; porez0.Iznos = "0.00"; racun.Pdv.Add(porez25); racun.Pdv.Add(porez0); racun.IznosUkupno = "22.50"; racun.NacinPlac = Schema.NacinPlacanjaType.G; racun.OibOper = "12345678900"; racun.ZastKod = Raverus.FiskalizacijaDEV.PopratneFunkcije.Razno.ZastitniKodIzracun("FISKAL 1", racun.Oib, racun.DatVrijeme.Replace('T', ' '), racun.BrRac.BrOznRac, racun.BrRac.OznPosPr, racun.BrRac.OznNapUr, racun.IznosUkupno.ToString()); racun.NakDost = false; XmlDocument doc = cis.PosaljiRacun(racun, "FISKAL 1"); }
private void button3_Click(object sender, EventArgs e) { button3.Enabled = false; Raverus.FiskalizacijaDEV.CentralniInformacijskiSustav cis = new CentralniInformacijskiSustav(); cis.SoapMessageSending += cis_SoapMessageSending; cis.SoapMessageSent += cis_SoapMessageSent; XmlDocument doc = cis.PosaljiEcho(""); if (doc != null) { textBox14.Text = doc.InnerXml; } else { textBox14.Text = "GREŠKA"; stopWatch.Stop(); pictureBox1.Visible = false; button3.Enabled = true; } }
private void Fiskalizacija2() { Raverus.FiskalizacijaDEV.CentralniInformacijskiSustav cis = new CentralniInformacijskiSustav(); Raverus.FiskalizacijaDEV.Schema.RacunType racun = new Raverus.FiskalizacijaDEV.Schema.RacunType(); racun.Oib = "47165970760"; racun.USustPdv = true; racun.DatVrijeme = Raverus.FiskalizacijaDEV.PopratneFunkcije.Razno.DohvatiFormatiranoTrenutnoDatumVrijeme(); racun.OznSlijed = Raverus.FiskalizacijaDEV.Schema.OznakaSlijednostiType.P; Raverus.FiskalizacijaDEV.Schema.BrojRacunaType broj = new Raverus.FiskalizacijaDEV.Schema.BrojRacunaType(); broj.BrOznRac = "1"; broj.OznPosPr = "123"; broj.OznNapUr = "1"; racun.BrRac = broj; Raverus.FiskalizacijaDEV.Schema.PorezType porez25 = new Raverus.FiskalizacijaDEV.Schema.PorezType(); porez25.Stopa = "25.00"; porez25.Osnovica = "10.00"; porez25.Iznos = "2.50"; Raverus.FiskalizacijaDEV.Schema.PorezType porez0 = new Raverus.FiskalizacijaDEV.Schema.PorezType(); porez0.Stopa = "0.00"; porez0.Osnovica = "10.00"; porez0.Iznos = "0.00"; racun.Pdv.Add(porez25); racun.Pdv.Add(porez0); racun.IznosUkupno = "22.50"; racun.NacinPlac = Raverus.FiskalizacijaDEV.Schema.NacinPlacanjaType.G; racun.OibOper = "47165970760"; racun.ZastKod = "e4d909c290d0fb1ca068ffaddf22cbd0"; racun.NakDost = false; XmlDocument doc = cis.PosaljiRacun(racun, "FISKAL 1"); doc.Save("D:/ddd.xml"); }
private void button2_Click(object sender, EventArgs e) { button2.Enabled = false; Raverus.FiskalizacijaDEV.Schema.PoslovniProstorType poslovniProstor = new Schema.PoslovniProstorType() { Oib = textBox1.Text, OznPoslProstora = textBox2.Text }; Raverus.FiskalizacijaDEV.Schema.AdresaType adresa = new Schema.AdresaType() { Ulica = textBox3.Text, KucniBroj = textBox5.Text, KucniBrojDodatak = textBox6.Text, BrojPoste = textBox7.Text, Naselje = textBox4.Text, Opcina = textBox8.Text }; Raverus.FiskalizacijaDEV.Schema.AdresniPodatakType adresniPodatak = new Schema.AdresniPodatakType() { Item = adresa }; poslovniProstor.AdresniPodatak = adresniPodatak; poslovniProstor.RadnoVrijeme = textBox9.Text; poslovniProstor.DatumPocetkaPrimjene = Raverus.FiskalizacijaDEV.PopratneFunkcije.Razno.FormatirajDatum(dateTimePicker1.Value.Date); poslovniProstor.SpecNamj = textBox16.Text; Raverus.FiskalizacijaDEV.CentralniInformacijskiSustav cis = new CentralniInformacijskiSustav(); cis.SoapMessageSending += cis_SoapMessageSending; cis.SoapMessageSent += cis_SoapMessageSent; XmlDocument doc = cis.PosaljiPoslovniProstor(poslovniProstor, "FISKAL 1"); if (doc != null) { textBox14.Text = doc.InnerXml; } else { textBox14.Text = "GREŠKA"; stopWatch.Stop(); pictureBox1.Visible = false; button2.Enabled = true; } }
private void TimeOutPrimjer(string oib) { Raverus.FiskalizacijaDEV.CentralniInformacijskiSustav cis = new CentralniInformacijskiSustav(); cis.TimeOut = 10; // postavljamo timeout na 10 ms Raverus.FiskalizacijaDEV.Schema.RacunType racun = GetRacun(oib); try { XmlDocument doc = cis.PosaljiRacun(racun, "FISKAL 1"); if (doc != null) { string jir = Raverus.FiskalizacijaDEV.PopratneFunkcije.XmlDokumenti.DohvatiJir(doc); MessageBox.Show(jir); } } catch (Exception ex) { if (cis.OdgovorGreskaStatus != null && cis.OdgovorGreskaStatus == System.Net.WebExceptionStatus.Timeout) { MessageBox.Show("Timeout"); } 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)); } else { MessageBox.Show(String.Format("Greška: {0}", ex.Message)); } } }
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); } }
private static void PoslovniProstorPrimjer(string oib) { Raverus.FiskalizacijaDEV.CentralniInformacijskiSustav cis = new CentralniInformacijskiSustav(); Raverus.FiskalizacijaDEV.Schema.PoslovniProstorType poslovniProstor = new Schema.PoslovniProstorType(); poslovniProstor.Oib = oib; poslovniProstor.OznPoslProstora = "123"; Raverus.FiskalizacijaDEV.Schema.AdresaType adresa = new Schema.AdresaType(); adresa.Ulica = "Ilica"; adresa.KucniBroj = "1"; adresa.KucniBrojDodatak = "c"; adresa.BrojPoste = "10000"; adresa.Naselje = "Zagreb"; adresa.Opcina = "Centar"; Raverus.FiskalizacijaDEV.Schema.AdresniPodatakType adresniPodatak = new Schema.AdresniPodatakType(); adresniPodatak.Item = adresa; poslovniProstor.AdresniPodatak = adresniPodatak; poslovniProstor.RadnoVrijeme = "od 8 do 8"; poslovniProstor.DatumPocetkaPrimjene = Raverus.FiskalizacijaDEV.PopratneFunkcije.Razno.FormatirajDatum(DateTime.Now.Date); XmlDocument doc = cis.PosaljiPoslovniProstor(poslovniProstor, "FISKAL 1"); }
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); } }
private void PosaljiPodatke() { if (txtOIB.Text == "") { MessageBox.Show("Krivo upisani oib."); return; } if (txtOznakaPP.Text == "") { MessageBox.Show("Krivo upisana oznaka PP."); return; } if (txtUlica.Text == "") { MessageBox.Show("Krivo upisana ulica."); return; } if (txtKucniBroj.Text == "") { MessageBox.Show("Krivo upisani kućni broj."); return; } if (txtBrojPoste.Text == "") { MessageBox.Show("Krivo upisani broj pošte."); return; } if (txtNaselje.Text == "") { MessageBox.Show("Krivo upisani oib."); return; } if (txtOpcina.Text == "") { MessageBox.Show("Krivo upisana općina."); return; } if (txtRadnoVrijeme.Text == "") { MessageBox.Show("Krivo upisano radno vrijeme."); return; } if (txtOznakaPP.Text.Length > 19) { MessageBox.Show("Previše znamenaka u poslovnom prostoru."); } ZaglavljeType zaglavlje = new 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 = Potpisivanje.DohvatiCertifikat(Class.Postavke.putanja_certifikat, Class.Postavke.certifikat_zaporka); } else { certifikat = Potpisivanje.DohvatiCertifikat(DTfis.Rows[0]["naziv_certifikata"].ToString()); } try { 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"; } cis.TimeOut = 10000; PoslovniProstorType poslovniProstor = new PoslovniProstorType(); poslovniProstor.Oib = txtOIB.Text; poslovniProstor.OznPoslProstora = txtOznakaPP.Text; AdresaType adresa = new AdresaType(); adresa.Ulica = txtUlica.Text; adresa.KucniBroj = txtKucniBroj.Text; if (txtKucniDodatak.Text != "") { adresa.KucniBrojDodatak = txtKucniDodatak.Text; } adresa.BrojPoste = txtBrojPoste.Text; adresa.Naselje = txtNaselje.Text; adresa.Opcina = txtOpcina.Text; AdresniPodatakType adresniPodatak = new AdresniPodatakType(); adresniPodatak.Item = adresa; poslovniProstor.AdresniPodatak = adresniPodatak; if (chbZatvaranje.Checked) { poslovniProstor.OznakaZatvaranjaSpecified = true; poslovniProstor.OznakaZatvaranja = OznakaZatvaranjaType.Z; } poslovniProstor.RadnoVrijeme = txtRadnoVrijeme.Text; poslovniProstor.DatumPocetkaPrimjene = Razno.FormatirajDatum(dtpDate.Value); poslovniProstor.SpecNamj = Class.Postavke.OIB_PC1; XmlDocument doc = cis.PosaljiPoslovniProstor(poslovniProstor, certifikat); //MessageBox.Show(doc.InnerXml.Replace("\'", "")); if (cis.OdgovorGreska != null) { MessageBox.Show("Greška kod slanja zahtjeva"); } else { string zatvaranje = "0"; if (chbZatvaranje.Checked) { zatvaranje = "1"; } string sql = "UPDATE podaci_poslovnica_fiskal SET " + " OIB='" + txtOIB.Text + "'," + " oznakaPP='" + txtOznakaPP.Text + "'," + " ulica='" + txtUlica.Text + "'," + " broj='" + txtKucniBroj.Text + "'," + " broj_dodatak='" + txtKucniDodatak.Text + "'," + " posta='" + txtBrojPoste.Text + "'," + " naselje='" + txtNaselje.Text + "'," + " opcina='" + txtOpcina.Text + "'," + " datum='" + dtpDate.Value.ToString() + "'," + " r_vrijeme='" + txtRadnoVrijeme.Text + "'," + " zatvaranje='" + zatvaranje + "'" + ""; classSQL.Setings_Update(sql); MessageBox.Show("Zahtjev uspješno poslan."); } } catch (Exception ex) { string sql = "UPDATE podaci_poslovnica_fiskal SET " + " OIB='" + txtOIB.Text + "'," + " oznakaPP='" + txtOznakaPP.Text + "'," + " ulica='" + txtUlica.Text + "'," + " broj='" + txtKucniBroj.Text + "'," + " broj_dodatak='" + txtKucniDodatak.Text + "'," + " posta='" + txtBrojPoste.Text + "'," + " naselje='" + txtNaselje.Text + "'," + " opcina='" + txtOpcina.Text + "'," + " datum='" + dtpDate.Value.ToString() + "'," + " r_vrijeme='" + txtRadnoVrijeme.Text + "'," + " zatvaranje='0'" + ""; classSQL.Setings_Update(sql); MessageBox.Show("Greška kod slanja zahtjeva.\r\n\r\n" + ex.ToString()); } }
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."); } } }
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(); }
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)); } } } } }
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); } }
private void PosaljiPodatke() { if (txtOIB.Text == "") { MessageBox.Show("Krivo upisani oib."); return; } if (txtOznakaPP.Text == "") { MessageBox.Show("Krivo upisana oznaka PP."); return; } if (txtUlica.Text == "") { MessageBox.Show("Krivo upisana ulica."); return; } if (txtKucniBroj.Text == "") { MessageBox.Show("Krivo upisani kučni broj."); return; } if (txtBrojPoste.Text == "") { MessageBox.Show("Krivo upisani broj pošte."); return; } if (txtNaselje.Text == "") { MessageBox.Show("Krivo upisani oib."); return; } if (txtOpcina.Text == "") { MessageBox.Show("Krivo upisana opčina."); return; } if (txtRadnoVrijeme.Text == "") { MessageBox.Show("Krivo upisano radno vrijeme."); return; } if (txtOznakaPP.Text.Length > 19) { MessageBox.Show("Previše znamanka imate u poslovnom prostoru"); } ZaglavljeType zaglavlje = new ZaglavljeType() { DatumVrijeme = Razno.DohvatiFormatiranoTrenutnoDatumVrijeme(), IdPoruke = Guid.NewGuid().ToString() }; X509Certificate2 certifikat = Potpisivanje.DohvatiCertifikat(DTf.Rows[0]["naziv_certifikata"].ToString()); try { CentralniInformacijskiSustav cis = new CentralniInformacijskiSustav(); if (DTf.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"; } cis.TimeOut = 10000; PoslovniProstorType poslovniProstor = new PoslovniProstorType(); poslovniProstor.Oib = txtOIB.Text; poslovniProstor.OznPoslProstora = txtOznakaPP.Text; AdresaType adresa = new AdresaType(); adresa.Ulica = txtUlica.Text; adresa.KucniBroj = txtKucniBroj.Text; if (txtKucniDodatak.Text != "") { adresa.KucniBrojDodatak = txtKucniDodatak.Text; } adresa.BrojPoste = txtBrojPoste.Text; adresa.Naselje = txtNaselje.Text; adresa.Opcina = txtOpcina.Text; AdresniPodatakType adresniPodatak = new AdresniPodatakType(); adresniPodatak.Item = adresa; poslovniProstor.AdresniPodatak = adresniPodatak; if (chbZatvaranje.Checked) { poslovniProstor.OznakaZatvaranjaSpecified = true; poslovniProstor.OznakaZatvaranja = OznakaZatvaranjaType.Z; } poslovniProstor.RadnoVrijeme = txtRadnoVrijeme.Text; poslovniProstor.DatumPocetkaPrimjene = Razno.FormatirajDatum(dtpDate.Value); poslovniProstor.SpecNamj = "47165970760"; XmlDocument doc = cis.PosaljiPoslovniProstor(poslovniProstor, certifikat); if (cis.OdgovorGreska != null) { MessageBox.Show("Greška kod slanja zahtjeva"); } else { string zatvaranje = "0"; if (chbZatvaranje.Checked) { zatvaranje = "1"; } string sql = string.Format(@"UPDATE podaci_fiskalizacija SET oib = '{0}', ulica = '{1}', broj = '{2}', broj_dodatak = '{3}', posta = '{4}', naselje = '{5}', opcina = '{6}', datum = '{7}', r_vrijeme = '{8}', zatvaranje = '{9}';", txtOIB.Text, txtUlica.Text, txtKucniBroj.Text, txtKucniDodatak.Text, txtBrojPoste.Text, txtNaselje.Text, txtOpcina.Text, dtpDate.Value.ToString("yyyy-MM-dd H:mm:ss"), txtRadnoVrijeme.Text, zatvaranje); classDBlite.LiteSqlCommand(sql); MessageBox.Show("Zahtjev uspješno poslan."); } } catch (Exception ex) { string sql = string.Format(@"UPDATE podaci_fiskalizacija SET OIB = '{0}', oznakaPP = '{1}', ulica = '{2}', broj = '{3}', broj_dodatak = '{4}', posta = '{5}', naselje = '{6}', opcina = '{7}', datum = '{8}', r_vrijeme = '{9}', zatvaranje = '0';", txtOIB.Text, txtOznakaPP.Text, txtUlica.Text, txtKucniBroj.Text, txtKucniDodatak.Text, txtBrojPoste.Text, txtNaselje.Text, txtOpcina.Text, dtpDate.Value.ToString("yyyy-MM-dd H:mm:ss"), txtRadnoVrijeme.Text); classDBlite.LiteSqlCommand(sql); MessageBox.Show("Greška kod slanja zahtjeva.\r\n\r\n" + ex.ToString()); } }
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); } }
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)); } } }
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); } }