fix: preserve negative money signs in analytics
This commit is contained in:
@@ -1365,3 +1365,8 @@ Taslak türü seçicisine erişilebilir ad eklendi. Üretim derlemesi geçti. Ö
|
|||||||
- Belge deposundaki son kullanma tarihi göstergesi artık yalnız geçerli ISO günlerini hesaplıyor. Bozuk veya yuvarlanabilir bir tarih sessizce gün hesabına girmiyor; kullanıcıya “Tarih doğrulanmalı” uyarısı gösteriliyor.
|
- Belge deposundaki son kullanma tarihi göstergesi artık yalnız geçerli ISO günlerini hesaplıyor. Bozuk veya yuvarlanabilir bir tarih sessizce gün hesabına girmiyor; kullanıcıya “Tarih doğrulanmalı” uyarısı gösteriliyor.
|
||||||
- Geçerli tarihlerde kalan gün, yaklaşan sona erme ve geçmiş belge uyarıları korunuyor. Hazırlık kontrolündeki tarih doğrulamasıyla aynı biçim kuralı kullanılıyor.
|
- Geçerli tarihlerde kalan gün, yaklaşan sona erme ve geçmiş belge uyarıları korunuyor. Hazırlık kontrolündeki tarih doğrulamasıyla aynı biçim kuralı kullanılıyor.
|
||||||
- 281 test ve build başarılı. Belge deposunda bozuk tarih için ayrı tarayıcı kabulü henüz eklenmedi; genel plan açık.
|
- 281 test ve build başarılı. Belge deposunda bozuk tarih için ayrı tarayıcı kabulü henüz eklenmedi; genel plan açık.
|
||||||
|
|
||||||
|
### 2026-09-06 — Analitik negatif tutar işareti
|
||||||
|
|
||||||
|
- `parseTL`, metindeki eksi işaretini artık koruyor. İade veya negatif düzeltme tutarları pozitif sözleşme bedeline dönüşmüyor; Türkçe binlik/ondalık ayrıştırma davranışı aynen sürüyor.
|
||||||
|
- Negatif Türkçe tutar için regresyon eklendi. 283 test ve build başarılı. Finansal kaynakların negatif tutar anlamı ayrıca resmi veri sözleşmesiyle doğrulanmalı; genel plan açık.
|
||||||
|
|||||||
@@ -8,13 +8,14 @@
|
|||||||
export function parseTL(v) {
|
export function parseTL(v) {
|
||||||
if (v == null) return null;
|
if (v == null) return null;
|
||||||
if (typeof v === 'number') return isFinite(v) ? v : null;
|
if (typeof v === 'number') return isFinite(v) ? v : null;
|
||||||
const s = String(v).replace(/[^\d.,]/g, '');
|
const text=String(v).trim(), negative=/^-/.test(text);
|
||||||
|
const s = text.replace(/[^\d.,]/g, '');
|
||||||
if (!s) return null;
|
if (!s) return null;
|
||||||
const norm = s.includes(',')
|
const norm = s.includes(',')
|
||||||
? s.replace(/\./g, '').replace(',', '.')
|
? s.replace(/\./g, '').replace(',', '.')
|
||||||
: /^(?:\d+\.\d{3})+$/.test(s) ? s.replace(/\./g, '') : s;
|
: /^(?:\d+\.\d{3})+$/.test(s) ? s.replace(/\./g, '') : s;
|
||||||
const n = parseFloat(norm);
|
const n = parseFloat(norm);
|
||||||
return isFinite(n) ? n : null;
|
return isFinite(n) ? (negative ? -n : n) : null;
|
||||||
}
|
}
|
||||||
|
|
||||||
export function formatTL(n) {
|
export function formatTL(n) {
|
||||||
|
|||||||
@@ -5,6 +5,7 @@ test('analytics parses Turkish grouped and decimal money without changing scale'
|
|||||||
assert.equal(parseTL('12.50 TL'),12.5);
|
assert.equal(parseTL('12.50 TL'),12.5);
|
||||||
assert.equal(parseTL('1.234 TL'),1234);
|
assert.equal(parseTL('1.234 TL'),1234);
|
||||||
assert.equal(parseTL('1.234,50 TL'),1234.5);
|
assert.equal(parseTL('1.234,50 TL'),1234.5);
|
||||||
|
assert.equal(parseTL('-1.234,50 TL'),-1234.5);
|
||||||
});
|
});
|
||||||
test('analytics rejects impossible Turkish calendar dates instead of rolling them over',()=>{
|
test('analytics rejects impossible Turkish calendar dates instead of rolling them over',()=>{
|
||||||
assert.equal(parseDateTR('31.02.2026'),null);
|
assert.equal(parseDateTR('31.02.2026'),null);
|
||||||
|
|||||||
Reference in New Issue
Block a user