} // private static RTGSNalog ReadFromReader(SqlDataReader reader) { RTGSNalog ret = new RTGSNalog(); ret.IDPoruke = (string)reader["idporuke"]; ret.SWIFTBankaDuznika = (string)reader["swiftbankaduznika"]; ret.ObracunskiRacunBankeDuznika = (string)reader["obracunskiracunbankeduznika"]; ret.SWIFTBankaPoverioca = (string)reader["swiftbankapoverioca"]; ret.ObracunskiRacunBankePoverioca = (string)reader["obracunskiracunbankepoverioca"]; ret.Duznik = (string)reader["duznik"]; ret.SvrhaPlacanja = (string)reader["svrhaplacanja"]; ret.Primalac = (string)reader["primalac"]; ret.DatumNaloga = (DateTime)reader["datumnaloga"]; ret.DatumValute = (DateTime)reader["datumvalute"]; ret.RacunDuznika = (string)reader["racunduznika"]; ret.ModelZaduzenja = (double)(decimal)reader["modelzaduzenja"]; ret.PozivNaBrZaduzenja = (string)reader["pozivnabrzaduzenja"]; ret.RacunPoverioca = (string)reader["racunpoverioca"]; ret.ModelOdobrenja = (double)(decimal)reader["modelodobrenja"]; ret.PozivNaBrOdobrenja = (string)reader["pozivnabrodobrenja"]; ret.Iznos = (double)(decimal)reader["iznos"]; ret.SifraValute = (string)reader["sifravalute"]; ret.IDRTGSNaloga = (int)reader["idrtgsnaloga"]; return(ret); }
/// <summary> /// Iz naloga izvlaci sve bitne podatke za sklapanje rtgs naloga /// </summary> /// <param name="nzp"></param> /// <returns></returns> private RTGSNalog NapraviRTGSIzNaloga(NalogZaPlacanje nzp) { string imeFirmeKojaPlaca = nzp.Duznik; string imeFirmeKojaPrima = nzp.Primalac; Banka bankaFirmeKojaPlaca = KombinacijeDB.GetBankByFirmName(imeFirmeKojaPlaca); Banka bankaFirmeKojaPrima = KombinacijeDB.GetBankByFirmName(imeFirmeKojaPrima); RTGSNalog rtgs = new RTGSNalog(); rtgs.IDPoruke = nzp.IDPoruke; rtgs.SWIFTBankaDuznika = bankaFirmeKojaPlaca.SWIFTKod; rtgs.ObracunskiRacunBankeDuznika = bankaFirmeKojaPlaca.ObracunskiRacun.ToString(); rtgs.SWIFTBankaPoverioca = bankaFirmeKojaPrima.SWIFTKod; rtgs.ObracunskiRacunBankePoverioca = bankaFirmeKojaPrima.ObracunskiRacun.ToString(); rtgs.Duznik = imeFirmeKojaPlaca; rtgs.SvrhaPlacanja = nzp.SvrhaPlacanja; rtgs.Primalac = imeFirmeKojaPrima; rtgs.DatumNaloga = DateTime.Now; rtgs.DatumValute = DateTime.Now; rtgs.RacunDuznika = nzp.RacunDuznika; rtgs.ModelZaduzenja = nzp.ModelZaduzenja; rtgs.PozivNaBrZaduzenja = nzp.PozivNaBrZaduzenja; rtgs.RacunPoverioca = nzp.RacunPoverioca; rtgs.ModelOdobrenja = nzp.ModelOdobrenja; rtgs.PozivNaBrOdobrenja = nzp.PozivNaBrOdobrenja.ToString("F0"); rtgs.Iznos = nzp.Iznos; rtgs.SifraValute = nzp.OznakaValute; return(rtgs); }
/// <summary> /// POTREBNO JE DODATI IDPRESEKA, POS U RTGSU NEMA /// </summary> /// <param name="rtgs"></param> /// <returns></returns> private StavkaPreseka NapraviStavkuIzRTGSa(RTGSNalog rtgs) { StavkaPreseka stavka = new StavkaPreseka(); stavka.DatumNaloga = rtgs.DatumNaloga; stavka.DatumValute = rtgs.DatumValute; stavka.Duznik = rtgs.Duznik; stavka.Iznos = rtgs.Iznos; stavka.ModelOdobrenja = rtgs.ModelOdobrenja; stavka.ModelZaduzenja = rtgs.ModelZaduzenja; stavka.PozivNaBrojOdobrenja = rtgs.PozivNaBrOdobrenja; stavka.PozivNaBrZaduzenja = rtgs.PozivNaBrZaduzenja; stavka.Primalac = rtgs.Primalac; stavka.RacunDuznika = rtgs.RacunDuznika; stavka.RacunPoverioca = rtgs.RacunPoverioca; stavka.Smer = "†"; stavka.SvrhaPlacanja = rtgs.SvrhaPlacanja; return(stavka); }
public void NapraviNalogZaPrenos(NalogZaPlacanje nzp) { //provrea dal se odma salje ili ne if (nzp.Hitno == true || nzp.Iznos > 250000) { //ako se odma salje pita se dal je ista banka RTGSNalog rtgsNalog = NapraviRTGSIzNaloga(nzp); PromenaStanjaUBanciZaFirmu(nzp.RacunDuznika, (-1) * nzp.Iznos, NapraviStavkuIzRTGSa(rtgsNalog)); //BANKASVCCONSOLE(rtgsNalog.ToString()); if (rtgsNalog.SWIFTBankaDuznika == rtgsNalog.SWIFTBankaPoverioca) { //ne salje se centralnoj banci, ista banka je duznik i poverioc nzp.Status = GlobalConst.STATUS_NALOGA_ZA_PLACANJE_POSLAT; NalogZaPlacanjeDB.InsertNalogZaPlacanje(nzp); PromenaStanjaUBanciZaFirmu(nzp.RacunPoverioca, nzp.Iznos, NapraviStavkuIzRTGSa(rtgsNalog)); } else { //rtgs se salje centralnoj, centralna sacuva rtgs u bazi, i salje poruke o odobrenju/zaduzenju nzp.Status = GlobalConst.STATUS_NALOGA_ZA_PLACANJE_POSLAT; NalogZaPlacanjeDB.InsertNalogZaPlacanje(nzp); PosaljiRTGSCentralnojBanci(rtgsNalog); } } else { //sacuvaj nalog nzp.Status = GlobalConst.STATUS_NALOGA_ZA_PLACANJE_KREIRAN; RTGSNalog rtgs = NapraviRTGSIzNaloga(nzp); if (rtgs.SWIFTBankaDuznika == rtgs.SWIFTBankaPoverioca) { PromenaStanjaUBanciZaFirmu(rtgs.RacunDuznika, (-1) * rtgs.Iznos, NapraviStavkuIzRTGSa(rtgs)); PromenaStanjaUBanciZaFirmu(rtgs.RacunPoverioca, rtgs.Iznos, NapraviStavkuIzRTGSa(rtgs)); nzp.Status = GlobalConst.STATUS_NALOGA_ZA_PLACANJE_POSLAT; } NalogZaPlacanjeDB.InsertNalogZaPlacanje(nzp); } }
/// <summary> /// <para>Metoda koja prima RTGS nalog i pravi poruke o odobrenju i zaduzenju.</para> /// <para>Poruku o zaduzenju vraca banci koja je posala nalog. </para> /// </summary> /// <param name="rtgsNalog"></param> /// <returns></returns> public void AcceptRTGSAndSendMessages(RTGSNalog rtgsNalog) { rtgsNalog = RTGSNalogDB.InsertIntoRTGSNalog(rtgsNalog); CBSVCCONSOLE("VERIFIKOVAN RTGS NALOG"); CBSVCCONSOLE(rtgsNalog.ToString()); //promena para KombinacijeDB.PrenosNovca(rtgsNalog.SWIFTBankaDuznika, rtgsNalog.SWIFTBankaPoverioca, Int64.Parse(rtgsNalog.ObracunskiRacunBankeDuznika), Int64.Parse(rtgsNalog.ObracunskiRacunBankePoverioca), rtgsNalog.Iznos); PorukaOOdobrenju odobrenje = new PorukaOOdobrenju(); PorukaOZaduzenju zaduzenje = new PorukaOZaduzenju(); //poruka o odobrenju odobrenje.IDPoruke = rtgsNalog.IDPoruke; odobrenje.SWIFTBankePoverioca = rtgsNalog.SWIFTBankaPoverioca; odobrenje.ObracunskiRacunBankePoverioca = rtgsNalog.ObracunskiRacunBankePoverioca; odobrenje.IDPorukeNaloga = "Ovo Ne Znam Sta Je"; odobrenje.DatumValute = rtgsNalog.DatumValute; odobrenje.Iznos = rtgsNalog.Iznos; odobrenje.SifraValute = rtgsNalog.SifraValute; //poruka o zaduzenju zaduzenje.IDPPoruke = rtgsNalog.IDPoruke; zaduzenje.SWIFTBankeDuznika = rtgsNalog.SWIFTBankaDuznika; zaduzenje.ObracunskiRacunBankeDuznika = rtgsNalog.ObracunskiRacunBankeDuznika; zaduzenje.IDPorukeNaloga = "Ovo Ne Znam Sta Je"; zaduzenje.DatumValute = rtgsNalog.DatumValute; zaduzenje.Iznos = rtgsNalog.Iznos; zaduzenje.SifraValute = rtgsNalog.SifraValute; IBankaService srvc = GetBankaService(GlobalConst.HOST_ADDRESS_BANKA + GlobalConst.BANKE_SERVICE_NAME); srvc.PrimiPorukuOOdobrenjuIRTGS(odobrenje, rtgsNalog); srvc.PrimiPorukuOZaduzenju(zaduzenje); }
} // // public static RTGSNalog GetRTGSNalog(int idNaloga) { RTGSNalog ret; using (SqlConnection conn = MySQLUtils.NapraviFirmaConn()) { conn.Open(); string sql = @"SELECT * FROM rtgsnalog WHERE idrtgsnaloga = @idrtgsnaloga"; using (SqlCommand cmd = new SqlCommand(sql, conn)) { cmd.Parameters.AddWithValue("@idrtgsnaloga", idNaloga); ret = new RTGSNalog(); SqlDataReader reader = cmd.ExecuteReader(); reader.Read(); ret = ReadFromReader(reader); reader.Close(); } conn.Close(); } return(ret); } //
/// <summary> /// pogodi. /// </summary> /// <param name="rtgs"></param> /// <returns></returns> private NalogZaPlacanje NapraviNalogZaPlacanjeIzRTGS(RTGSNalog rtgs) { NalogZaPlacanje placanje = new NalogZaPlacanje(); placanje.DatumNaloga = rtgs.DatumNaloga; placanje.DatumValute = rtgs.DatumValute; placanje.Duznik = rtgs.Duznik; placanje.Hitno = false; placanje.IDPoruke = rtgs.IDPoruke; placanje.Iznos = rtgs.Iznos; placanje.ModelOdobrenja = (int)rtgs.ModelOdobrenja; placanje.ModelZaduzenja = (int)rtgs.ModelZaduzenja; placanje.OznakaValute = rtgs.SifraValute; placanje.PozivNaBrOdobrenja = Double.Parse(rtgs.PozivNaBrOdobrenja); placanje.PozivNaBrZaduzenja = rtgs.PozivNaBrZaduzenja; placanje.Primalac = rtgs.Primalac; placanje.RacunDuznika = rtgs.RacunDuznika; placanje.RacunPoverioca = rtgs.RacunPoverioca; placanje.Status = GlobalConst.STATUS_NALOGA_ZA_PLACANJE_KREIRAN; placanje.SvrhaPlacanja = rtgs.SvrhaPlacanja; return(placanje); }
// public static List <RTGSNalog> GetAllRTGSNalog() { List <RTGSNalog> poruke = new List <RTGSNalog>(); using (SqlConnection conn = MySQLUtils.NapraviFirmaConn()) { conn.Open(); string sql = @"SELECT * FROM rtgsnalog"; using (SqlCommand cmd = new SqlCommand(sql, conn)) { SqlDataReader reader = cmd.ExecuteReader(); while (reader.Read()) { RTGSNalog ret = new RTGSNalog(); ret = ReadFromReader(reader); poruke.Add(ret); } reader.Close(); } conn.Close(); } return(poruke); } //
} // // public static RTGSNalog InsertIntoRTGSNalog(RTGSNalog f) { using (SqlConnection conn = MySQLUtils.NapraviCBConn()) { string sql = @"INSERT INTO [dbo].[rtgsnalog] ([idporuke] ,[swiftbankaduznika] ,[obracunskiracunbankeduznika] ,[swiftbankapoverioca] ,[obracunskiracunbankepoverioca] ,[duznik] ,[svrhaplacanja] ,[primalac] ,[datumnaloga] ,[datumvalute] ,[racunduznika] ,[modelzaduzenja] ,[pozivnabrzaduzenja] ,[racunpoverioca] ,[modelodobrenja] ,[pozivnabrodobrenja] ,[iznos] ,[sifravalute]) VALUES (@idporuke ,@swiftbankaduznika ,@obracunskiracunbankeduznika ,@swiftbankapoverioca ,@obracunskiracunbankepoverioca ,@duznik ,@svrhaplacanja ,@primalac ,@datumnaloga ,@datumvalute ,@racunduznika ,@modelzaduzenja ,@pozivnabrzaduzenja ,@racunpoverioca ,@modelodobrenja ,@pozivnabrodobrenja ,@iznos ,@sifravalute) SELECT SCOPE_IDENTITY()" ; conn.Open(); using (SqlCommand cmd = new SqlCommand(sql, conn)) { cmd.Parameters.AddWithValue("@idporuke", f.IDPoruke); cmd.Parameters.AddWithValue("@swiftbankaduznika", f.SWIFTBankaDuznika); cmd.Parameters.AddWithValue("@obracunskiracunbankeduznika", f.ObracunskiRacunBankeDuznika); cmd.Parameters.AddWithValue("@swiftbankapoverioca", f.SWIFTBankaPoverioca); cmd.Parameters.AddWithValue("@obracunskiracunbankepoverioca", f.ObracunskiRacunBankePoverioca); cmd.Parameters.AddWithValue("@duznik", f.Duznik); cmd.Parameters.AddWithValue("@svrhaplacanja", f.SvrhaPlacanja); cmd.Parameters.AddWithValue("@primalac", f.Primalac); cmd.Parameters.AddWithValue("@datumnaloga", f.DatumNaloga); cmd.Parameters.AddWithValue("@datumvalute", f.DatumValute); cmd.Parameters.AddWithValue("@racunduznika", f.RacunDuznika); cmd.Parameters.AddWithValue("@modelzaduzenja", f.ModelZaduzenja); cmd.Parameters.AddWithValue("@pozivnabrzaduzenja", f.PozivNaBrZaduzenja); cmd.Parameters.AddWithValue("@racunpoverioca", f.RacunPoverioca); cmd.Parameters.AddWithValue("@modelodobrenja", f.ModelOdobrenja); cmd.Parameters.AddWithValue("@pozivnabrodobrenja", f.PozivNaBrOdobrenja); cmd.Parameters.AddWithValue("@iznos", f.Iznos); cmd.Parameters.AddWithValue("@sifravalute", f.SifraValute); object x = cmd.ExecuteScalar(); f.IDRTGSNaloga = (int)(decimal)x; } conn.Close(); } return(f); } //
/// <summary> /// Metoda koja izvlaci koliko novca je uplaceno na racun, i kojoj firmi, i to belezi u bazu /// </summary> /// <param name="odobrenje"></param> public void PrimiPorukuOOdobrenjuIRTGS(PorukaOOdobrenju odobrenje, RTGSNalog nalog) { PorukaOOdobrenjuDB.InsertIntoPorukaOOdobrenju(odobrenje); PromenaStanjaUBanciZaFirmu(nalog.RacunPoverioca, nalog.Iznos, NapraviStavkuIzRTGSa(nalog)); }
/// <summary> /// Salje RTGS nalog centralnoj banci i vraca poruku o zaduzenju. /// </summary> /// <param name="nalog"></param> /// <returns></returns> private void PosaljiRTGSCentralnojBanci(RTGSNalog nalog) { ICentralnaBankaService cbsvc = GetCBServiceChannel(GlobalConst.HOST_ADDRESS_CB + GlobalConst.CENTRALNA_BANKA_NAME); cbsvc.AcceptRTGSAndSendMessages(nalog); }