public ActionResult Editar(Guid id) { GetPAC_Result pacs = db.GetPAC(id, 1).First(); ViewBag.RegimenFiscal = db.RegimenFiscal.ToList(); return(PartialView("_EditarPAC", pacs)); }
public ActionResult ComprobarLlave(Guid Id) { Utils util = new Utils(); GetPAC_Result pac = db.GetPAC(Id, 1).FirstOrDefault(); string Cer = Server.MapPath("~/Certificados/" + pac.RFC + "/" + pac.RFC + ".cer"); string Key = Server.MapPath("~/Certificados/" + pac.RFC + "/" + pac.RFC + ".key"); string Dir = Server.MapPath("~/Facturas/" + pac.RFC); string Factura = Dir + "/Facturas/Prueba.xml"; RVCFDI33.GeneraCFDI objCfdi = new RVCFDI33.GeneraCFDI(); objCfdi.agregarCertificado(Cer); objCfdi.agregarComprobante33("A", "6172", System.DateTime.Now.ToString("yyyy-MM-ddTHH:mm:ss"), "01", "", 1, 0, "MXN", "1", 1.16, "I", "PUE", "39300", ""); objCfdi.agregarEmisor(pac.RFC, pac.Nombre, pac.RegimenFiscal.Trim()); objCfdi.agregarReceptor("XAXX010101000", "Cliente general", "", "", "P01"); objCfdi.agregarConcepto("01010101", "1", 1.00, "EA", "Pieza", "Producto Generica", 1.00, 1.00, 0.00); objCfdi.agregarImpuestoConceptoTraslado(1, "002", "Tasa", 0.160000, 0.16); objCfdi.agregarImpuestos(0, 0.16); objCfdi.agregarTraslado("002", "Tasa", 0.160000, 0.16); objCfdi.GeneraXML(Key, pac.ContrasenaLlave); if (objCfdi.MensajeError != "") { return(Json(new { error = "Error", Message = objCfdi.MensajeError }, JsonRequestBehavior.AllowGet)); } string XML = objCfdi.Xml.Replace("Sello=\"\"", "Sello=\"" + objCfdi.SelloEmisor + "\"").Replace(",", "."); System.IO.File.WriteAllText(Factura, XML); objCfdi.TimbrarCfdiArchivo(Factura, pac.Usuario, pac.Contrasena, "http://generacfdi.com.mx/rvltimbrado/service1.asmx", Factura.Replace("Prueba.xml", ""), "Timbrado", true); if (objCfdi.MensajeError == "") { RVCFDI33.RVCancelacion.Cancelacion obj = new RVCFDI33.RVCancelacion.Cancelacion(); string cadenaCancelacion = obj.crearXMLCancelacionCadena(Cer, Key, pac.ContrasenaLlave, objCfdi.UUID); if (obj.MensajeDeError == "") { obj.enviarCancelacionCadena(cadenaCancelacion, pac.RFC, pac.Contrasena, "http://generacfdi.com.mx/rvltimbrado/service1.asmx", true); if (obj.CodigoDeError == 0) { return(Json(new { error = "none", Message = "Se Timbro Correctamente" }, JsonRequestBehavior.AllowGet)); } else { return(Json(new { error = "error", Message = obj.CodigoDeError }, JsonRequestBehavior.AllowGet)); } } else { return(Json(new { error = "error", Message = obj.MensajeDeError }, JsonRequestBehavior.AllowGet)); } } else { return(Json(new { error = "error", Message = objCfdi.MensajeError }, JsonRequestBehavior.AllowGet)); } }
public ActionResult Descargar(Guid id) { GetPAC_Result pac = db.GetPAC(id, 1).First(); byte[] Cer = pac.Certificado; byte[] Key = pac.Llave; MemoryStream Certificado = new MemoryStream(Cer); MemoryStream Llave = new MemoryStream(Key); using (ZipFile zip = new ZipFile()) { MemoryStream memory = new MemoryStream(); zip.AddEntry("certificado.cer", Certificado); zip.AddEntry("llave.key", Llave); zip.Save(memory); memory.Seek(0, SeekOrigin.Begin); return(File(memory, "application/zip", pac.RFC + ".zip")); } }
public ActionResult Editar(GetPAC_Result pac) { GetPAC_Result old = db.GetPAC(pac.Id, 1).First(); try { /* db.UpdatePAC(pac.Id, pac.RFC, old.Usuario, old.Contrasena, pac.ContrasenaLlave, pac.Nombre, pac.CURP, * pac.PersonaMoral, old.Llave, pac.RegimenFiscal, pac.RegistroPatronal, pac.RfcPatronOrigen, * old.Certificado,old.FechaVigenciaIncio,old.FechaVigenciaFinal,old.UsuarioCreacion,old.FechaCreacion,old.Logo);*/ string PATH = Server.MapPath("~/Certificados/" + pac.RFC); if (!System.IO.Directory.Exists(PATH)) { System.IO.Directory.CreateDirectory(PATH); } System.IO.File.WriteAllBytes(PATH + "/" + pac.RFC + ".cer", old.Certificado); System.IO.File.WriteAllBytes(PATH + "/" + pac.RFC + ".key", old.Llave); } catch (Exception ex) { return(Json(new { error = ex.InnerException, Message = ex.Message }, JsonRequestBehavior.AllowGet)); } return(Json(new { error = "none" }, JsonRequestBehavior.AllowGet)); }
public ActionResult Cancelar(Guid Id) { try { CFDI Factura = db.GetCFDI(Id, 1).FirstOrDefault(); GetPAC_Result PAC = db.GetPAC(null, 0).Where(x => x.Id == Factura.IdProveedor).First(); RVCFDI33.RVCancelacion.Cancelacion Cancelar = new RVCFDI33.RVCancelacion.Cancelacion(); string Certificado = Server.MapPath("~/Certificados/" + PAC.RFC + "/" + PAC.RFC + ".cer"), Llave = Server.MapPath("~/Certificados/" + PAC.RFC + "/" + PAC.RFC + ".key"), Cancelacion = Server.MapPath("~/Facturas/" + PAC.RFC + "/Cancelaciones"); string cadenaCancelacion = Cancelar.crearXMLCancelacionCadena(Certificado, Llave, PAC.ContrasenaLlave, Factura.Id.ToString()); if (Cancelar.MensajeDeError == "") { //Cancelar.enviarCancelacionCadena(cadenaCancelacion, PAC.RFC, PAC.Contrasena, "http://generacfdi.com.mx/rvltimbrado/service1.asmx"); if (Cancelar.CodigoDeError == 0) { if (!System.IO.Directory.Exists(Cancelacion)) { System.IO.Directory.CreateDirectory(Cancelacion); } System.IO.File.WriteAllText(Cancelacion + "\\Cancelacion_" + Factura.Folio + ".xml", cadenaCancelacion); db.UpdateCFDI(Id, Factura.Tipo, Factura.Folio, Factura.XML, Factura.Ruta, Factura.IdCliente, Factura.IdEmpleado, Factura.IdProveedor, true); return(Json(new { error = false }, JsonRequestBehavior.AllowGet)); } else { return(Json(new { error = "Error Al enviar la Cadena De Cancelacion", Message = Cancelar.MensajeDeError }, JsonRequestBehavior.AllowGet)); } } else { return(Json(new { error = "Error Al hacer la Cadena De Cancelacion", Message = Cancelar.MensajeDeError }, JsonRequestBehavior.AllowGet)); } } catch (Exception ex) { return(Json(new { error = "error", Message = ex.Message }, JsonRequestBehavior.AllowGet)); } }
public ActionResult Descarga(ReciboView recibo) { byte[] pdf; int count = 0; try { string Nombre = recibo.nombreCompleto; byte[] Logo; string direccion = ""; string RFC = ""; string Mes = recibo.mes.FirstOrDefault(); string server = Server.MapPath("~/Content/Recibos"); Dictionary <string, string> conceptos = new Dictionary <string, string>(); Guid id = recibo.proveedor; GetPAC_Result pac = db.GetPAC(id, 1).First(); if (recibo.mensualidad == "on") { using (ZipFile zip = new ZipFile()) { MemoryStream memory = new MemoryStream(); List <Clientes> clientes = db.GetClientes(null, true, 0).OrderBy(x => x.Colonia).ToList(); foreach (var cliente in clientes) { Nombre = cliente.Nombres + " " + cliente.ApellidoPaterno + " " + cliente.ApellidoMaterno; string calle = cliente.Calle == null || cliente.Calle == "" ? "" : cliente.Calle, noExterior = cliente.NoExterior == null || cliente.NoExterior == "" ? "" : cliente.NoExterior, NoInterior = cliente.NoInterior == null || cliente.NoInterior == "" ? "" : cliente.NoInterior, Colonia = cliente.Colonia == null || cliente.Colonia == "" ? "" : cliente.Colonia; direccion = Colonia + ", " + calle + " " + noExterior + " " + NoInterior + "\n" + cliente.Ciudad + "," + cliente.Estado; RFC = cliente.RFC == null || cliente.RFC == "" ? "" : cliente.RFC; Logo = System.IO.File.ReadAllBytes(Server.MapPath("~/Images/Avenzo_Logo_Header.png")); string cantidad = "1"; string unidad = "1"; System.Globalization.CultureInfo ci = new System.Globalization.CultureInfo("es-MX"); DateTime time = DateTime.Now.AddMonths(1); string concepto = "Mensualidad de " + time.ToString("MMMM", ci) + " " + time.ToString("yyyy", ci); Catalogos catalogo = db.Catalogos.Where(x => x.IdCatalogo == cliente.TipoAfilacion).FirstOrDefault(); string precio = catalogo == null?"0.00":catalogo.Valor.Value.ToString("f2"); conceptos["cantidad"] = float.Parse(cantidad).ToString("f2") + "\n"; conceptos["unidad"] = unidad + "\n"; conceptos["descripcion"] = concepto + "\n"; conceptos["valorUnitario"] = "$ " + (float.Parse(precio) / 1.16).ToString("f2") + "\n"; conceptos["importe"] = "$ " + (float.Parse(precio) / 1.16).ToString("f2") + "\n"; float Total = float.Parse(precio); pdf = PDF.CrearRecibo(Nombre, RFC, conceptos, direccion, server, Total, true, Logo, "MXN", Mes); MemoryStream tempPDF = new MemoryStream(pdf); zip.AddEntry(count + "_Recibo_" + Nombre.Replace(" ", "_") + ".pdf", tempPDF); count++; } zip.Save(memory); memory.Seek(0, SeekOrigin.Begin); return(File(memory, "application/zip", "Recibos_" + ".zip")); } } else { Guid IdCliente = recibo.id; List <Clientes> Clientes = db.GetClientes(IdCliente, true, 1).ToList(); if (Clientes.Count > 0) { string calle = Clientes.First().Calle == null || Clientes.First().Calle == "" ? "" : Clientes.First().Calle, noExterior = Clientes.First().NoExterior == null || Clientes.First().NoExterior == "" ? "" : Clientes.First().NoExterior, NoInterior = Clientes.First().NoInterior == null || Clientes.First().NoInterior == "" ? "" : Clientes.First().NoInterior, Colonia = Clientes.First().Colonia == null || Clientes.First().Colonia == "" ? "" : Clientes.First().Colonia; direccion = Colonia + "," + calle + " " + noExterior + " " + NoInterior + "\nTelefono: " + Clientes.First().Telefono; RFC = Clientes.First().RFC == null || Clientes.First().RFC == "" ? "" : Clientes.First().RFC; if (User.IsInRole("Admin")) { Guid Id = recibo.proveedor; GetPAC_Result PAC = db.GetPAC(Id, 1).First(); Logo = null; if (Logo == null) { Logo = System.IO.File.ReadAllBytes(Server.MapPath("~/Images/Avenzo_Logo_Header.png")); } } else { GetPAC_Result PAC = db.GetPAC(Clientes.First().IdProveedor, 1).First(); Logo = null; if (Logo == null) { Logo = System.IO.File.ReadAllBytes(Server.MapPath("~/Images/Avenzo_Logo_Header.png")); } } } else { Logo = System.IO.File.ReadAllBytes(Server.MapPath("~/Images/Avenzo_Logo_Header.png")); } float Total = 0; conceptos["cantidad"] = ""; conceptos["unidad"] = ""; conceptos["descripcion"] = ""; conceptos["valorUnitario"] = ""; conceptos["importe"] = ""; DateTime time = DateTime.Now; foreach (var concepto in recibo.conceptos) { string cantidad = concepto.cantidad.ToString("f2"); string unidad = concepto.unidad; string descripcion = concepto.descripcion; string precio = concepto.precio.ToString("f2"); conceptos["cantidad"] = conceptos["cantidad"] + "" + float.Parse(cantidad).ToString("f2") + "\n"; conceptos["unidad"] = conceptos["unidad"] + "" + unidad + "\n"; conceptos["descripcion"] = conceptos["descripcion"] + descripcion + "\n"; conceptos["valorUnitario"] = conceptos["valorUnitario"] + "$ " + (float.Parse(precio) / 1.16).ToString("f2") + "\n"; conceptos["importe"] = conceptos["importe"] + "$ " + (float.Parse(precio) / 1.16).ToString("f2") + "\n"; Total = Total + float.Parse(precio); } bool leyenda = recibo.leyenda == "on" ? true : false; string Moneda = recibo.moneda.First();; pdf = PDF.CrearRecibo(Nombre, RFC, conceptos, direccion, server, Total, leyenda, Logo, Moneda, ""); return(File(pdf, "application/pdf", "RECIBO.PDF")); } } catch (Exception ex) { return(Json(new { error = ex.InnerException + ", Count:" + count, Message = ex.Message }, JsonRequestBehavior.AllowGet)); } }
public ActionResult Facturar(Guid IdFactura) { try { List <CFDIPorOperacion> CFDIs = db.CFDIPorOperacion.Where(x => x.IdAdeudosInstalaciones == IdFactura).ToList(); bool isExist = false; foreach (var CFDI in CFDIs) { if (db.CFDI.Where(x => x.Id == CFDI.IdCFDI).FirstOrDefault().Cancelado == false) { isExist = true; } } if (!isExist) { List <AdeudosInstalaciones> Adeudos = ListaAdeudos(IdFactura); RVCFDI33.GeneraCFDI objCfdi = new RVCFDI33.GeneraCFDI(); bool pagado = true; double Total = 0; Guid IdCliente = new Guid(); byte[] Logo; string Moneda = "MXN", FormaDePago = "01", TipoCambio = "1", MetodoDePago = "PUE", UsoCFDI = "G03"; foreach (var adeudo in Adeudos) { if (adeudo.Pagado == false) { pagado = false; } List <MonitoreoIngresos> Operaciones = db.GetMonitoreoIngreso(0, null).Where(x => x.IdAdeudo == adeudo.Id).OrderBy(x => x.FechaCreacion).ToList(); foreach (var Operacion in Operaciones) { double total = (double)(Operacion.Cargos + (Operacion.CargosUSD * Operacion.TipoCambio)); Moneda = Operacion.Moneda.Trim(); var TC = Operacion.TipoCambio; TipoCambio = TC.Value == 0 || TC == null ? "" : TC.Value.ToString("f2"); } FormaDePago = Operaciones.First().FormaDePago; MetodoDePago = Operaciones.First().MetodoDePago; UsoCFDI = Operaciones.First().UsoCFDI; Total = Total + adeudo.Total; IdCliente = (Guid)adeudo.IdCliente; } if (pagado == true) { GetPAC_Result PAC = db.GetPAC(Adeudos.First().IdProveedor, 1).First(); int Folio = 1; var TempFolio = db.CFDI.Where(x => x.IdProveedor == PAC.Id).Max(x => x.Folio); if (TempFolio != null) { Folio = db.CFDI.Where(x => x.IdProveedor == PAC.Id).Max(x => x.Folio).Value + 1; } string Path = Server.MapPath("~/"), Certificado = Server.MapPath("~/Certificados/" + PAC.RFC + "/" + PAC.RFC + ".cer"), Llave = Server.MapPath("~/Certificados/" + PAC.RFC + "/" + PAC.RFC + ".key"), Factura = Path + "Facturas\\" + PAC.RFC + "\\Facturas"; Clientes Clientes = db.Clientes.Where(x => x.IdCliente == IdCliente).First(); Logo = null; if (Logo == null) { Logo = System.IO.File.ReadAllBytes(Server.MapPath("~/Images/Avenzo_Logo_Header.png")); } objCfdi.agregarCertificado(Certificado); objCfdi.agregarComprobante33("B", Folio.ToString(), DateTime.Now.ToString("yyyy-MM-ddTHH:mm:ss"), FormaDePago, "", Total / 1.16, 0, Moneda, TipoCambio == "1.00"?"1":TipoCambio, Total, "I", MetodoDePago, "22210", ""); objCfdi.agregarEmisor(PAC.RFC.Trim(), PAC.Nombre, PAC.RegimenFiscal.Trim()); objCfdi.agregarReceptor(Clientes.RFC, Clientes.Nombres + " " + Clientes.ApellidoPaterno + " " + Clientes.ApellidoMaterno.TrimEnd(), "", "", UsoCFDI); string ConceptoPDF = "", CantidadPDF = "", ValorUnitarioPDF = "", ImportePDF = "", UnidadPDF = ""; foreach (var adeudo in Adeudos) { string ClaveProServ = adeudo.ClaveProdServ, NoIdentificacion = "1", ClaveUnidad = adeudo.Unidad, Concepto = adeudo.Concepto; double Cantidad = (double)adeudo.Cantidad, ValorUnitario = (adeudo.Total / 1.16) / Cantidad, Importe = adeudo.Total / 1.16; objCfdi.agregarConcepto(ClaveProServ, NoIdentificacion, Cantidad, ClaveUnidad, "Elemento", Concepto, ValorUnitario, Importe, 0.00); ConceptoPDF += Concepto + "\n"; CantidadPDF += Cantidad.ToString("f2") + "\n"; ValorUnitarioPDF += (ValorUnitario).ToString("f2") + "\n"; ImportePDF += Importe.ToString("f2") + "\n"; UnidadPDF += ClaveUnidad + "\n"; objCfdi.agregarImpuestoConceptoTraslado(adeudo.Total / 1.16, "002", "Tasa", 0.160000, adeudo.Total - (adeudo.Total / 1.16)); } objCfdi.agregarImpuestos(0, Total - (Total / 1.16)); objCfdi.agregarTraslado("002", "Tasa", 0.160000, Total - (Total / 1.16)); objCfdi.GeneraXML(Llave, PAC.ContrasenaLlave); string Xml = objCfdi.Xml.Replace("Sello=\"\"", "Sello=\"" + objCfdi.SelloEmisor + "\""); string Nombre = PAC.RFC + "_" + Folio + "_" + DateTime.Now.Day + DateTime.Now.Month + DateTime.Now.Year; System.IO.File.WriteAllText(Factura + "\\" + Nombre + "_SinTimbrar.xml", Xml); //XmlDocument myXmlDocument = new XmlDocument(); objCfdi.TimbrarCfdiArchivo(Factura + "\\" + Nombre + "_SinTimbrar.xml", PAC.Usuario, PAC.Contrasena, "http://generacfdi.com.mx/rvltimbrado/service1.asmx", Factura, Nombre, true); if (objCfdi.MensajeError == "") { GuardarInformacion(objCfdi, Clientes, Adeudos, PAC, Factura, Nombre, Folio, Moneda, Logo, Total, FormaDePago, MetodoDePago, CantidadPDF, ConceptoPDF, ValorUnitarioPDF, ImportePDF, UnidadPDF); return(Json(new { error = "none", IdFactura = objCfdi.UUID }, JsonRequestBehavior.AllowGet)); } else { return(Json(new { error = "Error Al faturar", Message = objCfdi.MensajeError }, JsonRequestBehavior.AllowGet)); } } else { return(Json(new { error = "No estan Pagado Todos Los Conceptos" }, JsonRequestBehavior.AllowGet)); } } else { return(Json(new { error = "" }, JsonRequestBehavior.AllowGet)); } } catch (Exception Ex) { return(Json(new { error = Ex.InnerException, Message = Ex.Message }, JsonRequestBehavior.AllowGet)); } }
public void GuardarInformacion(RVCFDI33.GeneraCFDI objCfdi, Clientes Clientes, List <AdeudosInstalaciones> Adeudos, GetPAC_Result PAC, string Ruta, string NombreArchivo, int Folio, string Moneda, byte[] Logo, double Total, string FormaDePago, string MetodoPago, string CantidadPDF, string ConceptoPDF, string ValorUnitarioPDF, string ImportePDF, string UnidadPDF) { Usuarios usuario = db.Usuarios.Where(x => x.Usuario == User.Identity.Name).FirstOrDefault(); System.IO.File.WriteAllText(Ruta + "\\" + NombreArchivo + ".xml", objCfdi.XmlTimbrado); byte[] XML = System.IO.File.ReadAllBytes(Ruta + "\\" + NombreArchivo + ".xml"); foreach (var adeudo in Adeudos) { db.InsertCFDIPorOperacion(Guid.NewGuid(), null, adeudo.Id, Guid.Parse(objCfdi.UUID)); } db.InsertCFDI(Guid.Parse(objCfdi.UUID), "Factura", Folio, XML, "~/Facturas/" + PAC.RFC + "/Facturas/" + NombreArchivo, Clientes.IdCliente, null, PAC.Id, false, DateTime.Now, usuario.Id); int TimbresUsados = 1; TimbresUsados = usuario.TimbresUsados + 1; db.UpdateUsuarios(usuario.Id, usuario.Usuario, usuario.Contraseña, usuario.TipoUsuario, usuario.Roles, usuario.Activo, usuario.Timbres, TimbresUsados, usuario.TimbresCancelados, usuario.PrimeraVez); string Domicilio = Clientes.Calle + " " + Clientes.NoExterior + " " + Clientes.Colonia + " C.P " + Clientes.CodigoPostal + " " + Clientes.Ciudad + "," + Clientes.Estado + " " + Clientes.Pais; double TotalImpuestosRetenidos = Total - (Total / 1.16); Tools.PDF.CrearFactura(Ruta + "\\", NombreArchivo, Moneda, Logo, objCfdi, PAC.RFC, PAC.Nombre, PAC.RegimenFiscal, Clientes.RFC, "22210" , Domicilio, FormaDePago, MetodoPago, Total.ToString("f2"), TotalImpuestosRetenidos.ToString("f2"), float.Parse((Total / 1.16) + "").ToString("f2"), CantidadPDF, ConceptoPDF, ValorUnitarioPDF, ImportePDF, UnidadPDF); if (Adeudos.FirstOrDefault().RequiereEnvio == true && !string.IsNullOrEmpty(Clientes.Email)) { CFDI CFDI = db.GetCFDI(Guid.Parse(objCfdi.UUID), 1).First(); Helpers.Correo.EnviarFactura(Clientes.Email, NombreArchivo, "http://facturacion.avenzo.mx/Facturas/Descargar", Server.MapPath("~/Tools/plantilla_facturas.html"), CFDI); } }
public ActionResult Complemento(string Folios, string Complemento, string FechaPago, string FormaPago) { try { RVCFDI33.GeneraCFDI objCfdi = new RVCFDI33.GeneraCFDI(); RVCFDI33.GeneraCFDI LeerObjCfdi = new RVCFDI33.GeneraCFDI(); int PrimerFolio = int.Parse(Folios.Split(',')[0]); CFDI Factura = db.CFDI.Where(x => x.Folio == PrimerFolio).First(); GetPAC_Result Proveedor = db.GetPAC(Factura.IdProveedor, 1).First(); Clientes cliente = db.Clientes.Where(x => x.IdCliente == Factura.IdCliente).First(); Usuarios usuario = db.Usuarios.Where(x => x.Usuario == User.Identity.Name).FirstOrDefault(); string Certificado = Server.MapPath("~/Certificados/" + Proveedor.RFC + "/" + Proveedor.RFC + ".cer"); string Llave = Server.MapPath("~/Certificados/" + Proveedor.RFC + "/" + Proveedor.RFC + ".key"); string Domicilio = cliente.Calle + " " + cliente.NoExterior + " " + cliente.Colonia + " C.P " + cliente.CodigoPostal + " " + cliente.Ciudad + "," + cliente.Estado + " " + cliente.Pais; System.IO.File.WriteAllBytes(Server.MapPath(Factura.Ruta) + ".xml", Factura.XML); objCfdi.agregarCertificado(Certificado); int Folio = 0; double total = 0; string Moneda = ""; double TipoCambio = 1; objCfdi.agregarComprobante33("P", Folio.ToString(), System.DateTime.Now.ToString("yyyy-MM-ddTHH:mm:ss"), "", "", 0, 0, "XXX", "", 0, "P", "", "22230", ""); objCfdi.agregarEmisor(Proveedor.RFC, Proveedor.Nombre.Trim(), Proveedor.RegimenFiscal); objCfdi.agregarReceptor(cliente.RFC, cliente.Nombres + " " + cliente.ApellidoPaterno + " " + cliente.ApellidoMaterno, "", "", "P01"); // objCfdi.agregarConcepto("84111506", "", 1, "ACT", "", "Pago", 0, 0, 0); foreach (string folioStr in Folios.Split(',')) { Folio = int.Parse(folioStr); Factura = db.CFDI.Where(x => x.Folio == Folio).First(); string XMLTimbrado = System.IO.File.ReadAllText(Server.MapPath(Factura.Ruta) + ".xml"); Moneda = LeerObjCfdi.LeerValorXML(XMLTimbrado, "Moneda", "Comprobante"); if (LeerObjCfdi.LeerValorXML(XMLTimbrado, "TipoCambio", "Comprobante") != "") { double.TryParse(LeerObjCfdi.LeerValorXML(XMLTimbrado, "TipoCambio", "Comprobante"), out TipoCambio); } total = total + double.Parse(objCfdi.LeerValorXML(XMLTimbrado, "Total", "Comprobante")); double totalIndividual = double.Parse(objCfdi.LeerValorXML(XMLTimbrado, "Total", "Comprobante")); objCfdi.agregarPago10(FechaPago, FormaPago, Moneda, TipoCambio, totalIndividual, "01", "", "", "", "", "", "", "", "", ""); objCfdi.agregarPago10DoctoRelacionado(Factura.Id.ToString(), "B", folioStr, objCfdi.LeerValorXML(XMLTimbrado, "Moneda", "Comprobante"), 0, "PPD", 1, totalIndividual, totalIndividual, 0); } string path = Server.MapPath("~/Facturas/" + Proveedor.RFC + "/Complementos"); if (!Directory.Exists(path)) { Directory.CreateDirectory(path); } Folio = ((int)db.CFDI.Where(x => x.Tipo == Complemento).Max(x => x.Folio)) + 1; switch (Complemento) { case "Pago10": //"2018-09-11T12:42:47" break; } string NombreArchivo = Proveedor.RFC + "_" + Folio + "_" + DateTime.Now.Day + DateTime.Now.Month + DateTime.Now.Year; objCfdi.GeneraXML(Llave, Proveedor.ContrasenaLlave); System.IO.File.WriteAllText(path + "//" + NombreArchivo + "_SinTimbrar.xml", objCfdi.Xml); objCfdi.TimbrarCfdiArchivo(path + "\\" + NombreArchivo + "_SinTimbrar.xml", Proveedor.Usuario, Proveedor.Contrasena, "http://generacfdi.com.mx/rvltimbrado/service1.asmx", path, NombreArchivo, true); if (objCfdi.MensajeError == "") { byte[] Logo = System.IO.File.ReadAllBytes(Server.MapPath("~/Images/Avenzo_Logo_Header.png")); System.IO.File.WriteAllText(path + "\\" + NombreArchivo + ".xml", objCfdi.XmlTimbrado); db.InsertCFDI(Guid.Parse(objCfdi.UUID), "Pago10", Folio, System.IO.File.ReadAllBytes(path + "//" + NombreArchivo + ".xml"), "~/Facturas/" + Proveedor.RFC + "/Complementos/" + NombreArchivo + ".xml", cliente.IdCliente, null, Proveedor.Id, false, DateTime.Now, Guid.Parse("8BEAD89F-B0CA-4CA9-9268-4DE6C727E3A2")); Tools.PDF.ComplementoPago10(path + "\\", NombreArchivo, "XXX", Logo, objCfdi, Proveedor.RFC, Proveedor.Nombre, Proveedor.RegimenFiscal, cliente.RFC, "22210" , Domicilio, FechaPago, FormaPago, Moneda, TipoCambio.ToString("f2"), total.ToString("f2"), "01", Factura.Id.ToString(), "B", Factura.Folio.ToString(), Moneda, "PPD", "1", total.ToString("f2"), total.ToString("f2"), "0"); return(Json(new { error = false }, JsonRequestBehavior.AllowGet)); } else { return(Json(new { error = true, Message = objCfdi.MensajeError }, JsonRequestBehavior.AllowGet)); } } catch (Exception ex) { return(Json(new { error = true, Message = ex.Message }, JsonRequestBehavior.AllowGet)); } }
public ActionResult UpdateFile(Guid Id) { try { byte[] cer = new byte[3072]; byte[] llave = new byte[3072];; byte[] logo = new byte[3072]; GetPAC_Result pac = db.GetPAC(Id, 1).First(); foreach (string file in Request.Files) { var fileContent = Request.Files[file]; if (fileContent != null && fileContent.ContentLength > 0) { var stream = fileContent.InputStream; var fileName = Path.GetFileName(fileContent.FileName); if (file.Contains("llave")) { llave = new byte[fileContent.ContentLength]; llave = StreamHelper.ReadToEnd(fileContent.InputStream); string Key = Server.MapPath("~/Certificados/" + pac.RFC + "/" + pac.RFC + ".key"); System.IO.File.WriteAllBytes(Key, llave); } if (file.Contains("certificado")) { cer = new byte[fileContent.ContentLength]; cer = StreamHelper.ReadToEnd(fileContent.InputStream); string Cer = Server.MapPath("~/Certificados/" + pac.RFC + "/" + pac.RFC + ".cer"); System.IO.File.WriteAllBytes(Cer, cer); } if (file.Contains("logo")) { logo = new byte[fileContent.ContentLength]; logo = StreamHelper.ReadToEnd(fileContent.InputStream); } } } if (llave == null) { llave = pac.Llave; } if (cer == null) { cer = pac.Certificado; } if (logo == null) { logo = null; } X509Certificate2 Certificado = new X509Certificate2(cer); /* db.UpdatePAC(Id,pac.RFC,pac.Usuario,pac.Contrasena,pac.ContrasenaLlave,pac.Nombre,pac.CURP,pac.PersonaMoral,llave,pac.RegimenFiscal, * pac.RegistroPatronal,pac.RfcPatronOrigen,cer,Certificado.NotBefore,Certificado.NotAfter,pac.UsuarioCreacion,pac.FechaCreacion,logo);*/ } catch (Exception ex) { Response.StatusCode = (int)HttpStatusCode.BadRequest; return(Json(new { error = ex.InnerException, Message = ex.Message }, JsonRequestBehavior.AllowGet)); } return(Json(new { error = "none" }, JsonRequestBehavior.AllowGet)); }
public ActionResult Generar(Guid IdNominaHistorial) { NominaHistorial nominaHistorial = db.GetNominaHistorial(1, IdNominaHistorial).First(); Empleados Empleado = db.GetEmpleados(1, nominaHistorial.IdEmpleado).First(); GetPAC_Result PAC = db.GetPAC(nominaHistorial.IdProveedor, 1).First(); List <NominaDeduccion> NominaDeducciones = db.NominaDeduccion.Where(x => x.IdNominaHistorial == IdNominaHistorial).ToList(); List <NominaPercepciones> NominaPercepciones = db.NominaPercepciones.Where(x => x.IdNominaHistorial == IdNominaHistorial).ToList(); List <Model.CFDI> CFDIs = db.GetCFDI(null, 0).Where(x => x.IdProveedor == PAC.Id).ToList(); int FolioFactura = 1; if (CFDIs.Count > 0) { FolioFactura = CFDIs.Max(x => x.Folio).Value + 1; } GeneraCFDI obj = new GeneraCFDI(); string PATH = "~/Certificados/" + PAC.RFC; string CER = Server.MapPath(PATH + "/" + PAC.RFC + ".cer"); string KEY = Server.MapPath(PATH + "/" + PAC.RFC + ".key"); obj.agregarCertificado(CER); double SubTotal = NominaPercepciones.Sum(x => x.ImporteGravado + x.ImporteExcento).Value; double Descuento = NominaDeducciones.Sum(x => x.Importe); double OtrosPagos = 0; double TotalImpuestosRetenidos = NominaDeducciones.Where(x => x.Tipo.Contains("002")).Sum(x => x.Importe); double TotalOtrasDeducciones = NominaDeducciones.Where(x => !x.Tipo.Contains("002")).Sum(x => x.Importe); obj.agregarComprobante33("A", "" + FolioFactura, System.DateTime.Now.ToString("yyyy-MM-ddTHH:mm:ss"), "99", "", SubTotal, Descuento, "MXN", "", SubTotal - Descuento, "N", "PUE", "22210", ""); obj.agregarEmisor(PAC.RFC, PAC.Nombre, PAC.RegimenFiscal); TimeSpan Time = (nominaHistorial.FechaFinalPago - Empleado.FechaInicioRelLaboral.Value); DateTime A = new DateTime(); A = A + Time; int Semanas = Time.Days / 7; string Antiguedad = "P" + Semanas + "W"; int DiasDeVacaciones = CalcularDiasDeVacaciones(A); string SalarioDiarioIntegrado = ((double)(((365 + 15 + (DiasDeVacaciones * 0.25)) / 365) * Empleado.SalarioDiario)).ToString("f2"); obj.agregarReceptor(Empleado.RFC, Empleado.Nombre + " " + Empleado.ApellidoPaterno + " " + Empleado.ApellidoMaterno, "", "", "P01"); obj.agregarConcepto("84111505", "", 1, "ACT", "", "Pago de nómina", NominaPercepciones.Sum(x => x.ImporteGravado).Value, NominaPercepciones.Sum(x => x.ImporteGravado).Value, NominaDeducciones.Sum(x => x.Importe)); //Nomina obj.agregarNomina12("1.2", "O", nominaHistorial.FechaPago.ToString("yyyy-MM-dd"), nominaHistorial.FechaInicialPago.ToString("yyyy-MM-dd"), nominaHistorial.FechaFinalPago.ToString("yyyy-MM-dd"), nominaHistorial.NumeroDiasPagados.ToString(), SubTotal.ToString("f2"), Descuento.ToString("f2"), "0"); obj.agregarNominaEmisor12(PAC.CURP, PAC.RegistroPatronal, PAC.RfcPatronOrigen); obj.agregarNominaReceptor12(Empleado.CURP, Empleado.NumeroSeguridadSocial, Empleado.FechaInicioRelLaboral.Value.ToString("yyyy-MM-dd"), Antiguedad, Empleado.TipoContrato, "No", Empleado.TipoJornada, "02", Empleado.NoEmpleado.ToString(), Empleado.Departamento, Empleado.Puesto, Empleado.RiesgoPuesto, nominaHistorial.PeriodicidadPago, Empleado.Banco, Empleado.CuentaBancaria, "0", SalarioDiarioIntegrado, Empleado.ClaveEntFed); double TotalPercepciones = NominaPercepciones.Sum(x => x.ImporteGravado + x.ImporteExcento).Value, TotalPercepcionesTemp = 0; obj.agregarNominaPercepciones12(NominaPercepciones.Sum(x => x.ImporteGravado + x.ImporteExcento).Value.ToString("f2"), "0", "0", NominaPercepciones.Sum(x => x.ImporteGravado).Value.ToString("f2"), NominaPercepciones.Sum(x => x.ImporteExcento).Value.ToString("f2")); foreach (var item in NominaPercepciones) { obj.agregarNominaPercepcionesPercepcion12(item.Tipo, item.Clave, item.Concepto, item.ImporteGravado.Value.ToString("f2"), item.ImporteExcento.Value.ToString("f2")); TotalPercepcionesTemp += item.ImporteGravado.Value + item.ImporteExcento.Value; } obj.agregarNominaDeducciones12(TotalOtrasDeducciones.ToString("f2"), TotalImpuestosRetenidos.ToString("f2")); foreach (var item in NominaDeducciones) { obj.agregarNominaDeduccionesDeduccion12(item.Tipo, item.Clave, item.Concepto, item.Importe.ToString("f2")); } obj.GeneraXML(KEY, PAC.ContrasenaLlave); string XML = obj.Xml.Replace("Sello=\"\"", "Sello=\"" + obj.SelloEmisor + "\""); //obj.UUID; //obj.Serie; string NombreArchivo = Empleado.RFC + "_" + FolioFactura + "_" + DateTime.Now.Year + DateTime.Now.Month + DateTime.Now.Day + "_SinTimbrar"; string File = Server.MapPath("~/Facturas/" + PAC.RFC + "/Nominas/" + NombreArchivo + ".xml"); Tools.NumLetra NL = new Tools.NumLetra(); System.IO.File.WriteAllText(File, XML); byte[] CFDI; obj.TimbrarCfdiArchivo(File, PAC.Usuario, PAC.Contrasena, "http://generacfdi.com.mx/rvltimbrado/service1.asmx", File.Replace(NombreArchivo + ".xml", ""), NombreArchivo.Replace("_SinTimbrar", ""), true); if (obj.MensajeError == "") { System.IO.File.WriteAllText(File.Replace("_SinTimbrar", ""), obj.XmlTimbrado); CFDI = System.IO.File.ReadAllBytes(File.Replace("_SinTimbrar", "")); db.InsertCFDI(Guid.Parse(obj.UUID), "Nomina", FolioFactura, CFDI, "~\\Facturas\\" + PAC.RFC + "\\Nominas\\" + NombreArchivo.Replace("_SinTimbrar.xml", ""), null, Empleado.Id, PAC.Id, false, DateTime.Now, User.Identity.Name); var base64 = ""; if (PAC.Logo != null) { base64 = Convert.ToBase64String(PAC.Logo); } else { base64 = Convert.ToBase64String(System.IO.File.ReadAllBytes(Server.MapPath("~/Images/Avenzo_Logo_Header.png"))); } var imgSrc = String.Format("data:image/gif;base64,{0}", base64); db.InsertCFDIPorOperacion(Guid.NewGuid(), IdNominaHistorial, null, Guid.Parse(obj.UUID)); CultureInfo CI = CultureInfo.CreateSpecificCulture("es-MX"); PDF.CrearNomina(Server.MapPath("/"), NombreArchivo, nominaHistorial.LugarExpedicion, PAC.RFC, PAC.Nombre, "", "", obj.UUID, obj.NoCertificadoPac, obj.Folio, obj.Serie, obj.FechaEmision, Empleado.Nombre + " " + Empleado.ApellidoPaterno + " " + Empleado.ApellidoMaterno, Empleado.Departamento, Empleado.RFC, Empleado.Puesto, imgSrc, Empleado.CURP, Empleado.NumeroSeguridadSocial, nominaHistorial.NumeroDiasPagados.ToString(), nominaHistorial.FechaPago.ToString("yyyy-MM-dd"), nominaHistorial.FechaInicialPago.ToString("yyyy-MM-dd"), nominaHistorial.FechaFinalPago.ToString("yyyy-MM-dd"), NL.Convertir((SubTotal - Descuento).ToString("f2"), true, "MXN"), "NA", Empleado.CuentaBancaria, PAC.RegimenFiscal, TotalImpuestosRetenidos.ToString("C2", CI), (SubTotal - Descuento).ToString("C2", CI), obj.SelloEmisor, obj.SelloSat, obj.CadenaOriginal, NominaPercepciones, NominaDeducciones); return(Json(new { error = "none", Id = obj.UUID }, JsonRequestBehavior.AllowGet)); } else { return(Json(new { error = "Error a Timbrar", Message = obj.MensajeError }, JsonRequestBehavior.AllowGet)); } }