private void TxClienteTaxIdentificationNumber_Validating(object sender, System.ComponentModel.CancelEventArgs e) { if (!string.IsNullOrEmpty(txClienteTaxIdentificationNumber.Text)) { // Bandera que indica si el NIF es o no es español bool IsNotNifES = false; TaxIdEs taxIdEs = null; try { taxIdEs = new TaxIdEs(txClienteTaxIdentificationNumber.Text); } catch { IsNotNifES = true; } if (taxIdEs != null) { IsNotNifES = !taxIdEs.IsDCOK; } if (IsNotNifES) { lblNifInf.Text = "Id. fiscal no español."; string country = General.GetCountry(); if (string.IsNullOrEmpty(country)) { string _msg = "Introducción de NIF cancelada. Para NIF no españoles debe seleccionar un país."; MessageBox.Show(_msg, "Información", MessageBoxButtons.OK, MessageBoxIcon.Information); txClienteTaxIdentificationNumber.Text = ""; lblNifInf.Text = ""; txCountry.Visible = false; } else { txCountry.Visible = true; txCountry.Text = country; } } else { txCountry.Visible = false; txCountry.Text = ""; lblNifInf.Text = ""; } } else { lblNifInf.Text = ""; txCountry.Visible = false; } }
private void TxNifBusqueda_Validating(object sender, System.ComponentModel.CancelEventArgs e) { if (!string.IsNullOrEmpty(txNifBusqueda.Text)) { bool IsNotNifES = false; TaxIdEs taxIdEs = null; try { taxIdEs = new TaxIdEs(txNifBusqueda.Text); } catch { IsNotNifES = true; } if (taxIdEs != null) { IsNotNifES = !taxIdEs.IsDCOK; } if (IsNotNifES) { string country = General.GetCountry(); if (string.IsNullOrEmpty(country)) { string _msg = "Introducción de NIF cancelada. Para NIF no españoles debe seleccionar un país."; MessageBox.Show(_msg, "Información", MessageBoxButtons.OK, MessageBoxIcon.Information); txNifBusqueda.Text = ""; } else { lbCountry.Text = country; } } else { lbCountry.Text = ""; } } }
/// <summary> /// Crea un filtro de cobros relacionados con la factura /// utilizando como filtro los datos de la misma. /// </summary> /// <returns>Objeto XML de filtro para consulta de de factura.</returns> internal FiltroConsultaCobrosPagos ToFilterPagosSII() { FiltroConsultaCobrosPagos siiFilter = new FiltroConsultaCobrosPagos(); if (SellerParty == null) { throw new ArgumentNullException("SellerParty is null."); } if (InvoiceNumber == null) { throw new ArgumentNullException("InvoiceNumber is null."); } TaxIdEs taxIdEs = null; bool IsNotNifES = false; try { taxIdEs = new TaxIdEs(SellerParty.TaxIdentificationNumber); } catch { IsNotNifES = true; } if (taxIdEs != null) { IsNotNifES = !taxIdEs.IsDCOK; } if (SellerParty != null) { siiFilter.IDFactura = new IDFactura(); siiFilter.IDFactura.IDEmisorFactura.NombreRazon = SellerParty.PartyName; if (IsNotNifES) { if (CountryCode == null) { throw new ArgumentNullException( "For foreign tax identificator number Country Code can't be null"); } siiFilter.IDFactura.IDEmisorFactura.IDOtro = new IDOtro(); siiFilter.IDFactura.IDEmisorFactura.IDOtro.IDType = ((int)IDOtroType).ToString().PadLeft(2, '0'); siiFilter.IDFactura.IDEmisorFactura.IDOtro.CodigoPais = CountryCode; siiFilter.IDFactura.IDEmisorFactura.IDOtro.ID = SellerParty.TaxIdentificationNumber; } else { siiFilter.IDFactura.IDEmisorFactura.NIF = SellerParty.TaxIdentificationNumber; } if (InvoiceNumber != null) { siiFilter.IDFactura.NumSerieFacturaEmisor = InvoiceNumber; } if (IssueDate != null) { siiFilter.IDFactura.FechaExpedicionFacturaEmisor = (IssueDate ?? new DateTime(1, 1, 1)).ToString("dd-MM-yyyy"); } } return(siiFilter); }
/// <summary> /// Devuelve el registro de cobros relacionados con la factura /// en un objeto XML. /// </summary> /// <returns>Objeto XML de registro de cobros relacionados con la factura.</returns> internal RegistroLRPagos ToPaymentsSII() { RegistroLRPagos registroLRPagos = new RegistroLRPagos(); registroLRPagos.IDFactura.NumSerieFacturaEmisor = InvoiceNumber; registroLRPagos.IDFactura.FechaExpedicionFacturaEmisor = SIIParser.FromDate(IssueDate); TaxIdEs taxIdEs = null; bool IsNotNifES = false; try { taxIdEs = new TaxIdEs(SellerParty.TaxIdentificationNumber); } catch { IsNotNifES = true; } if (taxIdEs != null) { IsNotNifES = !taxIdEs.IsDCOK; } if (SellerParty != null) { registroLRPagos.IDFactura.IDEmisorFactura.NombreRazon = SellerParty.PartyName; if (IsNotNifES) { if (CountryCode == null) { throw new ArgumentNullException( "For foreign tax identificator number Country Code can't be null"); } registroLRPagos.IDFactura.IDEmisorFactura.IDOtro = new IDOtro(); registroLRPagos.IDFactura.IDEmisorFactura.IDOtro.IDType = ((int)IDOtroType).ToString().PadLeft(2, '0'); registroLRPagos.IDFactura.IDEmisorFactura.IDOtro.CodigoPais = CountryCode; registroLRPagos.IDFactura.IDEmisorFactura.IDOtro.ID = SellerParty.TaxIdentificationNumber; } else { registroLRPagos.IDFactura.IDEmisorFactura.NIF = SellerParty.TaxIdentificationNumber; } } foreach (var payment in APInvoicePayments) { if (payment.PaymentDate == null) { throw new ArgumentNullException("PaymentDate is null."); } Cobro cobro = new Cobro() { Fecha = (payment.PaymentDate ?? new DateTime(1, 1, 1)).ToString("dd-MM-yyyy"), Medio = ((int)payment.PaymentTerm).ToString().PadLeft(2, '0'), Importe = SIIParser.FromDecimal(payment.PaymentAmount), Cuenta_O_Medio = payment.AccountOrTermsText }; registroLRPagos.Pagos.Add(cobro); } return(registroLRPagos); }
internal FiltroConsulta ToFilterSII() { FiltroConsulta siiFilter = new FiltroConsulta(); if (IssueDate == null) { throw new ArgumentNullException("IssueDate is null."); } if (Settings.Current.IDVersionSii.CompareTo("1.1") < 0) { siiFilter.PeriodoImpositivo.Ejercicio = (IssueDate ?? new DateTime(1, 1, 1)).ToString("yyyy"); siiFilter.PeriodoImpositivo.Periodo = (IssueDate ?? new DateTime(1, 1, 1)).ToString("MM"); } else { siiFilter.PeriodoLiquidacion.Ejercicio = (IssueDate ?? new DateTime(1, 1, 1)).ToString("yyyy"); siiFilter.PeriodoLiquidacion.Periodo = (IssueDate ?? new DateTime(1, 1, 1)).ToString("MM"); } TaxIdEs taxIdEs = null; bool IsNotNifES = false; try { taxIdEs = new TaxIdEs(SellerParty.TaxIdentificationNumber); } catch { IsNotNifES = true; } if (taxIdEs != null) { IsNotNifES = !taxIdEs.IsDCOK; } siiFilter.ClavePaginacion = new ClavePaginacion(); siiFilter.IDFactura = new IDFactura(); if (SellerParty != null) { if (IsFiltroClavePag == true) { siiFilter.ClavePaginacion.IDEmisorFactura.NombreRazon = SellerParty.PartyName; } else { siiFilter.IDFactura.IDEmisorFactura.NombreRazon = SellerParty.PartyName; } if (IsNotNifES) { if (CountryCode == null) { throw new ArgumentNullException( "For foreign tax identificator number Country Code can't be null"); } if (IsFiltroClavePag == true) { siiFilter.ClavePaginacion.IDEmisorFactura.IDOtro = new IDOtro(); siiFilter.ClavePaginacion.IDEmisorFactura.IDOtro.IDType = ((int)IDOtroType).ToString().PadLeft(2, '0'); siiFilter.ClavePaginacion.IDEmisorFactura.IDOtro.CodigoPais = CountryCode; siiFilter.ClavePaginacion.IDEmisorFactura.IDOtro.ID = SellerParty.TaxIdentificationNumber; } else { siiFilter.IDFactura.IDEmisorFactura.IDOtro = new IDOtro(); siiFilter.IDFactura.IDEmisorFactura.IDOtro.IDType = ((int)IDOtroType).ToString().PadLeft(2, '0'); siiFilter.IDFactura.IDEmisorFactura.IDOtro.CodigoPais = CountryCode; siiFilter.IDFactura.IDEmisorFactura.IDOtro.ID = SellerParty.TaxIdentificationNumber; } } else { if (IsFiltroClavePag == true) { siiFilter.ClavePaginacion.IDEmisorFactura.NIF = SellerParty.TaxIdentificationNumber; } else { siiFilter.IDFactura.IDEmisorFactura.NIF = SellerParty.TaxIdentificationNumber; } } if (InvoiceNumber != null) { if (IsFiltroClavePag == true) { siiFilter.ClavePaginacion.NumSerieFacturaEmisor = InvoiceNumber; } else { siiFilter.IDFactura.NumSerieFacturaEmisor = InvoiceNumber; } } if (IssueDate != null) { if (IsFiltroClavePag == true) { siiFilter.ClavePaginacion.FechaExpedicionFacturaEmisor = SIIParser.FromDate(IssueDate); } else { siiFilter.IDFactura.FechaExpedicionFacturaEmisor = SIIParser.FromDate(IssueDate); } } } // Tratamiento del Desde/Hasta Fecha Presentación. if (SinceDate != null && UntilDate != null) { if (siiFilter.FechaPresentacion == null) { siiFilter.FechaPresentacion = new RangoFechaPresentacion(); } siiFilter.FechaPresentacion.Desde = SIIParser.FromDate(SinceDate); siiFilter.FechaPresentacion.Hasta = SIIParser.FromDate(UntilDate); } return(siiFilter); }
/// <summary> /// Devuelve un objeto Contraparte del SII mediante los datos de la /// factura actual. /// </summary> /// <param name="siiInvoice">Factura a la que pertenece la contraparte.</param> /// <param name="skipErrors">Indica si hay que omitir las excepciones.</param> /// <returns> Contraparte para el SII.</returns> internal Contraparte GetContraparte(RegistroLRFacturasRecibidas siiInvoice, bool skipErrors = false) { Contraparte contraparte = new Contraparte(); // Gestionar los asuntos relacionados con el NIF del comprador // Si no es nacional o comienza con 'N' en lugar de DesgloseFactura // hay que informar DesgloseTipoOperacion TaxIdEs taxIdEs = null; // Si no es una factura simplificada o asiento resumen if (InvoiceType != InvoiceType.F4 && InvoiceType != InvoiceType.F2) { // Bandera que indica si el NIF es o no es español bool IsNotNifES = false; try { taxIdEs = new TaxIdEs(SellerParty.TaxIdentificationNumber); } catch { IsNotNifES = true; } if (taxIdEs != null) { IsNotNifES = !taxIdEs.IsDCOK; } if (SellerParty != null) { contraparte.NombreRazon = SellerParty.PartyName; if (IsNotNifES) { if (CountryCode == null && IDOtroType != IDOtroType.NifIva && !skipErrors) { throw new ArgumentNullException( $"Invoice {InvoiceNumber}: For foreign tax identificator number Country Code can't be null"); } // Si no es un nif español contraparte.IDOtro = new IDOtro(); contraparte.IDOtro.IDType = ((int)IDOtroType).ToString().PadLeft(2, '0'); if (CountryCode != null) { contraparte.IDOtro.CodigoPais = CountryCode; } if (!string.IsNullOrEmpty(SellerParty.TaxIdentificationNumber)) { contraparte.IDOtro.ID = SellerParty.TaxIdentificationNumber; } siiInvoice.IDFactura.IDEmisorFactura.IDOtro = contraparte.IDOtro; } else { if (IDOtroType == IDOtroType.NoCensado) { /* SII_Descripcion_ServicioWeb_v0.7.pdf * 8.1.1.4.Ejemplo mensaje XML de alta cuando la contraparte no está censada * Para los casos en que se haya rechazado una factura emitida debido a que la contraparte (NIF y nombre) no está censada en la AEAT, podrá * enviar dicha factura, en un segundo intento, suministrando el NIF en el bloque <IdOtro> con los siguientes contenidos: * Código país: ES * Clave ID: 07. No censado*/ contraparte.IDOtro = new IDOtro(); contraparte.IDOtro.IDType = ((int)IDOtroType).ToString().PadLeft(2, '0'); if ((CountryCode == null || CountryCode != "ES") && !skipErrors) { throw new ArgumentNullException( $"Invoice {InvoiceNumber}: For IDOtroType.NoCensado Country Code can't be null. Must be 'ES'"); } contraparte.IDOtro.CodigoPais = CountryCode; if (!string.IsNullOrEmpty(SellerParty.TaxIdentificationNumber)) { contraparte.IDOtro.ID = SellerParty.TaxIdentificationNumber; } siiInvoice.IDFactura.IDEmisorFactura.NIF = SellerParty.TaxIdentificationNumber; } else { siiInvoice.IDFactura.IDEmisorFactura.NIF = SellerParty.TaxIdentificationNumber; contraparte.NIF = SellerParty.TaxIdentificationNumber; } } } } else { // Para las simplificadas null en contraparte para evitar tag vacio contraparte = null; } return(contraparte); }
internal RegistroLRBajaRecibidas ToRegistroLRBajaRecibidasSII() { RegistroLRBajaRecibidas siiDelete = new RegistroLRBajaRecibidas(); if (SellerParty == null) { throw new ArgumentNullException("SellerParty is null."); } if (InvoiceNumber == null) { throw new ArgumentNullException("InvoiceNumber is null."); } if (IssueDate == null) { throw new ArgumentNullException("PostingDate is null."); } if (Settings.Current.IDVersionSii.CompareTo("1.1") < 0) { siiDelete.PeriodoImpositivo.Ejercicio = (IssueDate ?? new DateTime(1, 1, 1)).ToString("yyyy"); siiDelete.PeriodoImpositivo.Periodo = (IssueDate ?? new DateTime(1, 1, 1)).ToString("MM"); } else { siiDelete.PeriodoLiquidacion.Ejercicio = (IssueDate ?? new DateTime(1, 1, 1)).ToString("yyyy"); siiDelete.PeriodoLiquidacion.Periodo = (IssueDate ?? new DateTime(1, 1, 1)).ToString("MM"); } TaxIdEs taxIdEs = null; bool IsNotNifES = false; try { taxIdEs = new TaxIdEs(SellerParty.TaxIdentificationNumber); } catch { IsNotNifES = true; } if (taxIdEs != null) { IsNotNifES = !taxIdEs.IsDCOK; } if (SellerParty != null) { siiDelete.IDFactura = new IDFactura(); siiDelete.IDFactura.IDEmisorFactura.NombreRazon = SellerParty.PartyName; if (IsNotNifES) { if (CountryCode == null && IDOtroType != IDOtroType.NifIva) { throw new ArgumentNullException( "For foreign tax identificator number Country Code can't be null"); } siiDelete.IDFactura.IDEmisorFactura.IDOtro = new IDOtro(); siiDelete.IDFactura.IDEmisorFactura.IDOtro.IDType = ((int)IDOtroType).ToString().PadLeft(2, '0'); siiDelete.IDFactura.IDEmisorFactura.IDOtro.CodigoPais = CountryCode; siiDelete.IDFactura.IDEmisorFactura.IDOtro.ID = SellerParty.TaxIdentificationNumber; } else { siiDelete.IDFactura.IDEmisorFactura.NIF = SellerParty.TaxIdentificationNumber; } if (InvoiceNumber != null) { siiDelete.IDFactura.NumSerieFacturaEmisor = InvoiceNumber; } if (IssueDate != null) { siiDelete.IDFactura.FechaExpedicionFacturaEmisor = SIIParser.FromDate(IssueDate); } } return(siiDelete); }
internal FiltroConsulta ToFilterSII() { FiltroConsulta siiFilter = new FiltroConsulta(); if (Settings.Current.IDVersionSii.CompareTo("1.1") < 0) { siiFilter.PeriodoImpositivo.Ejercicio = (IssueDate ?? new DateTime(1, 1, 1)).ToString("yyyy"); siiFilter.PeriodoImpositivo.Periodo = (IssueDate ?? new DateTime(1, 1, 1)).ToString("MM"); } else { siiFilter.PeriodoLiquidacion.Ejercicio = (IssueDate ?? new DateTime(1, 1, 1)).ToString("yyyy"); siiFilter.PeriodoLiquidacion.Periodo = (IssueDate ?? new DateTime(1, 1, 1)).ToString("MM"); } TaxIdEs taxIdEs = null; bool IsNotNifES = false; try { taxIdEs = new TaxIdEs(BuyerParty.TaxIdentificationNumber); } catch { IsNotNifES = true; } if (taxIdEs != null) { IsNotNifES = !taxIdEs.IsDCOK; } if (BuyerParty != null) { siiFilter.ClavePaginacion = new ClavePaginacion(); siiFilter.ClavePaginacion.IDEmisorFactura.NombreRazon = BuyerParty.PartyName; if (IsNotNifES) { if (CountryCode == null) { throw new ArgumentNullException( "For foreign tax identificator number Country Code can't be null"); } siiFilter.ClavePaginacion.IDEmisorFactura.IDOtro = new IDOtro(); siiFilter.ClavePaginacion.IDEmisorFactura.IDOtro.IDType = ((int)IDOtroType).ToString().PadLeft(2, '0'); siiFilter.ClavePaginacion.IDEmisorFactura.IDOtro.CodigoPais = CountryCode; siiFilter.ClavePaginacion.IDEmisorFactura.IDOtro.ID = BuyerParty.TaxIdentificationNumber; } else { siiFilter.ClavePaginacion.IDEmisorFactura.NIF = BuyerParty.TaxIdentificationNumber; } if (InvoiceNumber != null) { siiFilter.ClavePaginacion.NumSerieFacturaEmisor = InvoiceNumber; } if (IssueDate != null) { siiFilter.ClavePaginacion.FechaExpedicionFacturaEmisor = (IssueDate ?? new DateTime(1, 1, 1)).ToString("dd-MM-yyyy"); } } return(siiFilter); }
/// <summary> /// Obtiene un objeto RegistroLRDetOperacionIntracomunitaria, este objeto se utiliza /// para la serialización xml. /// </summary> /// <returns>Nueva instancia del objeto para serialización /// xml RegistroLRDetOperacionIntracomunitaria.</returns> internal RegistroLRDetOperacionIntracomunitaria ToSII() { RegistroLRDetOperacionIntracomunitaria siiInvoice = new RegistroLRDetOperacionIntracomunitaria(); if (IssueDate == null) { throw new ArgumentNullException("IssueDate is null."); } if (!string.IsNullOrEmpty(ExternalReference) && !(Settings.Current.IDVersionSii.CompareTo("1.1") < 0)) { siiInvoice.OperacionIntracomunitaria.RefExterna = ExternalReference; } if (Settings.Current.IDVersionSii.CompareTo("1.1") < 0) { siiInvoice.PeriodoImpositivo.Ejercicio = (IssueDate ?? new DateTime(1, 1, 1)).ToString("yyyy"); siiInvoice.PeriodoImpositivo.Periodo = (IssueDate ?? new DateTime(1, 1, 1)).ToString("MM"); } else { siiInvoice.PeriodoLiquidacion.Ejercicio = (IssueDate ?? new DateTime(1, 1, 1)).ToString("yyyy"); siiInvoice.PeriodoLiquidacion.Periodo = (IssueDate ?? new DateTime(1, 1, 1)).ToString("MM"); } TaxIdEs taxIdEs = null; bool IsNotNifES = false; if (SellerParty == null) { throw new ArgumentNullException("SellerParty is null."); } if (BuyerParty == null) { throw new ArgumentNullException("BuyerParty is null."); } // Se puede tratar de un Buyer extranjero, de manera que tendremos que poner el tratamiento correspondiente try { taxIdEs = new TaxIdEs(BuyerParty.TaxIdentificationNumber); } catch { IsNotNifES = true; } if (taxIdEs != null) { IsNotNifES = !taxIdEs.IsDCOK; } if (BuyerParty != null) { siiInvoice.IDFactura.IDEmisorFactura.NombreRazon = BuyerParty.PartyName; if (IsNotNifES) { if (CountryCode == null) { throw new ArgumentNullException( "For foreign tax identificator number Country Code can't be null"); } // Si no es un nif español siiInvoice.IDFactura.IDEmisorFactura.IDOtro = new IDOtro(); siiInvoice.IDFactura.IDEmisorFactura.IDOtro.IDType = ((int)IDOtroType).ToString().PadLeft(2, '0'); siiInvoice.IDFactura.IDEmisorFactura.IDOtro.CodigoPais = CountryCode; siiInvoice.IDFactura.IDEmisorFactura.IDOtro.ID = BuyerParty.TaxIdentificationNumber; } else { siiInvoice.IDFactura.IDEmisorFactura.NIF = BuyerParty.TaxIdentificationNumber; } } siiInvoice.IDFactura.NumSerieFacturaEmisor = InvoiceNumber; siiInvoice.IDFactura.FechaExpedicionFacturaEmisor = (IssueDate ?? new DateTime(1, 1, 1)).ToString("dd-MM-yyyy"); // Se procede a tratar el Seller, el cual puede ser extranjero. taxIdEs = null; IsNotNifES = false; try { taxIdEs = new TaxIdEs(SellerParty.TaxIdentificationNumber); } catch { IsNotNifES = true; } if (taxIdEs != null) { IsNotNifES = !taxIdEs.IsDCOK; } if (SellerParty != null) { siiInvoice.Contraparte.NombreRazon = SellerParty.PartyName; if (IsNotNifES) { if (CountryCode == null) { throw new ArgumentNullException( "For foreign tax identificator number Country Code can't be null"); } // Si no es un nif español siiInvoice.Contraparte.IDOtro = new IDOtro(); siiInvoice.Contraparte.IDOtro.IDType = ((int)IDOtroType).ToString().PadLeft(2, '0'); siiInvoice.Contraparte.IDOtro.CodigoPais = CountryCode; siiInvoice.Contraparte.IDOtro.ID = SellerParty.TaxIdentificationNumber; } else { siiInvoice.Contraparte.NIF = SellerParty.TaxIdentificationNumber; } } // // Tratamos el resto de información de la factura intracomunitaria. // siiInvoice.OperacionIntracomunitaria.TipoOperacion = OperationType.ToString(); siiInvoice.OperacionIntracomunitaria.ClaveDeclarado = ClaveDeclarado.ToString(); siiInvoice.OperacionIntracomunitaria.EstadoMiembro = EstadoMiembro; siiInvoice.OperacionIntracomunitaria.DescripcionBienes = DescripcionBienes; siiInvoice.OperacionIntracomunitaria.DireccionOperador = DireccionOperador; return(siiInvoice); }
internal RegistroLRBajaBienesInversion ToRegistroLRBajaBienesInversionSII() { RegistroLRBajaBienesInversion siiDelete = new RegistroLRBajaBienesInversion(); if (SellerParty == null) { throw new ArgumentNullException("SellerParty is null."); } if (InvoiceNumber == null) { throw new ArgumentNullException("InvoiceNumber is null."); } if (Settings.Current.IDVersionSii.CompareTo("1.1") < 0) { siiDelete.PeriodoImpositivo.Ejercicio = (IssueDate ?? new DateTime(1, 1, 1)).ToString("yyyy"); siiDelete.PeriodoImpositivo.Periodo = "0A"; // anual } else { siiDelete.PeriodoLiquidacion.Ejercicio = (IssueDate ?? new DateTime(1, 1, 1)).ToString("yyyy"); siiDelete.PeriodoLiquidacion.Periodo = "0A"; // anual } TaxIdEs taxIdEs = null; bool IsNotNifES = false; try { taxIdEs = new TaxIdEs(SellerParty.TaxIdentificationNumber); } catch { IsNotNifES = true; } if (taxIdEs != null) { IsNotNifES = !taxIdEs.IsDCOK; } if (SellerParty != null) { siiDelete.IDFactura = new IDFactura(); siiDelete.IDFactura.IDEmisorFactura.NombreRazon = SellerParty.PartyName; if (IsNotNifES) { if (CountryCode == null) { throw new ArgumentNullException( "For foreign tax identificator number Country Code can't be null"); } siiDelete.IDFactura.IDEmisorFactura.IDOtro = new IDOtro(); siiDelete.IDFactura.IDEmisorFactura.IDOtro.IDType = ((int)IDOtroType).ToString().PadLeft(2, '0'); siiDelete.IDFactura.IDEmisorFactura.IDOtro.CodigoPais = CountryCode; siiDelete.IDFactura.IDEmisorFactura.IDOtro.ID = SellerParty.TaxIdentificationNumber; } else { siiDelete.IDFactura.IDEmisorFactura.NIF = SellerParty.TaxIdentificationNumber; } if (InvoiceNumber != null) { siiDelete.IDFactura.NumSerieFacturaEmisor = InvoiceNumber; } if (IssueDate != null) { siiDelete.IDFactura.FechaExpedicionFacturaEmisor = (IssueDate ?? new DateTime(1, 1, 1)).ToString("dd-MM-yyyy"); } } // Campos especificos para los bienes de inversión. siiDelete.IdentificacionBien = PropertyId; return(siiDelete); }
/// <summary> /// Obtiene un objeto RegistroLRBienesInversion, este objeto se utiliza /// para la serialización xml. /// </summary> /// <returns>Nueva instancia del objeto para serialización /// xml RegistroLRBienesInversion.</returns> public RegistroLRBienesInversion ToSII() { RegistroLRBienesInversion siiInvoice = new RegistroLRBienesInversion(); if (IssueDate == null) { throw new ArgumentNullException("IssueDate is null."); } if (!string.IsNullOrEmpty(ExternalReference) && !(Settings.Current.IDVersionSii.CompareTo("1.1") < 0)) { siiInvoice.BienesInversion.RefExterna = ExternalReference; } if (Settings.Current.IDVersionSii.CompareTo("1.1") < 0) { siiInvoice.PeriodoImpositivo.Ejercicio = (IssueDate ?? new DateTime(1, 1, 1)).ToString("yyyy"); siiInvoice.PeriodoImpositivo.Periodo = "0A"; // anual } else { siiInvoice.PeriodoLiquidacion.Ejercicio = (IssueDate ?? new DateTime(1, 1, 1)).ToString("yyyy"); siiInvoice.PeriodoLiquidacion.Periodo = "0A"; // anual } if (SellerParty == null) { throw new ArgumentNullException("SellerParty is null."); } siiInvoice.IDFactura.NumSerieFacturaEmisor = InvoiceNumber; siiInvoice.IDFactura.FechaExpedicionFacturaEmisor = (IssueDate ?? new DateTime(1, 1, 1)).ToString("dd-MM-yyyy"); TaxIdEs taxIdEs = null; bool IsNotNifES = false; try { taxIdEs = new TaxIdEs(SellerParty.TaxIdentificationNumber); } catch { IsNotNifES = true; } if (taxIdEs != null) { IsNotNifES = !taxIdEs.IsDCOK; } if (SellerParty != null) { siiInvoice.IDFactura.IDEmisorFactura.NombreRazon = SellerParty.PartyName; if (IsNotNifES) { if (CountryCode == null) { throw new ArgumentNullException( "For foreign tax identificator number Country Code can't be null"); } siiInvoice.IDFactura.IDEmisorFactura.IDOtro = new IDOtro(); siiInvoice.IDFactura.IDEmisorFactura.IDOtro.IDType = ((int)IDOtroType).ToString().PadLeft(2, '0'); siiInvoice.IDFactura.IDEmisorFactura.IDOtro.CodigoPais = CountryCode; siiInvoice.IDFactura.IDEmisorFactura.IDOtro.ID = SellerParty.TaxIdentificationNumber; } else { siiInvoice.IDFactura.IDEmisorFactura.NIF = SellerParty.TaxIdentificationNumber; } } // Campos especificos para los bienes de inversión. siiInvoice.BienesInversion.IdentificacionBien = PropertyId; siiInvoice.BienesInversion.FechaInicioUtilizacion = (InitialDate ?? new DateTime(1, 1, 1)).ToString("dd-MM-yyyy");; siiInvoice.BienesInversion.ProrrataAnualDefinitiva = ProrrataAnual.ToString(Settings.DefaultNumberFormatInfo); siiInvoice.BienesInversion.RegularizacionAnualDeduccion = RegAnualDeduc.ToString(Settings.DefaultNumberFormatInfo); siiInvoice.BienesInversion.IndentificacionEntrega = DeliveryId; siiInvoice.BienesInversion.RegularizacionDeduccionEfectuada = RegDeducEfec.ToString(Settings.DefaultNumberFormatInfo); return(siiInvoice); }
internal RegistroLROpTrascendTribu ToRegistroLRBajaOpTrascendTribuSII() { RegistroLROpTrascendTribu siiDelete = new RegistroLROpTrascendTribu(); if (SellerParty == null) { throw new ArgumentNullException("SellerParty is null."); } if (Settings.Current.IDVersionSii.CompareTo("1.1") < 0) { siiDelete.PeriodoImpositivo.Ejercicio = (IssueDate ?? new DateTime(1, 1, 1)).ToString("yyyy"); siiDelete.PeriodoImpositivo.Periodo = "0A"; // anual } else { siiDelete.PeriodoLiquidacion.Ejercicio = (IssueDate ?? new DateTime(1, 1, 1)).ToString("yyyy"); siiDelete.PeriodoLiquidacion.Periodo = "0A"; // anual } TaxIdEs taxIdEs = null; bool IsNotNifES = false; try { taxIdEs = new TaxIdEs(SellerParty.TaxIdentificationNumber); } catch { IsNotNifES = true; } if (taxIdEs != null) { IsNotNifES = !taxIdEs.IsDCOK; } if (SellerParty != null) { siiDelete.Contraparte = new Contraparte(); siiDelete.Contraparte.NombreRazon = SellerParty.PartyName; if (IsNotNifES) { if (CountryCode == null) { throw new ArgumentNullException( "For foreign tax identificator number Country Code can't be null"); } siiDelete.Contraparte.IDOtro = new IDOtro(); siiDelete.Contraparte.IDOtro.IDType = ((int)IDOtroType).ToString().PadLeft(2, '0'); siiDelete.Contraparte.IDOtro.CodigoPais = CountryCode; siiDelete.Contraparte.IDOtro.ID = SellerParty.TaxIdentificationNumber; } else { siiDelete.Contraparte.NIF = SellerParty.TaxIdentificationNumber; } if (ClaveOperacion != null) { siiDelete.ClaveOperacion = ClaveOperacion; } } return(siiDelete); }
/// <summary> /// Obtiene un objeto RegistroLRDetOperacionIntracomunitaria, este objeto se utiliza /// para la serialización xml. /// </summary> /// <param name="updateInnerSII">Si es true, actualiza el objeto SII subyacente /// con el valor calculado.</param> /// <returns>Nueva instancia del objeto para serialización /// xml RegistroLRDetOperacionIntracomunitaria.</returns> internal RegistroLRDetOperacionIntracomunitariaVentasEnConsigna ToSII(bool updateInnerSII = false) { if (InnerSII != null) { return(InnerSII); } RegistroLRDetOperacionIntracomunitariaVentasEnConsigna siiInvoice = new RegistroLRDetOperacionIntracomunitariaVentasEnConsigna(); if (IssueDate == null) { throw new ArgumentNullException("IssueDate is null."); } if (!string.IsNullOrEmpty(ExternalReference) && !(Settings.Current.IDVersionSii.CompareTo("1.1") < 0)) { siiInvoice.OperacionIntracomunitaria.RefExterna = ExternalReference; } siiInvoice.IdRegistroDeclarado = new IdRegistroDeclarado() { Ejercicio = (IssueDate ?? new DateTime(1, 1, 1)).ToString("yyyy"), Periodo = (IssueDate ?? new DateTime(1, 1, 1)).ToString("MM") }; siiInvoice.TipoOperacion = OperationType; TaxIdEs taxIdEs = null; bool IsNotNifES = false; if (BuyerParty == null) { throw new ArgumentNullException("BuyerParty is null."); } // Se puede tratar de un Buyer extranjero, de manera que tendremos que poner el tratamiento correspondiente try { taxIdEs = new TaxIdEs(BuyerParty.TaxIdentificationNumber); } catch { IsNotNifES = true; } if (taxIdEs != null) { IsNotNifES = !taxIdEs.IsDCOK; } Contraparte contraparte = null; if (BuyerParty != null) { contraparte = new Contraparte() { NombreRazon = BuyerParty.PartyName }; if (IsNotNifES) { if (CountryCode == null && IDOtroType != IDOtroType.NifIva) { throw new ArgumentNullException( "For foreign tax identificator number Country Code can't be null"); } // Si no es un nif español contraparte.IDOtro = new IDOtro(); contraparte.IDOtro.IDType = ((int)IDOtroType).ToString().PadLeft(2, '0'); contraparte.IDOtro.CodigoPais = CountryCode; contraparte.IDOtro.ID = BuyerParty.TaxIdentificationNumber; } else { siiInvoice.Contraparte.NIF = BuyerParty.TaxIdentificationNumber; } } siiInvoice.IdRegistroDeclarado.IdRegistro = InvoiceNumber; // Tratamos el resto de información de la factura intracomunitaria. siiInvoice.ClaveDeclarante = ClaveDeclarante.ToString(); if (OperationType == "01") { siiInvoice.Contraparte = contraparte; siiInvoice.OperacionIntracomunitaria = new OperacionIntracomunitariaVentasEnConsigna() { InfoExpedicionRecepcion = new InfoExpedicionRecepcion() { FechaExpedicion = (IssueDate ?? new DateTime(1, 1, 1)).ToString("dd-MM-yyyy"), FechaLlegada = (ReceptionDate ?? new DateTime(1, 1, 1)).ToString("dd-MM-yyyy"), EmPartida = EstadoMiembroPartida, EmLlegada = EstadoMiembroLlegada, DescripBienes = DescripcionBienes, Cantidad = $"{Quantity}", ValorBienes = SIIParser.FromDecimal(GrossAmount) } }; siiInvoice.Deposito = new Deposito() { DireccionAlmacen = WarehouseAddress }; } else if (OperationType == "03") { siiInvoice.OperacionIntracomunitaria = new OperacionIntracomunitariaVentasEnConsigna() { DestinoFinalExpedRecep = new DestinoFinalExpedRecep() { FechaOpDeclarada = (IssueDate ?? new DateTime(1, 1, 1)).ToString("dd-MM-yyyy"), DescripBienes = DescripcionBienes, Cantidad = $"{Quantity}", BaseImponibleValor = SIIParser.FromDecimal(GrossAmount), PrecioUnitario = SIIParser.FromDecimal(GrossAmount / Quantity), DestinatarioFinal = contraparte } }; } // Para las ventas de bienes envíados anteriormente en consigna hay que indicar la // información del envío original. Esta información se incluye en InvoicesRectified if (InvoicesRectified != null && InvoicesRectified.Count > 0) { siiInvoice.OperacionIntracomunitaria.IdRegistroExpInicial = new IdRegistroExpInicial() { Ejercicio = (InvoicesRectified[0].RectifiedIssueDate ?? new DateTime(1, 1, 1)).ToString("yyyy"), Periodo = (InvoicesRectified[0].RectifiedIssueDate ?? new DateTime(1, 1, 1)).ToString("MM"), IdExpInicial = InvoicesRectified[0].RectifiedInvoiceNumber }; } if (updateInnerSII) { InnerSII = siiInvoice; } return(siiInvoice); }