示例#1
0
        /// <summary>
        /// Constructor clase ARInvoicesBatch.
        /// </summary>
        /// <param name="suministroLRFacturasEmitidas">Objeto de serialización xml para
        /// suministro de facturas emitidas.</param>
        public ARInvoicesBatch(SuministroLRFacturasEmitidas suministroLRFacturasEmitidas)
        {
            ARInvoices = new List <ARInvoice>();

            CommunicationType communicationType;

            if (!Enum.TryParse <CommunicationType>(
                    suministroLRFacturasEmitidas.Cabecera.TipoComunicacion, out communicationType))
            {
                throw new InvalidOperationException($"Unknown comunication type {suministroLRFacturasEmitidas.Cabecera.TipoComunicacion}");
            }

            CommunicationType = communicationType;

            Titular = new Party()
            {
                TaxIdentificationNumber = suministroLRFacturasEmitidas.Cabecera.Titular.NIF,
                PartyName = suministroLRFacturasEmitidas.Cabecera.Titular.NombreRazon
            };

            foreach (var invoice in
                     suministroLRFacturasEmitidas.RegistroLRFacturasEmitidas)
            {
                ARInvoices.Add(new ARInvoice(invoice));
            }
        }
示例#2
0
        static void Main(string[] args)
        {
            string s;

            SuministroLRFacturasEmitidas sumi    = new SuministroLRFacturasEmitidas();
            LRfacturasEmitidasType       lr      = new LRfacturasEmitidasType();
            FacturaExpedidaType          factexp = new FacturaExpedidaType();

            PersonaFisicaJuridicaESType pers = new PersonaFisicaJuridicaESType();

            pers.NIF         = "00000000T";
            pers.NombreRazon = "EMPRESA QUE EMITE FACTURAS";

            CabeceraSii cabe = new CabeceraSii();

            cabe.Titular  = pers;
            sumi.Cabecera = cabe;

            RegistroSiiPeriodoImpositivo perio = new RegistroSiiPeriodoImpositivo();

            perio.Ejercicio      = "2018";
            perio.Periodo        = TipoPeriodoType.Item03;      // Febrero
            lr.PeriodoImpositivo = perio;

            IDFacturaExpedidaTypeIDEmisorFactura emis = new IDFacturaExpedidaTypeIDEmisorFactura();

            emis.NIF = pers.NIF;
            IDFacturaExpedidaType idExp = new IDFacturaExpedidaType();

            idExp.IDEmisorFactura              = emis;
            idExp.NumSerieFacturaEmisor        = "Linda Factura Demo";
            idExp.FechaExpedicionFacturaEmisor = "08-02-2018";
            lr.IDFactura = idExp;

            PersonaFisicaJuridicaType contr = new PersonaFisicaJuridicaType();

            contr.NombreRazon      = "Amazon.co.uk";
            contr.Item             = "N1081152I";
            factexp.Contraparte    = contr;
            factexp.TipoFactura    = ClaveTipoFacturaType.F1;
            factexp.FechaOperacion = idExp.FechaExpedicionFacturaEmisor;
            factexp.ClaveRegimenEspecialOTrascendencia = IdOperacionesTrascendenciaTributariaType.Item01;
            factexp.DescripcionOperacion = "Mi maravillosa descripción";             // <element name="DescripcionOperacion" type="sii:TextMax500Type"/>

            FacturaExpedidaTypeTipoDesglose desgl    = new FacturaExpedidaTypeTipoDesglose();
            TipoConDesgloseType             condesgl = new TipoConDesgloseType();
            TipoSinDesglosePrestacionType   pr       = new TipoSinDesglosePrestacionType();
            SujetaPrestacionType            sj       = new SujetaPrestacionType();
            SujetaPrestacionTypeNoExenta    nx       = new SujetaPrestacionTypeNoExenta();
            DetalleIVAEmitidaPrestacionType dtp;

            dtp = new DetalleIVAEmitidaPrestacionType();
            dtp.BaseImponible    = "667.00";
            dtp.CuotaRepercutida = "66.70";
            dtp.TipoImpositivo   = "10.00";
            nx.DesgloseIVA       = new DetalleIVAEmitidaPrestacionType[1];
            nx.DesgloseIVA.SetValue(dtp, 0);
            nx.TipoNoExenta = TipoOperacionSujetaNoExentaType.S1;
            sj.NoExenta     = nx;
            pr.Sujeta       = sj;
            condesgl.PrestacionServicios = pr;
            desgl.Item           = condesgl;
            factexp.TipoDesglose = desgl;
            factexp.ImporteTotal = "733.70";

            lr.FacturaExpedida = factexp;
            sumi.RegistroLRFacturasEmitidas = new LRfacturasEmitidasType[1];
            sumi.RegistroLRFacturasEmitidas.SetValue(lr, 0);

            // A enviar ...
            RespuestaLRFEmitidasType resp;
            siiSOAPClient            clsSiiService;

            try
            {
                clsSiiService = new siiSOAPClient("SuministroFactEmitidasPruebas");
                X509Certificate2 oCertificado = SeleccionarCertificado("Seleccione certificado", StoreLocation.CurrentUser, StoreName.My);
                clsSiiService.ClientCredentials.ClientCertificate.Certificate = oCertificado;
                clsSiiService.Open();
                if (clsSiiService.State == System.ServiceModel.CommunicationState.Opened)
                {
                    resp = clsSiiService.SuministroLRFacturasEmitidas(sumi);
                }
            }
            catch (ProtocolException ex)
            {
                s = ex.Message;
                Console.Write(s);               // throw ex;
            }
            catch (WebException ex)             //catch (Exception ex)
            {
                var st = new StreamReader(ex.Response.GetResponseStream());
                s = st.ReadToEnd();
                Console.Write(s);                 // throw ex;
            }
            finally
            {
                clsSiiService = null;
            }
        }         // Main
