private string GetFormatOutputPath(ReporteCotizacion reportData)
        {
            string outputName         = $"FormatoCotizacion_{reportData.CotizacionId}.docx";
            string outputDocumentPath = Path.Combine(FormatOutputPath, outputName);

            return(outputDocumentPath);
        }
        private IEnumerable <KeyValuePair <string, string> > GetParametrosFormato(ReporteCotizacion reportData, int cotizacionId)
        {
            IEnumerable <KeyValuePair <string, string> > listaKeys         = GetGeneralData(reportData);
            IEnumerable <KeyValuePair <string, string> > parametrosFormato = FormatoCotizacionDataAccess.GetParametrosFormato(cotizacionId).Select(param => new KeyValuePair <string, string>(param.Parameter, param.Value));
            IEnumerable <KeyValuePair <string, string> > precios           = GetPrecios(reportData);

            return(listaKeys.Concat(parametrosFormato).Concat(precios));
        }
        private IEnumerable <KeyValuePair <string, string> > GetPrecios(ReporteCotizacion reportData)
        {
            string format = "C";
            List <KeyValuePair <string, string> > precios = new List <KeyValuePair <string, string> > {
                new KeyValuePair <string, string>("[@PrecioSistema]", reportData.Precios.Sistema.ToString(format, CultureInfo)),
                new KeyValuePair <string, string>("[@PrecioServicio1]", reportData.Precios.Instalacion.ToString(format, CultureInfo)),
                new KeyValuePair <string, string>("[@PrecioServicio2]", reportData.Precios.Traslado.ToString(format, CultureInfo)),
                new KeyValuePair <string, string>("[@PrecioTotal]", reportData.Precios.Total.ToString(format, CultureInfo))
            };

            return(precios);
        }
 private void BuildPrecios(ReporteCotizacion reportData)
 {
     reportData.Precios = new Precios();
     foreach (var detalle in reportData.Detalles)
     {
         if (string.Equals("ins", detalle.Referencia, StringComparison.InvariantCultureIgnoreCase))
         {
             reportData.Precios.Instalacion += detalle.PrecioTotal;
         }
         else if (string.Equals("fle", detalle.Referencia, StringComparison.InvariantCultureIgnoreCase) || string.Equals("via", detalle.Referencia, StringComparison.InvariantCultureIgnoreCase))
         {
             reportData.Precios.Traslado += detalle.PrecioTotal;
         }
         else
         {
             reportData.Precios.Sistema += detalle.PrecioTotal;
         }
     }
 }
        public string BuildFormatoCotizacion(int cotizacionId)
        {
            try
            {
                ReporteCotizacion reportData = FormatoCotizacionDataAccess.GetReporteCotizacion(cotizacionId);
                BuildPrecios(reportData);

                string          wordTemplatePath     = GetTemplatePath(reportData.Sistema.TipoSistema);
                string          outputCotizacionPath = GetFormatOutputPath(reportData);
                ReportGenerator ReportGenerator      = new ReportGenerator(reportData);
                reportData.GeneralData = GetParametrosFormato(reportData, cotizacionId);
                ReportGenerator.BuildReport(wordTemplatePath, outputCotizacionPath);
                return(outputCotizacionPath);
            }
            catch (Exception exception)
            {
                EventLogManager.LogErrorEntry(exception);
                throw;
            }
        }
 private IEnumerable <KeyValuePair <string, string> > GetGeneralData(ReporteCotizacion ReporteCotizacionData)
 {
     return(new List <KeyValuePair <string, string> >
     {
         new KeyValuePair <string, string>("[@Fecha]", ReporteCotizacionData.FechaCotizacion.ToString("D", CultureInfo)),
         new KeyValuePair <string, string>("[@FolioCot]", ReporteCotizacionData.CotizacionId),
         new KeyValuePair <string, string>("[@NombreEmpresaCliente]", ReporteCotizacionData.Cliente.Empresa.vchNombre),
         new KeyValuePair <string, string>("[@DomicilioCliente]", ReporteCotizacionData.Cliente.Empresa.Direccion),
         new KeyValuePair <string, string>("[@TituloContactoCliente]", ReporteCotizacionData.Cliente.Contacto.Titulo),
         new KeyValuePair <string, string>("[@NombreContactoCliente]", ReporteCotizacionData.Cliente.Contacto.GetFullName()),
         new KeyValuePair <string, string>("[@TituloContactoCliente]", ReporteCotizacionData.Cliente.Contacto.Titulo),
         new KeyValuePair <string, string>("[@NombreAsesor]", ReporteCotizacionData.AsesorComercial.GetFullName()),
         new KeyValuePair <string, string>("[@PuestoAsesor]", ReporteCotizacionData.AsesorComercial.Titulo),
         //Sistema
         new KeyValuePair <string, string>("[@TipoSistema]", ReporteCotizacionData.Sistema.TipoSistema?.ToUpper()),
         new KeyValuePair <string, string>("[@DimensionFrente]", Convert.ToString(ReporteCotizacionData.Sistema.Dimensiones.Frente, CultureInfo)),
         new KeyValuePair <string, string>("[@DimensionFondo]", Convert.ToString(ReporteCotizacionData.Sistema.Dimensiones.Fondo, CultureInfo)),
         new KeyValuePair <string, string>("[@DimensionAltura]", Convert.ToString(ReporteCotizacionData.Sistema.Dimensiones.Altura, CultureInfo)),
         new KeyValuePair <string, string>("[@DimensionPeso]", Convert.ToString(ReporteCotizacionData.Sistema.Dimensiones.Peso, CultureInfo)),
         new KeyValuePair <string, string>("[@DimensionCargaMaxima]", Convert.ToString(ReporteCotizacionData.Sistema.Dimensiones.CargaMaxima, CultureInfo)),
     });
 }
        /// <summary>
        ///
        /// </summary>
        /// <param name="cotizacionId"></param>
        /// <returns></returns>
        public ReporteCotizacion GetReporteCotizacion(int cotizacionId)
        {
            try
            {
                using (FormatoCotizacionDataContext cotizacionDataContext = new FormatoCotizacionDataContext(Helper.ConnectionString()))
                {
                    var query = cotizacionDataContext.stp_ListarReporteCotizacion(cotizacionId).Select(reporteCotizacion => new ReporteCotizacion
                    {
                        CotizacionId = reporteCotizacion.vchFolio,
                        Sistema      = new Sistema
                        {
                            TipoSistema = reporteCotizacion.vchSistema,
                            Dimensiones = new Dimensiones
                            {
                                Frente      = 3.14,
                                Fondo       = 3.10,
                                Altura      = 2.00,
                                Peso        = 1000,
                                CargaMaxima = 2500
                            }
                        },
                        Cliente = new Cliente
                        {
                            Empresa = new Empresa
                            {
                                vchNombre = reporteCotizacion.vchEmpresa,
                                Direccion = "Centeno No. 486,\nCol. Granjas\nDel. Iztacalco"
                            },
                            Contacto = new Usuario
                            {
                                Nombre          = "Francisco",
                                ApellidoPaterno = "González",
                                ApellidoMaterno = "Boca Negra",
                                Titulo          = "Ingeniero"
                            }
                        },
                        AsesorComercial = new Usuario
                        {
                            Nombre          = "Fernando",
                            ApellidoPaterno = "Ricardo",
                            ApellidoMaterno = "Morán",
                            Titulo          = "Asesor Comercial"
                        },
                    });
                    ReporteCotizacion reporte = query.FirstOrDefault();
                    var materiales            = cotizacionDataContext.Cotizacion_ListarMateriales(cotizacionId);

                    IEnumerable <ArticulosSistema> detalles = cotizacionDataContext.stp_ListarReporteDetalleCotizacion(cotizacionId).Select(detalle => new ArticulosSistema
                    {
                        Referencia  = detalle.REF,
                        Descripcion = detalle.vchDescripcion,
                        PrecioTotal = Convert.ToDouble(detalle.PrecioTotal ?? default)
                    }).ToList();

                    reporte.Detalles = detalles;
                    //reporte.Elementos = detalles.Select(item => new ArticulosSistema
                    //{
                    //    Referencia = item.REF,
                    //    Cantidad = item.intCantidad ?? default,
                    //    SKU = $"{item.SKU}",
                    //    Descripcion = item.vchDescripcion
                    //});



                    reporte.Elementos = materiales.Select(material =>
                                                          new ArticulosSistema
                    {
                        Referencia  = material.Ref,
                        Cantidad    = material.Cantidad ?? 0,
                        Descripcion = material.Descripcion
                    }).ToList();
                    return(reporte);
                }
예제 #8
0
 public ReportGenerator(ReporteCotizacion reporteCotizacionData)
 {
     ReporteCotizacionData = reporteCotizacionData;
     OrdenArticulos        = GetOrdenes();
 }