<?php
namespace QuickBooksOnline\API\Facades;

class CreditMemo{

    public static function create(array $data, $throwException = TRUE){
        if(!isset($data) || empty($data)) throw new \Exception("Passed array for creating CreditMemo is Empty");
        $CreditMemoObject = FacadeHelper::reflectArrayToObject("CreditMemo", $data, $throwException );
        return $CreditMemoObject;
    }

    /**
     * This is an immutable function
     */
    public static function update($objToUpdate, array $data){
        $classOfObj = get_class($objToUpdate);
        if(strcmp($classOfObj, FacadeHelper::simpleAppendClassNameSpace("CreditMemo")) != 0){
            throw new \Exception("Target object class:{" .  $classOfObj . "} is not an instace of CreditMemo.");
        }
        $newCreditMemoObj = CreditMemo::create($data);
        $clonedOfObj = FacadeHelper::cloneObj($objToUpdate);
        FacadeHelper::mergeObj($clonedOfObj, $newCreditMemoObj);
        return $clonedOfObj;
    }

}
