forked from FatturaElettronica/FatturaElettronica.NET
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Fattura.cs
76 lines (65 loc) · 2.69 KB
/
Fattura.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
using System.Collections.Generic;
using FatturaElettronica.Impostazioni;
using FatturaElettronica.Common;
using System.Xml.Serialization;
namespace FatturaElettronica
{
public class Fattura : BaseClassSerializable
{
private readonly FatturaElettronicaHeader.Header _header;
private readonly List<FatturaElettronicaBody.Body> _body;
protected Fattura() {
_header = new FatturaElettronicaHeader.Header();
_body = new List<FatturaElettronicaBody.Body>();
}
public override void WriteXml(System.Xml.XmlWriter w)
{
w.WriteStartElement(RootElement.Prefix, RootElement.LocalName, RootElement.NameSpace);
w.WriteAttributeString("versione", Header.DatiTrasmissione.FormatoTrasmissione);
foreach (var a in RootElement.ExtraAttributes)
{
w.WriteAttributeString(a.Prefix, a.LocalName, a.ns, a.value);
}
base.WriteXml(w);
w.WriteEndElement();
}
public override void ReadXml(System.Xml.XmlReader r) {
r.MoveToContent();
base.ReadXml(r);
}
public static Fattura CreateInstance(Instance formato)
{
var f = new Fattura();
switch (formato)
{
case Instance.PubblicaAmministrazione:
f.Header.DatiTrasmissione.FormatoTrasmissione = FormatoTrasmissione.PubblicaAmministrazione;
break;
case Instance.Privati:
f.Header.DatiTrasmissione.FormatoTrasmissione = FormatoTrasmissione.Privati;
f.Header.DatiTrasmissione.CodiceDestinatario = new string('0', 7);
break;
}
return f;
}
/// IMPORTANT
/// Each data property must be flagged with the Order attribute or it will be ignored.
/// Also, properties must be listed with the precise order in the specification.
/// <summary>
/// Intestazione della comunicazione.
/// </summary>
[DataProperty][XmlElement(ElementName="FatturaElettronicaHeader")]
public FatturaElettronicaHeader.Header Header {
get { return _header; }
}
/// <summary>
/// Lotto di fatture incluse nella comunicazione.
/// </summary>
/// <remarks>Il blocco ha molteciplità 1 nel caso di fattura singola; nel caso di lotto di fatture, si ripete
/// per ogni fattura componente il lotto stesso.</remarks>
[DataProperty][XmlElement(ElementName="FatturaElettronicaBody")]
public List<FatturaElettronicaBody.Body> Body {
get { return _body; }
}
}
}