public int InsertarDetalle(VentaDetalleGasolutionsInfo ventaInfo) { int resultado; try { using (var oConnection = new SqlConnection(HelperAccesoDatos.GetCadenaConexion())) { var sqlComando = new SqlCommand { Connection = oConnection, CommandText = "InsertarVentaDetalleGasolutions", CommandType = CommandType.StoredProcedure }; sqlComando.Parameters.Add("VentaGasolutionsId", SqlDbType.Int).Value = ventaInfo.VentaGasolutionsId; sqlComando.Parameters.Add("Id", SqlDbType.Int).Value = ventaInfo.Id; sqlComando.Parameters.Add("Cantidad", SqlDbType.Decimal).Value = ventaInfo.Cantidad; sqlComando.Parameters.Add("CodigoItem", SqlDbType.VarChar).Value = ventaInfo.CodigoItem; sqlComando.Parameters.Add("Descripcion", SqlDbType.VarChar).Value = ventaInfo.Descripcion; sqlComando.Parameters.Add("Impuesto", SqlDbType.Decimal).Value = ventaInfo.Impuesto; sqlComando.Parameters.Add("PrecioUnitario", SqlDbType.Decimal).Value = ventaInfo.PrecioUnitario; sqlComando.Parameters.Add("TotalVenta", SqlDbType.Decimal).Value = ventaInfo.TotalVenta; sqlComando.Parameters.Add("UnidadMedida", SqlDbType.VarChar).Value = ventaInfo.UnidadMedida; sqlComando.Parameters.Add("TipoImpuesto", SqlDbType.VarChar).Value = ventaInfo.TipoImpuesto; sqlComando.Parameters.Add("TipoPrecio", SqlDbType.VarChar).Value = ventaInfo.TipoPrecio; oConnection.Open(); resultado = Convert.ToInt32(sqlComando.ExecuteScalar()); oConnection.Close(); } } catch (Exception ex) { throw ex; } return(resultado); }
public static string ImprimirComprobanteAntes(string numeroDocumento, string tipoDocumentoId, string serie, string correlativo, string fechaEmision, decimal montoTotal) { var mensaje = String.Empty; try { var fecha = DateTime.ParseExact(fechaEmision, "dd/MM/yyyy", System.Globalization.CultureInfo.InvariantCulture); // var ventaInfoLista = new Negocio.VentaPetroamerica().ListarPaginado(0, numeroDocumento.Trim(), tipoDocumentoId, serie, correlativo, fecha, fecha, 0, 0, String.Empty, 0, 0); var ventaInfoLista = new Negocio.VentaGasolutions().ListarPaginado(0, String.Empty, tipoDocumentoId, serie + "-" + correlativo, fecha, fecha, 0, 0, 0, 0); var ventaGasolutionsDetalleInfo = new VentaDetalleGasolutionsInfo(); ventaInfoLista = ventaInfoLista.Where(v => v.TotalVenta.Equals(montoTotal)).ToList(); var ventaInfo = new VentaGasolutionsInfo(); if (ventaInfoLista.Count > 0) { ventaInfo = ventaInfoLista.FirstOrDefault(); ventaGasolutionsDetalleInfo = new Negocio.VentaGasolutions().ListarDetalle(ventaInfo.VentaGasolutionsId, 0).FirstOrDefault(); } else { mensaje = "No se ha encontrado el comprobante." + "@" + "" + "@" + ventaInfo.NroDocumentoReceptor; return(mensaje); } var ventaDetalleInfo = new List <VentaDetalleInfo>(); _documento = new DocumentoElectronico(); #region Documento _documento.CalculoDetraccion = 0; _documento.CalculoIgv = Decimal.Divide(18, 100); _documento.CalculoIsc = 0; _documento.DescuentoGlobal = 0; #region Emisor var emisor = new DocumentoElectronico().Emisor; emisor.Departamento = ventaInfo.DepartamentoEmisor; emisor.Direccion = ventaInfo.DireccionEmisor; emisor.Distrito = ventaInfo.DistritoEmisor; emisor.NombreComercial = ventaInfo.NombreComercialEmisor; emisor.NombreLegal = ventaInfo.NombreLegalEmisor; emisor.NroDocumento = ventaInfo.NroDocumentoEmisor; emisor.Provincia = ventaInfo.ProvinciaEmisor; emisor.TipoDocumento = "6"; emisor.Ubigeo = ventaInfo.UbigeoEmisor; emisor.Urbanizacion = ""; _documento.Emisor = emisor; #endregion _documento.Exoneradas = 0; _documento.FechaEmision = ventaInfo.FechaEmision.ToString("dd/MM/yyyy"); _documento.Gratuitas = 0; _documento.Gravadas = ventaInfo.Gravadas; _documento.IdDocumento = ventaInfo.IdDocumento; _documento.Inafectas = 0; #region Items var itemId = 1; //foreach (var vd in ventaDetalleInfo) //{ var item = new DetalleDocumento(); //item.Cantidad = vd.Cantidad; item.Cantidad = ventaGasolutionsDetalleInfo.Cantidad; //item.Descripcion = vd.Producto; item.Descripcion = ventaGasolutionsDetalleInfo.Descripcion; //item.Id = itemId; item.Id = ventaGasolutionsDetalleInfo.Id; itemId++; //item.Impuesto = vd.Igv; item.Impuesto = ventaGasolutionsDetalleInfo.Impuesto; //item.PrecioUnitario = vd.PrecioUnitario; item.PrecioUnitario = ventaGasolutionsDetalleInfo.PrecioUnitario; //item.Suma = vd.SubTotal; item.Suma = ventaGasolutionsDetalleInfo.TotalVenta; //item.TotalVenta = vd.MontoTotal; item.TotalVenta = ventaGasolutionsDetalleInfo.TotalVenta; //item.UnidadMedida = vd.UnidadMedida; item.UnidadMedida = ventaGasolutionsDetalleInfo.UnidadMedida; item.Descuento = 0; item.ImpuestoSelectivo = 0; item.OtroImpuesto = 0; item.PrecioReferencial = 0; item.TipoImpuesto = "10"; item.TipoPrecio = "01"; _documento.Items.Add(item); //} #endregion _documento.Moneda = ventaInfo.MonedaId.Equals(Constantes.MonedaSoles) ? Constantes.MonedaSolesSunat : Constantes.MonedaDolaresSunat; _documento.MontoAnticipo = 0; _documento.MontoDetraccion = 0; _documento.MontoEnLetras = Herramientas.NumeroALetras.numeroAletras(ventaInfo.TotalVenta); _documento.MontoPercepcion = 0; _documento.PlacaVehiculo = ventaInfo.PlacaVehiculo; #region Receptor var receptor = new DocumentoElectronico().Receptor; receptor.Departamento = ""; receptor.Direccion = ventaInfo.DireccionReceptor; receptor.Distrito = ""; receptor.NombreComercial = ventaInfo.NombreComercialReceptor; receptor.NombreLegal = ventaInfo.NombreLegalReceptor; receptor.NroDocumento = ventaInfo.NroDocumentoReceptor; receptor.Provincia = ""; receptor.TipoDocumento = ventaInfo.TipoDocumentoReceptor; receptor.Ubigeo = ""; receptor.Urbanizacion = ""; _documento.Receptor = receptor; #endregion _documento.TipoDocumento = ventaInfo.TipoDocumento; _documento.TotalIgv = ventaInfo.TotalIgv; _documento.TotalIsc = 0; _documento.TotalOtrosTributos = 0; _documento.TotalVenta = ventaInfo.TotalVenta; #endregion string metodoApi; switch (_documento.TipoDocumento) { case "07": metodoApi = "api/GenerarNotaCredito"; break; case "08": metodoApi = "api/GenerarNotaDebito"; break; default: metodoApi = "api/GenerarFactura"; break; } var rutaPdfFactura = HostingEnvironment.MapPath("~/Archivos/Documentos/Cliente/" + ventaInfo.NroDocumentoReceptor + ""); #region Generando XML var client = new RestClient(BaseUrl); var requestInvoice = new RestRequest("GenerarFactura", Method.POST) { RequestFormat = DataFormat.Json }; requestInvoice.AddBody(_documento); var documentoResponse = client.Execute <DocumentoResponse>(requestInvoice); if (!documentoResponse.Data.Exito) { throw new ApplicationException(documentoResponse.Data.MensajeError); } // string rutaXml = HostingEnvironment.MapPath("~/Archivos/Facturacion/XML/" + _documento.IdDocumento + ".xml"); string rutaXml = HostingEnvironment.MapPath("~/Archivos/Facturacion/XML/Cliente"); if (!Directory.Exists(rutaXml)) { Directory.CreateDirectory(rutaXml); } File.WriteAllBytes(rutaXml + "/" + _documento.IdDocumento + ".xml", Convert.FromBase64String(documentoResponse.Data.TramaXmlSinFirma)); #endregion #region Firma string rutaCertificado = HostingEnvironment.MapPath("~/Archivos/Facturacion/certificado.pfx"); var firmado = new FirmadoRequest { TramaXmlSinFirma = documentoResponse.Data.TramaXmlSinFirma, CertificadoDigital = Convert.ToBase64String(File.ReadAllBytes(rutaCertificado)), PasswordCertificado = "9dGxdmm5JHKwKsXc", UnSoloNodoExtension = false }; var requestFirma = new RestRequest("Firmar", Method.POST) { RequestFormat = DataFormat.Json }; requestFirma.AddBody(firmado); var responseFirma = client.Execute <FirmadoResponse>(requestFirma); if (!responseFirma.Data.Exito) { throw new ApplicationException(responseFirma.Data.MensajeError); } //string rutaXmlFirmado = HostingEnvironment.MapPath("~/Archivos/Facturacion/XML/Cliente/" + _documento.IdDocumento + "_Firmado.xml"); string rutaXmlFirmado = HostingEnvironment.MapPath("~/Archivos/Facturacion/XML/Cliente"); if (!Directory.Exists(rutaXmlFirmado)) { Directory.CreateDirectory(rutaXmlFirmado); } File.WriteAllBytes(rutaXmlFirmado + "/" + _documento.IdDocumento + "_Firmado.xml", Convert.FromBase64String(responseFirma.Data.TramaXmlFirmado)); #endregion #region Impresión Comprobante var htmlToComprobante = new NReco.PdfGenerator.HtmlToPdfConverter(); var nombreArchivoComprobante = String.Empty; var comprobanteSB = new StringBuilder(); if (ventaInfo.TipoDocumento.Equals(Constantes.TipoComprobanteFactura)) { comprobanteSB.Append(Herramientas.Helper.ObtenerTexto("~/Archivos/Plantillas/FacturaJulcan.html")); #region Factura //comprobanteSB.Replace("@EMPRESA_LOGO", HttpContext.Current.Server.MapPath("~/Imagenes/petroamerica_logo.png")); comprobanteSB.Replace("@EMPRESA_LOGO", String.Empty); comprobanteSB.Replace("@EMPRESA_NOMBRE", ventaInfo.NombreComercialEmisor); comprobanteSB.Replace("@EMPRESA_DIRECCION", ventaInfo.DireccionEmisor); comprobanteSB.Replace("@GRIFO_DIRECCION", String.Empty); comprobanteSB.Replace("@EMPRESA_RUC", ventaInfo.NroDocumentoEmisor); comprobanteSB.Replace("@IMPRESORA", String.Empty); comprobanteSB.Replace("@NUMEROCOMPROBANTE", ventaInfo.IdDocumento); comprobanteSB.Replace("@FECHA", fechaEmision); comprobanteSB.Replace("@FECHA", fechaEmision); comprobanteSB.Replace("@CLIENTE_NOMBRE", ventaInfo.NombreComercialReceptor); comprobanteSB.Replace("@CLIENTE_RUC", ventaInfo.NroDocumentoReceptor); comprobanteSB.Replace("@CLIENTE_PLACA", ventaInfo.PlacaVehiculo); comprobanteSB.Replace("@CLIENTE_DIRECCION", ventaInfo.DireccionReceptor); comprobanteSB.Replace("@CANTIDAD", ventaGasolutionsDetalleInfo.Cantidad.ToString("N2")); comprobanteSB.Replace("@PRECIO", ventaGasolutionsDetalleInfo.PrecioUnitario.ToString("N2")); comprobanteSB.Replace("@MONTO_VENTA", ventaInfo.Gravadas.ToString("N2")); comprobanteSB.Replace("@PRODUCTO", ventaGasolutionsDetalleInfo.Descripcion); comprobanteSB.Replace("@MONEDA_SIMBOLO", ventaInfo.SimboloMoneda); comprobanteSB.Replace("@MONTO_IMPUESTO", ventaInfo.TotalIgv.ToString("N2")); comprobanteSB.Replace("@MONTO_TOTAL", ventaInfo.TotalVenta.ToString("N2")); comprobanteSB.Replace("@VENDEDOR", String.Empty); comprobanteSB.Replace("@CODIGO_HASH", responseFirma.Data.ResumenFirma); comprobanteSB.Replace("@TEXTO_MONTO_TOTAL", NumeroALetras.numeroAletras(ventaInfo.TotalVenta)); #endregion nombreArchivoComprobante = "Factura_" + DateTime.Now.ToString("ddMMyyyyhhmmss"); // + ".pdf"; } if (ventaInfo.TipoDocumento.Equals(Constantes.TipoComprobanteBoletaVenta)) { comprobanteSB.Append(Herramientas.Helper.ObtenerTexto("~/Archivos/Plantillas/BoletaJulcan.html")); #region Boleta //comprobanteSB.Replace("@EMPRESA_LOGO", HttpContext.Current.Server.MapPath("~/Imagenes/petroamerica_logo.png")); comprobanteSB.Replace("@EMPRESA_LOGO", String.Empty); comprobanteSB.Replace("@EMPRESA_NOMBRE", ventaInfo.NombreComercialEmisor); comprobanteSB.Replace("@EMPRESA_DIRECCION", ventaInfo.DireccionEmisor); comprobanteSB.Replace("@GRIFO_DIRECCION", String.Empty); comprobanteSB.Replace("@EMPRESA_RUC", ventaInfo.NroDocumentoEmisor); comprobanteSB.Replace("@IMPRESORA", String.Empty); comprobanteSB.Replace("@NUMEROCOMPROBANTE", ventaInfo.IdDocumento); comprobanteSB.Replace("@FECHA", fechaEmision); comprobanteSB.Replace("@CLIENTE_NOMBRE", ventaInfo.NombreComercialReceptor); comprobanteSB.Replace("@CLIENTE_DIRECCION", ventaInfo.DireccionReceptor); comprobanteSB.Replace("@CANTIDAD", ventaGasolutionsDetalleInfo.Cantidad.ToString("N2")); comprobanteSB.Replace("@PRECIO", ventaGasolutionsDetalleInfo.PrecioUnitario.ToString("N2")); comprobanteSB.Replace("@MONTO_VENTA", ventaInfo.Gravadas.ToString("N2")); comprobanteSB.Replace("@PRODUCTO", ventaGasolutionsDetalleInfo.Descripcion); comprobanteSB.Replace("@MONEDA_SIMBOLO", ventaInfo.SimboloMoneda); comprobanteSB.Replace("@MONTO_IMPUESTO", ventaInfo.TotalIgv.ToString("N2")); comprobanteSB.Replace("@MONTO_TOTAL", ventaInfo.TotalVenta.ToString("N2")); comprobanteSB.Replace("@VENDEDOR", String.Empty); comprobanteSB.Replace("@CODIGO_HASH", responseFirma.Data.ResumenFirma); comprobanteSB.Replace("@TEXTO_MONTO_TOTAL", NumeroALetras.numeroAletras(ventaInfo.TotalVenta)); #endregion nombreArchivoComprobante = "Boleta_" + DateTime.Now.ToString("ddMMyyyyhhmmss"); // + ".pdf"; } if (!Directory.Exists(rutaPdfFactura)) { Directory.CreateDirectory(rutaPdfFactura); } #region Codigo QR var codigoQR = ventaInfo.NroDocumentoReceptor + "|" + ventaInfo.TipoDocumento + "|" + ventaInfo.IdDocumento.Substring(0, 4) + "|" + ventaInfo.IdDocumento.Substring(5, 8) + "|" + ventaInfo.TotalIgv + "|" + ventaInfo.TotalVenta + "|" + ventaInfo.FechaEmision + "|" + ventaInfo.TipoDocumentoReceptor + "|" + ventaInfo.NroDocumentoReceptor + "|" + responseFirma.Data.ResumenFirma + "|" + responseFirma.Data.ValorFirma; // instantiate a writer object var barcodeWriter = new ZXing.BarcodeWriter(); // set the barcode format barcodeWriter.Format = BarcodeFormat.PDF_417; // write text and generate a 2-D barcode as a bitmap // barcodeWriter.Write(codigoQR).Save(@"C:\Users\jeremy\Desktop\generated.bmp"); //barcodeWriter.Write(codigoQR).Save(HostingEnvironment.MapPath("~/Archivos/Documentos/Cliente/" + ventaInfo.NumeroDocumentoCliente + "/" + _documento.IdDocumento + ".bmp")); barcodeWriter.Write(codigoQR).Save(rutaPdfFactura + "/" + _documento.IdDocumento + ".bmp"); #endregion comprobanteSB.Replace("@CODIGO_QR", HttpContext.Current.Server.MapPath("~/Archivos/Documentos/Cliente/" + ventaInfo.NroDocumentoReceptor + "/" + _documento.IdDocumento + ".bmp")); comprobanteSB = Herramientas.Helper.EncodeHtml(comprobanteSB); //var margins = new PageMargins(); //margins.Left = 1; //htmlToComprobante.Margins = margins; var pdfBytesFactura = htmlToComprobante.GeneratePdf(comprobanteSB.ToString()); // var comprobanteImpreso = rutaPdfFactura + "\\" + nombreArchivoComprobante + ".pdf"; File.WriteAllBytes(rutaPdfFactura + "/" + nombreArchivoComprobante + ".pdf", pdfBytesFactura); File.WriteAllBytes(rutaPdfFactura + "/" + nombreArchivoComprobante + ".xml", Convert.FromBase64String(responseFirma.Data.TramaXmlFirmado)); #endregion mensaje = "El Comprobante se generó correctamente" + "@" + nombreArchivoComprobante + "@" + ventaInfo.NroDocumentoReceptor; } catch (Exception ex) { bool rethrow = ExceptionPolicy.HandleException(ex, Constantes.ExcepcionPoliticaPresentacion); mensaje = rethrow ? ex.Message : Constantes.ExcepcionPoliticaPresentacion; // var sex = new SmartException(ex, usuarioInfo.Matricula, codigoOperacion.ToString()); //RegistrarScript("MostrarMensaje('" + mensaje.Replace("'", "") + "');", "ErrorConsultaComprobante"); mensaje = (mensaje + "-" + ex.Source) + "@" + "" + "@" + numeroDocumento; } return(mensaje); }