Files
smartclone/README.md
T
2025-04-25 17:14:12 -04:00

60 lines
3.8 KiB
Markdown

# Smart Clone - Opportunity Cloner
The purpose of the Smart Clone is to provide the user with the functionality to clone an opportunity, but with added
benefits.
- The ability to select only fields that need to be edited during the cloning
- The ability to select fields that must be cleared of their original value
- The ability to clone other child objects than just Opportunity Products
- The ability to exclude certain records from the clone based on formula evaluation of record info
The Project consists of the following components:
| Item | Description |
| ---- | ----------- |
| OpportunityCloneService | Apex class that contains the Apex functionality |
| OpporutnityCloneserviceTest | Code coverage and unit test class |
| TestCloneUtility | Utilities used in the Code coverage and unit test class |
| SmartCloneChildList custom label | Custom Label used as a setting to store semi-colon separated list of child objects to select from |
| opportunityCustomClone | Lightning web component that is the visual interface |
| OppCustomCloneAura | Aura Lightning Component that is used to wire to a QuickAction |
| Opportunity.SmartClone QuickAction | The QuickAction button to use on the Opportunity Detail Layout |
| Opportunity.ClonedFields fieldset | the fieldet used to configure displayable and cleared fields for input |
| SmartCloneRecordExclusionRule__mdt | Custom Metadata Type that can hold exclusion rules to evaluate to exclude records from clone |
### Additional Notes
- This application currently will not support the cloning of a hierarchy of children. This means it is only designed to support
the cloning of direct children to the Opportunity, and the Opportunity itself
- This application will not support RecordType as a field to be edited/updated during the clone.
### Prerequisites
- You need to have the Salesforce CLI installed on your system to follow the install directions.
### Install Steps
1. Clone this repository to your local filesystem.
2. Navigate to the directory created from the clone.
3. Create a 'build' folder in the directory of this cloned repository
4. Convert the project into deployable Metadata API format using the following command `sf project convert source --root-dir ./force-app/main/default -d ./build/unpackaged/`
5. Zip the 'unpackaged' directory located in the 'build' folder.
6. Deploy the zip file into your instance using the following command `sf project deploy start --target-org <yourinstancealias> --metadata-dir ./build/unpackaged.zip --wait 30 --verbose`
- Optionally, you can use the `--test-level RunLocalTests` option if installing into a production instance separately.
7. Once the deployment completes successfully, the components will be installed in your instance.
## Setup
1. Setup List of Opportunity Fields to include in the Cloning process.
- Create a Fieldset named 'ClonedFields'. This fieldset will need to contain the fields to clone on the Opportunity.
- Place fields that need to be cloned in the 'ClonedFields' fieldset
2. Create Action for SmartClone
- Navigate to the Opportunity Object and click on 'Buttons, Links, and Actions'. Click the 'New Action' button.
- *Action Type*: 'Lightning Web Component', *Lightning Web Component*:'c:opportunityCustomClone', *Label*: **Your Choice**, *Name*:**Your Choice**
- Save Action Button
- Navigate to the proper layout and place the Action Button on the Layout.
3. Create Exclusion Rules for SmartClone
- Navigate to Custom Metadata Types and location the 'SmartClone Exclusion Rule' type.
- create a new Record.
- select a child object of the Opportunity
- write the formula as you would a validation rule. If it is true, the record is excluded. You can only use fields from the record itself.
- make sure to check the 'Active' checkbox so that the rule is active.