예제 #1
0
        /// <summary>
        /// Rutina para añadir los desgloses de IVA correspondientes por cada factura.
        /// </summary>
        /// <param name="_CamposReg"></param>
        /// <param name="_FacturaActual"></param>
        /// <returns></returns>

        private RegistroLRFacturasEmitidas AgregarDesgloseIVA(string[] _CamposReg, RegistroLRFacturasEmitidas _FacturaActual)
        {
            RegistroLRFacturasEmitidas _FactActualWrk = _FacturaActual;
            TipoDesglose    _TipoDesgloseTmp          = new TipoDesglose();
            DesgloseFactura _DesgloseFactTmp          = new DesgloseFactura();
            Sujeta          _SujetaTmp = new Sujeta();

            // Procedemos a tratar la factura actual.
            // En este caso añadiremos las líneas de fiscalidad que hayamos leido a la factura que estemos tratando en ese momento
            string _RegImpos = _CamposReg[1];

            if (_RegImpos == "E ")
            {
                Exenta _ExentaWrk = new Exenta
                {
                    CausaExencion = _CamposReg[7],
                    BaseImponible = ((_CamposReg[4]).Trim()).Replace(',', '.')
                };
                ;
                // La CausaExencion es opcional, de manera que no la informamos.
                _SujetaTmp.Exenta                = _ExentaWrk;
                _DesgloseFactTmp.Sujeta          = _SujetaTmp;
                _TipoDesgloseTmp.DesgloseFactura = _DesgloseFactTmp;
            }
            else
            {
                NoExenta _NoExentaWrk = new NoExenta
                {
                    TipoNoExenta = _CamposReg[2]
                };
                DesgloseIVA _DesgloseIVAWrk = new DesgloseIVA();

                DetalleIVA _DetalleIVAWrk = new DetalleIVA
                {
                    TipoImpositivo = ((_CamposReg[3]).Trim()).Replace(',', '.')
                };
                ;
                _DetalleIVAWrk.BaseImponible    = ((_CamposReg[4]).Trim()).Replace(',', '.');;
                _DetalleIVAWrk.CuotaRepercutida = ((_CamposReg[5]).Trim()).Replace(',', '.');;

                _DesgloseIVAWrk.DetalleIVA.Add(_DetalleIVAWrk);
                _NoExentaWrk.DesgloseIVA = _DesgloseIVAWrk;

                _SujetaTmp.NoExenta     = _NoExentaWrk;
                _DesgloseFactTmp.Sujeta = _SujetaTmp;

                _TipoDesgloseTmp.DesgloseFactura = _DesgloseFactTmp;
            }

            _FactActualWrk.FacturaExpedida.TipoDesglose = _TipoDesgloseTmp;
            return(_FactActualWrk);
        }
예제 #2
0
        /// <summary>
        /// Para NIF nacionales no comenzados en 'N'.
        /// </summary>
        /// <param name="skipErrors">Indica si hay que omitir las excepciones.</param>
        /// <returns>Desglose de factura.</returns>
        internal override DesgloseFactura GetDesgloseFactura(bool skipErrors = false)
        {
            DesgloseFactura desgloseFactura = new DesgloseFactura();

            if (ClaveRegimenEspecialOTrascendencia == ClaveRegimenEspecialOTrascendencia.IpsiIgic ||
                IsTaxExcluded || IsTAIRules)
            {
                desgloseFactura.NoSujeta = GetNoSujeta(skipErrors);
            }
            else
            {
                desgloseFactura.Sujeta = GetSujeta(skipErrors);
            }

            return(desgloseFactura);
        }
예제 #3
0
 /// <summary>
 /// Constructor clase TipoDesglose
 /// </summary>
 public TipoDesgloseLRRC()
 {
     DesgloseFactura       = new DesgloseFactura();
     DesgloseTipoOperacion = new DesgloseTipoOperacion();
 }
