Inventory -> Definitions Menüsü

This commit is contained in:
Sedat ÖZTÜRK 2026-10-07 23:27:23 +03:00
parent 3af82ecf94
commit db1834993d
78 changed files with 42237 additions and 28 deletions

View file

@ -1529,7 +1529,7 @@ Adres zincirinin hazır örneği Kiracılar ekranıdır: Ülke › İl › İlç
| Tip | Biçim | Not |
| --- | --- | --- |
| `1` StaticData | `[{"key":1,"name":"Taslak"},{"key":2,"name":"Onayda"}]` | Kolon **sayı** tipindeyse `key` sayı, **metin** tipindeyse `key` metin olmalıdır; aksi hâlde seçim eşleşmez. Cascade gerekiyorsa her öğeye `group` eklenir. |
| `1` StaticData | `[{"key":"Wares","name":"App.StaticLookup.Wares"},{"key":"Service","name":"App.StaticLookup.Service"}]` | `name` **her zaman dil anahtarıdır** (§4.3.4.1), düz metin yazılmaz. Kolon **sayı** tipindeyse `key` sayı, **metin** tipindeyse `key` metin olmalıdır; aksi hâlde seçim eşleşmez. Cascade gerekiyorsa her öğeye `group` eklenir. |
| `2` Query | `SELECT Id AS [Key], Name AS [Name] FROM ... WHERE IsDeleted = 0` | Cascade'de ebeveyn değerleri `@param0…` ile gelir; boş ebeveyn tüm listeyi göstersin diye `(Kolon = @param0 OR @param0 IS NULL)` kalıbı kullanılır. Sorgu ekranın veri kaynağında/tenant bağlamında çalışır, `@USERID` gibi token'lar çözülür. |
| `3` WebService | `METHOD;url;bodyJson;keySelector;nameSelector;groupSelector` | Noktalı virgülle **altı parça**. Selector'lar her satır `a` üzerinde çalışan JS ifadeleridir (`a.id`, `a.name`, `null`). Gövdedeki `@param0`, `@param1`… cascade filtre değerleriyle doldurulur. Örnek: `GET;notification-rule/notification-types;{};a.id;a.name;null` |
@ -1580,6 +1580,26 @@ Bağımlı liste `grouped` ile değil cascade ile kurulur.
> Lookup verisi önbelleklenir; aynı sorgu aynı filtrelerle bir kez yüklenir. Grid, Tree, Card ve
> Form aynı veri kaynağını kullanır (`views/form/useLookupDataSource.ts`); cascade kuralı tek yerdedir.
#### 4.3.4.1 Sabit seçenekler dil anahtarıyla — zorunlu
RadioGroup, SelectBox, TagBox, Autocomplete gibi `StaticData` lookup'ının seçenek metni (`name`) ekran
diline göre çevrilir; bu yüzden düz metin değil `App.StaticLookup.*` dil anahtarıdır ve anahtarın EN + TR
satırları `data/App.Languages.LanguageText.json`'a yazılır (örnek: `ListFormSeeder_Administration`
iş tipleri, `App.StaticLookup.MailQueueWorker`).
Wizard ve MCP deploy'u bunu kendisi yapar (`ListFormWizardAppService.LocalizeStaticLookupsAsync`):
`name` var olan bir dil anahtarı değilse
1. aynı TR metnini taşıyan bir `App.StaticLookup.*` anahtarı varsa o kullanılır (yeni satır açılmaz);
2. yoksa anahtar `App.StaticLookup.{Key}` olur — `key` kelime/sayı değilse (`0 Rh+`, `Ziyaretçi`)
`App.StaticLookup.{Alan}{Sıra}`, sayısal `key`'de `App.StaticLookup.{Alan}{Key}`; ad başka bir metinle
alınmışsa `App.StaticLookup.{Alan}.{Key}`;
3. TR satırı verilen metin, EN satırı anahtarın kelimeleridir (`BySerialNumber` → `By Serial Number`;
kelime olmayan anahtarda TR metni). Yeni anahtar wizard'ın `InsertedRecords.LanguageKeys`'ine girer.
MCP'de EN metni bilinen seçenekte en doğrusu anahtarı ve EN + TR metnini wizard'ın `Language.Texts`
alanında vermektir; o anahtara deploy dokunmaz.
### 4.3.5 Varsayılan değerler — `*FieldsDefaultValueJson`
Kullanıcının doldurmayacağı alanlar (audit, tenant, durum, **belge numarası**) script ile değil,

View file

