It is already out for signature with = escapeHtml($pending['contract_signature_sent_to_name']) ?> (= escapeHtml(contractSignatureState($pending)['when']) ?>). Sending it now withdraws that request= !empty($pending['contract_signature_client_signed_at']) ? ', signature and all' : '' ?>.
It was signed by both on = escapeHtml(date('M j, Y', strtotime(max($signed['contract_signature_client_signed_at'], $signed['contract_signature_agent_signed_at'])))) ?>. Sending it starts a new signing - that copy is kept.
Nothing fills in = escapeHtml(implode(', ', array_map(function ($word) { return "[$word]"; }, $unfilled))) ?> - it goes out as written. Edit the contract first to fill it in.
Who signs for = escapeHtml($contract['client_name']) ?>
$row) {
$has_email = filter_var((string) $row['contact_email'], FILTER_VALIDATE_EMAIL);
// Under their name: their title, and the address it goes to - one without an address can't be picked
$about = implode(' ยท ', array_filter([trim((string) $row['contact_title']), $has_email ? $row['contact_email'] : 'No email'])); ?>
= $has_email ? '' : ' disabled' ?>= selectOptionContact($client_id, $row['contact_name'], $row['contact_photo'], $about, $id) ?>>= escapeHtml($row['contact_name']) ?>
data-icon="fas fa-user-plus">Someone else - below
A note for them
They read it and sign it from the link in the email, or in the client portal - drawn or typed.
You countersign after; they get the PDF signed by both= $draft_start !== '' ? ', and the contract becomes active from ' . escapeHtml($draft_start) : '' ?>.
Changing the contract while it is out withdraws the request.