예제 #4
0
        // Función para tratar el registro de factura que se acaba de leer.
        private ARInvoice TratarFactEmitida(string[] _CamposReg, Party _Titular)
        {
            ARInvoice _FacturaActual = new ARInvoice();
            Party     _Emisor, _Cliente = new Party();

            // Al tratarse de una factura emitida el Vendedor (Seller - _Emisor) será el mismo que el Titular del libro.
            _Emisor = _Titular;
            _FacturaActual.SellerParty = _Emisor;

            // Procedemos a tratar la factura actual.
            //El periodo impositivo no lo informamos, ya que se informará automáticamente a partir
            // de la fecha de la factura, según las pruebas que hemos realizado.
            _FacturaActual.InvoiceNumber = (_CamposReg[4]).Trim();

            // En caso de que se trate de una factura de Asiento Resumen, hay que informar la última factura
            // que se incluye en este envío.
            if (!string.IsNullOrWhiteSpace(_CamposReg[14]))
            {
                _FacturaActual.InvoiceNumberLastItem = _CamposReg[14];
            }

            _FacturaActual.IssueDate = Convert.ToDateTime(_CamposReg[5]);
            if (string.IsNullOrWhiteSpace(_CamposReg[9]))
            {
                _CamposReg[9] = "Hay que informar el concepto de la factura";
            }
            _FacturaActual.InvoiceText = (_CamposReg[9]).Trim();

            // Procedemos a indicar el tipo de factura, que dependerá de lo que venga indicado en el fichero
            _FacturaActual.InvoiceType = (InvoiceType)Enum.Parse(typeof(InvoiceType), _CamposReg[6]);

            // Procedemos a indicar el tipo de ClaveRegimenEspecial respecto a lo que venga indicado en el fichero
            _FacturaActual.ClaveRegimenEspecialOTrascendencia = (ClaveRegimenEspecialOTrascendencia)Enum.Parse(typeof(ClaveRegimenEspecialOTrascendencia), _CamposReg[7]);

            _FacturaActual.GrossAmount = Convert.ToDecimal(_CamposReg[8]);

            if (!string.IsNullOrWhiteSpace(_CamposReg[15]))
            {
                _FacturaActual.OperationIssueDate = Convert.ToDateTime(_CamposReg[15]);
            }

            // Informamos el cliente.
            _Cliente.PartyName = (_CamposReg[10]).Trim();
            _Cliente.TaxIdentificationNumber = _CamposReg[11];
            _FacturaActual.BuyerParty        = _Cliente;

            // En el caso de que se trate de un cliente extranjero, habremos informado este campo, de manera que podremos indicar
            // el código de país correspondiente
            if (!string.IsNullOrWhiteSpace(_CamposReg[12]))
            {
                _FacturaActual.CountryCode = _CamposReg[12];
            }

            //En este trozo procedemos a tratar las facturas rectificativas.
            if (!string.IsNullOrWhiteSpace(_CamposReg[16]))
            {
                _FacturaActual.RectifiedType   = (RectifiedType)Enum.Parse(typeof(RectifiedType), _CamposReg[16]);
                _FacturaActual.RectifiedBase   = Convert.ToDecimal(_CamposReg[17]);
                _FacturaActual.RectifiedAmount = Convert.ToDecimal(_CamposReg[18]);
            }

            // Procedemos a tratar el caso de que se trate del deslgose no Sujeto
            TipoDesglose    tipoDesglose    = new TipoDesglose();
            DesgloseFactura desgloseFactura = new DesgloseFactura();
            NoSujeta        noSujeta        = new NoSujeta();

            if (!string.IsNullOrWhiteSpace(_CamposReg[19]) || !string.IsNullOrWhiteSpace(_CamposReg[20]))
            {
                if (!string.IsNullOrWhiteSpace(_CamposReg[19]))
                {
                    noSujeta.ImportePorArticulos7_14_Otros = ((_CamposReg[19]).Trim()).Replace(',', '.');
                }

                if (!string.IsNullOrWhiteSpace(_CamposReg[20]))
                {
                    noSujeta.ImporteTAIReglasLocalizacion = ((_CamposReg[20]).Trim()).Replace(',', '.');
                }

                desgloseFactura.NoSujeta = noSujeta;

                tipoDesglose.DesgloseFactura = desgloseFactura;

                //_FacturaActual.InnerSII.FacturaExpedida.TipoDesglose = tipoDesglose;
            }

            return(_FacturaActual);
        }
