示例#1
0
        private NotasBase <InvoiceDetail> GetBase()
        {
            var baseNote = new NotasBase <InvoiceDetail>
            {
                SerieDocumento               = _invoice.SerieDocumento,
                CorrelativoDocumento         = new Random().Next(1, 100000).ToString(),
                FechaEmision                 = _invoice.FechaEmision,
                TipoDocumentoIdentidadEmisor = _invoice.TipoDocumentoIdentidadEmisor,
                RucEmisor = _invoice.RucEmisor,
                NombreRazonSocialEmisor       = _invoice.NombreRazonSocialEmisor,
                NombreComercialEmisor         = _invoice.NombreComercialEmisor,
                NroDocCliente                 = _invoice.NroDocCliente,
                TipoDocumentoIdentidadCliente = _invoice.TipoDocumentoIdentidadCliente,
                NombreRazonSocialCliente      = _invoice.NombreRazonSocialCliente,
                DocumentoRef             = $"{_invoice.SerieDocumento}-{_invoice.CorrelativoDocumento}",
                TipoDocRef               = _invoice.TipoDocumento,
                Motivo                   = "MOTIVO DESCONOCIDO",
                CodigoMoneda             = _invoice.CodigoMoneda,
                Total                    = _invoice.TotalVenta,
                TotalTributosAdicionales = _invoice.TotalTributosAdicionales,
                DireccionEmisor          = _invoice.DireccionEmisor,
                Impuesto                 = _invoice.Impuesto,
                DetallesDocumento        = _invoice.DetallesDocumento
            };

            return(baseNote);
        }
示例#2
0
        /// <summary>
        /// Devuelve una seccion de xml si la entidad de venta contiene un nro de documento de referencia.
        /// </summary>
        /// <param name="noteHeaderEntity"></param>
        /// <returns></returns>
        public static DocumentReferenceType[] DevuelveDocumentosReferenciaNote(NotasBase <InvoiceDetail> noteHeaderEntity)
        {
            if (noteHeaderEntity.DocumentoReferenciaNumero != null)
            {
                var res = new[]
                {
                    new DocumentReferenceType
                    {
                        ID = noteHeaderEntity.DocumentoReferenciaNumero,
                        DocumentTypeCode = ((int)noteHeaderEntity.DocumentoReferenciaTipoDocumento).ToString("00")
                    }
                };

                return(res);
            }
            return(null);
        }
示例#3
0
        /// <summary>
        /// Crea una Instancia a partir de una Nota Electronica Base.
        /// </summary>
        /// <param name="nota">Nota Base que inicializara la nueva instancia</param>
        public CreditNoteHeader(NotasBase <InvoiceDetail> nota)
        {
            var properties = nota.GetType().GetProperties();

            foreach (var prop in properties)
            {
                var v = prop.GetValue(nota, null);
                if (v != null)
                {
                    prop.SetValue(this, v, null);
                }
            }
            var fields = nota.GetType().GetFields();

            foreach (var field in fields)
            {
                var v = field.GetValue(nota);
                if (v != null)
                {
                    field.SetValue(this, v);
                }
            }
        }
