Exemplo n.º 1
0
        public static void CargarBusquedasFormateadas()
        {
            try
            {
                String Query        = String.Empty;
                String CategoryName = "Consultas Addon Recepcion DTE Proveedores";
                Int32  CategoryID   = 0;
                SAPbobsCOM.QueryCategories oCategory = Conexion_SBO.m_oCompany.GetBusinessObject(BoObjectTypes.oQueryCategories);
                oCategory.Name = CategoryName;
                Int32 ret = oCategory.Add();

                switch (Conexion_SBO.m_oCompany.DbServerType)
                {
                case SAPbobsCOM.BoDataServerTypes.dst_HANADB:
                    Query = "SELECT \"CategoryId\" FROM OQCN WHERE \"CatName\" = '" + CategoryName + "'";
                    break;

                default:
                    Query = "SELECT CategoryId FROM OQCN WHERE CatName = '" + CategoryName + "'";
                    break;
                }


                SAPbobsCOM.Recordset oRecordSet = Conexion_SBO.m_oCompany.GetBusinessObject(BoObjectTypes.BoRecordset);
                oRecordSet.DoQuery(Query);

                if (!oRecordSet.EoF)
                {
                    CategoryID = Convert.ToInt32(oRecordSet.Fields.Item(0).Value);
                }

                SAPbobsCOM.UserQueries oQuery = Conexion_SBO.m_oCompany.GetBusinessObject(BoObjectTypes.oUserQueries);
                oQuery.QueryCategory    = CategoryID;
                oQuery.QueryDescription = "Trae Dimension 1";

                switch (Conexion_SBO.m_oCompany.DbServerType)
                {
                case SAPbobsCOM.BoDataServerTypes.dst_HANADB:
                    oQuery.Query = "Select \"PrcCode\", \"PrcName\" from OPRC where \"DimCode\"= 1 and \"Active\" = 'Y' and \"PrcCode\" NOT IN ('Stelle_Z')";
                    break;

                default:
                    oQuery.Query = "Select PrcCode, PrcName from OPRC where DimCode= 1 and Active = 'Y' and PrcCode NOT IN ('Stelle_Z')";
                    break;
                }

                oQuery.QueryType = UserQueryTypeEnum.uqtWizard;
                oQuery.Add();

                oQuery = Conexion_SBO.m_oCompany.GetBusinessObject(BoObjectTypes.oUserQueries);
                oQuery.QueryCategory    = CategoryID;
                oQuery.QueryDescription = "Trae Dimension 2";

                switch (Conexion_SBO.m_oCompany.DbServerType)
                {
                case SAPbobsCOM.BoDataServerTypes.dst_HANADB:
                    oQuery.Query = "Select \"PrcCode\", \"PrcName\" from OPRC where \"DimCode\"= 2 and \"Active\" = 'Y' and \"PrcCode\" NOT IN ('Stelle_2')";
                    break;

                default:
                    oQuery.Query = "Select PrcCode, PrcName from OPRC where DimCode= 2 and Active = 'Y' and PrcCode NOT IN ('Stelle_2')";
                    break;
                }

                oQuery.QueryType = UserQueryTypeEnum.uqtWizard;
                oQuery.Add();

                oQuery = Conexion_SBO.m_oCompany.GetBusinessObject(BoObjectTypes.oUserQueries);
                oQuery.QueryCategory    = CategoryID;
                oQuery.QueryDescription = "Trae Dimension 3";

                switch (Conexion_SBO.m_oCompany.DbServerType)
                {
                case SAPbobsCOM.BoDataServerTypes.dst_HANADB:
                    oQuery.Query = "Select \"PrcCode\", \"PrcName\" from OPRC where \"DimCode\"= 3 and \"Active\" = 'Y' and \"PrcCode\" NOT IN ('Stelle_3')";
                    break;

                default:
                    oQuery.Query = "Select PrcCode, PrcName FROM OPRC where DimCode = 3 and Active = 'Y' and PrcCode NOT IN ('Stelle_3')";
                    break;
                }

                oQuery.QueryType = UserQueryTypeEnum.uqtWizard;
                oQuery.Add();

                oQuery = Conexion_SBO.m_oCompany.GetBusinessObject(BoObjectTypes.oUserQueries);
                oQuery.QueryCategory    = CategoryID;
                oQuery.QueryDescription = "Trae Dimension 4";

                switch (Conexion_SBO.m_oCompany.DbServerType)
                {
                case SAPbobsCOM.BoDataServerTypes.dst_HANADB:
                    oQuery.Query = "Select \"PrcCode\", \"PrcName\" from OPRC where \"DimCode\"= 4 and \"Active\" = 'Y' and \"PrcCode\" NOT IN ('Stelle_4')";
                    break;

                default:
                    oQuery.Query = "Select PrcCode, PrcName FROM OPRC where DimCode = 4 and Active = 'Y' and PrcCode NOT IN ('Stelle_4')";
                    break;
                }

                oQuery.QueryType = UserQueryTypeEnum.uqtWizard;
                oQuery.Add();

                oQuery = Conexion_SBO.m_oCompany.GetBusinessObject(BoObjectTypes.oUserQueries);
                oQuery.QueryCategory    = CategoryID;
                oQuery.QueryDescription = "Trae Dimension 5";

                switch (Conexion_SBO.m_oCompany.DbServerType)
                {
                case SAPbobsCOM.BoDataServerTypes.dst_HANADB:
                    oQuery.Query = "Select \"PrcCode\", \"PrcName\" from OPRC where \"DimCode\"= 5 and \"Active\" = 'Y' and \"PrcCode\" NOT IN ('Stelle_5')";
                    break;

                default:
                    oQuery.Query = "Select PrcCode, PrcName FROM OPRC where DimCode = 5 and Active = 'Y' and PrcCode NOT IN ('Stelle_5')";
                    break;
                }

                oQuery.QueryType = UserQueryTypeEnum.uqtWizard;
                oQuery.Add();

                oQuery = Conexion_SBO.m_oCompany.GetBusinessObject(BoObjectTypes.oUserQueries);
                oQuery.QueryCategory    = CategoryID;
                oQuery.QueryDescription = "Trae Cuenta Contable";

                switch (Conexion_SBO.m_oCompany.DbServerType)
                {
                case SAPbobsCOM.BoDataServerTypes.dst_HANADB:
                    oQuery.Query = "Select \"AcctCode\", \"AcctName\" from OACT order by \"AcctCode\"";
                    break;

                default:
                    oQuery.Query = "Select AcctCode, AcctName FROM OACT order by AcctCode";
                    break;
                }

                oQuery.QueryType = UserQueryTypeEnum.uqtWizard;
                oQuery.Add();

                Int32  QueryID   = 0;
                String QueryName = "Trae Dimension 1";

                switch (Conexion_SBO.m_oCompany.DbServerType)
                {
                case SAPbobsCOM.BoDataServerTypes.dst_HANADB:
                    Query = "SELECT \"IntrnalKey\" FROM OUQR WHERE \"QName\" = '" + QueryName + "' and \"QCategory\" = " + CategoryID + "";
                    break;

                default:
                    Query = "SELECT IntrnalKey FROM OUQR WHERE QName = '" + QueryName + "' and QCategory = " + CategoryID + "";
                    break;
                }

                oRecordSet = null;
                oRecordSet = Conexion_SBO.m_oCompany.GetBusinessObject(BoObjectTypes.BoRecordset);

                oRecordSet.DoQuery(Query);

                if (!oRecordSet.EoF)
                {
                    QueryID = Convert.ToInt32(oRecordSet.Fields.Item(0).Value);
                }

                SAPbobsCOM.FormattedSearches oFtts = null;
                oFtts = Conexion_SBO.m_oCompany.GetBusinessObject(BoObjectTypes.oFormattedSearches);

                oFtts.Action       = BoFormattedSearchActionEnum.bofsaQuery;
                oFtts.FormID       = "SEI_DAT";
                oFtts.ItemID       = "Item_0";
                oFtts.ColumnID     = "col_Esp";
                oFtts.QueryID      = QueryID;
                oFtts.ByField      = BoYesNoEnum.tNO;
                oFtts.ForceRefresh = BoYesNoEnum.tNO;
                oFtts.Refresh      = BoYesNoEnum.tNO;
                oFtts.Add();

                QueryID   = 0;
                QueryName = "Trae Dimension 2";

                switch (Conexion_SBO.m_oCompany.DbServerType)
                {
                case SAPbobsCOM.BoDataServerTypes.dst_HANADB:
                    Query = "SELECT \"IntrnalKey\" FROM OUQR WHERE \"QName\" = '" + QueryName + "' and \"QCategory\" = " + CategoryID + "";
                    break;

                default:
                    Query = "SELECT IntrnalKey FROM OUQR WHERE QName = '" + QueryName + "' and QCategory = " + CategoryID + "";
                    break;
                }

                oRecordSet = null;
                oRecordSet = Conexion_SBO.m_oCompany.GetBusinessObject(BoObjectTypes.BoRecordset);

                oRecordSet.DoQuery(Query);

                if (!oRecordSet.EoF)
                {
                    QueryID = Convert.ToInt32(oRecordSet.Fields.Item(0).Value);
                }

                oFtts = null;
                oFtts = Conexion_SBO.m_oCompany.GetBusinessObject(BoObjectTypes.oFormattedSearches);

                oFtts.Action       = BoFormattedSearchActionEnum.bofsaQuery;
                oFtts.FormID       = "SEI_DAT";
                oFtts.ItemID       = "Item_0";
                oFtts.ColumnID     = "col_Var";
                oFtts.QueryID      = QueryID;
                oFtts.ByField      = BoYesNoEnum.tNO;
                oFtts.ForceRefresh = BoYesNoEnum.tNO;
                oFtts.Refresh      = BoYesNoEnum.tNO;
                oFtts.Add();

                QueryID   = 0;
                QueryName = "Trae Dimension 3";

                switch (Conexion_SBO.m_oCompany.DbServerType)
                {
                case SAPbobsCOM.BoDataServerTypes.dst_HANADB:
                    Query = "SELECT \"IntrnalKey\" FROM OUQR WHERE \"QName\" = '" + QueryName + "' and \"QCategory\" = " + CategoryID + "";
                    break;

                default:
                    Query = "SELECT IntrnalKey FROM OUQR WHERE QName = '" + QueryName + "' and QCategory = " + CategoryID + "";
                    break;
                }

                oRecordSet = null;
                oRecordSet = Conexion_SBO.m_oCompany.GetBusinessObject(BoObjectTypes.BoRecordset);

                oRecordSet.DoQuery(Query);

                if (!oRecordSet.EoF)
                {
                    QueryID = Convert.ToInt32(oRecordSet.Fields.Item(0).Value);
                }

                oFtts = null;
                oFtts = Conexion_SBO.m_oCompany.GetBusinessObject(BoObjectTypes.oFormattedSearches);

                oFtts.Action       = BoFormattedSearchActionEnum.bofsaQuery;
                oFtts.FormID       = "SEI_DAT";
                oFtts.ItemID       = "Item_0";
                oFtts.ColumnID     = "col_Cat";
                oFtts.QueryID      = QueryID;
                oFtts.ByField      = BoYesNoEnum.tNO;
                oFtts.ForceRefresh = BoYesNoEnum.tNO;
                oFtts.Refresh      = BoYesNoEnum.tNO;
                oFtts.Add();

                QueryID   = 0;
                QueryName = "Trae Dimension 4";

                switch (Conexion_SBO.m_oCompany.DbServerType)
                {
                case SAPbobsCOM.BoDataServerTypes.dst_HANADB:
                    Query = "SELECT \"IntrnalKey\" FROM OUQR WHERE \"QName\" = '" + QueryName + "' and \"QCategory\" = " + CategoryID + "";
                    break;

                default:
                    Query = "SELECT IntrnalKey FROM OUQR WHERE QName = '" + QueryName + "' and QCategory = " + CategoryID + "";
                    break;
                }

                oRecordSet = null;
                oRecordSet = Conexion_SBO.m_oCompany.GetBusinessObject(BoObjectTypes.BoRecordset);

                oRecordSet.DoQuery(Query);

                if (!oRecordSet.EoF)
                {
                    QueryID = Convert.ToInt32(oRecordSet.Fields.Item(0).Value);
                }

                oFtts = null;
                oFtts = Conexion_SBO.m_oCompany.GetBusinessObject(BoObjectTypes.oFormattedSearches);

                oFtts.Action       = BoFormattedSearchActionEnum.bofsaQuery;
                oFtts.FormID       = "SEI_DAT";
                oFtts.ItemID       = "Item_0";
                oFtts.ColumnID     = "col_Catpa";
                oFtts.QueryID      = QueryID;
                oFtts.ByField      = BoYesNoEnum.tNO;
                oFtts.ForceRefresh = BoYesNoEnum.tNO;
                oFtts.Refresh      = BoYesNoEnum.tNO;
                oFtts.Add();

                QueryID   = 0;
                QueryName = "Trae Dimension 5";

                switch (Conexion_SBO.m_oCompany.DbServerType)
                {
                case SAPbobsCOM.BoDataServerTypes.dst_HANADB:
                    Query = "SELECT \"IntrnalKey\" FROM OUQR WHERE \"QName\" = '" + QueryName + "' and \"QCategory\" = " + CategoryID + "";
                    break;

                default:
                    Query = "SELECT IntrnalKey FROM OUQR WHERE QName = '" + QueryName + "' and QCategory = " + CategoryID + "";
                    break;
                }

                oRecordSet = null;
                oRecordSet = Conexion_SBO.m_oCompany.GetBusinessObject(BoObjectTypes.BoRecordset);

                oRecordSet.DoQuery(Query);

                if (!oRecordSet.EoF)
                {
                    QueryID = Convert.ToInt32(oRecordSet.Fields.Item(0).Value);
                }

                oFtts = null;
                oFtts = Conexion_SBO.m_oCompany.GetBusinessObject(BoObjectTypes.oFormattedSearches);

                oFtts.Action       = BoFormattedSearchActionEnum.bofsaQuery;
                oFtts.FormID       = "SEI_DAT";
                oFtts.ItemID       = "Item_0";
                oFtts.ColumnID     = "col_Rolp";
                oFtts.QueryID      = QueryID;
                oFtts.ByField      = BoYesNoEnum.tNO;
                oFtts.ForceRefresh = BoYesNoEnum.tNO;
                oFtts.Refresh      = BoYesNoEnum.tNO;
                oFtts.Add();

                QueryID   = 0;
                QueryName = "Trae Cuenta Contable";

                switch (Conexion_SBO.m_oCompany.DbServerType)
                {
                case SAPbobsCOM.BoDataServerTypes.dst_HANADB:
                    Query = "SELECT \"IntrnalKey\" FROM OUQR WHERE \"QName\" = '" + QueryName + "' and \"QCategory\" = " + CategoryID + "";
                    break;

                default:
                    Query = "SELECT IntrnalKey FROM OUQR WHERE QName = '" + QueryName + "' and QCategory = " + CategoryID + "";
                    break;
                }

                oRecordSet = null;
                oRecordSet = Conexion_SBO.m_oCompany.GetBusinessObject(BoObjectTypes.BoRecordset);

                oRecordSet.DoQuery(Query);

                if (!oRecordSet.EoF)
                {
                    QueryID = Convert.ToInt32(oRecordSet.Fields.Item(0).Value);
                }

                oFtts = null;
                oFtts = Conexion_SBO.m_oCompany.GetBusinessObject(BoObjectTypes.oFormattedSearches);

                oFtts.Action       = BoFormattedSearchActionEnum.bofsaQuery;
                oFtts.FormID       = "SEI_DAT";
                oFtts.ItemID       = "Item_0";
                oFtts.ColumnID     = "col_Cta";
                oFtts.QueryID      = QueryID;
                oFtts.ByField      = BoYesNoEnum.tNO;
                oFtts.ForceRefresh = BoYesNoEnum.tNO;
                oFtts.Refresh      = BoYesNoEnum.tNO;
                oFtts.Add();
            }
            catch (Exception ex)
            {
                String err = ex.Message;
            }
        }
        /// <summary>
        /// Seta o FormattedSearch no campo desejado
        /// </summary>
        /// <param name="QueryName">Nome da Query</param>
        /// <param name="TheQuery">Query</param>
        /// <param name="FormID">ID do form</param>
        /// <param name="ItemID">ID do item</param>
        /// <param name="ColID">ID da coluna (Default -1)</param>
        /// <returns></returns>
        public bool AssignFormattedSearch(string QueryName, string TheQuery, string FormID, string ItemID, string ColID = "-1")
        {
            bool functionReturnValue = false;

            functionReturnValue = false;

            SAPbobsCOM.Recordset         oRS = (Recordset)SBOApp.Company.GetBusinessObject(BoObjectTypes.BoRecordset);
            SAPbobsCOM.FormattedSearches oFS = (FormattedSearches)SBOApp.Company.GetBusinessObject(BoObjectTypes.oFormattedSearches);

            try
            {
                string sql = @"SELECT * FROM CSHS T0
	                        INNER JOIN OUQR T1
		                        ON T0.QueryId = T1.IntrnalKey
	                        WHERE T0.FormID = '{0}' 
	                        AND T0.ItemId	= '{1}' 
	                        AND T0.ColID	= '{2}' "    ;

                sql = SBOApp.TranslateToHana(sql);
                oRS.DoQuery(String.Format(sql, FormID, ItemID, ColID));
                if (oRS.RecordCount == 0)
                {
                    int QueryID;
                    QueryID      = CreateQuery(QueryName, TheQuery);
                    oFS.Action   = BoFormattedSearchActionEnum.bofsaQuery;
                    oFS.FormID   = FormID;
                    oFS.ItemID   = ItemID;
                    oFS.ColumnID = ColID;
                    oFS.QueryID  = QueryID;
                    oFS.FieldID  = ItemID;
                    if (ColID == "-1")
                    {
                        oFS.ByField = BoYesNoEnum.tYES;
                    }
                    else
                    {
                        oFS.ByField = BoYesNoEnum.tNO;
                    }

                    long lRetCode = oFS.Add();
                    if (lRetCode == -2035)
                    {
                        sql = SBOApp.TranslateToHana(sql);
                        oRS.DoQuery("SELECT TOP 1 T0.IndexID FROM [dbo].[CSHS] T0 WHERE T0.FormID='" + FormID + "' AND T0.ItemId='" + ItemID + "' AND T0.ColID='" + ColID + "'");

                        if (oRS.RecordCount > 0)
                        {
                            oFS.GetByKey((int)oRS.Fields.Item(0).Value);
                            oFS.Action   = BoFormattedSearchActionEnum.bofsaQuery;
                            oFS.FormID   = FormID;
                            oFS.ItemID   = ItemID;
                            oFS.ColumnID = ColID;
                            oFS.QueryID  = QueryID;
                            oFS.FieldID  = ItemID;
                            if (ColID == "-1")
                            {
                                oFS.ByField = BoYesNoEnum.tYES;
                            }
                            else
                            {
                                oFS.ByField = BoYesNoEnum.tNO;
                            }
                            lRetCode = oFS.Update();
                        }
                    }
                    if (lRetCode != 0)
                    {
                        throw new Exception(String.Format("Erro ao criar query {0}: {1}", QueryName, SBOApp.Company.GetLastErrorDescription()));
                    }
                }

                functionReturnValue = true;
            }
            catch
            {
                throw new Exception(String.Format("Erro ao criar query {0}: {1}", QueryName, SBOApp.Company.GetLastErrorDescription()));
            }
            finally
            {
                System.Runtime.InteropServices.Marshal.ReleaseComObject(oRS);
                oRS = null;
                System.Runtime.InteropServices.Marshal.ReleaseComObject(oFS);
                oFS = null;
                GC.Collect();
            }
            return(functionReturnValue);
        }