/// <summary> /// Método Público encargado de Obtener una Instancia de la Clase dado un RFC /// </summary> /// <param name="rfc">RFC</param> /// <param name="id_compania_uso">Compania Uso</param> /// <returns></returns> public static CompaniaEmisorReceptor ObtieneInstanciaCompaniaRFC(string rfc, int id_compania_uso) { //Declarando Objeto de Retorno CompaniaEmisorReceptor cer = new CompaniaEmisorReceptor(); //Declarando arreglo de parámetros para consulta en BD object[] param = { 5, 0, "", rfc, "", "", 0, false, false, false, 0, "", "", "", 0, 0, id_compania_uso, 0, "", "", 0, 0, 0, false, "", "" }; //Realizando la consulta using (DataSet ds = CapaDatos.m_capaDeDatos.EjecutaProcAlmacenadoDataSet(_nom_sp, param)) { //Validando si existe el Registro if (TSDK.Datos.Validacion.ValidaOrigenDatos(ds, "Table")) { //Recorriendo Registro foreach (DataRow dr in ds.Tables["Table"].Rows) { //Instanciando Compania cer = new CompaniaEmisorReceptor(Convert.ToInt32(dr["Id"])); } } } //Devolviendo Resultado Obtenido return(cer); }
/// <summary> /// Inicializa el contenido de los controles (en blanco o predeterminado) con los datos de un registro /// </summary> private void inicializaContenidoControles() { //Determinando el estatus de la página switch ((TSDK.ASP.Pagina.Estatus)Session["estatus"]) { case TSDK.ASP.Pagina.Estatus.Nuevo: //Borrando el contenido txtContacto.Text = ""; txtCliente.Text = ""; txtUbicacion.Text = ""; break; case TSDK.ASP.Pagina.Estatus.Lectura: case TSDK.ASP.Pagina.Estatus.Edicion: //Intsnaciamos Notificación using (SAT_CL.Notificacion.Notificacion objNotificacion = new SAT_CL.Notificacion.Notificacion(Convert.ToInt32(Session["id_registro"]))) { //Instanciamos Contacto using (SAT_CL.Global.Contacto objContacto = new SAT_CL.Global.Contacto(objNotificacion.id_contacto)) { txtContacto.Text = objContacto.nombre + " ID:" + objContacto.id_contacto.ToString(); //Instanciamos Cliente using (SAT_CL.Global.CompaniaEmisorReceptor objCompania = new SAT_CL.Global.CompaniaEmisorReceptor(objNotificacion.id_compania_cliente)) { //Si la Notificación es Para Todos los Clientes if (objNotificacion.id_compania_cliente == 0) { txtCliente.Text = "TODOS" + " ID:0"; } else { txtCliente.Text = objCompania.nombre + " ID:" + objCompania.id_compania_emisor_receptor.ToString(); } } //Validamos Tabla if (objNotificacion.id_tabla == 15) { //Si la Notificación es Para Todos los Clientes if (objNotificacion.id_registro == 0) { txtUbicacion.Text = "TODOS" + " ID:0"; } else { //Si la Tabla es Ubicación using (SAT_CL.Global.Ubicacion objUbicacion = new SAT_CL.Global.Ubicacion(objNotificacion.id_registro)) { txtUbicacion.Text = objUbicacion.descripcion + " ID:" + objUbicacion.id_ubicacion.ToString(); } } } } } break; } }
/// <summary> /// Notificación de cierre de sesión /// </summary> /// <param name="id_sesion_cerrada">Id de Sesión de Usuario que fue terminada</param> /// <returns></returns> public RetornoOperacion NotificacionCierreSesion(int id_sesion_cerrada) { //Inicializando retorno RetornoOperacion resultado = new RetornoOperacion(); //Token del usuario al que se reportará string tokenFCM = ""; //Instanciando sesión using (UsuarioSesion sesion = new UsuarioSesion(id_sesion_cerrada)) { //Validando si se tiene habilitado el uso de apliacación móvil resultado = CompaniaEmisorReceptor.ValidaConfiguracionUsoAplicacionMovil(sesion.id_compania_emisor_receptor); if (resultado.OperacionExitosa) { //Recuperando referencias de usuario y compañía using (DataTable mit = Referencia.CargaReferencias(sesion.id_usuario, 30, ReferenciaTipo.ObtieneIdReferenciaTipo(sesion.id_compania_emisor_receptor, 30, "Token FCM", 0, "Configuración"))) tokenFCM = mit != null ? mit.Rows[0]["Valor"].ToString() : ""; //Si se obtuvo el token del usuario correspondiente if (tokenFCM != "") { //Construyendo mensaje var datos = new { Titulo = "¡Sesión Terminada!", Mensaje = "Vuelva a iniciar sesión en este dispositivo.", TipoNotificacion = "CierreSesion" }; //Enviando mensaje vía FCM resultado = FirebaseCloudNotifications.EnviaMensajeFCM(_url_servidor_fcm, _server_token_fcm, tokenFCM, FirebaseCloudNotifications.Prioridad.Normal, datos); } else { resultado = new RetornoOperacion("El token del dispositivo del usuario debe ser actualizado."); } } } //Devolviendo resultado return(resultado); }
/// <summary> /// Carga valores de un registro determinado /// </summary> private void inicializaValoresRegistro() { //Determinando el tipo de carga a realizar en base al estatus switch ((Pagina.Estatus)Session["estatus"]) { //Nuevo registro case Pagina.Estatus.Nuevo: //Id de Registro lblID.Text = "ID"; //Emisor using (SAT_CL.Global.CompaniaEmisorReceptor Emisor = new SAT_CL.Global.CompaniaEmisorReceptor(((SAT_CL.Seguridad.UsuarioSesion)Session["usuario_sesion"]).id_compania_emisor_receptor)) { txtEmisor.Text = Emisor.nombre + " ID:" + Emisor.id_compania_emisor_receptor.ToString(); } //Serie y Folio txtSerie.Text = txtFolio.Text = ""; //Domicilio Emisor cargaDomicilioRequerido("emisor"); //Sucursal ddlSucursal.SelectedValue = "0"; //Domicilio de Sucursal txtDomicilioSucursal.Text = ""; //Receptor y Domicilio receptor txtReceptor.Text = txtDomicilioReceptor.Text = ""; //Método de Pago predeterminado "Transferencia Electrónica" ddlMetodoPago.SelectedValue = "5"; ddlNoCuentaPago.SelectedValue = "0"; //Tipo de Comprobante ddlTipoComprobante.SelectedValue = "1"; //Estatus ddlEstatus.SelectedValue = "1"; //Condiciones de Pago ddlCondicionesPago.SelectedValue = "1"; //Forma de Pago "Una sola exhibición" ddlFormaPago.SelectedValue = "1"; //Parcialidades y Datos de Comprobante Original inicializaParcialidades(); //Moneda y Tipo de Cambio ddlMoneda.SelectedValue = "1"; txtTipoCambio.Text = "1.0000"; //Fechas de Captura y Expedición txtFechaCaptura.Text = txtFechaExpedicion.Text = //Lugar de Expedición y Sello Digital txtSelloDigital.Text = ""; cargaDomicilioRequerido("lugar_expedicion"); //fecha Cancelación txtFechaCancelacion.Text = ""; //Check Timbrado chkGenerado.Checked = false; //Totales de Comprobante lblSubtotalCaptura.Text = lblSubtotalNacional.Text = lblDescuentosCaptura.Text = lblDescuentosNacional.Text = lblImpuestosCaptura.Text = lblImpuestosNacional.Text = lblTotalCaptura.Text = lblTotalNacional.Text = string.Format("{0:c4}", 0); break; //Lectura y edición de registro activo en sesión case Pagina.Estatus.Lectura: case Pagina.Estatus.Edicion: //Instanciando registro comprobante using (SAT_CL.FacturacionElectronica.Comprobante c = new SAT_CL.FacturacionElectronica.Comprobante(Convert.ToInt32(Session["id_registro"]))) { //Asignando valores de registro //Id de Registro lblID.Text = c.id_comprobante.ToString(); //Serie y Folio txtSerie.Text = c.serie; txtFolio.Text = c.folio.ToString(); //Emisor using (SAT_CL.Global.CompaniaEmisorReceptor Emisor = new SAT_CL.Global.CompaniaEmisorReceptor(c.id_compania_emisor)) { txtEmisor.Text = Emisor.nombre + " ID:" + Emisor.id_compania_emisor_receptor.ToString(); } //Domicilio Emisor cargaDomicilioRequerido("emisor"); //Sucursal ddlSucursal.SelectedValue = c.id_sucursal.ToString(); //Domicilio de Sucursal cargaDomicilioRequerido("sucursal"); //Receptor y Domicilio receptor using (CompaniaEmisorReceptor r = new CompaniaEmisorReceptor(c.id_compania_receptor)) { txtReceptor.Text = r.nombre + " ID:" + r.id_compania_emisor_receptor.ToString(); } cargaDomicilioRequerido("receptor"); //Método de Pago predeterminado "Transferencia Electrónica" ddlMetodoPago.SelectedValue = c.id_metodo_pago.ToString(); //Cargando Cuentas Pago SAT_CL.CapaNegocio.m_capaNegocio.CargaCatalogo(ddlNoCuentaPago, 42, "NO IDENTIFICADO", 25, "", c.id_compania_receptor, ""); ddlNoCuentaPago.SelectedValue = c.id_cuenta_pago.ToString(); //Tipo de Comprobante ddlTipoComprobante.SelectedValue = ((byte)c.tipo_comprobante).ToString(); //Estatus ddlEstatus.SelectedValue = ((byte)c.estatus_comprobante).ToString(); //Condiciones de Pago ddlCondicionesPago.SelectedValue = c.id_condiciones_pago.ToString(); //Forma de Pago "Una sola exhibición" ddlFormaPago.SelectedValue = c.id_forma_pago.ToString(); //Parcialidades y Datos de Comprobante Original txtNoParcialidad.Text = c.no_parcialidad.ToString(); txtTotalParcialidades.Text = c.total_parcialidades.ToString(); txtSerieOriginal.Text = c.serie_folio_original; txtFolioOriginal.Text = c.folio_original.ToString(); txtMontoFolioOriginal.Text = c.monto_folio_original.ToString(); txtFechaFolioOriginal.Text = Fecha.ConvierteDateTimeString(c.fecha_folio_original, "yyyy/MM/dd hh:mm:ss tt"); //Moneda y Tipo de Cambio if (c.id_moneda > 1) { using (TipoCambio tc = new TipoCambio(((SAT_CL.Seguridad.UsuarioSesion)Session["usuario_sesion"]).id_compania_emisor_receptor, c.id_moneda, c.fecha_tipo_cambio, 0)) { ddlMoneda.SelectedValue = tc.id_moneda.ToString(); txtTipoCambio.Text = tc.valor_tipo_cambio.ToString(); } } //Si no hay tipo de cambio else { ddlMoneda.SelectedValue = "1"; txtTipoCambio.Text = "1.0000"; } //Fechas de Captura y Expedición txtFechaCaptura.Text = c.fecha_captura.ToString("yyyy/MM/dd hh:mm:ss tt"); txtFechaExpedicion.Text = Fecha.ConvierteDateTimeString(c.fecha_expedicion, "yyyy/MM/dd hh:mm:ss tt"); //Lugar de Expedición y Sello Digital txtLugarExpedicion.Text = c.lugar_expedicion; txtSelloDigital.Text = c.sello; //fecha Cancelación txtFechaCancelacion.Text = Fecha.ConvierteDateTimeString(c.fecha_cancelacion, "yyyy/MM/dd hh:mm:ss tt"); //Check Timbrado chkGenerado.Checked = c.generado; //Totales de Comprobante lblSubtotalCaptura.Text = string.Format("{0:c4}", c.subtotal_moneda_captura); lblSubtotalNacional.Text = string.Format("{0:c4}", c.subtotal_moneda_nacional); lblDescuentosCaptura.Text = string.Format("{0:c4}", c.descuento_moneda_captura); lblDescuentosNacional.Text = string.Format("{0:c4}", c.descuento_moneda_nacional); lblImpuestosCaptura.Text = string.Format("{0:c4}", c.impuestos_moneda_captura); lblImpuestosNacional.Text = string.Format("{0:c4}", c.impuestos_moneda_nacional); lblTotalCaptura.Text = string.Format("{0:c4}", c.total_moneda_captura); lblTotalNacional.Text = string.Format("{0:c4}", c.total_moneda_nacional); } break; } //Estableciendo indice de tab por default //tbcComprobante.ActiveTabIndex = 0; }
public static byte[] GeneraPDFGastosGenerales(int IdServicio) { //Creando nuevo visor de reporte ReportViewer rvReporte = new Microsoft.Reporting.WebForms.ReportViewer(); //Obtenemos el registro completo del servicio proporcionado using (SAT_CL.Documentacion.Servicio Viaje = new SAT_CL.Documentacion.Servicio(IdServicio)) { //Obtenemos los datos de la compañía emisora using (SAT_CL.Global.CompaniaEmisorReceptor Compania = new SAT_CL.Global.CompaniaEmisorReceptor(Viaje.id_compania_emisor)) { //Declaramos la ubicación reporte rvReporte.LocalReport.ReportPath = System.Web.HttpContext.Current.Server.MapPath("~/RDLC/GastosGenerales.rdlc"); //Habilita la consulta de imagenes externas rvReporte.LocalReport.EnableExternalImages = true; //Limpia el reporte rvReporte.LocalReport.DataSources.Clear(); //Declarando arreglo auxiliar byte[] logo = null; //Declarando la tabla para almacenar al logo using (DataTable dtLogo = new DataTable()) { //Añadiendo la única columna dtLogo.Columns.Add("Logotipo", typeof(byte[])); try { logo = System.IO.File.ReadAllBytes(Compania.ruta_logotipo); } catch { logo = null; } //Agregando imagen dtLogo.Rows.Add(logo); //Agregamos al origen de datos ReportDataSource rdsLogo = new ReportDataSource("Logotipo", dtLogo); rvReporte.LocalReport.DataSources.Add(rdsLogo); } //Creación de variables que almacenan los datos consultados de un registro ReportParameter NoServicio = new ReportParameter("NoServicio", Viaje.no_servicio); //Asignamos al reporte las variables creadas rvReporte.LocalReport.SetParameters(new ReportParameter[] { NoServicio }); //Cargando todos los gastos generales del servicio especificado using (DataSet DSGastosGenerales = SAT_CL.EgresoServicio.Reportes.CargaGastosGenerales(IdServicio)) { //Valida que existan los registros del DataSet if (Validacion.ValidaOrigenDatos(DSGastosGenerales)) { //Separamos las tablas obtenidas del DataSet DataTable MitCasetas = DSGastosGenerales.Tables[0]; DataTable MitConceptos = DSGastosGenerales.Tables[1]; DataTable MitDiesel = DSGastosGenerales.Tables[2]; if (MitCasetas.Rows.Count > 0) { //Declarando tabla using (DataTable dtCasetas = new DataTable()) { dtCasetas.Columns.Add("Ruta", typeof(string)); dtCasetas.Columns.Add("Caseta", typeof(string)); dtCasetas.Columns.Add("TipoCaseta", typeof(string)); dtCasetas.Columns.Add("RedCarretera", typeof(string)); dtCasetas.Columns.Add("IAVE", typeof(string)); dtCasetas.Columns.Add("Ejes", typeof(int)); dtCasetas.Columns.Add("MontoIAVE", typeof(decimal)); dtCasetas.Columns.Add("MontoEfectivo", typeof(decimal)); dtCasetas.Columns.Add("Deposito", typeof(decimal)); //Recuperamos los valores y creamos la tabla a cargar en el RDLC foreach (DataRow r in MitCasetas.Rows) { dtCasetas.Rows.Add(r.ItemArray); } ReportDataSource rdsCasetas = new ReportDataSource("Casetas", dtCasetas); rvReporte.LocalReport.DataSources.Add(rdsCasetas); } } else { //Declarando tabla using (DataTable dtCasetas = new DataTable()) { dtCasetas.Columns.Add("Ruta", typeof(string)); dtCasetas.Columns.Add("Caseta", typeof(string)); dtCasetas.Columns.Add("TipoCaseta", typeof(string)); dtCasetas.Columns.Add("RedCarretera", typeof(string)); dtCasetas.Columns.Add("IAVE", typeof(string)); dtCasetas.Columns.Add("Ejes", typeof(int)); dtCasetas.Columns.Add("MontoIAVE", typeof(decimal)); dtCasetas.Columns.Add("MontoEfectivo", typeof(decimal)); dtCasetas.Columns.Add("Deposito", typeof(decimal)); //Recuperamos los valores y creamos la tabla a cargar en el RDLC dtCasetas.Rows.Clear(); ReportDataSource rdsCasetas = new ReportDataSource("Casetas", dtCasetas); rvReporte.LocalReport.DataSources.Add(rdsCasetas); } } if (MitConceptos.Rows.Count > 0) { //Declarando la tabla using (DataTable dtConceptos = new DataTable()) { dtConceptos.Columns.Add("Id", typeof(string)); dtConceptos.Columns.Add("Concepto", typeof(string)); dtConceptos.Columns.Add("Cantidad", typeof(int)); dtConceptos.Columns.Add("Precio", typeof(decimal)); dtConceptos.Columns.Add("Monto", typeof(decimal)); //Recuperamos los valores y creamos la tabla a cargar en el RDLC foreach (DataRow r in MitConceptos.Rows) { dtConceptos.Rows.Add(r.ItemArray); } ReportDataSource rdsConceptos = new ReportDataSource("Conceptos", dtConceptos); rvReporte.LocalReport.DataSources.Add(rdsConceptos); } } else { //Declarando la tabla using (DataTable dtConceptos = new DataTable()) { dtConceptos.Columns.Add("Id", typeof(string)); dtConceptos.Columns.Add("Concepto", typeof(string)); dtConceptos.Columns.Add("Cantidad", typeof(int)); dtConceptos.Columns.Add("Precio", typeof(decimal)); dtConceptos.Columns.Add("Monto", typeof(decimal)); //Recuperamos los valores y creamos la tabla a cargar en el RDLC dtConceptos.Rows.Clear(); ReportDataSource rdsConceptos = new ReportDataSource("Conceptos", dtConceptos); rvReporte.LocalReport.DataSources.Add(rdsConceptos); } } if (MitDiesel.Rows.Count > 0) { //Declarando la tabla using (DataTable dtDiesel = new DataTable()) { dtDiesel.Columns.Add("Id", typeof(string)); dtDiesel.Columns.Add("Concepto", typeof(string)); dtDiesel.Columns.Add("Cantidad", typeof(int)); dtDiesel.Columns.Add("Precio", typeof(decimal)); dtDiesel.Columns.Add("Monto", typeof(decimal)); dtDiesel.Columns.Add("EstacionCombustible", typeof(string)); //Recuperamos los valores y creamos la tabla a cargar en el RDLC foreach (DataRow r in MitDiesel.Rows) { dtDiesel.Rows.Add(r.ItemArray); } ReportDataSource rdsDiesel = new ReportDataSource("Diesel", dtDiesel); rvReporte.LocalReport.DataSources.Add(rdsDiesel); } } else { //Declarando la tabla using (DataTable dtDiesel = new DataTable()) { dtDiesel.Columns.Add("Id", typeof(string)); dtDiesel.Columns.Add("Concepto", typeof(string)); dtDiesel.Columns.Add("Cantidad", typeof(int)); dtDiesel.Columns.Add("Precio", typeof(decimal)); dtDiesel.Columns.Add("Monto", typeof(decimal)); dtDiesel.Columns.Add("EstacionCombustible", typeof(string)); //Recuperamos los valores y creamos la tabla a cargar en el RDLC dtDiesel.Rows.Clear(); ReportDataSource rdsDiesel = new ReportDataSource("Diesel", dtDiesel); rvReporte.LocalReport.DataSources.Add(rdsDiesel); } } //Devolviendo resultado return(rvReporte.LocalReport.Render("PDF")); } else { return(null); } } } } //SAT_CL.Documentacion.Servicio Serv = new SAT_CL.Documentacion.Servicio(IdServicio); //Generando flujo del reporte //byte[] bytes = this.rvReporte.LocalReport.Render("PDF"); //Descargando Archivo PDF //TSDK.Base.Archivo.DescargaArchivo(bytes, string.Format("Gastos_generales_servicio_{0}.pdf", Serv.no_servicio), TSDK.Base.Archivo.ContentType.application_PDF); }
/// <summary> /// Carga valores de un registro determinado /// </summary> private void inicializaValoresRegistro() { //Determinando el tipo de carga a realizar en base al estatus switch ((Pagina.Estatus)Session["estatus"]) { //Nuevo registro case Pagina.Estatus.Nuevo: //Id de Registro lblID.Text = "ID"; //Serie txtSerie.Text = ""; //Folio txtFolio.Text = ""; //Emisor using (SAT_CL.Global.CompaniaEmisorReceptor Emisor = new SAT_CL.Global.CompaniaEmisorReceptor(((SAT_CL.Seguridad.UsuarioSesion)Session["usuario_sesion"]).id_compania_emisor_receptor)) { txtEmisor.Text = Emisor.nombre + " ID:" + Emisor.id_compania_emisor_receptor.ToString(); } //Domicilio Emisor cargaDomicilioRequerido("emisor"); //Sucursal ddlSucursal.SelectedValue = "0"; //Receptor y Domicilio receptor txtReceptor.Text = ""; //Método de Pago predeterminado "Transferencia Electrónica" ddlMetodoPago.SelectedValue = "5"; //Tipo de Comprobante ddlTipoComprobante.SelectedValue = "1"; //Estatus ddlEstatus.SelectedValue = "1"; //Confirmacion txtConfirmacion.Text = ""; //Régimen Fiscal txtRegimenFiscal.Text = ""; //Uso CFDI ddlUsoCFDI.SelectedValue = ""; //Condiciones de Pago txtCondicionesPago.Text = ""; //Forma de Pago "Una sola exhibición" ddlFormaPago.SelectedValue = "1"; //Moneda ddlMoneda.SelectedValue = "1"; //Tipo de Cambio txtTipoCambio.Text = "1.0000"; //Fechas de Captura txtFechaCaptura.Text = ""; //Fecha de Expedición txtFechaExpedicion.Text = ""; //Lugar de Expedición cargaDomicilioRequerido("lugar_expedicion"); //Check timbrado chkGenerado.Checked = false; //Sello digital txtSelloDigital.Text = ""; //fecha Cancelación txtFechaCancelacion.Text = ""; //Totales de Comprobante lblSubtotalCaptura.Text = lblSubtotalNacional.Text = lblDescuentosCaptura.Text = lblDescuentosNacional.Text = lblImpuestosCaptura.Text = lblImpuestosNacional.Text = lblTotalCaptura.Text = lblTotalNacional.Text = string.Format("{0:c4}", 0); break; //Lectura y edición de registro activo en sesión case Pagina.Estatus.Lectura: case Pagina.Estatus.Edicion: //Instanciando registro comprobante using (SAT_CL.FacturacionElectronica33.Comprobante c = new SAT_CL.FacturacionElectronica33.Comprobante(Convert.ToInt32(Session["id_registro"]))) { //Asignando valores de registro //Id de Registro lblID.Text = c.id_comprobante33.ToString(); //Serie txtSerie.Text = c.serie; //Folio txtFolio.Text = c.folio.ToString(); //Emisor using (SAT_CL.Global.CompaniaEmisorReceptor Emisor = new SAT_CL.Global.CompaniaEmisorReceptor(c.id_compania_emisor)) { txtEmisor.Text = Emisor.nombre + " ID:" + Emisor.id_compania_emisor_receptor.ToString(); } //Domicilio Emisor cargaDomicilioRequerido("emisor"); //Sucursal ddlSucursal.SelectedValue = c.id_sucursal.ToString(); //Receptor y Domicilio receptor using (CompaniaEmisorReceptor r = new CompaniaEmisorReceptor(c.id_compania_receptor)) { txtReceptor.Text = r.nombre + " ID:" + r.id_compania_emisor_receptor.ToString(); } //Método de Pago predeterminado "Transferencia Electrónica" ddlMetodoPago.SelectedValue = c.id_metodo_pago.ToString(); //Tipo de Comprobante ddlTipoComprobante.SelectedValue = ((byte)c.id_tipo_comprobante).ToString(); //Estatus ddlEstatus.SelectedValue = ((byte)c.id_estatus_vigencia).ToString(); //Condiciones de Pago txtCondicionesPago.Text = c.condicion_pago.ToString(); //Forma de Pago "Una sola exhibición" ddlFormaPago.SelectedValue = c.id_forma_pago.ToString(); //Moneda ddlMoneda.SelectedValue = c.id_moneda.ToString(); //Tipo de Cambio txtTipoCambio.Text = c.tipo_cambio.ToString(); //Fechas de Captura txtFechaCaptura.Text = c.fecha_captura.ToString("yyyy/MM/dd hh:mm:ss tt"); //Fecha de Expedición txtFechaExpedicion.Text = Fecha.ConvierteDateTimeString(c.fecha_expedicion, "yyyy/MM/dd hh:mm:ss tt"); //Lugar de Expedición txtLugarExpedicion.Text = c.lugar_expedicion; //Check Timbrado chkGenerado.Checked = c.bit_generado; //Sello Digital txtSelloDigital.Text = c.sello; //fecha Cancelación txtFechaCancelacion.Text = Fecha.ConvierteDateTimeString(c.fecha_cancelacion, "yyyy/MM/dd hh:mm:ss tt"); //Totales de Comprobante lblSubtotalCaptura.Text = string.Format("{0:c4}", c.subtotal_captura); lblSubtotalNacional.Text = string.Format("{0:c4}", c.subtotal_nacional); lblDescuentosCaptura.Text = string.Format("{0:c4}", c.descuentos_captura); lblDescuentosNacional.Text = string.Format("{0:c4}", c.descuentos_nacional); lblImpuestosCaptura.Text = string.Format("{0:c4}", c.impuestos_captura); lblImpuestosNacional.Text = string.Format("{0:c4}", c.impuestos_nacional); lblTotalCaptura.Text = string.Format("{0:c4}", c.total_captura); lblTotalNacional.Text = string.Format("{0:c4}", c.total_nacional); } break; } //Estableciendo indice de tab por default //tbcComprobante.ActiveTabIndex = 0; }
/// <summary> /// Notificación de un nuevo servicio asignado (nueva asignación a movimiento) /// </summary> /// <param name="id_movimiento_asignacion_recurso">Id de Asignación de recurso</param> /// <returns></returns> public RetornoOperacion NuevoServicioAsignado(int id_movimiento_asignacion_recurso) { //Inicializando variables auxiliares string tokenFCM = ""; int idCompania = 0, idRecurso = 0; MovimientoAsignacionRecurso.Tipo tipoRecurso = MovimientoAsignacionRecurso.Tipo.Operador; //Validando que la asignación pertenezca a un servicio RetornoOperacion resultado = validaMovimientoServicio(id_movimiento_asignacion_recurso); //Si es de un servicio if (resultado.OperacionExitosa) { //Validando asignación del recurso y obtención de token al que se enviará la notificación resultado = validaUsuarioSesionActivaRecurso(id_movimiento_asignacion_recurso, out idCompania, out idRecurso, out tipoRecurso, out tokenFCM); //Si hay datos suficientes if (resultado.OperacionExitosa) { //Validando configuración de notificaciones resultado = CompaniaEmisorReceptor.ValidaConfiguracionUsoAplicacionMovil(idCompania); //Si hay datos suficientes if (resultado.OperacionExitosa) { //Inicializando asignaciones totales int totalAsignaciones = 0; DateTime cita_inicio = Fecha.ObtieneFechaEstandarMexicoCentro(); //Recuperando asignaciones totales de servicio al usuario using (DataTable mit = MovimientoAsignacionRecurso.CargaServiciosAsignadosAlRecurso(tipoRecurso, idRecurso, false)) { //Si hay asignaciones if (mit != null) { totalAsignaciones = mit.Rows.Count; cita_inicio = Convert.ToDateTime(mit.Rows[0]["CitaOrigen"]); } } //Si hay asignaciones if (totalAsignaciones > 0) { //Definiendo datos del mensaje de la notificación (si hay mas de una asignación, se considera como notificación de baja prioridad dado que existe otra en curso) var datos = new { Titulo = "¡Nuevo viaje asignado!", Mensaje = String.Format(totalAsignaciones > 1 ? "Se ha añadido un viaje a la lista de pendientes." : "Inicia el '{0:dd-MM-yyyy HH:mm}'", cita_inicio), TipoNotificacion = totalAsignaciones > 1 ? "NAsignacion" : "NAsignacionActivo" }; //Enviando mensaje vía FCM resultado = FirebaseCloudNotifications.EnviaMensajeFCM(_url_servidor_fcm, _server_token_fcm, tokenFCM, FirebaseCloudNotifications.Prioridad.Normal, datos); } //Si no hay asignaciones else { resultado = new RetornoOperacion("No se pudo obtener el total de asignaciones."); } } } } //Devolviendo resultado return(resultado); }
/// <summary> /// Notificación para pedir ubicación actual al dispositivo /// </summary> /// <param name="tipo_recurso">Tipo de Recurso</param> /// <param name="id_recurso">Id de Entidad acorde al tipo indicado</param> /// <returns></returns> public RetornoOperacion NotificacionPeticionUbicacion(MovimientoAsignacionRecurso.Tipo tipo_recurso, int id_recurso) { //Declrando objeto de resultado RetornoOperacion resultado = new RetornoOperacion(); //Inicializando variables auxiliares string tokenFCM = ""; int idCompania = 0; Usuario usuario = null; //En base al tipo de recurso switch (tipo_recurso) { case MovimientoAsignacionRecurso.Tipo.Operador: //Instanciando el recurso using (Operador op = new Operador(id_recurso)) { //Guardando id de compañía idCompania = op.id_compania_emisor; //Recuperando Usuario correspondiente usuario = Usuario.ObtieneUsuarioAsignadoOperador(op.id_operador); } break; case MovimientoAsignacionRecurso.Tipo.Unidad: //Instanciando Unidad using (Unidad unidad = new Unidad(id_recurso)) { //recuperando Id de Compañía idCompania = unidad.id_compania_emisor; //Instanciando tipo de unidad using (UnidadTipo tipo = new UnidadTipo(unidad.id_tipo_unidad)) { //Si la unidad es motriz if (tipo.bit_motriz) { //Determiando la propiedad de unidad //Si no es propia if (unidad.bit_no_propia) { } //Si lo es else { //Buscando asignación de operador activa int idOperador = AsignacionOperadorUnidad.ObtieneOperadorAsignadoAUnidad(id_recurso); //Recuperando Usuario correspondiente usuario = Usuario.ObtieneUsuarioAsignadoOperador(idOperador); } } } } break; } //Si hay compañía y usuario if (idCompania > 0 && usuario != null) { //Validando configuración de notificaciones resultado = CompaniaEmisorReceptor.ValidaConfiguracionUsoAplicacionMovil(idCompania); //Si se configuró el uso de aplicación móvil if (resultado.OperacionExitosa) { //Validando sesión activa en algún dispositivo if (Validacion.ValidaOrigenDatos(UsuarioSesion.ObtieneSesionesActivasUsuario(usuario.id_usuario, UsuarioSesion.TipoDispositivo.Android))) { //Recuperando referencia del token de usuario using (DataTable mit = Referencia.CargaReferencias(usuario.id_usuario, 30, ReferenciaTipo.ObtieneIdReferenciaTipo(idCompania, 30, "Token FCM", 0, "Configuración"))) tokenFCM = mit != null ? mit.Rows[0]["Valor"].ToString() : ""; //Si se obtuvo el token del usuario correspondiente if (tokenFCM != "") { //Armando mensaje de petición var datos = new { Titulo = "Comando de Ubicación", Mensaje = "N/D", TipoNotificacion = "Ubicacion" }; //Enviando mensaje vía FCM resultado = FirebaseCloudNotifications.EnviaMensajeFCM(_url_servidor_fcm, _server_token_fcm, tokenFCM, FirebaseCloudNotifications.Prioridad.Alta, datos); } //Si no hay token else { resultado = new RetornoOperacion("El token del dispositivo del usuario debe ser actualizado."); } } //Si no hay sesión activa else { resultado = new RetornoOperacion("El usuario no cuenta con una sesión activa en dispositivo móvil."); } } } //Si no hay compañía o usuario else { resultado = new RetornoOperacion("No se localizó la compañía o el usuario asignado al recurso."); } //Si el resultado es correcto if (resultado.OperacionExitosa) { resultado = new RetornoOperacion("Petición enviada correctamente, el tiempo de respuesta puede variar de un dispositivo a otro y verse afectado por la calidad de datos móviles.", true); } //Devolviendo resultado return(resultado); }
/// <summary> /// Notificación de asignación de vale de diesel y depósito de anticipos /// </summary> /// <param name="id_movimiento_asignacion_recurso">Id de Asignanción de Recurso</param> /// <param name="tipo">Tipo de actualización</param> ///<param name="fecha">Fecha Depósito o Fecha de Carga</param> ///<param name="cantidad">Cantidad Depositada o Litro</param> /// <returns></returns> public RetornoOperacion NotificacionDepositoAnticiposYDiesel(int id_movimiento_asignacion_recurso, TipoNotificacionServicio tipo, DateTime fecha, decimal cantidad) { //Inicializando variables auxiliares string tokenFCM = ""; int idCompania = 0, idRecurso = 0, idServicio = 0; MovimientoAsignacionRecurso.Tipo tipoRecurso = MovimientoAsignacionRecurso.Tipo.Operador; //Validando que la asignación pertenezca a un servicio RetornoOperacion resultado = validaMovimientoServicio(id_movimiento_asignacion_recurso, out idServicio); //Si es de un servicio if (resultado.OperacionExitosa) { //Obtención de token al que se enviará la notificación resultado = validaUsuarioSesionActivaRecurso(id_movimiento_asignacion_recurso, out idCompania, out idRecurso, out tipoRecurso, out tokenFCM); //Si hay datos suficientes if (resultado.OperacionExitosa) { //Validando configuración de notificaciones resultado = CompaniaEmisorReceptor.ValidaConfiguracionUsoAplicacionMovil(idCompania); //Si se configuró el uso de aplicación móvil if (resultado.OperacionExitosa) { //Determinando el tipo de actualización realizada switch (tipo) { case TipoNotificacionServicio.Diesel: var datos = new { Titulo = "¡Vale de diesel asignado!", Mensaje = string.Format("{0:f2} litros, Carga el {1:dd/MM/yyyy HH:mm}", cantidad, fecha), IdServicio = idServicio, TipoNotificacion = "NDiesel" }; //Enviando mensaje vía FCM resultado = FirebaseCloudNotifications.EnviaMensajeFCM(_url_servidor_fcm, _server_token_fcm, tokenFCM, FirebaseCloudNotifications.Prioridad.Normal, datos); break; case TipoNotificacionServicio.AnticipoDepositado: var datos1 = new { Titulo = "¡Depósito de anticipo confirmado!", Mensaje = string.Format("{0:c}, a las {1:dd/MM/yyyy HH:mm}", cantidad, fecha), IdServicio = idServicio, TipoNotificacion = "NDeposito" }; //Enviando mensaje vía FCM resultado = FirebaseCloudNotifications.EnviaMensajeFCM(_url_servidor_fcm, _server_token_fcm, tokenFCM, FirebaseCloudNotifications.Prioridad.Normal, datos1); break; } } } } //Devolviendo resultado return(resultado); }
/// <summary> /// Notificación de cambios en alguna parada de servicio asignado (cambio de citas, nueva parada y eliminar parada) /// </summary> /// <param name="id_movimiento_asignacion_recurso">Id de Asignanción de Recurso</param> /// <param name="tipo">Tipo de actualización</param> /// <returns></returns> public RetornoOperacion ActualizaInformacionServicio(int id_movimiento_asignacion_recurso, TipoNotificacionServicio tipo) { //Inicializando variables auxiliares string tokenFCM = ""; int idCompania = 0, idRecurso = 0; MovimientoAsignacionRecurso.Tipo tipoRecurso = MovimientoAsignacionRecurso.Tipo.Operador; //Validando que la asignación pertenezca a un servicio RetornoOperacion resultado = validaMovimientoServicio(id_movimiento_asignacion_recurso); //Si es de un servicio if (resultado.OperacionExitosa) { //Obtención de token al que se enviará la notificación resultado = validaUsuarioSesionActivaRecurso(id_movimiento_asignacion_recurso, out idCompania, out idRecurso, out tipoRecurso, out tokenFCM); //Si hay datos suficientes if (resultado.OperacionExitosa) { //Validando configuración de notificaciones resultado = CompaniaEmisorReceptor.ValidaConfiguracionUsoAplicacionMovil(idCompania); //Si se configuró el uso de aplicación móvil if (resultado.OperacionExitosa) { //Determinando el tipo de actualización realizada switch (tipo) { case TipoNotificacionServicio.NParadaServActual: var datos = new { Titulo = "¡Parada añadida al viaje actual!", Mensaje = "El viaje en curso fue modificado, consulte los detalles.", TipoNotificacion = "NParada" }; //Enviando mensaje vía FCM resultado = FirebaseCloudNotifications.EnviaMensajeFCM(_url_servidor_fcm, _server_token_fcm, tokenFCM, FirebaseCloudNotifications.Prioridad.Normal, datos); break; case TipoNotificacionServicio.EParadaServActual: var datos1 = new { Titulo = "¡Parada eliminada del viaje actual!", Mensaje = "El viaje en curso fue modificado, consulte los detalles.", TipoNotificacion = "EParada" }; //Enviando mensaje vía FCM resultado = FirebaseCloudNotifications.EnviaMensajeFCM(_url_servidor_fcm, _server_token_fcm, tokenFCM, FirebaseCloudNotifications.Prioridad.Normal, datos1); break; case TipoNotificacionServicio.AParadaServActual: var datos2 = new { Titulo = "¡Parada modificada en viaje actual!", Mensaje = "El viaje en curso fue modificado, consulte los detalles.", TipoNotificacion = "AParada" }; //Enviando mensaje vía FCM resultado = FirebaseCloudNotifications.EnviaMensajeFCM(_url_servidor_fcm, _server_token_fcm, tokenFCM, FirebaseCloudNotifications.Prioridad.Normal, datos2); break; case TipoNotificacionServicio.ActualizacionServicio: var datos3 = new { Titulo = "¡Viaje pendiente actualizado!", Mensaje = "Un viaje asignado fue modificado, consulte los detalles.", TipoNotificacion = "AAsignacion" }; //Enviando mensaje vía FCM resultado = FirebaseCloudNotifications.EnviaMensajeFCM(_url_servidor_fcm, _server_token_fcm, tokenFCM, FirebaseCloudNotifications.Prioridad.Normal, datos3); break; } } } } //Devolviendo resultado return(resultado); }
/// <summary> /// Notificación de asignación eliminada /// </summary> /// <param name="id_movimiento_asignacion_recurso">Id de Asignanción de Recurso</param> /// <param name="viaje_activo">True para indicar que la asignación correspondia al viaje inmediato siguiente, de lo contrario false</param> /// <returns></returns> public RetornoOperacion EliminaAsignacionServicio(int id_movimiento_asignacion_recurso, bool viaje_activo) { //Inicializando variables auxiliares string tokenFCM = ""; int idCompania = 0, idRecurso = 0; MovimientoAsignacionRecurso.Tipo tipoRecurso = MovimientoAsignacionRecurso.Tipo.Operador; //Validando que la asignación pertenezca a un servicio RetornoOperacion resultado = validaMovimientoServicio(id_movimiento_asignacion_recurso); //Si es de un servicio if (resultado.OperacionExitosa) { //Obtención de token al que se enviará la notificación resultado = validaUsuarioSesionActivaRecurso(id_movimiento_asignacion_recurso, out idCompania, out idRecurso, out tipoRecurso, out tokenFCM); //Si hay datos suficientes if (resultado.OperacionExitosa) { //Validando configuración de notificaciones resultado = CompaniaEmisorReceptor.ValidaConfiguracionUsoAplicacionMovil(idCompania); //Si se configuró el uso de aplicación móvil if (resultado.OperacionExitosa) { //Inicializando asignaciones totales int totalAsignaciones = 0; //Recuperando asignaciones totales de servicio al usuario using (DataTable mit = MovimientoAsignacionRecurso.CargaServiciosAsignadosAlRecurso(tipoRecurso, idRecurso, false)) { //Si hay asignaciones if (mit != null) { totalAsignaciones = mit.Rows.Count; } } //Definiendo datos del mensaje de la notificación (si no hay asignaciones se informa que no tiene servicios asignados, si queda alguna otra pendiente se informa) //Si hay asignaciones pendientes if (totalAsignaciones > 0) { var datos1 = new { Titulo = "¡Viaje Reemplazado!", Mensaje = "El viaje activo fue cambiado, consulte los detalles.", TipoNotificacion = "NAsignacionActivo" }; var datos2 = new { Titulo = "¡Viajes pendientes actualizados!", Mensaje = "La lista de pendientes fue modificada, consulte los detalles.", TipoNotificacion = "EAsignacion" }; //Enviando mensaje vía FCM resultado = FirebaseCloudNotifications.EnviaMensajeFCM(_url_servidor_fcm, _server_token_fcm, tokenFCM, FirebaseCloudNotifications.Prioridad.Normal, viaje_activo ? datos1 : datos2); } //Si ya no hay asignaciones else { var datos = new { Titulo = "¡Sin viajes pendientes!", Mensaje = "Por el momento no tiene viajes asignados.", TipoNotificacion = "EAsignacionActivo" }; //Enviando mensaje vía FCM resultado = FirebaseCloudNotifications.EnviaMensajeFCM(_url_servidor_fcm, _server_token_fcm, tokenFCM, FirebaseCloudNotifications.Prioridad.Normal, datos); } } } } //Devolviendo resultado return(resultado); }