@ -1563,7 +1563,7 @@ liste süzgeci ve çağrı kapısı aynı kuralı kullanır.
| `save_sql_object` | View/procedure/function scriptini `sql/object/{Ad}.sql` ve `postgres/object/{Ad}.sql` dosyalarına yazar (`McpSqlObjectWriter`); veritabanında çalıştırılmaz, nesneyi DB Migrate kurar. Gövde diyalektler arasında güvenle çevrilemediği için iki script de istemciden gelir ve aynı nesneyi tanımlamalıdır (`SqlObjectInvalid`); ad scriptten okunur, başlık `CREATE OR ALTER` / `CREATE OR REPLACE`'e çevrilir. Tablo scriptinin üstüne yazmaz. `.Write` + `App.SqlQueryManager` ister. |
| `generate_crud_endpoints` | SQL Query Manager CRUD diyaloğuyla aynı endpoint kümesini (`CrudEndpointSeedFileDto.Generate` — diyaloğun servisi de bunu kullanır) yalnızca `crud/{Entity}.json` dosyasına yazar; kayıtları DB Migrate ekler (`CrudEndpointSeedApplier`). `.Write` + `App.SqlQueryManager.CrudEndpoints` ister. |
| `list_wizards` / `get_wizard` | Wizard File Manager dosyaları; `get_wizard` seed dosyasını diskteki biçimiyle döndürür. |
| `deploy_wizard` | Wizard'ı Wizard ekranıyla aynı yoldan (`IListFormWizardAppService.Create`) deploy eder. Girdi seed dosyası biçimi (`{"Wizard": …, "ListForm": …, "Fields": […]}`) ya da düz cevaplardır; ikisi de `WizardSeedFileDto.FromDeployJson`'dan geçer: Wizard bölümünde yazılan cevap korunur, yazılmayan ekran alanı `ListForm`/`Fields`'tan tamamlanır, iki bölüm de ekrana katman olarak uygulanır (`WizardScreenOverlay`, üç yönlü: bölümdeki değer wizard'ın kendi ürettiğiyle aynıysa cevap kazanır, farklıysa editör ayarıdır ve korunur; kimlik alanları wizard'dan gelir, tanınmayan/hesaplanan anahtar reddedilir). Böylece MCP, ListForm editörünün yapabildiği her ayarı wizard dosyasına yazar ve `replaceFileName` ile güncelleme editör ayarlarını silmez. Yeni kaydın form varsayılanı kolonun tablodaki sabit `DEFAULT`'udur (katalog ya da seed scripti, `SqlSeedColumn.ConstantValue`; IsActive → true, UomId → Adet, para birimi → TRY tablonun `DEFAULT`'larından gelir); alana özel değer öğenin `DefaultValue`'su ile verilir (`lowcode.instructions.md` §4.3.5.1). Girdide sözleşmede olmayan anahtar adıyla reddedilir, sessizce yok sayılmaz. Dosyaya kullanıcının etkin talebi `DevRequest` olarak yazılır (sunucu doldurur). Wizard ekranı gibi yalnızca seed dosyalarını yazar; ekran DB Migrate ile kurulur ve çıkıştaki `isPending` o zamana kadar `true` kalır (model migrate'i beklemez; `verify_wizard` bekleyen dosyada `install` kontrolünde durur). `replaceFileName` doluysa güncellemedir (dosyalar yeniden yazılır, önceki kayıtları migrate kaldırır). İstek demo veri taşıyorsa (prompt'taki satırlar, ekran görüntüsü) wizard `SeedData: true` ile deploy edilir — ekranın `SeedFilePath`'i `data/{ListFormCode}.json` olur ve `SeedSync*` bayrakları açılır — satırlar aynı çağrıda `seedRows` ile bu dosyaya yazılır (alan adları doğrulanır, `Guid` anahtarı sunucu üretir); migrate ekranı kurduktan sonra satırları ekler (`lowcode.instructions.md` §0.10.1). Widget sorgularındaki her dil anahtarı tanımlı olmalı ya da wizard'ın `Language.Texts` alanında EN + TR verilmeli, yoksa deploy adlarıyla reddeder (`ValidateWidgetLanguageKeysAsync`). `uploadUrl`'süz `dxImageUpload` alanı base64 sakladığı için kolonu sınırlı boyluysa (katalogdaki karakter sınırı) deploy reddedilir; tablo kolonuna bağlı `dxImageViewer` alanı da reddedilir — görsel kolonunun editörü her zaman `dxImageUpload`'dır (`ValidateImageColumnLengths`). `MenuOrder` yok sayılır: yeni ekran kardeşlerinin sonuna, güncelleme mevcut yerine yazılır — lookup kaynağı ekran önce deploy edildiği için onu kullanan ekranın üstünde kalır. |
| `deploy_wizard` | Wizard'ı Wizard ekranıyla aynı yoldan (`IListFormWizardAppService.Create`) deploy eder. Girdi seed dosyası biçimi (`{"Wizard": …, "ListForm": …, "Fields": […]}`) ya da düz cevaplardır; ikisi de `WizardSeedFileDto.FromDeployJson`'dan geçer: Wizard bölümünde yazılan cevap korunur, yazılmayan ekran alanı `ListForm`/`Fields`'tan tamamlanır, iki bölüm de ekrana katman olarak uygulanır (`WizardScreenOverlay`, üç yönlü: bölümdeki değer wizard'ın kendi ürettiğiyle aynıysa cevap kazanır, farklıysa editör ayarıdır ve korunur; kimlik alanları wizard'dan gelir, tanınmayan/hesaplanan anahtar reddedilir). Böylece MCP, ListForm editörünün yapabildiği her ayarı wizard dosyasına yazar ve `replaceFileName` ile güncelleme editör ayarlarını silmez. Yeni kaydın form varsayılanı kolonun tablodaki sabit `DEFAULT`'udur (katalog ya da seed scripti, `SqlSeedColumn.ConstantValue`; IsActive → true, UomId → Adet, para birimi → TRY tablonun `DEFAULT`'larından gelir); alana özel değer öğenin `DefaultValue`'su ile verilir (`lowcode.instructions.md` §4.3.5.1). Girdide sözleşmede olmayan anahtar adıyla reddedilir, sessizce yok sayılmaz. `StaticData` lookup seçeneklerinin düz metni `App.StaticLookup.*` dil anahtarına çevrilir ve EN + TR satırı yazılır (`LocalizeStaticLookupsAsync`, `lowcode.instructions.md` §4.3.4.1). Dosyaya kullanıcının etkin talebi `DevRequest` olarak yazılır (sunucu doldurur). Wizard ekranı gibi yalnızca seed dosyalarını yazar; ekran DB Migrate ile kurulur ve çıkıştaki `isPending` o zamana kadar `true` kalır (model migrate'i beklemez; `verify_wizard` bekleyen dosyada `install` kontrolünde durur). `replaceFileName` doluysa güncellemedir (dosyalar yeniden yazılır, önceki kayıtları migrate kaldırır). İstek demo veri taşıyorsa (prompt'taki satırlar, ekran görüntüsü) wizard `SeedData: true` ile deploy edilir — ekranın `SeedFilePath`'i `data/{ListFormCode}.json` olur ve `SeedSync*` bayrakları açılır — satırlar aynı çağrıda `seedRows` ile bu dosyaya yazılır (alan adları doğrulanır, `Guid` anahtarı sunucu üretir); migrate ekranı kurduktan sonra satırları ekler (`lowcode.instructions.md` §0.10.1). Widget sorgularındaki her dil anahtarı tanımlı olmalı ya da wizard'ın `Language.Texts` alanında EN + TR verilmeli, yoksa deploy adlarıyla reddeder (`ValidateWidgetLanguageKeysAsync`). `uploadUrl`'süz `dxImageUpload` alanı base64 sakladığı için kolonu sınırlı boyluysa (katalogdaki karakter sınırı) deploy reddedilir; tablo kolonuna bağlı `dxImageViewer` alanı da reddedilir — görsel kolonunun editörü her zaman `dxImageUpload`'dır (`ValidateImageColumnLengths`). `MenuOrder` yok sayılır: yeni ekran kardeşlerinin sonuna, güncelleme mevcut yerine yazılır — lookup kaynağı ekran önce deploy edildiği için onu kullanan ekranın üstünde kalır. |
| `delete_wizard` | Wizard Manager'daki silmeyle aynı: `InsertedRecords` + ekranın veri aynası, bağımlı wizard varsa reddedilir. `dropTables: true` ekranın tablosunu (yalnızca tasarımcı/`create_table` ile kurulmuş ve başka yerde kullanılmayan) CRUD endpoint'leri, `sql/object` ve `crud` dosyalarıyla düşürür; model bunu kullanıcı onayı olmadan göndermez (`WizardTableCleaner`, `lowcode.instructions.md` §4.5). |
| `verify_wizard` | Deploy edilmiş ekranı veri yazmadan doğrular: menü kaydı ve URL'si, menünün istediği yetki tanımı (`AbpPermissions`), List yolunda ekran sorgusu (`GetSelectAsync`, tek satır, çağıranın yetkisiyle), Custom yolunda bileşen (etkin, rota = menü URL'si) ve seed kapanışı (`ExportAnalysis` uyarıları; engellemez). İsteğe bağlıdır, migrate sonrasında kullanılır; `App.DevRequests` döngüsünün adımı değildir — döngü `Testing`'de biter, kullanıcı elle test edip `Staging`'e alır (`lowcode.instructions.md` §0.11). |
| `start_dev_request` | Geliştirme talebini Id ya da tam başlıkla üstlenir: yalnızca `Ready to Start` durumundakini `In Progress` durumuna alır, diğerlerini reddeder; talebin metnini döndürür. Açıklamaya yapıştırılmış base64 görseller (`data:image/png|jpeg|gif|webp`) metinden ayıklanır (`McpDevRequestImages`), yerlerinde `[image-N]` kalır ve her biri ayrı MCP resim içeriği (`ImageContentBlock`) olarak döner — model görseli resim olarak görür, görsel hiçbir yere yüklenmez. Sonuç istemcinin 1 MB sınırına sığdırılır: büyük görseller küçültülüp JPEG'e çevrilir (`IMcpImageShrinker`), sığmayan gönderilmez ve metinde bildirilir. `.Write` + `App.DevRequests.Update` ister. |

View file

@ -97,7 +97,7 @@ public sealed class McpDevelopTools(IMcpDevelopAppService developAppService, IMc
=> await developAppService.GetWizardAsync(fileName);
[McpServerTool(Name = McpToolNames.DeployWizard, Destructive = true, Idempotent = false)]
[Description("Wizard'i deploy eder: ListForm ekrani (ComponentKind 0) ya da bir custom component'i menuye baglayan kayit (ComponentKind 1), yetkileri, dil anahtarlari ve menusu seed dosyalarina yazilir. Deploy veritabanina yazmaz: ekran, menu ve yetkiler kullanici Wizard Manager'da DB Migrate calistirinca olusur; cikistaki isPending true iken ekran henuz yoktur; migrate'i bekleme, isini bitir ve kullaniciya yalnizca DB Migrate calistirmasini soyle. Eksik modul, ust menu, izin grubu, yetki ve dil satirlari da deploy'da dosyalara yazilir ve migrate onlari dogru sirayla ekler; bunlarin veritabaninda olmamasi beklenen durumdur, uyari olarak raporlama ve kullanicidan elle eklemesini isteme. Ust menu zinciri istenen derinlikte kurulur: MenuParentCode ekranin dogrudan ust menusu, Menu.MenuParentPath onun ustundeki seviyeler (kokten asagi, her biri {Code, Icon, En, Tr}); eksik her seviye bir ustunun altina kurulur, var olana baglanilir. Liste ekraninda Grid, Card, Pivot ve Chart gorunumleri varsayilan aciktir (DefaultLayout grid); kullanici bir gorunumu istemedigini soylemedikce bu bayraklari false yazma. Hedef tablo onceden var olmalidir; yoksa once create_table ile olustur. Istek ornek/demo veri tasiyorsa (prompt'taki tablo/liste ya da ekran goruntusunde gorunen satirlar) SeedData true yaz ve satirlarin hepsini ayni cagrida seedRows ile gonder: satirlar ekranin data/{ListFormCode}.json dosyasina yazilir, migrate ekrani kurduktan sonra ekler. Satirlar icin migrate'i bekleyip insert_row kullanma. replaceFileName verilirse o wizard'in dosyalari yeniden yazilir, onceki kayitlarin yerini migrate'te yenileri alir. Wizard cevaplarinin uretmedigi ekran ayarlari (FormFieldsDefaultValueDto/InsertFieldsDefaultValueDto gibi varsayilan degerler, ValidationRuleDto, Format, Alignment, Width, Visible, BandName, ozet/gruplama, ExtraFilter, Insert/Update/Delete komutlari, PageSize, CommandColumnDto …) ayni JSON'un ListForm ve Fields bolumlerine get_wizard ciktisindaki adlarla yazilir. Yeni kaydin form degeri (Aktif = true, Birim = Adet, Kur = TRY, Sure = 60) ayri yazilmaz: deploy kolonun tablodaki sabit DEFAULT degerini okur; tablodan farkli deger gerekiyorsa alan ogesinde DefaultValue yaz (Groups[].Items[].DefaultValue). Wizard girdisinde taninmayan anahtar adiyla reddedilir, baska adla tekrar deneme; bolumler kismi olabilir (yalnizca degisen anahtarlar), Fields ogeleri FieldName ile eslesir, *Json adlari (FormFieldsDefaultValueJson) *Dto karsiligina cevrilir. Guncellemede get_wizard ciktisini butunuyle degistirip gonder: tasarimci ayarlari korunur; Wizard bolumunde yazdigin cevap ayni ayarin ListForm'daki eski degerine ustun gelir. Kimlik alanlari (ListFormCode, Name, Title, Description, PermissionDto, FieldName) wizard'dan gelir. Fields'taki her alan Wizard Groups'ta da bulunmalidir; tanınmayan ya da hesaplanan bir anahtar reddedilir. Liste ekraninda DescTr ve DescEn ayrintili olmali (en az 3 satir, 150 karakter): ekran basligindaki bilgi simgesinde gosterilir; ne ise yaradigi, menude nerede ya da hangi ekranin sekmesi oldugu, ana alanlar, otomatik hesaplar ve iliskili ekranlar yazilir (get_dev_guide 4.4.2); kisa aciklama reddedilir. Deploy modulun dokumanini (docs/modules) acar ya da envanterini yeniler; elle yazilan bolumleri save_module_doc ile doldur. Ne yazacagini get_dev_guide 4. bolumunden ogren.")]
[Description("Wizard'i deploy eder: ListForm ekrani (ComponentKind 0) ya da bir custom component'i menuye baglayan kayit (ComponentKind 1), yetkileri, dil anahtarlari ve menusu seed dosyalarina yazilir. Deploy veritabanina yazmaz: ekran, menu ve yetkiler kullanici Wizard Manager'da DB Migrate calistirinca olusur; cikistaki isPending true iken ekran henuz yoktur; migrate'i bekleme, isini bitir ve kullaniciya yalnizca DB Migrate calistirmasini soyle. Eksik modul, ust menu, izin grubu, yetki ve dil satirlari da deploy'da dosyalara yazilir ve migrate onlari dogru sirayla ekler; bunlarin veritabaninda olmamasi beklenen durumdur, uyari olarak raporlama ve kullanicidan elle eklemesini isteme. Ust menu zinciri istenen derinlikte kurulur: MenuParentCode ekranin dogrudan ust menusu, Menu.MenuParentPath onun ustundeki seviyeler (kokten asagi, her biri {Code, Icon, En, Tr}); eksik her seviye bir ustunun altina kurulur, var olana baglanilir. Liste ekraninda Grid, Card, Pivot ve Chart gorunumleri varsayilan aciktir (DefaultLayout grid); kullanici bir gorunumu istemedigini soylemedikce bu bayraklari false yazma. Hedef tablo onceden var olmalidir; yoksa once create_table ile olustur. Istek ornek/demo veri tasiyorsa (prompt'taki tablo/liste ya da ekran goruntusunde gorunen satirlar) SeedData true yaz ve satirlarin hepsini ayni cagrida seedRows ile gonder: satirlar ekranin data/{ListFormCode}.json dosyasina yazilir, migrate ekrani kurduktan sonra ekler. Satirlar icin migrate'i bekleyip insert_row kullanma. replaceFileName verilirse o wizard'in dosyalari yeniden yazilir, onceki kayitlarin yerini migrate'te yenileri alir. Wizard cevaplarinin uretmedigi ekran ayarlari (FormFieldsDefaultValueDto/InsertFieldsDefaultValueDto gibi varsayilan degerler, ValidationRuleDto, Format, Alignment, Width, Visible, BandName, ozet/gruplama, ExtraFilter, Insert/Update/Delete komutlari, PageSize, CommandColumnDto …) ayni JSON'un ListForm ve Fields bolumlerine get_wizard ciktisindaki adlarla yazilir. Yeni kaydin form degeri (Aktif = true, Birim = Adet, Kur = TRY, Sure = 60) ayri yazilmaz: deploy kolonun tablodaki sabit DEFAULT degerini okur; tablodan farkli deger gerekiyorsa alan ogesinde DefaultValue yaz (Groups[].Items[].DefaultValue). StaticData lookup seceneklerinde (RadioGroup, SelectBox, TagBox) name dil anahtaridir (App.StaticLookup.{Key}); EN + TR metni bilinen secenegi Language.Texts'te ver, duz metin yazilirsa deploy onu anahtara cevirip TR'yi metinden yazar (get_dev_guide 4.3.4.1). Wizard girdisinde taninmayan anahtar adiyla reddedilir, baska adla tekrar deneme; bolumler kismi olabilir (yalnizca degisen anahtarlar), Fields ogeleri FieldName ile eslesir, *Json adlari (FormFieldsDefaultValueJson) *Dto karsiligina cevrilir. Guncellemede get_wizard ciktisini butunuyle degistirip gonder: tasarimci ayarlari korunur; Wizard bolumunde yazdigin cevap ayni ayarin ListForm'daki eski degerine ustun gelir. Kimlik alanlari (ListFormCode, Name, Title, Description, PermissionDto, FieldName) wizard'dan gelir. Fields'taki her alan Wizard Groups'ta da bulunmalidir; tanınmayan ya da hesaplanan bir anahtar reddedilir. Liste ekraninda DescTr ve DescEn ayrintili olmali (en az 3 satir, 150 karakter): ekran basligindaki bilgi simgesinde gosterilir; ne ise yaradigi, menude nerede ya da hangi ekranin sekmesi oldugu, ana alanlar, otomatik hesaplar ve iliskili ekranlar yazilir (get_dev_guide 4.4.2); kisa aciklama reddedilir. Deploy modulun dokumanini (docs/modules) acar ya da envanterini yeniler; elle yazilan bolumleri save_module_doc ile doldur. Ne yazacagini get_dev_guide 4. bolumunden ogren.")]
public async Task<WizardFileInfoDto?> DeployWizardAsync(
[Description("Wizard JSON'u: seed dosyasi bicimi ({\"Wizard\": {...}, \"ListForm\": {...}, \"Fields\": [...]}, get_wizard cikisi gibi) ya da duz wizard cevaplari. ListForm/Fields istege baglidir ve kismi olabilir. Enum alanlari sayi olarak yazilir.")]
string wizard,

View file

@ -346,6 +346,7 @@ public class ListFormWizardAppService(
(listFormDto, fieldDtos) = await ApplyScreenOverlayAsync(input, listFormDto, fieldDtos, isDeleted, isCreated, rows);
ValidateImageColumnLengths(input, tableColumns);
await LocalizeStaticLookupsAsync(input, fieldDtos, rows, owned, inserted);
foreach (var item in input.Groups.SelectMany(g => g.Items))
await WriteLanguageRowsAsync(rows, item.CaptionName, item.EnglishCaption, item.TurkishCaption, owned, inserted);
@ -366,6 +367,118 @@ public class ListFormWizardAppService(
}
}
/// <summary>
/// Sabit lookup (RadioGroup, SelectBox, TagBox …) secenek metinleri dil anahtariyla tasinir; ekran
/// diline gore cevrilir. Metin olarak yazilmis secenek (<c>{"key":"Wares","name":"Mallar"}</c>)
/// <c>App.StaticLookup.{Key}</c> anahtarina cevrilir ve EN + TR satirlari dil dosyasina yazilir:
/// TR verilen metindir, EN anahtarin kelimeleridir (sayisal anahtarda TR metni). Ayni TR metnini
/// tasiyan bir StaticLookup anahtari varsa o kullanilir; ayni ad baska metinle varsa anahtar alanla
/// ayrilir. Dil anahtari olan ya da <c>LanguageTexts</c>'te tanimlanan secenege dokunulmaz.
/// </summary>
private async Task LocalizeStaticLookupsAsync(
ListFormWizardDto input,
List<ColumnFormatEditDto> fields,
WizardSeedRowStore rows,
WizardInsertedRecordsDto owned,
WizardInsertedRecordsDto inserted)
{
var res = PlatformConsts.AppName;
var prefix = WizardConsts.StaticLookupKeyPrefix;
var declared = (input.LanguageTexts ?? [])
.Select(t => t.Key?.Trim())
.OfType<string>()
.ToHashSet(StringComparer.OrdinalIgnoreCase);
async Task<bool> IsLanguageKeyAsync(string text) =>
declared.Contains(text) ||
rows.Contains(WizardSeedRowStore.LanguageTextFile, nameof(LanguageText.Key), text) ||
await repoLangKey.AnyAsync(a => a.ResourceName == res && a.Key == text);
foreach (var field in fields)
{
var lookup = field.LookupDto;
if (lookup.DataSourceType != UiLookupDataSourceTypeEnum.StaticData || string.IsNullOrWhiteSpace(lookup.LookupQuery))
continue;
JsonArray? options;
try
{
options = JsonNode.Parse(lookup.LookupQuery) as JsonArray;
}
catch (JsonException)
{
continue;
}
var changed = false;
var position = 0;
foreach (var option in (options ?? []).OfType<JsonObject>())
{
position++;
var nameKey = option.FirstOrDefault(x => string.Equals(x.Key, "name", StringComparison.OrdinalIgnoreCase)).Key;
var keyKey = option.FirstOrDefault(x => string.Equals(x.Key, "key", StringComparison.OrdinalIgnoreCase)).Key;
var text = nameKey == null ? null : option[nameKey]?.ToString().Trim();
if (string.IsNullOrWhiteSpace(text) || await IsLanguageKeyAsync(text))
continue;
var value = keyKey == null ? string.Empty : option[keyKey]?.ToString().Trim() ?? string.Empty;
var isWord = StaticLookupWordRegex.IsMatch(value);
// Anahtar dil anahtarinda gecebilecek bir kelime/sayi degilse ("0 Rh+", "Ziyaretçi") sira kullanilir.
var suffix = StaticLookupSuffixRegex.IsMatch(value) ? value : position.ToString(System.Globalization.CultureInfo.InvariantCulture);
var langKey = await FindStaticLookupKeyAsync(rows, prefix, text)
?? await NewStaticLookupKeyAsync(rows, prefix, field.FieldName, suffix, isWord, text);
await WriteLanguageRowsAsync(rows, langKey, isWord ? SplitWords(value) : text, text, owned, inserted);
option[nameKey!] = langKey;
changed = true;
}
if (changed)
{
lookup.LookupQuery = options!.ToJsonString();
field.LookupDto = lookup;
}
}
}
/// <summary>TR metni ayni olan mevcut StaticLookup anahtari (veritabani ya da bekleyen dil satirlari).</summary>
private async Task<string?> FindStaticLookupKeyAsync(WizardSeedRowStore rows, string prefix, string text)
{
var res = PlatformConsts.AppName;
var keyPrefix = prefix + ".";
var fromDb = (await repoLangText.GetListAsync(a =>
a.ResourceName == res && a.CultureName == LanguageCodes.Tr && a.Value == text && a.Key!.StartsWith(keyPrefix)))
.Select(a => a.Key)
.FirstOrDefault();
return fromDb ?? rows.Rows(WizardSeedRowStore.LanguageTextFile)
.Where(r => string.Equals(WizardSeedRowStore.Text(r, nameof(LanguageText.CultureName)), LanguageCodes.Tr, StringComparison.OrdinalIgnoreCase) &&
string.Equals(WizardSeedRowStore.Text(r, nameof(LanguageText.Value)), text, StringComparison.Ordinal))
.Select(r => WizardSeedRowStore.Text(r, nameof(LanguageText.Key)))
.FirstOrDefault(k => k != null && k.StartsWith(keyPrefix, StringComparison.Ordinal));
}
/// <summary>
/// Yeni anahtar: kelime anahtarda <c>{onek}.{Key}</c>, sayisal anahtarda <c>{onek}.{Alan}{Key}</c>. Ad baska
/// bir metinle aliniysa alan adiyla ayrilir.
/// </summary>
private async Task<string> NewStaticLookupKeyAsync(WizardSeedRowStore rows, string prefix, string? fieldName, string value, bool isWord, string text)
{
var candidate = isWord ? $"{prefix}.{value}" : $"{prefix}.{fieldName}{value}";
var (_, tr) = await GetLangTextsAsync(rows, candidate);
return tr == null || string.Equals(tr, text, StringComparison.Ordinal)
? candidate
: $"{prefix}.{fieldName}.{value}";
}
/// <summary><c>BySerialNumber</c> → <c>By Serial Number</c>; Ingilizce metin anahtarin kendisidir.</summary>
private static string SplitWords(string value) =>
Regex.Replace(value, "(?<=[a-z0-9])(?=[A-Z])|(?<=[A-Z])(?=[A-Z][a-z])", " ");
private static readonly Regex StaticLookupWordRegex = new(@"^[A-Za-z][A-Za-z0-9]*$", RegexOptions.Compiled);
private static readonly Regex StaticLookupSuffixRegex = new(@"^[A-Za-z0-9]+$", RegexOptions.Compiled);
/// <summary>
/// Deploy girdisindeki ListForm/Fields bolumlerini uretilen ekrana uygular
/// (<see cref="WizardScreenOverlay"/>) ve wizard cevaplarini son sozlesmeyle esitler; sonraki

View file

@ -27,6 +27,9 @@ public static class WizardConsts
/// <summary>Ekranin varsayilan veri seed dosyasi, seed klasorune gore goreli.</summary>
public static string SeedDataFilePath(string listFormCode) => $"{SeedDataFolder}/{listFormCode}.json";
/// <summary>Sabit lookup (StaticData) seceneklerinin dil anahtari oneki; anahtar <c>{onek}.{Key}</c>.</summary>
public static string StaticLookupKeyPrefix => $"{Prefix.App}.StaticLookup";
public static string MenuUrl(string code) => $"/admin/list/{code}";
public static string MenuIcon => "FcList";

View file

@ -228,6 +228,10 @@ Bir çelişki varsa sıra: `ai.instructions.md` → `dotnet.instructions.md` →
(`*CurrencyId`/`*Currency`) → `'TRY'` (lookup'ın anahtarı neyse); talepte başka sabit varsayılan
varsa (Süre = 60) o da kolonun `DEFAULT`'udur. Alana özel değer wizard öğesinin `DefaultValue`'su ile
verilir. Ayrıntı: `lowcode.instructions.md` §4.3.5.1.
19. **Sabit lookup seçenekleri** → RadioGroup/SelectBox/TagBox/Autocomplete'in `StaticData` seçeneklerinde
`name` düz metin değil `App.StaticLookup.*` dil anahtarıdır; EN + TR satırı dil dosyasına yazılır.
Deploy düz metni kendisi anahtara çevirir (aynı TR metinli anahtar varsa onu kullanır) —
`ListFormWizardAppService.LocalizeStaticLookupsAsync`, `lowcode.instructions.md` §4.3.4.1.
### Cross-cutting: touching one thing means touching these too

View file

@ -23,6 +23,11 @@
"Name": "App.Prc",
"DisplayName": "App.Prc",
"Order": 4
},
{
"Name": "App.Inventory",
"DisplayName": "App.Inventory",
"Order": 5
}
]
}

File diff suppressed because it is too large Load diff

File diff suppressed because one or more lines are too long

View file

@ -0,0 +1,29 @@
{
"ListFormCode": "App.Inventory.Attribute",
"KeyFieldName": "Id",
"GeneratedAt": "2026-10-07T18:50:26.7579148Z",
"Order": 0,
"Rows": [
{
"Name": "renk",
"DisplayType": "Radio",
"VariantCreation": "Always",
"IsActive": true,
"Id": "03475830-5dac-8eda-492e-3a2429e0b845"
},
{
"Name": "malzeme",
"DisplayType": "Radio",
"VariantCreation": "Always",
"IsActive": true,
"Id": "951b3f94-cf17-5881-d58d-3a2429e0b845"
},
{
"Name": "boyut",
"DisplayType": "Radio",
"VariantCreation": "Always",
"IsActive": true,
"Id": "50c303c8-5dc8-fb22-6e39-3a2429e0b845"
}
]
}

View file

@ -0,0 +1,58 @@
{
"ListFormCode": "App.Inventory.Product",
"KeyFieldName": "Id",
"GeneratedAt": "2026-10-07T19:07:17.0558424Z",
"Order": 0,
"Rows": [
{
"Name": "(40X40mm) Mamül Sepeti Üst Geçme Kepi",
"IsFavorite": true,
"CanBeSold": true,
"CanBeExpensed": false,
"CanBePurchased": false,
"ProductType": "Wares",
"TrackInventory": true,
"TrackingMethod": "Quantity",
"UomId": "Adet",
"PurchaseUomId": "Adet",
"SalesPrice": 1,
"Cost": 0,
"IsActive": true,
"Id": "c2afde78-e0ff-31e7-12ec-3a2429f022bf"
},
{
"Name": "(K.M.G) AUTONİCS PR12-4DN Sensör",
"InternalReference": "060104763",
"IsFavorite": false,
"CanBeSold": false,
"CanBeExpensed": false,
"CanBePurchased": true,
"ProductType": "Wares",
"TrackInventory": true,
"TrackingMethod": "Quantity",
"UomId": "Adet",
"PurchaseUomId": "Adet",
"SalesPrice": 1,
"Cost": 0,
"IsActive": true,
"Id": "9df0e297-3601-2d31-1b1e-3a2429f022bf"
},
{
"Name": "(K.M.G) 2A Cam Sigorta (5*20)",
"InternalReference": "060104796",
"IsFavorite": false,
"CanBeSold": false,
"CanBeExpensed": false,
"CanBePurchased": true,
"ProductType": "Wares",
"TrackInventory": true,
"TrackingMethod": "Serial",
"UomId": "Adet",
"PurchaseUomId": "Adet",
"SalesPrice": 1,
"Cost": 0,
"IsActive": true,
"Id": "4de8b328-a0bf-3b36-96d9-3a2429f022bf"
}
]
}

View file

@ -0,0 +1,23 @@
{
"ListFormCode": "App.Inventory.ProductCategory",
"KeyFieldName": "Id",
"GeneratedAt": "2026-10-07T18:49:31.9220403Z",
"Order": 0,
"Rows": [
{
"Name": "Elektrik ve Elektronik Malzemeler",
"IsActive": true,
"Id": "cbb5c03f-e9f0-f916-7574-3a2429dfe211"
},
{
"Name": "Mamuller",
"IsActive": true,
"Id": "ac5ef4ce-aa21-0bcd-db9d-3a2429dfe211"
},
{
"Name": "Hammaddeler",
"IsActive": true,
"Id": "eb9eed73-a7e1-5b5b-c31b-3a2429dfe211"
}
]
}

View file

@ -0,0 +1,15 @@
{
"ListFormCode": "App.Inventory.WorkCenter",
"KeyFieldName": "Id",
"GeneratedAt": "2026-10-07T18:52:50.5777632Z",
"Order": 0,
"Rows": [
{
"Name": "ram makinası",
"Code": "RAM-01",
"WeeklyWorkingHours": 40,
"IsActive": true,
"Id": "f7be4192-3006-1d5a-1744-3a2429e2ea11"
}
]
}

View file

@ -0,0 +1,26 @@
{
"ListFormCode": "App.Inventory.WorkCenterTag",
"KeyFieldName": "Id",
"GeneratedAt": "2026-10-07T18:50:53.8612727Z",
"Order": 0,
"Rows": [
{
"Name": "Boyahane",
"Color": "#3B82F6",
"IsActive": true,
"Id": "8f8d57ee-0eef-a5c4-21e9-3a2429e12225"
},
{
"Name": "Apre",
"Color": "#10B981",
"IsActive": true,
"Id": "500d2007-779a-c07b-16dc-3a2429e12225"
},
{
"Name": "Montaj",
"Color": "#F59E0B",
"IsActive": true,
"Id": "9dcfbb38-b8ca-5c1e-ef93-3a2429e12225"
}
]
}

File diff suppressed because it is too large Load diff

View file

@ -2403,6 +2403,171 @@
"IsDisabled": false,
"ElementId": null,
"ModuleId": "Prc"
},
{
"Id": "368baecf-9d36-481a-b262-75b76fa047b5",
"Code": "App.Inventory",
"DisplayName": "App.Inventory",
"Order": 6,
"Url": null,
"Icon": "FcPackage",
"ParentCode": null,
"RequiredPermissionName": null,
"CssClass": null,
"Target": null,
"IsDisabled": false,
"ElementId": null,
"ModuleId": "Inventory"
},
{
"Id": "2a4977b2-e669-427a-90f6-ec4cf7676a8d",
"Code": "App.Inventory.Definitions",
"DisplayName": "App.Inventory.Definitions",
"Order": 1,
"Url": null,
"Icon": "FcSettings",
"ParentCode": "App.Inventory",
"RequiredPermissionName": null,
"CssClass": null,
"Target": null,
"IsDisabled": false,
"ElementId": null,
"ModuleId": "Inventory"
},
{
"Id": "a8b039c3-0d45-47e2-b853-cddfe582ee62",
"Code": "App.Inventory.ProductCategory",
"DisplayName": "App.Inventory.ProductCategory",
"Order": 1,
"Url": "/admin/list/App.Inventory.ProductCategory",
"Icon": "FcFolder",
"ParentCode": "App.Inventory.Definitions",
"RequiredPermissionName": "App.Inventory.ProductCategory",
"CssClass": null,
"Target": null,
"IsDisabled": false,
"ElementId": null,
"ModuleId": "Inventory"
},
{
"Id": "82049459-1bbb-457e-bdbe-b3a3031af284",
"Code": "App.Inventory.Attribute",
"DisplayName": "App.Inventory.Attribute",
"Order": 2,
"Url": "/admin/list/App.Inventory.Attribute",
"Icon": "FcList",
"ParentCode": "App.Inventory.Definitions",
"RequiredPermissionName": "App.Inventory.Attribute",
"CssClass": null,
"Target": null,
"IsDisabled": false,
"ElementId": null,
"ModuleId": "Inventory"
},
{
"Id": "a5f6fb2f-798b-4368-8a4c-29a5ff57d7b5",
"Code": "App.Inventory.WorkCenterTag",
"DisplayName": "App.Inventory.WorkCenterTag",
"Order": 3,
"Url": "/admin/list/App.Inventory.WorkCenterTag",
"Icon": "FcBookmark",
"ParentCode": "App.Inventory.Definitions",
"RequiredPermissionName": "App.Inventory.WorkCenterTag",
"CssClass": null,
"Target": null,
"IsDisabled": false,
"ElementId": null,
"ModuleId": "Inventory"
},
{
"Id": "f7d77dcb-7e31-4417-89f0-ac2cf925f374",
"Code": "App.Inventory.WorkCenter",
"DisplayName": "App.Inventory.WorkCenter",
"Order": 4,
"Url": "/admin/list/App.Inventory.WorkCenter",
"Icon": "FcFactory",
"ParentCode": "App.Inventory.Definitions",
"RequiredPermissionName": "App.Inventory.WorkCenter",
"CssClass": null,
"Target": null,
"IsDisabled": false,
"ElementId": null,
"ModuleId": "Inventory"
},
{
"Id": "037872c0-b06f-42b5-ac71-b9b5c35b2ffb",
"Code": "App.Inventory.Operation",
"DisplayName": "App.Inventory.Operation",
"Order": 5,
"Url": "/admin/list/App.Inventory.Operation",
"Icon": "FcProcess",
"ParentCode": "App.Inventory.Definitions",
"RequiredPermissionName": "App.Inventory.Operation",
"CssClass": null,
"Target": null,
"IsDisabled": false,
"ElementId": null,
"ModuleId": "Inventory"
},
{
"Id": "f44c0adc-c5d7-46b2-b272-4b8fe6695359",
"Code": "App.Inventory.ProductVariant",
"DisplayName": "App.Inventory.ProductVariant",
"Order": 7,
"Url": "/admin/list/App.Inventory.ProductVariant",
"Icon": "FcGrid",
"ParentCode": "App.Inventory.Definitions",
"RequiredPermissionName": "App.Inventory.ProductVariant",
"CssClass": null,
"Target": null,
"IsDisabled": false,
"ElementId": null,
"ModuleId": "Inventory"
},
{
"Id": "098fe488-799c-4d37-81f4-a3b32e4b7871",
"Code": "App.Inventory.BomOverview",
"DisplayName": "App.Inventory.BomOverview",
"Order": 9,
"Url": "/admin/list/App.Inventory.BomOverview",
"Icon": "FcTreeStructure",
"ParentCode": "App.Inventory.Definitions",
"RequiredPermissionName": "App.Inventory.BomOverview",
"CssClass": null,
"Target": null,
"IsDisabled": false,
"ElementId": null,
"ModuleId": "Inventory"
},
{
"Id": "8d122546-5d4b-44ad-9a76-d1a348e59b38",
"Code": "App.Inventory.Bom",
"DisplayName": "App.Inventory.Bom",
"Order": 8,
"Url": "/admin/list/App.Inventory.Bom",
"Icon": "FcDocument",
"ParentCode": "App.Inventory.Definitions",
"RequiredPermissionName": "App.Inventory.Bom",
"CssClass": null,
"Target": null,
"IsDisabled": false,
"ElementId": null,
"ModuleId": "Inventory"
},
{
"Id": "0d6d7172-6046-4be7-a144-2d57128fc80d",
"Code": "App.Inventory.Product",
"DisplayName": "App.Inventory.Product",
"Order": 6,
"Url": "/admin/list/App.Inventory.Product",
"Icon": "FcShop",
"ParentCode": "App.Inventory.Definitions",
"RequiredPermissionName": "App.Inventory.Product",
"CssClass": null,
"Target": null,
"IsDisabled": false,
"ElementId": null,
"ModuleId": "Inventory"
}
]
}