示例#3
0
        public void GenerarXMLEmitidasEnvel(string _NombreFichero)
        {
            EmitidasEnvel funcion        = new EmitidasEnvel();
            string        _NomFicheroWrk = _NombreFichero;

            try
            {
                Envelope _EnvelWrk = new Envelope();
                SuministroLRFacturasEmitidas _SumLRFactEmit = new SuministroLRFacturasEmitidas();
                RegistroLRFacturasEmitidas   _RegLRFactEmit = new RegistroLRFacturasEmitidas();

                Cabecera _Cabecera = new Cabecera();

                using (StreamReader _Lector = new StreamReader(_NomFicheroWrk))
                {
                    while (_Lector.Peek() > -1)
                    {
                        string _RegFichero = _Lector.ReadLine();
                        if (!String.IsNullOrEmpty(_RegFichero))
                        {
                            // Con creamos un Array con los distintos campos que contiene el registro separados por ";"
                            string[] _CamposReg = _RegFichero.Split(';');
                            string   _TipoReg   = _CamposReg[0];

                            switch (_TipoReg)
                            {
                            case "CABE":
                                _Cabecera = funcion.TratarRegCabecera(_CamposReg);
                                _SumLRFactEmit.Cabecera = _Cabecera;
                                break;

                            case "FACT":
                                if (_NuevaFact)     // Si se trata de una nueva factura, añadiremos la 'antigua' al fichero
                                {
                                    _SumLRFactEmit.RegistroLRFacturasEmitidas.Add(_RegLRFactEmit);
                                    _NuevaFact = false;
                                }

                                // Se trata de una factura no Sujeta, de manera que no tendrá registros 'FISC' y se tendrá que añadir a
                                // la lista correspondiente.
                                if (!string.IsNullOrWhiteSpace(_CamposReg[19]) || !string.IsNullOrWhiteSpace(_CamposReg[20]))
                                {
                                    _NuevaFact = true;
                                }

                                _RegLRFactEmit = new RegistroLRFacturasEmitidas();
                                _RegLRFactEmit = funcion.TratarFactEmitida(_CamposReg);
                                break;

                            case "RECT":
                                _RegLRFactEmit = funcion.AgregarFactRectifica(_CamposReg, _RegLRFactEmit);
                                break;

                            case "FISC":
                                _NuevaFact     = true;
                                _RegLRFactEmit = funcion.AgregarDesgloseIVA(_CamposReg, _RegLRFactEmit);
                                break;

                            case "FINI":
                                // Incluimos la última factura que hemos tratado.
                                _SumLRFactEmit.RegistroLRFacturasEmitidas.Add(_RegLRFactEmit);

                                // Incluimos todas las facturas tratadas en el Envelope.
                                _EnvelWrk.Body.SuministroLRFacturasEmitidas = _SumLRFactEmit;

                                //Obtenemos la fecha actual sin la hora y procedemos a crear la ruta/nombre del fichero resultante
                                DateTime _FechaActual  = DateTime.Today;
                                string   nombrefichero = "SII_Emitidas_" + _Cabecera.Titular.NIF + "_" + _FechaActual.ToString("yyyyMMdd") + ".XML";
                                string   XmlResult     = "C:/Temp/" + nombrefichero;

                                // Con la siguiente instruccion se genera el XML en la direccion anteriormente indicada.
                                XmlDocument tmpXML = SIIParser.GetXml(_EnvelWrk, XmlResult);

                                string _msg = "Fichero XML generado: " + XmlResult;
                                MessageBox.Show(_msg, "Información", MessageBoxButtons.OK, MessageBoxIcon.Information);
                                break;

                            default:
                                string _msgAviso = "Tipo Registro incorrecto: " + _TipoReg;
                                MessageBox.Show(_msgAviso, "Aviso", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                                break;
                            }
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                string _msgError = "Error: " + ex.Message;
                MessageBox.Show(_msgError, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }