Example #1
0
        private void mnLoad_Click(object sender, EventArgs e)
        {

            dlgOpen.ShowDialog();

            if (string.IsNullOrEmpty(dlgOpen.FileName))
                return;

            string FullPath = dlgOpen.FileName;

            Envelope envelope = new Envelope(FullPath);
  

            if (envelope.Body.SuministroLRFacturasEmitidas == null)
            {
                MessageBox.Show("No es un lote de facturas emitidas.");
                return;
            }
            
            _LoteDeFacturasEmitidas = new ARInvoicesBatch(envelope.Body.SuministroLRFacturasEmitidas);

            _Emisor = _Titular = _LoteDeFacturasEmitidas.Titular;

            BindViewEmisor();
            BindViewFactura();
            BindViewInvoices();

        }
Example #2
0
        /// <summary>
        /// Ejemplo de envío de un lote de facturas emitidas
        /// </summary>
        public void EnviarLoteFacturasEmitidas()
        {
            // Creamos un lote de factura recibidas
            ARInvoicesBatch LoteDeFacturasEmitidas =
                CreaLoteDeFacturasEmitidas();

            // Creo el sobre SOAP con el objeto XML a enviar a la AEAT
            Envelope envelope = LoteDeFacturasEmitidas.GetEnvelope();

            // Edito directamente el objeto XML
            FacturaExpedida facturaExpedida = envelope.Body.SuministroLRFacturasEmitidas.RegistroLRFacturasEmitidas[0].FacturaExpedida;

            facturaExpedida.Contraparte.IDOtro = new IDOtro
            {
                IDType     = "06",
                CodigoPais = "US",
                ID         = "NIF_EXTRANJERO"
            };


            // Realizamos el envío del SOBRE a la AEAT
            Wsd.Send(envelope);



            // Muestro el xml de respuesta recibido de la AEAT en el web browser
            webBrw.Navigate(Settings.Current.InboxPath +
                            LoteDeFacturasEmitidas.GetReceivedFileName());
        }
Example #3
0
        /// <summary>
        /// Crea un lote de facturas emitidas para su envío al SII
        /// de la aeat.
        /// </summary>
        /// <returns></returns>
        private static ARInvoicesBatch CreaLoteDeFacturasEmitidas()
        {
            // Creamos al titular del envío
            Party titular = new Party()
            {
                TaxIdentificationNumber =
                    "B12959755",
                PartyName = "IRENE SOLUTIONS SL"
            };


            ARInvoicesBatch LoteDeFacturasEmitidas = new ARInvoicesBatch
            {
                Titular           = titular,
                CommunicationType = CommunicationType.A0 // alta facturas:
            };
            // utilizando el tipo de comunicación podemos modificar datos de facturas envíadas
            // anteriormente. En lugar de alta de facturas, podemos elegir modificación.

            // El titular del envío también es el emisor de las facturas
            Party emisor = titular;

            // Creo las facturas y las anexo al lote

            ARInvoice facturaEnviadaPrimera = new ARInvoice
            {
                IssueDate   = new DateTime(2017, 1, 15), // Fecha factura
                SellerParty = emisor,                    // El emisor de la factura

                BuyerParty = new Party()                 // El cliente
                {
                    //TaxIdentificationNumber =
                    //"NIF_EXTRANJERO",
                    PartyName = "MAC ORGANIZACION SL"
                },


                InvoiceNumber = "E00001",       // El número de factura
                InvoiceType   = InvoiceType.F1, // Factura normal
                ClaveRegimenEspecialOTrascendencia =
                    ClaveRegimenEspecialOTrascendencia.RegimenComun,
                GrossAmount = 231m,                             // Importe bruto
                InvoiceText = "Servicios consultoria"           // Descripción
            };                                                  // Primera factura

            facturaEnviadaPrimera.AddTaxOtuput(21m, 100m, 21m); // Añadimos las líneas de IVA
            facturaEnviadaPrimera.AddTaxOtuput(10m, 100m, 10m);

            LoteDeFacturasEmitidas.ARInvoices.Add(facturaEnviadaPrimera); // Añadimos la primera factura al lote



            return(LoteDeFacturasEmitidas);
        }
