예제 #1
0
        public ClienteTCP(TcpClient cliente, string nombre)
        {
            this.TcpClient = cliente;
            Nombre         = nombre;
            Comprimir      = true;

            Instancias.Add(this);
            if (sub == null || sub.IsAlive == false)
            {
                sub      = new System.Threading.Thread(new System.Threading.ThreadStart(ComprobarDatosRecibidos));
                sub.Name = "ComprobarDatosTCP";
                sub.Start();
            }
        }
예제 #2
0
        public ClienteTCP(string host, int puerto, string nombre)
        {
            this.TcpClient = new TcpClient();
            this.TcpClient.Connect(host, puerto);
            Nombre    = nombre;
            Comprimir = true;

            Instancias.Add(this);
            if (sub == null || sub.IsAlive == false)
            {
                sub      = new System.Threading.Thread(new System.Threading.ThreadStart(ComprobarDatosRecibidos));
                sub.Name = "ComprobarDatosTCP";
                sub.Start();
            }
        }
예제 #3
0
        public async Task Invoke(HttpContext context, SuiteACWeb_Api_DbContext suiteCFDI_DBContext)
        {
            try
            {
                //string authHeader = context.Request.Headers["Authorization"];
                //if (authHeader != null && authHeader.StartsWith("Basic"))
                //{
                //    //Extract credentials
                //    string encodedUsernamePassword = authHeader.Substring("Basic ".Length).Trim();
                //    Encoding encoding = Encoding.GetEncoding("iso-8859-1");
                //    var usernamePassword = encoding.GetString(Convert.FromBase64String(encodedUsernamePassword));
                //    int seperatorIndex = usernamePassword.IndexOf(':');
                //    var username = usernamePassword.Substring(0, 9);
                //    var password = usernamePassword.Substring(seperatorIndex + 1);
                //    if (true) //check if your credentials are valid
                //    {
                //        MasterDbContext.ConnectionString = "connection"; //_masterContext.Retrive Your subscriber connection string here
                //        if (string.IsNullOrEmpty(MasterDbContext.ConnectionString))
                //        {
                //            //no authorization header
                //            context.Response.StatusCode = 401; //Unauthorized
                //            return;
                //        }
                //        await _next.Invoke(context);
                //    }
                //    else
                //    {
                //        context.Response.StatusCode = 401; //Unauthorized
                //        return;
                //    }
                //}
                //else
                //{
                //    // no authorization header
                //    context.Response.StatusCode = 401; //Unauthorized
                //    return;
                //}

                //Identificar el Tenant
                string      Header  = context.Request.Headers["Postman-Token"];
                HttpRequest request = context.Request;
                string      path    = request.Path;
                string[]    parts   = path.Split('/');
                string      lic     = parts[1];
                string      conn    = @"Server=|server|;Database=|db|;Trusted_Connection=False;user id=|userId|;password=|userPsw|;ConnectRetryCount=0";
                Bitacora    bit     = new Bitacora();

                Instancias inst = solControl_db.Instancias.Where(a => a.Licencia == lic).FirstOrDefault();
                if (inst == null)
                {
                    //no tenant header
                    bit.Descripcion = string.Format("Recuperar la instancia con Licencia '{0}'", lic);
                    bit.Evento      = "API01";
                    bit.Fecha       = DateTime.Now;
                    bit.Mensaje     = string.Format("Instancia null. Licencia: {0}", lic);
                    bit.Tipo        = "I";
                    bit.Usuario     = "System";
                    solControl_db.Add(bit);
                    solControl_db.SaveChanges();

                    context.Response.StatusCode = 401; //Not Found
                    return;
                    //conn = @"Server=mssql.consulteam.mx;Database=scfdi_plenty;Trusted_Connection=False;user id=scfdi_plenty_admin;password=1z2x3c.CC;ConnectRetryCount=0";
                    //SuiteCFDI_DbContext.ConnectionString = conn;
                    //await _next.Invoke(context);
                }
                //Construir Connection
                Dbs db = solControl_db.Dbs.Find(inst.IdDb);
                if (db == null)
                {
                    //Base de datos no enciontrada
                    bit.Descripcion = string.Format("Recuperar la base de datos '{0}'", inst.IdDb);
                    bit.Evento      = "API02";
                    bit.Fecha       = DateTime.Now;
                    bit.Mensaje     = string.Format("IdDb null. Licencia: {0}, DB: {1}", lic, inst.IdDb);
                    bit.Tipo        = "I";
                    bit.Usuario     = "System";
                    solControl_db.Add(bit);
                    solControl_db.SaveChanges();

                    context.Response.StatusCode = 402; //Not Found
                    return;

                    //conn = @"Server=mssql.consulteam.mx;Database=scfdi_plenty;Trusted_Connection=False;user id=scfdi_plenty_admin;password=1z2x3c.CC;ConnectRetryCount=0";
                    //SuiteCFDI_DbContext.ConnectionString = conn;
                    //await _next.Invoke(context);
                }
                conn = conn.Replace("|server|", db.Server);
                conn = conn.Replace("|db|", db.IdDb);
                conn = conn.Replace("|userId|", db.Usuario);
                conn = conn.Replace("|userPsw|", db.Psw);

                //string conn = string.Empty;
                //if (tenant == "plenty")
                //    conn = @"Server=mssql.consulteam.mx;Database=scfdi_plenty;Trusted_Connection=False;user id=scfdi_plenty_admin;password=1z2x3c.CC;ConnectRetryCount=0";
                //if (tenant == "cteam")
                //    conn = @"Server=mssql.consulteam.mx;Database=scfdi_cteam;Trusted_Connection=False;user id=scfdi_cteam_admin;password=4f5g6h.HH;ConnectRetryCount=0";

                //MasterDbContext.TenantName = tenant;
                SuiteCFDI_DbContext.ConnectionString = conn;

                bit.Descripcion = string.Format("Establecer connection string para Licencia '{0}'", lic);
                bit.Evento      = "API00";
                bit.Fecha       = DateTime.Now;
                bit.Mensaje     = string.Format("Connection String '{0}'", conn);
                bit.Tipo        = "I";
                bit.Usuario     = "System";
                solControl_db.Add(bit);
                solControl_db.SaveChanges();


                await _next.Invoke(context);
            }
            catch (Exception e)
            {
                // no authorization header
                e.ToString();
                context.Response.StatusCode = 400;
                Bitacora bit = new Bitacora();
                bit.Descripcion = string.Format("Excepción en 'MiddleWare '{0}'", "");
                bit.Evento      = "API00";
                bit.Fecha       = DateTime.Now;
                bit.Mensaje     = string.Format("Error: {0}", e.ToString());
                bit.Tipo        = "E";
                bit.Usuario     = "System";
                solControl_db.Add(bit);
                solControl_db.SaveChanges();

                return;
            }
        }
