Invoice tax rates API (#5740)
This commit is contained in:
@@ -13,6 +13,8 @@ use App\Entity\Customer;
|
||||
use App\Entity\CustomerMeta;
|
||||
use App\Entity\InvoiceTemplate;
|
||||
use App\Entity\InvoiceTemplateMeta;
|
||||
use App\Entity\Tax;
|
||||
use App\Entity\TaxType;
|
||||
use Doctrine\Common\Collections\Collection;
|
||||
use PHPUnit\Framework\Attributes\CoversClass;
|
||||
use PHPUnit\Framework\TestCase;
|
||||
@@ -44,6 +46,48 @@ class InvoiceTemplateTest extends TestCase
|
||||
self::assertNull($sut->getMetaField('foo'));
|
||||
}
|
||||
|
||||
public function testTaxRates(): void
|
||||
{
|
||||
$sut = new InvoiceTemplate();
|
||||
|
||||
$rates = $sut->getTaxRates();
|
||||
self::assertCount(1, $rates);
|
||||
self::assertEquals(TaxType::STANDARD, $rates[0]->getType());
|
||||
self::assertEquals(0.00, $rates[0]->getRate());
|
||||
self::assertEquals('vat', $rates[0]->getName());
|
||||
self::assertNull($rates[0]->getNote());
|
||||
|
||||
$tax1 = new Tax(
|
||||
TaxType::REVERSE,
|
||||
$this->vat ?? 0.00,
|
||||
'tax.name.reverse_charge',
|
||||
true,
|
||||
null
|
||||
);
|
||||
$tax2 = new Tax(
|
||||
TaxType::EXEMPT,
|
||||
$this->vat ?? 0.00,
|
||||
'tax.name.exempt',
|
||||
true,
|
||||
null
|
||||
);
|
||||
|
||||
$sut->setTaxRates([$tax1, $tax2]);
|
||||
$rates = $sut->getTaxRates();
|
||||
|
||||
self::assertCount(2, $rates);
|
||||
|
||||
self::assertEquals(TaxType::REVERSE, $rates[0]->getType());
|
||||
self::assertEquals(0.00, $rates[0]->getRate());
|
||||
self::assertEquals('tax.name.reverse_charge', $rates[0]->getName());
|
||||
self::assertNull($rates[0]->getNote());
|
||||
|
||||
self::assertEquals(TaxType::EXEMPT, $rates[1]->getType());
|
||||
self::assertEquals(0.00, $rates[1]->getRate());
|
||||
self::assertEquals('tax.name.exempt', $rates[1]->getName());
|
||||
self::assertNull($rates[1]->getNote());
|
||||
}
|
||||
|
||||
public function testSetterAndGetter(): void
|
||||
{
|
||||
$sut = new InvoiceTemplate();
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<style type="text/css">
|
||||
{{ encore_entry_css_source('invoice')|raw }}
|
||||
{{ encore_entry_css_source('invoice-pdf')|raw }}
|
||||
</style>
|
||||
</head>
|
||||
<body class="invoice_print">
|
||||
|
||||
@@ -11,6 +11,13 @@ namespace App\Tests\Mocks;
|
||||
|
||||
use App\Activity\ActivityStatisticService;
|
||||
use App\Customer\CustomerStatisticService;
|
||||
use App\Invoice\Hydrator\InvoiceItemDefaultHydrator;
|
||||
use App\Invoice\Hydrator\InvoiceModelActivityHydrator;
|
||||
use App\Invoice\Hydrator\InvoiceModelCustomerHydrator;
|
||||
use App\Invoice\Hydrator\InvoiceModelDefaultHydrator;
|
||||
use App\Invoice\Hydrator\InvoiceModelIssuerHydrator;
|
||||
use App\Invoice\Hydrator\InvoiceModelProjectHydrator;
|
||||
use App\Invoice\Hydrator\InvoiceModelUserHydrator;
|
||||
use App\Invoice\InvoiceModelFactory;
|
||||
use App\Project\ProjectStatisticService;
|
||||
use App\Timesheet\RateCalculator\DecimalRateCalculator;
|
||||
@@ -25,8 +32,19 @@ class InvoiceModelFactoryFactory extends AbstractMockFactory
|
||||
$projectStatistic = $this->getMockBuilder(ProjectStatisticService::class)->disableOriginalConstructor()->getMock();
|
||||
/** @var ActivityStatisticService $activityStatistic */
|
||||
$activityStatistic = $this->getMockBuilder(ActivityStatisticService::class)->disableOriginalConstructor()->getMock();
|
||||
$rateMode = new DecimalRateCalculator();
|
||||
|
||||
return new InvoiceModelFactory($customerStatistic, $projectStatistic, $activityStatistic, $rateMode);
|
||||
$modelHydrators = [
|
||||
new InvoiceModelDefaultHydrator(),
|
||||
new InvoiceModelCustomerHydrator($customerStatistic),
|
||||
new InvoiceModelIssuerHydrator(),
|
||||
new InvoiceModelProjectHydrator($projectStatistic),
|
||||
new InvoiceModelActivityHydrator($activityStatistic),
|
||||
new InvoiceModelUserHydrator(),
|
||||
];
|
||||
$itemHydrators = [
|
||||
new InvoiceItemDefaultHydrator(),
|
||||
];
|
||||
|
||||
return new InvoiceModelFactory(new DecimalRateCalculator(), $modelHydrators, $itemHydrators);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user