예제 #1
0
        private void KreirajDIsketu()
        {
            string strPoziv = this.sifraugovaratelja.Text + "90";

            strPoziv = strPoziv + Razno.KontrolniBroj(strPoziv);
            string         str     = "up5924-" + this.rkdp.Text + "-" + strPoziv;
            SaveFileDialog dialog2 = new SaveFileDialog
            {
                InitialDirectory = Conversions.ToString(0),
                FileName         = str,
                RestoreDirectory = true
            };
            SaveFileDialog dialog = dialog2;

            if (dialog.ShowDialog() == DialogResult.OK)
            {
                if (this.SnimiDisketuZaHZZO(dialog.FileName))
                {
                    MessageBox.Show("Datoteka za HZZO uspješno kreirana.");
                }
                else
                {
                    MessageBox.Show("Greška prilikom kreiranja HZZO datoteke.");
                }
            }
        }
예제 #2
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();
        }
예제 #3
0
        private bool SnimiDisketuZaHZZO(string strNazivDatoteke)
        {
            bool flag = false;

            if (this.olaksica == -1)
            {
                Interaction.MsgBox("Potrebno je odabrati olakšicu za koju želite izraditi datoteku", MsgBoxStyle.OkOnly, null);
                return(flag);
            }
            try
            {
                IEnumerator    enumerator    = null;
                SqlConnection  connection    = new SqlConnection(Configuration.ConnectionString);
                SqlCommand     selectCommand = new SqlCommand();
                SqlDataAdapter adapter       = new SqlDataAdapter(selectCommand);
                selectCommand.Connection = connection;
                S_OD_REKAP_OLAKSICEDataAdapter adapter2 = new S_OD_REKAP_OLAKSICEDataAdapter();
                S_OD_REKAP_OLAKSICEDataSet     dataSet  = new S_OD_REKAP_OLAKSICEDataSet();
                object obj2 = adapter2.Fill(dataSet, this.Obracun);
                if (dataSet.Tables[0].Rows.Count == 0)
                {
                    MessageBox.Show("Ne postoje obračunate olakšice!");
                    return(flag);
                }
                DataView view = new DataView {
                    Table = dataSet.S_OD_REKAP_OLAKSICE
                };
                decimal      num3   = DB.N20(RuntimeHelpers.GetObjectValue(view.Table.Compute("Sum(IZNOSOLAKSICE)", "IDOLAKSICE=" + Conversions.ToString(this.olaksica))));
                decimal      num    = DB.N20(RuntimeHelpers.GetObjectValue(view.Table.Compute("count(idradnik)", "IDOLAKSICE=" + Conversions.ToString(this.olaksica))));
                StreamWriter writer = new StreamWriter(strNazivDatoteke, false, Encoding.ASCII);
                writer.Write("0:5924-");
                writer.Write(DB.BrojVodeceNule(this.rkdp.Text, 5, 0, false, ""));
                string strPoziv = this.sifraugovaratelja.Text + "90";
                strPoziv = strPoziv + Razno.KontrolniBroj(strPoziv);
                writer.Write("-");
                writer.Write(strPoziv);
                writer.Write(":");
                writer.Write(this.nazivkorisnika);
                writer.Write("  :");
                writer.Write(Conversions.ToDate(this.datum.Value).ToString("dd.MM.yyyy"));
                writer.Write(":  ");
                writer.Write(num3.ToString("0.00").Replace(",", "."));
                writer.Write(":" + Conversions.ToString(num));
                writer.WriteLine(":");
                int num2 = 0;
                try
                {
                    enumerator = view.Table.Rows.GetEnumerator();
                    while (enumerator.MoveNext())
                    {
                        DataRow current = (DataRow)enumerator.Current;
                        if (Operators.ConditionalCompareObjectEqual(current["idolaksice"], this.olaksica, false))
                        {
                            num2++;
                            writer.Write("1:5924-");
                            writer.Write(this.rkdp.Text + "-");
                            writer.Write(RuntimeHelpers.GetObjectValue(current["ZADPOJEDINACNIPOZIV"]));
                            writer.Write(":");
                            writer.Write(RuntimeHelpers.GetObjectValue(current["prezime"]));
                            writer.Write(Operators.ConcatenateObject(" ", current["ime"]));
                            writer.Write(":");
                            writer.Write(Conversions.ToDate(this.datum.Value).ToString("dd.MM.yyyy"));
                            writer.Write(":  ");
                            decimal num4 = Conversions.ToDecimal(current["iznosolaksice"]);
                            writer.Write(num4.ToString("0.00").Replace(",", "."));
                            writer.Write(":");
                            writer.Write(num2);
                            writer.WriteLine(":");
                        }
                    }
                }
                finally
                {
                    if (enumerator is IDisposable)
                    {
                        (enumerator as IDisposable).Dispose();
                    }
                }
                writer.Close();
                flag = true;
            }
            catch (System.Exception exception1)
            {
                throw exception1;

                //Interaction.MsgBox("Greška prilikom kreiranja datoteke za HZZO", MsgBoxStyle.OkOnly, null);
                //flag = false;
            }
            return(flag);
        }
예제 #4
0
        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());
            }
        }
예제 #5
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();
        }
예제 #6
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);
            }
        }
예제 #7
0
        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());
            }
        }
예제 #8
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);
            }
        }