예제 #1
0
        public CarruselCerrarParteSat()
        {
            InitializeComponent();
            bluetooth = CrossBluetoothLE.Current;
            adaptador = CrossBluetoothLE.Current.Adapter;
            Lista     = new ObservableCollection <IDevice>();

            var sati = BBDD.GetSat(Variables.DatosParte.N_Parte);

            sati.FechaEnvioApp = "1900-12-30 00:00:00.000";

            // Aqui se verifica si el parte esta abierto o cerrado
            if (Variables.RevisaParte)
            {
                if ((Variables.DatosParte.Revisar == true) && (Variables.DatosParte.Realizado == false) && sati.FechaEnvioApp == "1900-12-30 00:00:00.000")
                {
                    btnConfig.Source      = "candadocerrado.png";
                    btnImprimir.IsEnabled = true;
                }

                if ((Variables.NoRealizado == true && Variables.DatosParte.Revisar == false) && (Variables.DatosParte.Realizado == false) && sati.FechaEnvioApp == "1900-12-30 00:00:00.000")
                {
                    btnConfig.Source      = "candadocerrado.png";
                    btnImprimir.IsEnabled = true;
                    Variables.NoRealizado = false;
                }
            }

            BBDD.CerrarConexion();
        }
예제 #2
0
        //Busca si tiene más de una dirección del cliente.
        public async void BuscarDireccion(object objeto, EventArgs e)
        {
            RepositorySatApp database = new RepositorySatApp();
            var direcciones           = database.GetDireccionesCliente(Variables.DatosParte.CodigoCliente);

            database.CerrarConexion();

            if (direcciones.Count > 0)
            {
                try
                {
                    PopupDireccionesCliente popupDireccionesCliente = new PopupDireccionesCliente(direcciones);
                    popupDireccionesCliente.CallbackEvent += OnPopupUnitsCallback;
                    await PopupNavigation.Instance.PushAsync(popupDireccionesCliente);
                }
                catch (Exception ex)
                {
                    throw ex;
                }
            }
            else
            {
                await Application.Current.MainPage.DisplayAlert("Aviso", "!!! No tiene más direcciones !!!", "OK");
            }
        }
예제 #3
0
        public void OnPopupUnitsCallback(object sender, EventArgs e)
        {
            var x         = sender as PopupDireccionesCliente;
            var direccion = x.direccion;

            if (direccion != null)
            {
                RepositorySatApp database = new RepositorySatApp();
                var parte = database.Get <SAT>(Variables.DatosParte.N_Parte);
                database.CerrarConexion();
                parte.Direccion = direccion.ID;

                database.Guardar(parte);

                Variables.DatosParte.DireccionParte = direccion.Direccion;
                Variables.DatosParte.Poblacion      = direccion.Poblacion;
                Variables.DatosParte.Provincia      = direccion.Provincia;
                Variables.DatosParte.CodigoPostal   = direccion.CP;

                Variables.DatosParte.TelefonoCliente = direccion.Telefono;
            }
            else
            {
                Application.Current.MainPage.DisplayAlert("Aviso", "!!! Dirección incorrecta !!!", "OK");
            }
        }