示例#4
0
        private NotasBase <InvoiceDetail> GetBaseNota(ventaDto pobjVenta, clienteDto pobjCliente, decimal igv)
        {
            var baseNote = new NotasBase <InvoiceDetail>
            {
                SerieDocumento                = pobjVenta.v_SerieDocumento,
                CorrelativoDocumento          = pobjVenta.v_CorrelativoDocumento,
                DocumentoRef                  = (pobjVenta.v_SerieDocumentoRef + "-" + pobjVenta.v_CorrelativoDocumentoRef).Trim(),
                TipoDocRef                    = (TipoDocumentoElectronico)Enum.ToObject(typeof(TipoDocumentoElectronico), pobjVenta.i_IdTipoDocumentoRef ?? 1),
                FechaEmision                  = pobjVenta.t_FechaRegistro ?? DateTime.Now,
                NombreRazonSocialCliente      = System.Text.RegularExpressions.Regex.Replace(string.Join(" ", pobjCliente.v_ApePaterno, pobjCliente.v_ApeMaterno, pobjCliente.v_PrimerNombre, pobjCliente.v_SegundoNombre, pobjCliente.v_RazonSocial), @"[^\w\.-]", " ").Trim(),
                TipoDocumentoIdentidadCliente = (TipoDocumentoIdentidad)Enum.ToObject(typeof(TipoDocumentoIdentidad), pobjCliente.i_IdTipoIdentificacion ?? 6),
                NroDocCliente                 = pobjCliente.v_NroDocIdentificacion,
                RucEmisor                    = _config.v_Ruc,
                NombreComercialEmisor        = _config.v_NombreComercial,
                NombreRazonSocialEmisor      = _config.v_RazonSocial,
                TipoDocumentoIdentidadEmisor = TipoDocumentoIdentidad.RegistroUnicoContribuyentes,
                CodigoMoneda                 = pobjVenta.i_IdMoneda == 1 ? "PEN" : "USD",
                Motivo          = pobjVenta.v_Concepto,
                Total           = pobjVenta.d_ValorVenta ?? 0M,
                TotalCargos     = 0,
                DireccionEmisor = new DireccionType
                {
                    CodigoPais    = "PE",
                    CodigoUbigueo = _config.v_Ubigueo,
                    Departamento  = _config.v_Departamento,
                    Provincia     = _config.v_Provincia,
                    Distrito      = _config.v_Distrito,
                    Zona          = _config.v_Urbanizacion,
                    Direccion     = _config.v_Domicilio
                },
                Impuesto          = GetImpuestosGlobal(pobjVenta),
                DetallesDocumento = new List <InvoiceDetail>()
            };

            //if (!string.IsNullOrWhiteSpace(pobjVenta.v_SerieDocumentoRef))
            //{
            //    baseNote.DocumentoReferenciaNumero = pobjVenta.v_SerieDocumentoRef + "-" + pobjVenta.v_CorrelativoDocumentoRef;
            //    baseNote.DocumentoReferenciaTipoDocumento = (TipoDocumentoElectronico)Enum.ToObject(typeof(TipoDocumentoElectronico), pobjVenta.i_IdTipoDocumentoRef);
            //}
            if (!string.IsNullOrWhiteSpace(pobjVenta.v_NroGuiaRemisionSerie))
            {
                baseNote.GuiaRemisionReferencia = new List <GuiaRemisionType>
                {
                    new GuiaRemisionType {
                        IdTipoGuiaRemision = "09", // Tipo Guia Remision
                        NumeroGuiaRemision = pobjVenta.v_NroGuiaRemisionSerie + "-" + pobjVenta.v_NroGuiaRemisionCorrelativo
                    }
                };
            }
            //Descuento Global
            var factDesc = 1M;
            //if (IsValueNotNullorZero(pobjVenta.d_PorcDescuento))
            //{
            //    factDesc = 1 - (pobjVenta.d_PorcDescuento ?? 0) / 100;
            //    var valTotal = pobjVenta.d_Total / factDesc;
            //    baseNote.DescuentoGlobal = valTotal - pobjVenta.d_Total ?? 0;
            //}
            var sumTotals = LoadDetail(baseNote.DetallesDocumento, pobjVenta, igv);

            baseNote.TotalTributosAdicionales = GetTributosAddicionales(sumTotals, factDesc);
            if (IsValueNotNullorZero(pobjVenta.d_Descuento)) //Si Tiene Descuentos
            {
                baseNote.TotalTributosAdicionales.Add(new TotalTributosType
                {
                    Id           = OtrosConceptosTributarios.TotalDescuentos,
                    MontoPagable = pobjVenta.d_Descuento ?? 0m
                });
            }
            return(baseNote);
        }