238 lines
9.8 KiB
C#
238 lines
9.8 KiB
C#
using System;
|
||
using System.Data;
|
||
using ceTe.DynamicPDF.Text;
|
||
using PDFGenerator.BusinessLayer.DataSection;
|
||
using PDFGenerator.Presentation.Section.Tables;
|
||
using PDFGenerator.BusinessLayer;
|
||
using NLog;
|
||
|
||
namespace PDFGenerator.Presentation.Section
|
||
{
|
||
public class S171 : ISezione
|
||
{
|
||
private static NLog.Logger logger = NLog.LogManager.GetCurrentClassLogger();
|
||
string Titolo = " ";
|
||
private decimal totalePatNonCoperto = 0;
|
||
bool hasColumnCtvNonCoperto;
|
||
bool hasColumnCtvNonCopertoTotali;
|
||
private string _testointroduttivo;
|
||
|
||
private TipologiaReport _tipologiaReport;
|
||
|
||
public enum EmodalitaRappresentazione
|
||
{
|
||
normale,
|
||
alternativa
|
||
}
|
||
|
||
private EmodalitaRappresentazione _modalitaRappresentazione = EmodalitaRappresentazione.normale;
|
||
|
||
public EmodalitaRappresentazione modalitaRappresentazione
|
||
{
|
||
get { return _modalitaRappresentazione; }
|
||
set { _modalitaRappresentazione = value; }
|
||
}
|
||
|
||
public TipologiaReport 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)
|
||
{
|
||
dataThread.SETDATA();
|
||
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));
|
||
|
||
/**** Fix per le Lettere di Benvenuto 15/03/2023 - Pino ****/
|
||
//tab.Colonne.Add(new Colonna("<IMAGE>", " ", 5, TipoAllineamento.SINISTRA, false, 7, false));
|
||
tab.Colonne.Add(new Colonna("IMAGE", " ", 5, 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("Controvalore", "Controvalore <20>", hasColumnCtvNonCoperto ? 90 : 80, TipoAllineamento.DESTRA, false, fontTab, false));
|
||
|
||
if (hasColumnCtvNonCoperto)
|
||
tab.Colonne.Add(new Colonna("ControvaloreNonCoperto", "Controvalore<BR>non coperto <20>", 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 <20> 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));
|
||
|
||
/**** Fix per le Lettere di Benvenuto 15/03/2023 - Pino ****/
|
||
//tab.Colonne.Add(new Colonna("<IMAGE>", " ", 5, 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 <20>", hasColumnCtvNonCoperto ? 90 : 80, TipoAllineamento.DESTRA, false, fontTab, false));
|
||
|
||
if (hasColumnCtvNonCoperto)
|
||
tab.Colonne.Add(new Colonna("ControvaloreNonCoperto", "Controvalore<BR>non coperto <20>", 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
|
||
}
|
||
|
||
|
||
}
|