<?xml version="1.0" encoding="utf-8"?>
<edmx:Edmx Version="4.0" xmlns:edmx="http://docs.oasis-open.org/odata/ns/edmx">
  <edmx:Reference Uri="https://sap.github.io/odata-vocabularies/vocabularies/Common.xml">
    <edmx:Include Alias="Common" Namespace="com.sap.vocabularies.Common.v1"/>
  </edmx:Reference>
  <edmx:Reference Uri="https://oasis-tcs.github.io/odata-vocabularies/vocabularies/Org.OData.Core.V1.xml">
    <edmx:Include Alias="Core" Namespace="Org.OData.Core.V1"/>
  </edmx:Reference>
  <edmx:DataServices>
    <Schema Namespace="DynamicExpenseService" xmlns="http://docs.oasis-open.org/odata/ns/edm">
      <EntityContainer Name="EntityContainer">
        <EntitySet Name="ExpenseReports" EntityType="DynamicExpenseService.ExpenseReports">
          <NavigationPropertyBinding Path="items" Target="ExpenseRows"/>
        </EntitySet>
        <EntitySet Name="ExpenseRows" EntityType="DynamicExpenseService.ExpenseRows">
          <NavigationPropertyBinding Path="report" Target="ExpenseReports"/>
        </EntitySet>
        <EntitySet Name="DynamicExpenseHeaders" EntityType="DynamicExpenseService.DynamicExpenseHeaders">
          <NavigationPropertyBinding Path="expenses" Target="DynamicExpenseEntries"/>
          <NavigationPropertyBinding Path="workflows" Target="DynamicExpenseWorkflows"/>
        </EntitySet>
        <EntitySet Name="DynamicExpenseEntries" EntityType="DynamicExpenseService.DynamicExpenseEntries">
          <NavigationPropertyBinding Path="header" Target="DynamicExpenseHeaders"/>
          <NavigationPropertyBinding Path="attachments" Target="DynamicExpenseAttachments"/>
        </EntitySet>
        <EntitySet Name="DynamicExpenseAttachments" EntityType="DynamicExpenseService.DynamicExpenseAttachments">
          <NavigationPropertyBinding Path="entry" Target="DynamicExpenseEntries"/>
        </EntitySet>
        <EntitySet Name="DynamicExpenseWorkflows" EntityType="DynamicExpenseService.DynamicExpenseWorkflows">
          <NavigationPropertyBinding Path="expenseReport" Target="DynamicExpenseHeaders"/>
        </EntitySet>
        <ActionImport Name="saveDraft" Action="DynamicExpenseService.saveDraft"/>
        <ActionImport Name="submitReport" Action="DynamicExpenseService.submitReport"/>
        <ActionImport Name="getDraft" Action="DynamicExpenseService.getDraft"/>
        <ActionImport Name="saveDynamicExpenseDraft" Action="DynamicExpenseService.saveDynamicExpenseDraft"/>
        <ActionImport Name="submitDynamicExpense" Action="DynamicExpenseService.submitDynamicExpense"/>
        <ActionImport Name="fetchMyDynamicExpenses" Action="DynamicExpenseService.fetchMyDynamicExpenses"/>
        <ActionImport Name="fetchMyDynamicExpenseApprovals" Action="DynamicExpenseService.fetchMyDynamicExpenseApprovals"/>
        <ActionImport Name="getMyExpenseApprovals" Action="DynamicExpenseService.getMyExpenseApprovals"/>
        <ActionImport Name="processDynamicExpenseApproval" Action="DynamicExpenseService.processDynamicExpenseApproval"/>
        <ActionImport Name="rejectDynamicExpense" Action="DynamicExpenseService.rejectDynamicExpense"/>
        <ActionImport Name="resubmitDynamicExpense" Action="DynamicExpenseService.resubmitDynamicExpense"/>
      </EntityContainer>
      <EntityType Name="ExpenseReports">
        <Key>
          <PropertyRef Name="ID"/>
        </Key>
        <Property Name="ID" Type="Edm.Guid" Nullable="false"/>
        <Property Name="policy_ID" Type="Edm.Guid"/>
        <Property Name="employee_ID" Type="Edm.Guid"/>
        <Property Name="status" Type="Edm.String" MaxLength="20" DefaultValue="DRAFT"/>
        <Property Name="currentStep" Type="Edm.Int32" DefaultValue="1"/>
        <Property Name="headerData" Type="Edm.String"/>
        <Property Name="travelData" Type="Edm.String"/>
        <Property Name="createdAt" Type="Edm.DateTimeOffset" Precision="7"/>
        <Property Name="updatedAt" Type="Edm.DateTimeOffset" Precision="7"/>
        <NavigationProperty Name="items" Type="Collection(DynamicExpenseService.ExpenseRows)"/>
      </EntityType>
      <EntityType Name="ExpenseRows">
        <Key>
          <PropertyRef Name="ID"/>
        </Key>
        <Property Name="ID" Type="Edm.Guid" Nullable="false"/>
        <Property Name="report_ID" Type="Edm.Guid"/>
        <Property Name="rowIndex" Type="Edm.Int32"/>
        <Property Name="category" Type="Edm.String" MaxLength="100"/>
        <Property Name="startDate" Type="Edm.Date"/>
        <Property Name="endDate" Type="Edm.Date"/>
        <Property Name="amount" Type="Edm.Decimal" Precision="15" Scale="2"/>
        <Property Name="currency" Type="Edm.String" MaxLength="3"/>
        <Property Name="moreFields" Type="Edm.String"/>
        <Property Name="attachments" Type="Edm.String"/>
        <Property Name="createdAt" Type="Edm.DateTimeOffset" Precision="7"/>
        <NavigationProperty Name="report" Type="DynamicExpenseService.ExpenseReports"/>
      </EntityType>
      <EntityType Name="DynamicExpenseHeaders">
        <Key>
          <PropertyRef Name="ID"/>
        </Key>
        <Property Name="ID" Type="Edm.Guid" Nullable="false"/>
        <Property Name="reportName" Type="Edm.String" MaxLength="255"/>
        <Property Name="status" Type="Edm.String" MaxLength="50" DefaultValue="Draft"/>
        <Property Name="policy_ID" Type="Edm.Guid"/>
        <Property Name="group_ID" Type="Edm.Guid"/>
        <Property Name="headerForm_ID" Type="Edm.Guid"/>
        <Property Name="headerData" Type="Edm.String"/>
        <Property Name="totalAmount" Type="Edm.Decimal" Precision="15" Scale="2"/>
        <Property Name="currency" Type="Edm.String" MaxLength="40"/>
        <Property Name="comments" Type="Edm.String"/>
        <Property Name="rejectComments" Type="Edm.String"/>
        <Property Name="replyComments" Type="Edm.String"/>
        <Property Name="warnings" Type="Edm.String"/>
        <Property Name="filePaths" Type="Edm.String"/>
        <Property Name="user_ID" Type="Edm.Guid"/>
        <Property Name="createdAt" Type="Edm.DateTimeOffset" Precision="7"/>
        <Property Name="updatedAt" Type="Edm.DateTimeOffset" Precision="7"/>
        <NavigationProperty Name="expenses" Type="Collection(DynamicExpenseService.DynamicExpenseEntries)" Partner="header">
          <OnDelete Action="Cascade"/>
        </NavigationProperty>
        <NavigationProperty Name="workflows" Type="Collection(DynamicExpenseService.DynamicExpenseWorkflows)" Partner="expenseReport">
          <OnDelete Action="Cascade"/>
        </NavigationProperty>
      </EntityType>
      <EntityType Name="DynamicExpenseEntries">
        <Key>
          <PropertyRef Name="ID"/>
        </Key>
        <Property Name="ID" Type="Edm.Guid" Nullable="false"/>
        <NavigationProperty Name="header" Type="DynamicExpenseService.DynamicExpenseHeaders" Nullable="false" Partner="expenses">
          <ReferentialConstraint Property="header_ID" ReferencedProperty="ID"/>
        </NavigationProperty>
        <Property Name="header_ID" Type="Edm.Guid" Nullable="false"/>
        <Property Name="entryType" Type="Edm.String" MaxLength="50"/>
        <Property Name="expenseType_ID" Type="Edm.Guid"/>
        <Property Name="expenseForm_ID" Type="Edm.Guid"/>
        <Property Name="entryData" Type="Edm.String"/>
        <Property Name="startDateTime" Type="Edm.DateTimeOffset" Precision="7"/>
        <Property Name="endDateTime" Type="Edm.DateTimeOffset" Precision="7"/>
        <Property Name="perDayRate" Type="Edm.Decimal" Precision="15" Scale="2"/>
        <Property Name="numberOfDays" Type="Edm.Decimal" Precision="10" Scale="2"/>
        <Property Name="fuelAllowance_ID" Type="Edm.Guid"/>
        <Property Name="mileageForm_ID" Type="Edm.Guid"/>
        <Property Name="amount" Type="Edm.Decimal" Precision="15" Scale="2"/>
        <Property Name="currency" Type="Edm.String" MaxLength="40"/>
        <Property Name="receiptPaths" Type="Edm.String"/>
        <Property Name="sortOrder" Type="Edm.Int32"/>
        <Property Name="createdAt" Type="Edm.DateTimeOffset" Precision="7"/>
        <Property Name="updatedAt" Type="Edm.DateTimeOffset" Precision="7"/>
        <NavigationProperty Name="attachments" Type="Collection(DynamicExpenseService.DynamicExpenseAttachments)" Partner="entry">
          <OnDelete Action="Cascade"/>
        </NavigationProperty>
      </EntityType>
      <EntityType Name="DynamicExpenseAttachments">
        <Key>
          <PropertyRef Name="ID"/>
        </Key>
        <Property Name="ID" Type="Edm.Guid" Nullable="false"/>
        <NavigationProperty Name="entry" Type="DynamicExpenseService.DynamicExpenseEntries" Nullable="false" Partner="attachments">
          <ReferentialConstraint Property="entry_ID" ReferencedProperty="ID"/>
        </NavigationProperty>
        <Property Name="entry_ID" Type="Edm.Guid" Nullable="false"/>
        <Property Name="fileName" Type="Edm.String" MaxLength="500"/>
        <Property Name="fileType" Type="Edm.String" MaxLength="100"/>
        <Property Name="filePath" Type="Edm.String" MaxLength="2000"/>
        <Property Name="fileContent" Type="Edm.String"/>
        <Property Name="createdAt" Type="Edm.DateTimeOffset" Precision="7"/>
      </EntityType>
      <EntityType Name="DynamicExpenseWorkflows">
        <Key>
          <PropertyRef Name="ID"/>
        </Key>
        <Property Name="ID" Type="Edm.Guid" Nullable="false"/>
        <NavigationProperty Name="expenseReport" Type="DynamicExpenseService.DynamicExpenseHeaders" Nullable="false" Partner="workflows">
          <ReferentialConstraint Property="expenseReport_ID" ReferencedProperty="ID"/>
        </NavigationProperty>
        <Property Name="expenseReport_ID" Type="Edm.Guid" Nullable="false"/>
        <Property Name="employee_ID" Type="Edm.Guid"/>
        <Property Name="policy_ID" Type="Edm.Guid"/>
        <Property Name="approver_ID" Type="Edm.Guid"/>
        <Property Name="approverLevel" Type="Edm.String" MaxLength="50"/>
        <Property Name="levelName" Type="Edm.String" MaxLength="100"/>
        <Property Name="order" Type="Edm.Int32"/>
        <Property Name="status" Type="Edm.String" MaxLength="50" DefaultValue="Pending"/>
        <Property Name="isActive" Type="Edm.Boolean" DefaultValue="true"/>
        <Property Name="isCompleted" Type="Edm.Boolean" DefaultValue="false"/>
        <Property Name="comments" Type="Edm.String"/>
        <Property Name="createdAt" Type="Edm.DateTimeOffset" Precision="7"/>
        <Property Name="updatedAt" Type="Edm.DateTimeOffset" Precision="7"/>
      </EntityType>
      <Action Name="saveDraft" IsBound="false">
        <Parameter Name="data" Type="Edm.String"/>
        <ReturnType Type="Edm.Guid"/>
      </Action>
      <Action Name="submitReport" IsBound="false">
        <Parameter Name="data" Type="Edm.String"/>
        <ReturnType Type="Edm.Boolean"/>
      </Action>
      <Action Name="getDraft" IsBound="false">
        <Parameter Name="reportID" Type="Edm.Guid"/>
        <ReturnType Type="Edm.String"/>
      </Action>
      <Action Name="saveDynamicExpenseDraft" IsBound="false">
        <Parameter Name="data" Type="Edm.String"/>
        <ReturnType Type="Edm.String"/>
      </Action>
      <Action Name="submitDynamicExpense" IsBound="false">
        <Parameter Name="headerId" Type="Edm.Guid"/>
        <ReturnType Type="Edm.String"/>
      </Action>
      <Action Name="fetchMyDynamicExpenses" IsBound="false">
        <ReturnType Type="Edm.String"/>
      </Action>
      <Action Name="fetchMyDynamicExpenseApprovals" IsBound="false">
        <ReturnType Type="Edm.String"/>
      </Action>
      <Action Name="getMyExpenseApprovals" IsBound="false">
        <ReturnType Type="Edm.String"/>
      </Action>
      <Action Name="processDynamicExpenseApproval" IsBound="false">
        <Parameter Name="expenseReport_ID" Type="Edm.Guid"/>
        <Parameter Name="status" Type="Edm.String"/>
        <Parameter Name="reject_comments" Type="Edm.String"/>
        <ReturnType Type="Edm.String"/>
      </Action>
      <Action Name="rejectDynamicExpense" IsBound="false">
        <Parameter Name="expenseReport_ID" Type="Edm.Guid"/>
        <Parameter Name="comment" Type="Edm.String"/>
        <ReturnType Type="Edm.String"/>
      </Action>
      <Action Name="resubmitDynamicExpense" IsBound="false">
        <Parameter Name="headerId" Type="Edm.Guid"/>
        <ReturnType Type="Edm.String"/>
      </Action>
      <Annotations Target="DynamicExpenseService.ExpenseReports/ID">
        <Annotation Term="Core.ComputedDefaultValue" Bool="true"/>
      </Annotations>
      <Annotations Target="DynamicExpenseService.ExpenseReports/createdAt">
        <Annotation Term="Core.Computed" Bool="true"/>
      </Annotations>
      <Annotations Target="DynamicExpenseService.ExpenseReports/updatedAt">
        <Annotation Term="Core.Computed" Bool="true"/>
      </Annotations>
      <Annotations Target="DynamicExpenseService.ExpenseRows/ID">
        <Annotation Term="Core.ComputedDefaultValue" Bool="true"/>
      </Annotations>
      <Annotations Target="DynamicExpenseService.ExpenseRows/createdAt">
        <Annotation Term="Core.Computed" Bool="true"/>
      </Annotations>
      <Annotations Target="DynamicExpenseService.DynamicExpenseHeaders/ID">
        <Annotation Term="Core.ComputedDefaultValue" Bool="true"/>
      </Annotations>
      <Annotations Target="DynamicExpenseService.DynamicExpenseHeaders/createdAt">
        <Annotation Term="Core.Computed" Bool="true"/>
      </Annotations>
      <Annotations Target="DynamicExpenseService.DynamicExpenseHeaders/updatedAt">
        <Annotation Term="Core.Computed" Bool="true"/>
      </Annotations>
      <Annotations Target="DynamicExpenseService.DynamicExpenseEntries/ID">
        <Annotation Term="Core.ComputedDefaultValue" Bool="true"/>
      </Annotations>
      <Annotations Target="DynamicExpenseService.DynamicExpenseEntries/createdAt">
        <Annotation Term="Core.Computed" Bool="true"/>
      </Annotations>
      <Annotations Target="DynamicExpenseService.DynamicExpenseEntries/updatedAt">
        <Annotation Term="Core.Computed" Bool="true"/>
      </Annotations>
      <Annotations Target="DynamicExpenseService.DynamicExpenseAttachments/ID">
        <Annotation Term="Core.ComputedDefaultValue" Bool="true"/>
      </Annotations>
      <Annotations Target="DynamicExpenseService.DynamicExpenseAttachments/createdAt">
        <Annotation Term="Core.Computed" Bool="true"/>
      </Annotations>
      <Annotations Target="DynamicExpenseService.DynamicExpenseWorkflows/ID">
        <Annotation Term="Core.ComputedDefaultValue" Bool="true"/>
      </Annotations>
      <Annotations Target="DynamicExpenseService.DynamicExpenseWorkflows/createdAt">
        <Annotation Term="Core.Computed" Bool="true"/>
      </Annotations>
      <Annotations Target="DynamicExpenseService.DynamicExpenseWorkflows/updatedAt">
        <Annotation Term="Core.Computed" Bool="true"/>
      </Annotations>
    </Schema>
  </edmx:DataServices>
</edmx:Edmx>