Example #1
0
        internal static int DeleteCampo(string nomeTabela, string nomeCampo)
        {
            int intRetCode = -1;

            SAPbobsCOM.UserFieldsMD objUserFieldsMD = null;

            //instancia objeto para criar campo
            objUserFieldsMD = (UserFieldsMD)B1AppDomain.Company.GetBusinessObject(SAPbobsCOM.BoObjectTypes.oUserFields);

            if (objUserFieldsMD.GetByKey(nomeTabela, idCampo(nomeCampo, nomeTabela)))
            {
                intRetCode = objUserFieldsMD.Remove();
                //verifica e retorna erro
                if (intRetCode != 0 && intRetCode != -2035)
                {
                    B1Exception.throwException("MetaData.CriaCampos: ", new Exception(B1AppDomain.Company.GetLastErrorDescription()));
                }
            }

            //mata objeto para reutilizar senao trava
            Marshal.FinalReleaseComObject(objUserFieldsMD);
            objUserFieldsMD = null;
            GC.Collect();

            return(0);
        }
        public void RemoveUserField(string TableName, string FieldName)
        {
            Log.AppendFormat("Remoção do Campo {0}.{1}: ", TableName, FieldName);
            SAPbobsCOM.UserFieldsMD oUserFieldsMD = ((SAPbobsCOM.UserFieldsMD)(SBOApp.Company.GetBusinessObject(SAPbobsCOM.BoObjectTypes.oUserFields)));

            string Sql = " SELECT FieldId FROM CUFD WHERE TableID = '{0}' AND AliasID = '{1}' ";

            Sql = String.Format(Sql, TableName, FieldName);

            string FieldId = QueryForValue(Sql);

            if (FieldId != null)
            {
                if (oUserFieldsMD.GetByKey(TableName, Convert.ToInt32(FieldId)))
                {
                    CodErro = oUserFieldsMD.Remove();
                    this.ValidateAction();
                }
            }
            else
            {
                MsgErro = "";
                CodErro = 0;
                Log.AppendLine(" Tabela/Campo não encontrado ");
            }

            Marshal.ReleaseComObject(oUserFieldsMD);
            oUserFieldsMD = null;
        }
        public void CreateUserField(string TableName, string FieldName, string FieldDescription, SAPbobsCOM.BoFieldTypes oType, SAPbobsCOM.BoFldSubTypes oSubType, int FieldSize, bool MandatoryYN = false, string DefaultValue = "")
        {
            if (FieldDescription.Length > 30)
            {
                FieldDescription = FieldDescription.Substring(0, 30);
            }
            if (FindColumns != null)
            {
                FindColumns.Fields.Add(FieldName, FieldDescription);
            }

            Log.AppendFormat(Environment.NewLine + "Criação/Atualização do Campo {0}.{1}: ", TableName, FieldName);
            SAPbobsCOM.UserFieldsMD oUserFieldsMD = ((SAPbobsCOM.UserFieldsMD)(SBOApp.Company.GetBusinessObject(SAPbobsCOM.BoObjectTypes.oUserFields)));
            bool bUpdate;

            string Sql = " SELECT FieldId FROM CUFD WHERE TableID = '{0}' AND AliasID = '{1}' ";

            Sql = String.Format(Sql, TableName, FieldName);
            string FieldId = QueryForValue(Sql);

            if (FieldId != null)
            {
                bUpdate = oUserFieldsMD.GetByKey(TableName, Convert.ToInt32(FieldId));
            }
            else
            {
                bUpdate = false;
            }

            oUserFieldsMD.TableName   = TableName;
            oUserFieldsMD.Name        = FieldName;
            oUserFieldsMD.Description = FieldDescription;
            oUserFieldsMD.Type        = oType;
            oUserFieldsMD.SubType     = oSubType;
            oUserFieldsMD.Mandatory   = GetSapBoolean(MandatoryYN);
            if (!String.IsNullOrEmpty(DefaultValue))
            {
                oUserFieldsMD.DefaultValue = DefaultValue;
            }

            if (FieldSize > 0)
            {
                oUserFieldsMD.EditSize = FieldSize;
            }

            if (bUpdate)
            {
                //CodErro = oUserFieldsMD.Update();
                CodErro = 0;
            }
            else
            {
                CodErro = oUserFieldsMD.Add();
            }
            this.ValidateAction();

            Marshal.ReleaseComObject(oUserFieldsMD);
            oUserFieldsMD = null;
        }
        //Aplica valor padrão a campo de usuário
        public bool fSetaValorPadrao(string cTabela, string cCampo, string Valor, TipoTabela cTipoTabela)
        {
            string cTabelaAux = null;

            //TipoTabela: 0=user, 1=SAPB1

            if (cTipoTabela == TipoTabela.tUSER)
            {
                cTabelaAux = "@" + cTabela;
            }
            else
            {
                cTabelaAux = cTabela;
            }

            bool valorExiste = false;
            int  campoID     = fFieldId(cTabelaAux, cCampo);

            if (fExisteValorValido(cTabelaAux, campoID, Valor))
            {
                valorExiste = true;
            }

            //se existe esse valor válido
            if (valorExiste && (fExisteValorDefaultSet(cTabelaAux, campoID.ToString(), Valor)) == false)
            {
                GC.Collect();
                SAPbobsCOM.UserFieldsMD objUserFieldsMD;
                objUserFieldsMD = oCompany.GetBusinessObject(SAPbobsCOM.BoObjectTypes.oUserFields);
                if (objUserFieldsMD.GetByKey(cTabelaAux, campoID))
                {
                    objUserFieldsMD.DefaultValue = Valor;
                }
                CodErroDB = objUserFieldsMD.Update();
                if (CodErroDB != 0)
                {
                    objUserFieldsMD = null;
                    oCompany.GetLastError(out int CodErroDB, out string MsgErroDB);
                    // SBO_Application.StatusBar.SetText("Valor padrão para o campo: [" + cCampo + "] da tabela [" + cTabela + "] reportado com erro! " + CodErroDB.ToString() + " - " + MsgErroDB, SAPbouiCOM.BoMessageTime.bmt_Short, SAPbouiCOM.BoStatusBarMessageType.smt_Error);
                    return(false);
                }
                else
                {
                    objUserFieldsMD = null;
                    // SBO_Application.StatusBar.SetText("Valor padrão para o campo: [" + cCampo + "] da tabela [" + cTabela + "] setado com sucesso!", SAPbouiCOM.BoMessageTime.bmt_Short, SAPbouiCOM.BoStatusBarMessageType.smt_Success);
                    return(true);
                }
            }
            else
            {
                return(false);
            }
        }
        //Aplica campo como obrigatorio
        public bool fSetaCampoObrigatorio(string cTabela, string cCampo, TipoTabela cTipoTabela)
        {
            string cTabelaAux = null;

            //'TipoTabela: 0=user, 1=SAPB1

            if (cTipoTabela == TipoTabela.tUSER)
            {
                cTabelaAux = "@" + cTabela;
            }
            else
            {
                cTabelaAux = cTabela;
            }

            int campoID = fFieldId(cTabelaAux, cCampo);

            SAPbobsCOM.UserFieldsMD objUserFieldsMD;
            GC.Collect();
            objUserFieldsMD = oCompany.GetBusinessObject(SAPbobsCOM.BoObjectTypes.oUserFields);
            if (objUserFieldsMD.GetByKey(cTabelaAux, campoID))
            {
                objUserFieldsMD.Mandatory = SAPbobsCOM.BoYesNoEnum.tYES;
                CodErroDB = objUserFieldsMD.Update();
            }

            if (CodErroDB != 0)
            {
                oCompany.GetLastError(out int CodErroDB, out string MsgErroDB);
                // SBO_Application.StatusBar.SetText("Obrigatoriedade para o campo: [" + cCampo + "] da tabela [" + cTabela + "] reportado com sucesso! " + CodErroDB.ToString() + " - " + MsgErroDB, SAPbouiCOM.BoMessageTime.bmt_Short, SAPbouiCOM.BoStatusBarMessageType.smt_Error);
                return(false);
            }
            else
            {
                // SBO_Application.StatusBar.SetText("Obrigatoriedade para o campo: [" + cCampo + "] da tabela [" + cTabela + "] setada com sucesso!", SAPbouiCOM.BoMessageTime.bmt_Short, SAPbouiCOM.BoStatusBarMessageType.smt_Success);
                return(true);
            }
        }
