<?xml version="1.0" encoding="utf-8"?>
<Entity 
Schema="STOR" 
Name="PAYMENT" 
Description="Квитанция оплаты" 
PrimaryKey="PaymentID" 
DNAttributes="{CreateDate}" 
DisplayName="Квитанция от {0:dd.MM.yyyy}">
  <Fields>
    <Attribute Name="PaymentID" Type="guid" Description="Идентификатор" />
    <Attribute Name="CreateDate" Index="2" Type="datetime" Description="Дата создания квитанции" Required="1" />
    <Attribute Name="Cost" Index="3" Type="float" DefaultFormat="{0:F2}" Description="Сумма к оплате" NumericPrecision="12" NumericScale="2" Required="1" />
    <Attribute Name="PaymentNumber" Index="6" Type="int" Description="Номер квитанции" />
    <Choice Name="State" Index="7" Description="Состояние" Required="1">
      <Item Name="Новая" Index="0" />
      <Item Name="Отправлена на кассу" Index="1" />
      <Item Name="Ошибка" Index="2" />
    </Choice>
    <Choice Name="ContractType" Index="9" Description="Тип квитанции" Required="1">
      <Item Name="Документ продажи" Index="0" />
      <Item Name="Документ возврата" Index="1" />
      <Item Name="Чек коррекции" Index="2" />
      <Item Name="Частичная продажа" Index="3" />
    </Choice>
    <Choice Name="PaymentType" Description="Тип оплаты" Required="1">
      <Item Name="Оплата наличными" Index="0" />
      <Item Name="Оплата банковской картой" Index="1" />
      <Item Name="Оплата по договору" Index="2" />
      <Item Name="Оплата бонусными баллами" Index="3" />
      <Item Name="Возврат наличными" Index="4" />
      <Item Name="Возврат на банковскую карту" Index="5" />
      <Item Name="Возврат согласно договору" Index="6" />
      <Item Name="Возврат на карту лояльности" Index="7" />
      <Item Name="Смешанная оплата" Index="8" />
    </Choice>
    <Attribute Name="CashCost" Type="float" DefaultFormat="{0:F2}" Description="Сумма внесенная наличными при оплате смешанного вида" NumericPrecision="12" NumericScale="2" Required="1" />
    <Parent Name="StorageInvoice" Type="STOR.STORAGE_INVOICE" Description="Медицинская накладная" Required="1" />
    <Attribute Name="CardMoney" Type="float" Description="Оплачено картой" />
    <Parent Name="KkmSettings" Type="STOR.KKM_SETTINGS" Description="Касса" Required="1" />
  </Fields>
  <DbMapping>
    <Table name="T_PAYMENT">
      <Map Name="PaymentID" Column="PaymentID" />
      <Map Name="CreateDate" Column="CreateDate" />
      <Map Name="Cost" Column="Cost" />
      <Map Name="PaymentNumber" Column="PaymentNumber" />
      <Map Name="State" Column="State" />
      <Map Name="ContractType" Column="ContractType" />
      <Map Name="PaymentType" Column="PaymentType" />
      <Map Name="CashCost" Column="CashCost" />
      <Map Name="StorageInvoice" Column="StorageInvoice" />
      <Map Name="KkmSettings" Column="KkmSettings" />
    </Table>
    <Lexem>
      <Map Name="CardMoney">
        <lx:Case xmlns:lx="lexem">
          <When>
            <lx:Criterion type="=">
              <lx:Path OwnerQueryLevel="0">
                <lx:StepString name="PaymentType" />
              </lx:Path>
              <lx:ChoiceOperand Entity="STOR.PAYMENT" AttributeName="PaymentType" type="Int32" PrimaryKey="1" />
            </lx:Criterion>
          </When>
          <Then>
            <lx:Path OwnerQueryLevel="0">
              <lx:StepString name="Cost" />
            </lx:Path>
          </Then>
          <When>
            <lx:Criterion type="=">
              <lx:Path OwnerQueryLevel="0">
                <lx:StepString name="PaymentType" />
              </lx:Path>
              <lx:ChoiceOperand Entity="STOR.PAYMENT" AttributeName="PaymentType" type="Int32" PrimaryKey="8" />
            </lx:Criterion>
          </When>
          <Then>
            <lx:MathOperator sign="-">
              <lx:Path OwnerQueryLevel="0">
                <lx:StepString name="Cost" />
              </lx:Path>
              <lx:Path OwnerQueryLevel="0">
                <lx:StepString name="CashCost" />
              </lx:Path>
            </lx:MathOperator>
          </Then>
          <Else>
            <lx:ConstOperand type="Decimal">0</lx:ConstOperand>
          </Else>
        </lx:Case>
      </Map>
    </Lexem>
  </DbMapping>
</Entity>