Customizations to SFDC services for E-Disty

### Background

Provide the ability for GitLab authorized resellers to leverage Distribution e-marketplaces (like Arrowsphere) to purchase GitLab subscriptions in order to accelerate channel business and enable low/no touch orders.

This will be accomplished by building an automated end-to-end solution where a partner can purchase GitLab from our authorized distributors using an e-marketplace and receive the product “immediately” after submitting their order. In doing so, ensure data is captured and tracked accurately through all relevant GitLab systems/applications (Salesforce, Zuora, CustomersDot, Stripe, etc.).

Issues in this epic are focused on building the new API endpoint to support:
- Customer creation
- Zuora Subscription creation
- Creation of SFDC Account, Opportunity, etc
- License provisioning

References:
- [E-Disty: Data mapping spreadsheet](https://docs.google.com/spreadsheets/d/138UqGiYfGc8A4HyBin6JrsRelmjfGbqvg3UZ0nJaLTU/edit#gid=0)
- [Disty E-Marketplace: Field Mapping by Ent Apps](https://docs.google.com/spreadsheets/d/1Ay6uhAcOhnuhh8-RGjYKkq_ytSUWOV-c5wqdhgQWaR8/edit#gid=0)

### Proposal

In https://gitlab.com/gitlab-org/customers-gitlab-com/-/issues/4079+, a new service was created that will create a customer (via `FindOrCreateCustomerService`) and a Zuora subscription (via `SubscriptionManagerService`).  These services must be customized to create these objects as desired for the E-Disty workflow.  For context, the `SubscriptionManagerService` is responsible for creating the SFDC account and other related objects [here](https://gitlab.com/gitlab-org/customers-gitlab-com/blob/49d0aeae5ed9b8066078bc8ab2ae31fd629eefcf/app/services/subscription_manager_service.rb#L67) by using the `Salesforce::CreateAccountWorker`.

In this issue, the `Salesforce::CreateAccountWorker` and related classes, may need to be modified to support creating a customer from an E-Disty marketplace (Arrowsphere) order.  The existing classes were built with the web-direct scenario in mind, but these may need to be extended to support E-Disty marketplace.  

We are still working on the data mapping between Platypus payload and SFDC so the details of the changes to these classes isn't known just yet.  This mapping will be added to [the data mapping spreadsheet](https://docs.google.com/spreadsheets/d/138UqGiYfGc8A4HyBin6JrsRelmjfGbqvg3UZ0nJaLTU/edit#gid=0).

## Field Changes
### Update (Logic Changes)
| Object      | Field Name  | API Name        | Field Type     | Web Direct Value    | Disty Value |
| ----------- | ----------- | --------------- | ------------- | ----- |----|
| Opportunity |  [Opportunity Name](https://gitlab.lightning.force.com/lightning/setup/ObjectManager/Opportunity/FieldsAndRelationships/Name/view)    | Name      | Text | "{customer.company} - Web Direct" | "{customer.company} - Channel Marketplace" |
| Opportunity |  [Web Portal Purchase ](https://gitlab.lightning.force.com/lightning/setup/ObjectManager/Opportunity/FieldsAndRelationships/00N6100000HJmTK/view)     |  Web_Portal_Purchase__c      | Checkbox | TRUE | FALSE |
| Opportunity | [Initial Source](https://gitlab.lightning.force.com/lightning/setup/ObjectManager/Opportunity/FieldsAndRelationships/LeadSource/view)  | LeadSource  | Picklist | "Web Direct" | "Channel Marketplace" |
| Contact    | [Initial Source](https://gitlab.lightning.force.com/lightning/setup/ObjectManager/Contact/FieldsAndRelationships/LeadSource/view) | LeadSource  | Picklist |  "Web Direct" | "Channel Marketplace" |

### Add (Net New Fields)
| Object      | Field Name  | API Name        | Field Type     | Value    |
| ----------- | ----------- | --------------- | ------------- | ----- |
| zqu__Quote__c | [Resale Partner](https://gitlab.lightning.force.com/lightning/setup/ObjectManager/zqu__Quote__c/FieldsAndRelationships/00N4M00000IbAzf/view) | Fulfillment_Partner__c | Lookup(Account) | ['tradingPartnerId'] |
| zqu__Quote__c | [Distributor](https://gitlab.lightning.force.com/lightning/setup/ObjectManager/01I61000001QLnw/FieldsAndRelationships/00N4M00000Ib2eI/view) | Distributor__c |  Lookup(Account) | `a0u4M000006IZCl` |
| Opportunity |  | Fulfillment_Partner__c | Lookup(Account) | ['tradingPartnerId'] |
| Opportunity |  | Fulfillment_Distributor__c |  Lookup(Account) | `a0u4M000006IZCl` |

**Update**: per [this comment](https://gitlab.com/gitlab-org/customers-gitlab-com/-/issues/4083#note_1009463714) we need 4 fields:

```
Opportunity.Fulfillment_Partner__c = zqu__Quote__c.Fulfillment_Partner__c;
Opportunity.Fulfillment_Distributor__c = zqu__Quote__c.Distributor__c;
```


<details><summary>Details</summary>

##### Update (i.e. adjust current integration)
- [`Contact.leadsource`](https://gitlab.com/gitlab-org/customers-gitlab-com/blob/6ab621a3b33a3e6a6524aaf4c40a7df666561399/app/services/create_salesforce_account_service.rb#L75): Needs to be set as `"Channel Marketplace"`.  This is hardcoded as `"Web Direct"` currently.
- [`Opportunity.LeadSource`](https://gitlab.com/gitlab-org/customers-gitlab-com/blob/67dde2e92dae40c539fe25c8e99f4c0fc96c4a2e/app/services/salesforce/create_opportunity_service.rb#L106): Needs to be set as `"Channel Marketplace"`.  This is hardcoded as `"Web Direct"` currently.
- [`Opportunity.Name`](https://gitlab.com/gitlab-org/customers-gitlab-com/blob/e4d71682774ce95d9c565c4dd56f5f28ff2fd002/app/services/salesforce/create_opportunity_objects_service.rb#L97): Needs to be updated to `"#{customer.company} - Channel Marketplace"`. 
- `Opportunity.Web_Portal_Purchase__c` ([reference 1](https://gitlab.com/gitlab-org/customers-gitlab-com/blob/67dde2e92dae40c539fe25c8e99f4c0fc96c4a2e/app/services/salesforce/create_opportunity_service.rb#L107) and [reference 2](https://gitlab.com/gitlab-org/customers-gitlab-com/blob/869764e69d2e69119afa811632b7cbe81eb20027/app/services/salesforce/close_opportunity_service.rb#L52)): These references should likely be updated to set the value as `false` for the E-Disty context. 


##### Add (i.e. does not exist in current integration)
- `Opportunity.Fulfillment_Partner__c` and `zqu__Quote__c.Fulfillment_Partner__c`: These fields are not currently set for web direct, but is requested for E-Disty.  The value should be set as SFDC ID of the Reseller ($['tradingPartnerId'] in data mapping sheet.
- `Opportunity.Fulfillment_Distributor__c` and `zqu__Quote__c.Distributor__c`: These fields are not currently set for web direct, but is requested for E-Disty.  The value should be set as `~~a0u4M000006IZCl~~` which is the SFDC ID of the relevant Arrow account, who will be the distributor for all orders.
   - **2022.07.04 Update**: The "standard Account" should be used and not the Billing Account. So the value for `fulfillmentDistributor` should be `0014M00001pePen` for both Staging and Production

</details>

Story points: 5.0