Example #4
0
        /// <summary>
        /// Ejemplo de envío de un asiento resumen de facturas simplificadas
        /// </summary>
        public void EnviarAsientoResumenFacturasSimplificadas()
        {
            // Creamos un lote de factura recibidas
            ARInvoicesBatch asientoResumentFacturasSimplificadas =
                CreaAsientoResumenFacturasSimplificadas();

            // Realizamos el envío del lote a la AEAT
            Wsd.SendFacturasEmitidas(asientoResumentFacturasSimplificadas);

            // Muestro el xml de respuesta recibido de la AEAT en el web browser
            webBrw.Navigate(Settings.Current.InboxPath +
                            asientoResumentFacturasSimplificadas.GetReceivedFileName());
        }
Example #5
0
        /// <summary>
        /// Crea un asiento resumen de facturas simplificadas para su envío al SII
        /// de la aeat.
        /// </summary>
        /// <returns></returns>
        private static ARInvoicesBatch CreaAsientoResumenFacturasSimplificadas()
        {
            // Creamos al titular del envío
            Party titular = new Party()
            {
                TaxIdentificationNumber =
                    "B12959755",
                PartyName = "IRENE SOLUTIONS SL"
            };


            ARInvoicesBatch asientoResumenFacturasSimplificadas = new ARInvoicesBatch
            {
                Titular           = titular,
                CommunicationType = CommunicationType.A0 // alta facturas:
            };
            // utilizando el tipo de comunicación podemos modificar datos de facturas envíadas
            // anteriormente. En lugar de alta de facturas, podemos elegir modificación.

            // El titular del envío también es el emisor de las facturas
            Party emisor = titular;

            // Creo la factura 'asiento resumen' y las anexo al lote

            ARInvoice facturaAsientoResumentFacturasSimplificadas = new ARInvoice
            {
                IssueDate   = new DateTime(2017, 1, 15), // Fecha factura
                SellerParty = emisor,                    // El emisor de la factura
                BuyerParty  = new Party()                // El cliente
                {
                    TaxIdentificationNumber =
                        "B12756474",
                    PartyName = "MAC ORGANIZACION SL"
                },
                InvoiceNumber         = "D00100",       // El número de factura de la primera factura simplificada
                InvoiceNumberLastItem = "D00199",       // El número de la última factura simplificada
                InvoiceType           = InvoiceType.F4, // Asiento resumen
                ClaveRegimenEspecialOTrascendencia =
                    ClaveRegimenEspecialOTrascendencia.RegimenComun,
                InvoiceText = "Factura"                                                                      // Descripción
            };                                                                                               // Factura asiento resumen

            facturaAsientoResumentFacturasSimplificadas.AddTaxOtuput(21m, 100m, 21m);                        // Añadimos las líneas resumen de IVA

            asientoResumenFacturasSimplificadas.ARInvoices.Add(facturaAsientoResumentFacturasSimplificadas); // Añadimos la factura de asiento resumen
            // sólo se permite una factura de este tipo en un lote de facturas a enviar.
            // si en el lote se incluyen más facturas saltará una excepción

            return(asientoResumenFacturasSimplificadas);
        }
Example #6
0
        /// <summary>
        /// Inicia entorno.
        /// </summary>
        private void Inizialize()
        {
            _LoteDeFacturasEmitidas = new ARInvoicesBatch
            {
                CommunicationType = CommunicationType.A0 // alta facturas:
            };

            _Titular = new Party();
            _Emisor = _Titular;

            _LoteDeFacturasEmitidas.Titular = _Titular;

            ResetFactura();     

            BindModelEmisor();

        }
