mirror of
https://github.com/InvoiceShelf/InvoiceShelf.git
synced 2026-07-21 00:05:20 +00:00
Add expense number at Expenses (#406)
* add expense number at expenses * Re-order expense fields * Rename expense_number migration * Add expense_number to tests --------- Co-authored-by: Darko Gjorgjijoski <dg@darkog.com>
This commit is contained in:
committed by
GitHub
parent
f3e49d3044
commit
3e96297699
@@ -26,6 +26,11 @@ class ExpenseRequest extends FormRequest
|
||||
'expense_date' => [
|
||||
'required',
|
||||
],
|
||||
'expense_number' => [
|
||||
'nullable',
|
||||
'string',
|
||||
'max:255',
|
||||
],
|
||||
'expense_category_id' => [
|
||||
'required',
|
||||
],
|
||||
|
||||
@@ -16,6 +16,7 @@ class ExpenseResource extends JsonResource
|
||||
return [
|
||||
'id' => $this->id,
|
||||
'expense_date' => $this->expense_date,
|
||||
'expense_number' => $this->expense_number,
|
||||
'amount' => $this->amount,
|
||||
'notes' => $this->notes,
|
||||
'customer_id' => $this->customer_id,
|
||||
|
||||
@@ -16,6 +16,7 @@ class ExpenseResource extends JsonResource
|
||||
return [
|
||||
'id' => $this->id,
|
||||
'expense_date' => $this->expense_date,
|
||||
'expense_number' => $this->expense_number,
|
||||
'amount' => $this->amount,
|
||||
'notes' => $this->notes,
|
||||
'customer_id' => $this->customer_id,
|
||||
|
||||
@@ -26,6 +26,7 @@ class ExpenseFactory extends Factory
|
||||
return [
|
||||
'expense_date' => $this->faker->date('Y-m-d', 'now'),
|
||||
'expense_category_id' => ExpenseCategory::factory(),
|
||||
'expense_number' => $this->faker->unique()->numerify('EXP-#####'),
|
||||
'company_id' => User::find(1)->companies()->first()->id,
|
||||
'amount' => $this->faker->randomDigitNotNull(),
|
||||
'notes' => $this->faker->text(),
|
||||
|
||||
@@ -0,0 +1,30 @@
|
||||
<?php
|
||||
|
||||
use Illuminate\Database\Migrations\Migration;
|
||||
use Illuminate\Database\Schema\Blueprint;
|
||||
use Illuminate\Support\Facades\Schema;
|
||||
|
||||
return new class extends Migration
|
||||
{
|
||||
/**
|
||||
* Run the migrations.
|
||||
*/
|
||||
public function up(): void
|
||||
{
|
||||
Schema::table('expenses', function (Blueprint $table) {
|
||||
$table->string('expense_number')->nullable()->after('expense_date');
|
||||
$table->index('expense_number');
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* Reverse the migrations.
|
||||
*/
|
||||
public function down(): void
|
||||
{
|
||||
Schema::table('expenses', function (Blueprint $table) {
|
||||
$table->dropIndex(['expense_number']);
|
||||
$table->dropColumn('expense_number');
|
||||
});
|
||||
}
|
||||
};
|
||||
@@ -653,6 +653,8 @@
|
||||
"from_date": "من تاريخ",
|
||||
"to_date": "حتى تاريخ",
|
||||
"expense_date": "التاريخ",
|
||||
"expense_number": "رقم المصروفات",
|
||||
"expense_number_placeholder": "EXP-001",
|
||||
"description": "الوصف",
|
||||
"receipt": "سند القبض",
|
||||
"amount": "المبلغ المطلوب",
|
||||
|
||||
@@ -653,6 +653,8 @@
|
||||
"from_date": "Od data",
|
||||
"to_date": "Do data",
|
||||
"expense_date": "Datum",
|
||||
"expense_number": "Číslo výdaje",
|
||||
"expense_number_placeholder": "EXP-001",
|
||||
"description": "Popis",
|
||||
"receipt": "Doklad",
|
||||
"amount": "Částka",
|
||||
|
||||
@@ -653,6 +653,8 @@
|
||||
"from_date": "Von Datum",
|
||||
"to_date": "bis Datum",
|
||||
"expense_date": "Datum",
|
||||
"expense_number": "Kostennummer",
|
||||
"expense_number_placeholder": "EXP-001",
|
||||
"description": "Beschreibung",
|
||||
"receipt": "Rechnung",
|
||||
"amount": "Summe",
|
||||
|
||||
@@ -653,6 +653,8 @@
|
||||
"from_date": "Από Ημερομηνία",
|
||||
"to_date": "Έως ημερομηνία",
|
||||
"expense_date": "Ημερομηνία",
|
||||
"expense_number": "Αριθμός παραστατικού",
|
||||
"expense_number_placeholder": "EXP-001",
|
||||
"description": "Περιγραφή",
|
||||
"receipt": "Απόδειξη",
|
||||
"amount": "Ποσό",
|
||||
|
||||
@@ -653,6 +653,8 @@
|
||||
"from_date": "From Date",
|
||||
"to_date": "To Date",
|
||||
"expense_date": "Date",
|
||||
"expense_number": "Expense Number",
|
||||
"expense_number_placeholder": "EXP-001",
|
||||
"description": "Description",
|
||||
"receipt": "Receipt",
|
||||
"amount": "Amount",
|
||||
|
||||
@@ -653,6 +653,8 @@
|
||||
"from_date": "Desde la fecha",
|
||||
"to_date": "Hasta la fecha",
|
||||
"expense_date": "Fecha",
|
||||
"expense_number": "Número de gasto",
|
||||
"expense_number_placeholder": "EXP-001",
|
||||
"description": "Descripción",
|
||||
"receipt": "Recibo",
|
||||
"amount": "Cantidad",
|
||||
|
||||
@@ -653,6 +653,8 @@
|
||||
"from_date": "From Date",
|
||||
"to_date": "To Date",
|
||||
"expense_date": "Date",
|
||||
"expense_number": "شماره هزینه",
|
||||
"expense_number_placeholder": "EXP-001",
|
||||
"description": "Description",
|
||||
"receipt": "Receipt",
|
||||
"amount": "Amount",
|
||||
|
||||
@@ -653,6 +653,8 @@
|
||||
"from_date": "Päivästä",
|
||||
"to_date": "Päivään",
|
||||
"expense_date": "Päivämäärä",
|
||||
"expense_number": "Kulunumero",
|
||||
"expense_number_placeholder": "EXP-001",
|
||||
"description": "Kuvaus",
|
||||
"receipt": "Kuitti",
|
||||
"amount": "Summa",
|
||||
|
||||
@@ -653,6 +653,8 @@
|
||||
"from_date": "Du",
|
||||
"to_date": "Au",
|
||||
"expense_date": "Date",
|
||||
"expense_number": "Numéro de dépense",
|
||||
"expense_number_placeholder": "EXP-001",
|
||||
"description": "Description",
|
||||
"receipt": "Reçu",
|
||||
"amount": "Montant",
|
||||
|
||||
@@ -653,6 +653,8 @@
|
||||
"from_date": "इस तारीख से",
|
||||
"to_date": "इस तारीख तक",
|
||||
"expense_date": "दिनांक",
|
||||
"expense_number": "व्यय संख्या",
|
||||
"expense_number_placeholder": "EXP-001",
|
||||
"description": "विवरण",
|
||||
"receipt": "रसीद",
|
||||
"amount": "राशि",
|
||||
|
||||
@@ -653,6 +653,8 @@
|
||||
"from_date": "Datum od",
|
||||
"to_date": "Datum do",
|
||||
"expense_date": "Datum",
|
||||
"expense_number": "Broj troška",
|
||||
"expense_number_placeholder": "EXP-001",
|
||||
"description": "Opis",
|
||||
"receipt": "Račun",
|
||||
"amount": "Iznos",
|
||||
|
||||
@@ -653,6 +653,8 @@
|
||||
"from_date": "Dari Tanggal",
|
||||
"to_date": "Sampai Tanggal",
|
||||
"expense_date": "Tanggal",
|
||||
"expense_number": "Nomor Biaya",
|
||||
"expense_number_placeholder": "EXP-001",
|
||||
"description": "Deskripsi",
|
||||
"receipt": "Tanda Terima",
|
||||
"amount": "Jumlah",
|
||||
|
||||
@@ -653,6 +653,8 @@
|
||||
"from_date": "Dalla Data",
|
||||
"to_date": "Alla Data",
|
||||
"expense_date": "Data",
|
||||
"expense_number": "Numero di spesa",
|
||||
"expense_number_placeholder": "EXP-001",
|
||||
"description": "Descrizione",
|
||||
"receipt": "Ricevuta",
|
||||
"amount": "Ammontare",
|
||||
|
||||
@@ -653,6 +653,8 @@
|
||||
"from_date": "開始日",
|
||||
"to_date": "終了日",
|
||||
"expense_date": "日時",
|
||||
"expense_number": "経費番号",
|
||||
"expense_number_placeholder": "EXP-001",
|
||||
"description": "説明",
|
||||
"receipt": "領収書",
|
||||
"amount": "数量",
|
||||
|
||||
@@ -442,6 +442,8 @@
|
||||
"from_date": "시작 날짜",
|
||||
"to_date": "현재까지",
|
||||
"expense_date": "데이트",
|
||||
"expense_number": "비용 번호",
|
||||
"expense_number_placeholder": "EXP-001",
|
||||
"description": "기술",
|
||||
"receipt": "영수증",
|
||||
"amount": "양",
|
||||
|
||||
@@ -653,6 +653,8 @@
|
||||
"from_date": "From Date",
|
||||
"to_date": "To Date",
|
||||
"expense_date": "Data",
|
||||
"expense_number": "Išlaidų numeris",
|
||||
"expense_number_placeholder": "EXP-001",
|
||||
"description": "Aprašymas",
|
||||
"receipt": "Čekis",
|
||||
"amount": "Amount",
|
||||
|
||||
@@ -653,6 +653,8 @@
|
||||
"from_date": "Datums no",
|
||||
"to_date": "Datums līdz",
|
||||
"expense_date": "Datums",
|
||||
"expense_number": "Izdevumu numurs",
|
||||
"expense_number_placeholder": "EXP-001",
|
||||
"description": "Apraksts",
|
||||
"receipt": "Čeks",
|
||||
"amount": "Summa",
|
||||
|
||||
@@ -653,6 +653,8 @@
|
||||
"from_date": "From Date",
|
||||
"to_date": "To Date",
|
||||
"expense_date": "Date",
|
||||
"expense_number": "Expense Number",
|
||||
"expense_number_placeholder": "EXP-001",
|
||||
"description": "Description",
|
||||
"receipt": "Receipt",
|
||||
"amount": "Amount",
|
||||
|
||||
@@ -653,6 +653,8 @@
|
||||
"from_date": "Van datum",
|
||||
"to_date": "Tot datum",
|
||||
"expense_date": "Datum",
|
||||
"expense_number": "Izdevumu numurs",
|
||||
"expense_number_placeholder": "EXP-001",
|
||||
"description": "Omschrijving",
|
||||
"receipt": "Bon",
|
||||
"amount": "Bedrag",
|
||||
|
||||
@@ -653,6 +653,8 @@
|
||||
"from_date": "Od daty",
|
||||
"to_date": "Do daty",
|
||||
"expense_date": "Data",
|
||||
"expense_number": "Numer wydatku",
|
||||
"expense_number_placeholder": "EXP-001",
|
||||
"description": "Opis",
|
||||
"receipt": "Potwierdzenie",
|
||||
"amount": "Kwota",
|
||||
|
||||
@@ -653,6 +653,8 @@
|
||||
"from_date": "A partir da Data",
|
||||
"to_date": "Até a Data",
|
||||
"expense_date": "Data",
|
||||
"expense_number": "Número de despesas",
|
||||
"expense_number_placeholder": "EXP-001",
|
||||
"description": "Descrição",
|
||||
"receipt": "Receita",
|
||||
"amount": "Montante",
|
||||
|
||||
@@ -653,6 +653,8 @@
|
||||
"from_date": "A partir da Data",
|
||||
"to_date": "Até a Data",
|
||||
"expense_date": "Data",
|
||||
"expense_number": "Número de despesas",
|
||||
"expense_number_placeholder": "EXP-001",
|
||||
"description": "Descrição",
|
||||
"receipt": "Recibo",
|
||||
"amount": "Valor",
|
||||
|
||||
@@ -653,6 +653,8 @@
|
||||
"from_date": "From Date",
|
||||
"to_date": "To Date",
|
||||
"expense_date": "Date",
|
||||
"expense_number": "Număr de cheltuială",
|
||||
"expense_number_placeholder": "EXP-001",
|
||||
"description": "Description",
|
||||
"receipt": "Receipt",
|
||||
"amount": "Amount",
|
||||
|
||||
@@ -653,6 +653,8 @@
|
||||
"from_date": "От даты",
|
||||
"to_date": "До даты",
|
||||
"expense_date": "Дата",
|
||||
"expense_number": "Номер расхода",
|
||||
"expense_number_placeholder": "EXP-001",
|
||||
"description": "Описание",
|
||||
"receipt": "Квитанция",
|
||||
"amount": "Сумма",
|
||||
|
||||
@@ -653,6 +653,8 @@
|
||||
"from_date": "Od dátumu",
|
||||
"to_date": "Do dátumu",
|
||||
"expense_date": "Dátum",
|
||||
"expense_number": "Številka odhodka",
|
||||
"expense_number_placeholder": "EXP-001",
|
||||
"description": "Popis",
|
||||
"receipt": "Doklad o zaplatení",
|
||||
"amount": "Suma",
|
||||
|
||||
@@ -653,6 +653,8 @@
|
||||
"from_date": "Datum od",
|
||||
"to_date": "Datum do",
|
||||
"expense_date": "Datum",
|
||||
"expense_number": "Broj troška",
|
||||
"expense_number_placeholder": "EXP-001",
|
||||
"description": "Opis",
|
||||
"receipt": "Račun",
|
||||
"amount": "Iznos",
|
||||
|
||||
@@ -653,6 +653,8 @@
|
||||
"from_date": "Från datum",
|
||||
"to_date": "Till datum",
|
||||
"expense_date": "Datum",
|
||||
"expense_number": "Utgiftsnummer",
|
||||
"expense_number_placeholder": "EXP-001",
|
||||
"description": "Beskrivning",
|
||||
"receipt": "Kvitto",
|
||||
"amount": "Summa",
|
||||
|
||||
@@ -653,6 +653,8 @@
|
||||
"from_date": "จากวันที่",
|
||||
"to_date": "ถึงวันที่",
|
||||
"expense_date": "วันที่",
|
||||
"expense_number": "เลขที่ค่าใช้จ่าย",
|
||||
"expense_number_placeholder": "EXP-001",
|
||||
"description": "คำอธิบาย",
|
||||
"receipt": "ใบเสร็จ",
|
||||
"amount": "จำนวนเงิน (บาท)",
|
||||
|
||||
@@ -653,6 +653,8 @@
|
||||
"from_date": "Başlangıç tarihi",
|
||||
"to_date": "Bitiş tarihi",
|
||||
"expense_date": "Tarih",
|
||||
"expense_number": "Gider Numarası",
|
||||
"expense_number_placeholder": "EXP-001",
|
||||
"description": "Açıklama",
|
||||
"receipt": "Makbuz",
|
||||
"amount": "Tutar",
|
||||
|
||||
@@ -653,6 +653,8 @@
|
||||
"from_date": "Від дати",
|
||||
"to_date": "До дати",
|
||||
"expense_date": "Дата",
|
||||
"expense_number": "Номер витрат",
|
||||
"expense_number_placeholder": "EXP-001",
|
||||
"description": "Опис",
|
||||
"receipt": "Квитанція",
|
||||
"amount": "Сума",
|
||||
|
||||
@@ -653,6 +653,8 @@
|
||||
"from_date": "Từ ngày",
|
||||
"to_date": "Đến nay",
|
||||
"expense_date": "Ngày",
|
||||
"expense_number": "Số chi phí",
|
||||
"expense_number_placeholder": "EXP-001",
|
||||
"description": "Sự miêu tả",
|
||||
"receipt": "Biên lai",
|
||||
"amount": "Số tiền",
|
||||
|
||||
@@ -653,6 +653,8 @@
|
||||
"from_date": "啟始日",
|
||||
"to_date": "終止日",
|
||||
"expense_date": "日期",
|
||||
"expense_number": "費用編號",
|
||||
"expense_number_placeholder": "EXP-001",
|
||||
"description": "詳情",
|
||||
"receipt": "收據",
|
||||
"amount": "總額",
|
||||
|
||||
1
resources/scripts/admin/stub/expense.js
vendored
1
resources/scripts/admin/stub/expense.js
vendored
@@ -3,6 +3,7 @@ import moment from 'moment'
|
||||
export default {
|
||||
expense_category_id: null,
|
||||
expense_date: moment().format('YYYY-MM-DD'),
|
||||
expense_number: '',
|
||||
amount: 100,
|
||||
notes: '',
|
||||
attachment_receipt: null,
|
||||
|
||||
@@ -116,6 +116,19 @@
|
||||
/>
|
||||
</BaseInputGroup>
|
||||
|
||||
<BaseInputGroup
|
||||
:label="$t('expenses.expense_number')"
|
||||
:content-loading="isFetchingInitialData"
|
||||
>
|
||||
<BaseInput
|
||||
v-model="expenseStore.currentExpense.expense_number"
|
||||
:content-loading="isFetchingInitialData"
|
||||
type="text"
|
||||
name="expense_number"
|
||||
:placeholder="$t('expenses.expense_number_placeholder')"
|
||||
/>
|
||||
</BaseInputGroup>
|
||||
|
||||
<BaseInputGroup
|
||||
:label="$t('expenses.amount')"
|
||||
:error="
|
||||
@@ -134,6 +147,7 @@
|
||||
@input="v$.currentExpense.amount.$touch()"
|
||||
/>
|
||||
</BaseInputGroup>
|
||||
|
||||
<BaseInputGroup
|
||||
:label="$t('expenses.currency')"
|
||||
:content-loading="isFetchingInitialData"
|
||||
@@ -216,6 +230,9 @@
|
||||
</BaseMultiselect>
|
||||
</BaseInputGroup>
|
||||
|
||||
</BaseInputGrid>
|
||||
|
||||
<BaseInputGrid class="mt-4">
|
||||
<BaseInputGroup
|
||||
:content-loading="isFetchingInitialData"
|
||||
:label="$t('expenses.note')"
|
||||
@@ -276,6 +293,7 @@
|
||||
</BaseButton>
|
||||
</div>
|
||||
</BaseInputGrid>
|
||||
|
||||
</BaseCard>
|
||||
</form>
|
||||
</BasePage>
|
||||
@@ -482,7 +500,10 @@ async function submitForm() {
|
||||
|
||||
isSaving.value = true
|
||||
|
||||
let formData = expenseStore.currentExpense
|
||||
let formData = {
|
||||
...expenseStore.currentExpense,
|
||||
expense_number: expenseStore.currentExpense.expense_number || ''
|
||||
}
|
||||
|
||||
try {
|
||||
if (isEdit.value) {
|
||||
|
||||
@@ -188,6 +188,10 @@
|
||||
{{ row.data.formatted_expense_date }}
|
||||
</template>
|
||||
|
||||
<template #cell-expense_number="{ row }">
|
||||
{{ row.data.expense_number || '-' }}
|
||||
</template>
|
||||
|
||||
<template #cell-user_name="{ row }">
|
||||
<BaseText
|
||||
:text="row.data.customer ? row.data.customer.name : '-'"
|
||||
@@ -281,6 +285,12 @@ const expenseColumns = computed(() => {
|
||||
thClass: 'extra',
|
||||
tdClass: 'font-medium text-gray-900',
|
||||
},
|
||||
{
|
||||
key: 'expense_number',
|
||||
label: t('expenses.expense_number'),
|
||||
thClass: 'extra',
|
||||
tdClass: 'font-medium text-gray-900',
|
||||
},
|
||||
{
|
||||
key: 'name',
|
||||
label: t('expenses.category'),
|
||||
|
||||
@@ -57,6 +57,7 @@ test('store validates using a form request', function () {
|
||||
|
||||
test('get expense data', function () {
|
||||
$expense = Expense::factory()->create([
|
||||
'expense_number' => 'EXP-000001',
|
||||
'expense_date' => '2019-02-05',
|
||||
]);
|
||||
|
||||
@@ -64,6 +65,7 @@ test('get expense data', function () {
|
||||
|
||||
$this->assertDatabaseHas('expenses', [
|
||||
'id' => $expense->id,
|
||||
'expense_number' => $expense['expense_number'],
|
||||
'notes' => $expense['notes'],
|
||||
'expense_category_id' => $expense['expense_category_id'],
|
||||
'amount' => $expense['amount'],
|
||||
|
||||
Reference in New Issue
Block a user