This commit is contained in:
2026-04-15 01:24:42 +02:00
parent 6786665cbf
commit 596b7a995e
15 changed files with 1206 additions and 115 deletions

View File

@@ -60,6 +60,24 @@ $esc = function( $value )
<? if ( !empty( $payload['tax_no'] ) ): ?>
<small class="text-muted">NIP: <?= $esc( $payload['tax_no'] ); ?></small><br>
<? endif; ?>
<? if ( !empty( $payload['document_number'] ) ): ?>
<small class="text-muted">Ostatnia faktura: <?= $esc( $payload['document_number'] ); ?></small><br>
<? endif; ?>
<? if ( !empty( $payload['positions'] ) && is_array( $payload['positions'] ) ): ?>
<? $positions = $payload['positions']; ?>
<? $shown = array_slice( $positions, 0, 10 ); ?>
<small class="text-muted">
Pozycje z faktury:
<ul style="margin:2px 0 4px 18px; padding:0;">
<? foreach ( $shown as $positionName ): ?>
<li><?= $esc( $positionName ); ?></li>
<? endforeach; ?>
<? if ( count( $positions ) > count( $shown ) ): ?>
<li>... i <?= count( $positions ) - count( $shown ); ?> wiecej</li>
<? endif; ?>
</ul>
</small>
<? endif; ?>
<small class="text-muted">Klucz: <?= $esc( $row['external_key'] ); ?> | wystapienia: <?= (int)$row['hits']; ?></small>
</td>
<td>
@@ -90,47 +108,74 @@ $esc = function( $value )
<thead>
<tr>
<th>Pozycja z faktury</th>
<th>Kategoria finansowa</th>
<th style="width: 130px;">Akcja</th>
<th>Kategoria finansowa (mapuje globalnie)</th>
<th style="width: 200px;">Akcja</th>
</tr>
</thead>
<tbody>
<? foreach ( $this -> fakturownia_pending_items as $row ): ?>
<tr>
<td>
<?= $esc( $row['external_name'] ); ?><br>
<? $payload = is_array( $row['payload'] ?? null ) ? $row['payload'] : []; ?>
<? if ( !empty( $payload['document_number'] ) ): ?>
<small class="text-muted">Faktura: <?= $esc( $payload['document_number'] ); ?></small><br>
<? $renderedRows = 0; ?>
<? foreach ( $this -> fakturownia_pending_items as $itemIdx => $row ): ?>
<? $payload = is_array( $row['payload'] ?? null ) ? $row['payload'] : []; ?>
<? $occurrences = ( isset( $payload['occurrences'] ) && is_array( $payload['occurrences'] ) ) ? $payload['occurrences'] : []; ?>
<? if ( empty( $occurrences ) ) continue; ?>
<? $saveFormId = 'fi-save-' . $itemIdx; ?>
<? $occCount = count( $occurrences ); ?>
<? foreach ( $occurrences as $occIdx => $occ ): ?>
<? $isFirst = $occIdx === 0; ?>
<tr>
<td>
<?= $esc( $row['external_name'] ); ?><br>
<? if ( !empty( $occ['document_number'] ) ): ?>
<small class="text-muted">Faktura: <?= $esc( $occ['document_number'] ); ?> (ID <?= $esc( $occ['document_id'] ?? '' ); ?>)</small><br>
<? endif; ?>
<? if ( !empty( $occ['buyer_name'] ) || !empty( $occ['seller_name'] ) ): ?>
<small class="text-muted">
Nabywca: <?= $esc( $occ['buyer_name'] ?? '-' ); ?> |
Sprzedawca: <?= $esc( $occ['seller_name'] ?? '-' ); ?>
</small><br>
<? endif; ?>
<? if ( $isFirst ): ?>
<small class="text-muted">Klucz: <?= $esc( $row['external_key'] ); ?> | wystapien w kolejce: <?= $occCount; ?></small>
<? endif; ?>
</td>
<? if ( $isFirst ): ?>
<td rowspan="<?= $occCount; ?>" style="vertical-align: top;">
<select name="finance_category_id" form="<?= $saveFormId; ?>" class="form-control input-sm" required>
<option value="">Wybierz kategorie</option>
<? foreach ( $this -> fakturownia_categories as $category ): ?>
<option value="<?= (int)$category['id']; ?>">
<?= $esc( $category['name'] ); ?> (grupa: <?= (int)$category['group_id']; ?>)
</option>
<? endforeach; ?>
</select>
<form id="<?= $saveFormId; ?>" method="post" action="/finances/fakturownia_item_mapping_save/" style="display:inline;">
<input type="hidden" name="csrf_token" value="<?= \S::csrf_token(); ?>">
<input type="hidden" name="external_key" value="<?= $esc( $row['external_key'] ); ?>">
<input type="hidden" name="external_name" value="<?= $esc( $row['external_name'] ); ?>">
<button type="submit" class="btn btn-success btn-sm mt5">Zapisz mapowanie</button>
</form>
<? if ( $occCount > 1 ): ?>
<br><small class="text-muted">Zapis mapowania kategorii rozwiazuje wszystkie <?= $occCount; ?> wystapien tej pozycji.</small>
<? endif; ?>
</td>
<? endif; ?>
<? if ( !empty( $payload['buyer_name'] ) || !empty( $payload['seller_name'] ) ): ?>
<small class="text-muted">
Nabywca: <?= $esc( $payload['buyer_name'] ?? '-' ); ?> |
Sprzedawca: <?= $esc( $payload['seller_name'] ?? '-' ); ?>
</small><br>
<? endif; ?>
<small class="text-muted">Klucz: <?= $esc( $row['external_key'] ); ?> | wystapienia: <?= (int)$row['hits']; ?></small>
</td>
<td>
<form method="post" action="/finances/fakturownia_item_mapping_save/" class="form-inline">
<input type="hidden" name="csrf_token" value="<?= \S::csrf_token(); ?>">
<input type="hidden" name="external_key" value="<?= $esc( $row['external_key'] ); ?>">
<input type="hidden" name="external_name" value="<?= $esc( $row['external_name'] ); ?>">
<select name="finance_category_id" class="form-control input-sm" required>
<option value="">Wybierz kategorie</option>
<? foreach ( $this -> fakturownia_categories as $category ): ?>
<option value="<?= (int)$category['id']; ?>">
<?= $esc( $category['name'] ); ?> (grupa: <?= (int)$category['group_id']; ?>)
</option>
<? endforeach; ?>
</select>
</td>
<td>
<button type="submit" class="btn btn-success btn-sm">Zapisz</button>
</form>
</td>
</tr>
<td style="white-space:nowrap;">
<form method="post" action="/finances/fakturownia_document_position_skip/" style="display:inline-block; margin:0;">
<input type="hidden" name="csrf_token" value="<?= \S::csrf_token(); ?>">
<input type="hidden" name="external_id" value="<?= $esc( $occ['document_id'] ?? '' ); ?>">
<input type="hidden" name="document_type" value="<?= $esc( $occ['document_type'] ?? '' ); ?>">
<input type="hidden" name="external_item_key" value="<?= $esc( $row['external_key'] ); ?>">
<input type="hidden" name="item_name" value="<?= $esc( $row['external_name'] ); ?>">
<button type="submit" class="btn btn-warning btn-sm" title="Pomijaj te pozycje tylko na tej fakturze">Pomijaj na tej fakturze</button>
</form>
</td>
</tr>
<? $renderedRows++; ?>
<? endforeach; ?>
<? endforeach; ?>
<? if ( $renderedRows === 0 ): ?>
<tr><td colspan="3"><em>(brak wystapien do rozwiazania)</em></td></tr>
<? endif; ?>
</tbody>
</table>
<? endif; ?>