def book_transfer(self, asset_manager_id, asset_id, source_book_id, target_book_id, wash_book_id, quantity, price,<EOL>currency):
url = '<STR_LIT>' % (self.endpoint, asset_manager_id)<EOL>body = {'<STR_LIT>': asset_id, '<STR_LIT>': source_book_id, '<STR_LIT>': target_book_id,<EOL>'<STR_LIT>': wash_book_id, '<STR_LIT>': quantity, '<STR_LIT>': price, '<STR_LIT>': currency}<EOL>response = self.session.post(url, data=json.dumps(body, default=json_handler), headers=self.json_header)<EOL>if response.ok:<EOL><INDENT>deliver_json, receive_json = response.json()<EOL>return json_to_transaction(deliver_json), json_to_transaction(receive_json),<EOL><DEDENT>else:<EOL><INDENT>self.logger.error(response.text)<EOL>response.raise_for_status()<EOL><DEDENT>
A method for moving between books.  The convention is always *from* the source, *to* the target.

Two transactions are booked -  one against each

:param asset_manager_id: The owning asset manager id.
:param asset_id: The asset being transferred.
:param source_book_id: The book id of the source.
:param target_book_id:  The book id of the target.
:param wash_book_id:  The book id of the wash book which will be the counterparty for the two sides.
:param quantity: The quantity to transfer.
:param price:  The price at which to make the transfer.  Typically T-1 EOD price or current market price.
:param currency: The currency for the transfer price.
:return: