Skip to content

API reference / Quittio \ Laravel \ Testing

QuittioFake

final class in quittio/laravel · extends QuittioManager

Quittio\Laravel\Testing\QuittioFake · Source

Calculates invoices and chooses formats and profiles like a real run (requested formats, defaults.format, the automatic choice, profile keys and objects, defaults.profile), but skips validation, XML, template and PDF. Records every render call and every queued render, and dispatches the events of a real run (InvoiceRendering, InvoiceValidated with an empty result unless validation is off, InvoiceRendered).

Constants#

ConstantValueDescription
EXTENSION_TYPES\Quittio\Laravel\Support\DriverRegistry::TYPES from QuittioManager

Properties#

PropertyTypeDescription
$app protected readonlyIlluminate\Contracts\Container\Container from QuittioManager

Methods#

MethodDescription
->__construct()
->accountStatement()A new account statement with the seller and its defaults.
->assertDocumentQueued()
->assertDocumentRendered()
->assertNothingQueued()Asserts that neither an invoice nor a document was queued.
->assertNothingRendered()
->assertQueued()
->assertRendered()
->assertRenderedCount()
->bonusStatement()A new bonus statement (Bonusabrechnung, section 17 (4) UStG) with the seller and its defaults.
->build()
->cancellation()Builder for the cancellation of an issued invoice; render it like any invoice: Quittio::make(Quittio::cancellation($original, 'ST-2026-0001', 'Doppelt berechnet'))->render().
->check()Validates like a render run, without template and PDF, and returns the result; see Quittio\Core\Quittio::check().
->container()The application the manager works in. Under Laravel Octane that is the application of the current request (Container::getInstance()), not the one that created the singleton, so that configuration set for the request applies.
->core()The core built from the current configuration; it is kept until the quittio configuration changes (config()->set(), another tenant), flush(), extend() or registerCountry().
->coreWithLevels()A new core (not the cached one) that validates with the configured levels plus $levels, every driver with its settings of validation.drivers.* exactly as in a render run; e.g. quittio:validate --kosit --verapdf.
->correction()Builder for a corrected invoice (384) that replaces an issued invoice, see \Quittio\Core\Quittio::correction(); render it like any invoice.
->countries()The country packs of the core.
->defaultVat()VAT of invoice lines without VAT treatment (InvoiceBuilder::useDefaultVat()): the preset of quittio.defaults.vat, otherwise the standard preset of the seller's country pack; invoices of small businesses use the small business preset of the pack.
->deliveryNote()A new delivery note with the seller and its defaults.
->document()Starts the render call of a document; a builder is built at once.
->documents()The recorded document results (quotes, reminders, …), in order.
->edit()Builder that continues existing invoice data (a draft, an invoice read from XML); the declared amounts are compared with the configured calculator (calculation.*).
->extend()Registers a driver: renderer, validator, serializer or format_resolver, or a rule that replaces the PHP rule with the code $name. The factory receives the container and the driver's configuration.
->flush()Forgets the built core. Not needed after configuration changes: core() builds a new one when the quittio configuration differs from the one the core was built from.
->formats()The output formats of the core.
->invoice()A new invoice with the seller and its defaults (config/quittio.php, or the current issuer of quittio/managed); ends with ->render() or ->build().
->make()Starts a render call: format(), profile(), locale() … and render() or queue(). A builder is built and a model converted (ProvidesInvoiceData) at once.
->orderConfirmation()A new order confirmation with the seller and its defaults.
->paymentReminder()
->prepare()Calculates and validates without rendering, whatever the validation mode; see Quittio\Core\Quittio::prepare().
->priceReduction()Builder for a document on the reduction of the consideration of an issued invoice (e.g. a cash discount taken), see \Quittio\Core\Quittio::priceReduction(); render it like any invoice.
->profiles()The profiles of the core, those of the country packs included.
->proforma()A new proforma invoice with the seller and its defaults.
->queued()The recorded queued render jobs, in order.
->queuedDocuments()The recorded queued render jobs of documents, in order.
->queueDocument()Records the document job and dispatches it like the real manager.
->queueInvoice()Records the job and dispatches it like the real manager, so Queue::fake() sees it and a sync queue renders it with the fake.
->quote()A new quote with the seller and its defaults (config/quittio.php or the current issuer).
->read()Reads an incoming XML or PDF e-invoice from its content (bytes), never from a path.
->readFile()Reads an incoming XML or PDF e-invoice from a file.
->registerCountry()Registers a country pack; it wins over discovered and configured packs with the same code. The next call builds the core again (the default country depends on the packs).
->renderDocument()The render run behind PendingDocument::render(), with the events DocumentRendering and DocumentRendered.
->rendered()The recorded invoice results, in order (the main format of each call).
->renderInvoice()The render run behind PendingInvoice::render(), with the events InvoiceRendering, InvoiceValidated (not in the mode "off") or InvoiceValidationFailed, and InvoiceRendered.
->run()
->runDocument()
->settings()Typed read access to config('quittio').
->validateFile()Reads and validates an incoming e-invoice (content, never a path) with all configured levels.
->validatePath()Reads and validates an incoming e-invoice from a file with all configured levels.

