ministryofjustice/Claim-for-Crown-Court-Defence

View on GitHub
app/views/external_users/claims/expenses/_expense_fields.html.haml

Summary

Maintainability
Test Coverage
- @expense_count += 1
.expense-group.nested-fields.js-block.fx-do-init.fx-numberedList-item{ data: { 'type': 'expenses', autovat: @claim.agfs? && @claim.apply_vat? ? 'true' : 'false', 'block-type': 'ExpenseBlock' } }
  .form-section-compound
    = f.govuk_text_field :location_type,
      class: 'fx-location-type',
      form_group: { class: 'hidden' },
      label: { hidden: true },
      type: 'hidden'

    = f.govuk_text_field :calculated_distance,
      class: 'fx-travel-calculated-distance',
      form_group: { class: 'govuk-visually-hidden' },
      label: { hidden: true },
      type: 'hidden'

    = f.govuk_fieldset legend: { text: t('.expense_html')} do
      = link_to_remove_association f, wrapper_class: 'expense-group', class: 'govuk-link govuk-!-display-none fx-numberedList-action' do
        = t('common.remove_html', context: t('.expense'))

      .govuk-grid-row
        .govuk-grid-column-full
          - expense_types_collection = present_collection(ExpenseType.for_claim_type(@claim))
          = f.govuk_collection_select :expense_type_id,
            expense_types_collection.map { |et| [et.name, et.id, { data: et.data_attributes }] },
            :second,
            :first,
            form_group: { class: 'fx-travel-expense-type' },
            label: { text: t('.type_of_expense_html') },
            options: { include_blank: t('.select_expense_type_option') }

          - reasons_collection = present_collection(reasonset_for_expense_type(f.object.expense_type).values, TravelReasonPresenter)
          = f.govuk_collection_select :reason_id,
            reasons_collection.map { |et| [et.reason, et.id, { data: et.data_attributes }] },
            :second,
            :first,
            form_group: { class: 'fx-travel-reason', style: 'display: none' },
            label: { text: t('.travel_reason_html') },
            options: { include_blank: t('.select_travel_reason_option') }

          - present(f.object) do |expense|
            = f.govuk_text_field :reason_text,
              form_group: { class: 'fx-travel-reason-other', style: f.object.reason_id.eql?(5) ? 'display: block' : 'display: none' },
              label: { text: t('.reason_text_html') },
              width: 'one-half'

          .fx-travel-location{ style: 'display: none' }
            - if @claim.lgfs?
              = f.govuk_collection_select :location,
                {},
                {},
                {},
                form_group: { class: 'fx-establishment-select has-select', style: 'display: none' },
                label: { text: nil }

            = f.govuk_text_field :location,
                class: 'fx-location-model',
                form_group: { class: 'location_wrapper' },
                label: { text: t('.location_html') },
                width: 'one-half'

          = f.govuk_number_field :hours,
              form_group: { class: 'fx-travel-hours', style: 'display: none' },
              label: { text: t('.hours_html') },
              min: 0,
              width: 'one-quarter'

          = f.govuk_number_field :distance,
              form_group: { class: 'fx-travel-distance', style: 'display: none' },
              hint: { text: t('.distance_hint_html') },
              label: { text: t('.distance_html') },
              min: 0,
              value: number_with_precision(f.object.distance, precision: 0),
              width: 'one-quarter'

          - if @claim.lgfs?
            = govuk_detail t('.summary_heading') do
              = t('.summary_content')
          = f.govuk_radio_buttons_fieldset :mileage_rate_id,
            form_group: { class: 'fx-travel-mileage fx-travel-mileage-bike', style: 'display: none' },
            legend: { text: t('.cost_html') } do
            - Expense::BIKE_MILEAGE_RATES.values.map do | bike_mileage_rate |
              = f.govuk_radio_button :mileage_rate_id, bike_mileage_rate.id, label: { text: bike_mileage_rate.description }

          = f.govuk_radio_buttons_fieldset :mileage_rate_id,
            form_group: { class: 'fx-travel-mileage fx-travel-mileage-car', style: 'display: none' },
            legend: { text: t('.cost_html') } do
            - Expense::CAR_MILEAGE_RATES.values.map do | car_mileage_rate |
              = f.govuk_radio_button :mileage_rate_id, car_mileage_rate.id, label: { text: car_mileage_rate.description }

          = f.govuk_date_field :date,
            form_group: { class: 'fx-travel-date', style: 'display: none' },
            legend: { text: t('.date_html') },
            hint: { text: t('.date_hint') }

          = f.govuk_number_field :amount,
            class: 'rate',
            form_group: { class: 'fx-travel-net-amount', style: 'display: none' },
            label: { text: t('.net_amount_html') },
            min: 0,
            prefix_text: '£',
            value: number_with_precision(f.object.amount || 0, precision: 2),
            width: 'one-half'

          - if @claim.lgfs?
            = f.govuk_number_field :vat_amount,
              class: 'vat',
              form_group: {class: 'fx-travel-vat-amount', style: 'display: none' },
              label: { text: t('.vat_amount_html') },
              min: 0,
              prefix_text: '£',
              value: number_with_precision(f.object.vat_amount || 0, precision: 2),
              width: 'one-half'

    %hr.govuk-section-break.govuk-section-break--l.govuk-section-break--visible