using System;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.IO;
using System.Data;
using iTextSharp.text;
using iTextSharp.text.pdf;
namespace snabbasvar.util
{
/// <summary>
/// Summary description for Invoices.
/// </summary>
public class MyInvoices
{
public MyInvoices()
{
//
// TODO: Add constructor logic here
//
}
public static void CreateInvoice(
int projectid)
{
DataView project=BusProjects.ListById(projectid);
int regiontype=Convert.ToInt32(project[0]["regiontype"]);
int minage=Convert.ToInt32(project[0]["minage"]);
int maxage=Convert.ToInt32(project[0]["maxage"]);
int nrquestions=Convert.ToInt32(project[0]["maxquota"]);
string[] regionSpecifics=Convert.ToString(project[0]["regionspecifics"]).Split(new char[]{';'});
string invoicedate=BusProjects.GetInvoicedate(
Convert.ToString(project[0]["startdate"]),
Convert.ToBoolean(project[0]["fastdelivery"]));
string projectname=Convert.ToString(project[0]["BusprojectName"]);
int userid=Convert.ToInt32(project[0]["user_id"]);
bool usingage=Convert.ToBoolean(minage>0 || maxage>0);
bool usingsex=Convert.ToBoolean(Convert.ToInt32(project[0]["sex"])!=-1);
bool isSnabbLeverans=Convert.ToBoolean(project[0]["fastdelivery"]);
DataView user=Accounts.GetUserById(userid);
string companyname=Convert.ToString(user[0]["companyname"]);
string username=Convert.ToString(user[0]["ContactName"]);
string companyaddress=Convert.ToString(user[0]["address"]);
string postalcode=Convert.ToString(user[0]["postalcode"]);
string postalort=Convert.ToString(user[0]["city"]);
string country=Convert.ToString(user[0]["countryname"]);
bool appliedKampanj=Globals.IsKampan && Accounts.User_IsNewOfSnabbasvar(userid,projectid);
Document document=new Document(PageSize.A4,36,72,108,180);
try
{
string filename="../invoices/"+Convert.ToString(projectid*100)+Convert.ToString(projectid)+".pdf";
string file=HttpContext.Current.Server.MapPath(filename);
PdfWriter writer=PdfWriter.GetInstance(document,new FileStream(file,FileMode.Create));
document.Open();
AddLogo(document);
AddRightHeader(document,writer);
AddCustomerAddress(document,
writer,
companyname,
username,
companyaddress,
postalcode,
postalort,
country);
AddReference(document,
writer,
userid,
projectid,
username,
invoicedate);
AddSpecification(document,
writer,
projectname,
nrquestions,
regiontype,
regionSpecifics,
usingage,
usingsex,
isSnabbLeverans,
appliedKampanj);
AddFooter(document,writer);
}
catch(Exception ee)
{
HttpContext.Current.Response.Write(ee.StackTrace);
}
document.Close();
}
private static void AddLogo(Document document)
{
string
_logo=HttpContext.Current.Server.MapPath("../invoices/"+Globals.CI.Name+"_snabbasvar_logga.gif");
iTextSharp.text.Image
logo=iTextSharp.text.Image.GetInstance(_logo);
logo.SetAbsolutePosition(360,750);
document.Add(logo);
}
private static void AddReference(
Document document,
PdfWriter writer,
int userid,
int projectid,
string username,
string invoicedate)
{
iTextSharp.text.pdf.PdfPTable re=new iTextSharp.text.pdf.PdfPTable(1);
re.SetTotalWidth(new float[]{530});
re.LockedWidth=true;
re.HorizontalAlignment=0;
re.DefaultCell.BorderColor=iTextSharp.text.Color.BLACK;
iTextSharp.text.pdf.PdfPTable reference=new iTextSharp.text.pdf.PdfPTable(4);
float[] columnDefinitionSize={130F,120F,120F,160F};
reference.SetTotalWidth(columnDefinitionSize);
reference.LockedWidth=true;
reference.HorizontalAlignment=0;
reference.DefaultCell.BorderColor=iTextSharp.text.Color.WHITE;
reference.AddCell(new Phrase(Globals.RM.GetString("Faktura_InvoiceNumber",Globals.CI),BoldFont));
reference.AddCell(new Phrase(Convert.ToString(projectid),NormalFont));
reference.AddCell(new Phrase(Globals.RM.GetString("Faktura_PrintDate",Globals.CI),BoldFont));
reference.AddCell(new Phrase(DateTime.Now.ToShortDateString(),NormalFont));
reference.AddCell(new Phrase(Globals.RM.GetString("Faktura_CustomerNo",Globals.CI),BoldFont));
reference.AddCell(new Phrase(Convert.ToString(userid),NormalFont));
reference.AddCell(new Phrase(Globals.RM.GetString("Faktura_PayDueDate",Globals.CI),BoldFont));
reference.AddCell(new Phrase(Convert.ToDateTime(invoicedate).AddDays(-1).ToShortDateString(),NormalFont));
reference.AddCell(new Phrase(Globals.RM.GetString("Faktura_YourRef",Globals.CI),BoldFont));
reference.AddCell(new Phrase(username,NormalFont));
reference.AddCell(new Phrase(Globals.RM.GetString("Faktura_OurRef",Globals.CI),BoldFont));
reference.AddCell(new Phrase("Bo Mattsson,"+Globals.RM.GetString("Invoice_SupportMail",Globals.CI),NormalFont));
re.AddCell(reference);
re.WriteSelectedRows(0,-1,0,-1,30,620,writer.DirectContent);
}
private static iTextSharp.text.Image Line
{
get
{
string _image=HttpContext.Current.Server.MapPath("../invoices/line.gif");
iTextSharp.text.Image image=iTextSharp.text.Image.GetInstance(_image);
return image;
}
}
private static void AddFooter(Document document,PdfWriter writer)
{
iTextSharp.text.pdf.PdfPTable footer=new iTextSharp.text.pdf.PdfPTable(1);
footer.SetTotalWidth(new float[]{500});
footer.HorizontalAlignment=0;
footer.LockedWidth=true;
footer.DefaultCell.BorderColor=iTextSharp.text.Color.WHITE;
footer.AddCell(Line);
footer.WriteSelectedRows(0,-1,0,-1,30,241,writer.DirectContent);
//float[] columnDefinitionSize={160F,160F,100F,120F};
footer=new iTextSharp.text.pdf.PdfPTable(1);
footer.SetTotalWidth(new float[]{230F});
footer.HorizontalAlignment=0;
footer.LockedWidth=true;
footer.DefaultCell.BorderColor=iTextSharp.text.Color.WHITE;
footer.AddCell(new Phrase(Globals.RM.GetString("Faktura_PleaseToPay",Globals.CI),NormalFont));
footer.AddCell(new Phrase("Cint AB",NormalFont));
footer.AddCell(new Phrase("Bank: Östgotabanken",NormalFont));
footer.AddCell(new Phrase("Bankkonto: 1334 1408 940",NormalFont));
footer.AddCell(new Phrase("Bankgiro: 5528-6520",NormalFont));
footer.AddCell(new Phrase("SWIFT: DABASESX",NormalFont));
footer.AddCell(new Phrase("IBAN: SE23 1200 0000 0133 4140 8940",NormalFont));
footer.AddCell(new Phrase("Momsregistreringsnummer:SE556559876901",NormalFont));
footer.AddCell(new Phrase("Företaget innnehar F-skattesedel",NormalFont));
footer.WriteSelectedRows(0,-1,0,-1,30,240,writer.DirectContent);
}
private static void AddProductItemRow(
iTextSharp.text.pdf.PdfPTable table,
string description,
int nrquestions,
int aprice,
int amount)
{
table.AddCell(new Phrase(description,NormalFont));
table.AddCell(new Phrase(Convert.ToString(nrquestions),NormalFont));
table.AddCell(new Phrase(Convert.ToString(aprice),NormalFont));
table.AddCell(new Phrase(Convert.ToString(amount),NormalFont));
}
private static void AddSpecification(
Document document,
PdfWriter writer,
string projectname,
int nrquestions,
int regiontype,
string[] regionSpecifics,
bool usingage,
bool usingsex,
bool isSnabbLeverans,
bool appliedKampanj)
{
iTextSharp.text.pdf.PdfPTable specification=new iTextSharp.text.pdf.PdfPTable(4);
float[] columnDefinitionSize={200F,80F,120F,100F};
specification.SetTotalWidth(columnDefinitionSize);
specification.HorizontalAlignment=0;
specification.LockedWidth=true;
specification.DefaultCell.BorderColor=iTextSharp.text.Color.WHITE;
specification.AddCell(new Phrase(Globals.RM.GetString("Faktura_Description",Globals.CI),BoldFont));
specification.AddCell(new Phrase(Globals.RM.GetString("Faktura_Unit",Globals.CI),BoldFont));
specification.AddCell(new Phrase(Globals.RM.GetString("Faktura_UnitPrice",Globals.CI),BoldFont));
specification.AddCell(new Phrase(Globals.RM.GetString("Faktura_Amount",Globals.CI),BoldFont));
specification.DefaultCell.Colspan=4;
specification.AddCell(Line);
specification.DefaultCell.Colspan=1;
int aprice=0;
double totalprice=0;
string par=string.Empty;
string countryId=string.Empty;
string type=string.Empty;
switch(regiontype)
{
case (int)RegionType.AllTheCountry:
case (int)RegionType.CountryPart:
case (int)RegionType.Province:
aprice=Prices.GetBaseprice(nrquestions,regiontype);
AddProductItemRow(specification,
appliedKampanj?projectname+"(*)":projectname,
nrquestions,
aprice,
(appliedKampanj?(nrquestions-1):nrquestions)*aprice);
totalprice=(appliedKampanj?nrquestions-1:nrquestions)*aprice;
break;
case (int)RegionType.Capitals:
case (int)RegionType.Metros:
case (int)RegionType.Oresundsregion:
for(int i=0;i<regionSpecifics.Length;i++)
{
aprice=Prices.GetBaseprice(nrquestions,regiontype);
par=regionSpecifics[i];
countryId=par.Substring(0,par.IndexOf(","));
AddProductItemRow(specification,
appliedKampanj?projectname+" ("+Regions.GetCountrynames(countryId,",")+" *)":projectname+" ("+Regions.GetCountrynames(countryId,",")+")",
nrquestions,
aprice,
(appliedKampanj?nrquestions-1:nrquestions)*aprice);
totalprice+=(appliedKampanj?nrquestions-1:nrquestions)*aprice;
}
break;
case (int)RegionType.SpecificRegions:
for(int j=0;j<regionSpecifics.Length;j++)
{
par=regionSpecifics[j];
countryId=par.Substring(0,par.IndexOf(","));
type=par.Substring(par.IndexOf(",")+1);
aprice=Prices.GetBaseprice(nrquestions,Convert.ToInt32(type));
AddProductItemRow(specification,
appliedKampanj?projectname+" ("+Regions.GetCountrynames(countryId,",")+" *)":projectname+" ("+Regions.GetCountrynames(countryId,",")+" *)",
nrquestions,
aprice,
aprice*(appliedKampanj?nrquestions-1:nrquestions));
totalprice+=aprice*(appliedKampanj?nrquestions-1:nrquestions);
}
break;
}
double _totalprice=totalprice;
if(usingsex)
{
_totalprice=_totalprice+totalprice/2;
specification.AddCell(new Phrase(Globals.RM.GetString("Invoice_SexExtra",Globals.CI),NormalFont));
specification.AddCell("");
specification.AddCell("");
specification.AddCell(new Phrase(Convert.ToString(totalprice/2)+" "+Globals.RM.GetString("Invoice_Currency",Globals.CI)+"(50%)",NormalFont));
}
if(usingage)
{
_totalprice=_totalprice+totalprice/2;
specification.AddCell(new Phrase(Globals.RM.GetString("Invoice_AgeExtra",Globals.CI),NormalFont));
specification.AddCell("");
specification.AddCell("");
specification.AddCell(new Phrase(Convert.ToString(totalprice/2)+" "+Globals.RM.GetString("Invoice_Currency",Globals.CI)+"(50%)",NormalFont));
}
if(isSnabbLeverans)
{
_totalprice=_totalprice+totalprice;
specification.AddCell(new Phrase(Globals.RM.GetString("Invoice_FastDelivery",Globals.CI),NormalFont));
specification.AddCell("");
specification.AddCell("");
specification.AddCell(new Phrase(Convert.ToString(totalprice)+" "+Globals.RM.GetString("Invoice_Currency",Globals.CI)+"(100%)",NormalFont));
}
specification.AddCell("");
specification.AddCell("");
specification.AddCell(new Phrase(Globals.RM.GetString("Faktura_Sum",Globals.CI),BoldFont));
specification.AddCell(new Phrase(Convert.ToString(_totalprice)+" "+Globals.RM.GetString("Invoice_Currency",Globals.CI),NormalFont));
specification.DefaultCell.Colspan=4;
//specification.DefaultCell.FixedHeight=10;
specification.AddCell("");
specification.AddCell("");
specification.AddCell("");
specification.AddCell(new Phrase("* Vid kampanj är en fråga gratis.",NormalFont));
specification.AddCell("");
specification.AddCell("");
specification.AddCell("");
specification.AddCell("");
specification.AddCell("");
specification.AddCell("");
specification.AddCell("");
specification.AddCell("");
specification.AddCell("");
specification.AddCell("");
specification.AddCell(Line);
specification.DefaultCell.Colspan=1;
specification.AddCell("");
specification.AddCell("");
specification.AddCell(new Phrase(Globals.RM.GetString("Faktura_Tax",Globals.CI),BoldFont));
specification.AddCell(new Phrase(Convert.ToString(_totalprice/4)+" "+Globals.RM.GetString("Invoice_Currency",Globals.CI),NormalFont));
specification.AddCell("");
specification.AddCell("");
specification.AddCell(new Phrase(Globals.RM.GetString("Faktura_TotalToPay",Globals.CI),BoldFont));
specification.AddCell(new Phrase(Convert.ToString(_totalprice*1.25)+" "+Globals.RM.GetString("Invoice_Currency",Globals.CI),NormalFont));
specification.WriteSelectedRows(0,-1,0,-1,30,500,writer.DirectContent);
}
private static void AddSpecification(
Document document,
PdfWriter writer,
string projectname,
int nrquestions,
int regiontype,
string[] regionSpecifics,
bool usingage,
bool usingsex,
bool isSnabbLeverans)
{
iTextSharp.text.pdf.PdfPTable specification=new iTextSharp.text.pdf.PdfPTable(4);
float[] columnDefinitionSize={200F,80F,120F,100F};
specification.SetTotalWidth(columnDefinitionSize);
specification.HorizontalAlignment=0;
specification.LockedWidth=true;
specification.DefaultCell.BorderColor=iTextSharp.text.Color.WHITE;
specification.AddCell(new Phrase(Globals.RM.GetString("Faktura_Description",Globals.CI),BoldFont));
specification.AddCell(new Phrase(Globals.RM.GetString("Faktura_Unit",Globals.CI),BoldFont));
specification.AddCell(new Phrase(Globals.RM.GetString("Faktura_UnitPrice",Globals.CI),BoldFont));
specification.AddCell(new Phrase(Globals.RM.GetString("Faktura_Amount",Globals.CI),BoldFont));
specification.DefaultCell.Colspan=4;
specification.AddCell(Line);
specification.DefaultCell.Colspan=1;
int aprice=0;
double totalprice=0;
string par=string.Empty;
string countryId=string.Empty;
string type=string.Empty;
switch(regiontype)
{
case (int)RegionType.AllTheCountry:
case (int)RegionType.CountryPart:
case (int)RegionType.Province:
aprice=Prices.GetBaseprice(nrquestions,regiontype);
AddProductItemRow(specification,
projectname,
nrquestions,
aprice,
nrquestions*aprice);
totalprice=nrquestions*aprice;
break;
case (int)RegionType.Capitals:
case (int)RegionType.Metros:
case (int)RegionType.Oresundsregion:
for(int i=0;i<regionSpecifics.Length;i++)
{
aprice=Prices.GetBaseprice(nrquestions,regiontype);
par=regionSpecifics[i];
countryId=par.Substring(0,par.IndexOf(","));
AddProductItemRow(specification,
projectname+" ("+Regions.GetCountrynames(countryId,"")+")",
nrquestions,
aprice,
nrquestions*aprice);
totalprice+=nrquestions*aprice;
}
break;
case (int)RegionType.SpecificRegions:
for(int j=0;j<regionSpecifics.Length;j++)
{
par=regionSpecifics[j];
countryId=par.Substring(0,par.IndexOf(","));
type=par.Substring(par.IndexOf(",")+1);
aprice=Prices.GetBaseprice(nrquestions,Convert.ToInt32(type));
AddProductItemRow(specification,
projectname+" ("+Regions.GetCountrynames(countryId,"")+")",
nrquestions,
aprice,
aprice*nrquestions);
totalprice+=aprice*nrquestions;
}
break;
}
double _totalprice=totalprice;
if(usingsex)
{
_totalprice=_totalprice+totalprice/2;
specification.AddCell(new Phrase(Globals.RM.GetString("Invoice_SexExtra",Globals.CI),NormalFont));
specification.AddCell("");
specification.AddCell("");
specification.AddCell(new Phrase(Convert.ToString(totalprice/2)+" "+Globals.RM.GetString("Invoice_Currency",Globals.CI)+"(50%)",NormalFont));
}
if(usingage)
{
_totalprice=_totalprice+totalprice/2;
specification.AddCell(new Phrase(Globals.RM.GetString("Invoice_AgeExtra",Globals.CI),NormalFont));
specification.AddCell("");
specification.AddCell("");
specification.AddCell(new Phrase(Convert.ToString(totalprice/2)+" "+Globals.RM.GetString("Invoice_Currency",Globals.CI)+"(50%)",NormalFont));
}
if(isSnabbLeverans)
{
_totalprice=_totalprice+totalprice;
specification.AddCell(new Phrase(Globals.RM.GetString("Invoice_FastDelivery",Globals.CI),NormalFont));
specification.AddCell("");
specification.AddCell("");
specification.AddCell(new Phrase(Convert.ToString(totalprice)+" "+Globals.RM.GetString("Invoice_Currency",Globals.CI)+"(100%)",NormalFont));
}
specification.AddCell("");
specification.AddCell("");
specification.AddCell(new Phrase(Globals.RM.GetString("Faktura_Sum",Globals.CI),BoldFont));
specification.AddCell(new Phrase(Convert.ToString(_totalprice)+" "+Globals.RM.GetString("Invoice_Currency",Globals.CI),NormalFont));
specification.DefaultCell.Colspan=4;
//specification.DefaultCell.FixedHeight=10;
specification.AddCell("");
specification.AddCell("");
specification.AddCell("");
specification.AddCell("");
specification.AddCell("");
specification.AddCell("");
specification.AddCell("");
specification.AddCell("");
specification.AddCell("");
specification.AddCell("");
specification.AddCell("");
specification.AddCell("");
specification.AddCell("");
specification.AddCell(Line);
specification.DefaultCell.Colspan=1;
specification.AddCell("");
specification.AddCell("");
specification.AddCell(new Phrase(Globals.RM.GetString("Faktura_Tax",Globals.CI),BoldFont));
specification.AddCell(new Phrase(Convert.ToString(_totalprice/4)+" "+Globals.RM.GetString("Invoice_Currency",Globals.CI),NormalFont));
specification.AddCell("");
specification.AddCell("");
specification.AddCell(new Phrase(Globals.RM.GetString("Faktura_TotalToPay",Globals.CI),BoldFont));
specification.AddCell(new Phrase(Convert.ToString(_totalprice*1.25)+" "+Globals.RM.GetString("Invoice_Currency",Globals.CI),NormalFont));
specification.WriteSelectedRows(0,-1,0,-1,30,500,writer.DirectContent);
}
private static void AddCustomerAddress(Document document,PdfWriter writer,
string companyname,string username,string companyaddress,string postalcode,string postalort,string country)
{
iTextSharp.text.pdf.PdfPTable address=new iTextSharp.text.pdf.PdfPTable(1);
float[] columnDefinitionSize={260F};
address.SetTotalWidth(columnDefinitionSize);
address.HorizontalAlignment=0;
address.DefaultCell.BorderColor=iTextSharp.text.Color.WHITE;
address.LockedWidth=true;
address.AddCell(new Phrase(companyname,NormalFont));
address.AddCell(new Phrase("Att: "+username,NormalFont));
address.AddCell(new Phrase(companyaddress,NormalFont));
address.AddCell(new Phrase(postalcode+" "+postalort,NormalFont));
address.AddCell(new Phrase(country,NormalFont));
address.AddCell("");
address.AddCell("");
address.AddCell(new Phrase(DateTime.Now.ToShortDateString(),NormalFont));
address.WriteSelectedRows(0,-1,0,-1,30,735,writer.DirectContent);
}
private static void AddRightHeader(Document
document,PdfWriter writer)
{
iTextSharp.text.pdf.PdfPTable header=new
iTextSharp.text.pdf.PdfPTable(1);
float[] columnDefinitionSize={200F};
//float[] columnDefinitionSize = { 120F, 20F,120F };
//float width=document.PageSize.Width;
//float height=document.PageSize.Height;
//header.HorizontalAlignment=0;
header.DefaultCell.BorderColor=iTextSharp.text.Color.WHITE;
header.DefaultCell.HorizontalAlignment=2;
header.SetTotalWidth(columnDefinitionSize);
header.LockedWidth=true;
header.AddCell(new Phrase("Cint AB",NormalFont));
header.AddCell(new Phrase("Barnhusgatan 16",NormalFont));
header.AddCell(new Phrase("SE 11123 STOCKHOLM",NormalFont));
header.AddCell(new Phrase("SWEDEN",NormalFont));
header.AddCell("");
header.AddCell(new Phrase("Tel: +46-8-545-282 60",NormalFont));
header.AddCell(new Phrase("Fax: +46-8-545 282 70",NormalFont));
header.AddCell(new Phrase(Globals.RM.GetString("Invoice_SupportMail",Globals.CI),NormalFont));
header.AddCell(new Phrase(Globals.RM.GetString("Invoice_Snabbasvar",Globals.CI),NormalFont));
header.WriteSelectedRows(0,-1,0,-1,360,750,writer.DirectContent);
}
private static Font NormalFont
{
get
{
return new Font(Font.TIMES_ROMAN,10);
}
}
private static Font BoldFont
{
get{return new Font(Font.TIMES_ROMAN,10,Font.BOLD);}
}
}
}
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.IO;
using System.Data;
using iTextSharp.text;
using iTextSharp.text.pdf;
namespace snabbasvar.util
{
/// <summary>
/// Summary description for Invoices.
/// </summary>
public class MyInvoices
{
public MyInvoices()
{
//
// TODO: Add constructor logic here
//
}
public static void CreateInvoice(
int projectid)
{
DataView project=BusProjects.ListById(projectid);
int regiontype=Convert.ToInt32(project[0]["regiontype"]);
int minage=Convert.ToInt32(project[0]["minage"]);
int maxage=Convert.ToInt32(project[0]["maxage"]);
int nrquestions=Convert.ToInt32(project[0]["maxquota"]);
string[] regionSpecifics=Convert.ToString(project[0]["regionspecifics"]).Split(new char[]{';'});
string invoicedate=BusProjects.GetInvoicedate(
Convert.ToString(project[0]["startdate"]),
Convert.ToBoolean(project[0]["fastdelivery"]));
string projectname=Convert.ToString(project[0]["BusprojectName"]);
int userid=Convert.ToInt32(project[0]["user_id"]);
bool usingage=Convert.ToBoolean(minage>0 || maxage>0);
bool usingsex=Convert.ToBoolean(Convert.ToInt32(project[0]["sex"])!=-1);
bool isSnabbLeverans=Convert.ToBoolean(project[0]["fastdelivery"]);
DataView user=Accounts.GetUserById(userid);
string companyname=Convert.ToString(user[0]["companyname"]);
string username=Convert.ToString(user[0]["ContactName"]);
string companyaddress=Convert.ToString(user[0]["address"]);
string postalcode=Convert.ToString(user[0]["postalcode"]);
string postalort=Convert.ToString(user[0]["city"]);
string country=Convert.ToString(user[0]["countryname"]);
bool appliedKampanj=Globals.IsKampan && Accounts.User_IsNewOfSnabbasvar(userid,projectid);
Document document=new Document(PageSize.A4,36,72,108,180);
try
{
string filename="../invoices/"+Convert.ToString(projectid*100)+Convert.ToString(projectid)+".pdf";
string file=HttpContext.Current.Server.MapPath(filename);
PdfWriter writer=PdfWriter.GetInstance(document,new FileStream(file,FileMode.Create));
document.Open();
AddLogo(document);
AddRightHeader(document,writer);
AddCustomerAddress(document,
writer,
companyname,
username,
companyaddress,
postalcode,
postalort,
country);
AddReference(document,
writer,
userid,
projectid,
username,
invoicedate);
AddSpecification(document,
writer,
projectname,
nrquestions,
regiontype,
regionSpecifics,
usingage,
usingsex,
isSnabbLeverans,
appliedKampanj);
AddFooter(document,writer);
}
catch(Exception ee)
{
HttpContext.Current.Response.Write(ee.StackTrace);
}
document.Close();
}
private static void AddLogo(Document document)
{
string
_logo=HttpContext.Current.Server.MapPath("../invoices/"+Globals.CI.Name+"_snabbasvar_logga.gif");
iTextSharp.text.Image
logo=iTextSharp.text.Image.GetInstance(_logo);
logo.SetAbsolutePosition(360,750);
document.Add(logo);
}
private static void AddReference(
Document document,
PdfWriter writer,
int userid,
int projectid,
string username,
string invoicedate)
{
iTextSharp.text.pdf.PdfPTable re=new iTextSharp.text.pdf.PdfPTable(1);
re.SetTotalWidth(new float[]{530});
re.LockedWidth=true;
re.HorizontalAlignment=0;
re.DefaultCell.BorderColor=iTextSharp.text.Color.BLACK;
iTextSharp.text.pdf.PdfPTable reference=new iTextSharp.text.pdf.PdfPTable(4);
float[] columnDefinitionSize={130F,120F,120F,160F};
reference.SetTotalWidth(columnDefinitionSize);
reference.LockedWidth=true;
reference.HorizontalAlignment=0;
reference.DefaultCell.BorderColor=iTextSharp.text.Color.WHITE;
reference.AddCell(new Phrase(Globals.RM.GetString("Faktura_InvoiceNumber",Globals.CI),BoldFont));
reference.AddCell(new Phrase(Convert.ToString(projectid),NormalFont));
reference.AddCell(new Phrase(Globals.RM.GetString("Faktura_PrintDate",Globals.CI),BoldFont));
reference.AddCell(new Phrase(DateTime.Now.ToShortDateString(),NormalFont));
reference.AddCell(new Phrase(Globals.RM.GetString("Faktura_CustomerNo",Globals.CI),BoldFont));
reference.AddCell(new Phrase(Convert.ToString(userid),NormalFont));
reference.AddCell(new Phrase(Globals.RM.GetString("Faktura_PayDueDate",Globals.CI),BoldFont));
reference.AddCell(new Phrase(Convert.ToDateTime(invoicedate).AddDays(-1).ToShortDateString(),NormalFont));
reference.AddCell(new Phrase(Globals.RM.GetString("Faktura_YourRef",Globals.CI),BoldFont));
reference.AddCell(new Phrase(username,NormalFont));
reference.AddCell(new Phrase(Globals.RM.GetString("Faktura_OurRef",Globals.CI),BoldFont));
reference.AddCell(new Phrase("Bo Mattsson,"+Globals.RM.GetString("Invoice_SupportMail",Globals.CI),NormalFont));
re.AddCell(reference);
re.WriteSelectedRows(0,-1,0,-1,30,620,writer.DirectContent);
}
private static iTextSharp.text.Image Line
{
get
{
string _image=HttpContext.Current.Server.MapPath("../invoices/line.gif");
iTextSharp.text.Image image=iTextSharp.text.Image.GetInstance(_image);
return image;
}
}
private static void AddFooter(Document document,PdfWriter writer)
{
iTextSharp.text.pdf.PdfPTable footer=new iTextSharp.text.pdf.PdfPTable(1);
footer.SetTotalWidth(new float[]{500});
footer.HorizontalAlignment=0;
footer.LockedWidth=true;
footer.DefaultCell.BorderColor=iTextSharp.text.Color.WHITE;
footer.AddCell(Line);
footer.WriteSelectedRows(0,-1,0,-1,30,241,writer.DirectContent);
//float[] columnDefinitionSize={160F,160F,100F,120F};
footer=new iTextSharp.text.pdf.PdfPTable(1);
footer.SetTotalWidth(new float[]{230F});
footer.HorizontalAlignment=0;
footer.LockedWidth=true;
footer.DefaultCell.BorderColor=iTextSharp.text.Color.WHITE;
footer.AddCell(new Phrase(Globals.RM.GetString("Faktura_PleaseToPay",Globals.CI),NormalFont));
footer.AddCell(new Phrase("Cint AB",NormalFont));
footer.AddCell(new Phrase("Bank: Östgotabanken",NormalFont));
footer.AddCell(new Phrase("Bankkonto: 1334 1408 940",NormalFont));
footer.AddCell(new Phrase("Bankgiro: 5528-6520",NormalFont));
footer.AddCell(new Phrase("SWIFT: DABASESX",NormalFont));
footer.AddCell(new Phrase("IBAN: SE23 1200 0000 0133 4140 8940",NormalFont));
footer.AddCell(new Phrase("Momsregistreringsnummer:SE556559876901",NormalFont));
footer.AddCell(new Phrase("Företaget innnehar F-skattesedel",NormalFont));
footer.WriteSelectedRows(0,-1,0,-1,30,240,writer.DirectContent);
}
private static void AddProductItemRow(
iTextSharp.text.pdf.PdfPTable table,
string description,
int nrquestions,
int aprice,
int amount)
{
table.AddCell(new Phrase(description,NormalFont));
table.AddCell(new Phrase(Convert.ToString(nrquestions),NormalFont));
table.AddCell(new Phrase(Convert.ToString(aprice),NormalFont));
table.AddCell(new Phrase(Convert.ToString(amount),NormalFont));
}
private static void AddSpecification(
Document document,
PdfWriter writer,
string projectname,
int nrquestions,
int regiontype,
string[] regionSpecifics,
bool usingage,
bool usingsex,
bool isSnabbLeverans,
bool appliedKampanj)
{
iTextSharp.text.pdf.PdfPTable specification=new iTextSharp.text.pdf.PdfPTable(4);
float[] columnDefinitionSize={200F,80F,120F,100F};
specification.SetTotalWidth(columnDefinitionSize);
specification.HorizontalAlignment=0;
specification.LockedWidth=true;
specification.DefaultCell.BorderColor=iTextSharp.text.Color.WHITE;
specification.AddCell(new Phrase(Globals.RM.GetString("Faktura_Description",Globals.CI),BoldFont));
specification.AddCell(new Phrase(Globals.RM.GetString("Faktura_Unit",Globals.CI),BoldFont));
specification.AddCell(new Phrase(Globals.RM.GetString("Faktura_UnitPrice",Globals.CI),BoldFont));
specification.AddCell(new Phrase(Globals.RM.GetString("Faktura_Amount",Globals.CI),BoldFont));
specification.DefaultCell.Colspan=4;
specification.AddCell(Line);
specification.DefaultCell.Colspan=1;
int aprice=0;
double totalprice=0;
string par=string.Empty;
string countryId=string.Empty;
string type=string.Empty;
switch(regiontype)
{
case (int)RegionType.AllTheCountry:
case (int)RegionType.CountryPart:
case (int)RegionType.Province:
aprice=Prices.GetBaseprice(nrquestions,regiontype);
AddProductItemRow(specification,
appliedKampanj?projectname+"(*)":projectname,
nrquestions,
aprice,
(appliedKampanj?(nrquestions-1):nrquestions)*aprice);
totalprice=(appliedKampanj?nrquestions-1:nrquestions)*aprice;
break;
case (int)RegionType.Capitals:
case (int)RegionType.Metros:
case (int)RegionType.Oresundsregion:
for(int i=0;i<regionSpecifics.Length;i++)
{
aprice=Prices.GetBaseprice(nrquestions,regiontype);
par=regionSpecifics[i];
countryId=par.Substring(0,par.IndexOf(","));
AddProductItemRow(specification,
appliedKampanj?projectname+" ("+Regions.GetCountrynames(countryId,",")+" *)":projectname+" ("+Regions.GetCountrynames(countryId,",")+")",
nrquestions,
aprice,
(appliedKampanj?nrquestions-1:nrquestions)*aprice);
totalprice+=(appliedKampanj?nrquestions-1:nrquestions)*aprice;
}
break;
case (int)RegionType.SpecificRegions:
for(int j=0;j<regionSpecifics.Length;j++)
{
par=regionSpecifics[j];
countryId=par.Substring(0,par.IndexOf(","));
type=par.Substring(par.IndexOf(",")+1);
aprice=Prices.GetBaseprice(nrquestions,Convert.ToInt32(type));
AddProductItemRow(specification,
appliedKampanj?projectname+" ("+Regions.GetCountrynames(countryId,",")+" *)":projectname+" ("+Regions.GetCountrynames(countryId,",")+" *)",
nrquestions,
aprice,
aprice*(appliedKampanj?nrquestions-1:nrquestions));
totalprice+=aprice*(appliedKampanj?nrquestions-1:nrquestions);
}
break;
}
double _totalprice=totalprice;
if(usingsex)
{
_totalprice=_totalprice+totalprice/2;
specification.AddCell(new Phrase(Globals.RM.GetString("Invoice_SexExtra",Globals.CI),NormalFont));
specification.AddCell("");
specification.AddCell("");
specification.AddCell(new Phrase(Convert.ToString(totalprice/2)+" "+Globals.RM.GetString("Invoice_Currency",Globals.CI)+"(50%)",NormalFont));
}
if(usingage)
{
_totalprice=_totalprice+totalprice/2;
specification.AddCell(new Phrase(Globals.RM.GetString("Invoice_AgeExtra",Globals.CI),NormalFont));
specification.AddCell("");
specification.AddCell("");
specification.AddCell(new Phrase(Convert.ToString(totalprice/2)+" "+Globals.RM.GetString("Invoice_Currency",Globals.CI)+"(50%)",NormalFont));
}
if(isSnabbLeverans)
{
_totalprice=_totalprice+totalprice;
specification.AddCell(new Phrase(Globals.RM.GetString("Invoice_FastDelivery",Globals.CI),NormalFont));
specification.AddCell("");
specification.AddCell("");
specification.AddCell(new Phrase(Convert.ToString(totalprice)+" "+Globals.RM.GetString("Invoice_Currency",Globals.CI)+"(100%)",NormalFont));
}
specification.AddCell("");
specification.AddCell("");
specification.AddCell(new Phrase(Globals.RM.GetString("Faktura_Sum",Globals.CI),BoldFont));
specification.AddCell(new Phrase(Convert.ToString(_totalprice)+" "+Globals.RM.GetString("Invoice_Currency",Globals.CI),NormalFont));
specification.DefaultCell.Colspan=4;
//specification.DefaultCell.FixedHeight=10;
specification.AddCell("");
specification.AddCell("");
specification.AddCell("");
specification.AddCell(new Phrase("* Vid kampanj är en fråga gratis.",NormalFont));
specification.AddCell("");
specification.AddCell("");
specification.AddCell("");
specification.AddCell("");
specification.AddCell("");
specification.AddCell("");
specification.AddCell("");
specification.AddCell("");
specification.AddCell("");
specification.AddCell("");
specification.AddCell(Line);
specification.DefaultCell.Colspan=1;
specification.AddCell("");
specification.AddCell("");
specification.AddCell(new Phrase(Globals.RM.GetString("Faktura_Tax",Globals.CI),BoldFont));
specification.AddCell(new Phrase(Convert.ToString(_totalprice/4)+" "+Globals.RM.GetString("Invoice_Currency",Globals.CI),NormalFont));
specification.AddCell("");
specification.AddCell("");
specification.AddCell(new Phrase(Globals.RM.GetString("Faktura_TotalToPay",Globals.CI),BoldFont));
specification.AddCell(new Phrase(Convert.ToString(_totalprice*1.25)+" "+Globals.RM.GetString("Invoice_Currency",Globals.CI),NormalFont));
specification.WriteSelectedRows(0,-1,0,-1,30,500,writer.DirectContent);
}
private static void AddSpecification(
Document document,
PdfWriter writer,
string projectname,
int nrquestions,
int regiontype,
string[] regionSpecifics,
bool usingage,
bool usingsex,
bool isSnabbLeverans)
{
iTextSharp.text.pdf.PdfPTable specification=new iTextSharp.text.pdf.PdfPTable(4);
float[] columnDefinitionSize={200F,80F,120F,100F};
specification.SetTotalWidth(columnDefinitionSize);
specification.HorizontalAlignment=0;
specification.LockedWidth=true;
specification.DefaultCell.BorderColor=iTextSharp.text.Color.WHITE;
specification.AddCell(new Phrase(Globals.RM.GetString("Faktura_Description",Globals.CI),BoldFont));
specification.AddCell(new Phrase(Globals.RM.GetString("Faktura_Unit",Globals.CI),BoldFont));
specification.AddCell(new Phrase(Globals.RM.GetString("Faktura_UnitPrice",Globals.CI),BoldFont));
specification.AddCell(new Phrase(Globals.RM.GetString("Faktura_Amount",Globals.CI),BoldFont));
specification.DefaultCell.Colspan=4;
specification.AddCell(Line);
specification.DefaultCell.Colspan=1;
int aprice=0;
double totalprice=0;
string par=string.Empty;
string countryId=string.Empty;
string type=string.Empty;
switch(regiontype)
{
case (int)RegionType.AllTheCountry:
case (int)RegionType.CountryPart:
case (int)RegionType.Province:
aprice=Prices.GetBaseprice(nrquestions,regiontype);
AddProductItemRow(specification,
projectname,
nrquestions,
aprice,
nrquestions*aprice);
totalprice=nrquestions*aprice;
break;
case (int)RegionType.Capitals:
case (int)RegionType.Metros:
case (int)RegionType.Oresundsregion:
for(int i=0;i<regionSpecifics.Length;i++)
{
aprice=Prices.GetBaseprice(nrquestions,regiontype);
par=regionSpecifics[i];
countryId=par.Substring(0,par.IndexOf(","));
AddProductItemRow(specification,
projectname+" ("+Regions.GetCountrynames(countryId,"")+")",
nrquestions,
aprice,
nrquestions*aprice);
totalprice+=nrquestions*aprice;
}
break;
case (int)RegionType.SpecificRegions:
for(int j=0;j<regionSpecifics.Length;j++)
{
par=regionSpecifics[j];
countryId=par.Substring(0,par.IndexOf(","));
type=par.Substring(par.IndexOf(",")+1);
aprice=Prices.GetBaseprice(nrquestions,Convert.ToInt32(type));
AddProductItemRow(specification,
projectname+" ("+Regions.GetCountrynames(countryId,"")+")",
nrquestions,
aprice,
aprice*nrquestions);
totalprice+=aprice*nrquestions;
}
break;
}
double _totalprice=totalprice;
if(usingsex)
{
_totalprice=_totalprice+totalprice/2;
specification.AddCell(new Phrase(Globals.RM.GetString("Invoice_SexExtra",Globals.CI),NormalFont));
specification.AddCell("");
specification.AddCell("");
specification.AddCell(new Phrase(Convert.ToString(totalprice/2)+" "+Globals.RM.GetString("Invoice_Currency",Globals.CI)+"(50%)",NormalFont));
}
if(usingage)
{
_totalprice=_totalprice+totalprice/2;
specification.AddCell(new Phrase(Globals.RM.GetString("Invoice_AgeExtra",Globals.CI),NormalFont));
specification.AddCell("");
specification.AddCell("");
specification.AddCell(new Phrase(Convert.ToString(totalprice/2)+" "+Globals.RM.GetString("Invoice_Currency",Globals.CI)+"(50%)",NormalFont));
}
if(isSnabbLeverans)
{
_totalprice=_totalprice+totalprice;
specification.AddCell(new Phrase(Globals.RM.GetString("Invoice_FastDelivery",Globals.CI),NormalFont));
specification.AddCell("");
specification.AddCell("");
specification.AddCell(new Phrase(Convert.ToString(totalprice)+" "+Globals.RM.GetString("Invoice_Currency",Globals.CI)+"(100%)",NormalFont));
}
specification.AddCell("");
specification.AddCell("");
specification.AddCell(new Phrase(Globals.RM.GetString("Faktura_Sum",Globals.CI),BoldFont));
specification.AddCell(new Phrase(Convert.ToString(_totalprice)+" "+Globals.RM.GetString("Invoice_Currency",Globals.CI),NormalFont));
specification.DefaultCell.Colspan=4;
//specification.DefaultCell.FixedHeight=10;
specification.AddCell("");
specification.AddCell("");
specification.AddCell("");
specification.AddCell("");
specification.AddCell("");
specification.AddCell("");
specification.AddCell("");
specification.AddCell("");
specification.AddCell("");
specification.AddCell("");
specification.AddCell("");
specification.AddCell("");
specification.AddCell("");
specification.AddCell(Line);
specification.DefaultCell.Colspan=1;
specification.AddCell("");
specification.AddCell("");
specification.AddCell(new Phrase(Globals.RM.GetString("Faktura_Tax",Globals.CI),BoldFont));
specification.AddCell(new Phrase(Convert.ToString(_totalprice/4)+" "+Globals.RM.GetString("Invoice_Currency",Globals.CI),NormalFont));
specification.AddCell("");
specification.AddCell("");
specification.AddCell(new Phrase(Globals.RM.GetString("Faktura_TotalToPay",Globals.CI),BoldFont));
specification.AddCell(new Phrase(Convert.ToString(_totalprice*1.25)+" "+Globals.RM.GetString("Invoice_Currency",Globals.CI),NormalFont));
specification.WriteSelectedRows(0,-1,0,-1,30,500,writer.DirectContent);
}
private static void AddCustomerAddress(Document document,PdfWriter writer,
string companyname,string username,string companyaddress,string postalcode,string postalort,string country)
{
iTextSharp.text.pdf.PdfPTable address=new iTextSharp.text.pdf.PdfPTable(1);
float[] columnDefinitionSize={260F};
address.SetTotalWidth(columnDefinitionSize);
address.HorizontalAlignment=0;
address.DefaultCell.BorderColor=iTextSharp.text.Color.WHITE;
address.LockedWidth=true;
address.AddCell(new Phrase(companyname,NormalFont));
address.AddCell(new Phrase("Att: "+username,NormalFont));
address.AddCell(new Phrase(companyaddress,NormalFont));
address.AddCell(new Phrase(postalcode+" "+postalort,NormalFont));
address.AddCell(new Phrase(country,NormalFont));
address.AddCell("");
address.AddCell("");
address.AddCell(new Phrase(DateTime.Now.ToShortDateString(),NormalFont));
address.WriteSelectedRows(0,-1,0,-1,30,735,writer.DirectContent);
}
private static void AddRightHeader(Document
document,PdfWriter writer)
{
iTextSharp.text.pdf.PdfPTable header=new
iTextSharp.text.pdf.PdfPTable(1);
float[] columnDefinitionSize={200F};
//float[] columnDefinitionSize = { 120F, 20F,120F };
//float width=document.PageSize.Width;
//float height=document.PageSize.Height;
//header.HorizontalAlignment=0;
header.DefaultCell.BorderColor=iTextSharp.text.Color.WHITE;
header.DefaultCell.HorizontalAlignment=2;
header.SetTotalWidth(columnDefinitionSize);
header.LockedWidth=true;
header.AddCell(new Phrase("Cint AB",NormalFont));
header.AddCell(new Phrase("Barnhusgatan 16",NormalFont));
header.AddCell(new Phrase("SE 11123 STOCKHOLM",NormalFont));
header.AddCell(new Phrase("SWEDEN",NormalFont));
header.AddCell("");
header.AddCell(new Phrase("Tel: +46-8-545-282 60",NormalFont));
header.AddCell(new Phrase("Fax: +46-8-545 282 70",NormalFont));
header.AddCell(new Phrase(Globals.RM.GetString("Invoice_SupportMail",Globals.CI),NormalFont));
header.AddCell(new Phrase(Globals.RM.GetString("Invoice_Snabbasvar",Globals.CI),NormalFont));
header.WriteSelectedRows(0,-1,0,-1,360,750,writer.DirectContent);
}
private static Font NormalFont
{
get
{
return new Font(Font.TIMES_ROMAN,10);
}
}
private static Font BoldFont
{
get{return new Font(Font.TIMES_ROMAN,10,Font.BOLD);}
}
}
}
copy from:http://spaces.msn.com/dingliang1974/blog/cns!DBA787C17BA421B1!113.entry