__construct()#

public function __construct(Container $app)

inherited from QuittioManager

ParameterTypeDescription
$appIlluminate\Contracts\Container\Container

accountStatement()#

public function accountStatement(): RenderableDocumentBuilder

inherited from QuittioManager

A new account statement with the seller and its defaults.

Returns
RenderableDocumentBuilder

assertDocumentQueued()#

public function assertDocumentQueued(
    (callable(RenderDocument): bool)|null $callback = null,
): void
ParameterTypeDescription
$callback(callable(RenderDocument): bool)|null = nulle.g. fn ($job) => $job->data()->number === 'AN-1'

assertDocumentRendered()#

public function assertDocumentRendered(
    (callable(RenderedDocument): bool)|null $callback = null,
): void
ParameterTypeDescription
$callback(callable(RenderedDocument): bool)|null = null

assertNothingQueued()#

public function assertNothingQueued(): void

Asserts that neither an invoice nor a document was queued.

assertNothingRendered()#

public function assertNothingRendered(): void

assertQueued()#

public function assertQueued((callable(RenderInvoice): bool)|null $callback = null): void
ParameterTypeDescription
$callback(callable(RenderInvoice): bool)|null = nulle.g. fn ($job) => $job->data()->number === 'RE-1'

assertRendered()#

public function assertRendered(
    (callable(RenderedInvoice): bool)|null $callback = null,
): void
ParameterTypeDescription
$callback(callable(RenderedInvoice): bool)|null = null

assertRenderedCount()#

public function assertRenderedCount(int $count): void
ParameterTypeDescription
$countint

bonusStatement()#

public function bonusStatement(): RenderableDocumentBuilder

inherited from QuittioManager

A new bonus statement (Bonusabrechnung, section 17 (4) UStG) with the seller and its defaults.

Returns
RenderableDocumentBuilder

build()#

protected function build(list<string>|null $levels = null): Quittio

protected inherited from QuittioManager

ParameterTypeDescription
$levelslist<string>|null = nullvalidation levels instead of quittio.validation.levels
Returns
Quittio

cancellation()#

public function cancellation(
    InvoiceData $original,
    string $number,
    ?string $reason = null,
    ?string $strategy = null,
    ?Date $issueDate = null,
    list<array{line: string, quantity?: BigDecimal|int|string, amount?: string}>|null $lines = null,
    CancellationHistory|null $history = null,
    string|null $title = null,
): InvoiceBuilder

inherited from QuittioManager

Builder for the cancellation of an issued invoice; render it like any invoice: Quittio::make(Quittio::cancellation($original, 'ST-2026-0001', 'Doppelt berechnet'))->render().

ParameterTypeDescription
$originalInvoiceData
$numberstring
$reason?string = null
$strategy?string = null
$issueDate?Date = null
$lineslist<array{line: string, Quittio\Laravel\quantity?: Brick\Math\BigDecimal|int|string, Quittio\Laravel\amount?: string}>|null = nullpartial cancellation; null = full
$historyCancellationHistory|null = nullearlier partial cancellations, for the cumulative rounding of the VAT
$titlestring|null = nulldocument title in the PDF, e.g. "Stornorechnung"; null = the title of the country pack's correction policy
Returns
InvoiceBuilder

