josegomez / epicor-editor Goto Github PK
View Code? Open in Web Editor NEWExternal Customization Editor
License: GNU General Public License v2.0
External Customization Editor
License: GNU General Public License v2.0
Putting this out as an issue, but I will help out with a PR. Here is the scenario - we have a big project where lots of devs from various companies are working on customizations so we have set up a company-specific GitHub repository to track everything. Initially when I set up the repository for them I gitignored everything but Script.cs and the customization XML files but later put those back in so that users freshly checking out the repository could still run the customizations. The challenge is that if developer A has her Epicor Customizations folder setup differently in the extension settings than developer B, developer B will get some invalid path issues when he goes to work on a customization because the paths get baked into CustomizationInfo.json:
The suggestion for this reported issue is that we replace the various spots in the extensions where values are derived from CustomizationInfo.json to the extension settings. For example:
VS Code extension line 89 currently:
argsAry.push(String(customSettings.Folder));
VS Code extension line 89 proposed:
argsAry.push(config.get("epicor.customizationfolder"));
In a multi-developer environment it would be ideal if the data sorted in CustomizationInfo.json was base bones with any environmental settings (client location, user credentials, etc) stored in settings.
If you make changes in VS, then forget to save the project before clicking the edit/run button , there is no way to get back to what you were doing, and the changes will get blown away when you close the Epicor session that is created. To test it, put some comments in VS, then don't save, then hit the edit/run button. The save as window will pop up behind, but even if you save the customization, the previously save version is already loaded into epicor, so your changes are lost.
I would suggest a check of the save status in VS before the uploading to Epicor so there can be a graceful cancel, (don't open Epicor), save the project before opening, or continute without saving.
Add ability to see if VS Code or Epicor has the newer version of a Customization (along with date?) and to allow user to select which one will overwrite the other.
Add ability (toolbox button/dropdown?) for the user to select a Company/Plant
Related to #1
But also Get an exception. If you cancel before clicking ok to the customization.
See the end of this message for details on invoking
just-in-time (JIT) debugging instead of this dialog box.
************** Exception Text **************
System.NullReferenceException: Object reference not set to an instance of an object.
at Ice.Lib.Framework.EpiViewUtils.OnUpdate(EpiTransaction trans, EpiDataView view, IEpiAdapterLink link, Boolean displayExceptions)
at Ice.Lib.Framework.EpiSingleViewTransaction.OnUpdate()
at Erp.UI.App.AbcCodeEntry.AbcCodeForm.OnClosing(CancelEventArgs e)
at System.Windows.Forms.Form.CheckCloseDialog(Boolean closingOnly)
************** JIT Debugging **************
To enable just-in-time (JIT) debugging, the .config file for this
application or computer (machine.config) must have the
jitDebugging value set in the system.windows.forms section.
The application must also be compiled with debugging
enabled.
For example:
When JIT debugging is enabled, any unhandled exception
will be sent to the JIT debugger registered on the computer
rather than be handled by this dialog box.
Installed the extension and configured but the 'Epicor Customization (OPEN)' does nothing instead of spawning a form.
I can't go on to complete the setup.
No error or warning is throw
Attempting to use the Test option on a customization on ABC Maintenance threw the following exception.
Title of the Dialog was Error during loading themes.
Application Error
Exception caught in: mscorlib
Message: startIndex cannot be larger than length of string.
Parameter name: startIndex
Program: CommonLanguageRuntimeLibrary
Method: Substring
Client form opens correctly with the customization.
Looks like the reference to "ms-vscode.csharp" is now broken for new installs. I believe it should point to "ms-dotnettools.csharp"
Are you able to edit code in debug mode?
We're about to migrate in July to Epicor 10.2.400 if you are able to add the helper library that will be awsome!
Thanks for your good work.
Hi Jose, I want to Know if you have the extension for version 10.1.400?
Sorry for my english.
Hi,
When I open a customization, the "Customization/Personalization Search" window appears and it has "Base Extension" as an option in the type. Selecting this and searching gives the correct list of BE's.
When I select one to open it downloads the correct xml but when I look in the script.cs file it only has the starting script for a customization with the Initialize and Destroy custom code methods and not the code from the script for the Base Extension.
Regards
Ren
Hello Jose,
I think what you've developed is a great tool and I would really like to use it more. I ran into an issue where VSCode isn't able to initialize "Epicor Customization Editor" because it depends on an extension that no longer exists:
Simply because "ms-vscode-csharp" was renamed to "ms-dotnettools.csharp"... Could you release an update?
I tried comparing the past updates but was unable to get it working with 2023.4. If someone can point me in the right direction, I may be able to complete this myself and open a Pull request. Thanks.
More of a feature request than an issue. We have DLLs that are targeted at greater framework versions than 4.6.1 in some of our customizations. As the assemblies are being retrieved for a particular customization, could the targetframework version in the csproj file be set based on those assemblies. I can change it manually, but I have to do it after every download or resync.
Any chance of adding the Process calling button to the Toolbox?
Just tried to open the RMAForm print screen customization I just made, and it doesn't seem to pull in the project. I'm trying to do this inside of Visual Studio and not VSCode.
Jose,
This is an incredible piece of work. I am working with a team that has had repeated issues of developers stepping on each others toes causing work to get lost using the old "save as another name while you are working on it" approach. I have presented the idea of using this approach for all customization maintenance and everybody is pretty excited about the idea. I think the only challenge I've had a bit of difficulty getting my head around centers around how doing a 'Edit / View' actually updates the customization within Epicor while the developer might still be working on it. Here was some notes I scrapped together for them on a possible approach:
So it was mentioned in the introduction that we no longer need to rely on customization naming as our versioning logic for Epicor. It is better to keep common, consistent names so that the full history of code changes are documented within GitHub. I am very open to suggestions here keeping in mind the primary objectives:
The commit history for a customization should remain intact (changing customization names can cause a problem here).
The loss of work is the primary concern that brought us into this conversation in the first place - that should be prioritized above all else.
Developers should not have to perform an undue amount of work to publish a version of code that includes enhancements made by others.
Testers should not have to jump through unreasonable hoops to test their work but should also be shielded from “in progress” work.
So to that end, the recommendation would be that all screens to be customized have three customizations against them - one named exactly the same as the screen itself (i.e. JobEntry), another named as the screen and suffixed with a “_Dev” (i.e. JobEntry_Dev) and the final having a “_Test” suffix (i.e. JobEntry_Test). All developers will work against the “_Dev” customization and it will be that customization that will hold all source commit history for the screen. When a “_Dev” customization is stable and ready to be tested it will overwrite the “_Test” version which will have a special testing menu for the testers to access. Upon tester approval the “_Test” customization will overwrite the version without any prefix.
Under the scenario developer conflicts will certainly occur and mindful use of both source control and frequent syncs will prevent any loss of work. In the case where a developer encounters the message regarding a newer customization present that will be their trigger to perform the simple steps to merge:
Commit the current code to GitHub assuming it is of committable quality. If it is not to that stage currently the developer can create a branch and commit to that instead.
Use the download function to allow the other developers code to get pulled in.
Compare the differences using to what is committed in GitHub to perform an effective merge.
What I am wondering is whether it would be feasible to change the behavior of 'Edit / View' to not overwrite the actual customization but instead create a temporary customization that is run and then deleted?
It appears that the Environment parameter does persist, if you check the remember credentials, however it does not retain the remember credentials or the SSO boxes as checked or the user credential fields (not sure if you would want the Username and Password to persist if not SSO).
This is an image of the Login form opening the second time after selecting the environment, SSO and Remember Credentials.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.