Exemple #1
0
        public void MostrarListaBackups()
        {
            BackupManager.BackupPath = System.IO.Path.Combine(Lbl.Sys.Config.CarpetaEmpresa, "Copias de seguridad" + System.IO.Path.DirectorySeparatorChar);
            List <Lfx.Backups.BackupInfo> Backups = this.BackupManager.GetBackups();
            string BackupMasNuevo = this.BackupManager.GetNewestBackupName();

            Listado.BeginUpdate();
            Listado.Items.Clear();
            int i = 1;

            foreach (Lfx.Backups.BackupInfo Backup in Backups)
            {
                ListViewItem Itm = new ListViewItem(i.ToString("0000"));
                Itm = Listado.Items.Add(Backup.Name);
                if (BackupMasNuevo == Backup.Name)
                {
                    Itm.Font = new Font(Itm.Font, FontStyle.Bold);
                }
                Itm.SubItems.Add(i.ToString("00"));
                Itm.SubItems.Add(Lfx.Types.Formatting.FormatSmartDateAndTime(Backup.BackupDate));
                Itm.SubItems.Add(Backup.UserName);
                i++;
            }
            Listado.EndUpdate();
        }
        internal void Refrescar()
        {
            Listado.Items.Clear();
            if (this.Connection != null)
            {
                if (m_Table.Length > 0 && m_KeyField.Length > 0 && m_DetailField != null && m_DetailField.Length > 0)
                {
                    string TextoSql    = null;
                    string TextoBuscar = EntradaBuscar.Text;

                    TextoBuscar = this.Connection.EscapeString(TextoBuscar.Replace("  ", " ").Trim());

                    if (m_Table.Length >= 7 && m_Table.Substring(0, 7) == "SELECT ")
                    {
                        TextoSql = m_Table;
                    }
                    else
                    {
                        TextoSql = "SELECT " + m_KeyField + ", " + m_DetailField;
                        if (m_ExtraDetailFields != null && m_ExtraDetailFields.Length > 0)
                        {
                            if (m_Table == "articulos" && m_ExtraDetailFields.IndexOf("pvp") != -1)
                            {
                                Lbl.Impuestos.Alicuota Ali = Lbl.Sys.Config.Empresa.AlicuotaPredeterminada;
                                string newCampo            = "if (id_categoria is null,pvp * (1+" + Ali.Porcentaje.ToString() + "/100),pvpIva(id_articulo)) as pvp";
                                TextoSql += ", " + m_ExtraDetailFields.Replace("pvp", newCampo);
                            }
                            else
                            {
                                TextoSql += ", " + m_ExtraDetailFields;
                            }
                        }

                        // Si es la tabla de artículos, muestro algunas cosas más
                        if (m_Table == "articulos")
                        {
                            TextoSql += ", control_stock, stock_actual, pedido, destacado";
                        }

                        TextoSql += " FROM " + m_Table;
                        bool AgregueWhere = false;
                        if (TextoBuscar != null && TextoBuscar.Length > 1)
                        {
                            TextoSql    += " WHERE (" + m_DetailField + " LIKE '%" + TextoBuscar.Replace(" ", "%' AND " + m_DetailField + " LIKE '%") + "%'";
                            AgregueWhere = true;
                        }
                        else if (TextoBuscar != null && TextoBuscar.Length > 0)
                        {
                            TextoSql    += " WHERE (" + m_DetailField + " LIKE '" + this.Connection.EscapeString(TextoBuscar) + "%'";
                            AgregueWhere = true;
                        }

                        if (m_ExtraDetailFields != null && m_ExtraDetailFields.Length > 0 && TextoBuscar != null && TextoBuscar.Length > 1)
                        {
                            string TempExtraDetailFields = m_ExtraDetailFields;
                            string TempWhere             = "";
                            string ExtraField            = Lfx.Types.Strings.GetNextToken(ref TempExtraDetailFields, ",");
                            while (ExtraField.Length > 0)
                            {
                                if (TempWhere.Length == 0)
                                {
                                    TempWhere += ExtraField + " LIKE '%" + TextoBuscar + "%'";
                                }
                                else
                                {
                                    TempWhere += " OR " + ExtraField + " LIKE '%" + TextoBuscar + "%'";
                                }
                                ExtraField = Lfx.Types.Strings.GetNextToken(ref TempExtraDetailFields, ",");
                            }
                            TextoSql += " OR (" + TempWhere + ")";
                            if (m_Table == "articulos")
                            {
                                TextoSql += " OR (id_articulo='" + TextoBuscar + "')";
                            }
                        }
                        if (AgregueWhere)
                        {
                            TextoSql += ") ";
                        }

                        if (m_Filter != null && m_Filter.Length > 0)
                        {
                            if (AgregueWhere)
                            {
                                TextoSql += " AND (" + m_Filter + ")";
                            }
                            else
                            {
                                TextoSql += " WHERE " + m_Filter;
                            }
                        }

                        if (m_Table == "articulos")
                        {
                            TextoSql += " ORDER BY IF(stock_actual+pedido>0,0,1), " + m_DetailField;
                        }
                        else
                        {
                            TextoSql += " ORDER BY " + m_DetailField;
                        }

                        // TODO: Código dependiente de MySql/PostgreSql. Pasar a qGen.SqlCommandBuilder
                        if (Lfx.Workspace.Master.SlowLink)
                        {
                            TextoSql += " LIMIT 40";
                        }
                        else
                        {
                            TextoSql += " LIMIT 100";
                        }
                    }

                    System.Data.DataTable TableRes = this.Connection.Select(TextoSql);
                    Listado.SuspendLayout();
                    Listado.BeginUpdate();
                    foreach (System.Data.DataRow OrgRow in TableRes.Rows)
                    {
                        Lfx.Data.Row RowRes = (Lfx.Data.Row)OrgRow;
                        ListViewItem itm    = Listado.Items.Add(RowRes.Fields[m_KeyField].ValueInt.ToString("00000"));
                        itm.SubItems.Add(new ListViewItem.ListViewSubItem(itm, RowRes.Fields[m_DetailField].ValueString));
                        if (m_ExtraDetailFields != null && m_ExtraDetailFields.Length > 0)
                        {
                            string TempExtraDetailFields = m_ExtraDetailFields;
                            string Campo = Lfx.Types.Strings.GetNextToken(ref TempExtraDetailFields, ",").Trim();
                            while (Campo.Length > 0)
                            {
                                if (RowRes.Fields[Campo].Value == null)
                                {
                                    itm.SubItems.Add("");
                                }
                                else
                                {
                                    switch (RowRes[Campo].GetType().ToString())
                                    {
                                    case "System.Single":
                                    case "System.Double":
                                    case "System.Decimal":
                                        itm.SubItems.Add(Lfx.Types.Formatting.FormatNumber(RowRes.Fields[Campo].ValueDecimal, 4));
                                        break;

                                    default:
                                        itm.SubItems.Add(System.Convert.ToString(RowRes.Fields[Campo].Value));
                                        break;
                                    }
                                }

                                Campo = Lfx.Types.Strings.GetNextToken(ref TempExtraDetailFields, ",").Trim();
                            }
                        }
                        // TODO: que tome m_ExtraDetailFields esto en cuenta
                        if (m_Table == "articulos")
                        {
                            if (System.Convert.ToInt32(RowRes["control_stock"]) != 0 && System.Convert.ToDouble(RowRes["stock_actual"]) <= 0)
                            {
                                // No hay stock.
                                if (System.Convert.ToDouble(RowRes["pedido"]) + System.Convert.ToDouble(RowRes["stock_actual"]) > 0)
                                {
                                    // Pero hay pedido suficiente para cubrir un stock negativo y sobra
                                    itm.ForeColor = System.Drawing.Color.OrangeRed;
                                    itm.Font      = new Font(itm.Font, FontStyle.Regular);
                                }
                                else
                                {
                                    itm.ForeColor = System.Drawing.Color.Red;
                                    itm.Font      = new Font(itm.Font, FontStyle.Strikeout);
                                }
                            }
                            else if (System.Convert.ToInt32(RowRes["destacado"]) != 0)
                            {
                                itm.ForeColor = System.Drawing.Color.DarkGreen;
                                itm.Font      = new Font(itm.Font, FontStyle.Regular);
                            }
                        }
                    }
                    Listado.EndUpdate();
                    Listado.ResumeLayout();
                    if (Listado.Items.Count > 0 && Listado.SelectedItems.Count == 0)
                    {
                        Listado.Items[0].Selected = true;
                    }
                    MostrarEtiquetas();
                }
            }
        }