View file

@ -23,6 +23,10 @@
{
"Id": "Prc",
"Name": "Prc"
},
{
"Id": "Inventory",
"Name": "Inventory"
}
]
}

File diff suppressed because one or more lines are too long

View file

@ -0,0 +1,17 @@
CREATE TABLE IF NOT EXISTS public."Inv_T_Attribute"
(
"Id" uuid NOT NULL DEFAULT gen_random_uuid(),
"TenantId" uuid NULL,
"Name" varchar(128) NOT NULL,
"DisplayType" varchar(16) NOT NULL DEFAULT 'Radio',
"VariantCreation" varchar(16) NOT NULL DEFAULT 'Always',
"IsActive" boolean NOT NULL DEFAULT TRUE,
"CreationTime" timestamp NOT NULL DEFAULT (NOW() AT TIME ZONE 'UTC'),
"CreatorId" uuid NULL,
"LastModificationTime" timestamp NULL,
"LastModifierId" uuid NULL,
"IsDeleted" boolean NOT NULL DEFAULT FALSE,
"DeletionTime" timestamp NULL,
"DeleterId" uuid NULL,
CONSTRAINT "PK_Inv_T_Attribute" PRIMARY KEY ("Id")
);

View file

@ -0,0 +1,20 @@
CREATE TABLE IF NOT EXISTS public."Inv_T_AttributeValue"
(
"Id" uuid NOT NULL DEFAULT gen_random_uuid(),
"TenantId" uuid NULL,
"AttributeId" uuid NOT NULL,
"Name" varchar(128) NOT NULL,
"IsCustom" boolean NOT NULL DEFAULT FALSE,
"ExtraPrice" numeric(18, 4) NOT NULL DEFAULT 0,
"ColorCode" varchar(16) NULL,
"SortOrder" integer NOT NULL DEFAULT 0,
"IsActive" boolean NOT NULL DEFAULT TRUE,
"CreationTime" timestamp NOT NULL DEFAULT (NOW() AT TIME ZONE 'UTC'),
"CreatorId" uuid NULL,
"LastModificationTime" timestamp NULL,
"LastModifierId" uuid NULL,
"IsDeleted" boolean NOT NULL DEFAULT FALSE,
"DeletionTime" timestamp NULL,
"DeleterId" uuid NULL,
CONSTRAINT "PK_Inv_T_AttributeValue" PRIMARY KEY ("Id")
);