check()#

public function check(InvoiceData $invoice, RenderOptions $options): ValidationResult

inherited from QuittioManager

Validates like a render run, without template and PDF, and returns the result; see Quittio\Core\Quittio::check().

ParameterTypeDescription
$invoiceInvoiceData
$optionsRenderOptions
Returns
ValidationResult
Throws
ConfigurationException – for an unknown format or an unsupported profile

container()#

protected function container(): Container

protected inherited from QuittioManager

The application the manager works in. Under Laravel Octane that is the application of the current request (Container::getInstance()), not the one that created the singleton, so that configuration set for the request applies.

Returns
Illuminate\Contracts\Container\Container

core()#

public function core(): Quittio

inherited from QuittioManager

The core built from the current configuration; it is kept until the quittio configuration changes (config()->set(), another tenant), flush(), extend() or registerCountry().

Returns
Quittio

coreWithLevels()#

public function coreWithLevels(list<string> $levels): Quittio

inherited from QuittioManager

A new core (not the cached one) that validates with the configured levels plus $levels, every driver with its settings of validation.drivers.* exactly as in a render run; e.g. quittio:validate --kosit --verapdf.

ParameterTypeDescription
$levelslist<string>names as in quittio.validation.levels, e.g. kosit, verapdf
Returns
Quittio

correction()#

public function correction(
    InvoiceData $original,
    string $number,
    ?string $reason = null,
    ?Date $issueDate = null,
    ?string $title = null,
): InvoiceBuilder

inherited from QuittioManager

Builder for a corrected invoice (384) that replaces an issued invoice, see \Quittio\Core\Quittio::correction(); render it like any invoice.

ParameterTypeDescription
$originalInvoiceData
$numberstring
$reason?string = null
$issueDate?Date = null
$title?string = null
Returns
InvoiceBuilder

countries()#

public function countries(): CountryRegistry

inherited from QuittioManager

The country packs of the core.

Returns
CountryRegistry

defaultVat()#

public function defaultVat(?string $sellerCountry, bool $smallBusiness): ?TaxPreset

inherited from QuittioManager

VAT of invoice lines without VAT treatment (InvoiceBuilder::useDefaultVat()): the preset of quittio.defaults.vat, otherwise the standard preset of the seller's country pack; invoices of small businesses use the small business preset of the pack.

ParameterTypeDescription
$sellerCountry?string
$smallBusinessbool
Returns
?TaxPreset

deliveryNote()#

public function deliveryNote(): RenderableDocumentBuilder

inherited from QuittioManager

A new delivery note with the seller and its defaults.

Returns
RenderableDocumentBuilder

document()#

public function document(DocumentData|DocumentBuilder $document): PendingDocument

inherited from QuittioManager

Starts the render call of a document; a builder is built at once.

ParameterTypeDescription
$documentDocumentData|DocumentBuilder
Returns
PendingDocument
Throws
InvalidInvoiceData – when a builder misses the seller, the buyer or a line's essentials

documents()#

public function documents(): list<RenderedDocument>

The recorded document results (quotes, reminders, …), in order.

Returns
list<RenderedDocument>

edit()#

public function edit(InvoiceData $data): RenderableInvoiceBuilder

inherited from QuittioManager

Builder that continues existing invoice data (a draft, an invoice read from XML); the declared amounts are compared with the configured calculator (calculation.*).

ParameterTypeDescription
$dataInvoiceData
Returns
RenderableInvoiceBuilder

extend()#

public function extend(string $type, string $name, Closure $factory): static

inherited from QuittioManager

Registers a driver: renderer, validator, serializer or format_resolver, or a rule that replaces the PHP rule with the code $name. The factory receives the container and the driver's configuration.

ParameterTypeDescription
$typestring
$namestring
$factoryClosure
Returns
static

flush()#

public function flush(): static

inherited from QuittioManager

Forgets the built core. Not needed after configuration changes: core() builds a new one when the quittio configuration differs from the one the core was built from.

Returns
static

formats()#

public function formats(): FormatRegistry

inherited from QuittioManager

