anchor.diff:  	ProdOfferPrice = {"productOfferingPrice", {array, [ProdOfferPrice1, ProdOfferPrice2]}},
   	[ProdName, ProdDescirption, IsBundle, IsCustomerVisible, ValidFor, ProdSpec, Status, ProdOfferPrice].
   
  -update_product_description(SslSock, RestPort, ProdID, Description, Etag) ->
  -	RestUser = ct:get_config(rest_user),
  -	RestPass = ct:get_config(rest_pass),
  -	Encodekey = base64:encode_to_string(string:concat(RestUser ++ ":", RestPass)),
  -	AuthKey = "Basic " ++ Encodekey,
  -	ContentType = "application/json-patch+json",
  -	JSON = {array, [product_description(Description)]},
  -	Body = lists:flatten(mochijson:encode(JSON)),
  -	{Headers, Response} = patch_request(SslSock, RestPort, ContentType, Etag, AuthKey, ProdID, Body),
  -	<<"HTTP/1.1 200", _/binary>> = Headers,
  -	{struct, Object} = mochijson:decode(Response),
  -	case lists:keyfind("description", 1, Object) of
  -		{_, Description} ->
  -			ok;
  -		_ ->
  -			{error, patch_pafiled}
  -	end.
  -
  -update_product_status(SslSock, RestPort, ProdID, Status, Etag) ->
  -	RestUser = ct:get_config(rest_user),
  -	RestPass = ct:get_config(rest_pass),
  -	Encodekey = base64:encode_to_string(string:concat(RestUser ++ ":", RestPass)),
  -	AuthKey = "Basic " ++ Encodekey,
  -	ContentType = "application/json-patch+json",
  -	JSON = {array, [product_status(Status)]},
  -	Body = lists:flatten(mochijson:encode(JSON)),
  -	{Headers, Response} = patch_request(SslSock, RestPort, ContentType, Etag, AuthKey, ProdID, Body),
  -	<<"HTTP/1.1 200", _/binary>> = Headers,
  -	{struct, Object} = mochijson:decode(Response),
  -	case lists:keyfind("lifecycleStatus", 1, Object) of
  -		{_, Status} ->
  -			ok;
  -		_ ->
  -			{error, patch_pafiled}
  -	end.
  -
  -update_product_price(SslSock, RestPort, ProdID, Etag) ->
  -	RestUser = ct:get_config(rest_user),
  -	RestPass = ct:get_config(rest_pass),
  -	Encodekey = base64:encode_to_string(string:concat(RestUser ++ ":", RestPass)),
  -	AuthKey = "Basic " ++ Encodekey,
  -	ContentType = "application/json-patch+json",
  -	PPN = "FamilyPack Mega",
  -	Des = "Update Family pack",
  -	RCP = "daily",
  -	UFM = "100b",
  -	PrT = "one_time",
  -	AltDes = "Alter Description Updated",
  -	AltNam = "usage123",
  -	AltPrT = "one_time",
  -	AltUFM = "100m",
  -	Index = 0,
  -	JSON = {array, [prod_price_name(Index, PPN),
  -				prod_price_description(Index, Des),
  -				prod_price_rc_period(Index, RCP),
  -				prod_price_ufm(Index, UFM),
  -				prod_price_type(Index, PrT),
  -				pp_alter_description(Index, AltDes),
  -				pp_alter_name(Index, AltNam),
  -				pp_alter_type(Index, AltPrT),
  -				pp_alter_ufm(Index, AltUFM)]},
  -	Body = lists:flatten(mochijson:encode(JSON)),
  -	{Headers, Response} = patch_request(SslSock, RestPort, ContentType, Etag, AuthKey, ProdID, Body),
  -	<<"HTTP/1.1 200", _/binary>> = Headers,
  -	{struct, Object} = mochijson:decode(Response),
  -	{_, {array, Prices}} = lists:keyfind("productOfferingPrice", 1, Object),
  -	{struct, Price} = lists:nth(Index + 1, lists:reverse(Prices)),
  -	{_, PPN} = lists:keyfind("name", 1, Price),
  -	{_, Des} = lists:keyfind("description", 1, Price),
  -	{_, RCP} = lists:keyfind("recurringChargePeriod", 1, Price),
  -	{_, UFM} = lists:keyfind("unitOfMeasure", 1, Price),
  -	{_, PrT} = lists:keyfind("priceType", 1, Price),
  -	{_, {struct, Alter}} = lists:keyfind("productOfferPriceAlteration", 1, Price),
  -	{_, AltDes} = lists:keyfind("description", 1, Alter),
  -	{_, AltNam} = lists:keyfind("name", 1, Alter),
  -	{_, AltPrT} = lists:keyfind("priceType", 1, Alter),
  -	{_, AltUFM} = lists:keyfind("unitOfMeasure", 1, Alter),
  -	ok.
  -
   patch_request(SslSock, Port, ContentType, Etag, AuthKey, ProdID, ReqBody) when is_list(ReqBody) ->
   	BinBody = list_to_binary(ReqBody),
   	patch_request(SslSock, Port, ContentType, Etag, AuthKey, ProdID, BinBody);
  
