# 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 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 | ### 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. ## 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. ### Prerequisites - You need to have the Salesforce CLI installed on your system to follow the install directions. ### Installed 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 `sfdx force:source:convert -r ./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 `sfdx force:mdapi:deploy -u -f ./build/unpackaged.zip -w 30 --verbose` - Optionally, you can use the `-l RunLocalTests` option if installing into a production instance separately. 7. Once the deployment completes successfully, the components will be installed in your instance. ### Setup Steps