View file

@ -0,0 +1,24 @@
CREATE TABLE IF NOT EXISTS public."Inv_T_Bom"
(
"Id" uuid NOT NULL DEFAULT gen_random_uuid(),
"TenantId" uuid NULL,
"ProductId" uuid NOT NULL,
"VariantKey" varchar(450) NULL,
"Quantity" numeric(18, 4) NOT NULL DEFAULT 1,
"UomId" varchar(64) NOT NULL,
"Reference" varchar(64) NULL,
"ReadyToProduce" varchar(16) NOT NULL DEFAULT 'AllAvailable',
"FlexibleConsumption" varchar(16) NOT NULL DEFAULT 'Warning',
"ProductionLeadDays" integer NOT NULL DEFAULT 0,
"PreparationDays" integer NOT NULL DEFAULT 0,
"BatchSize" numeric(18, 4) NULL,
"IsActive" boolean NOT NULL DEFAULT TRUE,
"CreationTime" timestamp NOT NULL DEFAULT (NOW() AT TIME ZONE 'UTC'),
"CreatorId" uuid NULL,
"LastModificationTime" timestamp NULL,
"LastModifierId" uuid NULL,
"IsDeleted" boolean NOT NULL DEFAULT FALSE,
"DeletionTime" timestamp NULL,
"DeleterId" uuid NULL,
CONSTRAINT "PK_Inv_T_Bom" PRIMARY KEY ("Id")
);

View file

@ -0,0 +1,20 @@
CREATE TABLE IF NOT EXISTS public."Inv_T_BomComponent"
(
"Id" uuid NOT NULL DEFAULT gen_random_uuid(),
"TenantId" uuid NULL,
"BomId" uuid NOT NULL,
"ProductId" uuid NOT NULL,
"VariantKey" varchar(450) NULL,
"Quantity" numeric(18, 4) NOT NULL DEFAULT 1,
"UomId" varchar(64) NOT NULL,
"BomOperationId" uuid NULL,
"SortOrder" integer NOT NULL DEFAULT 0,
"CreationTime" timestamp NOT NULL DEFAULT (NOW() AT TIME ZONE 'UTC'),
"CreatorId" uuid NULL,
"LastModificationTime" timestamp NULL,
"LastModifierId" uuid NULL,
"IsDeleted" boolean NOT NULL DEFAULT FALSE,
"DeletionTime" timestamp NULL,
"DeleterId" uuid NULL,
CONSTRAINT "PK_Inv_T_BomComponent" PRIMARY KEY ("Id")
);

View file

@ -0,0 +1,18 @@
CREATE TABLE IF NOT EXISTS public."Inv_T_BomOperation"
(
"Id" uuid NOT NULL DEFAULT gen_random_uuid(),
"TenantId" uuid NULL,
"BomId" uuid NOT NULL,
"OperationId" uuid NOT NULL,
"WorkCenterId" uuid NOT NULL,
"DurationMin" numeric(18, 4) NOT NULL DEFAULT 60,
"SortOrder" integer NOT NULL DEFAULT 0,
"CreationTime" timestamp NOT NULL DEFAULT (NOW() AT TIME ZONE 'UTC'),
"CreatorId" uuid NULL,
"LastModificationTime" timestamp NULL,
"LastModifierId" uuid NULL,
"IsDeleted" boolean NOT NULL DEFAULT FALSE,
"DeletionTime" timestamp NULL,
"DeleterId" uuid NULL,
CONSTRAINT "PK_Inv_T_BomOperation" PRIMARY KEY ("Id")
);

View file

