예제 #1
0
        private static void Main(string[] args)
        {
            try
            {
                SAPbouiCOM.Framework.Application oApp = null;
                if (args.Length < 1)
                {
                    oApp = new SAPbouiCOM.Framework.Application();
                }
                else
                {
                    oApp = new SAPbouiCOM.Framework.Application(args[0]);
                }

                #region Log

                string AddOn = AppDomain.CurrentDomain.FriendlyName.Replace(".exe", "");
                string User  = Environment.UserName + "." + Environment.UserDomainName;
                string PId   = System.Diagnostics.Process.GetCurrentProcess().Id.ToString();

                string Path = $"C:\\ProgramData\\SAP\\SAP Business One\\Log\\{AddOn}\\{User}";
                System.Threading.Tasks.Task.Run(() => CommonFunctions.DeleteOldLogFiles(Path));

                if (!Directory.Exists(Path))
                {
                    Directory.CreateDirectory(Path);
                }

                LogFile = $"{Path}\\{AddOn}.{DateTime.Now.ToString("yyyyMMdd_HH.mm.ss")}.pid{PId}.log.csv";

                #endregion Log

                sbo_application = SAPbouiCOM.Framework.Application.SBO_Application;
                sbo_company     = (SAPbobsCOM.Company)sbo_application.Company.GetDICompany();

#if DEBUG
                sbo_application.StatusBar.SetText(string.Format("{0} = {1}", DateTime.Now.ToString("yyyy-MM-dd hh:mm:ss"), "Conectando al SL"), SAPbouiCOM.BoMessageTime.bmt_Medium, SAPbouiCOM.BoStatusBarMessageType.smt_Warning);
#endif

                sessionId = sbo_application.Company.GetServiceLayerConnectionContext(ServiceLayer.Address);

#if DEBUG
                sbo_application.StatusBar.SetText(string.Format("{0} = {1}", DateTime.Now.ToString("yyyy-MM-dd hh:mm:ss"), "SL conectado"), SAPbouiCOM.BoMessageTime.bmt_Medium, SAPbouiCOM.BoStatusBarMessageType.smt_Warning);
#endif

                oNumberFormatInfo.NumberDecimalSeparator = sbo_company.GetCompanyService().GetAdminInfo().DecimalSeparator;
                oNumberFormatInfo.NumberGroupSeparator   = sbo_company.GetCompanyService().GetAdminInfo().ThousandsSeparator;

                RemoveMenus();
                AddMenuItems();

                sbo_application.MenuEvent += new SAPbouiCOM._IApplicationEvents_MenuEventEventHandler(SBO_Application_MenuEvent);

                sbo_application.AppEvent += new SAPbouiCOM._IApplicationEvents_AppEventEventHandler(SBO_Application_AppEvent);

                sbo_application.ItemEvent += new SAPbouiCOM._IApplicationEvents_ItemEventEventHandler(SBO_Application_ItemEvent);

                sbo_application.FormDataEvent += new SAPbouiCOM._IApplicationEvents_FormDataEventEventHandler(SBO_Application_FormDataEvent);

                sbo_application.ReportDataEvent += new SAPbouiCOM._IApplicationEvents_ReportDataEventEventHandler(SBO_Application_ReportDataEvent);

                sbo_application.PrintEvent += new SAPbouiCOM._IApplicationEvents_PrintEventEventHandler(SBO_Application_PrintEvent);

                sbo_application.RightClickEvent += new SAPbouiCOM._IApplicationEvents_RightClickEventEventHandler(SBO_Application_RightClickEvent);

                sbo_application.ProgressBarEvent += new SAPbouiCOM._IApplicationEvents_ProgressBarEventEventHandler(SBO_Application_ProgressBarEvent);

                sbo_application.StatusBar.SetText(string.Format("Revisando la estructura de la base de datos"), SAPbouiCOM.BoMessageTime.bmt_Short, SAPbouiCOM.BoStatusBarMessageType.smt_Warning);
                //System.Threading.Tasks.Task.Run(() => LoadUserTablesMDToXmlFile(AddonNamespace));
                //System.Threading.Tasks.Task.Run(() => LoadUserFieldMDToXmlFile(AddonNamespace));
                //System.Threading.Tasks.Task.Run(() => LoadUserObjectsMDToXmlFile(AddonNamespace));

                //try{LoadUserTablesMDFromXmlFile(UserTablesFile);} catch (Exception e) {sbo_application.StatusBar.SetText(e.Message,  SAPbouiCOM.BoMessageTime.bmt_Short, SAPbouiCOM.BoStatusBarMessageType.smt_Warning);}
                //try{LoadUserFieldMDFromXmlFile(UserFieldsFile);} catch (Exception e) {sbo_application.StatusBar.SetText(e.Message,  SAPbouiCOM.BoMessageTime.bmt_Short, SAPbouiCOM.BoStatusBarMessageType.smt_Warning);}
                //try{LoadUserObjectMDFromXmlFile(UserObjectsFile);} catch (Exception e) {sbo_application.StatusBar.SetText(e.Message,  SAPbouiCOM.BoMessageTime.bmt_Short, SAPbouiCOM.BoStatusBarMessageType.smt_Warning);}
                CommonFunctions.GET(ServiceLayer.ActivityLocations, null, null, sessionId, out _);

                sbo_application.StatusBar.SetText(string.Format("Revision completada"), SAPbouiCOM.BoMessageTime.bmt_Short, SAPbouiCOM.BoStatusBarMessageType.smt_Success);

                sbo_application.StatusBar.SetText($"Addon {AddOnName} conectado", SAPbouiCOM.BoMessageTime.bmt_Short, SAPbouiCOM.BoStatusBarMessageType.smt_Success);
#if DEBUG
                Console.WriteLine(string.Format("{0} = {1}", DateTime.Now.ToString("yyyy-MM-dd hh:mm:ss"), "Addon cargado"));
#endif
                oApp.Run();
            }
            catch (Exception ex)
            {
                System.Windows.Forms.MessageBox.Show(ex.Message);
            }
        }
