<?xml version="1.0" encoding="utf-8"?>
<!--
  Zakładka: Kredyt kontrahenta
  Plik: Kontrahent.Kredyt.pageform.xml

  Demonstruje wzorce warunkowej widoczności przy użyciu:
  - RowCondition ({?...}) dla porównań wartości pól
  - Visibility z bindowaniem do właściwości bool
  - Renderable uzależniony od licencji (liczony raz przy logowaniu)
  - Class="Collapsable" dla zwijanych grup
-->
<DataForm xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xmlns:xsd="http://www.w3.org/2001/XMLSchema"
          xmlns="http://www.enova.pl/schema/form.xsd"
          xsi:schemaLocation="http://www.enova.pl/schema/ http://www.enova.pl/schema/form.xsd"
          Priority="30">

  <Page CaptionHtml="Kredyt" DataContext="{DataSource}">

    <!-- =====================================================================
         WZORZEC 1: Pole widoczne tylko gdy TypKlienta = 'Korporacyjny'
         Używamy wyrażenia RowCondition: {?TypKlienta=Korporacyjny}
         Pole LimitKredytu jest zwijane (Collapsed) gdy warunek nie jest spełniony.
    ====================================================================== -->
    <Group CaptionHtml="Limit kredytu">
      <Field CaptionHtml="Typ klienta" Width="20" EditValue="{TypKlienta}" />
      <Field CaptionHtml="Limit kredytu"
             Width="18"
             EditValue="{LimitKredytu}"
             Visibility="{?TypKlienta=Korporacyjny}" />
      <Field CaptionHtml="Waluta limitu"
             Width="10"
             EditValue="{WalutaLimitu}"
             Visibility="{?TypKlienta=Korporacyjny}" />
    </Group>

    <!-- =====================================================================
         WZORZEC 2: Pole widoczne gdy Status = 'Premium' LUB Status = 'VIP'
         Używamy operatora 'or' w wyrażeniu RowCondition.
         Składnia: {?Pole=Wartość1 or Pole=Wartość2}
    ====================================================================== -->
    <Group CaptionHtml="Warunki specjalne">
      <Field CaptionHtml="Status klienta" Width="20" EditValue="{Status}" />
      <Field CaptionHtml="Warunki specjalne"
             Width="*"
             Height="3"
             EditValue="{WarunkiSpecjalne}"
             Visibility="{?Status=Premium or Status=VIP}" />
      <Field CaptionHtml="Opiekun VIP"
             Width="30"
             EditValue="{OpiekunVIP}"
             Visibility="{?Status=Premium or Status=VIP}" />
    </Group>

    <!-- =====================================================================
         WZORZEC 3: Pole widoczne gdy NIE Status = 'Aktywny'
         Używamy negacji w wyrażeniu RowCondition: {?!Status=Aktywny}
         Ostrzeżenie o branży pojawia się tylko dla nieaktywnych kontrahentów.
    ====================================================================== -->
    <Group CaptionHtml="Ostrzeżenia">
      <Field CaptionHtml="Ostrzezenie branze"
             Width="*"
             EditValue="{OstrzezenieBranzy}"
             Class="WarningLabel"
             Visibility="{?!Status=Aktywny}" />
      <Field CaptionHtml="Powod nieaktywnosci"
             Width="*"
             EditValue="{PowodNieaktywnosci}"
             Visibility="{?!Status=Aktywny}" />
    </Group>

    <!-- =====================================================================
         WZORZEC 4: Przycisk Command widoczny gdy ObrotyRoczne > 0
         Dla porównań numerycznych (> < >= <=) RowCondition nie obsługuje
         operatorów arytmetycznych bezpośrednio — zamiast tego:
         a) Używamy właściwości bool z logiki biznesowej: {MaObrotyRoczne}
            (właściwość C# zwracająca: ObrotyRoczne > 0)
         b) Alternatywnie: worker z właściwością bool: {Workers.KredytWorker.MaObroty}
    ====================================================================== -->
    <Group CaptionHtml="Analiza obrotow">
      <Row>
        <Field CaptionHtml="Obroty roczne" Width="18" EditValue="{ObrotyRoczne}" />
        <Field CaptionHtml="Obroty miesieczne" Width="18" EditValue="{ObrotyMiesieczne}" />
        <Gap Width="*" />
        <!-- Przycisk widoczny gdy ObrotyRoczne > 0 (via właściwość bool MaObrotyRoczne) -->
        <Command CaptionHtml="Analiza kredytowa"
                 Width="18"
                 MethodName="WykonajAnalize"
                 CommandStyle="Important"
                 Visibility="{MaObrotyRoczne}" />
        <!-- Alternatywny wzorzec: worker z właściwością bool -->
        <Command CaptionHtml="Raport obrotow"
                 Width="16"
                 MethodName="GenerujRaport"
                 DataContext="{new KredytExtender}"
                 Visibility="{Workers.KredytWorker.MaObroty}" />
      </Row>
    </Group>

    <!-- =====================================================================
         WZORZEC 5: Grupa zwijalna (Collapsable) z Renderable uzależnionym
         od licencji.
         - Class="Collapsable" — użytkownik może zwijać/rozwijać grupę
         - Renderable="{Licence.HAN}" — renderowana tylko gdy licencja HAN
           aktywna (wartość liczona RAZ przy logowaniu operatora, optymalne
           dla warunków środowiskowych i licencyjnych)
    ====================================================================== -->
    <Group CaptionHtml="Dane zaawansowane"
           Class="Collapsable"
           Renderable="{Licence.HAN}">
      <Row>
        <Stack LabelWidth="20">
          <Field CaptionHtml="Scoring kredytowy" Width="10" EditValue="{ScoringKredytowy}" />
          <Field CaptionHtml="Kategoria ryzyka" Width="20" EditValue="{KategoriaRyzyka}" />
          <Field CaptionHtml="Data ostatniej oceny" Width="15" EditValue="{DataOstOceny}" />
        </Stack>
        <Stack LabelWidth="20">
          <Field CaptionHtml="Maksymalna ekspozycja" Width="18" EditValue="{MaksEkspozycja}" />
          <Field CaptionHtml="Ubezpieczenie kredytu" Width="8" EditValue="{UbezpieczenieKredytu}" />
          <Field CaptionHtml="Firma ubezpieczeniowa" Width="25" EditValue="{FirmaUbezpieczeniowa}"
                 Visibility="{UbezpieczenieKredytu}" />
        </Stack>
      </Row>
      <Field CaptionHtml="Uwagi analityka" Width="*" Height="3" EditValue="{UwagiAnalityka}" />
    </Group>

  </Page>
</DataForm>
