Servizio di retirement planning semplificato che espone i motori di simulazione di primo e secondo pilastro.
Namespace:
EPHWS_ZPrevAssembly: EPHWS_ZPrev (in EPHWS_ZPrev.dll) Versione: 1.0.0.0 (1.0.0.0)
Syntax
C# |
---|
public class ZPrev : WebService |
Visual Basic (Declaration) |
---|
Public Class ZPrev _ Inherits WebService |
Visual C++ |
---|
public ref class ZPrev : public WebService |
Remarks
Per descrivere efficacemente l'impiego del webservice si riporta qui di seguito un esempio c# di una semplicissima applicazione winform,
client del servizio in oggetto.
Sulla base del contenuto sintetico delle chiamate e della descrizione estesa disponibile per gli elementi esposti dall'interfaccia, risulterà facile consumare il
servizio che ha pochissimi elementi di interazione, a vantaggio della semplicità d'impiego.
Examples
Il seguente codice è lo stralcio delle funzioni principale di un semplicissimo
programma winform. Se si intende ricostruire un applicazione di prova,
gli elementi visuali possono essere facilmente costruiti tramite un designer dell'IDE.
I parametri di chiamata (URL del webservice) e autentificazione (user e password) sono comunicati all'utente in fase di delivery del servizio.
In loro assenza non è possibile testare il servizio.
CopyC#

