feat(anaf-dedup): ANAF partner dedup + address fix + UI enrichment
Prevent partner duplicates via ANAF CUI verification and dual PL/SQL search. Fix address matching with street-level comparison and diacritics normalization. Show partner/address comparison in order detail modal. - New anaf_service.py: batch ANAF API client with chunking, retry, cache - PL/SQL: dual CUI search (bare/RO+bare/RO space+bare), 3-tier address search (street+city+id_loc → city+id_loc → create), strip_diacritics at storage for addresses and partner names - SQLite: anaf_cache table, 12 new order columns for partner/address data - import_service: cod_fiscal_override param, return partner/address from Oracle - sync_service: ANAF batch integration, denomination mismatch detection, cache pre-population trigger - Router: enriched order_detail with partner_info + addresses JSON - UI: collapsible Detalii Partener + Adrese Comparativ sections in modal, auto-expand on mismatch, ANAF badges, mobile address cards - Dashboard: address quality attention indicator - New scan_duplicate_partners.py script for one-time duplicate audit Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -19,7 +19,7 @@
|
||||
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/css/bootstrap.min.css" rel="stylesheet">
|
||||
<link href="https://cdn.jsdelivr.net/npm/bootstrap-icons@1.11.2/font/bootstrap-icons.css" rel="stylesheet">
|
||||
{% set rp = request.scope.get('root_path', '') %}
|
||||
<link href="{{ rp }}/static/css/style.css?v=25" rel="stylesheet">
|
||||
<link href="{{ rp }}/static/css/style.css?v=26" rel="stylesheet">
|
||||
</head>
|
||||
<body>
|
||||
<!-- Top Navbar (hidden on mobile via CSS) -->
|
||||
@@ -110,6 +110,32 @@
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<!-- Partner Info Section (PJ only) -->
|
||||
<div id="detailPartnerSection" style="display:none" class="mb-3">
|
||||
<div class="detail-section-header" role="button" tabindex="0"
|
||||
data-bs-toggle="collapse" data-bs-target="#detailPartnerInfo"
|
||||
aria-expanded="false" aria-controls="detailPartnerInfo">
|
||||
<i class="bi bi-chevron-right"></i>
|
||||
<span>DETALII PARTENER</span>
|
||||
<span id="partnerAlertCount" class="alert-count" style="display:none"></span>
|
||||
</div>
|
||||
<div class="collapse" id="detailPartnerInfo">
|
||||
<div class="detail-section-body" id="partnerInfoBody"></div>
|
||||
</div>
|
||||
</div>
|
||||
<!-- Address Comparison Section -->
|
||||
<div id="detailAddressSection" style="display:none" class="mb-3">
|
||||
<div class="detail-section-header" role="button" tabindex="0"
|
||||
data-bs-toggle="collapse" data-bs-target="#detailAddressInfo"
|
||||
aria-expanded="false" aria-controls="detailAddressInfo">
|
||||
<i class="bi bi-chevron-right"></i>
|
||||
<span>ADRESE COMPARATIV</span>
|
||||
<span id="addressAlertCount" class="alert-count" style="display:none"></span>
|
||||
</div>
|
||||
<div class="collapse" id="detailAddressInfo">
|
||||
<div class="detail-section-body" id="addressInfoBody"></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="table-responsive d-none d-md-block">
|
||||
<table class="table table-sm table-bordered mb-0">
|
||||
<thead class="table-light">
|
||||
@@ -144,7 +170,7 @@
|
||||
|
||||
<script>window.ROOT_PATH = "{{ rp }}";</script>
|
||||
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/js/bootstrap.bundle.min.js"></script>
|
||||
<script src="{{ rp }}/static/js/shared.js?v=20"></script>
|
||||
<script src="{{ rp }}/static/js/shared.js?v=21"></script>
|
||||
<script>
|
||||
// Dark mode toggle
|
||||
function toggleDarkMode() {
|
||||
|
||||
Reference in New Issue
Block a user