public string GenerarAnulacionComprobanteElectronicoPago(dto.ComprobanteAnulacionElectronicaRequest req) { string URL_BASE = "http://13.68.199.98/wssCargaBajas/cargaBajas.asmx"; string url = URL_BASE; WebRequest request = WebRequest.Create(url); request.Method = "POST"; request.ContentType = "text/xml; charset=utf-8;"; string postData = req.Xml; byte[] byteArray = Encoding.ASCII.GetBytes(postData); request.ContentLength = byteArray.Length; using (var writeStream = request.GetRequestStream()) { writeStream.Write(byteArray, 0, byteArray.Length); } string responseFromServer = string.Empty; string CodigoError = string.Empty; string Mensajes = string.Empty; string TrackId = string.Empty; using (var response = (HttpWebResponse)request.GetResponse()) { var respuestita = response.GetResponseStream(); StreamReader reader = new StreamReader(respuestita); responseFromServer = reader.ReadToEnd(); var xmlDoc = new XmlDocument(); xmlDoc.LoadXml(responseFromServer); CodigoError = xmlDoc.GetElementsByTagName("Codigo")[0].InnerText; Mensajes = xmlDoc.GetElementsByTagName("Mensajes")[0].InnerText; TrackId = xmlDoc.GetElementsByTagName("TrackId")[0].InnerText; var nombreArchivo = "Logs/" + req.Ruc + "_" + req.Serie + "_" + req.Folio + "_" + DateTime.Now.ToString("yyyy-MM-dd_HH_mm_ss") + ".log"; System.IO.File.WriteAllText(nombreArchivo, Mensajes); } string respuesta = string.Empty; //if (CodigoError.IndexOf("Error") == -1) //{ dto.ComprobanteByIdRequest requestComprobante = new dto.ComprobanteByIdRequest(); requestComprobante.IdComprobante = req.IdComprobante; new app.Comprobante().AnularComprobante(req, 5); respuesta = "El documento ha sido procesado con exito"; //} //else //{ // respuesta.Mensaje = "Ha ocurrido un problema con el envio del documento.\nInfo:" + Mensajes; //} return(respuesta); }
public void AnularComprobante(dto.ComprobanteAnulacionElectronicaRequest request, byte estado) { var comprobante = new dom.Comprobante().BuscarPorId(request.IdComprobante); comprobante.Estado = estado; comprobante.MotiAnulacion = request.MotivoAnulacion; new dom.Comprobante().Modificar(comprobante); byte tipodete = 1; if (comprobante.ComprobanteTipoId == 7) { tipodete = 2; } var detalle = new dom.ComprobanteDetalles().Buscar(c => c.ComprobanteId == comprobante.Id).ToList(); dato.Almacen objAlmacen; foreach (var item in detalle) { var producto = new dom.Producto().BuscarPorId(item.ProductoId); if (item.Tipo == 1) { if (tipodete == 2) { if (producto.Stock - item.Cantidad > 0) { producto.Stock = producto.Stock - item.Cantidad; } else { producto.Stock = 0; } } else { producto.Stock = producto.Stock + item.Cantidad; } new dom.Producto().Modificar(producto); objAlmacen = new dato.Almacen(); objAlmacen.Tipo = tipodete; objAlmacen.UsuarioId = request.UsuarioId; objAlmacen.ProductoId = item.ProductoId; objAlmacen.ProductoNombre = item.ProductoNombre; objAlmacen.UnidadMedidaId = item.UnidadMedidaId; objAlmacen.Cantidad = (decimal)item.Cantidad; objAlmacen.Fecha = DateTime.Now; objAlmacen.EmpresaId = comprobante.EmpresaId; objAlmacen.ComprobanteId = comprobante.Id; objAlmacen.Precio = item.PrecioTotal; new dom.Almacen().Adicionar(objAlmacen); } } }