The output formats of the core.

Returns
FormatRegistry

invoice()#

public function invoice(): RenderableInvoiceBuilder

inherited from QuittioManager

A new invoice with the seller and its defaults (config/quittio.php, or the current issuer of quittio/managed); ends with ->render() or ->build().

Returns
RenderableInvoiceBuilder

make()#

public function make(InvoiceData|ProvidesInvoiceData|InvoiceBuilder $data): PendingInvoice

inherited from QuittioManager

Starts a render call: format(), profile(), locale() … and render() or queue(). A builder is built and a model converted (ProvidesInvoiceData) at once.

ParameterTypeDescription
$dataInvoiceData|ProvidesInvoiceData|InvoiceBuilder
Returns
PendingInvoice
Throws
InvalidInvoiceData – when a builder misses an essential part (see InvoiceBuilder::build())

orderConfirmation()#

public function orderConfirmation(): RenderableDocumentBuilder

inherited from QuittioManager

A new order confirmation with the seller and its defaults.

Returns
RenderableDocumentBuilder

paymentReminder()#

public function paymentReminder(int $level = 0): RenderableDocumentBuilder

inherited from QuittioManager

ParameterTypeDescription
$levelint = 00 = payment reminder, 1 = first reminder, 2 = second reminder …
Returns
RenderableDocumentBuilder

prepare()#

public function prepare(InvoiceData $invoice, RenderOptions $options): PreparedInvoice

inherited from QuittioManager

Calculates and validates without rendering, whatever the validation mode; see Quittio\Core\Quittio::prepare().

ParameterTypeDescription
$invoiceInvoiceData
$optionsRenderOptions
Returns
PreparedInvoice
Throws
ConfigurationException – for an unknown format or an unsupported profile

priceReduction()#

public function priceReduction(
    InvoiceData $original,
    string $number,
    PriceReductionReason $reason,
    BigDecimal|int|string|null $percent = null,
    BigDecimal|int|string|null $amount = null,
    array<string, BigDecimal|int|string>|null $amounts = null,
    ?Date $issueDate = null,
    ?string $title = null,
): InvoiceBuilder

inherited from QuittioManager

Builder for a document on the reduction of the consideration of an issued invoice (e.g. a cash discount taken), see \Quittio\Core\Quittio::priceReduction(); render it like any invoice.

ParameterTypeDescription
$originalInvoiceData
$numberstring
$reasonPriceReductionReason
$percentBrick\Math\BigDecimal|int|string|null = null
$amountBrick\Math\BigDecimal|int|string|null = null
$amountsarray<string, Brick\Math\BigDecimal|int|string>|null = nullnet amount per VAT group ("S:19" => '50.00')
$issueDate?Date = null
$title?string = null
Returns
InvoiceBuilder

profiles()#

public function profiles(): ProfileRegistry

inherited from QuittioManager

The profiles of the core, those of the country packs included.

Returns
ProfileRegistry

proforma()#

public function proforma(): RenderableDocumentBuilder

inherited from QuittioManager

A new proforma invoice with the seller and its defaults.

Returns
RenderableDocumentBuilder

queued()#

public function queued(): list<RenderInvoice>

The recorded queued render jobs, in order.

Returns
list<RenderInvoice>

queuedDocuments()#

public function queuedDocuments(): list<RenderDocument>

The recorded queued render jobs of documents, in order.

Returns
list<RenderDocument>

queueDocument()#

public function queueDocument(RenderDocument $job): RenderDocument

Records the document job and dispatches it like the real manager.

ParameterTypeDescription
$jobRenderDocument
Returns
RenderDocument

queueInvoice()#

public function queueInvoice(RenderInvoice $job): RenderInvoice

Records the job and dispatches it like the real manager, so Queue::fake() sees it and a sync queue renders it with the fake.

ParameterTypeDescription
$jobRenderInvoice
Returns
RenderInvoice

quote()#

public function quote(): RenderableDocumentBuilder

inherited from QuittioManager

A new quote with the seller and its defaults (config/quittio.php or the current issuer).

Returns
RenderableDocumentBuilder

read()#

public function read(string $content): ReadResult

inherited from QuittioManager

