Esempio n. 1
0
        public void WriteXmlSignedThrowsOnMissingPfxFile()
        {
            var f = Fattura.CreateInstance(Instance.Privati);

            Assert.ThrowsException <FatturaElettronicaSignatureException>(() =>
                                                                          f.WriteXmlSigned("Samples/notreally.pfx", "idsrv3test", "Samples/IT02182030391_32.xml.p7m"));
        }
        static void Main(string[] args)
        {
            var fattura = Fattura.CreateInstance(Instance.Privati);

            // Lettura diretta da XML (senza necessità di uno stream aperto)
            fattura.ReadXml("IT02182030391_32.xml");

            // Firma digitale del file xml con file pfx
            fattura.WriteXmlSigned("idsrv3test.pfx", "idsrv3test", "IT02182030391_32.xml.pm7");

            // Legge file con firma digitale
            fattura.ReadXmlSigned("IT02182030391_31.xml.p7m");

            // Scrive direttamente su XML (senza necessità passare uno stream)
            fattura.WriteXml("Copia di IT02182030391_31.xml");

            // Serializza fattura in JSON.
            var json = fattura.ToJson();

            var copia = Fattura.CreateInstance(Instance.Privati);

            // Deserializza da JSON
            copia.FromJson(json);
            // Le due fatture sono uguali.
            Console.WriteLine($"{fattura.FatturaElettronicaHeader.DatiTrasmissione.CodiceDestinatario}");
            Console.WriteLine($"{copia.FatturaElettronicaHeader.DatiTrasmissione.CodiceDestinatario}");

            GetNextFileName();
        }
Esempio n. 3
0
        private void ImpostaCampiTestata(Fattura fattura)
        {
            _excel.Range("Note1").Value            = fattura.Note1;
            _excel.Range("Note2").Value            = fattura.Note2;
            _excel.Range("TrasportoACura").Value   = fattura.TrasportoACura;
            _excel.Range("Vettore").Value          = fattura.Vettore;
            _excel.Range("AspettoBeni").Value      = fattura.AspettoEsterno;
            _excel.Range("CausaleTrasporto").Value = fattura.CausaleTrasporto;
            _excel.Range("DataOraTrasporto").Value = fattura.DataTrasporto;
            _excel.Range("NColli").Value           = fattura.NumeroColli;
            _excel.Range("PesoKg").Value           = fattura.PesoKg;
            _excel.Range("Porto").Value            = fattura.Porto;
            _excel.Range("Codice").Value           = fattura.Codice;
            _excel.Range("Data").Value             = fattura.Data;
            _excel.Range("Pagamento").Value        = fattura.Pagamento;

            using (var uof = new UnitOfWork())
            {
                int enVal = (int)fattura.TipoDocumento;

                var descr = uof.TipiDocumentoFiscaleRepository.Find(a => a.IDEnum == enVal).Select(a => a.Descrizione).First();
                _excel.Range("TipoDocumento").Value = descr;
            }


            _excel.Range("ClienteRagioneSociale").Value = fattura.ClienteFornitore.RagioneSociale;
            _excel.Range("ClienteIndirizzo").Value      = fattura.ClienteFornitore.Indirizzo.IndirizzoConCivico;
            _excel.Range("ClienteCap").Value            = fattura.ClienteFornitore.Indirizzo.Cap;
            _excel.Range("ClienteCitta").Value          = fattura.ClienteFornitore.Indirizzo.Citta;
            _excel.Range("ClientePIVACF").Value         = "CF - PIVA:" + fattura.ClienteFornitore.PIVA;
            _excel.Range("CodiceCliente").Value         = fattura.ClienteFornitore.ID;
        }