예제 #4
0
        // Este metodo permite actualizar la lista de partes
        public void ActualizarLista()
        {
            try
            {
                RepositorySatApp bbdd = new RepositorySatApp();
                //BindingContext: propiedad del objeto de destino debe establecerse en el objeto de origen, se debe llamar al método
                //(que se usa a menudo junto con la Binding en el objeto de destino para enlazar una propiedad de ese objeto a una propiedad del objeto de origen.
                //
                var vm = BindingContext as SAT_VM;
                vm.ListadoPartes.Clear();

                DatosParte parte;

                //Lista los partes asociados al Técnico. Busca por código de Personal
                List <SAT> ListadoSAT = bbdd.GetPartesAbiertos <SAT>(Variables.CodigoPersonal);

                //Añade los partes al ListView
                foreach (var st in ListadoSAT)
                {
                    parte = bbdd.CargarDatosDeParte(st);

                    vm.ListadoPartes.Add(parte);
                }
                bbdd.CerrarConexion();
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
예제 #5
0
        public CarruselSolucionParteSat()
        {
            InitializeComponent();

            if (Variables.BloqueaParte)
            {
                RepositorySatApp BBDD = new RepositorySatApp();

                var sati = BBDD.GetSat(Variables.DatosParte.N_Parte);
                BBDD.CerrarConexion();

                if (Variables.RevisaParte)
                {
                    if ((Variables.DatosParte.Revisar == true) && (Variables.DatosParte.Realizado == false) && sati.FechaEnvioApp == "1900-12-30 00:00:00.000")
                    {
                        entrySolucion.IsEnabled      = false;
                        entryObservaciones.IsEnabled = false;
                    }
                }
                else if (!Variables.RevisaParte)
                {
                    if ((Variables.DatosParte.Realizado == true) && (Variables.DatosParte.Revisar == false) && sati.FechaEnvioApp == "1900-12-30 00:00:00.000")
                    {
                        entrySolucion.IsEnabled      = false;
                        entryObservaciones.IsEnabled = false;
                    }
                }
            }
        }
        public void OnPopupUnitsCallbackVarios(object sender, EventArgs e)
        {
            try
            {
                var x   = sender as PopupVarios;
                var iva = x.iva;
                if (iva != null)
                {
                    txtTantoPorcierto.Text = iva.Porcentaje.ToString();
                    RepositorySatApp database = new RepositorySatApp();
                    var nuevoIva = database.ObtenerRecargoIva(iva.Codigo);

                    nuevaLinea.Recargo = nuevoIva.Recargo;
                    nuevaLinea.Iva     = iva.Porcentaje;

                    database.CerrarConexion();
                }
                else
                {
                    Application.Current.MainPage.DisplayAlert("Aviso", "Forma de Pago incorrecta.", "OK");
                }
            }
            catch (Exception ex)
            {
                Application.Current.MainPage.DisplayAlert("Aviso ", ex.Message, " OK");
            }
        }
예제 #7
0
        public void OnPopupUnitsCallback(object sender, EventArgs e)
        {
            try
            {
                var x                     = sender as PopupVarios;
                var formaPago             = x.forma_Pago;
                RepositorySatApp database = new RepositorySatApp();

                if (formaPago != null)
                {
                    txtFormaPago.Text = formaPago.Descripcion;
                    var sat = database.Get <SAT>(Variables.DatosParte.N_Parte);
                    sat.Forma_Pago = formaPago.Codigo;
                    database.Guardar(sat);

                    Variables.DatosParte.FormaPago = sat.Forma_Pago;
                }
                else
                {
                    Application.Current.MainPage.DisplayAlert("Aviso", "Forma de Pago incorrecta.", "OK");
                }
                database.CerrarConexion();
            }
            catch (Exception ex)
            {
                Application.Current.MainPage.DisplayAlert("Aviso ", ex.Message, " OK");
            }
        }
        private async void Busqueda_SearchButtonPressed(object sender, EventArgs e)
        {
            //Busqueda de Articulo o Servicio por nombre
            RepositorySatApp database = new RepositorySatApp();

            if (!string.IsNullOrEmpty(Busqueda.Text))
            {
                try
                {
                    if (bolEsArticulo)//Busqueda por Articulo
                    {
                        var listado = database.GetArticulosPorConsulta(Busqueda.Text);
                        PopupArticulosServicios popupA = new PopupArticulosServicios(listado, bolEsArticulo);
                        popupA.CallbackEvent += OnPopupUnitsCallback;
                        await PopupNavigation.Instance.PushAsync(popupA);
                    }
                    else //Busqueda por Servicio
                    {
                        var listado = database.GetServiciosPorConsulta(Busqueda.Text);
                        PopupArticulosServicios popupS = new PopupArticulosServicios(listado, false);
                        popupS.CallbackEvent += OnPopupUnitsCallback;
                        await PopupNavigation.Instance.PushAsync(popupS);
                    }
                }
                catch (Exception ex)
                {
                    await DisplayAlert("Aviso", ex.Message, "OK");
                }
            }
            else
            {
                await Application.Current.MainPage.DisplayAlert("Aviso", "No hay articulo o servicio para buscar.", "OK");
            }
            database.CerrarConexion();
        }
예제 #9
0
        //Este evento se ejecuta cuando clickeas un parte.
        async void Handle_ItemTapped(object sender, ItemTappedEventArgs e)
        {
            try
            {
                Variables.DatosParte = null;
                if (e.Item == null)
                {
                    return;
                }
                var item = (DatosParte)e.Item;
                Variables.DatosParte = item;

                RepositorySatApp sat = new RepositorySatApp();
                var todo             = sat.GetSat(item.N_Parte);
                //var hora = todo.HoraInicioTarea.ToShortTimeString();

                //if (hora == "22:00" || hora == "23:00" || hora == "0:00")
                //{
                //    todo.HoraInicioTarea = DateTime.Now;
                //    sat.Guardar<SAT>(todo);
                //}

                sat.CerrarConexion();

                await Navigation.PushAsync(new PrincipalContentPage());
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
예제 #10
0
        //Elimina la BBDD por completo
        public async void BtnEliminaBBDD_Clicked(object sender, EventArgs e)
        {
            if (Haypartesabiertos() == true)
            {
                await DisplayAlert("Aviso", "! Hay partes abiertos, cierre los partes antes de borrar la Base de Datos !", "OK");
            }
            else
            {
                var respuesta = await DisplayAlert("Aviso", "¿ Deseas borrar la base de datos ?", "Si", "Cancelar");

                if (respuesta == true)
                {
                    DispositivosLista.IsVisible = false;
                    popupLoadingView.IsVisible  = true;
                    lblLoadingText.Text         = "Borrando base de datos..";
                    activityIndicator.IsRunning = true;

                    RepositorySatApp BBDD = new RepositorySatApp();

                    try
                    {
                        BBDD.DeleteBBDD <Articulos>();
                        BBDD.DeleteBBDD <Cliente>();
                        BBDD.DeleteBBDD <Cliente_Maquina>();
                        BBDD.DeleteBBDD <Direccion_Cliente>();
                        BBDD.DeleteBBDD <Forma_Pago>();
                        BBDD.DeleteBBDD <Generales>();
                        BBDD.DeleteBBDD <Iva>();
                        BBDD.DeleteBBDD <Maquinas>();
                        BBDD.DeleteBBDD <Pais>();
                        BBDD.DeleteBBDD <Personal>();
                        BBDD.DeleteBBDD <Provincias>();
                        BBDD.DeleteBBDD <Regimen_IVA>();
                        BBDD.DeleteBBDD <SAT>();
                        BBDD.DeleteBBDD <SAT_Equipo>();
                        BBDD.DeleteBBDD <SAT_Lineas>();
                        BBDD.DeleteBBDD <Servicios>();
                        BBDD.DeleteBBDD <Valores_SAT>();

                        BBDD.CerrarConexion();
                        await DisplayAlert("Aviso", "! La base de datos se ha borrado correctamente !", "OK");
                    }
                    catch (Exception a)
                    {
                        Console.WriteLine(a.Message);
                        await DisplayAlert("Aviso", "! Error al eliminar la base de datos !", "OK");
                    }
                    DispositivosLista.IsVisible = true;
                    popupLoadingView.IsVisible  = false;
                    activityIndicator.IsRunning = false;
                }
            }
        }
        public CarruselArtServParteSat()
        {
            InitializeComponent();

            bolEsArticulo = true;

            if (Variables.BloqueaParte)
            {
                RepositorySatApp BBDD = new RepositorySatApp();
                var sati = BBDD.GetSat(Variables.DatosParte.N_Parte);
                if (Variables.RevisaParte)
                {
                    if ((Variables.DatosParte.Revisar == true) && (Variables.DatosParte.Realizado == false) && sati.FechaEnvioApp == "1900-12-30 00:00:00.000")
                    {
                        Busqueda.IsEnabled           = false;
                        switchVarios.IsEnabled       = false;
                        txtReferencia.IsEnabled      = false;
                        txtNombre.IsEnabled          = false;
                        txtBase.IsEnabled            = false;
                        txtCantidad.IsEnabled        = false;
                        txtDto.IsEnabled             = false;
                        txtTantoPorcierto.IsEnabled  = false;
                        btnListarArticulos.IsEnabled = false;
                        btnListarServicios.IsEnabled = false;
                        imgAnadir.IsEnabled          = false;
                        imgQR.IsEnabled         = false;
                        ListadoLineas.IsEnabled = false;
                        imgBuscarArt.IsEnabled  = false;
                    }
                }
                else if (!Variables.RevisaParte)
                {
                    if ((Variables.DatosParte.Realizado == true) && (Variables.DatosParte.Revisar == false) && sati.FechaEnvioApp == "1900-12-30 00:00:00.000")
                    {
                        Busqueda.IsEnabled           = false;
                        switchVarios.IsEnabled       = false;
                        txtReferencia.IsEnabled      = false;
                        txtNombre.IsEnabled          = false;
                        txtBase.IsEnabled            = false;
                        txtCantidad.IsEnabled        = false;
                        txtDto.IsEnabled             = false;
                        txtTantoPorcierto.IsEnabled  = false;
                        btnListarArticulos.IsEnabled = false;
                        btnListarServicios.IsEnabled = false;
                        imgAnadir.IsEnabled          = false;
                        imgQR.IsEnabled         = false;
                        ListadoLineas.IsEnabled = false;
                        imgBuscarArt.IsEnabled  = false;
                    }
                }
                BBDD.CerrarConexion();
            }
        }
예제 #12
0
        public PopupVarios(string _titulo)
        {
            InitializeComponent();

            titulo = _titulo;

            RepositorySatApp database = new RepositorySatApp();

            if (titulo.Equals("IVA"))
            {
                listado.ItemsSource = database.GetAll <Iva>();
            }
            else if (titulo.Equals("FORMA_PAGO"))
            {
                listado.ItemsSource = database.GetAll <Forma_Pago>();
            }
            database.CerrarConexion();
        }
        //Código para el código de barra
        void QR_Clicked(object sender, EventArgs e)
        {
            try
            {
                var    scanCod      = new ZXingScannerPage();
                string codigoBarras = null;

                scanCod.OnScanResult += async(result) =>
                {
                    scanCod.IsScanning = false;

                    Device.BeginInvokeOnMainThread(async() =>
                    {
                        await Navigation.PopModalAsync();
                        codigoBarras = result.Text;
                        RepositorySatApp database = new RepositorySatApp();

                        var articulo = database.GetArticuloPorCodBarras(codigoBarras);


                        if (articulo != null)
                        {
                            txtReferencia.Text     = articulo.Referencia.ToString();
                            txtNombre.Text         = articulo.Articulo;
                            txtBase.Text           = articulo.PVP.ToString();
                            txtCantidad.Text       = "1";
                            txtTantoPorcierto.Text = articulo.IVA.ToString();
                        }
                        else
                        {
                            await Application.Current.MainPage.DisplayAlert("Escaner", "El articulo no existe", "OK");
                        }
                        database.CerrarConexion();
                    });

                    await Navigation.PushModalAsync(scanCod);
                };
            }
            catch (Exception ex)
            {
                Application.Current.MainPage.DisplayAlert("Aviso", ex.Message, "OK");
            }
        }
        private void CargaArticuloVarios(object sender, ToggledEventArgs e)
        {
            //Añade un articulo varios por defecto cuando activa el switch
            try
            {
                RepositorySatApp database = new RepositorySatApp();

                Articulos item = database.ObtenerArticuloVarios();
                if (item != null)
                {
                    if (switchVarios.IsToggled)
                    {
                        txtReferencia.Text     = item.Referencia.ToString();
                        txtNombre.Text         = item.Articulo;
                        txtBase.Text           = item.PVP.ToString();
                        txtCantidad.Text       = "1";
                        txtTantoPorcierto.Text = item.IVA.ToString();

                        bolEsArticulo = true;
                        btnListarArticulos.BackgroundColor = Color.FromHex("#0a4343");
                        btnListarServicios.BackgroundColor = Color.FromHex("#137F7F");

                        switchVarios.OnColor = Color.FromHex("#137F7F");
                    }
                    else
                    {
                        txtReferencia.Text     = "";
                        txtNombre.Text         = "";
                        txtBase.Text           = "";
                        txtCantidad.Text       = "";
                        txtDto.Text            = "";
                        txtTantoPorcierto.Text = "";
                        Busqueda.Text          = "";
                    }
                }
                database.CerrarConexion();
            }
            catch (Exception ex)
            {
                Application.Current.MainPage.DisplayAlert("Aviso", ex.Message, "OK");
            }
        }
예제 #15
0
        private void Guardar(object sender, EventArgs e)
        {
            try
            {
                RepositorySatApp database = new RepositorySatApp();

                SAT sat = new SAT();

                sat = database.Get <SAT>(Variables.DatosParte.N_Parte);

                sat.Solucion      = entrySolucion.Text;
                sat.Observaciones = entryObservaciones.Text;
                database.Guardar(sat);
                database.CerrarConexion();
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
예제 #16
0
 //Verifica si existe Partes Abiertos
 public bool Haypartesabiertos()
 {
     try
     {
         RepositorySatApp datos = new RepositorySatApp();
         var list = datos.GetPartesAbiertos <SAT>(Variables.CodigoPersonal);
         datos.CerrarConexion();
         if (list.Count > 0)
         {
             return(true);
         }
         else
         {
             return(false);
         }
     }
     catch (Exception ex)
     {
         throw ex;
     }
 }
        private void EliminarLinea_Tapped(object sender, EventArgs e)
        {
            //Elimina la linea de un parte
            try
            {
                var imagen = sender as Image;
                var linea  = imagen?.BindingContext as SAT_Lineas;
                var vm     = BindingContext as ArtServParteSAT_VM;


                vm?.EliminarLinea.Execute(linea);

                RepositorySatApp database = new RepositorySatApp();
                database.EliminarLineaParte(linea);

                var lineas = new ObservableCollection <SAT_Lineas>(database.GetAllLineasParte(Variables.DatosParte.N_Parte.ToString()));

                database.EliminarLineasParte(Variables.DatosParte.N_Parte.ToString());

                var ordenLinea = 1;
                foreach (var item in lineas)
                {
                    item.Orden_Linea = ordenLinea;
                    database.Insert(item);
                    ordenLinea++;
                }

                vm.LineasSAT = new ObservableCollection <SAT_Lineas>(database.GetAllLineasParte(Variables.DatosParte.N_Parte.ToString()));

                funciones.CalcularParte(Variables.DatosParte.N_Parte);

                database.CerrarConexion();
            }
            catch (Exception ex)
            {
                Application.Current.MainPage.DisplayAlert("Aviso", ex.Message, "OK");
            }
        }
예제 #18
0
        public CarruselPagoParteSat()
        {
            InitializeComponent();

            RepositorySatApp database = new RepositorySatApp();

            Funciones funciones = new Funciones();

            var formaPago = database.ObtenerFormaPago(Variables.DatosParte.FormaPago);

            if (formaPago != null)
            {
                txtFormaPago.Text = formaPago.Descripcion;
            }

            if (Variables.BloqueaParte)
            {
                if (Variables.RevisaParte)
                {
                    if ((Variables.DatosParte.Revisar == true) && (Variables.DatosParte.Realizado == false) && Variables.DatosParte.FechaEnvioApp == "1900-12-30 00:00:00.000")
                    {
                        txtFormaPago.IsEnabled = false;
                        ImgFormaPago.IsEnabled = false;
                    }
                }
                else if (!Variables.RevisaParte)
                {
                    if ((Variables.DatosParte.Realizado == true) && (Variables.DatosParte.Revisar == false) && Variables.DatosParte.FechaEnvioApp == "1900-12-30 00:00:00.000")
                    {
                        txtFormaPago.IsEnabled = false;
                        ImgFormaPago.IsEnabled = false;
                    }
                }
            }
            funciones.CalcularParte(Variables.DatosParte.N_Parte);
            database.CerrarConexion();
        }
        public void OnPopupUnitsCallback(object sender, EventArgs e)
        {
            try
            {
                txtReferencia.Text = Variables.Referencia;

                if (!string.IsNullOrEmpty(txtReferencia.Text))
                {
                    RepositorySatApp database = new RepositorySatApp();

                    int referencia = int.Parse(txtReferencia.Text);
                    if (bolEsArticulo)
                    {
                        var articulo = database.Get <Articulos>(referencia);
                        txtNombre.Text         = articulo.Articulo;
                        txtBase.Text           = articulo.PVP.ToString();
                        txtCantidad.Text       = "1";
                        txtTantoPorcierto.Text = articulo.IVA.ToString();
                    }
                    else
                    {
                        var servicio = database.ObtenerServicio(decimal.Parse(txtReferencia.Text));
                        txtNombre.Text         = servicio.Descripcion;
                        txtBase.Text           = servicio.Precio.ToString();
                        txtCantidad.Text       = "1";
                        txtTantoPorcierto.Text = servicio.IVA.ToString();
                    }

                    database.CerrarConexion();
                }
            }
            catch (Exception ex)
            {
                Application.Current.MainPage.DisplayAlert("Aviso ", ex.Message, " OK");
            }
        }
예제 #20
0
        // En el constructor se colocan los datos de servidor y puerto en caso de que existan, ademas de
        // la activación de algunos componentes

        public Configuracion()
        {
            InitializeComponent();

            RepositorySatApp DatosServidor = new RepositorySatApp();
            var Datos_Comunicacion         = DatosServidor.GetAll <Conexiones>();

            if (Variables.ConfImpresora == true)
            {
                Servidor.IsEnabled         = false;
                Puerto.IsEnabled           = false;
                BtnSincroniza.IsEnabled    = false;
                BtnConfiguracion.IsEnabled = false;
            }

            if (Datos_Comunicacion != null)        //Cuando se instala la app por primera vez la tabla Conexiones no existe y devuelve.
            {
                if (Datos_Comunicacion.Count != 0) //Una vez que esta instalada la app ya existe la tabla conexiones, pero solo entrará cuando existan datos.
                {
                    Servidor.Text            = Datos_Comunicacion[0].IP;
                    Puerto.Text              = Datos_Comunicacion[0].Puerto;
                    BtnSincroniza.IsEnabled  = true;
                    BtnEliminaBBDD.IsEnabled = true;
                }
            }

            NavigationPage.SetHasBackButton(this, false);

            //Bluetooth = CrossBluetoothLE.Current;
            //Adaptador = CrossBluetoothLE.Current.Adapter;


            Lista = new ObservableCollection <IDevice>();
            DispositivosLista.ItemsSource = Lista;
            DatosServidor.CerrarConexion();
        }
예제 #21
0
        /*
         * Mandamos a imprimir los datos del parte
         */
        public async void Imprimir(Boolean imprimir)
        {
            try
            {
                lblLoadingText.Text = "Imprimiendo ticket...";

                RepositorySatApp BBDD = new RepositorySatApp();
                var empresa           = BBDD.Get <Generales>(1);
                var Nombre            = empresa.Empresa;
                var nif       = empresa.NIF;
                var direc     = empresa.Direccion;
                var telf      = empresa.Telefono1;
                var comercial = empresa.N_Comercial;

                //Obtenemos y guardamos en objetos la información que deseamos imprimir
                //Transformamos los datos en Bytes antes de enviarlos a la impresora

                var parte        = Variables.DatosParte;
                var masDatos     = BBDD.GetSat(parte.N_Parte);
                var masCliente   = BBDD.Get <Cliente>(masDatos.Cliente);
                var masProvincia = BBDD.GetProvincias(masCliente.Provincia);
                var lineasParte  = BBDD.GetAllLineasParte(Variables.DatosParte.N_Parte.ToString());

                //Obtiene nombre comercial. De momento cliente no la quiere
                var codempresa = BBDD.Get <Generales>(0);

                //Hay que traerse la tabla comercialcliente
                // string masComercial = BBDD.GetComercialCliente(codempresa.Codigo, parte.CodigoCliente);

                string masPersonal = BBDD.GetNombreTecnico(masDatos.Realizado_Por);


                //Esta es la copia buena 28/01/2020
                BBDD.CerrarConexion();

                // Convertimos los strings a bytes y los imprimimos
                byte[] negrita      = new byte[] { 0x1B, 0x21, 0x08 };
                byte[] normal       = new byte[] { 0x1B, 0x21, 0x00 };
                byte[] negritamedia = new byte[] { 0x1B, 0x21, 0x20 };

                byte[] N_Parte      = Encoding.ASCII.GetBytes("Numero Parte:       " + parte.N_Parte);
                byte[] Fecha        = Encoding.ASCII.GetBytes("Fecha aviso:        " + parte.Fecha.ToShortDateString());
                byte[] HoraAviso    = Encoding.ASCII.GetBytes("Hora aviso:         " + masDatos.Hora_Entrada.ToShortTimeString());
                byte[] FechaCerrado = Encoding.ASCII.GetBytes("Fecha realizado:    " + Convert.ToDateTime(masDatos.Fecha_Realizado.ToString()).ToShortDateString());
                var    horainicio   = masDatos.HoraInicioTarea.AddHours(1);
                var    horafin      = masDatos.HoraFinTarea.AddHours(1);


                byte[] Cliente      = Encoding.ASCII.GetBytes("Cliente:           " + parte.NombreCliente);
                byte[] nifCli       = Encoding.ASCII.GetBytes("DNI / NIF:          " + masCliente.NIF);
                byte[] Direccion    = Encoding.ASCII.GetBytes("Direccion:          " + parte.DireccionParte);
                byte[] Poblacion    = Encoding.ASCII.GetBytes("C.P / Poblacion:    " + masCliente.C_P);
                byte[] Provincia    = Encoding.ASCII.GetBytes("Provincia:          " + masProvincia.Provincia);
                byte[] nomcomercial = Encoding.ASCII.GetBytes("Tecnico:            " + masPersonal);

                byte[] Anomalia = Encoding.ASCII.GetBytes("Anomalia:\n " + parte.AnomaliaParte);
                //byte[] Telefono = Encoding.ASCII.GetBytes("Telefono: " + parte.TelefonoCliente);
                byte[] Solucion = Encoding.ASCII.GetBytes("Trabajo efectuado:\n " + parte.Solucion);
                // byte[] Observaciones = Encoding.ASCII.GetBytes("Observaciones adicionales:\n " + parte.Observaciones);
                byte[] Pago     = Encoding.ASCII.GetBytes("Forma de Pago: " + parte.FormaPago);
                byte[] Base     = Encoding.ASCII.GetBytes("          Base imponible:         " + parte.Base_Total.ToString("N2"));
                byte[] valorIva = Encoding.ASCII.GetBytes("          IVA:                    " + parte.Iva_Total.ToString("N2"));
                byte[] Total    = Encoding.ASCII.GetBytes("          Total:                  " + parte.Total.ToString("N2"));


                byte[] estrellitas         = Encoding.ASCII.GetBytes("===============================================\n");
                byte[] separacontinua      = Encoding.ASCII.GetBytes("_______________________________________________\n");
                byte[] separacion          = Encoding.ASCII.GetBytes("------------------------------------------------\n");
                byte[] separaverticalFirma = Encoding.ASCII.GetBytes("Firma Trabajador:     |   Firma Cliente:\n");
                byte[] separavertical      = Encoding.ASCII.GetBytes("                      | \n");
                byte[] salto    = Encoding.ASCII.GetBytes("\n");
                byte[] firma1   = Encoding.ASCII.GetBytes("Firma Trabajador:");
                byte[] firma2   = Encoding.ASCII.GetBytes("Firma Cliente:");
                byte[] ArtServ  = Encoding.ASCII.GetBytes("             Articulos y servicio:");
                byte[] Cabecera = Encoding.ASCII.GetBytes("Referencia   Precio   Cantidad   Importe    Iva\n");

                byte[] N_empresa        = Encoding.ASCII.GetBytes("          " + Nombre + "\n");
                byte[] dic_empresa      = Encoding.ASCII.GetBytes("          " + direc + "\n");
                byte[] telf_empresa     = Encoding.ASCII.GetBytes("               Telf: " + telf + "\n");
                byte[] nif_empresa      = Encoding.ASCII.GetBytes("               N.I.F: " + nif + "\n");
                byte[] Nombre_Comercial = Encoding.ASCII.GetBytes("       " + comercial);
                byte[] CabLineas        = Encoding.ASCII.GetBytes("                PARTE TRABAJO\n");
                byte[] Cabdesg          = Encoding.ASCII.GetBytes("        Desglose categorias impositivas\n");
                byte[] desglose         = Encoding.ASCII.GetBytes("            Base     Iva    Importe\n");
                byte[] valordesglose    = Encoding.ASCII.GetBytes("            " + parte.Base_Total + "      " + parte.TantoIva1 + "     " + parte.Iva_Total);
                byte[] CabTotales       = Encoding.ASCII.GetBytes("               Totales finales:\n");
                byte[] gracias          = Encoding.ASCII.GetBytes("    Le damos las gracias por su confianza\n");
                byte[] docvista         = Encoding.ASCII.GetBytes("Este documento solo es una vista preliminar y no reemplaza al documento de facturación\n");


                var servicios = await dispositivo.GetServicesAsync();


                foreach (var l in servicios)
                {
                    if (l.Name == "Unknown Service") //Obtiene el servicio del que depende la caracteristica que nos permite enviar datos a la impresora
                    {
                        var server         = l as IService;
                        var caracteristica = await server.GetCharacteristicsAsync();


                        foreach (var m in caracteristica)
                        {
                            if (m.Name == "Unknown characteristic") //Localiza la caracteristica que se usa para enviar datos a la impresora
                            {
                                var carac = m as ICharacteristic;

                                //Cabecera ticket
                                if (carac.CanWrite && imprimir)  // Este if comprueba si el proximo caracter es imprimible y si el booleano es true o false
                                {                                // SIN ESTE IF NO IMPRIME
                                    await carac.WriteAsync(negrita);

                                    await carac.WriteAsync(N_empresa);

                                    await carac.WriteAsync(dic_empresa);

                                    await carac.WriteAsync(telf_empresa);

                                    await carac.WriteAsync(nif_empresa);//fin cabecera ticket

                                    await carac.WriteAsync(salto);

                                    await carac.WriteAsync(salto);

                                    await carac.WriteAsync(salto);

                                    //Datos parte
                                    await carac.WriteAsync(normal);

                                    await carac.WriteAsync(N_Parte);

                                    await carac.WriteAsync(salto);

                                    await carac.WriteAsync(Fecha);

                                    await carac.WriteAsync(salto);

                                    await carac.WriteAsync(HoraAviso);

                                    await carac.WriteAsync(salto);

                                    await carac.WriteAsync(FechaCerrado);

                                    await carac.WriteAsync(salto);

                                    await carac.WriteAsync(salto);

                                    //Datos cliente
                                    await carac.WriteAsync(Cliente);

                                    await carac.WriteAsync(salto);

                                    await carac.WriteAsync(nifCli);

                                    await carac.WriteAsync(salto);

                                    await carac.WriteAsync(Direccion);

                                    await carac.WriteAsync(salto);

                                    await carac.WriteAsync(Poblacion);

                                    await carac.WriteAsync(salto);

                                    await carac.WriteAsync(Provincia);

                                    await carac.WriteAsync(salto);

                                    await carac.WriteAsync(nomcomercial);

                                    await carac.WriteAsync(salto);

                                    await carac.WriteAsync(salto);

                                    //Incidencia
                                    await carac.WriteAsync(Anomalia);

                                    await carac.WriteAsync(salto);

                                    await carac.WriteAsync(Solucion);

                                    await carac.WriteAsync(salto);

                                    // await carac.WriteAsync(Observaciones);
                                    await carac.WriteAsync(salto);

                                    await carac.WriteAsync(salto);

                                    //Cabecera lineas tarea
                                    await carac.WriteAsync(estrellitas);

                                    await carac.WriteAsync(salto);

                                    await carac.WriteAsync(CabLineas);

                                    await carac.WriteAsync(salto);

                                    await carac.WriteAsync(ArtServ); //Articulos y servicios

                                    await carac.WriteAsync(salto);

                                    await carac.WriteAsync(salto);

                                    await carac.WriteAsync(Cabecera); //Cabecera lineasSat

                                    await carac.WriteAsync(separacontinua);

                                    await carac.WriteAsync(salto);

                                    foreach (var h in lineasParte) //Lineas partesat
                                    {
                                        var    precio  = Math.Round(h.Precio, 2);
                                        var    importe = Math.Round(h.Importe, 2);
                                        byte[] desc    = Encoding.ASCII.GetBytes(h.Descripcion + "\n");
                                        byte[] refer   = Encoding.ASCII.GetBytes(" " + h.Referencia.ToString());
                                        byte[] espacio = Encoding.ASCII.GetBytes(" ");

                                        byte[] prec = Encoding.ASCII.GetBytes(precio.ToString("N2") + "       ");
                                        byte[] cant = Encoding.ASCII.GetBytes(h.Cantidad.ToString());
                                        byte[] imp  = Encoding.ASCII.GetBytes(importe.ToString("N2") + "        ");
                                        byte[] iva  = Encoding.ASCII.GetBytes(h.Iva.ToString() + "\n");
                                        await carac.WriteAsync(desc);

                                        if (CuentaDigito(h.Referencia) <= 2)
                                        {
                                            espacio = Encoding.ASCII.GetBytes("     ");
                                            await carac.WriteAsync(refer);

                                            await carac.WriteAsync(espacio);
                                        }
                                        else
                                        {
                                            await carac.WriteAsync(refer);
                                        }

                                        if (CuentaDigito(precio) >= 5)
                                        {
                                            espacio = Encoding.ASCII.GetBytes("  ");
                                        }
                                        else if (CuentaDigito(precio) == 4)
                                        {
                                            espacio = Encoding.ASCII.GetBytes("   ");
                                        }
                                        else if (CuentaDigito(precio) == 3)
                                        {
                                            espacio = Encoding.ASCII.GetBytes("    ");
                                        }
                                        else if (CuentaDigito(precio) == 2)
                                        {
                                            espacio = Encoding.ASCII.GetBytes("     ");
                                        }
                                        else if (CuentaDigito(precio) == 1 || CuentaDigito(precio) == 0)
                                        {
                                            espacio = Encoding.ASCII.GetBytes("      ");
                                        }
                                        await carac.WriteAsync(espacio);

                                        await carac.WriteAsync(prec);

                                        await carac.WriteAsync(cant);

                                        if (CuentaDigito(importe) >= 5)
                                        {
                                            espacio = Encoding.ASCII.GetBytes("  ");
                                        }
                                        else if (CuentaDigito(importe) == 4)
                                        {
                                            espacio = Encoding.ASCII.GetBytes("    ");
                                        }
                                        else if (CuentaDigito(importe) == 3)
                                        {
                                            espacio = Encoding.ASCII.GetBytes("     ");
                                        }
                                        else if (CuentaDigito(importe) == 2)
                                        {
                                            espacio = Encoding.ASCII.GetBytes("      ");
                                        }
                                        else if (CuentaDigito(importe) == 1 || CuentaDigito(importe) == 0)
                                        {
                                            espacio = Encoding.ASCII.GetBytes("       ");
                                        }
                                        await carac.WriteAsync(espacio);

                                        await carac.WriteAsync(imp);

                                        await carac.WriteAsync(iva);
                                    }

                                    //Desglose categorias impositivas
                                    await carac.WriteAsync(salto);

                                    await carac.WriteAsync(salto);

                                    await carac.WriteAsync(Cabdesg);

                                    await carac.WriteAsync(desglose);

                                    await carac.WriteAsync(separacontinua);

                                    await carac.WriteAsync(valordesglose);

                                    await carac.WriteAsync(salto);

                                    await carac.WriteAsync(salto);

                                    //Totales finales
                                    await carac.WriteAsync(CabTotales);

                                    await carac.WriteAsync(salto);

                                    await carac.WriteAsync(Base);

                                    await carac.WriteAsync(salto);

                                    await carac.WriteAsync(valorIva);

                                    await carac.WriteAsync(salto);

                                    await carac.WriteAsync(Total);

                                    await carac.WriteAsync(salto);

                                    await carac.WriteAsync(salto);

                                    await carac.WriteAsync(salto);

                                    //Firmas
                                    await carac.WriteAsync(separacontinua);

                                    await carac.WriteAsync(separaverticalFirma);

                                    await carac.WriteAsync(separavertical);

                                    await carac.WriteAsync(separavertical);

                                    await carac.WriteAsync(separavertical);

                                    await carac.WriteAsync(separavertical);

                                    await carac.WriteAsync(separavertical);

                                    await carac.WriteAsync(separavertical);

                                    await carac.WriteAsync(separacontinua);

                                    await carac.WriteAsync(salto);

                                    await carac.WriteAsync(salto);

                                    await carac.WriteAsync(negritamedia);

                                    await carac.WriteAsync(Nombre_Comercial);

                                    await carac.WriteAsync(salto);

                                    await carac.WriteAsync(normal);

                                    await carac.WriteAsync(gracias);

                                    await carac.WriteAsync(salto);

                                    await carac.WriteAsync(docvista);

                                    await carac.WriteAsync(salto);

                                    await carac.WriteAsync(salto);

                                    await carac.WriteAsync(salto);

                                    await carac.WriteAsync(salto);

                                    var respuesta = await Application.Current.MainPage.DisplayAlert("Aviso", "Si desea una copia, pulse el botón de imprimir", "Ok", "Cancelar");

                                    if (respuesta == true)  // Si la respuesta es Cancelar, salimos del bucle
                                    {
                                        Imprimir(imprimir);
                                    }
                                    else
                                    {
                                        imprimir = false;
                                        popupLoadingView.IsVisible  = false;
                                        activityIndicator.IsRunning = false;
                                        btnImprimir.IsEnabled       = true;
                                        break;
                                    }
                                }
                            }
                        }
                    }
                }


                await adaptador.DisconnectDeviceAsync(dispositivo);
            }
            catch (Exception e)
            {
                Console.WriteLine(e.Message);
            }
        }
        private async void TapGestureRecognizer_Tapped(object sender, EventArgs e)
        {
            try
            {
                int Referencia;

                RepositorySatApp database = new RepositorySatApp();

                Articulos articulo = new Articulos();

                if (!string.IsNullOrEmpty(txtReferencia.Text))
                {
                    //Busqueda de articulos en caso de estar activo el botón Articulos
                    if (bolEsArticulo)
                    {
                        if (int.TryParse(txtReferencia.Text, out Referencia))
                        {
                            articulo = database.GetArticuloReferencia(txtReferencia.Text);//Busqueda por Referencia Or ReferenciaProveddor
                        }


                        if (articulo == null)
                        {
                            await Application.Current.MainPage.DisplayAlert("Aviso", "No se encontro ningun articulo con esa referencia o número de proveedor.", "OK");

                            txtReferencia.Text = "";
                        }

                        else
                        {
                            txtNombre.Text         = articulo.Articulo;
                            txtBase.Text           = articulo.PVP.ToString();
                            txtCantidad.Text       = "1";
                            txtTantoPorcierto.Text = articulo.IVA.ToString();
                        }
                    }

                    else//Busqueda de articulos en caso de estar activo el botón Servicios
                    {
                        if (int.TryParse(txtReferencia.Text, out Referencia))
                        {
                            var servicio = database.ObtenerServicio(int.Parse(txtReferencia.Text));

                            if (servicio != null)
                            {
                                txtNombre.Text         = servicio.Descripcion;
                                txtBase.Text           = servicio.Precio.ToString();
                                txtCantidad.Text       = "1";
                                txtTantoPorcierto.Text = servicio.IVA.ToString();
                            }
                            else
                            {
                                await Application.Current.MainPage.DisplayAlert("Aviso", "No existe el servicio.", "OK");
                            }
                        }
                        else
                        {
                            await Application.Current.MainPage.DisplayAlert("Aviso", "Referencia incorrecta", "OK");

                            txtReferencia.Text = "";
                        }
                    }
                }
                database.CerrarConexion();
            }
            catch (Exception ex)
            {
                await Application.Current.MainPage.DisplayAlert("Aviso ", ex.Message, " OK");
            }
        }
        private void Anadir_Clicked(object sender, EventArgs e)
        {
            try
            {
                //Añade un Articulo o Servicio
                if (!string.IsNullOrEmpty(txtReferencia.Text))
                {
                    if (!string.IsNullOrEmpty(txtNombre.Text) || !string.IsNullOrEmpty(txtCantidad.Text) || !string.IsNullOrEmpty(txtBase.Text))
                    {
                        nuevaLinea = new SAT_Lineas();
                        RepositorySatApp database = new RepositorySatApp();

                        Articulos Articulo;

                        if (bolEsArticulo)                                                 //Busqueda Articulos
                        {
                            Articulo = database.GetArticuloReferencia(txtReferencia.Text); //Busqueda por Referencia
                            nuevaLinea.Referencia  = Articulo.Referencia;
                            nuevaLinea.Descripcion = txtNombre.Text;
                            nuevaLinea.Cantidad    = decimal.Parse(txtCantidad.Text);
                            nuevaLinea.Precio      = decimal.Parse(txtBase.Text);
                            nuevaLinea.PrecioCoste = Articulo.Precio_Coste;

                            if (!string.IsNullOrEmpty(txtDto.Text))
                            {
                                nuevaLinea.DTO = decimal.Parse(txtDto.Text);
                            }


                            nuevaLinea.Iva     = decimal.Parse(txtTantoPorcierto.Text);
                            nuevaLinea.Recargo = decimal.Parse(Articulo.Recargo.ToString());
                            nuevaLinea.Importe = (nuevaLinea.Precio - (nuevaLinea.Precio * nuevaLinea.DTO / 100)) * nuevaLinea.Cantidad;

                            nuevaLinea.N_Parte = Variables.DatosParte.N_Parte;

                            nuevaLinea.Almacen = 1;

                            nuevaLinea.Orden_Linea    = database.GetAllLineasParte(Variables.DatosParte.N_Parte.ToString()).Count + 1;
                            nuevaLinea.TipoReferencia = "A";
                            nuevaLinea.VieneDeAPP     = true;
                        }
                        else//Busqueda por referencia
                        {
                            nuevaLinea.Referencia  = decimal.Parse(txtReferencia.Text);
                            nuevaLinea.Descripcion = txtNombre.Text;
                            nuevaLinea.Cantidad    = decimal.Parse(txtCantidad.Text);
                            nuevaLinea.Precio      = decimal.Parse(txtBase.Text);

                            if (!string.IsNullOrEmpty(txtDto.Text))
                            {
                                nuevaLinea.DTO = decimal.Parse(txtDto.Text);
                            }
                            nuevaLinea.Iva            = decimal.Parse(txtTantoPorcierto.Text);
                            nuevaLinea.Importe        = (nuevaLinea.Precio - (nuevaLinea.Precio * nuevaLinea.DTO / 100)) * nuevaLinea.Cantidad;
                            nuevaLinea.N_Parte        = Variables.DatosParte.N_Parte;
                            nuevaLinea.Orden_Linea    = database.GetAllLineasParte(Variables.DatosParte.N_Parte.ToString()).Count + 1;
                            nuevaLinea.TipoReferencia = "S";
                            nuevaLinea.VieneDeAPP     = true;
                        }

                        var btnAnadir = sender as Button;

                        var vm = BindingContext as ArtServParteSAT_VM;


                        vm?.EliminarLinea.Execute(nuevaLinea);                                                                                   // Elimina la linea de Observable Collection (la lista de articulos de la vista)
                        database.EliminarLineaParte(nuevaLinea);                                                                                 // Elimina la linea de la BD

                        var lineas = new ObservableCollection <SAT_Lineas>(database.GetAllLineasParte(Variables.DatosParte.N_Parte.ToString())); // Crea una nueva coleccion

                        database.EliminarLineasParte(Variables.DatosParte.N_Parte.ToString());                                                   // Elimina todas las lineas del parte

                        // Actualizala bd
                        var ordenLinea = 1;
                        foreach (var item in lineas)
                        {
                            item.Orden_Linea = ordenLinea;
                            database.Insert(item);
                            ordenLinea++;
                        }

                        vm.LineasSAT = new ObservableCollection <SAT_Lineas>(database.GetAllLineasParte(Variables.DatosParte.N_Parte.ToString()));
                        funciones.CalcularParte(Variables.DatosParte.N_Parte);

                        vm?.AnadirLinea.Execute(nuevaLinea);
                        database.Insert(nuevaLinea);


                        funciones.CalcularParte(Variables.DatosParte.N_Parte);

                        txtReferencia.Text     = "";
                        txtNombre.Text         = "";
                        txtBase.Text           = "";
                        txtCantidad.Text       = "";
                        txtDto.Text            = "";
                        txtTantoPorcierto.Text = "";

                        Busqueda.Text = "";

                        if (switchVarios.IsToggled == true)
                        {
                            switchVarios.IsToggled = false;
                        }
                        nuevaLinea = null;
                        database.CerrarConexion();
                    }
                    else
                    {
                        Application.Current.MainPage.DisplayAlert("Aviso", "Por favor, revise los datos introducidos. Hay valores incorrectos", "OK");
                    }
                }
                else
                {
                    Application.Current.MainPage.DisplayAlert("Aviso", "No hay articulo o servicio para añadir", "OK");
                    txtReferencia.Text = "";
                }
            }
            catch (Exception ex)
            {
                Application.Current.MainPage.DisplayAlert("Aviso ", ex.Message, " OK");
            }
        }
예제 #24
0
        /*
         * Busca toda la información de los partes que se han trabajado y los envia a central.
         * Por cada parte genera 3 JSON.
         * Tras confirmar la transferencia y guardado de la información en central borra los partes enviados.
         */
        public async void EnvioMasivo(object sender, EventArgs e)
        {
            Login comprueba = new Login();

            if (comprueba.CompruebaTerminados())
            {
                Conecta envio = new Conecta();

                List <SAT>        sat;
                List <SAT_Lineas> lineas = new List <SAT_Lineas>();


                RepositorySatApp bbdd = new RepositorySatApp();

                if (Variables.RevisaParte == true)
                {
                    sat = bbdd.SatRevisar <SAT>();
                }
                else
                {
                    sat = bbdd.SatCerrado <SAT>();
                }

                bool SAT      = false;
                bool LINEAS   = false;
                bool NOLINEAS = false;

                int numparte = 0;
                int part     = 0;
                foreach (SAT parte in sat)
                {
                    sat[part].Hora            = sat[part].Hora;
                    sat[part].HoraInicioTarea = sat[part].HoraInicioTarea;
                    sat[part].HoraFinTarea    = sat[part].HoraFinTarea;

                    //En el caso de alguno de los Pendientes de las opciones es true. Esta a prueba
                    if (sat[part].PendienteRepuesto == true || sat[part].PendientePresupuesto == true || sat[part].PendienteRecambio == true || sat[part].SinReparar == true)
                    {
                        sat[part].Revisar       = false;
                        sat[part].FechaEnvioApp = "1900-12-30 00:00:00.000";
                    }
                    else
                    {
                        sat[part].FechaEnvioApp = "1900-12-30 00:00:00.000";
                    }

                    lineas = bbdd.LineasSatCerrado <SAT_Lineas>(parte.N_Parte);

                    if (lineas.Count == 0)
                    {
                        await DisplayAlert("Aviso", "El parte número " + parte.N_Parte + " no tiene articulos ni servicios asociados por lo que no se pueden enviar los partes cerrados", "Ok");

                        NOLINEAS = true;
                    }
                    else
                    {
                        //Estamos en mantenimientos 03/02/2021
                        string[] rutaUrl = new string[] { "api/ListarSatLineas2", "api/SatAppRespaldo" };


                        for (int i = 0; i < rutaUrl.Length; i++)
                        {
                            if (rutaUrl[i] == "api/ListarSatLineas2")
                            {
                                if (await envio.UpdateDatosAsync(rutaUrl[i], lineas))
                                {
                                    LINEAS = true;
                                }
                                else
                                {
                                    LINEAS = false;
                                }
                            }
                            else if (rutaUrl[i] == "api/SatAppRespaldo")
                            {
                                if (LINEAS == true)
                                {
                                    if (await envio.UpdateDatosAsync(rutaUrl[i], sat[part]))
                                    {
                                        part++;
                                        SAT = true;
                                    }
                                    else
                                    {
                                        part++;
                                        SAT = false;
                                    }
                                }
                            }
                        }
                        bbdd.BorrarSatLineas2 <SAT_Lineas>(parte.N_Parte);
                    }
                    if (SAT == false || LINEAS == false)
                    {
                        break;
                    }
                }
                if (SAT == true & LINEAS == true & NOLINEAS == false)
                {
                    bbdd.BorrarSatCerrado(sat);
                    bbdd.BorrarLineasSatCerrado(lineas);
                    await DisplayAlert("Aviso", "Enviados correctamente todos los partes trabajados", "Ok");

                    ActualizarLista();
                }
                else if (SAT == false & LINEAS == false & NOLINEAS == false)
                {
                    await DisplayAlert("Aviso", "Error en el envio de parte, el parte numero " + numparte + " no se envio correctamente", "Ok");
                }
                bbdd.CerrarConexion();
            }
            else
            {
                await DisplayAlert("Aviso", "No hay partes cerrados que enviar", "Ok");
            }
        }
예제 #25
0
        //Guarda la configuración del servidor y  la impresora en la BBDD interna
        private async void BtnConfiguracion_Clicked(object sender, EventArgs e)
        {
            //Busca la Impresora al Presionar el boton de Lupa
            if (Variables.ConfImpresora == true)
            {
                string IP        = Servidor.Text;
                string PORT      = Puerto.Text;
                string impresora = "No impresora";

                if (dispositivo != null)
                {
                    impresora = dispositivo.NativeDevice.ToString();
                }

                Conexiones datos = new Conexiones
                {
                    Codigo        = 1,
                    IP            = IP,
                    Puerto        = PORT,
                    Dispositivo   = impresora,
                    Bloquea_Parte = BloqueParte,
                };

                //Si no existe el registro lo guarda, si existe lo actualiza
                RepositorySatApp transferir = new RepositorySatApp();

                transferir.InsertOrUpdate(datos, 1);

                if (impresora.Equals("No impresora"))
                {
                    await DisplayAlert("Aviso", "Datos guardados:\n" + datos.IP + ",\n" + datos.Puerto + ",\n" + datos.Dispositivo, "OK");
                }
                else
                {
                    await Adaptador.DisconnectDeviceAsync(dispositivo);
                    await DisplayAlert("Aviso", "Datos guardados:\n" + datos.IP + ",\n" + datos.Puerto + ",\n" + datos.Dispositivo, "OK");
                }
                transferir.CerrarConexion();
            }

            //Comprueba que todos los campos este rellenos.
            if (string.IsNullOrEmpty(Servidor.Text) && (string.IsNullOrEmpty(Puerto.Text) && Variables.ConfImpresora == false))
            {
                await DisplayAlert("Aviso", "! Tiene que rellenar todos los datos !", "OK");
            }
            else
            {
                string IP        = Servidor.Text;
                string PORT      = Puerto.Text;
                string impresora = "No impresora";
                if (dispositivo != null)
                {
                    impresora = dispositivo.NativeDevice.ToString();
                }

                Conexiones datos = new Conexiones
                {
                    Codigo        = 1,
                    IP            = IP,
                    Puerto        = PORT,
                    Dispositivo   = impresora,
                    Bloquea_Parte = BloqueParte,
                };

                //Si no existe el registro lo guarda, si existe lo actualiza
                RepositorySatApp transferir = new RepositorySatApp();
                transferir.InsertOrUpdate(datos, 1);

                if (dispositivo != null)
                {
                    //Una vez guardado la mac del dispositivo lo desparejamos para que se empareje al ejecutar la aplicación
                    await Adaptador.DisconnectDeviceAsync(dispositivo);
                }

                transferir.CerrarConexion();
                await DisplayAlert("Aviso", "Datos guardados:\n" + datos.IP + ",\n" + datos.Puerto + ",\n" + datos.Dispositivo, "OK");
            }
            Variables.ConfImpresora = false;
        }
예제 #26
0
        /*
         * Realiza la busqueda de la impresora
         */
        public async void BusquedaDispositivo(object objeto, EventArgs E)
        {
            try
            {
                RepositorySatApp impresora = new RepositorySatApp();

                List <Conexiones> parametros = impresora.GetAll <Conexiones>();

                foreach (var pa in parametros) //Obtiene los datos de la impresora configurada
                {
                    mac = pa.Dispositivo;
                }

                if (mac == "No impresora")
                {
                    await Application.Current.MainPage.DisplayAlert("Aviso", "No hay impresoras configuradas", "OK");

                    ConfiguraImpresora();
                    return;
                }

                if (bluetooth.State == BluetoothState.On)
                {
                    popupLoadingView.IsVisible  = true;
                    lblLoadingText.Text         = "Enviando datos a la impresora...";
                    activityIndicator.IsRunning = true;
                    btnImprimir.IsEnabled       = false;

                    Lista.Clear();
                    adaptador.ScanTimeout = 10000;
                    adaptador.ScanMode    = ScanMode.Balanced;
                    int nvecesencontrado = 0; // Esta variable permite filtrar el numero de veces que encuentra el dispositivo. Aveces se bugea e imprime dos veces
                    adaptador.DeviceDiscovered += (obj, a) =>
                    {
                        Lista.Add(a.Device);

                        if (a.Device.NativeDevice.ToString().Equals(mac)) //Localiza la impresora que tiene configurada
                        {
                            dispositivo = a.Device as IDevice;
                            if (nvecesencontrado < 1) // Si el dispositivo ya lo ha encontrado no volvera a intentar conectarse una segunda vez
                            {
                                Autoconexion(dispositivo);
                                adaptador.StopScanningForDevicesAsync();
                                nvecesencontrado++;
                            }
                        }
                    };

                    if (!bluetooth.Adapter.IsScanning)
                    {
                        await adaptador.StartScanningForDevicesAsync();
                    }
                }

                if (dispositivo == null)
                {
                    Lista.Clear();
                    await Application.Current.MainPage.DisplayAlert("Aviso", "No se encuentra la impresora", "OK");

                    popupLoadingView.IsVisible  = false;
                    activityIndicator.IsRunning = false;
                    btnImprimir.IsEnabled       = true;
                }

                impresora.CerrarConexion();
            }
            catch (Exception s)
            {
                Console.WriteLine(s.Message);
            }
        }