mirror of
				https://github.com/crater-invoice/crater.git
				synced 2025-11-03 14:03:18 -05:00 
			
		
		
		
	
		
			
				
	
	
		
			86 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			Vue
		
	
	
	
	
	
			
		
		
	
	
			86 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			Vue
		
	
	
	
	
	
<template>
 | 
						|
  <div class="grid grid-cols-12 gap-8 mt-6 mb-8">
 | 
						|
    <BaseCustomerSelectPopup
 | 
						|
      v-model="invoiceStore.newInvoice.customer"
 | 
						|
      :valid="v.customer_id"
 | 
						|
      :content-loading="isLoading"
 | 
						|
      type="invoice"
 | 
						|
      class="col-span-12 lg:col-span-5 pr-0"
 | 
						|
    />
 | 
						|
 | 
						|
    <BaseInputGrid class="col-span-12 lg:col-span-7">
 | 
						|
      <BaseInputGroup
 | 
						|
        :label="$t('invoices.invoice_date')"
 | 
						|
        :content-loading="isLoading"
 | 
						|
        required
 | 
						|
        :error="v.invoice_date.$error && v.invoice_date.$errors[0].$message"
 | 
						|
      >
 | 
						|
        <BaseDatePicker
 | 
						|
          v-model="invoiceStore.newInvoice.invoice_date"
 | 
						|
          :content-loading="isLoading"
 | 
						|
          :calendar-button="true"
 | 
						|
          calendar-button-icon="calendar"
 | 
						|
        />
 | 
						|
      </BaseInputGroup>
 | 
						|
 | 
						|
      <BaseInputGroup
 | 
						|
        :label="$t('invoices.due_date')"
 | 
						|
        :content-loading="isLoading"
 | 
						|
      >
 | 
						|
        <BaseDatePicker
 | 
						|
          v-model="invoiceStore.newInvoice.due_date"
 | 
						|
          :content-loading="isLoading"
 | 
						|
          :calendar-button="true"
 | 
						|
          calendar-button-icon="calendar"
 | 
						|
          :show-extra-options="true"
 | 
						|
          :source-date="invoiceStore.newInvoice.invoice_date"
 | 
						|
        />
 | 
						|
      </BaseInputGroup>
 | 
						|
 | 
						|
      <BaseInputGroup
 | 
						|
        :label="$t('invoices.invoice_number')"
 | 
						|
        :content-loading="isLoading"
 | 
						|
        :error="v.invoice_number.$error && v.invoice_number.$errors[0].$message"
 | 
						|
        required
 | 
						|
      >
 | 
						|
        <BaseInput
 | 
						|
          v-model="invoiceStore.newInvoice.invoice_number"
 | 
						|
          :content-loading="isLoading"
 | 
						|
          @input="v.invoice_number.$touch()"
 | 
						|
        />
 | 
						|
      </BaseInputGroup>
 | 
						|
 | 
						|
      <ExchangeRateConverter
 | 
						|
        :store="invoiceStore"
 | 
						|
        store-prop="newInvoice"
 | 
						|
        :v="v"
 | 
						|
        :is-loading="isLoading"
 | 
						|
        :is-edit="isEdit"
 | 
						|
        :customer-currency="invoiceStore.newInvoice.currency_id"
 | 
						|
      />
 | 
						|
    </BaseInputGrid>
 | 
						|
  </div>
 | 
						|
</template>
 | 
						|
 | 
						|
<script setup>
 | 
						|
import ExchangeRateConverter from '@/scripts/admin/components/estimate-invoice-common/ExchangeRateConverter.vue'
 | 
						|
import { useInvoiceStore } from '@/scripts/admin/stores/invoice'
 | 
						|
 | 
						|
const props = defineProps({
 | 
						|
  v: {
 | 
						|
    type: Object,
 | 
						|
    default: null,
 | 
						|
  },
 | 
						|
  isLoading: {
 | 
						|
    type: Boolean,
 | 
						|
    default: false,
 | 
						|
  },
 | 
						|
  isEdit: {
 | 
						|
    type: Boolean,
 | 
						|
    default: false,
 | 
						|
  },
 | 
						|
})
 | 
						|
 | 
						|
const invoiceStore = useInvoiceStore()
 | 
						|
</script>
 |