Example #6
0
        internal static int UpdateCampo(string nomeTabela, string nomeCampo, int tamanho, BoYesNoEnum mandatory, string descricaoCampo, string valorPadrao, List <ValoresValidos> valoresValidos)
        {
            int intRetCode = -1;

            SAPbobsCOM.UserFieldsMD objUserFieldsMD = null;

            //instancia objeto para alterar campo
            objUserFieldsMD = (UserFieldsMD)B1AppDomain.Company.GetBusinessObject(SAPbobsCOM.BoObjectTypes.oUserFields);


            if (objUserFieldsMD.GetByKey(nomeTabela, idCampo(nomeCampo, nomeTabela)))
            {
                //seta propriedades
                objUserFieldsMD.EditSize     = tamanho;
                objUserFieldsMD.Mandatory    = mandatory;
                objUserFieldsMD.Description  = descricaoCampo;
                objUserFieldsMD.DefaultValue = valorPadrao;
                objUserFieldsMD.AddValidValues(valoresValidos);


                //Atualiza Campos campo
                intRetCode = objUserFieldsMD.Update();
                //verifica e retorna erro
                if (intRetCode != 0 && intRetCode != -2035)
                {
                    B1Exception.throwException("MetaData.CriaCampos: ", new Exception(B1AppDomain.Company.GetLastErrorDescription()));
                }
            }

            //mata objeto para reutilizar senao trava
            Marshal.FinalReleaseComObject(objUserFieldsMD);
            objUserFieldsMD = null;
            GC.Collect();

            return(intRetCode);
        }
        //Adiciona valor valido a campo de usuário
        public void fAdicionaValorValido(string cTabela, string cCampo, string Valor, string Descricao, TipoTabela cTipoTabela)
        {
            //TipoTabela: 0=user, 1=SAPB1
            string cTabelaAux = null;

            if (cTipoTabela == TipoTabela.tUSER)
            {
                cTabelaAux = "@" + cTabela;
            }
            else
            {
                cTabelaAux = cTabela;
            }
            bool valorExiste = false;
            int  campoID     = fFieldId(cTabelaAux, cCampo);

            if (fExisteValorValido(cTabelaAux, campoID, Valor))
            {
                valorExiste = true;
            }
            else
            {
                GC.Collect();
                SAPbobsCOM.UserFieldsMD objUserFieldsMD;
                objUserFieldsMD = oCompany.GetBusinessObject(SAPbobsCOM.BoObjectTypes.oUserFields);
                objUserFieldsMD.GetByKey(cTabelaAux, campoID);
                SAPbobsCOM.ValidValuesMD oValidValues;
                oValidValues = objUserFieldsMD.ValidValues;
                if (!valorExiste)
                {
                    if (oValidValues.Value != "")
                    {
                        oValidValues.Add();
                        oValidValues.SetCurrentLine(oValidValues.Count - 1);
                        oValidValues.Value       = Valor;
                        oValidValues.Description = Descricao;
                        CodErroDB = objUserFieldsMD.Update();
                    }
                    else
                    {
                        oValidValues.SetCurrentLine(oValidValues.Count - 1);
                        oValidValues.Value       = Valor;
                        oValidValues.Description = Descricao;
                        CodErroDB = objUserFieldsMD.Update();
                    }

                    if (CodErroDB != 0)
                    {
                        oCompany.GetLastError(out int CodErroDB, out string MsgErroDB);
                        // SBO_Application.StatusBar.SetText("Valor válido para o campo: [" + cCampo + "] da tabela [" + cTabela + "] reportado com erro! " + CodErroDB + " - " + MsgErroDB, SAPbouiCOM.BoMessageTime.bmt_Short, SAPbouiCOM.BoStatusBarMessageType.smt_Error);
                    }
                    else
                    {
                        // SBO_Application.StatusBar.SetText("Valor válido para o campo: [" + cCampo + "] da tabela [" + cTabela + "] criado com sucesso!", SAPbouiCOM.BoMessageTime.bmt_Short, SAPbouiCOM.BoStatusBarMessageType.smt_Success);
                    }
                }
                else
                {
                    CodErroDB = objUserFieldsMD.Update();
                    if (CodErroDB != 0)
                    {
                        oCompany.GetLastError(out int CodErroDB, out string MsgErroDB);
                        // SBO_Application.StatusBar.SetText("Valor válido para o campo: [" + cCampo + "] da tabela [" + cTabela + "] reportado com erro! " + CodErroDB.ToString() + " - " + MsgErroDB, SAPbouiCOM.BoMessageTime.bmt_Short, SAPbouiCOM.BoStatusBarMessageType.smt_Error);
                    }
                    else
                    {
                        // SBO_Application.StatusBar.SetText("Valor válido para o campo: [" + cCampo + "] da tabela [" + cTabela + "] atualziado com sucesso!", SAPbouiCOM.BoMessageTime.bmt_Short, SAPbouiCOM.BoStatusBarMessageType.smt_Success);
                    }
                }
            }
        }
        public void AddValidValueToUserField(string TableName, string FieldName, string Value, string Description, bool IsDefault)
        {
            SAPbobsCOM.UserFieldsMD oUserFieldsMD = ((SAPbobsCOM.UserFieldsMD)(SBOApp.Company.GetBusinessObject(SAPbobsCOM.BoObjectTypes.oUserFields)));
            bool bUpdate;

            Log.AppendFormat("Criação de Valor válido {0}.{1}: ", TableName, FieldName);

            string Sql = @" SELECT FieldId FROM CUFD WHERE TableID = '{0}' AND AliasID = '{1}' ";

            Sql = String.Format(Sql, TableName, FieldName.Replace("U_", ""));
            string FieldId = QueryForValue(Sql);

            bUpdate = oUserFieldsMD.GetByKey(TableName, Convert.ToInt32(FieldId));

            Sql = @" SELECT COUNT(1) FROM CUFD
                            INNER JOIN UFD1 
                                ON CUFD.TableID = UFD1.TableID 
                                AND CUFD.FieldID = UFD1.FieldID
                        WHERE CUFD.TableID = '{0}' 
                        AND CUFD.AliasID = '{1}' 
                        AND LEN(UFD1.FldValue) > 0 "; //AND UFD1.FldValue = '" + Value + "'";
            Sql = String.Format(Sql, TableName, FieldName.Replace("U_", ""));

            string ContaValoresValidos = QueryForValue(Sql);

            if (Convert.ToInt32(ContaValoresValidos) > 0)
            {
                Sql = @" SELECT UFD1.IndexID FROM CUFD
                            INNER JOIN UFD1 
                                ON CUFD.TableID = UFD1.TableID 
                                AND CUFD.FieldID = UFD1.FieldID
                         WHERE CUFD.TableID = '{0}' 
                         AND CUFD.AliasID = '{1}' 
                         AND UFD1.FldValue = '{2}'";
                Sql = String.Format(Sql, TableName, FieldName.Replace("U_", ""), Value);

                string IndexId = QueryForValue(Sql);

                if (IndexId == null)
                {
                    oUserFieldsMD.ValidValues.Add();
                }

                if (IndexId != null)
                {
                    oUserFieldsMD.ValidValues.SetCurrentLine(Convert.ToInt32(IndexId));
                }
            }

            oUserFieldsMD.ValidValues.Value       = Value;
            oUserFieldsMD.ValidValues.Description = Description;

            if (IsDefault)
            {
                oUserFieldsMD.DefaultValue = Value;
            }

            CodErro = oUserFieldsMD.Update();

            this.ValidateAction();

            Marshal.ReleaseComObject(oUserFieldsMD);
            oUserFieldsMD = null;
        }