anchor.diff:  %%% See the License for the specific language governing permissions and
   %%% limitations under the License.
   %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  -%%% 
  +%%%
   
   -type offer_status() :: in_study | in_design | in_test
   		| active | rejected | launched | retired | obsolete.
  
positive.code: 		default :: non_neg_integer() | undefined}).
  
  -record(offer,
  		{name :: '_' | string() | undefined,
  		description :: '_' | string() | undefined,
  		start_date :: '_' | pos_integer() | undefined,
  		end_date :: '_' | pos_integer() | undefined,
  		status :: offer_status() | '_' | undefined,
  		specification :: '_' | string() | undefined,
  		bundle = [] :: '_' | [#bundled_po{}],
  		price = [] :: '_' | [#price{}],
  		char_value_use = [] :: '_' | [#char_value_use{}],
  		last_modified :: tuple() | '_' | undefined}).
  
  -record(bucket,
  		{id :: string() | undefined,
  		name :: string() | undefined,
  		start_date :: pos_integer() | undefined,
  		end_date :: pos_integer() | undefined,
  		status :: bucket_status() | undefined,
  		remain_amount = 0 :: integer(),
  		reservations = [] :: [{TS :: pos_integer(),
  				DebitAmount :: non_neg_integer(),
  				ReservedAmount :: non_neg_integer(),
  				SessionId :: string() | binary()}],
  		units :: octets | cents | seconds | messages | undefined,
  		prices = [] :: list(), 
  		product :: [ProdRef :: term()],
  		last_modified :: tuple() | undefined}).
  
  -record(product,
  		{id :: string() | undefined,
  		name :: string() | undefined,
  		start_date :: pos_integer() | undefined,
  		end_date :: pos_integer() | undefined,
  		status :: product_status() | undefined,
  		product :: string() | undefined,
  		characteristics = [] :: [{Name :: string(), Value :: term()}],
  		payment = [] :: [{Price :: string(), DueDate :: pos_integer()}],
  		balance = [] :: [BucketRef :: term()],
  		service = [] :: [ServiceRef :: binary()],
  		last_modified :: tuple() | undefined}).
  
  -record(service,
  		{name :: binary() | undefined,
  		start_date :: pos_integer() | undefined,
  		end_date :: pos_integer() | undefined,
  		state :: service_status() | undefined,
  		password :: binary() | undefined,
  		attributes :: [tuple()] | undefined,
  		product :: ProductRef :: string() | undefined,
  		enabled = true :: boolean(),
  		disconnect  = false :: boolean(),
  		session_attributes = [] :: [{TS :: pos_integer(), Attributes :: [tuple()]}],
  		characteristics = [] :: [{Name :: string(), Value :: term()}],
  		multisession = false :: boolean(),
  		last_modified :: tuple() | undefined}).
  
  -record(pla,
  		{name :: string() | undefined,
  
negative.code: 		| cancelled | active | suspended | pending_terminate | terminated.
  -type service_status() :: feasibilityChecked | designed | reserved
  		| active | inactive | terminated.
  -type pla_status() :: created | active | cancelled | terminated.
  -type product_price_type() :: recurring | one_time | usage | tariff.
  -type unit_of_measure() :: octets | cents | seconds | messages.
  -type recur_period() :: hourly | daily | weekly | monthly | yearly.
  