2025-04-15 12:10:19 +02:00

497 lines
23 KiB
C#
Raw Blame History

using System;
using System.Collections.Generic;
using System.Text;
using ceTe.DynamicPDF;
using ceTe.DynamicPDF.Merger;
using ceTe.DynamicPDF.Text;
using System.Configuration;
using System.Reflection;
using System.IO;
using ceTe.DynamicPDF.Imaging;
using Dundas.Charting.WebControl;
using System.Threading;
using System.Globalization;
using ceTe.DynamicPDF.PageElements;
namespace prova
{
public enum TipoContratto
{
Old = 0,
Affluent = 1,
Private = 2
}
public enum TipoLettera
{
BenvenutoPosticipata,
BenvenutoContestuale,
Accompagno
}
public enum TipoReport
{
Diagnosi,
Monitoraggio
}
}
namespace PDFGenerator
{
public class LetteraBA
{
//private byte[] data;
//public byte[] Data
//{
// get { return data; }
//}
//protected Image firma;
//protected Document lettera;
//protected int fontSize,
// idLettera;
//protected DateTime dataGenerazione;
//public void writePDF() {
// data = lettera.Draw();
// //DECOMMENTARE PER EFFETTUARE LE PROVE, SALVA LA LETTERA SUL PERCORSO
// //SPECIFICATO SU pathScritturaLettera
// //lettera.Draw(path + nomeLettera + ".pdf");
//}
protected static Image GetImageByResourceName(string resourceName, int X, int Y, float ratio)
{
Assembly a = Assembly.GetExecutingAssembly();
try
{
using (Stream stream = a.GetManifestResourceStream(resourceName))
{
Image gif = new Image(stream, X, Y, ratio);
return gif;
}
}
catch
{
return null;
}
}
//protected abstract void settaCampi();
/// int MargineInfPX = 29;
// int MargineSupPX = 14;
// int MargineSxPX = 29;
// int MargineDxPX = 14;
//int xAreaCliente = 308;
// int yAreaCliente = 186;
// int wAreaCliente = 250;
// int hAreaCliente = 90;
// int xAreaLuogo = 0;
// int yAreaLuogo = 258;
// int wAreaLuogo = 480;
// int hAreaLuogo = 30;
//int xAreaOggetto = 0;
//int yAreaOggetto = 288;
//int hAreaOggetto = 480;
//int wAreaOggetto = 30;
//int xAreaCorpo = 0;
//int yAreaCorpo = 328;
//int hAreaCorpo = 480;
//int wAreaCorpo = 320;
//int xAreaSaluti = 250;
//int yAreaSaluti = 677;
//int hAreaSaluti = 230;
//int wAreaSaluti = 56;
//int xOffSetfirma = 0;
//int yOffSetyfirma = 0;
// int xLineNota = 0;
// int yLineNota = 712;
// int hLineNota = 150;
// float wLineNota = 0.5F;
//int xNota = 0;
// int yNota = 715;
//int wNota = 580;
// int hNota = 30;
// int sFontNota = 9;
//int fontSize = 11;
private void SetDefault()
{
//MargineInfPX = 29;
//MargineSupPX = 14;
//MargineSxPX = 29;
//MargineDxPX = 14;
//xAreaCliente = 308;
//yAreaCliente = 186;
//wAreaCliente = 250;
//hAreaCliente = 90;
//xAreaLuogo = 0;
//yAreaLuogo = 258;
//wAreaLuogo = 480;
//hAreaLuogo = 30;
//xAreaOggetto = 0;
//yAreaOggetto = 288;
//hAreaOggetto = 480;
//wAreaOggetto = 30;
//xAreaCorpo = 0;
//yAreaCorpo = 328;
//hAreaCorpo = 480;
//wAreaCorpo = 320;
//xAreaSaluti = 250;
//yAreaSaluti = 677;
//hAreaSaluti = 230;
//wAreaSaluti = 56;
//xOffSetfirma = 0;
//yOffSetyfirma = 0;
//xLineNota = 0;
//yLineNota = 712;
//hLineNota = 150;
//wLineNota = 0.5F;
//xNota = 0;
//yNota = 715;
//wNota = 480;
//hNota = 30;
//sFontNota = 7;
//fontSize = 11;
}
public LetteraBA(string id)
{
SetDefault();
}
/*
public void aa(TipoLettera tipoLettera, TipoContratto tipoContratto, TipoReport tipoReport) {
string testo = "";
if (tipoLettera == TipoLettera.BenvenutoPosticipata && tipoReport == TipoReport.Diagnosi)
{
SetBenvenutoPosticipata();
testo = "<P align='justify'>Gentile Cliente,\r\n\r\nla ringraziamo per aver aderito /$TIPOCOMTRATTO2$/: il servizio <20> stato attivato.\r\n\r\nLe ricordiamo che /$TIPOCOMTRATTO$/ sar<61> regolato, per gli aspetti che lo caratterizzano, dal Capo III delle <20>Norme contrattuali<6C> riportate nel <20>Contratto per la prestazione dei servizi di consulenza in materia di investimenti e di collocamento<74>, nonch<63> dalle condizioni economiche riportate nel Modulo di Adesione /$TIPOCOMTRATTO2$/.\r\n\r\n<b>Allegato a questa comunicazione trova il report di Diagnosi del suo Portafoglio.</b>\r\n\r\nIl report rappresenta il suo patrimonio in /$BANCA$/, distribuito per Aree di Bisogno sulla base delle esigenze che ci ha manifestato. Inoltre, secondo i criteri specificati nel report stesso, rappresenta gli investimenti realizzati presso terzi intermediari ed eventuali altri beni di cui lei ha fornito informazioni. In questo modo lei pu<70> disporre di una diagnosi globale della sua ricchezza mobiliare e immobiliare.\r\n\r\nLe ricordiamo che, con cadenza trimestrale, ricever<65> il Report di Monitoraggio.\r\n\r\nIl suo private banker<font size='1'><sup>1</sup></font>, la sua filiale e il servizio assistenza clienti, attivo dal luned<65> al venerd<72>, dalle 8.30 alle 18.30, al numero /$NUMTEL$/, sono a sua disposizione per qualsiasi ulteriore richiesta di chiarimento si rivelasse necessaria.\r\n\r\nLa ringraziamo per la fiducia che ha voluto rinnovarci, e cogliamo questa occasione per porgerle i nostri pi<70> cordiali saluti.</P>";
}
if (tipoLettera == TipoLettera.BenvenutoContestuale && tipoReport == TipoReport.Diagnosi)
{
SetBenvenutoContestuale();
testo = "Affluent Contestuale Sampaolo <P align='justify'>Gentile cliente,\r\n\r\nla ringraziamo per aver sottoscritto in data /$DATA$/. il <20>Contratto per la prestazione dei servizi di consulenza in materia di investimenti e di collocamento<74>. Il contratto <20> stato da noi accettato e, al contempo, abbiamo attivato /$TIPOCOMTRATTO$/ a cui lei ha scelto di aderire.\r\n\r\nI servizi saranno regolati dalle disposizioni contenute nelle <20>Norme contrattuali<6C> riportate nel predetto contratto e, in particolare, per gli aspetti che caratterizzano /$TIPOCOMTRATTO$/, dal Capo III, nonch<63> dalle condizioni economiche riportate nel Modulo di Adesione /$TIPOCOMTRATTO2$/.\r\n\r\n<b>Allegato a questa comunicazione trova il report di Diagnosi del suo Portafoglio.</b>\r\n\r\nIl report rappresenta il suo patrimonio in /$BANCA$/, distribuito per Aree di Bisogno sulla base delle esigenze che ci ha manifestato. Inoltre, secondo i criteri specificati nel report stesso, rappresenta gli investimenti realizzati presso terzi intermediari ed eventuali altri beni di cui lei ha fornito informazioni. In questo modo lei pu<70> disporre di una diagnosi globale della sua ricchezza mobiliare e immobiliare.\r\n\r\nLe ricordiamo che, con cadenza trimestrale, ricever<65> il Report di Monitoraggio.\r\n\r\nIl suo private banker<font size=''1''><sup>1</sup></font>, la sua filiale e il servizio assistenza clienti, attivo dal luned<65> al venerd<72>, dalle 8.30 alle 18.30, al numero /$NUMTEL$/, sono a sua disposizione per qualsiasi ulteriore richiesta di chiarimento si rivelasse necessaria.\r\n\r\nLa ringraziamo per la fiducia che ha voluto rinnovarci, e cogliamo questa occasione per porgerle i nostri pi<70> cordiali saluti.</P>";
}
if(tipoLettera==TipoLettera.Accompagno)
SetAccompagno();
}//GeneraLettera
*/
private static prova.TipoReport tipoReport;
private static prova.TipoLettera tipoLettera;
//private static prova.TipoContratto tipoContratto;
private static string rete = "";
public static byte[] GetLetteraBA(BusinessLayer.DataThread dataThread)
{
tipoReport = dataThread.TipoReport.ToUpper().Trim().Equals("DIAGNOSI") ? prova.TipoReport.Diagnosi : prova.TipoReport.Monitoraggio;
tipoLettera = (dataThread.AdesioneSuccessivaAvanzato || dataThread.ContrattoOld) ? prova.TipoLettera.BenvenutoPosticipata : prova.TipoLettera.BenvenutoContestuale;
//switch (dataThread.TipoContratto)
//{
// case TipoContratto.Old:
// tipoContratto = prova.TipoContratto.Old;
// break;
// case TipoContratto.Affluent:
// tipoContratto = prova.TipoContratto.Affluent;
// break;
// case TipoContratto.Private:
// tipoContratto = prova.TipoContratto.Private;
// break;
//}
rete = dataThread.Rete.Trim().ToUpper();
string testo = GetTesto();
string oggetto = GetOggetto();
string saluti = GetSaluti();
string nome = "";
string cognome = "";
string indirizzo = "";
string appelativo = "";
return Genera(testo, nome, cognome, indirizzo, appelativo, oggetto, saluti);
}
private static byte[] Genera(string txtTesto, string txtNome, string txtCognome, string txtIndirizzo, string txtAppellativo, string txtOggetto, string txtSaluti)
{
int MargineInfPX = 29;
int MargineSupPX = 14;
int MargineSxPX = 29;
int MargineDxPX = 14;
int xAreaCliente = 308;
int yAreaCliente = 186;
int wAreaCliente = 250;
int hAreaCliente = 90;
int xAreaLuogo = 0;
int yAreaLuogo = 258;
int wAreaLuogo = 480;
int hAreaLuogo = 30;
int xAreaOggetto = 0;
int yAreaOggetto = 288;
int hAreaOggetto = 480;
int wAreaOggetto = 30;
int xAreaCorpo = 0;
int yAreaCorpo = 328;
int hAreaCorpo = 480;
int wAreaCorpo = 320;
//int xAreaSaluti = 250;
//int yAreaSaluti = 677;
int xAreaSaluti = 120;
int yAreaSaluti = 750;
int hAreaSaluti = 230;
int wAreaSaluti = 56;
//int xOffSetfirma = 0;
//int yOffSetyfirma = 0;
int xLineNota = 0;
int yLineNota = 712;
int hLineNota = 150;
float wLineNota = 0.5F;
int xNota = 0;
int yNota = 715;
int wNota = 580;
int hNota = 30;
int sFontNota = 7;
int fontSize = 11;
//********************
Thread.CurrentThread.CurrentCulture = new CultureInfo("en-US");
//this.rete = rete;
// this.data = null;
//this.appellativo = appellativo;
//this.testoOggetto = obj;
//this.testoSaluti = testoSaluti;
//this.indirizzo = indirizzo;
//this.idLettera = idLettera;
//this.testo = testo;
//this.nome = nome;
//this.cognome = cognome;
//this.codiceContratto = codiceContratto;
DateTime dataGenerazione = DateTime.Now;
Document lettera = new Document();
System.Reflection.Assembly thisExe = System.Reflection.Assembly.GetExecutingAssembly();
System.IO.Stream file = null;
if (rete.ToUpper() == "F")
file = thisExe.GetManifestResourceStream("PDFGeneratorLetteraBenvenuto.TemplateBF_New2.pdf");
else
file = thisExe.GetManifestResourceStream("PDFGeneratorLetteraBenvenuto.templateSPI_New2.pdf");
using (file)
{
PdfDocument pp = new PdfDocument(file);
Page page = new ImportedPage(pp.GetPage(1));
PageDimensions dimensions = new PageDimensions(PageSize.A4, PageOrientation.Portrait);
dimensions.BottomMargin = MargineInfPX;
dimensions.TopMargin = MargineSupPX;
dimensions.LeftMargin = MargineSxPX;
dimensions.RightMargin = MargineDxPX;
page.Dimensions = dimensions;
lettera.Pages.Add(page);
string txtCliente = txtAppellativo + "\r\n" + txtNome + " " + txtCognome + "\r\n" + txtIndirizzo;
FormattedTextArea cliente = new FormattedTextArea(txtCliente,
xAreaCliente,
yAreaCliente,
wAreaCliente,
hAreaCliente,
FontFamily.Times,
fontSize,
true);
DateTime dataFineTrimestre = Convert.ToDateTime(ConfigurationManager.AppSettings["DataFineTrimestreCorrente_LetteraAccompagnamento"], new CultureInfo("it-IT", false).DateTimeFormat);
string txtLuogo = "Torino, " + dataFineTrimestre.ToString("dd MMMM yyyy", new CultureInfo("it-IT", false).DateTimeFormat);
FormattedTextArea luogo = new FormattedTextArea(txtLuogo,
xAreaLuogo,
yAreaLuogo,
wAreaLuogo,
hAreaLuogo,
FontFamily.Times,
fontSize,
true);
luogo.Style.Paragraph.Align = ceTe.DynamicPDF.TextAlign.Right;
FormattedTextArea oggetto = new FormattedTextArea(txtOggetto,
xAreaOggetto,
yAreaOggetto,
hAreaOggetto,
wAreaOggetto,
FontFamily.Times,
fontSize,
true);
FormattedTextArea corpo = new FormattedTextArea(txtTesto,
xAreaCorpo,
yAreaCorpo,
hAreaCorpo,
wAreaCorpo,
FontFamily.Times,
fontSize,
true);
corpo.Style.Paragraph.Align = ceTe.DynamicPDF.TextAlign.Justify;
FormattedTextArea saluti = new FormattedTextArea(txtSaluti,
xAreaSaluti,
yAreaSaluti,
hAreaSaluti,
wAreaSaluti,
FontFamily.Times,
fontSize,
true);
//int xOffSetfirma = 0;
//int yOffSetyfirma = 0;
//int xFirma = (int)(saluti.X + (saluti.Width - 94) / 2);
//int yFirma = (int)(saluti.Y - saluti.Height + 15);
int xFirma = (int)(saluti.X + (saluti.Width - 94) / 2);
int yFirma = (int)(saluti.Y - saluti.Height + 15);
Image firma = null;
//if (ristampa)
// firma = GetImageByResourceName("PDFGeneratorLetteraBenvenuto.Firma_Ristampa.jpg", xFirma, yFirma, (float)0.2);
//else
switch (rete.ToUpper())
{
case "F":
firma = GetImageByResourceName("PDFGeneratorLetteraBenvenuto.firma_Fideuram.jpg", xFirma, yFirma, (float)0.2);
break;
case "S":
// firma = GetImageByResourceName("PDFGeneratorLetteraBenvenuto.firma_SP.jpg", xFirma, yFirma, (float)0.2);
firma = GetImageByResourceName("PDFGeneratorLetteraBenvenuto.firma_Fideuram.jpg", xFirma, yFirma + 20, (float)0.15); //Andrea Rosaspina
break;
case "W":
firma = GetImageByResourceName("PDFGeneratorLetteraBenvenuto.firma_SanPaoloInvest.jpg", xFirma, yFirma, (float)0.2);
break;
}
ceTe.DynamicPDF.PageElements.Line lineNota = new ceTe.DynamicPDF.PageElements.Line(xLineNota, yLineNota, xLineNota + hLineNota, yLineNota, wLineNota, RgbColor.Black);
ceTe.DynamicPDF.PageElements.Label Nota = new ceTe.DynamicPDF.PageElements.Label(
"<22>Il private banker <20> un professionista della consulenza finanziaria, previdenziale e assicurativa, iscritto all<6C>albo dei promotori finanziari."
, xNota
, yNota
, wNota
, hNota
, Globals.OpenTypeFontTimes
, sFontNota
);
page.Elements.Add(corpo);
page.Elements.Add(cliente);
page.Elements.Add(oggetto);
page.Elements.Add(luogo);
page.Elements.Add(firma);
page.Elements.Add(saluti);
page.Elements.Add(lineNota);
page.Elements.Add(Nota);
return lettera.Draw();
}
}
private static string GetTesto()
{
string testo = "";
if (tipoLettera == prova.TipoLettera.BenvenutoPosticipata)
testo = "<P align='justify'>Gentile Cliente,\r\n\r\nla ringraziamo per aver aderito /$TIPOCOMTRATTO2$/: il servizio <20> stato attivato.\r\n\r\nLe ricordiamo che /$TIPOCOMTRATTO$/ sar<61> regolato, per gli aspetti che lo caratterizzano, dal Capo III delle <20>Norme contrattuali<6C> riportate nel <20>Contratto per la prestazione dei servizi di consulenza in materia di investimenti e di collocamento<74>, nonch<63> dalle condizioni economiche riportate nel Modulo di Adesione /$TIPOCOMTRATTO2$/.\r\n\r\n<b>Allegato a questa comunicazione trova il report di Diagnosi del suo Portafoglio.</b>\r\n\r\nIl report rappresenta il suo patrimonio in /$BANCA$/, distribuito per Aree di Bisogno sulla base delle esigenze che ci ha manifestato. Inoltre, secondo i criteri specificati nel report stesso, rappresenta gli investimenti realizzati presso terzi intermediari ed eventuali altri beni di cui lei ha fornito informazioni. In questo modo lei pu<70> disporre di una diagnosi globale della sua ricchezza mobiliare e immobiliare.\r\n\r\nLe ricordiamo che, con cadenza trimestrale, ricever<65> il Report di Monitoraggio.\r\n\r\nIl suo private banker<font size='1'><sup>1</sup></font>, la sua filiale e il servizio assistenza clienti, attivo dal luned<65> al venerd<72>, dalle 8.30 alle 18.30, al numero /$NUMTEL$/, sono a sua disposizione per qualsiasi ulteriore richiesta di chiarimento si rivelasse necessaria.\r\n\r\nLa ringraziamo per la fiducia che ha voluto rinnovarci, e cogliamo questa occasione per porgerle i nostri pi<70> cordiali saluti.</P>";
if (tipoLettera == prova.TipoLettera.BenvenutoContestuale)
testo = "Affluent Contestuale Sampaolo <P align='justify'>Gentile cliente,\r\n\r\nla ringraziamo per aver sottoscritto in data /$DATA$/. il <20>Contratto per la prestazione dei servizi di consulenza in materia di investimenti e di collocamento<74>. Il contratto <20> stato da noi accettato e, al contempo, abbiamo attivato /$TIPOCOMTRATTO$/ a cui lei ha scelto di aderire.\r\n\r\nI servizi saranno regolati dalle disposizioni contenute nelle <20>Norme contrattuali<6C> riportate nel predetto contratto e, in particolare, per gli aspetti che caratterizzano /$TIPOCOMTRATTO$/, dal Capo III, nonch<63> dalle condizioni economiche riportate nel Modulo di Adesione /$TIPOCOMTRATTO2$/.\r\n\r\n<b>Allegato a questa comunicazione trova il report di Diagnosi del suo Portafoglio.</b>\r\n\r\nIl report rappresenta il suo patrimonio in /$BANCA$/, distribuito per Aree di Bisogno sulla base delle esigenze che ci ha manifestato. Inoltre, secondo i criteri specificati nel report stesso, rappresenta gli investimenti realizzati presso terzi intermediari ed eventuali altri beni di cui lei ha fornito informazioni. In questo modo lei pu<70> disporre di una diagnosi globale della sua ricchezza mobiliare e immobiliare.\r\n\r\nLe ricordiamo che, con cadenza trimestrale, ricever<65> il Report di Monitoraggio.\r\n\r\nIl suo private banker<font size=''1''><sup>1</sup></font>, la sua filiale e il servizio assistenza clienti, attivo dal luned<65> al venerd<72>, dalle 8.30 alle 18.30, al numero /$NUMTEL$/, sono a sua disposizione per qualsiasi ulteriore richiesta di chiarimento si rivelasse necessaria.\r\n\r\nLa ringraziamo per la fiducia che ha voluto rinnovarci, e cogliamo questa occasione per porgerle i nostri pi<70> cordiali saluti.</P>";
return testo;
}//GetTesto
private static string GetOggetto()
{
return "";
}//GetOggetto
private static string GetSaluti()
{
string saluti = "";
if (rete.Equals("F"))
saluti = "<P align='center'>Matteo Colafrancesco\r\nL<6E>Amministratore Delegato\r\nSanpaolo Invest SIM S.p.A.</P>'";
else
//FC 26062015 Aggionamento nuova Ragione Sociale
//saluti="<P align='center'>Matteo Colafrancesco\r\nL<6E>Amministratore Delegato e Direttore Generale\r\nBanca Fideuram S.p.A.</P>";
// FC 26062015 Nuovo Amministratore Delegato
//saluti = "<P align='center'>Matteo Colafrancesco\r\nL<6E>Amministratore Delegato e Direttore Generale\r\nFideuram S.p.A.</P>";
saluti = "<P align='center'>Paolo Molesini\r\nL<6E>Amministratore Delegato e Direttore Generale\r\nFideuram S.p.A.</P>";
return saluti;
}//GetSaluti
}
}