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

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 S76 : 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 S76()
{
}
/// <summary>
/// Costruttore
/// </summary>
/// <param name="modalitavisualizzazione"></param>
public S76(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("<IMAGE>", " ", 5, TipoAllineamento.SINISTRA, false, 7, false));
tab.Colonne.Add(new Colonna("Descrizione", "Descrizione", hasColumnCtvNonCoperto ? 197 : 267, TipoAllineamento.SINISTRA, false, fontTab, 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("<IMAGE>", " ", 5, TipoAllineamento.SINISTRA, false, fontTab, false));
tab.Colonne.Add(new Colonna("Descrizione", "Descrizione", hasColumnCtvNonCoperto ? 115 : 181, 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
}
}