@ -0,0 +1,20 @@
CREATE TABLE IF NOT EXISTS public."Inv_T_Operation"
(
"Id" uuid NOT NULL DEFAULT gen_random_uuid(),
"TenantId" uuid NULL,
"Name" varchar(128) NOT NULL,
"WorkCenterId" uuid NOT NULL,
"ApplyOnVariants" varchar(4000) NULL,
"CostBasis" varchar(16) NOT NULL DEFAULT 'Actual',
"DurationMode" varchar(16) NOT NULL DEFAULT 'Fixed',
"DefaultDurationMin" numeric(18, 4) NOT NULL DEFAULT 60,
"IsActive" boolean NOT NULL DEFAULT TRUE,
"CreationTime" timestamp NOT NULL DEFAULT (NOW() AT TIME ZONE 'UTC'),
"CreatorId" uuid NULL,
"LastModificationTime" timestamp NULL,
"LastModifierId" uuid NULL,
"IsDeleted" boolean NOT NULL DEFAULT FALSE,
"DeletionTime" timestamp NULL,
"DeleterId" uuid NULL,
CONSTRAINT "PK_Inv_T_Operation" PRIMARY KEY ("Id")
);

View file

@ -0,0 +1,19 @@
CREATE TABLE IF NOT EXISTS public."Inv_T_OperationInstruction"
(
"Id" uuid NOT NULL DEFAULT gen_random_uuid(),
"TenantId" uuid NULL,
"OperationId" uuid NOT NULL,
"Title" varchar(256) NOT NULL,
"InstructionType" varchar(16) NOT NULL DEFAULT 'Text',
"Reference" varchar(1000) NULL,
"Note" text NULL,
"SortOrder" integer NOT NULL DEFAULT 0,
"CreationTime" timestamp NOT NULL DEFAULT (NOW() AT TIME ZONE 'UTC'),
"CreatorId" uuid NULL,
"LastModificationTime" timestamp NULL,
"LastModifierId" uuid NULL,
"IsDeleted" boolean NOT NULL DEFAULT FALSE,
"DeletionTime" timestamp NULL,
"DeleterId" uuid NULL,
CONSTRAINT "PK_Inv_T_OperationInstruction" PRIMARY KEY ("Id")
);

View file

@ -0,0 +1,47 @@
CREATE TABLE IF NOT EXISTS public."Inv_T_Product"
(
"Id" uuid NOT NULL DEFAULT gen_random_uuid(),
"TenantId" uuid NULL,
"Name" varchar(256) NOT NULL,
"Image" text NULL,
"IsFavorite" boolean NOT NULL DEFAULT FALSE,
"CanBeSold" boolean NOT NULL DEFAULT TRUE,
"CanBeExpensed" boolean NOT NULL DEFAULT FALSE,
"CanBePurchased" boolean NOT NULL DEFAULT TRUE,
"ProductType" varchar(16) NOT NULL DEFAULT 'Wares',
"TrackInventory" boolean NOT NULL DEFAULT FALSE,
"TrackingMethod" varchar(16) NULL,
"InternalReference" varchar(64) NULL,
"Barcode" varchar(64) NULL,
"GtipCode" varchar(32) NULL,
"CategoryId" uuid NULL,
"UomId" varchar(64) NOT NULL,
"PurchaseUomId" varchar(64) NULL,
"SalesPrice" numeric(18, 4) NOT NULL DEFAULT 0,
"Cost" numeric(18, 4) NOT NULL DEFAULT 0,
"SalesTaxRate" numeric(18, 4) NOT NULL DEFAULT 20,
"PurchaseTaxRate" numeric(18, 4) NOT NULL DEFAULT 20,
"InternalNotes" text NULL,
"ResponsibleUserId" uuid NULL,
"Weight" numeric(18, 4) NULL,
"Volume" numeric(18, 4) NULL,
"OriginCountryId" varchar(64) NULL,
"LotValuation" boolean NOT NULL DEFAULT FALSE,
"CustomLotSerial" varchar(64) NULL,
"ReceiptNote" text NULL,
"DeliveryNote" text NULL,
"InternalTransferNote" text NULL,
"PurchaseControlPolicy" varchar(16) NOT NULL DEFAULT 'Received',
"PurchaseDescription" text NULL,
"IncomeAccount" varchar(64) NULL,
"ExpenseAccount" varchar(64) NULL,
"IsActive" boolean NOT NULL DEFAULT TRUE,
"CreationTime" timestamp NOT NULL DEFAULT (NOW() AT TIME ZONE 'UTC'),
"CreatorId" uuid NULL,
"LastModificationTime" timestamp NULL,
"LastModifierId" uuid NULL,
"IsDeleted" boolean NOT NULL DEFAULT FALSE,
"DeletionTime" timestamp NULL,
"DeleterId" uuid NULL,
CONSTRAINT "PK_Inv_T_Product" PRIMARY KEY ("Id")
);

View file

@ -0,0 +1,16 @@
CREATE TABLE IF NOT EXISTS public."Inv_T_ProductAttributeLine"
(
"Id" uuid NOT NULL DEFAULT gen_random_uuid(),
"TenantId" uuid NULL,
"ProductId" uuid NOT NULL,
"AttributeId" uuid NOT NULL,
"ValueIds" varchar(4000) NOT NULL,
"CreationTime" timestamp NOT NULL DEFAULT (NOW() AT TIME ZONE 'UTC'),
"CreatorId" uuid NULL,
"LastModificationTime" timestamp NULL,
"LastModifierId" uuid NULL,
"IsDeleted" boolean NOT NULL DEFAULT FALSE,
"DeletionTime" timestamp NULL,
"DeleterId" uuid NULL,
CONSTRAINT "PK_Inv_T_ProductAttributeLine" PRIMARY KEY ("Id")
);

View file

@ -0,0 +1,16 @@
CREATE TABLE IF NOT EXISTS public."Inv_T_ProductCategory"
(
"Id" uuid NOT NULL DEFAULT gen_random_uuid(),
"TenantId" uuid NULL,
"Name" varchar(128) NOT NULL,
"ParentId" uuid NULL,
"IsActive" boolean NOT NULL DEFAULT TRUE,
"CreationTime" timestamp NOT NULL DEFAULT (NOW() AT TIME ZONE 'UTC'),
"CreatorId" uuid NULL,
"LastModificationTime" timestamp NULL,
"LastModifierId" uuid NULL,
"IsDeleted" boolean NOT NULL DEFAULT FALSE,
"DeletionTime" timestamp NULL,
"DeleterId" uuid NULL,
CONSTRAINT "PK_Inv_T_ProductCategory" PRIMARY KEY ("Id")
);

View file

@ -0,0 +1,21 @@
CREATE TABLE IF NOT EXISTS public."Inv_T_ProductSupplier"
(
"Id" uuid NOT NULL DEFAULT gen_random_uuid(),
"TenantId" uuid NULL,
"ProductId" uuid NOT NULL,
"ContactId" uuid NOT NULL,
"MinQuantity" numeric(18, 4) NOT NULL DEFAULT 1,
"UomId" varchar(64) NULL,
"Price" numeric(18, 4) NOT NULL DEFAULT 0,
"CurrencyId" varchar(64) NULL,
"LeadTimeDays" integer NOT NULL DEFAULT 0,
"VariantKey" varchar(450) NULL,
"CreationTime" timestamp NOT NULL DEFAULT (NOW() AT TIME ZONE 'UTC'),
"CreatorId" uuid NULL,
"LastModificationTime" timestamp NULL,
"LastModifierId" uuid NULL,
"IsDeleted" boolean NOT NULL DEFAULT FALSE,
"DeletionTime" timestamp NULL,
"DeleterId" uuid NULL,
CONSTRAINT "PK_Inv_T_ProductSupplier" PRIMARY KEY ("Id")
);

View file

@ -0,0 +1,26 @@
CREATE TABLE IF NOT EXISTS public."Inv_T_WorkCenter"
(
"Id" uuid NOT NULL DEFAULT gen_random_uuid(),
"TenantId" uuid NULL,
"Name" varchar(128) NOT NULL,
"Code" varchar(32) NULL,
"Tags" varchar(1000) NULL,
"AlternativeWorkCenterIds" varchar(2000) NULL,
"WeeklyWorkingHours" numeric(18, 4) NOT NULL DEFAULT 40,
"TimeEfficiency" numeric(18, 4) NOT NULL DEFAULT 100,
"OeeTarget" numeric(18, 4) NOT NULL DEFAULT 90,
"SetupTimeMin" numeric(18, 4) NOT NULL DEFAULT 0,
"CleanupTimeMin" numeric(18, 4) NOT NULL DEFAULT 0,
"CostPerHour" numeric(18, 4) NOT NULL DEFAULT 0,
"EmployeeCostPerHour" numeric(18, 4) NOT NULL DEFAULT 0,
"Description" text NULL,
"IsActive" boolean NOT NULL DEFAULT TRUE,
"CreationTime" timestamp NOT NULL DEFAULT (NOW() AT TIME ZONE 'UTC'),
"CreatorId" uuid NULL,
"LastModificationTime" timestamp NULL,
"LastModifierId" uuid NULL,
"IsDeleted" boolean NOT NULL DEFAULT FALSE,
"DeletionTime" timestamp NULL,
"DeleterId" uuid NULL,
CONSTRAINT "PK_Inv_T_WorkCenter" PRIMARY KEY ("Id")
);

View file

@ -0,0 +1,19 @@
CREATE TABLE IF NOT EXISTS public."Inv_T_WorkCenterCapacity"
(
"Id" uuid NOT NULL DEFAULT gen_random_uuid(),
"TenantId" uuid NULL,
"WorkCenterId" uuid NOT NULL,
"ProductId" uuid NOT NULL,
"UomId" varchar(64) NULL,
"Capacity" numeric(18, 4) NOT NULL DEFAULT 1,
"SetupTimeMin" numeric(18, 4) NOT NULL DEFAULT 0,
"CleanupTimeMin" numeric(18, 4) NOT NULL DEFAULT 0,
"CreationTime" timestamp NOT NULL DEFAULT (NOW() AT TIME ZONE 'UTC'),
"CreatorId" uuid NULL,
"LastModificationTime" timestamp NULL,
"LastModifierId" uuid NULL,
"IsDeleted" boolean NOT NULL DEFAULT FALSE,
"DeletionTime" timestamp NULL,
"DeleterId" uuid NULL,
CONSTRAINT "PK_Inv_T_WorkCenterCapacity" PRIMARY KEY ("Id")
);

View file

@ -0,0 +1,16 @@
CREATE TABLE IF NOT EXISTS public."Inv_T_WorkCenterTag"
(
"Id" uuid NOT NULL DEFAULT gen_random_uuid(),
"TenantId" uuid NULL,
"Name" varchar(64) NOT NULL,
"Color" varchar(16) NULL,
"IsActive" boolean NOT NULL DEFAULT TRUE,
"CreationTime" timestamp NOT NULL DEFAULT (NOW() AT TIME ZONE 'UTC'),
"CreatorId" uuid NULL,
"LastModificationTime" timestamp NULL,
"LastModifierId" uuid NULL,
"IsDeleted" boolean NOT NULL DEFAULT FALSE,
"DeletionTime" timestamp NULL,
"DeleterId" uuid NULL,
CONSTRAINT "PK_Inv_T_WorkCenterTag" PRIMARY KEY ("Id")
);

View file

@ -0,0 +1,24 @@
IF OBJECT_ID(N'[dbo].[Inv_T_Attribute]', 'U') IS NULL
BEGIN
CREATE TABLE [dbo].[Inv_T_Attribute]
(
[Id] uniqueidentifier NOT NULL DEFAULT NEWID(),
[TenantId] uniqueidentifier NULL,
[Name] nvarchar(128) NOT NULL,
[DisplayType] nvarchar(16) NOT NULL DEFAULT 'Radio',
[VariantCreation] nvarchar(16) NOT NULL DEFAULT 'Always',
[IsActive] bit NOT NULL DEFAULT 1,
[CreationTime] datetime2 NOT NULL DEFAULT GETUTCDATE(),
[CreatorId] uniqueidentifier NULL,
[LastModificationTime] datetime2 NULL,
[LastModifierId] uniqueidentifier NULL,
[IsDeleted] bit NOT NULL DEFAULT 0,
[DeletionTime] datetime2 NULL,
[DeleterId] uniqueidentifier NULL,
CONSTRAINT [PK_Inv_T_Attribute] PRIMARY KEY NONCLUSTERED
(
[Id] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY]
) ON [PRIMARY]
END
GO

View file

