Invoice item created in inconsistent order causes mismatch in few SalesForce object attributes

<!-- Please complete the template below as best as you can. Make sure to check if this issue has already been raised by someone else first to avoid duplication. 

For each section below, please add screenshots or links or anything that may help visual learners understand the problem better, even if this takes you an extra minute or two this is a great help to some folks.

https://www.learning-styles-online.com/style/visual-spatial/

-->

### Problem

**Context**:

When upgrading a subscription from `Premium` to `Ultimate` plan (for example), there are two invoice items generated:

1. Remove Premium plan
2. Add Ultimate plan

In Zuora staging environment, the order in which the invoice items generated are different for Amend and Orders API:

- When using Amend API: `Remove Premium plan`, `Add Ultimate plan`
- When using Orders API: `Add Ultimate plan`, `Remove Premium plan`

The order of Order actions is: `RemoveProduct`, `AddProduct` (see example [Order object](https://test.zuora.com/apps/newlogin.do?retURL=/orders#/view/O-00150386))

**Problem statement**:

When creating SalesForce objects, a [single Quote Rate Plan](https://gitlab.com/gitlab-org/customers-gitlab-com/-/blob/4beb9cee77c7b495c0bd9e3f543599c919beaadf/app/services/salesforce/create_quote_objects_service.rb#L168) is created for an invoice (based on the first invoice item).

The order of the invoice items therefore becomes significant, as it causes [`zqu__ProductRatePlan__c`](https://gitlab.com/gitlab-org/customers-gitlab-com/-/blob/a83ed49dff1dc0dddce7105d26af4244fbf0de72/app/services/salesforce/create_quote_rate_plan_service.rb#L80) and [`zqu__ProductRatePlanZuoraId__c`](https://gitlab.com/gitlab-org/customers-gitlab-com/-/blob/a83ed49dff1dc0dddce7105d26af4244fbf0de72/app/services/salesforce/create_quote_rate_plan_service.rb#L81) attributes to be different in both cases.

In the case of Amend API, `zqu__ProductRatePlanZuoraId__c` is associated with Premium Plan, while in Orders API it is associated with Ultimate Plan.

This [spreadsheet](https://docs.google.com/spreadsheets/d/1ltJBcLwOau3-95CuHCwlXiZP200XkCqdeKtdpoYNUBI/edit?usp=drive_web&ouid=113070913643997337994) documents the comparison.
In the case of sandbox environment, I observed the order of the invoice items to be the same (see [spreadsheet, tab 1](https://docs.google.com/spreadsheets/d/1mydR5iZd4709tLkKRal30vE3Xad1dsxGOzCwhiwB7HQ/edit)).

The scope of this issue is to understand:

- Should a single Quote Rate Plan OR multiple Quote Rate Plans (one for each invoice item) be created
- Based on the answer to the above question, if a single Quote Rate Plan needs to be created, should it be created for `RemoveProduct` or `AddProduct` or if it does not have a significance.

Related Slack conversation: https://gitlab.slack.com/archives/C043J3R2L9F/p1668494901620589

### Proposal

<!-- Consult with `@gitlab-com/business-technology/enterprise-apps/zuora-architects` on the ~"Enterprise Applications" team if Zuora business logic is involved. -->

Summarizing the [comment](https://gitlab.com/gitlab-org/customers-gitlab-com/-/issues/5193#note_1179678115), the following changes need to be applied when creating objects using Orders API:

1. Based on SalesForce package, for each order action type, 1 Quote Amendment, 1 Quote Rate Plan and 1 Quote Rate Plan Charge needs to be created. This approach will also resolve the inconsistent order detailed in this issue.

   In the existing Amend API workflow, 1 Quote Amendment is created for each amendment type. For every invoice, 1 Quote Rate Plan is created, and for every invoice item, 1 Quote Rate Plan Charge is created. No change to be made in this workflow.

1. Additionally, charge summary needs to be created for each amendment type. Given this is not currently created in Amend API, created https://gitlab.com/gitlab-org/customers-gitlab-com/-/issues/5211 to follow-up on the requirement.

1. `Amendment.Id` and `Amendment.Name` is `nil` in the case of Orders API. @sbaranidharan to confirm if these attributes can be determined from any other object in Zuora.

   -> The Zuora team mentioned the values will be `nil` since we have orders harmonization enabled.

### Result

With the above approach, the problem stated in this issue is resolved as we create Quote Rate plan for every order action type and are no longer dependent on the order of order action types.

### Next steps (if any)

### How will we measure success?

Story points: 2.0