Esempio n. 4
0
        public IFileInformation Convert(IFileInformation Input)
        {
            using (XmlReader _XmlReader = XmlReader.Create(new StringReader(File.ReadAllText(Input.Path.LocalPath)), _XmlReaderSettings))
            {
                _FatturaDocument = new Fattura( );

                _FatturaDocument.ReadXml(_XmlReader);
            }


            Document _PDFDocument = OpenPDFDoc(25.0f, 25.0f, Input);


            _PDFDocument.Add(GeneratePDFHeader(_FatturaDocument.FatturaElettronicaHeader));

            for (int i = 0; i < _FatturaDocument.FatturaElettronicaBody.Count; i++)
            {
                AddInvoiceBodyToPDFPage(_FatturaDocument.FatturaElettronicaBody[i], _PDFDocument, i);
            }

            String _FileName = _XMLPAPDFFileName( );

            _PDFDocument.Add(new Paragraph("\n" + _FileName, _HeaderHelvetica));


            _PDFDocument.Close( );

            return(new FileInformation(new FileFormat(EFileExtension.PDF, EFormat.PDF, "1.4"),
                                       new Uri(Input.Path.LocalPath + ".pdf"),
                                       Input.Directory + "\\" + _FileName.Replace(@"/", "") + ".pdf"));
        }
Esempio n. 5
0
    public static void Main(string[] args)
    {
        var env = new Env <Transaction>();

        Fattura f = new Fattura(env);

        RigaFattura rf1 = new RigaFattura(env);
        RigaFattura rf2 = new RigaFattura(env);
        RigaFattura rf3 = new RigaFattura(env);

        f.Commit();
        rf1.Commit();
        rf2.Commit();
        rf3.Commit();

        f.AggregationRigaFattura.Add(rf1);
        f.AggregationRigaFattura.Add(rf2);
        f.AggregationRigaFattura.Add(rf3);
        f.Commit();

        f.AggregationRigaFattura.Remove(rf2);
        f.Commit();

        f.StampaRighe(1, 3);

        env.FailsafeTransactionalCommit();
    }
Esempio n. 6
0
        public static void WriteHtml(this Fattura fattura, string outPath, string xslPath)
        {
            if (outPath == null)
            {
                throw new ArgumentNullException(nameof(outPath));
            }
            if (xslPath == null)
            {
                throw new ArgumentNullException(nameof(xslPath));
            }

            var tempXml = Path.GetTempFileName();

            using (var w = XmlWriter.Create(tempXml, new XmlWriterSettings {
                Indent = true
            }))
            {
                fattura.WriteXml(w);
            }

            var xt = new XslCompiledTransform();

            xt.Load(xslPath);
            xt.Transform(tempXml, outPath);
        }
Esempio n. 7
0
        public void ReadSignedFile()
        {
            var f = Fattura.CreateInstance(Instance.Privati);

            f.ReadXmlSigned("Samples/IT02182030391_31.xml.p7m");
            Assert.AreEqual("31", f.Header.DatiTrasmissione.ProgressivoInvio);
        }