@ -0,0 +1,27 @@
IF OBJECT_ID(N'[dbo].[Inv_T_AttributeValue]', 'U') IS NULL
BEGIN
CREATE TABLE [dbo].[Inv_T_AttributeValue]
(
[Id] uniqueidentifier NOT NULL DEFAULT NEWID(),
[TenantId] uniqueidentifier NULL,
[AttributeId] uniqueidentifier NOT NULL,
[Name] nvarchar(128) NOT NULL,
[IsCustom] bit NOT NULL DEFAULT 0,
[ExtraPrice] decimal(18, 4) NOT NULL DEFAULT 0,
[ColorCode] nvarchar(16) NULL,
[SortOrder] int NOT NULL DEFAULT 0,
[IsActive] bit NOT NULL DEFAULT 1,
[CreationTime] datetime2 NOT NULL DEFAULT GETUTCDATE(),
[CreatorId] uniqueidentifier NULL,
[LastModificationTime] datetime2 NULL,
[LastModifierId] uniqueidentifier NULL,
[IsDeleted] bit NOT NULL DEFAULT 0,
[DeletionTime] datetime2 NULL,
[DeleterId] uniqueidentifier NULL,
CONSTRAINT [PK_Inv_T_AttributeValue] PRIMARY KEY NONCLUSTERED
(
[Id] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY]
) ON [PRIMARY]
END
GO

View file

@ -0,0 +1,31 @@
IF OBJECT_ID(N'[dbo].[Inv_T_Bom]', 'U') IS NULL
BEGIN
CREATE TABLE [dbo].[Inv_T_Bom]
(
[Id] uniqueidentifier NOT NULL DEFAULT NEWID(),
[TenantId] uniqueidentifier NULL,
[ProductId] uniqueidentifier NOT NULL,
[VariantKey] nvarchar(450) NULL,
[Quantity] decimal(18, 4) NOT NULL DEFAULT 1,
[UomId] nvarchar(64) NOT NULL,
[Reference] nvarchar(64) NULL,
[ReadyToProduce] nvarchar(16) NOT NULL DEFAULT 'AllAvailable',
[FlexibleConsumption] nvarchar(16) NOT NULL DEFAULT 'Warning',
[ProductionLeadDays] int NOT NULL DEFAULT 0,
[PreparationDays] int NOT NULL DEFAULT 0,
[BatchSize] decimal(18, 4) NULL,
[IsActive] bit NOT NULL DEFAULT 1,
[CreationTime] datetime2 NOT NULL DEFAULT GETUTCDATE(),
[CreatorId] uniqueidentifier NULL,
[LastModificationTime] datetime2 NULL,
[LastModifierId] uniqueidentifier NULL,
[IsDeleted] bit NOT NULL DEFAULT 0,
[DeletionTime] datetime2 NULL,
[DeleterId] uniqueidentifier NULL,
CONSTRAINT [PK_Inv_T_Bom] PRIMARY KEY NONCLUSTERED
(
[Id] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY]
) ON [PRIMARY]
END
GO

View file

@ -0,0 +1,27 @@
IF OBJECT_ID(N'[dbo].[Inv_T_BomComponent]', 'U') IS NULL
BEGIN
CREATE TABLE [dbo].[Inv_T_BomComponent]
(
[Id] uniqueidentifier NOT NULL DEFAULT NEWID(),
[TenantId] uniqueidentifier NULL,
[BomId] uniqueidentifier NOT NULL,
[ProductId] uniqueidentifier NOT NULL,
[VariantKey] nvarchar(450) NULL,
[Quantity] decimal(18, 4) NOT NULL DEFAULT 1,
[UomId] nvarchar(64) NOT NULL,
[BomOperationId] uniqueidentifier NULL,
[SortOrder] int NOT NULL DEFAULT 0,
[CreationTime] datetime2 NOT NULL DEFAULT GETUTCDATE(),
[CreatorId] uniqueidentifier NULL,
[LastModificationTime] datetime2 NULL,
[LastModifierId] uniqueidentifier NULL,
[IsDeleted] bit NOT NULL DEFAULT 0,
[DeletionTime] datetime2 NULL,
[DeleterId] uniqueidentifier NULL,
CONSTRAINT [PK_Inv_T_BomComponent] PRIMARY KEY NONCLUSTERED
(
[Id] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY]
) ON [PRIMARY]
END
GO

View file

@ -0,0 +1,25 @@
IF OBJECT_ID(N'[dbo].[Inv_T_BomOperation]', 'U') IS NULL
BEGIN
CREATE TABLE [dbo].[Inv_T_BomOperation]
(
[Id] uniqueidentifier NOT NULL DEFAULT NEWID(),
[TenantId] uniqueidentifier NULL,
[BomId] uniqueidentifier NOT NULL,
[OperationId] uniqueidentifier NOT NULL,
[WorkCenterId] uniqueidentifier NOT NULL,
[DurationMin] decimal(18, 4) NOT NULL DEFAULT 60,
[SortOrder] int NOT NULL DEFAULT 0,
[CreationTime] datetime2 NOT NULL DEFAULT GETUTCDATE(),
[CreatorId] uniqueidentifier NULL,
[LastModificationTime] datetime2 NULL,
[LastModifierId] uniqueidentifier NULL,
[IsDeleted] bit NOT NULL DEFAULT 0,
[DeletionTime] datetime2 NULL,
[DeleterId] uniqueidentifier NULL,
CONSTRAINT [PK_Inv_T_BomOperation] PRIMARY KEY NONCLUSTERED
(
[Id] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY]
) ON [PRIMARY]
END
GO

View file

@ -0,0 +1,27 @@
IF OBJECT_ID(N'[dbo].[Inv_T_Operation]', 'U') IS NULL
BEGIN
CREATE TABLE [dbo].[Inv_T_Operation]
(
[Id] uniqueidentifier NOT NULL DEFAULT NEWID(),
[TenantId] uniqueidentifier NULL,
[Name] nvarchar(128) NOT NULL,
[WorkCenterId] uniqueidentifier NOT NULL,
[ApplyOnVariants] nvarchar(4000) NULL,
[CostBasis] nvarchar(16) NOT NULL DEFAULT 'Actual',
[DurationMode] nvarchar(16) NOT NULL DEFAULT 'Fixed',
[DefaultDurationMin] decimal(18, 4) NOT NULL DEFAULT 60,
[IsActive] bit NOT NULL DEFAULT 1,
[CreationTime] datetime2 NOT NULL DEFAULT GETUTCDATE(),
[CreatorId] uniqueidentifier NULL,
[LastModificationTime] datetime2 NULL,
[LastModifierId] uniqueidentifier NULL,
[IsDeleted] bit NOT NULL DEFAULT 0,
[DeletionTime] datetime2 NULL,
[DeleterId] uniqueidentifier NULL,
CONSTRAINT [PK_Inv_T_Operation] PRIMARY KEY NONCLUSTERED
(
[Id] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY]
) ON [PRIMARY]
END
GO

View file

@ -0,0 +1,26 @@
IF OBJECT_ID(N'[dbo].[Inv_T_OperationInstruction]', 'U') IS NULL
BEGIN
CREATE TABLE [dbo].[Inv_T_OperationInstruction]
(
[Id] uniqueidentifier NOT NULL DEFAULT NEWID(),
[TenantId] uniqueidentifier NULL,
[OperationId] uniqueidentifier NOT NULL,
[Title] nvarchar(256) NOT NULL,
[InstructionType] nvarchar(16) NOT NULL DEFAULT 'Text',
[Reference] nvarchar(1000) NULL,
[Note] nvarchar(MAX) NULL,
[SortOrder] int NOT NULL DEFAULT 0,
[CreationTime] datetime2 NOT NULL DEFAULT GETUTCDATE(),
[CreatorId] uniqueidentifier NULL,
[LastModificationTime] datetime2 NULL,
[LastModifierId] uniqueidentifier NULL,
[IsDeleted] bit NOT NULL DEFAULT 0,
[DeletionTime] datetime2 NULL,
[DeleterId] uniqueidentifier NULL,
CONSTRAINT [PK_Inv_T_OperationInstruction] PRIMARY KEY NONCLUSTERED
(
[Id] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY]
) ON [PRIMARY]
END
GO

View file

@ -0,0 +1,54 @@
IF OBJECT_ID(N'[dbo].[Inv_T_Product]', 'U') IS NULL
BEGIN
CREATE TABLE [dbo].[Inv_T_Product]
(
[Id] uniqueidentifier NOT NULL DEFAULT NEWID(),
[TenantId] uniqueidentifier NULL,
[Name] nvarchar(256) NOT NULL,
[Image] nvarchar(MAX) NULL,
[IsFavorite] bit NOT NULL DEFAULT 0,
[CanBeSold] bit NOT NULL DEFAULT 1,
[CanBeExpensed] bit NOT NULL DEFAULT 0,
[CanBePurchased] bit NOT NULL DEFAULT 1,
[ProductType] nvarchar(16) NOT NULL DEFAULT 'Wares',
[TrackInventory] bit NOT NULL DEFAULT 0,
[TrackingMethod] nvarchar(16) NULL,
[InternalReference] nvarchar(64) NULL,
[Barcode] nvarchar(64) NULL,
[GtipCode] nvarchar(32) NULL,
[CategoryId] uniqueidentifier NULL,
[UomId] nvarchar(64) NOT NULL,
[PurchaseUomId] nvarchar(64) NULL,
[SalesPrice] decimal(18, 4) NOT NULL DEFAULT 0,
[Cost] decimal(18, 4) NOT NULL DEFAULT 0,
[SalesTaxRate] decimal(18, 4) NOT NULL DEFAULT 20,
[PurchaseTaxRate] decimal(18, 4) NOT NULL DEFAULT 20,
[InternalNotes] nvarchar(MAX) NULL,
[ResponsibleUserId] uniqueidentifier NULL,
[Weight] decimal(18, 4) NULL,
[Volume] decimal(18, 4) NULL,
[OriginCountryId] nvarchar(64) NULL,
[LotValuation] bit NOT NULL DEFAULT 0,
[CustomLotSerial] nvarchar(64) NULL,
[ReceiptNote] nvarchar(MAX) NULL,
[DeliveryNote] nvarchar(MAX) NULL,
[InternalTransferNote] nvarchar(MAX) NULL,
[PurchaseControlPolicy] nvarchar(16) NOT NULL DEFAULT 'Received',
[PurchaseDescription] nvarchar(MAX) NULL,
[IncomeAccount] nvarchar(64) NULL,
[ExpenseAccount] nvarchar(64) NULL,
[IsActive] bit NOT NULL DEFAULT 1,
[CreationTime] datetime2 NOT NULL DEFAULT GETUTCDATE(),
[CreatorId] uniqueidentifier NULL,
[LastModificationTime] datetime2 NULL,
[LastModifierId] uniqueidentifier NULL,
[IsDeleted] bit NOT NULL DEFAULT 0,
[DeletionTime] datetime2 NULL,
[DeleterId] uniqueidentifier NULL,
CONSTRAINT [PK_Inv_T_Product] PRIMARY KEY NONCLUSTERED
(
[Id] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY]
) ON [PRIMARY]
END
GO

View file

@ -0,0 +1,23 @@
IF OBJECT_ID(N'[dbo].[Inv_T_ProductAttributeLine]', 'U') IS NULL
BEGIN
CREATE TABLE [dbo].[Inv_T_ProductAttributeLine]
(
[Id] uniqueidentifier NOT NULL DEFAULT NEWID(),
[TenantId] uniqueidentifier NULL,
[ProductId] uniqueidentifier NOT NULL,
[AttributeId] uniqueidentifier NOT NULL,
[ValueIds] nvarchar(4000) NOT NULL,
[CreationTime] datetime2 NOT NULL DEFAULT GETUTCDATE(),
[CreatorId] uniqueidentifier NULL,
[LastModificationTime] datetime2 NULL,
[LastModifierId] uniqueidentifier NULL,
[IsDeleted] bit NOT NULL DEFAULT 0,
[DeletionTime] datetime2 NULL,
[DeleterId] uniqueidentifier NULL,
CONSTRAINT [PK_Inv_T_ProductAttributeLine] PRIMARY KEY NONCLUSTERED
(
[Id] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY]
) ON [PRIMARY]
END
GO

View file

