public static int Udos(Tabelas tabela, List <Tabelas> listaParaFilhos) { int intRetCode = -1; try { if (tabela.Udos != null) { if (tabela.Udos.Operacao == OperacoesBd.Adiciona) { //AddUdo(tabela, listaParaFilhos); } else if (tabela.Udos.Operacao == OperacoesBd.Atualiza) { DeleteUdo(tabela); //AddUdo(tabela, listaParaFilhos); } } } catch (Exception ex) { B1Exception.throwException("Erro ao Criar Udos :: " + tabela.Udos.TableName + " - ", ex); } return(intRetCode); }
internal static int DeleteUdo(Tabelas tabela) { int intRetCode = -1; SAPbobsCOM.UserObjectsMD oUserObjectMD = null; if (oUserObjectMD.GetByKey(tabela.Udos.TableName)) { intRetCode = oUserObjectMD.Remove(); //verifica e retorna erro if (intRetCode != 0 && intRetCode != -2035) { //B1Exception.throwException("MetaData.CriaCampos: ", new Exception(B1AppDomain.Company.GetLastErrorDescription())); } } return(intRetCode); }
internal static int AddUdo(Tabelas tabela) { int intRetCode = -1; SAPbobsCOM.UserObjectsMD oUserObjectMD = null; oUserObjectMD = ((SAPbobsCOM.UserObjectsMD)(B1AppDomain.Company.GetBusinessObject(SAPbobsCOM.BoObjectTypes.oUserObjectsMD))); oUserObjectMD.CanCancel = tabela.Udos.Cancel; oUserObjectMD.CanClose = tabela.Udos.Close; oUserObjectMD.CanCreateDefaultForm = tabela.Udos.CreateDefaultForm; oUserObjectMD.EnableEnhancedForm = tabela.Udos.EnableEnhancedform; if (tabela.Udos.CreateDefaultForm == SAPbobsCOM.BoYesNoEnum.tYES) { if (tabela.Udos.ObjectType != BoUDOObjType.boud_Document) { oUserObjectMD.FormColumns.FormColumnAlias = "Code"; oUserObjectMD.FormColumns.FormColumnDescription = "Code"; } else { oUserObjectMD.FormColumns.FormColumnAlias = "DocEntry"; oUserObjectMD.FormColumns.FormColumnDescription = "DocEntry"; } int voltaCampos = 1; foreach (Campos campo in tabela.Campos) { oUserObjectMD.FormColumns.Add(); oUserObjectMD.FormColumns.SetCurrentLine(voltaCampos); oUserObjectMD.FormColumns.FormColumnAlias = "U_" + campo.NomeCampo; oUserObjectMD.FormColumns.FormColumnDescription = campo.DescricaoCampo; oUserObjectMD.FormColumns.Editable = BoYesNoEnum.tYES; oUserObjectMD.FormColumns.SonNumber = 0; voltaCampos++; } } oUserObjectMD.CanDelete = tabela.Udos.Delete; oUserObjectMD.CanFind = tabela.Udos.Find; if (tabela.Udos.Find == SAPbobsCOM.BoYesNoEnum.tYES) { if (tabela.Udos.ObjectType != BoUDOObjType.boud_Document) { oUserObjectMD.FindColumns.ColumnAlias = "Code"; oUserObjectMD.FindColumns.ColumnDescription = "Code"; oUserObjectMD.FindColumns.Add(); oUserObjectMD.FindColumns.ColumnAlias = "Name"; oUserObjectMD.FindColumns.ColumnDescription = "Name"; } else { oUserObjectMD.FindColumns.ColumnAlias = "DocEntry"; oUserObjectMD.FindColumns.ColumnDescription = "DocEntry"; oUserObjectMD.FindColumns.ColumnAlias = "DocNum"; oUserObjectMD.FindColumns.ColumnDescription = "DocNum"; } int voltaFind = 1; foreach (Campos campo in tabela.Campos) { oUserObjectMD.FindColumns.Add(); oUserObjectMD.FindColumns.SetCurrentLine(voltaFind); oUserObjectMD.FindColumns.ColumnAlias = "U_" + campo.NomeCampo; oUserObjectMD.FindColumns.ColumnDescription = campo.DescricaoCampo; voltaFind++; } } oUserObjectMD.CanYearTransfer = tabela.Udos.YearTransfer; oUserObjectMD.Code = tabela.Udos.Code; oUserObjectMD.ManageSeries = tabela.Udos.ManageSeries; oUserObjectMD.Name = tabela.Udos.Name; oUserObjectMD.ObjectType = tabela.Udos.ObjectType; oUserObjectMD.TableName = tabela.Udos.TableName; int numerofilho = 1; if (tabela.Udos.Filhos != null) { foreach (UdoFilhos listaUdo in tabela.Udos.Filhos) { if (numerofilho > 1) { oUserObjectMD.ChildTables.Add(); } oUserObjectMD.ChildTables.TableName = listaUdo.TableName; oUserObjectMD.ChildTables.ObjectName = listaUdo.TableName; if (tabela.Udos.EnableEnhancedform == BoYesNoEnum.tNO) { foreach (Tabelas tabelaFilho in B1AppDomain.DicionarioTabelasCampos.Where(p => p.Value.NomeTabela == listaUdo.TableName).Select(p => p.Value)) { int voltaFilhos = 1; foreach (Campos campo in tabelaFilho.Campos) { oUserObjectMD.FormColumns.Add(); oUserObjectMD.FormColumns.SetCurrentLine(voltaFilhos); oUserObjectMD.FormColumns.FormColumnAlias = "U_" + campo.NomeCampo; oUserObjectMD.FormColumns.FormColumnDescription = campo.DescricaoCampo; oUserObjectMD.FormColumns.Editable = BoYesNoEnum.tYES; oUserObjectMD.FormColumns.SonNumber = numerofilho; voltaFilhos++; } } } else { foreach (Tabelas tabelaFilho in B1AppDomain.DicionarioTabelasCampos.Where(p => p.Value.NomeTabela == listaUdo.TableName).Select(p => p.Value)) { int voltaNovo = 0; foreach (Campos campo in tabelaFilho.Campos) { if (voltaNovo > 0) { oUserObjectMD.EnhancedFormColumns.Add(); } oUserObjectMD.EnhancedFormColumns.SetCurrentLine(voltaNovo); oUserObjectMD.EnhancedFormColumns.ColumnAlias = "U_" + campo.NomeCampo; oUserObjectMD.EnhancedFormColumns.ColumnDescription = campo.DescricaoCampo; oUserObjectMD.EnhancedFormColumns.Editable = BoYesNoEnum.tYES; oUserObjectMD.EnhancedFormColumns.ColumnIsUsed = BoYesNoEnum.tYES; oUserObjectMD.EnhancedFormColumns.ChildNumber = numerofilho; voltaNovo++; } } } numerofilho++; } } oUserObjectMD.RebuildEnhancedForm = tabela.Udos.RebuildEnhancedForm; oUserObjectMD.FormSRF = tabela.Udos.Formulario; intRetCode = oUserObjectMD.Add(); //mata objeto para reutilizar senao trava Marshal.FinalReleaseComObject(oUserObjectMD); oUserObjectMD = null; GC.Collect(); //verifica e retorna erro if (intRetCode != 0 && intRetCode != -2035) { // B1Exception.throwException("MetaData.CriaCampos: ", new Exception(B1AppDomain.Company.GetLastErrorDescription())); } else if (intRetCode == 0) { controleUdo = true; } //else if(intRetCode == 0) //{ // oUserObjectMD = ((SAPbobsCOM.UserObjectsMD)(B1AppDomain.Company.GetBusinessObject(SAPbobsCOM.BoObjectTypes.oUserObjectsMD))); // if(oUserObjectMD.GetByKey(tabela.Udos.Code)) // { // oUserObjectMD.RebuildEnhancedForm = BoYesNoEnum.tNO; // oUserObjectMD.FormSRF = tabela.Udos.Formulario; // oUserObjectMD.Update(); // } // //mata objeto para reutilizar senao trava // Marshal.FinalReleaseComObject(oUserObjectMD); // oUserObjectMD = null; // GC.Collect(); //} return(intRetCode); }
public static int Tabela(Tabelas tabela) { int intRetCode = -1; try { #region Tabela de usuários if (tabela.Ttabela == Tipos.TipoTabela.Usuario) { if (tabela.Operacao == OperacoesBd.Adiciona) { intRetCode = AddTabela(tabela.NomeTabela, tabela.DescricaoTabela, tabela.TipoTabelaSap); if (intRetCode == 0 || intRetCode == -2035) { foreach (Campos campo in tabela.Campos) { if (campo.Operacao == OperacoesBd.Adiciona) { intRetCode = AddCampo(campo.NomeCampo, campo.NomeTabela, campo.TipoCampo, campo.SubTipos, campo.Tamanho, campo.Mandatory, campo.DescricaoCampo, campo.ValorPadrao, campo.ValoresValidos, tabela.Ttabela, campo.UdoReferencia, campo.TabelaReferencia); } } } } else if (tabela.Operacao == OperacoesBd.Atualiza) { intRetCode = UpdateTabela(tabela.NomeTabela, tabela.DescricaoTabela); if (intRetCode == 0 || intRetCode == -2035) { foreach (Campos campo in tabela.Campos) { if (campo.Operacao == OperacoesBd.Adiciona) { intRetCode = AddCampo(campo.NomeCampo, campo.NomeTabela, campo.TipoCampo, campo.SubTipos, campo.Tamanho, campo.Mandatory, campo.DescricaoCampo, campo.ValorPadrao, campo.ValoresValidos, tabela.Ttabela, campo.UdoReferencia, campo.TabelaReferencia); } else if (campo.Operacao == OperacoesBd.Atualiza) { intRetCode = UpdateCampo(campo.NomeTabela, campo.NomeCampo, campo.Tamanho, campo.Mandatory, campo.DescricaoCampo, campo.ValorPadrao, campo.ValoresValidos); } else if (campo.Operacao == OperacoesBd.Deleta) { intRetCode = DeleteCampo(campo.NomeTabela, campo.NomeCampo); } } } } else if (tabela.Operacao == OperacoesBd.Deleta) { intRetCode = DeleteTabela(tabela.NomeTabela); } } #endregion #region Tabela do Sistema else { foreach (Campos campo in tabela.Campos) { if (campo.Operacao == OperacoesBd.Adiciona) { intRetCode = AddCampo(campo.NomeCampo, campo.NomeTabela, campo.TipoCampo, campo.SubTipos, campo.Tamanho, campo.Mandatory, campo.DescricaoCampo, campo.ValorPadrao, campo.ValoresValidos, tabela.Ttabela, campo.UdoReferencia, campo.TabelaReferencia); } else if (campo.Operacao == OperacoesBd.Atualiza) { intRetCode = UpdateCampo(campo.NomeTabela, campo.NomeCampo, campo.Tamanho, campo.Mandatory, campo.DescricaoCampo, campo.ValorPadrao, campo.ValoresValidos); } else if (campo.Operacao == OperacoesBd.Deleta) { intRetCode = DeleteCampo(campo.NomeTabela, campo.NomeCampo); } } } #endregion } catch (Exception ex) { B1Exception.throwException("Erro Tabela :: ", ex); } return(intRetCode); }