LivaDocsv1.1.2

LivaMonthAdjustPopup

Dataliva'ya özgü, 12 aylık bütçe satırındaki değerleri toplu olarak artırıp azaltmaya yarayan popup. Bir satır ve ay kolonu için createMonthAdjustSession ile oturum oluşturulur; popup her ay için mevcut tutarı ve düzenlenebilir bir ayar kolonu gösterir. Uygula düğmesi taslak değerleri ve kullanıcının popup'taki seçimlerini onApply ile geri verir, yeni tutarlar applyMonthAdjustSession ile hesaplanır. İki mod vardır:

  • cumulative — satırdaki tüm aylar listelenir; varsayılan ayar tipi percent'tir (100 = değişiklik yok, 110 = yüzde 10 artış).
  • single — tıklanan aydan yıl sonuna kadar olan aylar listelenir; varsayılan ayar tipi amount'tır (0 = değişiklik yok, pozitif/negatif tutar eklenir).
import {
  LivaMonthAdjustPopup,
  createMonthAdjustSession,
  applyMonthAdjustSession,
  sumMonthValues,
  STANDARD_MONTH_FIELDS,
  type MonthAdjustSession,
  type LivaMonthAdjustSummaryField,
} from "@dataliva/livalib";

Popup'taki araçlar

  • Değer / Oran (%) — işlem türü. İlk seçim oturumun adjustType'ıdır. Tek seferde tek tür uygulanır; tür değiştirildiğinde girilen tüm taslaklar temizlenir (oranlar 100'e, tutarlar 0'a döner).
  • Ay seçimi — her ay satırında onay kutusu vardır ve başlangıçta listelenen ayların tamamı seçilidir. Yalnızca seçili aylar uygulanır; hiç ay seçili değilse Uygula pasif kalır.
  • Tüm ayları seç — single modda da listeyi 12 aya genişletir ve hepsini seçer.
  • Toplu değer (+/−) ve Toplu oran (%) — girilen değeri tek tıkla seçili ayların ayar hücresine yazar. Yalnızca etkin türün alanı açıktır.
  • Başlığın altındaki Düzenlenen Ay(lar) rozeti etkilenen aralığı gösterir (ör. Mart → Aralık); summaryFields rozetleri bunun yanında durur.

Uygula, onApply(taslakDegerler, secenekler) çağırır. secenekler kullanıcının popup'ta yaptığı seçimleri taşır: adjustType, allMonths ve selectedMonthIndices. Yeni tutarları hesaplarken bunları oturumla birleştirin:

onApply={(taslakDegerler, secenekler) => {
  const guncellemeler = applyMonthAdjustSession(
    { ...oturum, ...secenekler, draftValues: taslakDegerler },
    STANDARD_MONTH_FIELDS
  );
  // ...
}}

secenekler birleştirilmezse tür değişikliği ve ay seçimi yok sayılır — ör. amount oturumunda Oran (%)'a geçildiğinde oran taslakları (100, 110…) tutar olarak eklenir.

Kümülatif yüzde ayarı

Düğmeye tıklayınca 12 ayın tamamı için yüzde bazlı ayar oturumu açılır. Örneğin bir aya 110 yazıp uyguladığınızda o ayın tutarı yüzde 10 artar; 100 bırakılan aylar değişmez. summaryFields popup başlığının altında hesap/departman gibi satır bilgilerini rozet olarak gösterir (stripLeadingAccountCode baştaki "770 -" benzeri hesap kodunu ayıklar).

Kümülatif yüzde ayarı
Önizleme yükleniyor…

Seçili aydan itibaren tutar ayarı

mode: "single", columnField ile verilen aydan yıl sonuna kadar olan ayları listeler; girilen tutar mevcut değere eklenir (negatif değer azaltır). Yalnızca bir ayı değiştirmek için diğer ayları 0'da bırakın ya da seçimden çıkarın. Gerçek uygulamada bu oturum, grid hücresinin sağ tık menüsündeki Arttır/Azalt öğesiyle tıklanan kolona göre açılır.

Seçili aydan itibaren tutar ayarı
Önizleme yükleniyor…

Yardımcı fonksiyonlar

Popup, utils/monthAdjust modülündeki yardımcılarla birlikte çalışır; tümü paket kökünden dışa aktarılır:

Fonksiyon / SabitAçıklama
STANDARD_MONTH_FIELDSStandart ay alanları: ["V001", "V002", …, "V012"]
MONTH_FIELD_PATTERNAy alanı deseni: /^[vV]\d{3}$/
createMonthAdjustSession(params)Satır, kolon ve moddan MonthAdjustSession üretir
applyMonthAdjustSession(session, monthFields)Taslak değerlerden alan → yeni tutar haritası hesaplar (2 basamağa yuvarlar). single modda — allMonths yoksa — tıklanan aydan önceki aylar, selectedMonthIndices verilmişse seçilmeyen aylar ve varsayılan taslaklar (100 / 0) atlanır
sumMonthValues(rowData, monthFields, updates)Güncellemeler uygulanmış yıllık toplamı verir
getAffectedMonthIndices(mode, columnField, monthFields)Listelenecek ay indeksleri: single için tıklanan aydan yıl sonuna, cumulative için tümü
getDefaultMonthAdjustDraftValues(adjustType)Başlangıç taslağı: percent için 100, amount için 0
getRowFieldValue(row, fieldName)Alan adını büyük/küçük harf duyarsız çözerek değeri okur
resolveMonthFieldsFromColumns(columns)Grid kolon tanımlarından ay alanlarını çıkarır

LivaDataGrid bileşeni bu akışı monthAdjustOptions prop'uyla hazır olarak sunar: ay (V001…V012) hücresinin sağ tık menüsünde Sayısal İşlemler başlığı altında Arttır/Azalt (single) ve Kümülatif Değer Arttır/Azalt (cumulative) öğeleri çıkar. Uygula'da popup seçenekleri oturumla birleştirilir, yeni değerler satırın hücrelerine yazılır, totalField verilmişse yıllık toplam güncellenir ve monthAdjustOptions.onApply çağrılır. Bu sayfadaki gibi elle oturum yönetimi yalnızca özel senaryolarda gerekir.

MonthAdjustSession

type MonthAdjustSession = {
  rowId: string;
  rowData: Record<string, unknown>;
  columnField: string;             // oturum oluşturulurken büyük harfe çevrilir
  mode: "single" | "cumulative";
  adjustType: "percent" | "amount";
  draftValues: number[];           // 12 elemanlı taslak dizisi
  allMonths?: boolean;             // single modda da 12 ayın tamamına uygula
  selectedMonthIndices?: number[]; // yalnızca bu ay indekslerine uygula
};