Esempio n. 8
0
        public void WriteHtmlThrowsOnInvalidArguments()
        {
            var f = new Fattura();

            Assert.ThrowsException <ArgumentNullException>(() => f.WriteHtml(outPath: null, xslPath: "xslPath"));
            Assert.ThrowsException <ArgumentNullException>(() => f.WriteHtml(outPath: "fileName", xslPath: null));
        }
        public static void ReadXmlSigned(this Fattura fattura, Stream stream, bool validateSignature = true)
        {
            CmsSignedData signedFile = new CmsSignedData(stream);

            if (validateSignature)
            {
                IX509Store             certStore   = signedFile.GetCertificates("Collection");
                ICollection            certs       = certStore.GetMatches(new X509CertStoreSelector());
                SignerInformationStore signerStore = signedFile.GetSignerInfos();
                ICollection            signers     = signerStore.GetSigners();

                foreach (object tempCertification in certs)
                {
                    Org.BouncyCastle.X509.X509Certificate certification = tempCertification as Org.BouncyCastle.X509.X509Certificate;

                    foreach (object tempSigner in signers)
                    {
                        SignerInformation signer = tempSigner as SignerInformation;
                        if (!signer.Verify(certification.GetPublicKey()))
                        {
                            throw new FatturaElettronicaSignatureException(Resources.ErrorMessages.SignatureException);
                        }
                    }
                }
            }

            using (var memoryStream = new MemoryStream())
            {
                signedFile.SignedContent.Write(memoryStream);
                fattura.ReadXml(memoryStream);
            }
        }
        public static void WriteXmlSigned(this Fattura fattura, X509Certificate2 cert, string p7mFilePath)
        {
            string res      = string.Empty;
            string tempFile = Path.GetTempFileName();

            if (!p7mFilePath.ToLowerInvariant().EndsWith(".p7m"))
            {
                p7mFilePath += ".p7m";
            }

            try
            {
                fattura.WriteXml(tempFile);

                ContentInfo content   = new ContentInfo(new Oid("1.2.840.113549.1.7.1", "PKCS 7 Data"), File.ReadAllBytes(tempFile));
                SignedCms   signedCms = new SignedCms(SubjectIdentifierType.IssuerAndSerialNumber, content, false);
                CmsSigner   signer    = new CmsSigner(cert);
                signer.IncludeOption   = X509IncludeOption.EndCertOnly;
                signer.DigestAlgorithm = new Oid("2.16.840.1.101.3.4.2.1", "SHA256");
                signer.SignedAttributes.Add(new Pkcs9SigningTime(DateTime.Now));
                try
                {
                    //PKCS7 format
                    signedCms.ComputeSignature(signer, false);
                }
                catch (CryptographicException cex)
                {
                    //To evaluate for the future https://stackoverflow.com/a/52897100

                    /*
                     * // Try re-importing the private key into a better CSP:
                     * using (RSA tmpRsa = RSA.Create())
                     * {
                     *  tmpRsa.ImportParameters(cert.GetRSAPrivateKey().ExportParameters(true));
                     *
                     *  using (X509Certificate2 tmpCertNoKey = new X509Certificate2(cert.RawData))
                     *  using (X509Certificate2 tmpCert = tmpCertNoKey.CopyWithPrivateKey(tmpRsa))
                     *  {
                     *      signer.Certificate = tmpCert;
                     *      signedCms.ComputeSignature(signer, false);
                     *  }
                     * }*/

                    throw cex;
                }
                byte[] signature = signedCms.Encode();
                File.WriteAllBytes(p7mFilePath, signature);
            }
            catch (Exception)
            {
                throw new FatturaElettronicaSignatureException(Resources.ErrorMessages.FirmaException);
            }
            finally
            {
                if (File.Exists(tempFile))
                {
                    File.Delete(tempFile);
                }
            }
        }
Esempio n. 11
0
        public void ReadXMLSignedFallbacksToBase64Attempt()
        {
            var f = Fattura.CreateInstance(Instance.Privati);

            f.ReadXmlSigned("Samples/IT02182030391_31.Base64.xml.p7m");
            Assert.AreEqual("31", f.FatturaElettronicaHeader.DatiTrasmissione.ProgressivoInvio);
        }
        public void ReadXMLStream()
        {
            var f = Fattura.CreateInstance(Instance.Privati);

            f.ReadXml(File.OpenRead("Samples/IT02182030391_32.xml"));
            Assert.AreEqual("32", f.FatturaElettronicaHeader.DatiTrasmissione.ProgressivoInvio);
        }
Esempio n. 13
0
        private Fattura Deserialize(byte[] b)
        {
            var f = Fattura.CreateInstance(Instance.Privati);

            f.ReadXml(b);

            return(f);
        }