예제 #4
0
        private void btnGuardar_Click(object sender, EventArgs e)
        {
            Instancias oInstancias = new Instancias();

            decimal Cupo, CupoAsignado = 0, TotalCupoVehiculos = 0, SaldoDisponible = 0;

            try
            {
                Decimal.TryParse(txtCupo.Text, out Cupo);

                if (String.IsNullOrEmpty(comboTipoFacturacion.Text))
                {
                    throw new Exception("Debe Seleccionar un tipo de facturación valido");
                }

                if (String.IsNullOrEmpty(this.txtPlazoPagoFactura.Text))
                {
                    throw new Exception("Debe digitar un valor para el Plazo de pago de factura");
                }
                else
                {
                    int plazoPagoFactura;

                    if (!int.TryParse(this.txtPlazoPagoFactura.Text, out plazoPagoFactura))
                    {
                        throw new Exception("El Plazo de pago de factura debe ser un numero");
                    }

                    if (plazoPagoFactura <= 0 || plazoPagoFactura > 15)
                    {
                        throw new Exception("El Plazo de pago de factura debe ser estar entre 1 a 15 dias");
                    }
                }


                foreach (DataRow dRow in dtDetalleCredito.Rows)
                {
                    if (String.IsNullOrEmpty(dRow["IdEstado"].ToString()))
                    {
                        throw new Exception("Existen estados sin seleccionar");
                    }
                }

                if (chkManejarCupoVehiculo.Checked)
                {
                    if (OHelper.ManejaCupoTipoCredito(Int32.Parse(cmbTipoCredito.SelectedValue.ToString())))
                    {
                        foreach (DataRow dRow in dtDetalleCredito.Rows)
                        {
                            CupoAsignado = 0;
                            if (dRow["CupoAsignado"] != null)
                            {
                                if (!String.IsNullOrEmpty(dRow["CupoAsignado"].ToString()))
                                {
                                    if (!dRow["IdEstado"].ToString().ToString().Equals("3"))
                                    {
                                        CupoAsignado = Decimal.Parse(dRow["CupoAsignado"].ToString());
                                    }
                                    else
                                    {
                                        CupoAsignado = 0;
                                    }
                                }
                            }

                            SaldoDisponible = 0;
                            if (dRow["SaldoDisponible"] != null)
                            {
                                if (!String.IsNullOrEmpty(dRow["SaldoDisponible"].ToString()))
                                {
                                    SaldoDisponible = Decimal.Parse(dRow["SaldoDisponible"].ToString());
                                }
                            }

                            if (SaldoDisponible > CupoAsignado)
                            {
                                if (!dRow["IdEstado"].ToString().ToString().Equals("3"))
                                {
                                    throw new Exception("El saldo disponible del vehículo " + dRow["Vehiculo"].ToString() + " supera a su cupo asignado.");
                                }
                            }
                            TotalCupoVehiculos += CupoAsignado;
                        }

                        if (Decimal.Parse(txtCupo.Text) < TotalCupoVehiculos)
                        {
                            MessageBox.Show("El cupo asignado a los vehiculos supera el cupo del credito", "Créditos", MessageBoxButtons.OK, MessageBoxIcon.Information);
                            return;
                        }
                    }
                }


                if ((chkAplicaRenovacion.Checked) && (string.IsNullOrEmpty(txtPeriodo.Text)))
                {
                    this.txtPeriodo.Focus();
                    throw new Exception("Debe ingresar el Periodo de Renovación");
                }

                int PeriodoRenovacion = 0;
                if (chkAplicaRenovacion.Checked)
                {
                    PeriodoRenovacion = Convert.ToInt32(txtPeriodo.Text);
                }

                if (EsNuevoRegistro)
                {
                    eCredito.IdCreditoConsumo = OHelper.InsertarEncabezadoCredito(eCredito.IdCliente, Cupo, int.Parse(cmbTipoCredito.SelectedValue.ToString()), chkEstado.Checked, comboTipoFacturacion.Text, chkManejarCupoVehiculo.Checked, this.chkUsarEnCanastilla.Checked, false, DateTime.Now, null, Int32.Parse(txtPlazoPagoFactura.Text), this.chkAplicaRenovacion.Checked, PeriodoRenovacion);
                }
                else
                {
                    OHelper.InsertarEncabezadoCredito(eCredito.IdCreditoConsumo, eCredito.IdCliente, Cupo, int.Parse(cmbTipoCredito.SelectedValue.ToString()), chkEstado.Checked, comboTipoFacturacion.Text, chkManejarCupoVehiculo.Checked, this.chkUsarEnCanastilla.Checked, false, DateTime.Now, null, Int32.Parse(txtPlazoPagoFactura.Text), this.chkAplicaRenovacion.Checked, PeriodoRenovacion);
                }

                int i = 0;
                foreach (DataRow dRow in dtDetalleCredito.Rows)
                {
                    CupoAsignado = 0;
                    if (chkManejarCupoVehiculo.Checked)
                    {
                        if (dRow["CupoAsignado"] != null)
                        {
                            if (!String.IsNullOrEmpty(dRow["CupoAsignado"].ToString()))
                            {
                                CupoAsignado = Decimal.Parse(dRow["CupoAsignado"].ToString());
                            }
                        }
                    }

                    //Para el IdProducto se envía -1 porque actualmente no se está utilizando
                    if (OHelper.InsertarDetalleCredito(eCredito.IdCreditoConsumo, Int32.Parse(dRow["IdVehiculo"].ToString()), -1, Int16.Parse(dRow["IdEstado"].ToString()), Boolean.Parse("False"), CupoAsignado) == false)
                    {
                        MessageBox.Show("Error Insertando Vehiculo" + dRow["Placa"].ToString(), "Créditos", MessageBoxButtons.OK, MessageBoxIcon.Information);
                    }
                    else if (Recargas.ContainsKey(i))
                    {
                        try
                        {
                            if (!OHelper.InsertarPrepago(Recargas[i].Afectacion, Recargas[i].Monto, Recargas[i].FechaInsercion, Recargas[i].Concepto, Recargas[i].Documento, eCredito.IdCreditoConsumo, Recargas[i].Origen, Recargas[i].Placa, Recargas[i].CupoAsignado) == true)
                            {
                                MessageBox.Show("Error insertando recarga. " + dRow["Placa"].ToString(), "Prepagos", MessageBoxButtons.OK, MessageBoxIcon.Information);
                            }
                            else
                            {
                                Recargas.Clear();
                            }
                        }
                        catch (Exception ex)
                        {
                            MessageBox.Show("Error insertando recarga. " + ex.Message, "Prepagos", MessageBoxButtons.OK, MessageBoxIcon.Information);
                        }
                    }
                    else
                    {
                        if (dRow["IdEstado"].ToString().Equals("3"))
                        {
                            if ((Convert.ToDecimal(dRow["SaldoDisponible"].ToString()) > 0) || (Convert.ToDecimal(dRow["CupoAsignado"].ToString()) > 0))
                            {
                                OHelper.DisminuirCupoVehiculoRetirado(dRow["Vehiculo"].ToString(), eCredito.IdCreditoConsumo.ToString());
                            }
                        }
                    }
                    i++;
                }

                MessageBox.Show("El credito se registró con éxito", "Créditos", MessageBoxButtons.OK, MessageBoxIcon.Information);


                dtgDetalle.DataSource = false;

                pnlEncabezado.Enabled   = false;
                pnlDetalle.Enabled      = false;
                EsGridDetalleConstruido = false;
                EsNuevoRegistro         = false;

                panelCreditos.Visible      = true;
                panelEditarCredito.Visible = false;


                DataTable cli = OHelper.RecuperarClientePorIdentificacion(this.txtCliente.Text).Tables[0];

                if (cli.Rows.Count > 0)
                {
                    this.txtCliente.Enabled          = false;
                    txtNombre.Text                   = cli.Rows[0]["Nombre"].ToString();
                    txtDireccion.Text                = cli.Rows[0]["Direccion"].ToString();
                    txtTelefono.Text                 = cli.Rows[0]["Telefono"].ToString();
                    eCredito.IdCliente               = int.Parse(cli.Rows[0]["IdCliente"].ToString());
                    gridCreditos.AutoGenerateColumns = false;
                    gridCreditos.DataSource          = OHelper.RecuperarEncabezadoCredito(this.txtCliente.Text, Helper.oAccion.EsDocumento).Tables[0];
                    panelCreditos.Visible            = true;
                }


                //else
                //{

                //}
            }
            catch (Exception ex)
            {
                //EsNuevoRegistro = false;
                MessageBox.Show(ex.Message, "Créditos", MessageBoxButtons.OK, MessageBoxIcon.Information);
            }
        }