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
<table name="admin_user_session" resource="default" engine="innodb">
<column xsi:type="varchar" length="30" name="ent_type" nullable="true" comment="Entity type eg QA Order Ship"/>
<column xsi:type="int" name="entity_id" nullable="true" unsigned="false"/>
<column xsi:type="varchar" length="255" name="action_url" nullable="true" comment="Action url eg multiship/quoteaddress/edit"/>
<column xsi:type="timestamp" name="terminated_at" nullable="true" comment="Session terminated at"/>
</table>
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.
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&qa_id=currentQaId
so that all sessions for that user and that QA are terminated.
