feat: lisätiedot-kenttä asiakasyhteyksiin (kytkin, IP, VLAN yms.)
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
5
api.php
5
api.php
@@ -597,10 +597,11 @@ function parseLiittymat(array $input): array {
|
|||||||
'hinta' => floatval($l['hinta'] ?? 0),
|
'hinta' => floatval($l['hinta'] ?? 0),
|
||||||
'sopimuskausi' => trim($l['sopimuskausi'] ?? ''),
|
'sopimuskausi' => trim($l['sopimuskausi'] ?? ''),
|
||||||
'alkupvm' => trim($l['alkupvm'] ?? ''),
|
'alkupvm' => trim($l['alkupvm'] ?? ''),
|
||||||
|
'lisatiedot' => trim($l['lisatiedot'] ?? ''),
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
if (empty($liittymat)) {
|
if (empty($liittymat)) {
|
||||||
$liittymat[] = ['asennusosoite' => '', 'postinumero' => '', 'kaupunki' => '', 'liittymanopeus' => '', 'hinta' => 0, 'sopimuskausi' => '', 'alkupvm' => ''];
|
$liittymat[] = ['asennusosoite' => '', 'postinumero' => '', 'kaupunki' => '', 'liittymanopeus' => '', 'hinta' => 0, 'sopimuskausi' => '', 'alkupvm' => '', 'lisatiedot' => ''];
|
||||||
}
|
}
|
||||||
return $liittymat;
|
return $liittymat;
|
||||||
}
|
}
|
||||||
@@ -1559,7 +1560,7 @@ switch ($action) {
|
|||||||
'elaskuvalittaja' => '',
|
'elaskuvalittaja' => '',
|
||||||
'ytunnus' => '',
|
'ytunnus' => '',
|
||||||
'lisatiedot' => $lead['muistiinpanot'] ?? '',
|
'lisatiedot' => $lead['muistiinpanot'] ?? '',
|
||||||
'liittymat' => [['asennusosoite' => $lead['osoite'] ?? '', 'postinumero' => '', 'kaupunki' => $lead['kaupunki'] ?? '', 'liittymanopeus' => '', 'hinta' => 0, 'sopimuskausi' => '', 'alkupvm' => '']],
|
'liittymat' => [['asennusosoite' => $lead['osoite'] ?? '', 'postinumero' => '', 'kaupunki' => $lead['kaupunki'] ?? '', 'liittymanopeus' => '', 'hinta' => 0, 'sopimuskausi' => '', 'alkupvm' => '', 'lisatiedot' => '']],
|
||||||
'luotu' => date('Y-m-d H:i:s'),
|
'luotu' => date('Y-m-d H:i:s'),
|
||||||
];
|
];
|
||||||
dbSaveCustomer($companyId, $customer);
|
dbSaveCustomer($companyId, $customer);
|
||||||
|
|||||||
7
db.php
7
db.php
@@ -408,6 +408,7 @@ function initDatabase(): void {
|
|||||||
"ALTER TABLE customers ADD COLUMN priority_emails TEXT DEFAULT '' AFTER lisatiedot",
|
"ALTER TABLE customers ADD COLUMN priority_emails TEXT DEFAULT '' AFTER lisatiedot",
|
||||||
"ALTER TABLE companies ADD COLUMN enabled_modules TEXT DEFAULT '' AFTER cors_origins",
|
"ALTER TABLE companies ADD COLUMN enabled_modules TEXT DEFAULT '' AFTER cors_origins",
|
||||||
"ALTER TABLE users MODIFY COLUMN role ENUM('superadmin','admin','user') DEFAULT 'user'",
|
"ALTER TABLE users MODIFY COLUMN role ENUM('superadmin','admin','user') DEFAULT 'user'",
|
||||||
|
"ALTER TABLE customer_connections ADD COLUMN lisatiedot TEXT DEFAULT '' AFTER alkupvm",
|
||||||
];
|
];
|
||||||
foreach ($alters as $sql) {
|
foreach ($alters as $sql) {
|
||||||
try { $db->query($sql); } catch (\Throwable $e) { /* sarake on jo olemassa / jo ajettu */ }
|
try { $db->query($sql); } catch (\Throwable $e) { /* sarake on jo olemassa / jo ajettu */ }
|
||||||
@@ -702,6 +703,7 @@ function dbLoadCustomers(string $companyId): array {
|
|||||||
'hinta' => (float)($conn['hinta'] ?? 0),
|
'hinta' => (float)($conn['hinta'] ?? 0),
|
||||||
'sopimuskausi' => $conn['sopimuskausi'] ?? '',
|
'sopimuskausi' => $conn['sopimuskausi'] ?? '',
|
||||||
'alkupvm' => $conn['alkupvm'] ?? '',
|
'alkupvm' => $conn['alkupvm'] ?? '',
|
||||||
|
'lisatiedot' => $conn['lisatiedot'] ?? '',
|
||||||
];
|
];
|
||||||
}, $conns);
|
}, $conns);
|
||||||
unset($c['company_id']);
|
unset($c['company_id']);
|
||||||
@@ -755,8 +757,8 @@ function dbSaveCustomer(string $companyId, array $customer): void {
|
|||||||
if (!empty($customer['liittymat'])) {
|
if (!empty($customer['liittymat'])) {
|
||||||
foreach ($customer['liittymat'] as $l) {
|
foreach ($customer['liittymat'] as $l) {
|
||||||
_dbExecute("
|
_dbExecute("
|
||||||
INSERT INTO customer_connections (customer_id, asennusosoite, postinumero, kaupunki, liittymanopeus, hinta, sopimuskausi, alkupvm)
|
INSERT INTO customer_connections (customer_id, asennusosoite, postinumero, kaupunki, liittymanopeus, hinta, sopimuskausi, alkupvm, lisatiedot)
|
||||||
VALUES (?, ?, ?, ?, ?, ?, ?, ?)
|
VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)
|
||||||
", [
|
", [
|
||||||
$customer['id'],
|
$customer['id'],
|
||||||
$l['asennusosoite'] ?? '',
|
$l['asennusosoite'] ?? '',
|
||||||
@@ -766,6 +768,7 @@ function dbSaveCustomer(string $companyId, array $customer): void {
|
|||||||
$l['hinta'] ?? 0,
|
$l['hinta'] ?? 0,
|
||||||
$l['sopimuskausi'] ?? '',
|
$l['sopimuskausi'] ?? '',
|
||||||
$l['alkupvm'] ?? '',
|
$l['alkupvm'] ?? '',
|
||||||
|
$l['lisatiedot'] ?? '',
|
||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -485,6 +485,7 @@ function showDetail(id) {
|
|||||||
<div class="detail-item"><div class="detail-label">Sopimuskausi</div><div class="detail-value">${l.sopimuskausi ? l.sopimuskausi + ' kk' : '-'}</div></div>
|
<div class="detail-item"><div class="detail-label">Sopimuskausi</div><div class="detail-value">${l.sopimuskausi ? l.sopimuskausi + ' kk' : '-'}</div></div>
|
||||||
<div class="detail-item"><div class="detail-label">Alkaen</div><div class="detail-value">${detailVal(l.alkupvm)}</div></div>
|
<div class="detail-item"><div class="detail-label">Alkaen</div><div class="detail-value">${detailVal(l.alkupvm)}</div></div>
|
||||||
</div>
|
</div>
|
||||||
|
${l.lisatiedot ? `<div class="detail-item" style="margin-top:0.25rem"><div class="detail-label">Lisätiedot</div><div class="detail-value" style="white-space:pre-line">${esc(l.lisatiedot)}</div></div>` : ''}
|
||||||
</div>`;
|
</div>`;
|
||||||
}).join('');
|
}).join('');
|
||||||
const totalH = liittymat.reduce((s, l) => s + (parseFloat(l.hinta) || 0), 0);
|
const totalH = liittymat.reduce((s, l) => s + (parseFloat(l.hinta) || 0), 0);
|
||||||
@@ -599,6 +600,7 @@ function createLiittymaRow(data = {}, index = 0) {
|
|||||||
<option value="36" ${data.sopimuskausi === '36' ? 'selected' : ''}>36 kk</option>
|
<option value="36" ${data.sopimuskausi === '36' ? 'selected' : ''}>36 kk</option>
|
||||||
</select></div>
|
</select></div>
|
||||||
<div class="form-group"><label>Alkaen</label><input type="date" class="l-alkupvm" value="${esc(data.alkupvm || '')}"></div>
|
<div class="form-group"><label>Alkaen</label><input type="date" class="l-alkupvm" value="${esc(data.alkupvm || '')}"></div>
|
||||||
|
<div class="form-group full-width"><label>Lisätiedot <small style="font-weight:normal;color:var(--text-light)">(kytkin, portti, IP, VLAN yms.)</small></label><textarea class="l-lisatiedot" rows="2" placeholder="esim. SW1 port Gi0/1, IP 10.0.0.5, VLAN 100">${esc(data.lisatiedot || '')}</textarea></div>
|
||||||
</div>`;
|
</div>`;
|
||||||
div.querySelector('.btn-remove-row').addEventListener('click', () => { div.remove(); renumberLiittymaRows(); });
|
div.querySelector('.btn-remove-row').addEventListener('click', () => { div.remove(); renumberLiittymaRows(); });
|
||||||
return div;
|
return div;
|
||||||
@@ -620,6 +622,7 @@ function collectLiittymatFromForm() {
|
|||||||
hinta: row.querySelector('.l-hinta').value,
|
hinta: row.querySelector('.l-hinta').value,
|
||||||
sopimuskausi: row.querySelector('.l-sopimuskausi').value,
|
sopimuskausi: row.querySelector('.l-sopimuskausi').value,
|
||||||
alkupvm: row.querySelector('.l-alkupvm').value,
|
alkupvm: row.querySelector('.l-alkupvm').value,
|
||||||
|
lisatiedot: row.querySelector('.l-lisatiedot').value,
|
||||||
}));
|
}));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user