private void _SalesCorrelativo(TSSales respuesta)
        {
            TSSalesApp.SalesCorrelativo -= _SalesCorrelativo;
            Device.BeginInvokeOnMainThread(async() =>
            {
                busyindicator.IsVisible = false;

                if (respuesta.EstadoRespuesta == SalesEstado.InformacionNoObtenida)
                {
                    await DisplayAlert("Aviso", respuesta.vSales.Mensaje, "Aceptar");
                    return;
                }
                if (respuesta.EstadoRespuesta == SalesEstado.ErrorSistema)
                {
                    await DisplayAlert("Aviso", "Hubo un problema en la comunicación con el servidor, por favor intente después.", "Aceptar");
                    return;
                }
                if (respuesta.EstadoRespuesta == SalesEstado.InformacionObtenida)
                {
                    if (TSCustomerApp.TipoComprobante.Nombre == TSSalesInput.Boleta().Nombre)
                    {
                        lblNroComprobante.Text = respuesta.vCorrelativo.boleta;
                        TSSalesApp.Correlativo = respuesta.vCorrelativo.boleta;
                    }
                    if (TSCustomerApp.TipoComprobante.Nombre == TSSalesInput.Factura().Nombre)
                    {
                        lblNroComprobante.Text = respuesta.vCorrelativo.factura;
                        TSSalesApp.Correlativo = respuesta.vCorrelativo.factura;
                    }
                }
            });
        }
 private void LoadDocumentos()
 {
     TSSalesApp.vTipoDocuments = new ObservableCollection <TipoComprobate>
     {
         new TipoComprobate()
         {
             Nombre = TSSalesInput.Boleta().Nombre,
             Nro    = TSSalesInput.Boleta().Nro
         },
         new TipoComprobate()
         {
             Nombre = TSSalesInput.Factura().Nombre,
             Nro    = TSSalesInput.Factura().Nro
         },
         new TipoComprobate()
         {
             Nombre = TSSalesInput.NotaDeDespacho().Nombre,
             Nro    = TSSalesInput.NotaDeDespacho().Nro
         },
         new TipoComprobate()
         {
             Nombre = TSSalesInput.Serafin().Nombre,
             Nro    = TSSalesInput.Serafin().Nro
         },
     };
 }
 private void BtnNuevo_Clicked(object sender, EventArgs e)
 {
     ProcDisableControllStart(true);
     TSCustomerApp.TipoComprobante = TSSalesInput.Boleta();
     txtTipoComprobante.Text       = TSSalesInput.Boleta().Nombre;
     TSSalesApp.Detalles.Clear();
     TSSalesApp.DetallesDisplay.Clear();
     SalesCorrelativo();
 }
 public SemiAutomatic()
 {
     btnCaraContext                = new ButtonStateContext();
     TSSalesApp.Detalles           = new ObservableCollection <TS_BEArticulo>();
     TSSalesApp.DetallesDisplay    = new ObservableCollection <TS_BEArticulo>();
     TSCustomerApp.ClientOuput     = new TS_BEClienteOutput();
     TSCustomerApp.TipoComprobante = TSSalesInput.Boleta();
     InitializeComponent();
     ProcDisableControllStart(false);
 }
 private void BtnDeshacer_OnClicked(object sender, EventArgs e)
 {
     ProcDisableControllStart(false);
     TSCustomerApp.TipoComprobante = TSSalesInput.Boleta();
     txtTipoComprobante.Text       = TSSalesInput.Boleta().Nombre;
     TSSalesApp.Detalles.Clear();
     TSSalesApp.DetallesDisplay.Clear();
     SalesCorrelativo();
     TSCustomerApp.ClientOuput.rscliente      = "";
     TSCustomerApp.ClientOuput.drcliente      = "";
     TSCustomerApp.ClientOuput.ruccliente     = "";
     TSCustomerApp.ClientOuput.emcliente      = "";
     TSCustomerApp.ClientOuput.cdcliente      = "";
     TSCustomerApp.ClientOuput.tarjafiliacion = "";
     TSCustomerApp.ClientOuput.Saldos         = null;
     txtRuc.Text         = "";
     txtRazonSocial.Text = "";
     PrintTotales();
 }
        private void BtnSave_Clicked(object sender, EventArgs e)
        {
            /** INICIO DE VALIDACIONES DE TARJETAS DE ACUMULACION DE PUNTOS **/
            if ((this.txtTarjetaAfiliacion.Text ?? "").Length > 0)
            {
                if (TSCustomerApp.vTarjetasBuscadas.Count == 0)
                {
                    DisplayAlert("Aviso", "Debe buscar la tarjeta seleccionada", "Aceptar");
                    return;
                }
                else
                {
                    foreach (string tarjeta in TSCustomerApp.vTarjetasBloqueadas)
                    {
                        if (tarjeta.Equals(txtTarjetaAfiliacion.Text))
                        {
                            DisplayAlert("Aviso", "La tarjeta descrita en la busqueda esta bloqueada", "Aceptar");
                            return;
                        }
                    }
                    bool isbuscado = false;
                    foreach (string tarjeta in TSCustomerApp.vTarjetasBuscadas)
                    {
                        if ((tarjeta ?? "").Trim().Equals((txtTarjetaAfiliacion.Text ?? "").Trim()))
                        {
                            isbuscado = true;
                        }
                    }
                    if (isbuscado == false)
                    {
                        DisplayAlert("Aviso", "Debe buscar la tarjeta descrita", "Aceptar");
                        return;
                    }
                }
            }
            /**FIN VALIDACIONES DE TARJETAS DE PUNTOS**/

            /** INICIO DE VALIDACIONES DE TIPO DE DOCUMENTO**/

            if ((this.txtCodigo.Text ?? "").Trim().Length == 11 || (this.txtRuc.Text ?? "").Trim().Length == 11)
            {
                TS_BEMensaje validacion = validateFactura();
                if (validacion.Ok)
                {
                    TSCustomerApp.TipoComprobante = TSSalesInput.Factura();
                }
                else
                {
                    DisplayAlert("Aviso", validacion.mensaje, "Aceptar");
                    return;
                }
            }
            else if ((this.txtCodigo.Text ?? "").Trim().Length != 11 && (this.txtRuc.Text ?? "").Trim().Length != 11)
            {
                TS_BEMensaje validacion = validateBoleta();
                if (validacion.Ok)
                {
                    TSCustomerApp.TipoComprobante = TSSalesInput.Boleta();
                }
                else
                {
                    DisplayAlert("Aviso", validacion.mensaje, "Aceptar");
                    return;
                }
            }

            /** FIN DE VALIDACIONES DE TIPO DE DOCUMENTO **/
            /** INICIO DE VALIDACIONES DE TARJETA CREDITO EN CLIENTES **/
            if (TSCustomerApp.vCodigoBloqueado.Count > 0)
            {
                foreach (string tarjeta in TSCustomerApp.vCodigoBloqueado)
                {
                    if (tarjeta.Equals((this.txtCodigo.Text ?? "").Trim()))
                    {
                        DisplayAlert("Aviso", "No puede utilizar una tarjeta credito en pagos al contado", "Aceptar");
                        return;
                    }
                }
            }
            var varVerificaCodigo = (txtCodigo.Text ?? "").Trim();

            if (varVerificaCodigo.Length > 0)
            {
                string creditoCorp  = (TSSalesApp.vParemetros.prefcredcorp ?? "").Trim();
                string creditoLocal = (TSSalesApp.vParemetros.prefcredlocal ?? "").Trim();
                string creditoFlot  = (TSSalesApp.vParemetros.prefflotlocal ?? "").Trim();
                if (varVerificaCodigo.Length >= creditoCorp.Length)
                {
                    if (varVerificaCodigo.Substring(0, creditoCorp.Length).Equals(creditoCorp))
                    {
                        DisplayAlert("Aviso", "No puede pasar una tarjeta coorporativa en ventas al contado", "Aceptar");
                        return;
                    }
                }
                if (varVerificaCodigo.Length >= creditoLocal.Length)
                {
                    if (varVerificaCodigo.Substring(0, creditoLocal.Length).Equals(creditoLocal))
                    {
                        DisplayAlert("Aviso", "No puede pasar una tarjeta de credito local en ventas al contado", "Aceptar");
                        return;
                    }
                }
                if (varVerificaCodigo.Length >= creditoFlot.Length)
                {
                    if (varVerificaCodigo.Substring(0, creditoFlot.Length).Equals(creditoFlot))
                    {
                        DisplayAlert("Aviso", "No puede pasar una tarjeta de flota en ventas al contado", "Aceptar");
                        return;
                    }
                }
            }
            /** FIN DE VALIDACIONES DE TARJETA CREDITO EN CLIENTES **/

            TSCustomerApp.ClientOuput.rscliente      = this.txtRscliente.Text;
            TSCustomerApp.ClientOuput.drcliente      = this.txtDireccion.Text;
            TSCustomerApp.ClientOuput.ruccliente     = this.txtRuc.Text;
            TSCustomerApp.ClientOuput.emcliente      = this.txtEmail.Text;
            TSCustomerApp.ClientOuput.cdcliente      = this.txtCodigo.Text;
            TSCustomerApp.ClientOuput.tarjafiliacion = this.txtTarjetaAfiliacion.Text;
            TSCustomerApp.ClientOuput.puntos         = (this.txtTarjetaAfiliacion.Text ?? "").Equals((cliente.tarjafiliacion ?? "").Trim()) ? cliente.puntos : 0;
            TSCustomerApp.ClientOuput.valoracumula   = (this.txtTarjetaAfiliacion.Text ?? "").Equals((cliente.tarjafiliacion ?? "").Trim()) ? cliente.valoracumula : 0;
            TSCustomerApp.ClientOuput.isafiliacion   = (this.txtTarjetaAfiliacion.Text ?? "").Equals((cliente.tarjafiliacion ?? "").Trim());
            TSSalesApp.vCabecera.nroplaca            = this.txtPlaca.Text;
            TSCustomerApp.FlagSearch = true;
            Navigation.PopAsync();
        }
        protected override void OnAppearing()
        {
            base.OnAppearing();
            this.labelRuc.Text = "Ruc";
            this.Title         = ("FACTURACIÓN -  " + (TSSalesApp.vTerminal.nropos ?? "").Trim() + ", Turno: " + TSSalesApp.vTerminal.turno + ", VENDEDOR:" + (TSSalesApp.vVendedor.dsvendedor ?? "").Trim()).ToUpper();
            if (TSCustomerApp.TipoComprobante != null)
            {
                txtTipoComprobante.Text = TSCustomerApp.TipoComprobante.Nombre;
            }
            else
            {
                txtTipoComprobante.Text       = TSSalesInput.Boleta().Nombre;
                TSCustomerApp.TipoComprobante = TSSalesInput.Boleta();
            }
            if (TSCustomerApp.FlagSearch)
            {
                if (!TSCustomerApp.FlagArticuloSearch)
                {
                    ClearDetalles();
                }
                if (TSCustomerApp.ClientOuput != null)
                {
                    if (TSCustomerApp.ClientOuput.isafiliacion)
                    {
                        txtPuntosDisponible.Text = TSCustomerApp.ClientOuput.puntos.ToString();
                        txtValorAcumulado.Text   = TSCustomerApp.ClientOuput.valoracumula.ToString(CultureInfo.CreateSpecificCulture("en-GB"));
                    }
                    if (TSCustomerApp.ClientOuput.Saldos == null)
                    {
                        btnAutomatic.IsEnabled = false; btnCredito.IsEnabled = false; btnCliente.IsEnabled = false; btnSerafin.IsEnabled = false; btnEfectivo.IsEnabled = true; btnTarjeta.IsEnabled = true;
                    }
                    if (TSCustomerApp.ClientOuput.Saldos != null)
                    {
                        btnAutomatic.IsEnabled = false; btnCredito.IsEnabled = false; btnCliente.IsEnabled = false; btnTranfGrat.IsEnabled = false; btnSerafin.IsEnabled = false; btnEfectivo.IsEnabled = false; btnTarjeta.IsEnabled = false;
                    }
                }
                if (TSCustomerApp.TipoComprobante == TSSalesInput.NotaDeDespacho())
                {
                    this.labelRuc.Text = "Código";
                }
                if (TSCustomerApp.TipoComprobante != TSSalesInput.NotaDeDespacho())
                {
                    this.labelRuc.Text = (TSCustomerApp.ClientOuput.ruccliente ?? "").Trim().Length == 11 ? "Ruc" : "Código";
                }
            }
            if (flagArticulo)
            {
                PrintTotales();
                flagArticulo = false;
            }
            if (TSSalesApp.ArticleAdd)
            {
                PrintTotales();
                TSSalesApp.ArticleAdd = false;
            }

            txtRuc.Text         = (TSCustomerApp.ClientOuput.ruccliente ?? "").Trim().Length == 11 ? (TSCustomerApp.ClientOuput.ruccliente ?? "").Trim() : (TSCustomerApp.ClientOuput.cdcliente ?? "").Trim();
            txtRazonSocial.Text = (TSCustomerApp.ClientOuput.rscliente ?? "").Trim();
            flagCliente         = false;
            flagbtnInferior     = false;
            flagbtnCaras        = false;
            TSCustomerApp.FlagArticuloSearch = false;
            TSCustomerApp.FlagSearch         = false;
            SalesCaras();
            isCarasSearch = true;
            if (Cargado)
            {
                return;
            }
            SalesCorrelativo();
            PrintTotales();
        }