예제 #1
0
        /// <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);
        }
예제 #2
0
        /// <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);
        }