Reads an incoming XML or PDF e-invoice from its content (bytes), never from a path.

ParameterTypeDescription
$contentstring
Returns
ReadResult
Throws
UnsafeXmlException – when the XML is too large, not well-formed or not allowed
Throws
PdfException – when the PDF is too large, encrypted, malformed or exceeds a limit
Throws
UnreadableInvoiceException – for an unknown format, ZUGFeRD 1.0 or a PDF without an embedded invoice

readFile()#

public function readFile(string $path): ReadResult

inherited from QuittioManager

Reads an incoming XML or PDF e-invoice from a file.

ParameterTypeDescription
$pathstring
Returns
ReadResult
Throws
UnsafeXmlException – when the XML is too large, not well-formed or not allowed
Throws
PdfException – when the PDF is too large, encrypted, malformed or exceeds a limit
Throws
UnreadableInvoiceException – for an unknown format, ZUGFeRD 1.0 or a PDF without an embedded invoice (or a file that cannot be read)

registerCountry()#

public function registerCountry(CountryPack $pack): static

inherited from QuittioManager

Registers a country pack; it wins over discovered and configured packs with the same code. The next call builds the core again (the default country depends on the packs).

ParameterTypeDescription
$packCountryPack
Returns
static

renderDocument()#

public function renderDocument(
    DocumentData $document,
    RenderOptions $options,
): RenderedDocument

inherited from QuittioManager

The render run behind PendingDocument::render(), with the events DocumentRendering and DocumentRendered.

ParameterTypeDescription
$documentDocumentData
$optionsRenderOptions
Returns
RenderedDocument

rendered()#

public function rendered(): list<RenderedInvoice>

The recorded invoice results, in order (the main format of each call).

Returns
list<RenderedInvoice>

renderInvoice()#

public function renderInvoice(
    InvoiceData $invoice,
    RenderOptions $options,
): RenderedInvoice

inherited from QuittioManager

The render run behind PendingInvoice::render(), with the events InvoiceRendering, InvoiceValidated (not in the mode "off") or InvoiceValidationFailed, and InvoiceRendered.

ParameterTypeDescription
$invoiceInvoiceData
$optionsRenderOptions
Returns
RenderedInvoice
Throws
ValidationException – when validation finds errors in the mode "error"
Throws
ConfigurationException – for an unknown format or an unsupported profile; see Quittio\Core\Quittio::render() for the other exceptions of a run

run()#

protected function run(InvoiceData $invoice, RenderOptions $options): RenderedInvoice

protected

ParameterTypeDescription
$invoiceInvoiceData
$optionsRenderOptions
Returns
RenderedInvoice

runDocument()#

protected function runDocument(
    DocumentData $document,
    RenderOptions $options,
): RenderedDocument

protected

ParameterTypeDescription
$documentDocumentData
$optionsRenderOptions
Returns
RenderedDocument

settings()#

public function settings(): Settings

inherited from QuittioManager

Typed read access to config('quittio').

Returns
Settings

validateFile()#

public function validateFile(string $content): ValidationResult

inherited from QuittioManager

Reads and validates an incoming e-invoice (content, never a path) with all configured levels.

ParameterTypeDescription
$contentstring
Returns
ValidationResult
Throws
UnsafeXmlException – when the XML is too large, not well-formed or not allowed
Throws
PdfException – when the PDF is too large, encrypted, malformed or exceeds a limit
Throws
UnreadableInvoiceException – for an unknown format, ZUGFeRD 1.0 or a PDF without an embedded invoice

validatePath()#

public function validatePath(string $path): ValidationResult

inherited from QuittioManager

Reads and validates an incoming e-invoice from a file with all configured levels.

ParameterTypeDescription
$pathstring
Returns
ValidationResult
Throws
UnsafeXmlException – when the XML is too large, not well-formed or not allowed
Throws
PdfException – when the PDF is too large, encrypted, malformed or exceeds a limit
Throws
UnreadableInvoiceException – for an unknown format, ZUGFeRD 1.0 or a PDF without an embedded invoice (or a file that cannot be read)

The open core packages are MIT licensed. The legal wording of the country packs must be confirmed by a tax adviser.