예제 #2
0
        private static void Main(string[] args)
        {
            string AddOn = AppDomain.CurrentDomain.FriendlyName.Replace(".exe", "");
            string User  = Environment.UserName + "." + Environment.UserDomainName;
            string PId   = System.Diagnostics.Process.GetCurrentProcess().Id.ToString();

            string Path = $"C:\\ProgramData\\SAP\\SAP Business One\\Log\\{AddOn}\\{User}";

            LogFile = $"{Path}\\Addon.{DateTime.Now.ToString("yyyyMMdd_HH.mm.ss")}.pid{PId}.log.csv";

            try
            {
                if (!Directory.Exists(Path))
                {
                    Directory.CreateDirectory(Path);
                }

                System.Threading.Tasks.Task.Run(() => CommonFunctions.DeleteOldLogFiles(Path));

                SAPbouiCOM.Framework.Application oApp = null;
                if (args.Length < 1)
                {
                    oApp = new SAPbouiCOM.Framework.Application();
                }
                else
                {
                    oApp = new SAPbouiCOM.Framework.Application(args[0]);
                }

                sbo_application = SAPbouiCOM.Framework.Application.SBO_Application;
                sbo_company     = (SAPbobsCOM.Company)sbo_application.Company.GetDICompany();

                oNumberFormatInfo.NumberDecimalSeparator = sbo_company.GetCompanyService().GetAdminInfo().DecimalSeparator;
                oNumberFormatInfo.NumberGroupSeparator   = sbo_company.GetCompanyService().GetAdminInfo().ThousandsSeparator;

                RemoveMenus();
                AddMenuItems();

                sbo_application.MenuEvent += new SAPbouiCOM._IApplicationEvents_MenuEventEventHandler(SBO_Application_MenuEvent);

                sbo_application.AppEvent += new SAPbouiCOM._IApplicationEvents_AppEventEventHandler(SBO_Application_AppEvent);

                sbo_application.ItemEvent += new SAPbouiCOM._IApplicationEvents_ItemEventEventHandler(SBO_Application_ItemEvent);

                sbo_application.FormDataEvent += new SAPbouiCOM._IApplicationEvents_FormDataEventEventHandler(SBO_Application_FormDataEvent);

                sbo_application.ReportDataEvent += new SAPbouiCOM._IApplicationEvents_ReportDataEventEventHandler(SBO_Application_ReportDataEvent);

                sbo_application.PrintEvent += new SAPbouiCOM._IApplicationEvents_PrintEventEventHandler(SBO_Application_PrintEvent);

                sbo_application.RightClickEvent += new SAPbouiCOM._IApplicationEvents_RightClickEventEventHandler(SBO_Application_RightClickEvent);

                sbo_application.ProgressBarEvent += new SAPbouiCOM._IApplicationEvents_ProgressBarEventEventHandler(SBO_Application_ProgressBarEvent);

                sbo_application.StatusBar.SetText(string.Format("Revisando la estructura de la base de datos"), SAPbouiCOM.BoMessageTime.bmt_Short, SAPbouiCOM.BoStatusBarMessageType.smt_Warning);
                //System.Threading.Tasks.Task.Run(() => LoadUserTablesMDToXmlFile(AddonNamespace));
                //System.Threading.Tasks.Task.Run(() => LoadUserFieldMDToXmlFile(AddonNamespace));
                //System.Threading.Tasks.Task.Run(() => LoadUserObjectsMDToXmlFile(AddonNamespace));

                //try { LoadUserTablesMDFromXmlFile(UserTablesFile); } catch (Exception e) { sbo_application.StatusBar.SetText(e.Message, SAPbouiCOM.BoMessageTime.bmt_Short, SAPbouiCOM.BoStatusBarMessageType.smt_Warning); }
                //try { LoadUserFieldMDFromXmlFile(UserFieldsFile); } catch (Exception e) { sbo_application.StatusBar.SetText(e.Message, SAPbouiCOM.BoMessageTime.bmt_Short, SAPbouiCOM.BoStatusBarMessageType.smt_Warning); }
                //try { LoadUserObjectMDFromXmlFile(UserObjectsFile); } catch (Exception e) { sbo_application.StatusBar.SetText(e.Message, SAPbouiCOM.BoMessageTime.bmt_Short, SAPbouiCOM.BoStatusBarMessageType.smt_Warning); }
                sbo_application.StatusBar.SetText(string.Format("Revision completada"), SAPbouiCOM.BoMessageTime.bmt_Short, SAPbouiCOM.BoStatusBarMessageType.smt_Success);

                sbo_application.StatusBar.SetText($"Addon {AddOnName} conectado", SAPbouiCOM.BoMessageTime.bmt_Short, SAPbouiCOM.BoStatusBarMessageType.smt_Success);
#if DEBUG
                sbo_application.StatusBar.SetText(string.Format("{0} = {1}", DateTime.Now.ToString("yyyy-MM-dd hh:mm:ss"), "Conectando al SL"), SAPbouiCOM.BoMessageTime.bmt_Medium, SAPbouiCOM.BoStatusBarMessageType.smt_Warning);
#endif
                try
                {
                    sessionId = sbo_application.Company.GetServiceLayerConnectionContext(ServiceLayer.Address);
                }
                catch
                {
                    ShowInputDialog(ref UsrPass);
                    if (string.IsNullOrEmpty(UsrPass))
                    {
                        sbo_application.MessageBox("Debe ingresar su contraseña SAP, salga y vuelva a entrar");
                        Environment.Exit(0);
                    }

                    var log = new Login {
                        CompanyDB = sbo_company.CompanyDB, UserName = sbo_company.UserName, Password = UsrPass
                    };
                    sessionId = CommonFunctions.POST(ServiceLayer.Login, log, null, out System.Net.HttpStatusCode statusCode);
                    if (statusCode != System.Net.HttpStatusCode.OK)
                    {
                        sbo_application.MessageBox("Clave incorrecta, salga y vuelva a entrar");
                        Environment.Exit(0);
                    }
                }
#if DEBUG
                sbo_application.StatusBar.SetText(string.Format("{0} = {1}", DateTime.Now.ToString("yyyy-MM-dd hh:mm:ss"), "SL conectado"), SAPbouiCOM.BoMessageTime.bmt_Medium, SAPbouiCOM.BoStatusBarMessageType.smt_Warning);
#endif
                oApp.Run();
            }
            catch (Exception ex)
            {
                CommonFunctions.LogFile(LogFile, ex.Message);
                MessageBox.Show(ex.Message);
            }
        }