Example #7
0
        /// <summary>
        /// Crea un lote de facturas emitidas para su envío al SII
        /// de la aeat.
        /// </summary>
        /// <returns></returns>
        private static ARInvoicesBatch CreaLoteDeFacturasEmitidas()
        {
            // Creamos un lote de facturas recibidas
            ARInvoicesBatch LoteDeFacturasEmitidas = new ARInvoicesBatch();

            // Creamos el titular del envío
            Party titular = new Party()
            {
                TaxIdentificationNumber =
                    "B12959755",
                PartyName = "IRENE SOLUTIONS SL"
            };

            LoteDeFacturasEmitidas.Titular           = titular;
            LoteDeFacturasEmitidas.CommunicationType = CommunicationType.A0; // alta facturas:
            // utilizando el tipo de comunicación podemos modificar datos de facturas envíadas
            // anteriormente. En lugar de alta de facturas, podemos elegir modificación.



            // Creo las facturas y las anexo al lote


            // Ejemplo de factura con cliente extranjero con NIF no español
            // en este caso el programa serializa Party en Contraparte.IDOtro
            // hay que establecer la propieda CountryCode ( si no lanza una excepción)
            // y por defecto asigna el tipo de documento otro '06' (se puede cambiar
            // mediante la propiedad IDOtroType de la factura.
            // Cuando el nif comienza por 'N', no residente o no es español, en lugar
            // de informarse el tipo DesgloseFactura se informara el tipo TipoDesglose.
            // En TipoDesglose si la propiedad IsService de la factura es true, se
            // serializa el detalle como prestación de servicios, en caso contrario como
            // entrega de bienes

            //  Consideramos que el titular del envío también es el emisor de las facturas
            Party emisor = titular;

            ARInvoice facturaEnviadaPrimera = new ARInvoice
            {
                IssueDate   = new DateTime(2017, 1, 15), // Fecha factura
                SellerParty = emisor,                    // El emisor de la factura


                CountryCode = "DK",


                BuyerParty = new Party() // El cliente
                {
                    TaxIdentificationNumber =
                        "DK12345678",
                    PartyName = "CLIENTE EXTRANJERO LTD"
                },
                InvoiceNumber = "E00027",       // El número de factura
                InvoiceType   = InvoiceType.F1, // Factura normal
                ClaveRegimenEspecialOTrascendencia =
                    ClaveRegimenEspecialOTrascendencia.RegimenComun,
                GrossAmount = 231m,                             // Importe bruto
                InvoiceText = "Servicios consultoria"           // Descripción
            };                                                  // Primera factura (Ejemplo un poco raro: Sujeta con NIF extranjero)

            facturaEnviadaPrimera.AddTaxOtuput(21m, 100m, 21m); // Añadimos las líneas de IVA
            facturaEnviadaPrimera.AddTaxOtuput(10m, 100m, 10m);

            LoteDeFacturasEmitidas.ARInvoices.Add(facturaEnviadaPrimera); // Añadimos la primera factura al lote

            ARInvoice facturaEnviadaSegunda = new ARInvoice
            {
                IssueDate   = new DateTime(2017, 1, 15), // Fecha factura
                SellerParty = emisor,                    // Emisor factura
                BuyerParty  = new Party()                // Cliente
                {
                    TaxIdentificationNumber =
                        "B12756474",
                    PartyName = "MAC ORGANIZACION SL"
                },
                InvoiceNumber = "E00028",                            // Número de factura
                InvoiceType   = InvoiceType.F1,                      // Factura normal
                ClaveRegimenEspecialOTrascendencia =
                    ClaveRegimenEspecialOTrascendencia.RegimenComun, // Regimen común
                GrossAmount = 55m,                                   // Importe bruto
                InvoiceText = "Licencia software"                    // Descripción
            };                                                       // Segunda factura (factura exenta)

            // SI NO AÑADIMOS LÍNEAS DE IVA COGE EL IMPORTE BRUTO COMO BASE EXENTA

            LoteDeFacturasEmitidas.ARInvoices.Add(facturaEnviadaSegunda); // Añadimos la segunda factura al lote

            ARInvoice facturaEnviadaRectificativa = new ARInvoice
            {
                IssueDate   = new DateTime(2017, 1, 15), // Fecha factura
                SellerParty = emisor,                    // Emisor factura
                BuyerParty  = new Party()                // Cliente
                {
                    TaxIdentificationNumber =
                        "B12756474",
                    PartyName = "MAC ORGANIZACION SL"
                },
                InvoiceNumber = "E00029",                            // Número de factura
                InvoiceType   = InvoiceType.R2,                      // Factura rectificativa
                ClaveRegimenEspecialOTrascendencia =
                    ClaveRegimenEspecialOTrascendencia.RegimenComun, // Regimen común
                GrossAmount = -231m,                                 // Importe bruto
                InvoiceText = "Servicios consultoria"                // Descripción
            };                                                       // Tercera factura (factura rectificativa)

            // Para las rectificaciones
            facturaEnviadaRectificativa.InvoicesRectified[0].RectifiedInvoiceNumber = "00000000022";
            facturaEnviadaRectificativa.InvoicesRectified[0].RectifiedIssueDate     = new DateTime(2017, 1, 5); // Fecha factura rectificada


            facturaEnviadaRectificativa.AddTaxOtuput(21m, -100m, -21m); // Añadimos las líneas de IVA
            facturaEnviadaRectificativa.AddTaxOtuput(10m, -100m, -10m);



            LoteDeFacturasEmitidas.ARInvoices.Add(facturaEnviadaRectificativa); // Añadimos la segunda factura al lote


            return(LoteDeFacturasEmitidas);
        }