diff --git a/resources/assets/js/components/base/modal/TaxTypeModal.vue b/resources/assets/js/components/base/modal/TaxTypeModal.vue index b0c83861..b786744e 100644 --- a/resources/assets/js/components/base/modal/TaxTypeModal.vue +++ b/resources/assets/js/components/base/modal/TaxTypeModal.vue @@ -157,7 +157,7 @@ export default { }, percent: { required, - between: between(0, 100), + between: between(-100, 100), }, description: { maxLength: maxLength(255), diff --git a/tests/Feature/InvoiceTest.php b/tests/Feature/InvoiceTest.php index cd213197..a900af01 100644 --- a/tests/Feature/InvoiceTest.php +++ b/tests/Feature/InvoiceTest.php @@ -257,3 +257,31 @@ test('clone invoice', function () { 'success' => true, ]); }); + +test('create invoice with negative tax', function () { + $invoice = Invoice::factory() + ->raw([ + 'taxes' => [Tax::factory()->raw([ + 'percent' => -9.99 + ])], + 'items' => [InvoiceItem::factory()->raw()], + ]); + + $response = postJson('api/v1/invoices', $invoice); + + $response->assertOk(); + + $this->assertDatabaseHas('invoices', [ + 'invoice_number' => $invoice['invoice_number'], + 'sub_total' => $invoice['sub_total'], + 'total' => $invoice['total'], + 'tax' => $invoice['tax'], + 'discount' => $invoice['discount'], + 'user_id' => $invoice['user_id'], + 'invoice_template_id' => $invoice['invoice_template_id'], + ]); + + $this->assertDatabaseHas('invoice_items', $invoice['items'][0]); + + $this->assertDatabaseHas('taxes', $invoice['taxes'][0]); +}); diff --git a/tests/Feature/TaxTypeTest.php b/tests/Feature/TaxTypeTest.php index 010ff409..001a3a05 100644 --- a/tests/Feature/TaxTypeTest.php +++ b/tests/Feature/TaxTypeTest.php @@ -92,3 +92,15 @@ test('delete tax type', function () { $this->assertDeleted($taxType); }); + + +test('create negative tax type', function () { + $taxType = TaxType::factory()->raw([ + 'percent' => -9.99 + ]); + + postJson('api/v1/tax-types', $taxType) + ->assertOk(); + + $this->assertDatabaseHas('tax_types', $taxType); +});