positive.code: 	ContentType = "application/json",
  	RestUser = ct:get_config(rest_user),
  	RestPass = ct:get_config(rest_pass),
  	Encodekey = base64:encode_to_string(string:concat(RestUser ++ ":", RestPass)),
  	AuthKey = "Basic " ++ Encodekey,
  	Authorization = {"authorization", AuthKey},
  
negative.code: 	Value = {"value", ProdID},
  	{struct, [Op, Path, Value]}.
  
  product_description() ->
  	Description = ocs:generate_password(),
  	Op = {"op", "replace"},
  	Path = {"path", "/description"},
  	Value = {"value", Description},
  	{struct, [Op, Path, Value]}.
  
  product_status() ->
  	Status = "In Design", 
  	Op = {"op", "replace"},
  	Path = {"path", "/lifecycleStatus"},
  	Value = {"value", Status},
  	{struct, [Op, Path, Value]}.
  
  prod_price_name() ->
  	Name = ocs:generate_password(),
  	Op = {"op", "replace"},
  	Path = {"path", "/productOfferingPrice/1/name"},
  	Value = {"value", Name},
  	{struct, [Op, Path, Value]}.
  
  prod_price_description() ->
  	Description = ocs:generate_password(),
  	Op = {"op", "replace"},
  	Path = {"path", "/productOfferingPrice/1/description"},
  	Value = {"value", Description},
  	{struct, [Op, Path, Value]}.
  
  prod_price_rc_period() ->
  	Period = "yearly",
  	Op = {"op", "add"},
  	Path = {"path", "/productOfferingPrice/1/recurringChargePeriod"},
  	Value = {"value", Period},
  	{struct, [Op, Path, Value]}.
  
  prod_price_ufm() ->
  	UFM = "10000b",
  	Op = {"op", "replace"},
  	Path = {"path", "/productOfferingPrice/1/unitOfMeasure"},
  	Value = {"value", UFM},
  	{struct, [Op, Path, Value]}.
  
  prod_price_type() ->
  	PT = "recurring",
  	Op = {"op", "replace"},
  	Path = {"path", "/productOfferingPrice/1/priceType"},
  	Value = {"value", PT},
  	{struct, [Op, Path, Value]}.
  
  pp_alter_name() ->
  	Name = ocs:generate_password(),
  	Op = {"op", "replace"},
  	Path = {"path", "/productOfferingPrice/1/productOfferPriceAlteration/name"},
  	Value = {"value", Name},
  	{struct, [Op, Path, Value]}.
  
  pp_alter_description() ->
  	Description = ocs:generate_password(),
  	Op = {"op", "replace"},
  	Path = {"path", "/productOfferingPrice/1/productOfferPriceAlteration/description"},
  	Value = {"value", Description},
  	{struct, [Op, Path, Value]}.
  
  pp_alter_type() ->
  	PT = "recurring",
  	Op = {"op", "replace"},
  	Path = {"path", "/productOfferingPrice/1/productOfferPriceAlteration/priceType"},
  	Value = {"value", PT},
  	{struct, [Op, Path, Value]}.
  
  pp_alter_ufm() ->
  	UFM = "1000b",
  	Op = {"op", "replace"},
  	Path = {"path", "/productOfferingPrice/1/productOfferPriceAlteration/unitOfMeasure"},
  	Value = {"value", UFM},
  	{struct, [Op, Path, Value]}.
  
  