@ -0,0 +1,23 @@
IF OBJECT_ID(N'[dbo].[Inv_T_ProductCategory]', 'U') IS NULL
BEGIN
CREATE TABLE [dbo].[Inv_T_ProductCategory]
(
[Id] uniqueidentifier NOT NULL DEFAULT NEWID(),
[TenantId] uniqueidentifier NULL,
[Name] nvarchar(128) NOT NULL,
[ParentId] uniqueidentifier NULL,
[IsActive] bit NOT NULL DEFAULT 1,
[CreationTime] datetime2 NOT NULL DEFAULT GETUTCDATE(),
[CreatorId] uniqueidentifier NULL,
[LastModificationTime] datetime2 NULL,
[LastModifierId] uniqueidentifier NULL,
[IsDeleted] bit NOT NULL DEFAULT 0,
[DeletionTime] datetime2 NULL,
[DeleterId] uniqueidentifier NULL,
CONSTRAINT [PK_Inv_T_ProductCategory] PRIMARY KEY NONCLUSTERED
(
[Id] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY]
) ON [PRIMARY]
END
GO

View file

@ -0,0 +1,28 @@
IF OBJECT_ID(N'[dbo].[Inv_T_ProductSupplier]', 'U') IS NULL
BEGIN
CREATE TABLE [dbo].[Inv_T_ProductSupplier]
(
[Id] uniqueidentifier NOT NULL DEFAULT NEWID(),
[TenantId] uniqueidentifier NULL,
[ProductId] uniqueidentifier NOT NULL,
[ContactId] uniqueidentifier NOT NULL,
[MinQuantity] decimal(18, 4) NOT NULL DEFAULT 1,
[UomId] nvarchar(64) NULL,
[Price] decimal(18, 4) NOT NULL DEFAULT 0,
[CurrencyId] nvarchar(64) NULL,
[LeadTimeDays] int NOT NULL DEFAULT 0,
[VariantKey] nvarchar(450) NULL,
[CreationTime] datetime2 NOT NULL DEFAULT GETUTCDATE(),
[CreatorId] uniqueidentifier NULL,
[LastModificationTime] datetime2 NULL,
[LastModifierId] uniqueidentifier NULL,
[IsDeleted] bit NOT NULL DEFAULT 0,
[DeletionTime] datetime2 NULL,
[DeleterId] uniqueidentifier NULL,
CONSTRAINT [PK_Inv_T_ProductSupplier] PRIMARY KEY NONCLUSTERED
(
[Id] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY]
) ON [PRIMARY]
END
GO

View file

@ -0,0 +1,33 @@
IF OBJECT_ID(N'[dbo].[Inv_T_WorkCenter]', 'U') IS NULL
BEGIN
CREATE TABLE [dbo].[Inv_T_WorkCenter]
(
[Id] uniqueidentifier NOT NULL DEFAULT NEWID(),
[TenantId] uniqueidentifier NULL,
[Name] nvarchar(128) NOT NULL,
[Code] nvarchar(32) NULL,
[Tags] nvarchar(1000) NULL,
[AlternativeWorkCenterIds] nvarchar(2000) NULL,
[WeeklyWorkingHours] decimal(18, 4) NOT NULL DEFAULT 40,
[TimeEfficiency] decimal(18, 4) NOT NULL DEFAULT 100,
[OeeTarget] decimal(18, 4) NOT NULL DEFAULT 90,
[SetupTimeMin] decimal(18, 4) NOT NULL DEFAULT 0,
[CleanupTimeMin] decimal(18, 4) NOT NULL DEFAULT 0,
[CostPerHour] decimal(18, 4) NOT NULL DEFAULT 0,
[EmployeeCostPerHour] decimal(18, 4) NOT NULL DEFAULT 0,
[Description] nvarchar(MAX) NULL,
[IsActive] bit NOT NULL DEFAULT 1,
[CreationTime] datetime2 NOT NULL DEFAULT GETUTCDATE(),
[CreatorId] uniqueidentifier NULL,
[LastModificationTime] datetime2 NULL,
[LastModifierId] uniqueidentifier NULL,
[IsDeleted] bit NOT NULL DEFAULT 0,
[DeletionTime] datetime2 NULL,
[DeleterId] uniqueidentifier NULL,
CONSTRAINT [PK_Inv_T_WorkCenter] PRIMARY KEY NONCLUSTERED
(
[Id] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY]
) ON [PRIMARY]
END
GO

View file

@ -0,0 +1,26 @@
IF OBJECT_ID(N'[dbo].[Inv_T_WorkCenterCapacity]', 'U') IS NULL
BEGIN
CREATE TABLE [dbo].[Inv_T_WorkCenterCapacity]
(
[Id] uniqueidentifier NOT NULL DEFAULT NEWID(),
[TenantId] uniqueidentifier NULL,
[WorkCenterId] uniqueidentifier NOT NULL,
[ProductId] uniqueidentifier NOT NULL,
[UomId] nvarchar(64) NULL,
[Capacity] decimal(18, 4) NOT NULL DEFAULT 1,
[SetupTimeMin] decimal(18, 4) NOT NULL DEFAULT 0,
[CleanupTimeMin] decimal(18, 4) NOT NULL DEFAULT 0,
[CreationTime] datetime2 NOT NULL DEFAULT GETUTCDATE(),
[CreatorId] uniqueidentifier NULL,
[LastModificationTime] datetime2 NULL,
[LastModifierId] uniqueidentifier NULL,
[IsDeleted] bit NOT NULL DEFAULT 0,
[DeletionTime] datetime2 NULL,
[DeleterId] uniqueidentifier NULL,
CONSTRAINT [PK_Inv_T_WorkCenterCapacity] PRIMARY KEY NONCLUSTERED
(
[Id] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY]
) ON [PRIMARY]
END
GO

View file

@ -0,0 +1,23 @@
IF OBJECT_ID(N'[dbo].[Inv_T_WorkCenterTag]', 'U') IS NULL
BEGIN
CREATE TABLE [dbo].[Inv_T_WorkCenterTag]
(
[Id] uniqueidentifier NOT NULL DEFAULT NEWID(),
[TenantId] uniqueidentifier NULL,
[Name] nvarchar(64) NOT NULL,
[Color] nvarchar(16) NULL,
[IsActive] bit NOT NULL DEFAULT 1,
[CreationTime] datetime2 NOT NULL DEFAULT GETUTCDATE(),
[CreatorId] uniqueidentifier NULL,
[LastModificationTime] datetime2 NULL,
[LastModifierId] uniqueidentifier NULL,
[IsDeleted] bit NOT NULL DEFAULT 0,
[DeletionTime] datetime2 NULL,
[DeleterId] uniqueidentifier NULL,
CONSTRAINT [PK_Inv_T_WorkCenterTag] PRIMARY KEY NONCLUSTERED
(
[Id] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY]
) ON [PRIMARY]
END
GO

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because one or more lines are too long

View file

