/// <summary> /// Obtiene el Guid del Usuario /// </summary> /// <param name="CodigoTienda">Código de la Tienda por Donde Buscaremos al Usuario</param> /// <returns>Obtiene el Guid del Usuario</returns> public string ObtieneUsuarioIdxTiendaAsignada(string CodigoTienda) { IOrganizationService servicio; servicio = ConexionCRMDA.ObtenerConexion(); string guidUsuario = string.Empty; ZthFetchXml365.zthFetch fetch = new ZthFetchXml365.zthFetch("systemuser", ref servicio); // entidad systemuser fetch.AgregarCampoRetorno("systemuser", "systemuserid", ZthFetchXml365.zthFetch.TipoRetorno.Key); // public void AgregarCampoRetorno(string NombreEntidad, string NombreCampo, TipoRetorno Tipo); fetch.AgregarFiltroPlano("systemuser", ZthFetchXml365.zthFetch.TipoFiltro.and, "new_codigotiendaasignada", ZthFetchXml365.zthFetch.TipoComparacionFiltro.Igual, CodigoTienda); DataTable Dato = new DataTable(); // Instancia tabla en memoria Dato = fetch.GeneraTblconFetchResult(false); // ?? if (Dato.Rows.Count > 0) return guidUsuario = Dato.Rows[0]["systemuserid"].ToString(); else return guidUsuario = null; }
/// <summary> /// Validamos si Existe el Contacto Mediante su DNI /// </summary> /// <param name="DNI">DNI a Validar</param> /// <returns>Validamos si Existe el Contacto Mediante su DNI</returns> public DataTable ValidaExisteContacto(string TipoDeDocumento, string NumeroDocumento) { try { // Resumen: // Cadena de conexión ----> CrmServiceClient ( Set up de las Credenciales) ----> IOrganizationServices (Web Service Intermedio) ----> CRM online 2016 IOrganizationService servicio; // Instancia de IOrgnizationService servicio = ConexionCRMDA.ObtenerConexion(); // Obtenemos la Conexión de CRM /** * * FetchXML, se utiliza para una busqueda avanzada * * **/ // Ocupamos el Espacio de Nombre "ZthFetchXml365" // Instancia de fetch, se ocupa para manipular los datos del CRM : //Le Entregamos el nombre de la entidad principal a buscar(Contacto, y la referencia al servicio web de CRM) zthFetch fetch = new zthFetch("contact", ref servicio); // Fetch contiene métodos parámetrizados, cuando me meta mas al CRM lo voy a entender mejor fetch.AgregarCampoRetorno("contact", "contactid", ZthFetchXml365.zthFetch.TipoRetorno.Key); // public void AgregarCampoRetorno(string NombreEntidad, string NombreCampo, TipoRetorno Tipo); fetch.AgregarFiltroPlano("contact", ZthFetchXml365.zthFetch.TipoFiltro.and, "sole_tipodocumento", ZthFetchXml365.zthFetch.TipoComparacionFiltro.Igual, TipoDeDocumento); // public void AgregarFiltroPlano(string NombreEntidad, TipoFiltro TipoFiltro, string NombreAtributo, TipoComparacionFiltro TipoComparacion, string ValorAtributo); // Tipo Documento fetch.AgregarFiltroPlano("contact", ZthFetchXml365.zthFetch.TipoFiltro.and, "sole_numerodocumento", ZthFetchXml365.zthFetch.TipoComparacionFiltro.Igual, NumeroDocumento); // Numero Documento fetch.AgregarCantidadRegistrosDevolver_puedesermenorque5000(1); // Crea un objeto de tipo datatable DataTable Dato = new DataTable(); // Genera la tabla con el resultado del Fetch y lo llena en la tabla de datos en memoria Dato = fetch.GeneraTblconFetchResult(false); // ¿Por que false? return(Dato); } catch (Exception ex) { // Mensaje de la excepción string Mensaje = "Se ha producido el siguiente error: " + ex.Message; // DLL guarda el mensaje de excepción en un registro ZthMetodosVarios.Metodos.GuardarLog(Ruta, Mensaje); // Lo mandan a un correo compartido en outlook, correo soporte ZthEnvioCorreos_CRM365.Metodos.EnviarCorreoError(CorreoSoporte, CorreoCliente, Aplicativo, Ruta, Mensaje, CorreoClave, Port, Host); throw ex; } }
/// <summary> /// Registramos el Producto de la Oportunidad /// </summary> /// <param name="IdOportunidadCargaInicial">Id de la Tabla Oportunidad</param> /// <param name="OportunidadId">Guid de la Oportunidad</param> /// <param name="ProductoId">Guid del Producto</param> /// <returns>Registramos el Producto de la Oportunidad</returns> public object CrearProductoDelaOportunidad(OportunidadesBE oOportunidadBE, string IdOportunidadCargaInicial, Guid OportunidadId, Guid ProductoId) { IOrganizationService servicio; servicio = ConexionCRMDA.ObtenerConexion(); SOLE.OpportunityProduct ProductoDeLaOportunidad = new SOLE.OpportunityProduct(); try { ProductoDeLaOportunidad.PricePerUnit = new Money(oOportunidadBE.Sole_precioventapublico); ProductoDeLaOportunidad.IsProductOverridden = true; ProductoDeLaOportunidad.Quantity = new decimal(1); ProductoDeLaOportunidad.BaseAmount = new Money(oOportunidadBE.Sole_precioventapublico); ProductoDeLaOportunidad.OpportunityId = new EntityReference(SOLE.Opportunity.EntityLogicalName, OportunidadId); ProductoDeLaOportunidad.ProductDescription = oOportunidadBE.Nombre_Producto.ToString(); //ProductoDeLaOportunidad.ProductId = new EntityReference(SOLE.OpportunityProduct.EntityLogicalName, ProductoId); servicio.Create(ProductoDeLaOportunidad); return(1); } catch (Exception ex) { oBitacoraErroresBE.Codigo = ex.HResult.ToString(); oBitacoraErroresBE.Proceso = "Crear Producto de la Oportunidad"; oBitacoraErroresBE.Error = ex.Source; oBitacoraErroresBE.Descripcion = ex.Message; oBitacoraErroresBE.IdRegistro = IdOportunidadCargaInicial; oBitacoraErroresBE.Entidad = "Oportunidad"; oBitacoraErroresBE.EstadoCarga = "0"; oFuncionesDA.RegistraBitacoraErrores(oBitacoraErroresBE); //oFuncionesDA.ActualizarEstadoTablaOportunidad(IdOportunidadCargaInicial); string Mensaje = "Error al Crear el Producto de la Oportunidad. Se ha producido el siguiente error: " + ex.Message; ZthMetodosVarios.Metodos.GuardarLog(Ruta, Mensaje); //ZthEnvioCorreos_CRM365.Metodos.EnviarCorreoError(CorreoSoporte, CorreoCliente, "Integración MACAL", Ruta, Mensaje, CorreoClave, Port, Host); return(0); } }
/// <summary> /// Crea el NPS /// </summary> /// <param name="ClienteId">Id del Cliente al que se le asociará la NPS</param> /// <param name="oNPSBE">Datos de la NPS</param> /// <returns>Crea el NPS</returns> public Guid CrearNPS(Guid ClienteId, NPSBE oNPSBE) { IOrganizationService servicio; servicio = ConexionCRMDA.ObtenerConexion(); SOLE.sole_nps NPS = new SOLE.sole_nps(); Guid guidNPS; try { NPS.sole_name = oNPSBE.Sole_numeroencuesta.ToString(); NPS.sole_codigoencuesta = int.Parse(oNPSBE.Sole_numeroencuesta.ToString()); NPS.sole_fechaencuesta = oNPSBE.Sole_fechaencuesta; NPS.sole_ordenservicio = oNPSBE.Sole_ordenservicio; NPS.sole_clienteid = new EntityReference(SOLE.Contact.EntityLogicalName, ClienteId); NPS.sole_tipoencuesta = new OptionSetValue(int.Parse(oNPSBE.Sole_tipoencuesta.ToString())); NPS.sole_puntuacion = oNPSBE.Sole_puntuacion; NPS.sole_comentarios = oNPSBE.Sole_comentarios; guidNPS = servicio.Create(NPS); return(guidNPS); } catch (Exception ex) { oBitacoraErroresBE.Codigo = ex.HResult.ToString(); oBitacoraErroresBE.Proceso = "Crear NPS"; oBitacoraErroresBE.Error = ex.Source; oBitacoraErroresBE.Descripcion = ex.Message; oBitacoraErroresBE.IdRegistro = oNPSBE.NPSId; oBitacoraErroresBE.Entidad = "NPS"; oBitacoraErroresBE.EstadoCarga = "0"; oFuncionesDA.RegistraBitacoraErrores(oBitacoraErroresBE); //oFuncionesDA.ActualizarEstadoTablaOportunidad(oOportunidadBE.IdOportunidadCargaInicial); string Mensaje = "Error al Crear la Oportunidad. Se ha producido el siguiente error: " + ex.Message; ZthMetodosVarios.Metodos.GuardarLog(Ruta, Mensaje); //ZthEnvioCorreos_CRM365.Metodos.EnviarCorreoError(CorreoSoporte, CorreoCliente, "Integración MACAL", Ruta, Mensaje, CorreoClave, Port, Host); throw ex; } }
/// <summary> /// Obtiene el Guid de la Tienda /// </summary> /// <param name="CodigoSucursal">Código de Sucursal de la Tienda</param> /// <returns>Obtiene el Guid de la Tienda</returns> public string ObtieneTienda(string CodigoSucursal) { IOrganizationService servicio; servicio = ConexionCRMDA.ObtenerConexion(); string guidTienda = string.Empty; ZthFetchXml365.zthFetch fetch = new ZthFetchXml365.zthFetch("sole_tienda", ref servicio); fetch.AgregarCampoRetorno("sole_tienda", "sole_tiendaid", ZthFetchXml365.zthFetch.TipoRetorno.Key); fetch.AgregarFiltroPlano("sole_tienda", ZthFetchXml365.zthFetch.TipoFiltro.and, "sole_codigosucursal", ZthFetchXml365.zthFetch.TipoComparacionFiltro.Igual, CodigoSucursal); DataTable Dato = new DataTable(); Dato = fetch.GeneraTblconFetchResult(false); if (Dato.Rows.Count > 0) return guidTienda = Dato.Rows[0]["sole_tiendaid"].ToString(); else return guidTienda = null; }
/// <summary> /// Obtenemos el Guid del Producto /// </summary> /// <param name="CodigoProducto">Códgo del Producto</param> /// <returns>Obtenemos el Guid del Producto</returns> public string ObtieneProductoId(string CodigoProducto) { IOrganizationService servicio; servicio = ConexionCRMDA.ObtenerConexion(); string guidProducto = string.Empty; ZthFetchXml365.zthFetch fetch = new ZthFetchXml365.zthFetch("product", ref servicio); fetch.AgregarCampoRetorno("product", "productid", ZthFetchXml365.zthFetch.TipoRetorno.Key); fetch.AgregarFiltroPlano("product", ZthFetchXml365.zthFetch.TipoFiltro.and, "productnumber", ZthFetchXml365.zthFetch.TipoComparacionFiltro.Igual, CodigoProducto); // Producto y Numero del producto es igual a Codigo del Producto DataTable Dato = new DataTable(); Dato = fetch.GeneraTblconFetchResult(false); if (Dato.Rows.Count > 0) return guidProducto = Dato.Rows[0]["productid"].ToString(); else return guidProducto = null; }
/// <summary> /// Obtiene el Guid del Departamento /// </summary> /// <param name="DepartamentoUbigeo">Código Ubigueo del Departamento</param> /// <returns>Obtiene el Guid del Departamento</returns> public string ObtieneDepartamento(string DepartamentoUbigeo) { IOrganizationService servicio; servicio = ConexionCRMDA.ObtenerConexion(); string guidComuna = string.Empty; ZthFetchXml365.zthFetch fetch = new ZthFetchXml365.zthFetch("sole_departamento", ref servicio); fetch.AgregarCampoRetorno("sole_departamento", "sole_departamentoid", ZthFetchXml365.zthFetch.TipoRetorno.Key); fetch.AgregarFiltroPlano("sole_departamento", ZthFetchXml365.zthFetch.TipoFiltro.and, "sole_codigoubigeo", ZthFetchXml365.zthFetch.TipoComparacionFiltro.Igual, DepartamentoUbigeo); DataTable Dato = new DataTable(); Dato = fetch.GeneraTblconFetchResult(false); if (Dato.Rows.Count > 0) return guidComuna = Dato.Rows[0]["sole_departamentoid"].ToString(); else return guidComuna = null; }
/// <summary> /// Obtenemos el Id del Cliente mediante el DNI /// </summary> /// <param name="DNI"></param> /// <returns>Obtenemos el Id del Cliente mediante el DNI</returns> public string ObtieneClientexDNI(string TipoDocumento, string DNI) { IOrganizationService servicio; servicio = ConexionCRMDA.ObtenerConexion(); string guidContacto = string.Empty; ZthFetchXml365.zthFetch fetch = new ZthFetchXml365.zthFetch("contact", ref servicio); fetch.AgregarCampoRetorno("contact", "contactid", ZthFetchXml365.zthFetch.TipoRetorno.Key); fetch.AgregarFiltroPlano("contact", ZthFetchXml365.zthFetch.TipoFiltro.and, "sole_tipodocumento", ZthFetchXml365.zthFetch.TipoComparacionFiltro.Igual, TipoDocumento); fetch.AgregarFiltroPlano("contact", ZthFetchXml365.zthFetch.TipoFiltro.and, "sole_numerodocumento", ZthFetchXml365.zthFetch.TipoComparacionFiltro.Igual, DNI); DataTable Dato = new DataTable(); Dato = fetch.GeneraTblconFetchResult(false); if (Dato.Rows.Count > 0) return guidContacto = Dato.Rows[0]["contactid"].ToString(); else return guidContacto = null; }
/// <summary> /// Crea el Nuevo Contacto /// </summary> /// <param name="oContactoBE">Datos del Contacto a Actualizar</param> /// <returns>Crea el Nuevo Contacto</returns> public Guid CrearContacto(ContactoBE oContactoBE) { IOrganizationService servicio; servicio = ConexionCRMDA.ObtenerConexion(); SOLE.Contact Contacto = new SOLE.Contact(); Guid guidContacto; // ??? del tipo Guid try { Contacto.FirstName = oContactoBE.Sole_nombres; Contacto.LastName = oContactoBE.Sole_apellidos; Contacto.sole_tipodocumento = new OptionSetValue((int)oContactoBE.Sole_tipodocumento); Contacto.sole_numerodocumento = oContactoBE.Sole_numerodocumento; if (oContactoBE.Sole_tipoContacto == 365230000) { Contacto.sole_estadosole = new OptionSetValue((int)oContactoBE.Sole_estadoSole); } Contacto.sole_tipocontacto = new OptionSetValue((int)oContactoBE.Sole_tipoContacto); Contacto.Telephone1 = oContactoBE.Sole_telefono1; Contacto.EMailAddress1 = oContactoBE.Sole_correoelectronico1; //if (oContactoBE.Sole_fechanacimiento.ToString() != "01-01-1900 0:00:00" && oContactoBE.Sole_fechanacimiento.ToString() != "01-01-0001 0:00:00") //{ // Contacto.BirthDate = oContactoBE.Sole_fechanacimiento; //} Contacto.Telephone2 = oContactoBE.Sole_telefono2; Contacto.Telephone3 = oContactoBE.Sole_telefono3; Contacto.EMailAddress2 = oContactoBE.Sole_correoelectronico2; Contacto.EMailAddress3 = oContactoBE.Sole_correoelectronico3; //Contacto.GenderCode = new OptionSetValue((int)oContactoBE.Sole_sexo); //Contacto.sole_estilovida = new OptionSetValue((int)oContactoBE.Sole_estilovida); //Contacto.sole_ocupacion = new OptionSetValue((int)oContactoBE.Sole_ocupacion); //Contacto.sole_perfilcliente = new OptionSetValue((int)oContactoBE.Sole_perfilcliente); //Contacto.sole_fuenteorigen = new OptionSetValue((int)oContactoBE.Sole_fuenteorigen); //Contacto.sole_tipofuenteorigen = new OptionSetValue((int)oContactoBE.Sole_fuenteorigen); if (oContactoBE.Sole_tipoclientepotencial != 0) { Contacto.sole_tipoclientepotencial = new OptionSetValue((int)oContactoBE.Sole_tipoclientepotencial); } //if (oContactoBE.Sole_fechaconversion.ToString() != "01-01-1900 0:00:00" && oContactoBE.Sole_fechaconversion.ToString() != "01-01-0001 0:00:00") //{ // Contacto.sole_fechaconversion = oContactoBE.Sole_fechaconversion; //} Contacto.sole_interesbano = oContactoBE.Sole_interesbano; Contacto.sole_interescocina = oContactoBE.Sole_interescocina; Contacto.sole_interesdescanso = oContactoBE.Sole_interesdescanso; //if (oContactoBE.Sole_estadoSole != 0) //{ // Contacto.sole_estadosole = new OptionSetValue((int)oContactoBE.Sole_estadoSole); //} //if (oContactoBE.Sole_fechanuevo.ToString() != "01-01-1900 0:00:00" && oContactoBE.Sole_fechanuevo.ToString() != "01-01-0001 0:00:00") //{ // Contacto.sole_fechanuevo = oContactoBE.Sole_fechanuevo; //} //if (oContactoBE.Sole_fechaactivo.ToString() != "01-01-1900 0:00:00" && oContactoBE.Sole_fechaactivo.ToString() != "01-01-0001 0:00:00") //{ // Contacto.sole_fechaactivo = oContactoBE.Sole_fechaactivo; //} //if (oContactoBE.Sole_fechaincativo.ToString() != "01-01-1900 0:00:00" && oContactoBE.Sole_fechaincativo.ToString() != "01-01-0001 0:00:00") //{ // Contacto.sole_fechainactivo = oContactoBE.Sole_fechaincativo; //} Contacto.DoNotEMail = oContactoBE.Sole_permissionmarketingcorreo; Contacto.DoNotPhone = oContactoBE.Sole_permissionmarketingtelefono; Contacto.sole_departamentoid = new EntityReference(SOLE.sole_departamento.EntityLogicalName, Guid.Parse(oContactoBE.Sole_departamento)); Contacto.sole_provinciaid = new EntityReference(SOLE.sole_provincia.EntityLogicalName, Guid.Parse(oContactoBE.Sole_provincia)); Contacto.sole_distritoid = new EntityReference(SOLE.sole_distrito.EntityLogicalName, Guid.Parse(oContactoBE.Sole_distrito)); Contacto.Address1_Name = oContactoBE.Sole_direccion; //Validamos si el Campo Sole Tienda Asignada tiene Datos if (oContactoBE.Sole_tienda != "") { //Como Tiene Datos, buscamos el Guid del Usuario de la Tienda Asignada string guidUsuario; guidUsuario = oFuncionesDA.ObtieneUsuarioIdxTiendaAsignada(oContactoBE.Sole_tienda); // Busca el id del usuario por la tienda asignada if (guidUsuario != "") { Contacto.OwnerId = new EntityReference("systemuser", Guid.Parse(guidUsuario)); // Referncia de una entidad que esta relacionada con Contacto guidContacto = servicio.Create(Contacto); // ocupamos uno de los metodos de IOrganizationServices return(guidContacto); } else { guidContacto = servicio.Create(Contacto); return(guidContacto); } } else { guidContacto = servicio.Create(Contacto); return(guidContacto); } } catch (Exception ex) { oBitacoraErroresBE.Codigo = ex.HResult.ToString(); oBitacoraErroresBE.Proceso = "Crear Contacto"; oBitacoraErroresBE.Error = ex.Source; oBitacoraErroresBE.Descripcion = ex.Message; oBitacoraErroresBE.IdRegistro = oContactoBE.ContactoId; oBitacoraErroresBE.Entidad = "Contacto"; oBitacoraErroresBE.EstadoCarga = "0"; oFuncionesDA.RegistraBitacoraErrores(oBitacoraErroresBE); //oFuncionesDA.ActualizarEstadoTablaContacto(oContactoBE.ContactoId); string Mensaje = "Error al Crear el Contacto. Se ha producido el siguiente error: " + ex.Message; ZthMetodosVarios.Metodos.GuardarLog(Ruta, Mensaje); //ZthEnvioCorreos_CRM365.Metodos.EnviarCorreoError(CorreoSoporte, CorreoCliente, "Integración MACAL", Ruta, Mensaje, CorreoClave, Port, Host); throw ex; } }
/// <summary> /// Actualiza los Datos del Contactogithub /// </summary> /// <param name="guidContacto">Guid del Contacto a Actualizar</param> /// <param name="oContactoBE">Datos del Contacto a Actualizar</param> /// <returns>Actualiza los Datos del Contacto</returns> public Boolean ActualizaContacto(string guidContacto, ContactoBE oContactoBE) { IOrganizationService servicio; // Instancia del servicio servicio = ConexionCRMDA.ObtenerConexion(); // asginamos la cadena de conexión SOLE.Contact Contacto = new SOLE.Contact(); // Instancia de la entidad Contacto try { // guid esta dentro del crm Contacto.ContactId = Guid.Parse(guidContacto); /* * Resumen: * Asignamos campos de BE a Campos de la entidad contacto de CRM (Campos de BE contienen los datos de SQL Server) * Actualizamos el contacto del CRM */ Contacto.FirstName = oContactoBE.Sole_nombres; Contacto.LastName = oContactoBE.Sole_apellidos; Contacto.Telephone1 = oContactoBE.Sole_telefono1; Contacto.EMailAddress1 = oContactoBE.Sole_correoelectronico1; //if (oContactoBE.Sole_fechanacimiento.ToString() != "01-01-0001 0:00:00") //{ // Contacto.BirthDate = oContactoBE.Sole_fechanacimiento; //} //Contacto.GenderCode = new OptionSetValue((int)oContactoBE.Sole_sexo); Contacto.Telephone2 = oContactoBE.Sole_telefono2; Contacto.Telephone3 = oContactoBE.Sole_telefono3; Contacto.EMailAddress2 = oContactoBE.Sole_correoelectronico2; Contacto.EMailAddress3 = oContactoBE.Sole_correoelectronico3; //Contacto.sole_estilovida = new OptionSetValue((int)oContactoBE.Sole_estilovida); //Contacto.sole_ocupacion = new OptionSetValue((int)oContactoBE.Sole_ocupacion); //Contacto.sole_perfilcliente = new OptionSetValue((int)oContactoBE.Sole_perfilcliente); //Contacto.sole_tipoclientepotencial = new OptionSetValue((int)oContactoBE.Sole_tipoclientepotencial); //Contacto.sole_fuenteorigen = new OptionSetValue((int)oContactoBE.Sole_fuenteorigen); //Contacto.sole_tipofuenteorigen = new OptionSetValue((int)oContactoBE.Sole_fuenteorigen); //if (oContactoBE.Sole_fechaconversion.ToString() != "01-01-0001 0:00:00") //{ // Contacto.sole_fechaconversion = oContactoBE.Sole_fechaconversion; //} Contacto.sole_interesbano = oContactoBE.Sole_interesbano; Contacto.sole_interescocina = oContactoBE.Sole_interescocina; Contacto.sole_interesdescanso = oContactoBE.Sole_interesdescanso; if (oContactoBE.Sole_estadoSole != 0) { Contacto.sole_estadosole = new OptionSetValue((int)oContactoBE.Sole_estadoSole); } //if (oContactoBE.Sole_fechanuevo.ToString() != "01-01-0001 0:00:00") //{ // Contacto.sole_fechanuevo = oContactoBE.Sole_fechanuevo; //} //if (oContactoBE.Sole_fechaactivo.ToString() != "01-01-0001 0:00:00") //{ // Contacto.sole_fechaactivo = oContactoBE.Sole_fechaactivo; //} //if (oContactoBE.Sole_fechaincativo.ToString() != "01-01-0001 0:00:00") //{ // Contacto.sole_fechainactivo = oContactoBE.Sole_fechaincativo; //} Contacto.DoNotEMail = oContactoBE.Sole_permissionmarketingcorreo; Contacto.DoNotPhone = oContactoBE.Sole_permissionmarketingtelefono; Contacto.sole_departamentoid = new EntityReference(SOLE.sole_departamento.EntityLogicalName, Guid.Parse(oContactoBE.Sole_departamento)); Contacto.sole_provinciaid = new EntityReference(SOLE.sole_provincia.EntityLogicalName, Guid.Parse(oContactoBE.Sole_provincia)); Contacto.sole_distritoid = new EntityReference(SOLE.sole_distrito.EntityLogicalName, Guid.Parse(oContactoBE.Sole_distrito)); Contacto.Address1_Name = oContactoBE.Sole_direccion; Contacto.sole_zona = new OptionSetValue((int)oContactoBE.Sole_zona); if (oContactoBE.Sole_nse != 0) { Contacto.sole_nse = new OptionSetValue((int)oContactoBE.Sole_nse); } return(true); } catch (Exception ex) { /* * * * Guardamos los datos en la variables de BE de la clase bitácora errores * */ oBitacoraErroresBE.Codigo = ex.HResult.ToString(); // La asignacion de un identificador oBitacoraErroresBE.Proceso = "Actualizar Contacto"; // Nombre del proceso oBitacoraErroresBE.Error = ex.Source; // Fuente de error oBitacoraErroresBE.Descripcion = ex.Message; // Mensaje descriptivo de la excepción oBitacoraErroresBE.IdRegistro = oContactoBE.ContactoId; // ID donde se haya el error oBitacoraErroresBE.Entidad = "Contacto"; // entidad del error oBitacoraErroresBE.EstadoCarga = "0"; // Carga cero oFuncionesDA.RegistraBitacoraErrores(oBitacoraErroresBE); //oFuncionesDA.ActualizarEstadoTablaContacto(oContactoBE.ContactoId); string Mensaje = "Error al Actualizar el Contacto. Se ha producido el siguiente error: " + ex.Message; ZthMetodosVarios.Metodos.GuardarLog(Ruta, Mensaje); //ZthEnvioCorreos_CRM365.Metodos.EnviarCorreoError(CorreoSoporte, CorreoCliente, "Integración MACAL", Ruta, Mensaje, CorreoClave, Port, Host); throw ex; } }
/// <summary> /// Crea La Oportunidad /// </summary> /// <param name="ClienteId">Cliente Id al que le Asignamos la Oportunidad</param> /// <param name="oOportunidadBE">Datos de la Oportunidad</param> /// <returns> Crea La Oportunidad</returns> public Guid CrearOportunidad(Guid ClienteId, OportunidadesBE oOportunidadBE) { IOrganizationService servicio; servicio = ConexionCRMDA.ObtenerConexion(); SOLE.Opportunity Oportunidad = new SOLE.Opportunity(); Guid guidOportunidad; try { // con los datos de sql almacenados en BE if (oOportunidadBE.Sole_fechasolicitud.ToString() != "01-01-0001 0:00:00" && oOportunidadBE.Sole_fechasolicitud.ToString() != "01-01-1900 0:00:00") { Oportunidad.sole_fechasolicitud = Convert.ToDateTime(oOportunidadBE.Sole_fechasolicitud); } if (oOportunidadBE.Sole_canal != "") { Oportunidad.sole_canal = new OptionSetValue(int.Parse(oOportunidadBE.Sole_canal)); } // Referencias a entidades ue yacen en la entidad principal Oportunidad Oportunidad.sole_tiendaid = new EntityReference(SOLE.sole_tienda.EntityLogicalName, Guid.Parse(oOportunidadBE.Sole_tienda)); Oportunidad.ParentContactId = new EntityReference(SOLE.Contact.EntityLogicalName, ClienteId); Oportunidad.sole_ordensolicitud = oOportunidadBE.Sole_ordenservicio; if (oOportunidadBE.Sole_fechaservicio.ToString() != "01-01-0001 0:00:00" && oOportunidadBE.Sole_fechaservicio.ToString() != "01-01-1900 0:00:00") { Oportunidad.sole_fechaservicio = Convert.ToDateTime(oOportunidadBE.Sole_fechaservicio); } if (oOportunidadBE.Sole_tiposervicio != "") { Oportunidad.sole_tiposervicio = new OptionSetValue(int.Parse(oOportunidadBE.Sole_tiposervicio)); } if (oOportunidadBE.Sole_empresaqueinstalo != "") { Oportunidad.sole_empresainstalo = new OptionSetValue(int.Parse(oOportunidadBE.Sole_empresaqueinstalo)); } Oportunidad.sole_nombretecnico = oOportunidadBE.Sole_nombretecnico; if (oOportunidadBE.Sole_fechacompra.ToString() != "01-01-0001 0:00:00" && oOportunidadBE.Sole_fechacompra.ToString() != "01-01-1900 0:00:00") { Oportunidad.ActualCloseDate = Convert.ToDateTime(oOportunidadBE.Sole_fechacompra); } if (oOportunidadBE.Sole_tipocomprobante != null) { Oportunidad.sole_tipocomprobante = new OptionSetValue(int.Parse(oOportunidadBE.Sole_tipocomprobante)); } Oportunidad.sole_numerocomprobante = oOportunidadBE.Sole_numerocomprobante; if (oOportunidadBE.Sole_metodoventa != null) { Oportunidad.sole_metodoventa = new OptionSetValue(int.Parse(oOportunidadBE.Sole_metodoventa)); } Money costoVenta = new Money(oOportunidadBE.Sole_costoventa); Oportunidad.sole_costoventa = costoVenta; Money utilidadBruta = new Money(oOportunidadBE.Sole_utilidadbruta); Oportunidad.sole_utilidadbruta = utilidadBruta; Money precioVentaPublico = new Money(oOportunidadBE.Sole_precioventapublico); Oportunidad.TotalAmountLessFreight = precioVentaPublico; Money ventaNeta = new Money(oOportunidadBE.Sole_ventaneta); Oportunidad.TotalAmount = ventaNeta; //Como solo hay una Lista de Precio la Traemos de Duro del App.Config string listaDePrecios = ""; listaDePrecios = ZthSeguridad.Metodos.Desencriptar(ConfigurationManager.AppSettings["ListaPrecios"].ToString()); Oportunidad.PriceLevelId = new EntityReference(SOLE.Contact.EntityLogicalName, Guid.Parse(listaDePrecios)); guidOportunidad = servicio.Create(Oportunidad); return(guidOportunidad); } catch (Exception ex) { oBitacoraErroresBE.Codigo = ex.HResult.ToString(); oBitacoraErroresBE.Proceso = "Crear Oportunidad"; oBitacoraErroresBE.Error = ex.Source; oBitacoraErroresBE.Descripcion = ex.Message; oBitacoraErroresBE.IdRegistro = oOportunidadBE.IdOportunidadCargaInicial; oBitacoraErroresBE.Entidad = "Oportunidad"; oBitacoraErroresBE.EstadoCarga = "0"; oFuncionesDA.RegistraBitacoraErrores(oBitacoraErroresBE); //oFuncionesDA.ActualizarEstadoTablaOportunidad(oOportunidadBE.IdOportunidadCargaInicial); string Mensaje = "Error al Crear la Oportunidad. Se ha producido el siguiente error: " + ex.Message; ZthMetodosVarios.Metodos.GuardarLog(Ruta, Mensaje); //ZthEnvioCorreos_CRM365.Metodos.EnviarCorreoError(CorreoSoporte, CorreoCliente, "Integración MACAL", Ruta, Mensaje, CorreoClave, Port, Host); throw ex; } }