Beispiel #1
0
        public static void AtualizaBd()
        {
            controleUdo = false;
            B1AppDomain.Application.SetStatusBarMessage("Iniciando verificação de estrutura de dados...", BoMessageTime.bmt_Short, false);
            int intRetCode   = -1;
            var listaTabelas = OUTB.RetornaValores();



            int qtdeCampos = 0;

            B1AppDomain.Application.SetStatusBarMessage("Verificando Estrutura de Dados...", BoMessageTime.bmt_Short, false);


            #region Cria Tabelas
            var pbTabelas = B1AppDomain.Application.StatusBar.CreateProgressBar("Aguarde... Atualizando Tabelas", B1AppDomain.DicionarioTabelasCampos.Count, false);
            foreach (KeyValuePair <object, Tabelas> tabela in B1AppDomain.DicionarioTabelasCampos.Where(p => p.Value.Ttabela == Tipos.TipoTabela.Usuario))
            {
                pbTabelas.Value++;
                pbTabelas.Text = tabela.Value.NomeTabela;
                qtdeCampos     = qtdeCampos + tabela.Value.Campos.Count;
                //Caso nao exista registro da tabela na base sap
                if (listaTabelas.All(p => p.TableName != tabela.Value.NomeTabela))
                {
                    AddTabela(tabela.Value.NomeTabela, tabela.Value.DescricaoTabela, tabela.Value.TipoTabelaSap);
                }
            }
            pbTabelas.Stop();
            Objects.LimpaMemoria(pbTabelas);
            #endregion


            #region Cria Campos

            listaTabelas = new List <OUTB>();
            listaTabelas = OUTB.RetornaValores();
            var listaCampos = new List <CUFD>();

            var pbCampos = B1AppDomain.Application.StatusBar.CreateProgressBar("Aguarde... Atualizando Campos", qtdeCampos, false);

            foreach (KeyValuePair <object, Tabelas> tabela in B1AppDomain.DicionarioTabelasCampos)
            {
                int existeTabela = 0;

                existeTabela = tabela.Value.Ttabela == Tipos.TipoTabela.Sap ? 1 : listaTabelas.Where(p => p.TableName.ToUpper() == tabela.Value.NomeTabela.ToUpper()).Count();


                if (existeTabela > 0)
                {
                    listaCampos = tabela.Value.Ttabela == Tipos.TipoTabela.Sap ? CUFD.RetornaValores(tabela.Value.NomeTabela) : CUFD.RetornaValores("@" + tabela.Value.NomeTabela);

                    //Varre campos da tabela para criacao
                    foreach (Campos campo in tabela.Value.Campos)
                    {
                        pbCampos.Value++;
                        pbCampos.Text = campo.NomeTabela + " - " + campo.NomeCampo;



                        if (listaCampos.Count(p => p.AliasID.ToUpper() == campo.NomeCampo.ToUpper() && p.TableID.ToUpper() == (tabela.Value.Ttabela == Tipos.TipoTabela.Sap ? campo.NomeTabela.ToUpper() : "@" + campo.NomeTabela.ToUpper())) <= 0)
                        {
                            AddCampo(campo.NomeCampo,
                                     campo.NomeTabela,
                                     campo.TipoCampo,
                                     campo.SubTipos,
                                     campo.Tamanho,
                                     campo.Mandatory,
                                     campo.DescricaoCampo,
                                     campo.ValorPadrao,
                                     campo.ValoresValidos,
                                     tabela.Value.Ttabela,
                                     campo.UdoReferencia,
                                     campo.TabelaReferencia);
                        }
                        else
                        {
                            if (VerificaCampo(campo, listaCampos.Where(p => p.AliasID.ToUpper() == campo.NomeCampo.ToUpper() && p.TableID.ToUpper() == (tabela.Value.Ttabela == Tipos.TipoTabela.Sap ? campo.NomeTabela.ToUpper() : "@" + campo.NomeTabela.ToUpper())).SingleOrDefault()))
                            {
                                intRetCode = tabela.Value.Ttabela == Tipos.TipoTabela.Usuario ? DeleteCampo("@" + campo.NomeTabela, campo.NomeCampo) : DeleteCampo(campo.NomeTabela, campo.NomeCampo);


                                if (intRetCode == 0)
                                {
                                    AddCampo(campo.NomeCampo,
                                             campo.NomeTabela,
                                             campo.TipoCampo,
                                             campo.SubTipos,
                                             campo.Tamanho,
                                             campo.Mandatory,
                                             campo.DescricaoCampo,
                                             campo.ValorPadrao,
                                             campo.ValoresValidos,
                                             tabela.Value.Ttabela,
                                             campo.UdoReferencia,
                                             campo.TabelaReferencia);
                                }
                            }
                        }
                    }
                }
            }

            pbCampos.Stop();
            Objects.LimpaMemoria(pbCampos);

            #endregion


            #region Cria Udo
            var pbUdos = B1AppDomain.Application.StatusBar.CreateProgressBar("Aguarde... Registrando Udos", B1AppDomain.DicionarioUdos.Count, false);
            foreach (KeyValuePair <object, Udo> udo in B1AppDomain.DicionarioUdos)
            {
                pbUdos.Value++;

                var tabela = B1AppDomain.DicionarioTabelasCampos.Where(p => p.Value.NomeTabela == udo.Value.TableName)
                             .Select(p => p.Value)
                             .SingleOrDefault();

                tabela.Udos = udo.Value;
                foreach (KeyValuePair <object, UdoFilhos> filho in B1AppDomain.DicionarioUdosFilhos.Where(p => p.Value.TabelaPai == udo.Value.TableName))
                {
                    if (tabela.Udos.Filhos == null)
                    {
                        tabela.Udos.Filhos = new List <UdoFilhos>();
                    }
                    tabela.Udos.Filhos.Add(filho.Value);
                }

                AddUdo(tabela);
            }

            pbUdos.Stop();
            Objects.LimpaMemoria(pbUdos);
            #endregion

            B1AppDomain.Application.SetStatusBarMessage("Verificação de estrutura de dados concluida!", BoMessageTime.bmt_Short, false);

            if (controleUdo)
            {
                B1AppDomain.Application.MessageBox("Dados foram alterados o sistema será reiniciado");
                B1AppDomain.Company.Disconnect();
                B1AppDomain.Application.Menus.Item("3329").Activate();
                B1AppDomain.Application.Forms.ActiveForm.Items.Item("3").Click();
            }
        }
