/// <summary> /// Constructor de InvestmentProperty. /// </summary> /// <param name="registroLRBienesInversion">Objeto serialización xml Bienes Inversión.</param> public Asset(RegistroLRBienesInversion registroLRBienesInversion) { RegistroLRBienesInversion siiInvoice = registroLRBienesInversion; InvoiceNumber = siiInvoice.IDFactura.NumSerieFacturaEmisor; IssueDate = Convert.ToDateTime(siiInvoice.IDFactura.FechaExpedicionFacturaEmisor); SellerParty = new Party() { TaxIdentificationNumber = siiInvoice.IDFactura.IDEmisorFactura.NIF, PartyName = siiInvoice.IDFactura.IDEmisorFactura.NombreRazon }; if (siiInvoice.IDFactura.IDEmisorFactura.IDOtro != null) { // Si no es un nif español IDOtroType = (IDOtroType)Convert.ToInt32(siiInvoice.IDFactura.IDEmisorFactura.IDOtro.IDType); CountryCode = siiInvoice.IDFactura.IDEmisorFactura.IDOtro.CodigoPais; SellerParty.TaxIdentificationNumber = siiInvoice.IDFactura.IDEmisorFactura.IDOtro.ID; } if (SellerParty == null) { throw new ArgumentNullException("SellerParty is null."); } if (IssueDate == null) { throw new ArgumentNullException("IssueDate is null."); } PropertyId = siiInvoice.BienesInversion.IdentificacionBien; InitialDate = Convert.ToDateTime(siiInvoice.BienesInversion.FechaInicioUtilizacion); ProrrataAnual = Convert.ToDecimal(siiInvoice.BienesInversion.ProrrataAnualDefinitiva, Settings.DefaultNumberFormatInfo); RegAnualDeduc = Convert.ToDecimal(siiInvoice.BienesInversion.RegularizacionAnualDeduccion, Settings.DefaultNumberFormatInfo); DeliveryId = siiInvoice.BienesInversion.IndentificacionEntrega; RegDeducEfec = Convert.ToDecimal(siiInvoice.BienesInversion.RegularizacionDeduccionEfectuada, Settings.DefaultNumberFormatInfo); }
/// <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); }