@ -1344,7 +1344,7 @@
"CascadeFilterOperator": "=",
"CascadeParentFields": null,
"CascadeEmptyFields": null,
"LookupQuery": "[{\"key\":\"Company\",\"name\":\"Şirket\"},{\"key\":\"Individual\",\"name\":\"Bireysel\"}]"
"LookupQuery": "[{\"key\":\"Company\",\"name\":\"App.StaticLookup.Company\"},{\"key\":\"Individual\",\"name\":\"App.StaticLookup.Individual\"}]"
},
"ValidationRuleDto": [
{
@ -3349,7 +3349,9 @@
"App.Definitions.Contact.Desc",
"App.Listform.ListformField.CompanyType",
"App.Listform.ListformField.Latitude",
"App.Listform.ListformField.Longitude"
"App.Listform.ListformField.Longitude",
"App.StaticLookup.Company",
"App.StaticLookup.Individual"
],
"PermissionGroupNames": [],
"PermissionNames": [

View file

@ -1119,7 +1119,7 @@
"CascadeFilterOperator": "=",
"CascadeParentFields": null,
"CascadeEmptyFields": null,
"LookupQuery": "[{\"key\":\"Never\",\"name\":\"Asla\"},{\"key\":\"AfterThree\",\"name\":\"Düzenleme olmadan 3 doğrulamadan sonra sor\"},{\"key\":\"Always\",\"name\":\"Her Zaman\"}]"
"LookupQuery": "[{\"key\":\"Never\",\"name\":\"App.StaticLookup.Never\"},{\"key\":\"AfterThree\",\"name\":\"App.StaticLookup.AfterThree\"},{\"key\":\"Always\",\"name\":\"App.StaticLookup.InvoiceAutoApprove.Always\"}]"
},
"ValidationRuleDto": [],
"ColumnStylingDto": [],
@ -1245,7 +1245,7 @@
"CascadeFilterOperator": "=",
"CascadeParentFields": null,
"CascadeEmptyFields": null,
"LookupQuery": "[{\"key\":\"None\",\"name\":\"Yok\"},{\"key\":\"Sepa\",\"name\":\"SEPA\"},{\"key\":\"Emv\",\"name\":\"EMV\"}]"
"LookupQuery": "[{\"key\":\"None\",\"name\":\"App.StaticLookup.None\"},{\"key\":\"Sepa\",\"name\":\"App.StaticLookup.Sepa\"},{\"key\":\"Emv\",\"name\":\"App.StaticLookup.Emv\"}]"
},
"ValidationRuleDto": [],
"ColumnStylingDto": [],
@ -1301,7 +1301,11 @@
"App.Listform.ListformField.ReceivableAccount",
"App.Listform.ListformField.PayableAccount",
"App.Listform.ListformField.InvoiceAutoApprove",
"App.Listform.ListformField.PaymentQrType"
"App.Listform.ListformField.PaymentQrType",
"App.StaticLookup.AfterThree",
"App.StaticLookup.InvoiceAutoApprove.Always",
"App.StaticLookup.Sepa",
"App.StaticLookup.Emv"
],
"PermissionGroupNames": [],
"PermissionNames": [

View file

@ -861,7 +861,7 @@
"CascadeFilterOperator": "=",
"CascadeParentFields": null,
"CascadeEmptyFields": null,
"LookupQuery": "[{\"key\":\"Good\",\"name\":\"İyi\"},{\"key\":\"Watch\",\"name\":\"İzlemede\"},{\"key\":\"Risky\",\"name\":\"Riskli\"}]"
"LookupQuery": "[{\"key\":\"Good\",\"name\":\"App.StaticLookup.Good\"},{\"key\":\"Watch\",\"name\":\"App.StaticLookup.Watch\"},{\"key\":\"Risky\",\"name\":\"App.StaticLookup.Risky\"}]"
},
"ValidationRuleDto": [],
"ColumnStylingDto": [],
@ -1167,7 +1167,10 @@
"App.Definitions.ContactFinancial.Title",
"App.Definitions.ContactFinancial.Desc",
"App.Listform.ListformField.FinancialStatus",
"App.Listform.ListformField.Reference"
"App.Listform.ListformField.Reference",
"App.StaticLookup.Good",
"App.StaticLookup.Watch",
"App.StaticLookup.Risky"
],
"PermissionGroupNames": [],
"PermissionNames": [

View file

@ -897,7 +897,7 @@
"CascadeFilterOperator": "=",
"CascadeParentFields": null,
"CascadeEmptyFields": null,
"LookupQuery": "[{\"key\":\"OnOrder\",\"name\":\"Sipariş Üzerine\"},{\"key\":\"Weekly\",\"name\":\"Haftalık\"},{\"key\":\"Always\",\"name\":\"Her Zaman\"}]"
"LookupQuery": "[{\"key\":\"OnOrder\",\"name\":\"App.StaticLookup.OnOrder\"},{\"key\":\"Weekly\",\"name\":\"App.StaticLookup.Weekly\"},{\"key\":\"Always\",\"name\":\"App.StaticLookup.InvoiceAutoApprove.Always\"}]"
},
"ValidationRuleDto": [
{
@ -1978,7 +1978,9 @@
"App.Listform.ListformField.ReminderDaysBefore",
"App.Listform.ListformField.SupplierCurrency",
"App.Listform.ListformField.PurchaseIncotermId",
"App.Listform.ListformField.PurchaseIncotermLocation"
"App.Listform.ListformField.PurchaseIncotermLocation",
"App.StaticLookup.OnOrder",
"App.StaticLookup.Weekly"
],
"PermissionGroupNames": [],
"PermissionNames": [

View file

@ -904,7 +904,7 @@
"CascadeFilterOperator": "=",
"CascadeParentFields": null,
"CascadeEmptyFields": null,
"LookupQuery": "[{\"key\":\"ShiftSupervisor\",\"name\":\"Vardiya Amiri\"},{\"key\":\"SecurityRoom\",\"name\":\"Güvenlik Odası\"},{\"key\":\"ObservationRoom\",\"name\":\"Gözlem Odası\"}]"
"LookupQuery": "[{\"key\":\"ShiftSupervisor\",\"name\":\"App.StaticLookup.ShiftSupervisor\"},{\"key\":\"SecurityRoom\",\"name\":\"App.StaticLookup.SecurityRoom\"},{\"key\":\"ObservationRoom\",\"name\":\"App.StaticLookup.ObservationRoom\"}]"
},
"ValidationRuleDto": [
{
@ -1582,7 +1582,7 @@
"CascadeFilterOperator": "=",
"CascadeParentFields": null,
"CascadeEmptyFields": null,
"LookupQuery": "[{\"key\":1,\"name\":\"★ Rutin\"},{\"key\":2,\"name\":\"★★ Düşük\"},{\"key\":3,\"name\":\"★★★ Önemli\"},{\"key\":4,\"name\":\"★★★★ Çok Önemli\"},{\"key\":5,\"name\":\"★★★★★ Kritik\"}]"
"LookupQuery": "[{\"key\":1,\"name\":\"App.StaticLookup.Importance1\"},{\"key\":2,\"name\":\"App.StaticLookup.Importance2\"},{\"key\":3,\"name\":\"App.StaticLookup.Importance3\"},{\"key\":4,\"name\":\"App.StaticLookup.Importance4\"},{\"key\":5,\"name\":\"App.StaticLookup.Importance5\"}]"
},
"ValidationRuleDto": [
{
@ -1905,7 +1905,15 @@
"App.Listform.ListformField.EventDate",
"App.Listform.ListformField.EventTime",
"App.Listform.ListformField.ShiftId",
"App.Listform.ListformField.CreatorId"
"App.Listform.ListformField.CreatorId",
"App.StaticLookup.ShiftSupervisor",
"App.StaticLookup.SecurityRoom",
"App.StaticLookup.ObservationRoom",
"App.StaticLookup.Importance1",
"App.StaticLookup.Importance2",
"App.StaticLookup.Importance3",
"App.StaticLookup.Importance4",
"App.StaticLookup.Importance5"
],
"PermissionGroupNames": [],
"PermissionNames": [

View file

@ -1943,7 +1943,7 @@
"CascadeFilterOperator": "=",
"CascadeParentFields": null,
"CascadeEmptyFields": null,
"LookupQuery": "[{\"key\":\"0 Rh+\",\"name\":\"0 Rh+\",\"group\":null},{\"key\":\"0 Rh-\",\"name\":\"0 Rh-\",\"group\":null},{\"key\":\"A Rh+\",\"name\":\"A Rh+\",\"group\":null},{\"key\":\"A Rh-\",\"name\":\"A Rh-\",\"group\":null},{\"key\":\"B Rh+\",\"name\":\"B Rh+\",\"group\":null},{\"key\":\"B Rh-\",\"name\":\"B Rh-\",\"group\":null},{\"key\":\"AB Rh+\",\"name\":\"AB Rh+\",\"group\":null},{\"key\":\"AB Rh-\",\"name\":\"AB Rh-\",\"group\":null}]"
"LookupQuery": "[{\"key\":\"0 Rh+\",\"name\":\"App.StaticLookup.BloodType1\",\"group\":null},{\"key\":\"0 Rh-\",\"name\":\"App.StaticLookup.BloodType2\",\"group\":null},{\"key\":\"A Rh+\",\"name\":\"App.StaticLookup.BloodType3\",\"group\":null},{\"key\":\"A Rh-\",\"name\":\"App.StaticLookup.BloodType4\",\"group\":null},{\"key\":\"B Rh+\",\"name\":\"App.StaticLookup.BloodType5\",\"group\":null},{\"key\":\"B Rh-\",\"name\":\"App.StaticLookup.BloodType6\",\"group\":null},{\"key\":\"AB Rh+\",\"name\":\"App.StaticLookup.BloodType7\",\"group\":null},{\"key\":\"AB Rh-\",\"name\":\"App.StaticLookup.BloodType8\",\"group\":null}]"
},
"ValidationRuleDto": [],
"ColumnStylingDto": [],
@ -2499,7 +2499,15 @@
"LanguageKeys": [
"App.Hr.HealthCardHistory",
"App.Hr.HealthCardHistory.Title",
"App.Hr.HealthCardHistory.Desc"
"App.Hr.HealthCardHistory.Desc",
"App.StaticLookup.BloodType1",
"App.StaticLookup.BloodType2",
"App.StaticLookup.BloodType3",
"App.StaticLookup.BloodType4",
"App.StaticLookup.BloodType5",
"App.StaticLookup.BloodType6",
"App.StaticLookup.BloodType7",
"App.StaticLookup.BloodType8"
],
"PermissionGroupNames": [],
"PermissionNames": [

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

View file

@ -1552,7 +1552,7 @@
"CascadeFilterOperator": "=",
"CascadeParentFields": null,
"CascadeEmptyFields": null,
"LookupQuery": "[{\"key\":\"Attended\",\"name\":\"Katıldı\"},{\"key\":\"NotAttended\",\"name\":\"Katılmadı\"},{\"key\":\"Excused\",\"name\":\"Mazeretli\"}]"
"LookupQuery": "[{\"key\":\"Attended\",\"name\":\"App.StaticLookup.Attended\"},{\"key\":\"NotAttended\",\"name\":\"App.StaticLookup.NotAttended\"},{\"key\":\"Excused\",\"name\":\"App.StaticLookup.Excused\"}]"
},
"ValidationRuleDto": [
{
@ -2127,7 +2127,10 @@
"App.Listform.ListformField.AttendanceStatus",
"App.Listform.ListformField.ExamScore",
"App.Listform.ListformField.LeaveDate",
"App.Listform.ListformField.Note"
"App.Listform.ListformField.Note",
"App.StaticLookup.Attended",
"App.StaticLookup.NotAttended",
"App.StaticLookup.Excused"
],
"PermissionGroupNames": [],
"PermissionNames": [

View file

@ -2065,7 +2065,7 @@
"CascadeFilterOperator": "=",
"CascadeParentFields": null,
"CascadeEmptyFields": null,
"LookupQuery": "[{\"key\":\"Arrived\",\"name\":\"Geldi\"},{\"key\":\"Left\",\"name\":\"Gitti\"}]"
"LookupQuery": "[{\"key\":\"Arrived\",\"name\":\"App.StaticLookup.Arrived\"},{\"key\":\"Left\",\"name\":\"App.StaticLookup.Status.Left\"}]"
},
"ValidationRuleDto": [],
"ColumnStylingDto": [],
@ -3407,7 +3407,9 @@
"App.Listform.ListformField.EmissionStart",
"App.Listform.ListformField.EmissionEnd",
"App.Listform.ListformField.TachographStart",
"App.Listform.ListformField.TachographEnd"
"App.Listform.ListformField.TachographEnd",
"App.StaticLookup.Arrived",
"App.StaticLookup.Status.Left"
],
"PermissionGroupNames": [],
"PermissionNames": [

View file

@ -889,7 +889,7 @@
"CascadeFilterOperator": "=",
"CascadeParentFields": null,
"CascadeEmptyFields": null,
"LookupQuery": "[{\"key\":\"Vehicle\",\"name\":\"ARAÇ\"},{\"key\":\"Driver\",\"name\":\"ŞOFÖR\"}]"
"LookupQuery": "[{\"key\":\"Vehicle\",\"name\":\"App.StaticLookup.Vehicle\"},{\"key\":\"Driver\",\"name\":\"App.StaticLookup.Driver\"}]"
},
"ValidationRuleDto": [
{
@ -1027,7 +1027,7 @@
"CascadeFilterOperator": "=",
"CascadeParentFields": null,
"CascadeEmptyFields": null,
"LookupQuery": "[{\"key\":\"Insurance\",\"name\":\"SİGORTA\"},{\"key\":\"Document\",\"name\":\"BELGE\"},{\"key\":\"Tax\",\"name\":\"VERGİ\"},{\"key\":\"Toll\",\"name\":\"GEÇİŞ\"},{\"key\":\"Inspection\",\"name\":\"MUAYENE\"},{\"key\":\"Maintenance\",\"name\":\"BAKIM\"},{\"key\":\"Penalty\",\"name\":\"CEZA\"},{\"key\":\"Accident\",\"name\":\"KAZA\"}]"
"LookupQuery": "[{\"key\":\"Insurance\",\"name\":\"App.StaticLookup.Insurance\"},{\"key\":\"Document\",\"name\":\"App.StaticLookup.Document\"},{\"key\":\"Tax\",\"name\":\"App.StaticLookup.Tax\"},{\"key\":\"Toll\",\"name\":\"App.StaticLookup.Toll\"},{\"key\":\"Inspection\",\"name\":\"App.StaticLookup.Inspection\"},{\"key\":\"Maintenance\",\"name\":\"App.StaticLookup.Maintenance\"},{\"key\":\"Penalty\",\"name\":\"App.StaticLookup.Penalty\"},{\"key\":\"Accident\",\"name\":\"App.StaticLookup.Accident\"}]"
},
"ValidationRuleDto": [
{
@ -1370,7 +1370,17 @@
"App.Hr.VehicleDocument.Desc",
"App.Hr.Vehicles",
"App.Listform.ListformField.DocumentGroup",
"App.Listform.ListformField.DocumentType"
"App.Listform.ListformField.DocumentType",
"App.StaticLookup.Vehicle",
"App.StaticLookup.Driver",
"App.StaticLookup.Insurance",
"App.StaticLookup.Document",
"App.StaticLookup.Tax",
"App.StaticLookup.Toll",
"App.StaticLookup.Inspection",
"App.StaticLookup.Maintenance",
"App.StaticLookup.Penalty",
"App.StaticLookup.Accident"
],
"PermissionGroupNames": [],
"PermissionNames": [

View file

@ -3347,7 +3347,7 @@
"CascadeFilterOperator": "=",
"CascadeParentFields": null,
"CascadeEmptyFields": null,
"LookupQuery": "[{\"key\":\"Arrived\",\"name\":\"Geldi\"},{\"key\":\"Left\",\"name\":\"Gitti\"}]"
"LookupQuery": "[{\"key\":\"Arrived\",\"name\":\"App.StaticLookup.Arrived\"},{\"key\":\"Left\",\"name\":\"App.StaticLookup.Status.Left\"}]"
},
"ValidationRuleDto": [],
"ColumnStylingDto": [],

View file

@ -1064,7 +1064,7 @@
"CascadeFilterOperator": "=",
"CascadeParentFields": null,
"CascadeEmptyFields": null,
"LookupQuery": "[{\"key\": \"Ziyaretçi\", \"name\": \"Ziyaretçi\"}, {\"key\": \"Müşteri\", \"name\": \"Müşteri\"}, {\"key\": \"Tedarikçi\", \"name\": \"Tedarikçi\"}, {\"key\": \"Taşeron\", \"name\": \"Taşeron\"}, {\"key\": \"Kurye\", \"name\": \"Kurye\"}]"
"LookupQuery": "[{\"key\":\"Ziyaretçi\",\"name\":\"App.StaticLookup.VisitorType1\"},{\"key\":\"Müşteri\",\"name\":\"App.StaticLookup.VisitorType2\"},{\"key\":\"Tedarikçi\",\"name\":\"App.StaticLookup.VisitorType3\"},{\"key\":\"Taşeron\",\"name\":\"App.StaticLookup.VisitorType4\"},{\"key\":\"Kurye\",\"name\":\"App.StaticLookup.Kurye\"}]"
},
"ValidationRuleDto": [
{
@ -2195,7 +2195,12 @@
"App.Listform.ListformField.VisitedUserId",
"App.Listform.ListformField.VisitorFullName",
"App.Listform.ListformField.CompanyName",
"App.Listform.ListformField.VisitReason"
"App.Listform.ListformField.VisitReason",
"App.StaticLookup.VisitorType1",
"App.StaticLookup.VisitorType2",
"App.StaticLookup.VisitorType3",
"App.StaticLookup.VisitorType4",
"App.StaticLookup.Kurye"
],
"PermissionGroupNames": [],
"PermissionNames": [

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff