public ActionResult Create(EmisorCreateViewModel model) { //var model = new EmisorCreateViewModel(); var emisor = new Emisor(); emisor.RFC = model.RFC; if (!string.IsNullOrEmpty(model.Nombre)) emisor.Nombre = model.Nombre; if (model.DomicilioFiscal != null) { if (!string.IsNullOrEmpty(model.DomicilioFiscal.Pais)) { emisor.DomicilioFiscal = new UbicacionFiscal { Pais = model.DomicilioFiscal.Pais, Calle = string.IsNullOrEmpty(model.DomicilioFiscal.Calle) ? null : model.DomicilioFiscal.Calle, NoExterior = string.IsNullOrEmpty(model.DomicilioFiscal.NoExterior) ? null : model.DomicilioFiscal.NoExterior, NoInterior = string.IsNullOrEmpty(model.DomicilioFiscal.NoInterior) ? null : model.DomicilioFiscal.NoInterior, Colonia = string.IsNullOrEmpty(model.DomicilioFiscal.Colonia) ? null : model.DomicilioFiscal.Colonia, Localidad = string.IsNullOrEmpty(model.DomicilioFiscal.Localidad) ? null : model.DomicilioFiscal.Localidad, Municipio = string.IsNullOrEmpty(model.DomicilioFiscal.Municipio) ? null : model.DomicilioFiscal.Municipio, Estado = string.IsNullOrEmpty(model.DomicilioFiscal.Estado) ? null : model.DomicilioFiscal.Estado, CodigoPostal = string.IsNullOrEmpty(model.DomicilioFiscal.CodigoPostal) ? null : model.DomicilioFiscal.CodigoPostal, Referencia = string.IsNullOrEmpty(model.DomicilioFiscal.Referencia) ? null : model.DomicilioFiscal.Referencia }; } } if (model.ExpedidoEn != null) { if (!string.IsNullOrEmpty(model.ExpedidoEn.Pais)) { emisor.ExpedidoEn = new Ubicacion { Pais = model.ExpedidoEn.Pais, Calle = string.IsNullOrEmpty(model.ExpedidoEn.Calle) ? null : model.ExpedidoEn.Calle, NoExterior = string.IsNullOrEmpty(model.ExpedidoEn.NoExterior) ? null : model.ExpedidoEn.NoExterior, NoInterior = string.IsNullOrEmpty(model.ExpedidoEn.NoInterior) ? null : model.ExpedidoEn.NoInterior, Colonia = string.IsNullOrEmpty(model.ExpedidoEn.Colonia) ? null : model.ExpedidoEn.Colonia, Localidad = string.IsNullOrEmpty(model.ExpedidoEn.Localidad) ? null : model.ExpedidoEn.Localidad, Municipio = string.IsNullOrEmpty(model.ExpedidoEn.Municipio) ? null : model.ExpedidoEn.Municipio, Estado = string.IsNullOrEmpty(model.ExpedidoEn.Estado) ? null : model.ExpedidoEn.Estado, CodigoPostal = string.IsNullOrEmpty(model.ExpedidoEn.CodigoPostal) ? null : model.ExpedidoEn.CodigoPostal, Referencia = string.IsNullOrEmpty(model.ExpedidoEn.Referencia) ? null : model.ExpedidoEn.Referencia }; } } if (!string.IsNullOrEmpty(model.RegimenFiscal)) emisor.RegimenFiscal = new List<RegimenFiscal> { new RegimenFiscal { Regimen = model.RegimenFiscal } }; emisor.Telefono = string.IsNullOrWhiteSpace(model.Telefono) ? null : model.Telefono; emisor.Correo = string.IsNullOrWhiteSpace(model.Correo) ? null : model.Correo; emisor.CifUrl = string.IsNullOrWhiteSpace(model.CifUrl) ? null : model.CifUrl; emisor.LogoUrl = string.IsNullOrWhiteSpace(model.LogoUrl) ? null : model.LogoUrl; //if (!string.IsNullOrEmpty(model.RegimenFiscal)) { // if (emisor.RegimenFiscal == null) // emisor.RegimenFiscal = new List<RegimenFiscal>(); // emisor.RegimenFiscal.Add(new RegimenFiscal { // Regimen = model.RegimenFiscal // }); //} if (model.ViewTemplateId != null) { emisor.ViewTemplateId = model.ViewTemplateId; emisor.ViewTemplate = this.DBContext.ViewTemplates.Find(model.ViewTemplateId); // .Where(v => v.PublicKey == publicKey).SingleOrDefault(); } this.DBContext.Emisores.Add(emisor); this.DBContext.SaveChanges(); return RedirectToAction("Details", new { Id = emisor.PublicKey.ToString("N") }); // "Index", "Home"); //return View(model); }
public ActionResult Edit(EmisorEditViewModel model) { Guid publicKey = model.PublicKey; // Guid.Parse(id); if (ModelState.IsValid) { //var emisor = DBContext.Emisores.Where(e => e.PublicKey == model.PublicKey).SingleOrDefault(); //if (emisor != null) { // emisor.RFC = model.RFC; // emisor.Nombre = model.Nombre; // //emisor.RegimenFiscal // emisor.Telefono = string.IsNullOrWhiteSpace(model.Telefono) ? null : model.Telefono; // emisor.Correo = string.IsNullOrWhiteSpace(model.Correo) ? null : model.Correo; // emisor.CifUrl = string.IsNullOrWhiteSpace(model.CifUrl) ? null : model.CifUrl; // emisor.LogoUrl = string.IsNullOrWhiteSpace(model.LogoUrl) ? null : model.LogoUrl; //} //DBContext.SaveChanges(); //return RedirectToAction("Index"); var originalEmisor = DBContext.Emisores.Where(e => e.PublicKey == publicKey && e.Status == "A") .SingleOrDefault(); var newEmisor = new Emisor(); newEmisor.RFC = model.RFC; if (!string.IsNullOrEmpty(model.Nombre)) newEmisor.Nombre = model.Nombre; //if (model.DomicilioFiscal != null) { if (!string.IsNullOrEmpty(model.Pais)) { newEmisor.DomicilioFiscal = new UbicacionFiscal { Pais = model.Pais, Calle = string.IsNullOrEmpty(model.Calle) ? null : model.Calle, NoExterior = string.IsNullOrEmpty(model.NoExterior) ? null : model.NoExterior, NoInterior = string.IsNullOrEmpty(model.NoInterior) ? null : model.NoInterior, Colonia = string.IsNullOrEmpty(model.Colonia) ? null : model.Colonia, Localidad = string.IsNullOrEmpty(model.Localidad) ? null : model.Localidad, Municipio = string.IsNullOrEmpty(model.Municipio) ? null : model.Municipio, Estado = string.IsNullOrEmpty(model.Estado) ? null : model.Estado, CodigoPostal = string.IsNullOrEmpty(model.CodigoPostal) ? null : model.CodigoPostal, Referencia = string.IsNullOrEmpty(model.Referencia) ? null : model.Referencia }; } //} //if (model.ExpedidoEn != null) { if (!string.IsNullOrEmpty(model.ExpedidoEnPais)) { newEmisor.ExpedidoEn = new Ubicacion { Pais = model.ExpedidoEnPais, Calle = string.IsNullOrEmpty(model.ExpedidoEnCalle) ? null : model.ExpedidoEnCalle, NoExterior = string.IsNullOrEmpty(model.ExpedidoEnNoExterior) ? null : model.ExpedidoEnNoExterior, NoInterior = string.IsNullOrEmpty(model.ExpedidoEnNoInterior) ? null : model.ExpedidoEnNoInterior, Colonia = string.IsNullOrEmpty(model.ExpedidoEnColonia) ? null : model.ExpedidoEnColonia, Localidad = string.IsNullOrEmpty(model.ExpedidoEnLocalidad) ? null : model.ExpedidoEnLocalidad, Municipio = string.IsNullOrEmpty(model.ExpedidoEnMunicipio) ? null : model.ExpedidoEnMunicipio, Estado = string.IsNullOrEmpty(model.ExpedidoEnEstado) ? null : model.ExpedidoEnEstado, CodigoPostal = string.IsNullOrEmpty(model.ExpedidoEnCodigoPostal) ? null : model.ExpedidoEnCodigoPostal, Referencia = string.IsNullOrEmpty(model.ExpedidoEnReferencia) ? null : model.ExpedidoEnReferencia }; } //} if (!string.IsNullOrEmpty(model.RegimenFiscal)) newEmisor.RegimenFiscal = new List<RegimenFiscal> { new RegimenFiscal { Regimen = model.RegimenFiscal } }; newEmisor.Telefono = string.IsNullOrWhiteSpace(model.Telefono) ? null : model.Telefono; newEmisor.Correo = string.IsNullOrWhiteSpace(model.Correo) ? null : model.Correo; newEmisor.CifUrl = string.IsNullOrWhiteSpace(model.CifUrl) ? null : model.CifUrl; newEmisor.LogoUrl = string.IsNullOrWhiteSpace(model.LogoUrl) ? null : model.LogoUrl; if (model.ViewTemplateId != null) { newEmisor.ViewTemplateId = model.ViewTemplateId; newEmisor.ViewTemplate = this.DBContext.ViewTemplates.Find(model.ViewTemplateId); // .Where(v => v.PublicKey == publicKey).SingleOrDefault(); } originalEmisor.Status = "I"; this.DBContext.Emisores.Add(newEmisor); this.DBContext.SaveChanges(); return RedirectToAction("Details", new { Id = newEmisor.PublicKey.ToString("N") }); // "Index", "Home"); } return View(model); }
public EmisorEditViewModel(Emisor emisor) { if (emisor == null) throw new ArgumentNullException("emisor"); this.PublicKey = emisor.PublicKey; this.RFC = emisor.RFC; this.Nombre = emisor.Nombre; if (emisor.RegimenFiscal != null && emisor.RegimenFiscal.Count > 0) this.RegimenFiscal = emisor.RegimenFiscal[0].Regimen; if (emisor.DomicilioFiscal != null) { this.Calle = emisor.DomicilioFiscal.Calle; this.NoExterior = emisor.DomicilioFiscal.NoExterior; this.NoInterior = emisor.DomicilioFiscal.NoInterior; this.Colonia = emisor.DomicilioFiscal.Colonia; this.Localidad = emisor.DomicilioFiscal.Localidad; this.Municipio = emisor.DomicilioFiscal.Municipio; this.Estado = emisor.DomicilioFiscal.Estado; this.Pais = emisor.DomicilioFiscal.Pais; this.CodigoPostal = emisor.DomicilioFiscal.CodigoPostal; this.Referencia = emisor.DomicilioFiscal.Referencia; } //this.RegimenFiscal = emisor.RegimenFiscal; this.Correo = emisor.Correo; this.Telefono = emisor.Telefono; this.CifUrl = emisor.CifUrl; this.LogoUrl = emisor.LogoUrl; this.ViewTemplateId = emisor.ViewTemplateId; }
public ActionResult Upload(ComprobanteUploadViewModel model) { string comprobanteId = ""; if (ModelState.IsValid) { if (model.ComprobanteArchivo == null || model.ComprobanteArchivo.ContentLength == 0) { return View(); } try { Comprobante comprobante = new Comprobante(); Emisor comprobanteEmisor = null;// new Emisor(); Receptor comprobanteReceptor = null; // new Receptor(); Certificado certificado = new Certificado(); if (model.ComprobanteArchivo != null) { // MemoryStream target = new MemoryStream(); System.Xml.XmlTextReader xmlReader = new System.Xml.XmlTextReader(model.ComprobanteArchivo.InputStream); while (xmlReader.Read()) { if (xmlReader.NodeType == System.Xml.XmlNodeType.Element) { if ("xml".Equals(xmlReader.Name)) { } else if ("cfdi:Comprobante".Equals(xmlReader.Name)) { while (xmlReader.MoveToNextAttribute()) { switch (xmlReader.Name) { case "version": comprobante.Version = xmlReader.Value; break; case "serie": comprobante.Serie = xmlReader.Value; break; case "folio": comprobante.Folio = xmlReader.Value; break; case "fecha": comprobante.Fecha = DateTime.Parse(xmlReader.Value); break; case "sello": comprobante.Sello = xmlReader.Value; break; case "noAprobacion": comprobante.NoAprobacion = xmlReader.Value; break; case "anoAprobacion": comprobante.AnoAprobacion = xmlReader.Value; break; case "formaDePago": comprobante.FormaDePago = xmlReader.Value; break; case "noCertificado": certificado.NumSerie = xmlReader.Value; //comprobante.LugarExpedicion = xmlReader.Value; comprobante.HasNoCertificado = true; break; case "certificado": //comprobante.LugarExpedicion = xmlReader.Value; certificado.CertificadoBase64 = xmlReader.Value; comprobante.HasCertificado = true; break; case "condicionesDePago": comprobante.CondicionesDePago = xmlReader.Value; break; case "subTotal": comprobante.SubTotal = decimal.Parse(xmlReader.Value); break; case "descuento": comprobante.Descuento = decimal.Parse(xmlReader.Value); break; case "motivoDescuento": comprobante.MotivoDescuento = xmlReader.Value; break; case "TipoCambio": comprobante.TipoCambio = xmlReader.Value; break; case "Moneda": comprobante.Moneda = xmlReader.Value; break; case "total": comprobante.Total = decimal.Parse(xmlReader.Value); break; case "tipoDeComprobante": comprobante.TipoDeComprobante = xmlReader.Value; break; case "metodoDePago": comprobante.MetodoDePago = xmlReader.Value; break; case "LugarExpedicion": comprobante.LugarExpedicion = xmlReader.Value; break; case "NumCtaPago": comprobante.NumCtaPago = xmlReader.Value; break; case "SerieFolioFiscalOrig": comprobante.SerieFolioFiscalOrig = xmlReader.Value; break; case "FechaFolioFiscalOrig": comprobante.FechaFolioFiscalOrig = DateTime.Parse(xmlReader.Value); break; case "MontoFolioFiscalOrig": comprobante.MontoFolioFiscalOrig = decimal.Parse(xmlReader.Value); break; case "xmlns:cfdi": case "xmlns:xsi": case "xsi:schemaLocation": break; default: throw new Exception(xmlReader.Name + "is not a valid attribute for cfdi:Comprobante."); } } } else if ("cfdi:Emisor".Equals(xmlReader.Name)) { //comprobante.Emisor = new Emisor(); comprobanteEmisor = new Emisor(); while (xmlReader.MoveToNextAttribute()) { switch (xmlReader.Name) { case "rfc": //comprobante.Emisor.RFC = xmlReader.Value; comprobanteEmisor.RFC = xmlReader.Value; break; case "nombre": //comprobante.Emisor.Nombre = xmlReader.Value; comprobanteEmisor.Nombre = xmlReader.Value; break; default: throw new Exception(xmlReader.Name + "is not a valid attribute for cfdi:Emisor."); } } } else if ("cfdi:DomicilioFiscal".Equals(xmlReader.Name)) { comprobanteEmisor.DomicilioFiscal = new UbicacionFiscal(); while (xmlReader.MoveToNextAttribute()) { switch (xmlReader.Name) { case "calle": comprobanteEmisor.DomicilioFiscal.Calle = xmlReader.Value; break; case "noExterior": comprobanteEmisor.DomicilioFiscal.NoExterior = xmlReader.Value; break; case "noInterior": comprobanteEmisor.DomicilioFiscal.NoInterior = xmlReader.Value; break; case "colonia": comprobanteEmisor.DomicilioFiscal.Colonia = xmlReader.Value; break; case "localidad": comprobanteEmisor.DomicilioFiscal.Localidad = xmlReader.Value; break; case "referencia": comprobanteEmisor.DomicilioFiscal.Referencia = xmlReader.Value; break; case "municipio": comprobanteEmisor.DomicilioFiscal.Municipio = xmlReader.Value; break; case "estado": comprobanteEmisor.DomicilioFiscal.Estado = xmlReader.Value; break; case "pais": comprobanteEmisor.DomicilioFiscal.Pais = xmlReader.Value; break; case "codigoPostal": comprobanteEmisor.DomicilioFiscal.CodigoPostal = xmlReader.Value; break; default: throw new Exception(xmlReader.Name + "is not a valid attribute for cfdi:DomicilioFiscal."); } } } else if ("cfdi:RegimenFiscal".Equals(xmlReader.Name)) { if (comprobanteEmisor.RegimenFiscal == null) comprobanteEmisor.RegimenFiscal = new List<RegimenFiscal>(); while (xmlReader.MoveToNextAttribute()) { switch (xmlReader.Name) { case "Regimen": RegimenFiscal regimen = new RegimenFiscal(); regimen.Regimen = xmlReader.Value; comprobanteEmisor.RegimenFiscal.Add(regimen); break; default: throw new Exception(xmlReader.Name + "is not a valid attribute for cfdi:RegimenFiscal."); } } } else if ("cfdi:Receptor".Equals(xmlReader.Name)) { //comprobante.Receptor = new Receptor(); comprobanteReceptor = new Receptor(); while (xmlReader.MoveToNextAttribute()) { switch (xmlReader.Name) { case "rfc": //comprobante.Receptor.RFC = xmlReader.Value; comprobanteReceptor.RFC = xmlReader.Value; break; case "nombre": //comprobante.Receptor.Nombre = xmlReader.Value; comprobanteReceptor.Nombre = xmlReader.Value; break; default: throw new Exception(xmlReader.Name + "is not a valid attribute for cfdi:Receptor."); } } } else if ("cfdi:Domicilio".Equals(xmlReader.Name)) { //comprobante.Receptor.Domicilio = new Ubicacion(); comprobanteReceptor.Domicilio = new Ubicacion(); while (xmlReader.MoveToNextAttribute()) { switch (xmlReader.Name) { case "calle": comprobanteReceptor.Domicilio.Calle = xmlReader.Value; break; case "noExterior": comprobanteReceptor.Domicilio.NoExterior = xmlReader.Value; break; case "noInterior": comprobanteReceptor.Domicilio.NoInterior = xmlReader.Value; break; case "colonia": comprobanteReceptor.Domicilio.Colonia = xmlReader.Value; break; case "localidad": comprobanteReceptor.Domicilio.Localidad = xmlReader.Value; break; case "referencia": comprobanteReceptor.Domicilio.Referencia = xmlReader.Value; break; case "municipio": comprobanteReceptor.Domicilio.Municipio = xmlReader.Value; break; case "estado": comprobanteReceptor.Domicilio.Estado = xmlReader.Value; break; case "pais": comprobanteReceptor.Domicilio.Pais = xmlReader.Value; break; case "codigoPostal": comprobanteReceptor.Domicilio.CodigoPostal = xmlReader.Value; break; default: throw new Exception(xmlReader.Name + "is not a valid attribute for cfdi:Domicilio."); } } } else if ("cfdi:Conceptos".Equals(xmlReader.Name)) { comprobante.Conceptos = new List<Concepto>(); } else if ("cfdi:Concepto".Equals(xmlReader.Name)) { Concepto concepto = new Concepto(); concepto.PublicKey = Guid.NewGuid(); while (xmlReader.MoveToNextAttribute()) { switch (xmlReader.Name) { case "cantidad": concepto.Cantidad = decimal.Parse(xmlReader.Value); break; case "unidad": concepto.Unidad = xmlReader.Value; break; case "noIdentificacion": concepto.NoIdentificacion = xmlReader.Value; break; case "descripcion": concepto.Descripcion = xmlReader.Value; break; case "valorUnitario": concepto.ValorUnitario = decimal.Parse(xmlReader.Value); break; case "importe": concepto.Importe = decimal.Parse(xmlReader.Value); break; default: throw new Exception(xmlReader.Name + "is not a valid attribute for cfdi:Domicilio."); } } concepto.Ordinal = comprobante.Conceptos.Count + 1; comprobante.Conceptos.Add(concepto); } else if ("cfdi:Impuestos".Equals(xmlReader.Name)) { comprobante.Impuestos = new Impuestos(); while (xmlReader.MoveToNextAttribute()) { switch (xmlReader.Name) { case "totalImpuestosRetenidos": comprobante.Impuestos.TotalImpuestosRetenidos = decimal.Parse(xmlReader.Value); break; case "totalImpuestosTrasladados": comprobante.Impuestos.TotalImpuestosTrasladados = decimal.Parse(xmlReader.Value); break; default: throw new Exception(xmlReader.Name + "is not a valid attribute for cfdi:Impuestos."); } } } else if ("cfdi:Traslados".Equals(xmlReader.Name)) { comprobante.Impuestos.Traslados = new List<Traslado>(); } else if ("cfdi:Traslado".Equals(xmlReader.Name)) { Traslado traslado = new Traslado(); while (xmlReader.MoveToNextAttribute()) { switch (xmlReader.Name) { case "impuesto": traslado.Impuesto = xmlReader.Value; break; case "tasa": traslado.Tasa = decimal.Parse(xmlReader.Value); break; case "importe": traslado.Importe = decimal.Parse(xmlReader.Value); break; default: throw new Exception(xmlReader.Name + "is not a valid attribute for cfdi:Impuestos."); } } comprobante.Impuestos.Traslados.Add(traslado); } else if ("cfdi:Retenciones".Equals(xmlReader.Name)) { comprobante.Impuestos.Retenciones = new List<Retencion>(); } else if ("cfdi:Retencion".Equals(xmlReader.Name)) { Retencion retencion = new Retencion(); while (xmlReader.MoveToNextAttribute()) { switch (xmlReader.Name) { case "impuesto": retencion.Impuesto = xmlReader.Value; break; case "importe": retencion.Importe = decimal.Parse(xmlReader.Value); break; default: throw new Exception(xmlReader.Name + "is not a valid attribute for cfdi:Retencion."); } } comprobante.Impuestos.Retenciones.Add(retencion); } else if ("cfdi:Complemento".Equals(xmlReader.Name)) { comprobante.Complementos = new List<Complemento>(); } else if ("tfd:TimbreFiscalDigital".Equals(xmlReader.Name)) { TimbreFiscalDigital timbre = new TimbreFiscalDigital(); while (xmlReader.MoveToNextAttribute()) { switch (xmlReader.Name) { case "version": timbre.Version = xmlReader.Value; break; case "UUID": timbre.UUID = xmlReader.Value; break; case "FechaTimbrado": timbre.FechaTimbrado = DateTime.Parse(xmlReader.Value); break; case "selloCFD": timbre.SelloCFD = xmlReader.Value; break; case "noCertificadoSAT": timbre.NoCertificadoSAT = xmlReader.Value; break; case "selloSAT": timbre.SelloSAT = xmlReader.Value; break; case "xmlns:tfd": case "xsi:schemaLocation": break; default: throw new Exception(xmlReader.Name + " is not a valid attribute for cfdi:TimbreFiscalDigital."); } } comprobante.Complementos.Add(timbre); } else { xmlReader.NodeType.ToString(); xmlReader.Name.ToString(); } //xmlReader.NodeType.ToString(); } } //xmlReader.Dispose(); //xmlReader.Close(); model.ComprobanteArchivo.InputStream.Position = 0; //model.ComprobanteArchivo.InputStream.Position = 0; //model.ComprobanteArchivo.InputStream.CopyTo(target); //Byte[] data = target.ToArray(); if (certificado != null) { if (!string.IsNullOrEmpty(certificado.NumSerie)) { certificado = DBContext.Certificados.Where(c => c.NumSerie == certificado.NumSerie).SingleOrDefault(); comprobante.Certificado = certificado; } } if (comprobanteEmisor != null) { //Emisor emisor = DBContext.Emisores.Where(e => // (e.RFC == comprobante.Emisor.RFC) // && (e.Nombre == comprobante.Emisor.Nombre) // && (e.Status == "A") // ).SingleOrDefault(); List<Emisor> emisores = DBContext.Emisores.Where(e => (e.RFC == comprobanteEmisor.RFC) && (e.Nombre == comprobanteEmisor.Nombre) ).ToList(); if (emisores != null && emisores.Count > 0) { foreach (Emisor emisor in emisores) { if ((emisor.DomicilioFiscal != null && comprobanteEmisor.DomicilioFiscal != null) && (emisor.DomicilioFiscal.Calle == comprobanteEmisor.DomicilioFiscal.Calle) && (emisor.DomicilioFiscal.NoExterior == comprobanteEmisor.DomicilioFiscal.NoExterior) && (emisor.DomicilioFiscal.NoInterior == comprobanteEmisor.DomicilioFiscal.NoInterior) && (emisor.DomicilioFiscal.Colonia == comprobanteEmisor.DomicilioFiscal.Colonia) && (emisor.DomicilioFiscal.Referencia == comprobanteEmisor.DomicilioFiscal.Referencia) && (emisor.DomicilioFiscal.Localidad == comprobanteEmisor.DomicilioFiscal.Localidad) && (emisor.DomicilioFiscal.Municipio == comprobanteEmisor.DomicilioFiscal.Municipio) && (emisor.DomicilioFiscal.Estado == comprobanteEmisor.DomicilioFiscal.Estado) && (emisor.DomicilioFiscal.CodigoPostal == comprobanteEmisor.DomicilioFiscal.CodigoPostal) && (emisor.DomicilioFiscal.Pais == comprobanteEmisor.DomicilioFiscal.Pais) ) { //if (receptor != null) { comprobanteEmisor = emisor; comprobanteEmisor.EmisorId = emisor.EmisorId; comprobanteEmisor.DomicilioFiscal = emisor.DomicilioFiscal; comprobanteEmisor.DomicilioFiscalId = emisor.DomicilioFiscalId; //comprobante.Emisor = DBContext.ComprobantesEmisores.Where( e => e.EmisorId == emisor.EmisorId && e.DomicilioFiscalId = emisor.DomicilioFiscalId && e.ExpedidoEnId) comprobante.Emisor = DBContext.ComprobantesEmisores.Where(e => e.EmisorId == emisor.EmisorId && e.DomicilioFiscalId == emisor.DomicilioFiscalId).SingleOrDefault(); if (comprobante.Emisor == null) { comprobante.Emisor = new ComprobanteEmisor { Emisor = comprobanteEmisor, //EmisorId = emisor.EmisorId, DomicilioFiscal = comprobanteEmisor.DomicilioFiscal //,DomicilioId = receptor.DomicilioId // TODO: //RegimenFiscal = emisor.RegimenFiscal }; } } } //if (comprobanteEmisor.DomicilioFiscalId == null) { // // The address has changed, create a new one and inactive the oldone // foreach (Emisor emisor in emisores) { // emisor.Status = "I"; // } // comprobante.Emisor.Status = "A"; //} if (comprobanteEmisor.EmisorId == null) { // The address has changed, create a new one and inactive the oldone foreach (Emisor emisor in emisores) { emisor.Status = "I"; } comprobanteEmisor.Status = "A"; comprobante.Emisor = new ComprobanteEmisor { Emisor = comprobanteEmisor, //EmisorId = emisor.EmisorId, DomicilioFiscal = comprobanteEmisor.DomicilioFiscal //,DomicilioId = receptor.DomicilioId // TODO: //RegimenFiscal = emisor.RegimenFiscal }; } } else { comprobante.Emisor = new ComprobanteEmisor { Emisor = comprobanteEmisor, //EmisorId = emisor.EmisorId, DomicilioFiscal = comprobanteEmisor.DomicilioFiscal //,DomicilioId = receptor.DomicilioId // TODO: //RegimenFiscal = emisor.RegimenFiscal }; comprobanteEmisor.Status = "A"; } } if (comprobanteReceptor != null) { //Receptor receptor = DBContext.Receptores.Where(r => // (r.RFC == comprobante.Receptor.RFC) // && (r.Nombre == comprobante.Receptor.Nombre) // && (r.Status == "A") // ).SingleOrDefault(); List<Receptor> receptores = DBContext.Receptores.Where(r => (r.RFC == comprobanteReceptor.RFC) && (r.Nombre == comprobanteReceptor.Nombre) ).ToList(); if (receptores != null && receptores.Count > 0) { foreach (Receptor receptor in receptores) { if ((receptor.Domicilio != null && comprobanteReceptor.Domicilio != null) && (receptor.Domicilio.Calle == comprobanteReceptor.Domicilio.Calle) && (receptor.Domicilio.NoExterior == comprobanteReceptor.Domicilio.NoExterior) && (receptor.Domicilio.NoInterior == comprobanteReceptor.Domicilio.NoInterior) && (receptor.Domicilio.Colonia == comprobanteReceptor.Domicilio.Colonia) && (receptor.Domicilio.Referencia == comprobanteReceptor.Domicilio.Referencia) && (receptor.Domicilio.Localidad == comprobanteReceptor.Domicilio.Localidad) && (receptor.Domicilio.Municipio == comprobanteReceptor.Domicilio.Municipio) && (receptor.Domicilio.Estado == comprobanteReceptor.Domicilio.Estado) && (receptor.Domicilio.CodigoPostal == comprobanteReceptor.Domicilio.CodigoPostal) && (receptor.Domicilio.Pais == comprobanteReceptor.Domicilio.Pais) ) { //if (receptor != null) { comprobanteReceptor = receptor; comprobanteReceptor.ReceptorId = receptor.ReceptorId; comprobanteReceptor.Domicilio = receptor.Domicilio; comprobanteReceptor.DomicilioId = receptor.DomicilioId; comprobante.Receptor = DBContext.ComprobantesReceptores.Where(r => r.ReceptorId == receptor.ReceptorId && r.DomicilioId == receptor.DomicilioId).SingleOrDefault(); if (comprobante.Receptor == null) { comprobante.Receptor = new ComprobanteReceptor { Receptor = comprobanteReceptor, //ReceptorId = comprobanteReceptor.ReceptorId, Domicilio = comprobanteReceptor.Domicilio //,DomicilioId = comprobanteReceptor.DomicilioId }; } } } if (comprobanteReceptor.ReceptorId == null) { // The address has changed, create a new one and inactive the oldone foreach (Receptor receptor in receptores) { receptor.Status = "I"; } comprobanteReceptor.Status = "A"; comprobante.Receptor = new ComprobanteReceptor { Receptor = comprobanteReceptor, //ReceptorId = comprobanteReceptor.ReceptorId, Domicilio = comprobanteReceptor.Domicilio //,DomicilioId = comprobanteReceptor.DomicilioId }; } } else { comprobanteReceptor.Status = "A"; comprobante.Receptor = new ComprobanteReceptor { Receptor = comprobanteReceptor, //ReceptorId = comprobanteReceptor.ReceptorId, Domicilio = comprobanteReceptor.Domicilio //,DomicilioId = comprobanteReceptor.DomicilioId }; } //if (receptor != null) { // comprobante.Receptor = receptor; // comprobante.ReceptorId = receptor.ReceptorId; //} //else { //} } comprobante.GeneratedCadenaOriginal = comprobante.GetCadenaOriginal(); if (model.ComprobantePDFArchivo != null && model.ComprobantePDFArchivo.ContentLength > 0) { comprobante.GeneratedXmlUrl = string.Format(@"https://sistrategiacfdi1.blob.core.windows.net/{0}/{1}.xml", comprobante.Emisor.PublicKey.ToString("N"), comprobante.PublicKey.ToString("N")); comprobante.GeneratedPDFUrl = string.Format(@"https://sistrategiacfdi1.blob.core.windows.net/{0}/{1}.pdf", comprobante.Emisor.PublicKey.ToString("N"), comprobante.PublicKey.ToString("N")); //comprobante.GeneratedPDFUrl //comprobante.ExtendedIntValue1 = model.NoOrden; //comprobante.ExtendedIntValue2 = model.NoCliente; } comprobante.ExtendedIntValue1 = DBContext.Comprobantes.Max(c => c.ExtendedIntValue1) + 1; // DBContext.Comprobantes.Count() + 1; if (comprobante.Receptor.ReceptorId != null && comprobante.Receptor.ReceptorId > 0) comprobante.ExtendedIntValue2 = comprobante.Receptor.ReceptorId; else comprobante.ExtendedIntValue2 = DBContext.Receptores.Count() + 1; comprobante.ViewTemplate = DBContext.ViewTemplates.Find(2); comprobante.ViewTemplateId = comprobante.ViewTemplate.ViewTemplateId; comprobante.Status = "A"; comprobanteId = comprobante.PublicKey.ToString("N"); DBContext.Comprobantes.Add(comprobante); DBContext.SaveChanges(); if (model.ComprobantePDFArchivo != null && model.ComprobantePDFArchivo.ContentLength > 0) { CloudStorageMananger manager = new CloudStorageMananger(); manager.UploadFromStream(ConfigurationManager.AppSettings["AzureAccountName"], ConfigurationManager.AppSettings["AzureAccountKey"], comprobante.Emisor.PublicKey.ToString("N"), comprobante.PublicKey.ToString("N") + ".xml", model.ComprobanteArchivo.FileName, model.ComprobanteArchivo.ContentType, model.ComprobanteArchivo.InputStream); manager.UploadFromStream(ConfigurationManager.AppSettings["AzureAccountName"], ConfigurationManager.AppSettings["AzureAccountKey"], comprobante.Emisor.PublicKey.ToString("N"), comprobante.PublicKey.ToString("N") + ".pdf", model.ComprobantePDFArchivo.FileName, model.ComprobantePDFArchivo.ContentType, model.ComprobantePDFArchivo.InputStream); } } } catch (Exception ex) { //log.Error(ex, "Error upload photo blob to storage"); ex.ToString(); } } return RedirectToAction("Details", "Comprobante", new { id = comprobanteId }); }
public EmisorDetailViewModel(Emisor emisor) { //public EmisorDetailViewModel(ComprobanteEmisor emisor) { if (emisor == null) throw new ArgumentNullException("emisor"); this.PublicKey = emisor.PublicKey; this.RFC = emisor.RFC; this.Nombre = emisor.Nombre; //if (emisor.RegimenFiscal != null && emisor.RegimenFiscal.Count > 0) // this.RegimenFiscal = emisor.RegimenFiscal[0].Regimen; if (emisor.RegimenFiscal != null && emisor.RegimenFiscal.Count > 0) foreach (var regimen in emisor.RegimenFiscal.OrderByDescending(x => x.RegimenFiscalId)) { if ("A".Equals(regimen.Status, StringComparison.InvariantCultureIgnoreCase)) { this.RegimenFiscal = regimen.Regimen; break; } } if (emisor.DomicilioFiscal != null) { this.Calle = emisor.DomicilioFiscal.Calle; this.NoExterior = emisor.DomicilioFiscal.NoExterior; this.NoInterior = emisor.DomicilioFiscal.NoInterior; this.Colonia = emisor.DomicilioFiscal.Colonia; this.Localidad = emisor.DomicilioFiscal.Localidad; this.Municipio = emisor.DomicilioFiscal.Municipio; this.Estado = emisor.DomicilioFiscal.Estado; this.Pais = emisor.DomicilioFiscal.Pais; this.CodigoPostal = emisor.DomicilioFiscal.CodigoPostal; this.Referencia = emisor.DomicilioFiscal.Referencia; } //this.RegimenFiscal = emisor.RegimenFiscal; // this.EmisorLogoUrl = comprobante.Emisor.LogoUrl; //this.EmisorTelefono = comprobante.Emisor.Telefono; //this.EmisorCorreo = comprobante.Emisor.Correo; //this.EmisorCifUrl = comprobante.Emisor.CifUrl; this.Correo = emisor.Correo; this.Telefono = emisor.Telefono; this.CifUrl = emisor.CifUrl; this.LogoUrl = emisor.LogoUrl; this.ViewTemplateId = emisor.ViewTemplateId; }