Example #1
0
        /// <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);
        }
Example #2
0
        /// <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;
            }
        }
Example #3
0
        /// <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);
        }
Example #4
0
        /// <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;
        }
Example #5
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);
        }
Example #6
0
        /// <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;
        }
Example #7
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);
        }
Example #8
0
        /// <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);
        }
Example #9
0
        /// <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);
        }
Example #10
0
        /// <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);
        }
Example #11
0
        /// <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);
        }