예제 #5
0
        // Función para tratar el registro de factura que se acaba de leer.
        private RegistroLRFacturasEmitidas TratarFactEmitida(string[] _CamposReg)
        {
            RegistroLRFacturasEmitidas _RegLRFactEmitWRK = new RegistroLRFacturasEmitidas();

            // Informamos el periodo impositivo.
            PeriodoImpositivo _PeriodoWrk = new PeriodoImpositivo
            {
                Ejercicio = _CamposReg[1],
                Periodo   = _CamposReg[2]
            };

            _RegLRFactEmitWRK.PeriodoImpositivo = _PeriodoWrk;

            // Informamos el IDFactura.
            IDFactura _IDFactWrk = new IDFactura();

            _IDFactWrk.IDEmisorFactura.NIF          = _CamposReg[3];
            _IDFactWrk.NumSerieFacturaEmisor        = _CamposReg[4].Trim();
            _IDFactWrk.FechaExpedicionFacturaEmisor = _CamposReg[5];

            // En caso de que se trate de una factura de Asiento Resumen, hay que informar la última factura
            // que se incluye en este envío.
            if (!string.IsNullOrWhiteSpace(_CamposReg[14]))
            {
                _IDFactWrk.NumSerieFacturaEmisorResumenFin = _CamposReg[14];
            }
            _RegLRFactEmitWRK.IDFactura = _IDFactWrk;

            // Procedemos a tratar la factura actual.
            FacturaExpedida _FacturaActual = new FacturaExpedida
            {
                TipoFactura = _CamposReg[6],
                ClaveRegimenEspecialOTrascendencia = _CamposReg[7],

                ImporteTotal = ((_CamposReg[8]).Trim()).Replace(',', '.')
            };

            if (string.IsNullOrWhiteSpace(_CamposReg[9]))
            {
                _CamposReg[9] = "Hay que informar el concepto de la factura";
            }
            _FacturaActual.DescripcionOperacion = _CamposReg[9].Trim();

            // Informamos la contraparte, que cambiará dependiendo de si se trata de un cliente nacional o extranjero
            Contraparte _ClienteWrk = new Contraparte
            {
                NombreRazon = _CamposReg[10].Trim()
            };

            if (string.IsNullOrWhiteSpace(_CamposReg[12]))
            {
                _ClienteWrk.NIF = _CamposReg[11];
            }
            else
            {
                IDOtro _ClienteExtWrk = new IDOtro
                {
                    CodigoPais = _CamposReg[12],
                    IDType     = _CamposReg[13],
                    ID         = _CamposReg[11]
                };
                _ClienteWrk.IDOtro = _ClienteExtWrk;
            }
            _FacturaActual.Contraparte = _ClienteWrk;

            // Indicamos la fecha de operación, en el caso de que venga informada
            if (!string.IsNullOrWhiteSpace(_CamposReg[15]))
            {
                _FacturaActual.FechaOperacion = _CamposReg[15];
            }

            // Procedemos a informar los campos en el caso de que se trate del envio de una factura rectificativa.
            if (!string.IsNullOrWhiteSpace(_CamposReg[16]))
            {
                _FacturaActual.TipoRectificativa = _CamposReg[16];

                ImporteRectificacion _ImpRectifWrk = new ImporteRectificacion
                {
                    BaseRectificada  = ((_CamposReg[17]).Trim()).Replace(',', '.'),
                    CuotaRectificada = ((_CamposReg[18]).Trim()).Replace(',', '.')
                };
                _FacturaActual.ImporteRectificacion = _ImpRectifWrk;
            }

            // Procedemos a tratar el caso de que se trate del deslgose no Sujeto
            TipoDesglose    tipoDesglose    = new TipoDesglose();
            DesgloseFactura desgloseFactura = new DesgloseFactura();
            NoSujeta        noSujeta        = new NoSujeta();

            if (!string.IsNullOrWhiteSpace(_CamposReg[19]) || !string.IsNullOrWhiteSpace(_CamposReg[20]))
            {
                if (!string.IsNullOrWhiteSpace(_CamposReg[19]))
                {
                    noSujeta.ImportePorArticulos7_14_Otros = ((_CamposReg[19]).Trim()).Replace(',', '.');
                }

                if (!string.IsNullOrWhiteSpace(_CamposReg[20]))
                {
                    noSujeta.ImporteTAIReglasLocalizacion = ((_CamposReg[20]).Trim()).Replace(',', '.');
                }

                desgloseFactura.NoSujeta = noSujeta;

                tipoDesglose.DesgloseFactura = desgloseFactura;

                _FacturaActual.TipoDesglose = tipoDesglose;
            }

            _RegLRFactEmitWRK.FacturaExpedida = _FacturaActual;

            return(_RegLRFactEmitWRK);
        }