Esempio n. 14
0
        private void button1_Click(object sender, EventArgs e)
        {
            var f    = Fattura.CreateInstance(Instance.PubblicaAmministrazione);
            var form = new FatturaElettronicaForm();

            form.FatturaElettronica = f;
            form.ShowDialog();
        }
 public static void ReadXml(this Fattura fattura, string filePath)
 {
     using (var r = XmlReader.Create(filePath, new XmlReaderSettings {
         IgnoreWhitespace = true, IgnoreComments = true
     }))
     {
         fattura.ReadXml(r);
     }
 }
 public static void WriteXml(this Fattura fattura, string filePath)
 {
     using (var w = XmlWriter.Create(filePath, new XmlWriterSettings {
         Indent = true
     }))
     {
         fattura.WriteXml(w);
     }
 }
        private IFileInformation TryGenerateXMLFile(IFileInformation _FileInformation, String Destination, FileConversionUpdate _FileConversionUpdate)
        {
            String FileText = File.ReadAllText(_FileInformation.Path.LocalPath);

            if (!FileText.Contains("FatturaElettronicaHeader") && !FileText.Contains("FatturaElettronicaBody"))
            {
                throw new InvalidOperationException("Unsupported Format" + _FileInformation.Path);
            }


            int    _XMLStartIndex   = FileText.IndexOf(Conventions.HeaderGaurd) - 1;
            int    _XMLEndIndex     = FileText.LastIndexOf(Conventions.BodyGaurd) - _XMLStartIndex + Conventions.BodyGaurd.Length + 1;
            String _RawBoundedData  = FileText.Substring(_XMLStartIndex, _XMLEndIndex);
            String _PossibleXMLData = XML.Conventions.Header + Conventions.Header + CleanInvalidXmlChars(_RawBoundedData) + Conventions.Footer;

            FileInformation _ResultFileInformation = new FileInformation(new FileFormat(EFileExtension.XML, EFormat.Uknown, ""), Destination + "\\" + _FileInformation.FileName + ".xml");

            using (XmlReader _XmlReader = XmlReader.Create(new StringReader(_PossibleXMLData), new XmlReaderSettings {
                IgnoreWhitespace = true, IgnoreComments = true
            }))
            {
                Fattura _Fattura = new Fattura( );

                try
                {
                    _Fattura.ReadXml(_XmlReader);

                    if (_Fattura.Validate( ).IsValid)
                    {
                        using (XmlWriter _XmlWriter = XmlWriter.Create(_ResultFileInformation.Path.LocalPath, new XmlWriterSettings {
                            Indent = true
                        }))
                        {
                            _Fattura.WriteXml(_XmlWriter);
                        }

                        _FileConversionUpdate.AddTransformation(EFileTransformation.ConvertedToCopied, _FileInformation, _ResultFileInformation);
                    }
                    else
                    {
                        throw new ArgumentException("Invalid XMLPA FileContent ");
                    }
                }
                catch (Exception Ex)
                {
                    File.WriteAllText(_ResultFileInformation.Path.LocalPath, _PossibleXMLData);

                    _FileConversionUpdate.AddTransformation(EFileTransformation.ConvertedToCopied,
                                                            _FileInformation,
                                                            _ResultFileInformation,
                                                            new StateEventArgs(ESourceState.Unstable, Ex));
                }
            }


            return(File.Exists(_ResultFileInformation.Path.LocalPath) ? _ResultFileInformation : null);
        }
        public void Set(Fattura fattura)
        {
            if (fattura is FatturaPagata)
            {
                ((FatturaPagata)fattura).DataPagamento = DateTime.Now;
            }

            fattura.Test();
        }
Esempio n. 19
0
        public void ReadXMLSignedStream()
        {
            var f = new Fattura();

            using (var inputStream = new FileStream("Samples/IT02182030391_31.xml.p7m", FileMode.Open, FileAccess.Read))
            {
                f.ReadXmlSigned(inputStream);
            }
            Assert.AreEqual("31", f.FatturaElettronicaHeader.DatiTrasmissione.ProgressivoInvio);
        }
Esempio n. 20
0
        public void Init(Fattura fattura)
        {
            Session session = new Session();

            var nfattura = session.GetObjectByKey <Fattura>(fattura.Oid);

            //this.DataSource = nfattura;

            this.xpCollectionFattura.Criteria = new BinaryOperator("Oid", nfattura.Oid);
        }
 public static void ReadXml(this Fattura fattura, Stream stream)
 {
     stream.Position = 0;
     using (var r = XmlReader.Create(stream, new XmlReaderSettings {
         IgnoreWhitespace = true, IgnoreComments = true
     }))
     {
         fattura.ReadXml(r);
     }
 }
