239 lines
9.3 KiB
C#
239 lines
9.3 KiB
C#
using System;
|
|
using System.Data;
|
|
using ceTe.DynamicPDF.Text;
|
|
using PDFGenerator.BusinessLayer.DataSection;
|
|
using PDFGenerator.Presentation.Section.Tables;
|
|
using PDFGenerator.BusinessLayer;
|
|
|
|
namespace PDFGenerator.Presentation.Section {
|
|
public class S171 : ISezione {
|
|
|
|
|
|
string Titolo = " ";
|
|
private decimal totalePatNonCoperto = 0;
|
|
bool hasColumnCtvNonCoperto;
|
|
bool hasColumnCtvNonCopertoTotali;
|
|
private string _testointroduttivo;
|
|
|
|
|
|
|
|
private TipoReport _tipologiaReport;
|
|
/// <summary>
|
|
/// Modalità di visualizzazione:
|
|
/// La modalità normale mostra la colonna Intermediario(S76 in modalità normale),
|
|
/// La modalità alternativa mostra la colonna AreaProgetto(S76 in modalità alternativa).
|
|
/// Se non specificato di default viene impostata la modalità normale.
|
|
/// </summary>
|
|
public enum EmodalitaRappresentazione
|
|
{
|
|
normale,
|
|
alternativa
|
|
}
|
|
|
|
private EmodalitaRappresentazione _modalitaRappresentazione = EmodalitaRappresentazione.normale;
|
|
|
|
|
|
/// <summary>
|
|
/// Modalità di visualizzazione:
|
|
/// La modalità normale mostra la colonna Intermediario(S76 in modalità normale),
|
|
/// La modalità alternativa mostra la colonna AreaProgetto(S76 in modalità alternativa).
|
|
/// Se non specificato di default viene impostata la modalità normale.
|
|
/// </summary>
|
|
public EmodalitaRappresentazione modalitaRappresentazione
|
|
{
|
|
get { return _modalitaRappresentazione; }
|
|
set { _modalitaRappresentazione = value; }
|
|
}
|
|
|
|
public TipoReport TipologiaReport
|
|
{
|
|
get { return _tipologiaReport; }
|
|
set { _tipologiaReport = value; }
|
|
}
|
|
|
|
/// <summary>
|
|
/// Imposta o recupere il testo introduttivo della sezione.
|
|
/// </summary>
|
|
public string TestoIntroduttivo
|
|
{
|
|
get { return _testointroduttivo; }
|
|
set { _testointroduttivo = value; }
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
/// Costruttore
|
|
/// </summary>
|
|
public S171()
|
|
{
|
|
|
|
}
|
|
|
|
/// <summary>
|
|
/// Costruttore
|
|
/// </summary>
|
|
/// <param name="modalitavisualizzazione"></param>
|
|
public S171(EmodalitaRappresentazione modalitavisualizzazione)
|
|
{
|
|
_modalitaRappresentazione = modalitavisualizzazione;
|
|
}
|
|
|
|
|
|
#region ISezione Members
|
|
|
|
|
|
|
|
public void writeSezione(DataThread dataThread)
|
|
{
|
|
DocumentPDF document = dataThread.DocumentPDF;
|
|
DatiTabella datitab = new DatiTabella();
|
|
DataSetS76 set = (DataSetS76)dataThread.Data.DatiSezione;
|
|
|
|
int fontTab = 7;
|
|
int fontTabTotale = 8;
|
|
|
|
#region Verifica presenza prodotti parzialmente
|
|
DataTable datiTotaleConto = set.Tables["TotaleConti"];
|
|
totalePatNonCoperto = 0;
|
|
|
|
#region Gestione Colonna controvalore non coperto
|
|
if (datiTotaleConto.ExtendedProperties.Contains("HasColumnCtvNonCoperto"))
|
|
hasColumnCtvNonCopertoTotali = Convert.ToBoolean(datiTotaleConto.ExtendedProperties["HasColumnCtvNonCoperto"]);
|
|
#endregion
|
|
|
|
// verifico anche se va inserito il controvalore non coperto
|
|
if (datiTotaleConto.Rows.Count > 0 && datiTotaleConto.Rows[0]["ValoreNonCoperto"] != DBNull.Value && hasColumnCtvNonCopertoTotali)
|
|
totalePatNonCoperto = (decimal)datiTotaleConto.Rows[0]["ValoreNonCoperto"];
|
|
#endregion
|
|
|
|
|
|
datitab.table = set.Tables["ContoCorrente"];
|
|
|
|
#region Gestione Colonna controvalore non coperto
|
|
if (datitab.table.ExtendedProperties.Contains("HasColumnCtvNonCoperto"))
|
|
hasColumnCtvNonCoperto = Convert.ToBoolean(datitab.table.ExtendedProperties["HasColumnCtvNonCoperto"]);
|
|
#endregion
|
|
|
|
DataView view = new DataView(datitab.table);
|
|
view.RowFilter = "";
|
|
|
|
|
|
//calcola se entra nella pagina altrimenti aggiunge una nuova pagina.
|
|
if (document.checkMargin(datitab.GetRowDim() * 3))
|
|
document.addPage();
|
|
|
|
if (dataThread.TipoReport.ToUpper() == "DIAGNOSI")
|
|
{
|
|
document.setSezTitoloDiagnosi(Titolo);
|
|
document.setChapterHeader(_testointroduttivo);
|
|
}
|
|
else
|
|
{
|
|
document.setSezTitolo(Titolo);
|
|
document.setChapterHeader(_testointroduttivo, 0, 520, 8);
|
|
}
|
|
|
|
Tabella tab = new Tabella(document.getMargineLeft(), document.getLastPos());
|
|
tab.HeaderFont = 8;
|
|
|
|
tab.Header = true;
|
|
datitab.table = view.ToTable();
|
|
tab.Datasource = datitab.table;
|
|
//if (dataThread.TipoReport.ToUpper() == "MONITORAGGIO")
|
|
// {
|
|
// tab.AltezzaCella = 30;
|
|
// tab.HeaderFont = 9;
|
|
// fontTab = 9;
|
|
// fontTabTotale = 9;
|
|
// }
|
|
|
|
if (Convert.ToBoolean((datitab.table.Columns["AreaProgetto"].ExtendedProperties["ToRemove"])))
|
|
{
|
|
// LA COLONNA AreaProgetto NON VIENE VISUALIZZATA
|
|
|
|
tab.Colonne.Add(new Colonna("DataSottoscrizione", "Data sott.", hasColumnCtvNonCoperto ? 66 : 80, TipoAllineamento.SINISTRA, false, fontTab, false));
|
|
tab.Colonne.Add(new Colonna("Contratto", "Contratto/<BR>Dossier", hasColumnCtvNonCoperto ? 66 : 80, TipoAllineamento.SINISTRA, false, fontTab, false));
|
|
tab.Colonne.Add(new Colonna("Descrizione", "Descrizione", hasColumnCtvNonCoperto ? 197 : 267, TipoAllineamento.SINISTRA, false, fontTab, false));
|
|
tab.Colonne.Add(new Colonna("<IMAGE>", " ", 5, TipoAllineamento.SINISTRA, false, 7, false));
|
|
tab.Colonne.Add(new Colonna("Controvalore", "Controvalore €", hasColumnCtvNonCoperto ? 90 : 80, TipoAllineamento.DESTRA, false, fontTab, false));
|
|
|
|
if (hasColumnCtvNonCoperto)
|
|
tab.Colonne.Add(new Colonna("ControvaloreNonCoperto", "Controvalore<BR>non coperto €", 90, TipoAllineamento.DESTRA, false, fontTab, false));
|
|
|
|
}
|
|
else
|
|
{
|
|
// LA COLONNA AreaProgetto VIENE VISUALIZZATA
|
|
//V DataSottoscrizione portata a 60 da 66 per portare a quasi 90 areaProgetto come è sulla S88, se occorre si poterbbe rosicchiare qualcosa dalla colonna contratto
|
|
tab.Colonne.Add(new Colonna("DataSottoscrizione", "Data sott.", hasColumnCtvNonCoperto ? 60 : 80, TipoAllineamento.SINISTRA, false, fontTab, false));
|
|
tab.Colonne.Add(new Colonna("Contratto", "Contratto/<BR>Dossier", hasColumnCtvNonCoperto ? 66 : 80, TipoAllineamento.SINISTRA, false, fontTab, false));
|
|
tab.Colonne.Add(new Colonna("Descrizione", "Descrizione", hasColumnCtvNonCoperto ? 115 : 181, TipoAllineamento.SINISTRA, false, fontTab, false));
|
|
tab.Colonne.Add(new Colonna("<IMAGE>", " ", 5, TipoAllineamento.SINISTRA, false, fontTab, false));
|
|
switch (_modalitaRappresentazione)
|
|
{
|
|
case EmodalitaRappresentazione.normale:
|
|
tab.Colonne.Add(new Colonna("Intermediario", "Intermediario", 86, TipoAllineamento.SINISTRA, false, fontTab, false));
|
|
break;
|
|
case EmodalitaRappresentazione.alternativa:
|
|
tab.Colonne.Add(new Colonna("AreaProgetto", "Area/<BR>Progetto", 86, TipoAllineamento.SINISTRA, false, fontTab, false));
|
|
break;
|
|
}
|
|
tab.Colonne.Add(new Colonna("Controvalore", "Controvalore €", hasColumnCtvNonCoperto ? 90 : 80, TipoAllineamento.DESTRA, false, fontTab, false));
|
|
|
|
if (hasColumnCtvNonCoperto)
|
|
tab.Colonne.Add(new Colonna("ControvaloreNonCoperto", "Controvalore<BR>non coperto €", 90, TipoAllineamento.DESTRA, false, fontTab, false));
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
tab.Draw(datitab,document);
|
|
|
|
//TOTALI
|
|
datitab = new DatiTabella();
|
|
datitab.table = set.Tables["TotaleConti"];
|
|
|
|
Tabella tabellaTotali = new Tabella(document.getMargineLeft(),document.getLastPos() + tab.AltezzaTabella + 25);
|
|
tabellaTotali.HeaderFont = 8;
|
|
|
|
tabellaTotali.Header = false;
|
|
tabellaTotali.SaltoPagina = false;
|
|
tabellaTotali.Datasource=datitab.table;
|
|
|
|
// footer
|
|
if (hasColumnCtvNonCoperto)
|
|
{
|
|
tabellaTotali.Colonne.Add(new Colonna("Descrizione", "", 332, TipoAllineamento.SINISTRA, true, fontTabTotale, true));
|
|
tabellaTotali.Colonne.Add(new Colonna("Valore", "", 90, TipoAllineamento.DESTRA, true, fontTabTotale, true));
|
|
tabellaTotali.Colonne.Add(new Colonna("ValoreNonCoperto", "", 90, TipoAllineamento.DESTRA, true, fontTabTotale, true));
|
|
}
|
|
else
|
|
{
|
|
if (datitab.table.Columns.Contains("ValoreNonCoperto"))
|
|
datitab.table.Columns.Remove("ValoreNonCoperto");
|
|
|
|
tabellaTotali.Colonne.Add(new Colonna("Descrizione", "", 420, TipoAllineamento.SINISTRA, true, fontTabTotale, true));
|
|
tabellaTotali.Colonne.Add(new Colonna("Valore", "", 92, TipoAllineamento.DESTRA, true, fontTabTotale, true));
|
|
}
|
|
|
|
tabellaTotali.Draw(datitab,document);
|
|
//tab.AddNotaPartiteViaggianti(tabellaTotali.AltezzaTabella + tab.AltezzaTabella, document);
|
|
|
|
///// setto la posizione aggiornata
|
|
document.setLastPos(tabellaTotali.AltezzaTabella + tab.AltezzaTabella + 5);
|
|
|
|
}
|
|
|
|
|
|
public void setTitolo(string label)
|
|
{
|
|
Titolo = label;
|
|
}
|
|
|
|
#endregion
|
|
}
|
|
|
|
|
|
}
|