private static prevent.update.Parametri CreaUpdate(prevent.prenotazione.Parametri parametri, prevent.get.Out vecchiaprenotazione) { prevent.update.Parametri nuovo = new prevent.update.Parametri(); nuovo.CodiceTransWinTicket = parametri.CodiceTransWinTicket; nuovo.Denominazione = parametri.Denominazione; nuovo.NumeroPrenotazione = vecchiaprenotazione.NumeroPrenotazione; nuovo.PaxTotali = parametri.PaxTotali; nuovo.RigaBiglietti = new prevent.update.ParametriRigaBiglietti[parametri.RigaBiglietti.Length]; nuovo.RigaPercorsoVisita = new prevent.update.ParametriRigaPercorsoVisita[parametri.RigaPercorsoVisita.Length]; for (int i = 0; i < parametri.RigaBiglietti.Length; i++) { nuovo.RigaBiglietti[i] = new prevent.update.ParametriRigaBiglietti(); nuovo.RigaBiglietti[i].IdTipoBiglietto = parametri.RigaBiglietti[i].IdTipoBiglietto; nuovo.RigaBiglietti[i].Quantita = parametri.RigaBiglietti[i].Quantita; } for (int i = 0; i < parametri.RigaPercorsoVisita.Length; i++) { nuovo.RigaPercorsoVisita[i] = new prevent.update.ParametriRigaPercorsoVisita(); nuovo.RigaPercorsoVisita[i].DataVisita = parametri.RigaPercorsoVisita[i].DataVisita; nuovo.RigaPercorsoVisita[i].IdMostra = parametri.RigaPercorsoVisita[i].IdMostra; nuovo.RigaPercorsoVisita[i].OraVisita = parametri.RigaPercorsoVisita[i].OraVisita; nuovo.RigaPercorsoVisita[i].PaxVisita = parametri.RigaPercorsoVisita[i].PaxVisita; } nuovo.TipoGS = parametri.TipoGS; nuovo.Scuola = parametri.Scuola; return(nuovo); }
private static string GetXmlRichiesta(prevent.prenotazione.Parametri parametri) { using (MemoryStream stream = new MemoryStream()) { XmlSerializerNamespaces ns = new XmlSerializerNamespaces(); ns.Add("", ""); XmlSerializer xml = new XmlSerializer(typeof(prevent.prenotazione.Parametri)); xml.Serialize(stream, parametri, ns); string xmlstr = Encoding.UTF8.GetString(stream.ToArray()); return(xmlstr); } }
private bool CreaVendita() { bool result = false; using (UnitOfWork uow = new UnitOfWork()) { if (!m_ImponiData) { m_DataImposta = DateTime.Now; } bool conPrenotazione = false; DateTime inizioVal = m_DataImposta.Date; DateTime fineVal = m_DataImposta.Date; if (m_Prenotazione.GestoreProfili.Bigliettone() || m_Prenotazione.GestoreProfili.Cumulativo()) { fineVal = inizioVal.AddDays(15); } if (m_Prenotazione.GestoreProfili.CardMusei()) { fineVal = new DateTime(inizioVal.Year, 12, 31); } if (m_Prenotazione.GestoreProfili.NumeroCardMyFE() > 0) { fineVal = inizioVal.AddDays(Card.GiorniCard(m_Prenotazione.GestoreProfili.TipologiaMyFe) - 1); } if (m_Prenotazione.ConPrenotazione()) { conPrenotazione = true; inizioVal = m_Prenotazione.InizioPrenotazioni(inizioVal); fineVal = m_Prenotazione.FinePrenotazioni(fineVal); } Vendita vendita = new Vendita(uow); vendita.Incasso = this.checkEditPos.Checked ? EnumIncasso.Pos : EnumIncasso.Contanti; vendita.CodiceLeggibile = m_Prenotazione.CodiceVendita; vendita.CodicePrevent = m_Prenotazione.PrenotazionePrevent; vendita.Descrizione = m_Prenotazione.RiferimentoVendita; if (m_Prevendita) { vendita.Descrizione = "PREVENDITA"; vendita.DataContabile = DateTime.Today; vendita.DataOraStampa = DateTime.Now; } else { vendita.DataContabile = m_DataImposta.Date; vendita.DataOraStampa = m_DataImposta; } vendita.Provenienza = _provenienza != null?uow.GetObjectByKey <Provenienza>(_provenienza.Oid) : null; vendita.Utente = uow.GetObjectByKey <Utente>(Program.UtenteCollegato.Oid); vendita.Postazione = uow.GetObjectByKey <Postazione>(Program.Postazione.Oid); vendita.Struttura = uow.GetObjectByKey <Struttura>(Program.Postazione.Struttura.Oid); vendita.TotalePersone = m_Prenotazione.GestoreProfili.TotalePersone(); vendita.TotaleImporto = m_Prenotazione.GestoreProfili.TotaleImporto(); vendita.Save(); #region PRENOTAZIONE prevent.prenotazione.Parametri parametri = new prevent.prenotazione.Parametri(); //List<prevent.prenotazione.ParametriRigaBiglietti> elencorighe = new List<prevent.prenotazione.ParametriRigaBiglietti>(); List <prevent.prenotazione.ParametriRigaBiglietti> elencorigheuniche = new List <prevent.prenotazione.ParametriRigaBiglietti>(); if (conPrenotazione) { parametri.CodiceTransWinTicket = vendita.CodiceLeggibile; parametri.Denominazione = vendita.Descrizione; parametri.PaxTotali = m_Prenotazione.GestoreProfili.TotalePersone().ToString(); parametri.TipoGS = GestoreCalendario.TipoGS; parametri.Scuola = GestoreCalendario.TipoScuola; parametri.RigaPercorsoVisita = new prevent.prenotazione.ParametriRigaPercorsoVisita[m_Prenotazione.NumeroTotalePrenotazioni()]; // creazione prenotazione int count = 0; foreach (PrenotazioneIngresso prenotazioneIngresso in m_Prenotazione.Prenotazioni) { foreach (SingolaPrenotazione singolaPrenotazione in prenotazioneIngresso.Prenotazioni) { Prenotazione nuovaPrenotazione = new Prenotazione(uow); nuovaPrenotazione.Vendita = vendita; //nuovaPrenotazione.RigaStampaIngresso = elencoingressi[prenotazioneIngresso.Ingresso.Oid]; //nuovaPrenotazione.AllDay = item.AllDay; //nuovaPrenotazione.AppointmentType = item.AppointmentType; //nuovaPrenotazione.Description = item.Description; nuovaPrenotazione.Disponibilita = EnumDisponibilita.Disponibile; //item.Disponibilita; nuovaPrenotazione.EndDate = singolaPrenotazione.OrarioFine; //nuovaPrenotazione.IdRichiesta = item.IdRichiesta; nuovaPrenotazione.Ingresso = uow.GetObjectByKey <Ingresso>(prenotazioneIngresso.Ingresso.Oid); //nuovaPrenotazione.Label = item.Label; //nuovaPrenotazione.Location = item.Location; nuovaPrenotazione.NumeroPersone = singolaPrenotazione.NumeroPersone; nuovaPrenotazione.StartDate = singolaPrenotazione.Orario; //nuovaPrenotazione.Status = item.Status; nuovaPrenotazione.Subject = singolaPrenotazione.Descrizione; nuovaPrenotazione.Save(); parametri.RigaPercorsoVisita[count] = new prevent.prenotazione.ParametriRigaPercorsoVisita(); parametri.RigaPercorsoVisita[count].DataVisita = nuovaPrenotazione.StartDate.Date; parametri.RigaPercorsoVisita[count].IdMostra = nuovaPrenotazione.Ingresso.CodicePrevent.ToString(); parametri.RigaPercorsoVisita[count].PaxVisita = nuovaPrenotazione.NumeroPersone.ToString(); parametri.RigaPercorsoVisita[count].OraVisita = String.Format("{0:HH}:{1:mm}:{2:ss}.{3:ffffzzz}", nuovaPrenotazione.StartDate, nuovaPrenotazione.StartDate, nuovaPrenotazione.StartDate, nuovaPrenotazione.StartDate); count++; } } } #endregion // Numerazione dei profili int profiloCount = 0; foreach (ProfiloCliente profiloCliente in m_Prenotazione.GestoreProfili.ElencoProfili) { profiloCliente.CodiceProgressivo = profiloCount++; } if (m_Prenotazione.StampaSingolaPersona) { // ho già controllato che non ci siano gruppi oppure scuole foreach (ProfiloCliente profiloCliente in m_Prenotazione.GestoreProfili.ElencoProfili) { var elencocard = profiloCliente.SoluzionePreferita.GetElencoCardMyFE(uow); List <Ingresso> elenco = profiloCliente.ElencoIngressiSoluzionePreferita(); for (int i = 0; i < profiloCliente.NumeroPersone; i++) { CreaStampa(uow, inizioVal, fineVal, vendita, 1, profiloCliente.SoluzionePreferita.ImportoUnitario, elenco, profiloCliente.CodiceProgressivo, elencocard[i]); } } } else { // DEVE esserci almeno un PROFILO gruppo OPPURE un profilo SCUOLA ProfiloCliente profiloBase = m_Prenotazione.GestoreProfili.ElencoProfili[0]; List <Ingresso> elencoBase = profiloBase.ElencoIngressiSoluzionePreferita(); bool tuttiuguali = true; foreach (ProfiloCliente profiloCliente in m_Prenotazione.GestoreProfili.ElencoProfili) { if (Diversi(elencoBase, profiloCliente.ElencoIngressiSoluzionePreferita())) { tuttiuguali = false; break; } if (!profiloCliente.SoluzionePreferita.ContieneGruppoOppureScuola()) { tuttiuguali = false; break; } } if (tuttiuguali) { // stampa UNICA per TUTTI i profili if (m_Prenotazione.GestoreProfili.ElencoProfili.Count > 1) { CreaStampa(uow, inizioVal, fineVal, vendita, vendita.TotalePersone, vendita.TotaleImporto, elencoBase, -1); } else { CreaStampa(uow, inizioVal, fineVal, vendita, vendita.TotalePersone, vendita.TotaleImporto, elencoBase, 0); } } else { // una stampa per ogni PROFILO foreach (ProfiloCliente profiloCliente in m_Prenotazione.GestoreProfili.ElencoProfili) { List <Ingresso> elenco = profiloCliente.ElencoIngressiSoluzionePreferita(); if (profiloCliente.SoluzionePreferita.ContieneGruppoOppureScuola()) { // questo profilo è un gruppo CreaStampa(uow, inizioVal, fineVal, vendita, profiloCliente.NumeroPersone, profiloCliente.ImportoTotale, elenco, profiloCliente.CodiceProgressivo); } else { // questo profilo lo tratto come singolo for (int i = 0; i < profiloCliente.NumeroPersone; i++) { CreaStampa(uow, inizioVal, fineVal, vendita, 1, profiloCliente.SoluzionePreferita.ImportoUnitario, elenco, profiloCliente.CodiceProgressivo); } } } } } // creazione righe vendita foreach (ProfiloCliente profiloCliente in m_Prenotazione.GestoreProfili.ElencoProfili) { foreach (SoluzioneIngressiItem sol in profiloCliente.SoluzionePreferita.Elenco) { if (profiloCliente.SoluzionePreferita.CardMyFE() && sol.Variante.TipologiaTre == EnumTipologiaTre.CardMyFE) { var elencoCard = profiloCliente.SoluzionePreferita.GetElencoCardMyFE(uow); for (int i = 0; i < sol.Quantita; i++) { RigaVenditaVariante riga = new RigaVenditaVariante(uow); riga.PrezzoTotale = sol.PrezzoUnitario; riga.PrezzoUnitario = sol.PrezzoUnitario; riga.Quantita = 1; riga.Vendita = vendita; riga.Profilo = profiloCliente.CodiceProgressivo; riga.Variante = uow.GetObjectByKey <Variante>(sol.Variante.Oid); riga.CodiceSconto = null; riga.Card = elencoCard[i]; riga.Save(); CreaVenditaElencoRigheUniche(elencorigheuniche, riga); } } else { CodiceSconto cs = null; if (profiloCliente.ElencoCodiciSconto.Count > 0 && sol.Titolo != null && sol.Titolo.Bonus()) { cs = uow.GetObjectByKey <CodiceSconto>(profiloCliente.ElencoCodiciSconto[0].Oid); } RigaVenditaVariante riga = new RigaVenditaVariante(uow); riga.PrezzoTotale = sol.PrezzoTotale; riga.PrezzoUnitario = sol.PrezzoUnitario; riga.Quantita = sol.Quantita; riga.Vendita = vendita; riga.Profilo = profiloCliente.CodiceProgressivo; if (sol.Titolo != null) { riga.Titolo = uow.GetObjectByKey <Titolo>(sol.Titolo.Oid); } riga.Variante = uow.GetObjectByKey <Variante>(sol.Variante.Oid); riga.CodiceSconto = cs; riga.Save(); CreaVenditaElencoRigheUniche(elencorigheuniche, riga); } } profiloCount++; } parametri.RigaBiglietti = elencorigheuniche.ToArray(); m_Prenotazione.Vendita = vendita; // registra ingressi per QUESTA postazione foreach (Stampa item1 in vendita.Stampe) { foreach (RigaStampaIngresso item2 in item1.RigheStampaIngresso) { if (VarcoPostazione(item2)) { Entrata entrata = new Entrata(uow); entrata.DataOraEntrata = vendita.DataOraStampa; entrata.Quantita = item2.TotalePersone; entrata.RigaStampaIngresso = item2; entrata.Save(); item2.TotaleIngressi = item2.TotalePersone; item2.Save(); } } } // QUERY WEB ... per confermare prenotazione if (conPrenotazione) { if (PrenotazioneFinale.Prenota(parametri, m_Prenotazione.PreventObj)) { vendita.CodicePrevent = parametri.CodiceTransWinTicket; vendita.Save(); // Salvo tutto ... uow.CommitChanges(); result = true; } else { // errore if (PrenotazioneFinale.UltimoErrore != null) { XtraMessageBox.Show(String.Format("Errore: {0}", PrenotazioneFinale.UltimoErrore.DescrizioneErrore), "Errore: " + PrenotazioneFinale.UltimoErrore.ReturnCode, MessageBoxButtons.OK, MessageBoxIcon.Error); } else { XtraMessageBox.Show("Impossibile completare la prenotazione. Ritornare alla maschera precedente e riprovare.", "Errore", MessageBoxButtons.OK, MessageBoxIcon.Error); } } } else { // Salvo tutto ... uow.CommitChanges(); result = true; } } return(result); }
public static bool Prenota(prevent.prenotazione.Parametri parametri, prevent.get.Out vecchiaprenotazione) { UltimoErrore = null; PreventWebServices.WebReferencePrevent.WSPreventService wsp = new PreventWebServices.WebReferencePrevent.WSPreventService(); string richiesta = GetXmlRichiesta(parametri); if (vecchiaprenotazione != null) { richiesta = GetXmlRichiesta(CreaUpdate(parametri, vecchiaprenotazione)); } string risposta = string.Empty; try { if (vecchiaprenotazione != null) { risposta = wsp.book("WinTicket", WsConfig.Username, WsConfig.Password, "U", richiesta); } else { risposta = wsp.book("WinTicket", WsConfig.Username, WsConfig.Password, "P", richiesta); } } catch (Exception) { risposta = string.Empty; } Console.WriteLine(richiesta); Console.WriteLine(risposta); parametri.CodiceTransWinTicket = string.Empty; if (risposta.Contains(@"ReturnCode=""00""")) { if (vecchiaprenotazione != null) { parametri.CodiceTransWinTicket = vecchiaprenotazione.NumeroPrenotazione; } else { int len1 = @"<NumeroPrenotazione>".Length; int pos1 = risposta.IndexOf(@"<NumeroPrenotazione>"); int pos2 = risposta.IndexOf(@"</NumeroPrenotazione>"); parametri.CodiceTransWinTicket = risposta.Substring(pos1 + len1, pos2 - pos1 - len1); Console.WriteLine(String.Format("PRENOTAZIONE:[{0}]", parametri.CodiceTransWinTicket)); } return(true); } else { if (!string.IsNullOrEmpty(risposta)) { // errore MemoryStream stream = new MemoryStream(Encoding.UTF8.GetBytes(risposta)); XmlSerializer xml = new XmlSerializer(typeof(prevent.verifica.Out)); UltimoErrore = (prevent.verifica.Out)xml.Deserialize(stream); } return(false); } }