diff --git a/app/Http/Requests/CompaniesRequest.php b/app/Http/Requests/CompaniesRequest.php
index 60e2e0ca..c774ea5c 100644
--- a/app/Http/Requests/CompaniesRequest.php
+++ b/app/Http/Requests/CompaniesRequest.php
@@ -69,6 +69,8 @@ class CompaniesRequest extends FormRequest
return collect($this->validated())
->only([
'name',
+ 'vat_id',
+ 'tax_id',
])
->merge([
'owner_id' => $this->user()->id,
diff --git a/app/Http/Requests/CompanyRequest.php b/app/Http/Requests/CompanyRequest.php
index 730fe7b9..8dc5001a 100644
--- a/app/Http/Requests/CompanyRequest.php
+++ b/app/Http/Requests/CompanyRequest.php
@@ -29,6 +29,12 @@ class CompanyRequest extends FormRequest
'required',
Rule::unique('companies')->ignore($this->header('company'), 'id'),
],
+ 'vat_id' => [
+ 'nullable',
+ ],
+ 'tax_id' => [
+ 'nullable',
+ ],
'slug' => [
'nullable',
],
@@ -44,6 +50,8 @@ class CompanyRequest extends FormRequest
->only([
'name',
'slug',
+ 'vat_id',
+ 'tax_id',
])
->toArray();
}
diff --git a/app/Http/Resources/CompanyResource.php b/app/Http/Resources/CompanyResource.php
index 9a81682c..7ca384df 100644
--- a/app/Http/Resources/CompanyResource.php
+++ b/app/Http/Resources/CompanyResource.php
@@ -17,6 +17,8 @@ class CompanyResource extends JsonResource
return [
'id' => $this->id,
'name' => $this->name,
+ 'vat_id' => $this->vat_id,
+ 'tax_id' => $this->tax_id,
'logo' => $this->logo,
'logo_path' => $this->logo_path,
'unique_hash' => $this->unique_hash,
diff --git a/database/migrations/2024_04_12_162703_add_tax_ids_to_companies.php b/database/migrations/2024_04_12_162703_add_tax_ids_to_companies.php
new file mode 100644
index 00000000..90d620e7
--- /dev/null
+++ b/database/migrations/2024_04_12_162703_add_tax_ids_to_companies.php
@@ -0,0 +1,32 @@
+after('unique_hash', function (Blueprint $table) {
+ $table->string('vat_id')->nullable();
+ $table->string('tax_id')->nullable();
+ });
+ });
+ }
+
+ /**
+ * Reverse the migrations.
+ */
+ public function down(): void
+ {
+ Schema::table('companies', function (Blueprint $table) {
+ $table->dropColumn('vat_id');
+ $table->dropColumn('tax_id');
+ });
+ }
+};
diff --git a/lang/de.json b/lang/de.json
index d5105593..985fc411 100644
--- a/lang/de.json
+++ b/lang/de.json
@@ -863,6 +863,8 @@
"company_info": {
"company_info": "Firmeninfo",
"company_name": "Name des Unternehmens",
+ "vat_id": "Umsatzsteuer-Identifikationsnummer",
+ "tax_id": "Steuernummer",
"company_logo": "Firmenlogo",
"section_description": "Informationen zu Ihrem Unternehmen, die auf Rechnungen, Angeboten und anderen von InvoiceShelf erstellten Dokumenten angezeigt werden.",
"phone": "Telefon",
@@ -1528,5 +1530,7 @@
"pdf_bill_to": "Rechnungsanschrift",
"pdf_ship_to": "Lieferanschrift",
"pdf_received_from": "Erhalten von:",
- "pdf_tax_label": "Steuer"
+ "pdf_tax_label": "Steuer",
+ "pdf_tax_id": "Steuer-Nr.",
+ "pdf_vat_id": "USt.-ID"
}
diff --git a/lang/en.json b/lang/en.json
index a1c372b9..9e042c29 100644
--- a/lang/en.json
+++ b/lang/en.json
@@ -863,6 +863,8 @@
"company_info": {
"company_info": "Company info",
"company_name": "Company Name",
+ "tax_id": "Tax Identification Number",
+ "vat_id": "VAT Identification Number",
"company_logo": "Company Logo",
"section_description": "Information about your company that will be displayed on invoices, estimates and other documents created by InvoiceShelf.",
"phone": "Phone",
@@ -1528,5 +1530,7 @@
"pdf_bill_to": "Bill to,",
"pdf_ship_to": "Ship to,",
"pdf_received_from": "Received from:",
- "pdf_tax_label": "Tax"
+ "pdf_tax_label": "Tax",
+ "pdf_tax_id": "Tax-ID",
+ "pdf_vat_id": "VAT-ID"
}
diff --git a/resources/scripts/admin/views/installation/Step7CompanyInfo.vue b/resources/scripts/admin/views/installation/Step7CompanyInfo.vue
index f5295171..73880722 100644
--- a/resources/scripts/admin/views/installation/Step7CompanyInfo.vue
+++ b/resources/scripts/admin/views/installation/Step7CompanyInfo.vue
@@ -131,6 +131,25 @@
/>
+
+
+
+
+
+
+
+
@@ -162,6 +181,8 @@ let logoFileName = ref(null)
const companyForm = reactive({
name: null,
+ tax_id: null,
+ vat_id: null,
address: {
address_street_1: '',
address_street_2: '',
@@ -200,13 +221,13 @@ const rules = {
address_street_1: {
maxLength: helpers.withMessage(
t('validation.address_maxlength', { count: 255 }),
- maxLength(255)
+ maxLength(255),
),
},
address_street_2: {
maxLength: helpers.withMessage(
t('validation.address_maxlength', { count: 255 }),
- maxLength(255)
+ maxLength(255),
),
},
},
@@ -241,7 +262,7 @@ async function next() {
JSON.stringify({
name: logoFileName.value,
data: logoFileBlob.value,
- })
+ }),
)
await companyStore.updateCompanyLogo(logoData)
}
diff --git a/resources/scripts/admin/views/settings/CompanyInfoSettings.vue b/resources/scripts/admin/views/settings/CompanyInfoSettings.vue
index 2da507be..ade292a0 100644
--- a/resources/scripts/admin/views/settings/CompanyInfoSettings.vue
+++ b/resources/scripts/admin/views/settings/CompanyInfoSettings.vue
@@ -84,6 +84,16 @@
class="mt-2"
/>
+
+
+
+
+
+
+
+
+
+