public Form1() { InitializeComponent(); } /// <summary> /// Caricamento dei codici e delle descrizioni per i parametri di calcolo (step 1) /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void button2_Click(object sender, EventArgs e) { //istanziamento ed autentificazione al servizio web WS.ZPrev CALCOLO = new WS.ZPrev(); CALCOLO.Url = txtUrl.Text; CALCOLO.AuthHeaderValue = new WS.AuthHeader(); CALCOLO.AuthHeaderValue.user = txtUser.Text; CALCOLO.AuthHeaderValue.pass = txtPwd.Text; //Recupero dati e riempimeto delle comboBox WS.KeyValueStruct[] items = CALCOLO.CategoriePrevidenziali(); cboProfessione.Items.Clear(); foreach (WS.KeyValueStruct it in items) this.cboProfessione.Items.Add(new ComboElement(it.Text, it.ID)); items = CALCOLO.CarriereAttese(); cmbCarriera.Items.Clear(); foreach (WS.KeyValueStruct it in items) this.cmbCarriera.Items.Add(new ComboElement(it.Text, it.ID)); } /// <summary> /// Calcolo pensioni attese della previdenza pubblica (step 2) /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void button1_Click(object sender, EventArgs e) { //Istanziamento del servizio web SOAP per un utilizzo delle funzioni stateless di tipo sincrono // WS.ZPrev CALCOLO = new WS.ZPrev(); CALCOLO.Url = txtUrl.Text; //Parametri di autentificazione di tutte le chiamate CALCOLO.AuthHeaderValue = new WS.AuthHeader(); CALCOLO.AuthHeaderValue.user = txtUser.Text; CALCOLO.AuthHeaderValue.pass = txtPwd.Text; //Istanziamento e riempimento della struttura dati WS.Analisi ana = new WS.Analisi(); ana.DataElaborazione = DateTime.Today; ana.Persona = new WS.Soggetto(); ana.Persona.Nascita = CDATE(txtDataNascita.Text); ana.Persona.SassoMaschio = chkMaschio.Checked; ana.PosizionePensioneObbligatoria = new WS.PosizionePrevidenzialeObbligatoria[1]; ana.PosizionePensioneObbligatoria[0] = new WS.PosizionePrevidenzialeObbligatoria(); ana.PosizionePensioneObbligatoria[0].ID = "PP"; ana.PosizionePensioneObbligatoria[0].DataInizio = CDATE(txtDataInizioLavoro.Text); ana.PosizionePensioneObbligatoria[0].DataRiferimento = ana.DataElaborazione; ana.PosizionePensioneObbligatoria[0].RedditoDiRiferimento = new WS.Reddito(); ana.PosizionePensioneObbligatoria[0].RedditoDiRiferimento.CodiceCategoriaPrevidenziale = ((ComboElement)cboProfessione.Items[cboProfessione.SelectedIndex]).codice; ana.PosizionePensioneObbligatoria[0].RedditoDiRiferimento.frequenza = WS.Periodicita.annuo; ana.PosizionePensioneObbligatoria[0].RedditoDiRiferimento.importo = CDBL(txtReddito.Text); ana.PosizionePensioneObbligatoria[0].RedditoDiRiferimento.tipo = WS.TipoReddito.lavoro; ana.PosizionePensioneObbligatoria[0].RedditoDiRiferimento.CodiceAndamentoAtteso = ((ComboElement)this.cmbCarriera.Items[cmbCarriera.SelectedIndex]).codice; ana.FrequenzaDesiderataRisultati = WS.Periodicita.annuo; //Chiamata dei servizi di calcolo try { if (CALCOLO.PuoAvviareCalcolaPensionePubblica(ana)) //Avvia solo per casi abilitati al calcolo pensionistico { WS.Analisi outAna = CALCOLO.CalcolaPensionePubblica(ana); //Risultati lblOut.Text = "Pensione: "; lblOut.Text += outAna.RisultatiPensioneObbligatoria[0].TipoPensione + " " ; lblOut.Text += outAna.RisultatiPensioneObbligatoria[0].DecorrenzaScelta.ToShortDateString() + " "; lblOut.Text += "importo " + outAna.RisultatiPensioneObbligatoria[0].frequenza.ToString() + " " ; lblOut.Text += outAna.RisultatiPensioneObbligatoria[0].ImportoPensione.ToString("C0") + " "; if( outAna.RisultatiPensioneObbligatoria[0].RedditoAntePensione > 0) lblOut.Text += "[TS = " + (outAna.RisultatiPensioneObbligatoria[0].ImportoPensione / outAna.RisultatiPensioneObbligatoria[0].RedditoAntePensione).ToString("p1") + "]"; lblOut.Text += " (reddito "+ outAna.RisultatiPensioneObbligatoria[0].RedditoAntePensione.ToString("C0") + ")"; } else lblOut.Text = "Aanlisi senza la presenza di una pensione pubblica: "; } catch (SoapException sex) { MessageBox.Show(sex.Message); } catch (Exception ex) { MessageBox.Show(ex.Message); } } /// <summary> /// Calcolo della previdenza complementare (step 3) /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void button3_Click(object sender, EventArgs e) { //Istanziamento del servizio web SOAP per un utilizzo delle funzioni stateless di tipo sincrono // WS.ZPrev CALCOLO = new WS.ZPrev(); CALCOLO.Url = txtUrl.Text; //Parametri di autentificazione di tutte le chiamate CALCOLO.AuthHeaderValue = new WS.AuthHeader(); CALCOLO.AuthHeaderValue.user = txtUser.Text; CALCOLO.AuthHeaderValue.pass = txtPwd.Text; //Istanziamento e riempimento della struttura dati WS.Analisi ana = new WS.Analisi(); ana.DataElaborazione = DateTime.Today; ana.Persona = new WS.Soggetto(); ana.Persona.Nascita = CDATE(txtDataNascita.Text); ana.Persona.SassoMaschio = chkMaschio.Checked; ana.FrequenzaDesiderataRisultati = WS.Periodicita.annuo; if (txtFondo.Text != "") { ana.DataPrimaIscrizioneAllaPrevidenzaComplementare = CDATE(txtDataIniPC.Text); ana.PosizionePensioneIntegrativa = new WS.PosizionePrevidenzialeComplementare[1]; ana.PosizionePensioneIntegrativa[0] = new WS.PosizionePrevidenzialeComplementare(); ana.PosizionePensioneIntegrativa[0].ID = "PI"; ana.PosizionePensioneIntegrativa[0].DataDesiderataPensione = DateTime.Parse("05/02/2030"); ana.PosizionePensioneIntegrativa[0].DataIscrizione = CDATE(txtDataIniPC.Text); ana.PosizionePensioneIntegrativa[0].CodiceFondo = txtFondo.Text; ana.PosizionePensioneIntegrativa[0].RedditoDiRiferimento = new WS.Reddito(); ana.PosizionePensioneIntegrativa[0].RedditoDiRiferimento.CodiceCategoriaPrevidenziale = ((ComboElement)cboProfessione.Items[cboProfessione.SelectedIndex]).codice; ana.PosizionePensioneIntegrativa[0].RedditoDiRiferimento.frequenza = WS.Periodicita.annuo; ana.PosizionePensioneIntegrativa[0].RedditoDiRiferimento.importo = CDBL(txtReddito.Text); ana.PosizionePensioneIntegrativa[0].RedditoDiRiferimento.tipo = WS.TipoReddito.lavoro; ana.PosizionePensioneIntegrativa[0].RedditoDiRiferimento.CodiceAndamentoAtteso = ((ComboElement)this.cmbCarriera.Items[cmbCarriera.SelectedIndex]).codice; ana.PosizionePensioneIntegrativa[0].ContributiFuturi = new WS.PrevidenzaComp_Contribuzione(); ana.PosizionePensioneIntegrativa[0].ContributiFuturi.Frequenza = WS.Periodicita.annuo; ana.PosizionePensioneIntegrativa[0].ContributiFuturi.ImportoDatore = CDBL(txtPAZI.Text); ana.PosizionePensioneIntegrativa[0].ContributiFuturi.ImportoSoggetto = CDBL(txtPSOG.Text); ana.PosizionePensioneIntegrativa[0].ContributiFuturi.MisuraAccantonamentoTFR = CDBL(txtPTFR.Text) / 100.0; ana.PosizionePensioneIntegrativa[0].ContributiFuturi.PesiComparti = new WS.PrevidenzaComp_ContribuzionePesoComparti[1]; ana.PosizionePensioneIntegrativa[0].ContributiFuturi.PesiComparti[0] = new WS.PrevidenzaComp_ContribuzionePesoComparti(); ana.PosizionePensioneIntegrativa[0].ContributiFuturi.PesiComparti[0].IDComparto = txtComparto.Text; ana.PosizionePensioneIntegrativa[0].ContributiFuturi.PesiComparti[0].PesoContrDatoriale = 1; ana.PosizionePensioneIntegrativa[0].ContributiFuturi.PesiComparti[0].PesoContrSoggettivo = 1; ana.PosizionePensioneIntegrativa[0].ContributiFuturi.PesiComparti[0].PesoContrTFR = 1; } try { WS.Analisi outAna = CALCOLO.CalcolaPensioneComplementare(ana); lblOutPrevComp.Text = "Rendita Prev. Com.: " + outAna.RisultatiPensioneIntegrativa[0].RenditaVitalizia.ToString("C2"); } catch (SoapException sex) { MessageBox.Show(sex.Message); } catch (Exception ex) { MessageBox.Show(ex.Message); } } private void Form1_Load(object sender, EventArgs e) { } private DateTime CDATE(string s) { try{ return DateTime.Parse(s); } catch (Exception ex) { MessageBox.Show(ex.Message); } return DateTime.MinValue; } private double CDBL(string s) { try { return double.Parse(s); } catch (Exception ex) { MessageBox.Show(ex.Message); } return 0; }
Inheritance Hierarchy
System..::.Object
System.ComponentModel..::.MarshalByValueComponent
System.Web.Services..::.WebService
EPHWS_ZPrev..::.ZPrev
System.ComponentModel..::.MarshalByValueComponent
System.Web.Services..::.WebService
EPHWS_ZPrev..::.ZPrev