text: sap.ui.define([
  	"sap/ui/core/format/NumberFormat"
  ], function (NumberFormat) {
  	"use strict";
  
  	var mStatusState = {
  		"A": "Success",
  		"O": "Warning",
  		"D": "Error"
  	};
  
  	var formatter = {
  		/**
  		 * Formats the price
  		 * @param {string} sValue model price value
  		 * @return {string} formatted price
  		 */
  		price: function (sValue) {
  			var numberFormat = NumberFormat.getFloatInstance({
  				maxFractionDigits: 2,
  				minFractionDigits: 2,
  				groupingEnabled: true,
  				groupingSeparator: ".",
  				decimalSeparator: ","
  			});
  			return numberFormat.format(sValue);
  		},
  
  		/**
  		 * Sums up the price for all products in the cart
  		 * @param {object} oCartEntries current cart entries
  		 * @return {string} string with the total value
  		 */
  		totalPrice: function (oCartEntries) {
  			var oBundle = this.getResourceBundle(),
  				fTotalPrice = 0;
  
  			Object.keys(oCartEntries).forEach(function (sProductId) {
  				var oProduct = oCartEntries[sProductId];
  				fTotalPrice += parseFloat(oProduct.Price) * oProduct.Quantity;
  			});
  
  			return oBundle.getText("cartTotalPrice", [formatter.price(fTotalPrice)]);
  		},
  
  		/**
  		 * Returns the status text based on the product status
  		 * @param {string} sStatus product status
  		 * @return {string} the corresponding text if found or the original value
  		 */
  		statusText: function (sStatus) {
  			var oBundle = this.getResourceBundle();
  
  			var mStatusText = {
  				"A": oBundle.getText("statusA"),
  				"O": oBundle.getText("statusO"),
  				"D": oBundle.getText("statusD")
  			};
  
  			return mStatusText[sStatus] || sStatus;
  		},
  
  		/**
  		 * Returns the product state based on the status
  		 * @param {string} sStatus product status
  		 * @return {string} the state text
  		 */
  		statusState: function (sStatus) {
  			return mStatusState[sStatus] || "None";
  		},
  
  		/**
  		 * Returns the relative URL to a product picture
  		 * @param {string} sUrl image URL
  		 * @return {string} relative image URL
  		 */
  		pictureUrl: function (sUrl) {
  			if (sUrl){
  				return  sap.ui.require.toUrl(sUrl);
  			} else {
  				return undefined;
  			}
  		},
  
  		/**
  		 * Checks if one of the collections contains items.
  		 * @param {object} oCollection1 First array or object to check
  		 * @param {object} oCollection2 Second array or object to check
  		 * @return {boolean} true if one of the collections is not empty, otherwise - false.
  		 */
  		hasItems: function (oCollection1, oCollection2) {
  			var bCollection1Filled = !!(oCollection1 && Object.keys(oCollection1).length),
  				bCollection2Filled = !!(oCollection2 && Object.keys(oCollection2).length);
  
  			return bCollection1Filled || bCollection2Filled;
  		}
  	};
  
  	return formatter;
  });