We have an existing project that includes customizations to SO101000 and SO301000. I am trying to publish the AmazonIntegration2017Dec project and I get an error indicating a conflict on SO301000. I assume SO101000 would also conflict. Is there an easy way to override the conflict? How do I publish two different projects that customize the same base forms?
Related
I have two customization projects in Acumatica 2020R2. I need to reference a DAC from one of the customization projects in another customization project. The Acumatica instance that has one of the customization projects may or may not have both customization projects published.
For instance, a graph in one customization project may need to reference the VendorRebate DAC that was created in another customization project to check if a customer has a rebate for a particular inventory item before setting a price.
Is there a way to reference the DAC without having to include the DAC in both customization projects?
Also, is there a way to check if the Acumatica instance has the necessary customization project published (besides using conditional compilation)?
Is there a way to reference the DAC without having to include the DAC in both customization projects?
First of all, if the projects are ever going to be published together you should never create duplicate DAC definitions. This can lead to crashes at runtime. It doesn't matter that the DAC are identical. Acumatica Framework will not be able to resolve the conflicts properly in all scenarios for identical types. This typically results in error can't cast object of type X to object of type Y.
Also, is there a way to check if the Acumatica instance has the necessary customization project published (besides using conditional compilation)?
Use the 'Validate Customization Project' action from the customization Publish menu. Unless you dynamically load DLL references you won't be able to publish.
The Acumatica instance that has one of the customization projects may or may not have both customization projects published.
To reference a type it has to be published, otherwise it is just inaccessible.
The most common option for your use case is to create a third customization project/DLL that contains the shared types.
Otherwise you can try to conditionally deactivate feature using the IsActive property.
DAC IsActive reference:
https://help-2021r1.acumatica.com/Help?ScreenId=ShowWiki&pageid=9ca4cca5-a46c-4dda-af09-8cb8b0793c34
Graph IsActive reference:
https://help-2021r1.acumatica.com/Help?ScreenId=ShowWiki&pageid=cd70b408-b389-4bd8-8502-3d9c12b11112
To load the referenced type only when it exists you would need to put it in a DLL first and load this DLL dynamically at runtime: https://stackoverflow.com/a/18362459/7376238
I am evaluating Redmine, and I wonder if there is any advantage to Categories over Custom Fields?
Indeed, Categories can't be shared between projects so far and it's a strong drawback for me.
I have the feelings categories are only useful if one needs different categories between projects.
In other words, it's a project property instead of a tracker property like custom fields.
I am missing something here?
Thanks you!
In Redmine, Category is a standard field used by trackers and has different values defined for each project in the project 'configuration' tab.
Category values cannot be shared nor inherited in Redmine projects.
This is some serious drawback which is discussed by the community. A patch is available to customize Redmine, but it targets an old version of the application.
An alternate solution is to create a custom field, say Cat, which would be used as a category. That Cat field can be used by any project with any tracker.
It also means that the Cat values are shared for all projects which can be pointless if you have a 'cooking' and a 'mechanics' projects...
There are two solutions to deal with it :
Create a Cat custom field for each project, but the name of the custom field has to be unique
Use the Custom Values Per Project plugin to limit available Cat values for each project, which can be a pain i you have lots of projects
You can even possibly use a combination of those two !
That is the only solution I have found so far.
I am very new to Sitecore, and have to customize a Template for a MultiLine Entry to have different source (List of Items) depending on the Role of the Logged-In Admin. For example the site can have multiple different Admins and each one can add/remove data for a of the page section, so
The content for MultiList of Website-1 (Edited by Admin-1) will be different from Website-2(Edited by Admin-2). So the data for Admin-1 and Admin-2 is at the following locations:
Admin-1: sitecore/content/Data/Features/Admin-1
Admin-2: sitecore/content/Data/Features/Admin-2
Now for the Source part of the Template, I can enter the path for the data: ex-/sitecore/content/Data/Features/ and that will include all of the Items in that folder including both subfolders of "Admin-1" and "Admin-2", but what I really want is when the Admin-1 logs I want the list to be populated only with "Admin-1" content, and vice versa. Is that even possible? I am not sure what to do about that.
Ok, your question was a little ambiguous hence the reason I asked the question.
your data structure is currently a little incorrect in my opinion. I would set it up as follows:
-sitecore
--content
---common (shared between both sites)
---site-1
----home
----settings
----data
---site-2
----home
----settings
----data
Now in your template set the datasource as:
query:./ancestor-or-self::*[##templatename='Site']/data/features/*
This will restrict the options for your multilist to only items in the data folder of the current site. Obviously change ##templatename to whatever yours is.
As for the permissions, you should create 2 roles, Admin-1 and Admin-2. For both roles break the inheritance on /sitecore/content node and then give Admin-1 read/write/create/delete access on /sitecore/content/site-1 and Admin-2 the same on Site-2. Make sure you do this for roles. Then add the necessary users to those roles. If a specific user needs access to both sites then add them to both roles. Use /Security Tools/Security Editor.
I would not call the roles "admin" since that can lead to confusion between the Sitecore Admin setting. Instead, I would call it "Site1ContentEditer" and "Site2ContentEditer". If you introduce workflow this gives you the opportunity to follow the naming convention, e.g. Site1ContentApprover, Site1ContentPublisher etc.
I'm a little rushed right now, but let me know if you need more info.
EDIT: This should give you more info on multisite implementation: Building multisite solutions in Sitecore
I am trying to figure out general guidelines for arranging views/templates in a django project with multiple apps so that the apps remain fairly re-usable.
For specific example:
I have a django project with three main apps:
- accounts: That manages user account related stuff
- reports: That generates reports
- courses: That manages course contents
I also have a \templates directory in the project, and have three directories under it corresponding to each of the three apps. This breakdown works well for me on pages that deal with individual app elements.
However, there are views and pages where I need to show information collected from all three apps. For example, I might want to show an overview page with the User payment status (accounts), his past reports(reports) and his current course(course).
I understand that apps must be kept as independent as possible. What are the guidelines for place views/templates that do not clearly belong to one app but import from different apps? Should I create a project-specific app just to hold these views/templates?
It depends on how re-usable you need to make these shared templates. I often just put these sorts of templates into a "shared" directory. Sometimes I'll have a "shared" that applies to the entire project, and sometimes I'll have one that is shared within an app. It just depends on what works best for you.
I am using EMF to allow users to create instances of a particular type of model.
An instance of a model can have 0-* Things but I'd like to be able to predefine the available Things that the user can add to the instance so that they can't just create their own.
How would I go about creating the Things using the ecore model?
If a Thing was just a String then it would be fine - I could use Enums. But a Thing is a type of it's own and consists of other stuff (like a name, version etc.) and I don't know how to give a predefined set of these to the user to choose.
Any ideas?
You have the possibility to use constraints or *EOperation*s.
For a better usability you should use a own dialog implementation. An example of a own implementation with given choices you can find here:
How can I control which instances are available as choices when editing a property in the properties view?
You should also implement a own property source to support the properties editor:
Recipe: Create your own property editor in a generated application