# Quote Address

Quote Address is used for both Single-Ship and Multi-Ship

In Frans, most business logic are stored in quote\_address

####   
  
Custom feature 1: Multiple users editing the same QA:  
  


In Frans, there's a custom code to track admin user's sessions.   
Extension: Frans/OrderProcessing

\## Warning if multiple users open a same QA:  
11/3/24: This plugin adds new columns in table `admin\_user\_session`  
to track QA edit activity  
  
&lt;table name="admin\_user\_session" resource="default" engine="innodb"&gt;  
 &lt;column xsi:type="varchar" length="30" name="ent\_type" nullable="true" comment="Entity type eg QA Order Ship"/&gt;  
 &lt;column xsi:type="int" name="entity\_id" nullable="true" unsigned="false"/&gt;  
 &lt;column xsi:type="varchar" length="255" name="action\_url" nullable="true" comment="Action url eg multiship/quoteaddress/edit"/&gt;  
 &lt;column xsi:type="timestamp" name="terminated\_at" nullable="true" comment="Session terminated at"/&gt;  
 &lt;/table&gt;

  
When admin user enters the edit QA page; in app/code/Frans/MultiShip/Controller/Adminhtml/QuoteAddress/AbstractQuoteAddress.php  
in \_afterLoadObject , we call addAdminUserSession to add a new admin\_user\_session to the db.

[![image.png](https://frdocs.socalappsolutions.com/uploads/images/gallery/2024-11/scaled-1680-/NrBimage.png)](https://frdocs.socalappsolutions.com/uploads/images/gallery/2024-11/NrBimage.png)

When the admin user clicks the `Back` button; javascript at app/code/Frans/MultiShip/view/adminhtml/web/js/frans-quote-address.js  
makes an Ajax call to /orderProcessing/adminsession/update?terminated=1&amp;qa\_id=currentQaId  
so that all sessions for that user and that QA are terminated.