Exemple #3
0
        public void Mostrar(Lbl.Articulos.Articulo articulo)
        {
            Listado.BeginUpdate();
            Listado.Items.Clear();

            this.EtiquetaTitulo.Text = "Historial de entrada y salida de " + articulo.ToString();

            System.Data.DataTable Detalles = this.Connection.Select("SELECT id_movim, id_articulo, desdesituacion, haciasituacion, cantidad, series, fecha, saldo, obs FROM articulos_movim WHERE id_articulo=" + articulo.Id.ToString() + " ORDER BY fecha");

            ListViewItem itm = null;

            foreach (System.Data.DataRow Detalle in Detalles.Rows)
            {
                string DesdeSituacion = "Público";
                string HaciaSituacion = "Público";

                Detalle["desdesituacion"] = Lfx.Data.Connection.ConvertDBNullToZero(Detalle["desdesituacion"]);
                Detalle["haciasituacion"] = Lfx.Data.Connection.ConvertDBNullToZero(Detalle["haciasituacion"]);

                if (System.Convert.ToInt32(Detalle["desdesituacion"]) != 0)
                {
                    if (SituacionCache.ContainsKey(System.Convert.ToInt32(Detalle["desdesituacion"])) == false)
                    {
                        SituacionCache[System.Convert.ToInt32(Detalle["desdesituacion"])] = this.Connection.FieldString("SELECT nombre FROM articulos_situaciones WHERE id_situacion=" + Detalle["desdesituacion"].ToString());
                    }
                    DesdeSituacion = SituacionCache[(int)Detalle["desdesituacion"]];
                }

                if (System.Convert.ToInt32(Detalle["haciasituacion"]) != 0)
                {
                    if (SituacionCache.ContainsKey((int)Detalle["haciasituacion"]) == false)
                    {
                        SituacionCache[(int)Detalle["haciasituacion"]] = this.Connection.FieldString("SELECT nombre FROM articulos_situaciones WHERE id_situacion=" + Detalle["haciasituacion"].ToString());
                    }
                    HaciaSituacion = SituacionCache[(int)Detalle["haciasituacion"]];
                }

                itm = Listado.Items.Add(System.Convert.ToString(Detalle["id_movim"]));
                itm.SubItems.Add(new ListViewItem.ListViewSubItem(itm, Lfx.Types.Formatting.FormatDateAndTime(System.Convert.ToDateTime(Detalle["fecha"]))));
                itm.SubItems.Add(new ListViewItem.ListViewSubItem(itm, Lfx.Types.Formatting.FormatNumber(System.Convert.ToDecimal(Detalle["cantidad"]), Lbl.Sys.Config.Articulos.Decimales)));
                itm.SubItems.Add(new ListViewItem.ListViewSubItem(itm, Detalle["series"].ToString()));
                itm.SubItems.Add(new ListViewItem.ListViewSubItem(itm, DesdeSituacion));
                itm.SubItems.Add(new ListViewItem.ListViewSubItem(itm, HaciaSituacion));
                itm.SubItems.Add(new ListViewItem.ListViewSubItem(itm, Lfx.Types.Formatting.FormatNumber(System.Convert.ToDecimal(Detalle["saldo"]), Lbl.Sys.Config.Articulos.Decimales)));
                itm.SubItems.Add(new ListViewItem.ListViewSubItem(itm, System.Convert.ToString(Detalle["obs"])));
            }
            Listado.EndUpdate();
            if (itm != null)
            {
                itm.Selected = true;
                itm.Focused  = true;
                itm.EnsureVisible();
            }

            ListadoPedidos.BeginUpdate();
            ListadoPedidos.Items.Clear();
            System.Data.DataTable Pedidos = this.Connection.Select(@"SELECT comprob.id_comprob, comprob.fecha, comprob.id_cliente, comprob.tipo_fac, comprob.numero, comprob_detalle.cantidad, comprob_detalle.precio, comprob.estado
				FROM comprob, comprob_detalle
				WHERE comprob.id_comprob=comprob_detalle.id_comprob
					AND comprob.compra=1
					AND comprob.tipo_fac='PD'
				    AND comprob.estado=50
					AND comprob_detalle.id_articulo="                     + articulo.Id.ToString() + @"
				ORDER BY comprob.fecha"                );

            itm = null;
            foreach (System.Data.DataRow Pedido in Pedidos.Rows)
            {
                itm = ListadoPedidos.Items.Add(System.Convert.ToString(Pedido["id_comprob"]));
                itm.SubItems.Add(new ListViewItem.ListViewSubItem(itm, this.Connection.FieldString("SELECT nombre_visible FROM personas WHERE id_persona=" + Lfx.Data.Connection.ConvertDBNullToZero(Pedido["id_cliente"]).ToString())));
                itm.SubItems.Add(new ListViewItem.ListViewSubItem(itm, System.Convert.ToString(Pedido["numero"])));
                itm.SubItems.Add(new ListViewItem.ListViewSubItem(itm, Lfx.Types.Formatting.FormatDateAndTime(System.Convert.ToDateTime(Pedido["fecha"]))));
                itm.SubItems.Add(new ListViewItem.ListViewSubItem(itm, Lfx.Types.Formatting.FormatNumber(System.Convert.ToDecimal(Pedido["cantidad"]), Lbl.Sys.Config.Articulos.Decimales)));
                itm.SubItems.Add(new ListViewItem.ListViewSubItem(itm, Lfx.Types.Formatting.FormatNumber(System.Convert.ToDecimal(Pedido["precio"]), Lfx.Workspace.Master.CurrentConfig.Moneda.DecimalesCosto)));
                switch (System.Convert.ToInt32(Pedido["estado"]))
                {
                case 50:
                    itm.ForeColor = System.Drawing.Color.DarkOrange;
                    break;

                case 100:
                    itm.ForeColor = System.Drawing.Color.DarkGreen;
                    break;

                case 200:
                    itm.ForeColor = System.Drawing.Color.DarkRed;
                    itm.Font      = new Font(itm.Font, System.Drawing.FontStyle.Strikeout);
                    break;
                }
            }
            ListadoPedidos.EndUpdate();
            if (itm != null)
            {
                itm.Selected = true;
                itm.Focused  = true;
                itm.EnsureVisible();
            }
        }