/// <inheritdoc/>
        public async Task <QBPriceLevelResponse <T> > SetPriceLevel <T>(string itemId, string priceLevelId, string editSequence, double newPrice)
        {
            await OpenConnection();

            IMsgSetRequest request = CreateRequest();

            IPriceLevelMod priceLevelRequest = request.AppendPriceLevelModRq();

            priceLevelRequest.ListID.SetValue(priceLevelId);
            priceLevelRequest.EditSequence.SetValue(editSequence);

            IPriceLevelPerItem itemRefRequest = priceLevelRequest.ORPriceLevel.PriceLevelPerItemCurrency.PriceLevelPerItemList.Append();

            itemRefRequest.ItemRef.ListID.SetValue(itemId);
            itemRefRequest.ORPriceLevelPrice.ORCustomPrice.ORORCustomPrice.CustomPrice.SetValue(newPrice);

            // TODO - parse this to make sure out updates was execute successfully and
            // if so then we want to merge this with our local instance of the item
            IMsgSetResponse queryResponse = await MakeRequestAsync(request).ConfigureAwait(false);

            CloseConnection();

            return(ProcessQueryAsXML <QBPriceLevelResponse <T> >(queryResponse, "PriceLevelModRs"));
        }