Beispiel #2
0
        internal static bool VerificaCampo(Campos campo, CUFD registro)
        {
            bool mand = registro.NotNull == "Y";

            if (mand != (campo.Mandatory == BoYesNoEnum.tYES) && campo.TipoCampo != BoFieldTypes.db_Date && campo.TipoCampo != BoFieldTypes.db_Memo)
            {
                return(true);
            }
            if (campo.DescricaoCampo != registro.Descr)
            {
                return(true);
            }
            if (campo.NomeCampo != registro.AliasID)
            {
                return(true);
            }
            if (campo.SubTipos != RelationalReader.RetornaSubTipo(registro.EditType))
            {
                return(true);
            }
            if (campo.TabelaReferencia != null)
            {
                if (campo.TabelaReferencia != registro.RTable)
                {
                    return(true);
                }
            }

            if (campo.Tamanho != registro.EditSize && campo.TipoCampo == BoFieldTypes.db_Alpha && campo.TipoCampo == BoFieldTypes.db_Numeric)
            {
                return(true);
            }

            if (campo.ValorPadrao != null)
            {
                if (campo.ValorPadrao != registro.Dflt)
                {
                    return(true);
                }
            }

            if (campo.TipoCampo != RelationalReader.RetornaTipoCampo(registro.TypeID))
            {
                return(true);
            }
            if (campo.UdoReferencia != null)
            {
                if (campo.UdoReferencia != registro.RelUDO)
                {
                    return(true);
                }
            }

            if (campo.ValoresValidos != null)
            {
                foreach (UFD1 valor in UFD1.RetornaValores(campo.NomeTabela, campo.NomeCampo))
                {
                    if (campo.ValoresValidos.Where(p => p.Valor == valor.FldValue && p.Descricao == valor.Descr).Count() <= 0)
                    {
                        return(true);
                    }
                }


                //foreach (ValoresValidos vlr in campo.ValoresValidos)
                //{
                //    if (UFD1.RetornaValores(campo.NomeTabela, campo.NomeCampo).Where(p => p.FldValue == vlr.Valor && p.Descr == vlr.Descricao).Count() <= 0)
                //    {
                //        return true;
                //    }


                //}
            }



            return(false);
        }