Esempio n. 22
0
        public void ReadXMLSignedBase64ValidateSignatureDisabled()
        {
            // TODO: ideally we'd need a .p7m with an invalid signature in order
            // to properly test this.

            var f = Fattura.CreateInstance(Instance.Privati);

            f.ReadXmlSignedBase64("Samples/IT02182030391_31.Base64.xml.p7m", validateSignature: false);
            Assert.AreEqual("31", f.FatturaElettronicaHeader.DatiTrasmissione.ProgressivoInvio);
        }
Esempio n. 23
0
        private void button1_Click(object sender, EventArgs e)
        {
            var f = Fattura.CreateInstance(Instance.Privati);

            f.FatturaElettronicaHeader.DatiTrasmissione.CodiceDestinatario = "1234567";
            f.FatturaElettronicaHeader.DatiTrasmissione.PECDestinatario    = "pec";
            var form = new FatturaElettronicaForm();

            form.FatturaElettronica = f;
            form.ShowDialog();
        }
Esempio n. 24
0
        public bool IsValidXML(String InputXML)
        {
            using (var r = XmlReader.Create(new StringReader(InputXML), _XmlReaderSettings))
            {
                _FatturaDocument = new Fattura( );

                _FatturaDocument.ReadXml(r);

                return(_FatturaDocument.Validate( ).IsValid);
            }
        }
Esempio n. 25
0
        public void WriteXmlSigned()
        {
            if (File.Exists("Samples/IT02182030391_32.xml.p7m"))
            {
                File.Delete("Samples/IT02182030391_32.xml.p7m");
            }
            var f = Fattura.CreateInstance(Instance.Privati);

            f.WriteXmlSigned("Samples/idsrv3test.pfx", "idsrv3test", "Samples/IT02182030391_32.xml.p7m");
            Assert.IsTrue(File.Exists("Samples/IT02182030391_32.xml.p7m"));
        }
        public void NomeCognomeIsIgnored()
        {
            var f          = Fattura.CreateInstance(Instance.Privati);
            var anagrafica = f.FatturaElettronicaHeader.CedentePrestatore.DatiAnagrafici.Anagrafica;

            anagrafica.Nome = "nome";
            var json = f.FatturaElettronicaHeader.CedentePrestatore.DatiAnagrafici.Anagrafica.ToJson();

            Assert.AreEqual("nome", anagrafica.CognomeNome);
            Assert.IsFalse(json.Contains("CognomeNome"));
        }
        public static void WriteXmlSigned(this Fattura fattura, string pfxFile, string pfxPassword, string p7mFilePath)
        {
            if (!File.Exists(pfxFile))
            {
                throw new FatturaElettronicaSignatureException(Resources.ErrorMessages.PfxIsMissing);
            }

            var cert = new X509Certificate2(pfxFile, pfxPassword);

            WriteXmlSigned(fattura, cert, p7mFilePath);
        }
        public void FromJson()
        {
            var f = Fattura.CreateInstance(Instance.Privati);

            f.ReadXml("Samples/IT02182030391_32.xml");
            Assert.AreEqual("32", f.FatturaElettronicaHeader.DatiTrasmissione.ProgressivoInvio);

            var json      = f.ToJson();
            var challenge = Fattura.CreateInstance(Instance.Privati);

            challenge.FromJson(json);
            Assert.AreEqual("32", challenge.FatturaElettronicaHeader.DatiTrasmissione.ProgressivoInvio);
        }
Esempio n. 29
0
        public void WriteHtml()
        {
            var f       = new Fattura();
            var outFile = Path.GetTempFileName();

            f.ReadXml("Samples/IT02182030391_32.xml");

            f.WriteHtml(outFile, "Samples/fatturaPA_v1.2.1.xsl");

            var bytes = File.ReadAllBytes(outFile);

            Assert.IsTrue(bytes.Length > 2048);
        }
        public void DeserializeAndThenSerializeOfficialPRSample()
        {
            var f = Deserialize("Samples/IT01234567890_FPR02.xml");

            Assert.IsTrue(f.Validate().IsValid);

            var json = f.ToJson();

            var challenge = Fattura.CreateInstance(Instance.Privati);

            challenge.FromJson(new JsonTextReader(new StringReader(json)));
            Assert.IsTrue(challenge.Validate().IsValid);
        }