Skip to content

Commit

Permalink
Remove Constants Class
Browse files Browse the repository at this point in the history
Move consts to builder class
  • Loading branch information
BolZer committed Mar 2, 2024
1 parent bb17b0d commit 3407554
Show file tree
Hide file tree
Showing 2 changed files with 86 additions and 3 deletions.
3 changes: 3 additions & 0 deletions src/zugferd2/Builder.php
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,9 @@

class Builder
{
public const GUIDELINE_SPECIFIED_DOCUMENT_CONTEXT_ID_BASIC = 'urn:cen.eu:en16931:2017#compliant#urn:factur-x.eu:1p0:basic';
public const GUIDELINE_SPECIFIED_DOCUMENT_CONTEXT_ID_BASIC_WL = 'urn:factur-x.eu:1p0:basicwl';

public function __construct(private readonly SerializerInterface $serializer)
{
}
Expand Down
86 changes: 83 additions & 3 deletions tests/zugferd2/Tests/BuilderTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@

namespace Easybill\ZUGFeRD2\Tests;

use Easybill\ZUGFeRD2\Builder;
use Easybill\ZUGFeRD2\Model\Amount;
use Easybill\ZUGFeRD2\Model\CrossIndustryInvoice;
use Easybill\ZUGFeRD2\Model\DateTime;
Expand Down Expand Up @@ -46,7 +47,7 @@ public function testBuildBASICEinfach(): void
$invoice = new CrossIndustryInvoice();
$invoice->exchangedDocumentContext = new ExchangedDocumentContext();
$invoice->exchangedDocumentContext->documentContextParameter = new DocumentContextParameter();
$invoice->exchangedDocumentContext->documentContextParameter->id = 'urn:cen.eu:en16931:2017#compliant#urn:factur-x.eu:1p0:basic';
$invoice->exchangedDocumentContext->documentContextParameter->id = Builder::GUIDELINE_SPECIFIED_DOCUMENT_CONTEXT_ID_BASIC;

$invoice->exchangedDocument = new ExchangedDocument();
$invoice->exchangedDocument->id = '471102';
Expand Down Expand Up @@ -157,7 +158,7 @@ public function testBuildBASICRechnungskorrektur(): void
$invoice = new CrossIndustryInvoice();
$invoice->exchangedDocumentContext = new ExchangedDocumentContext();
$invoice->exchangedDocumentContext->documentContextParameter = new DocumentContextParameter();
$invoice->exchangedDocumentContext->documentContextParameter->id = 'urn:cen.eu:en16931:2017#compliant#urn:factur-x.eu:1p0:basic';
$invoice->exchangedDocumentContext->documentContextParameter->id = Builder::GUIDELINE_SPECIFIED_DOCUMENT_CONTEXT_ID_BASIC;

$invoice->exchangedDocument = new ExchangedDocument();
$invoice->exchangedDocument->id = 'RK21012345';
Expand Down Expand Up @@ -362,7 +363,7 @@ public function testBuildBASICTaxifahrt(): void
$invoice = new CrossIndustryInvoice();
$invoice->exchangedDocumentContext = new ExchangedDocumentContext();
$invoice->exchangedDocumentContext->documentContextParameter = new DocumentContextParameter();
$invoice->exchangedDocumentContext->documentContextParameter->id = 'urn:cen.eu:en16931:2017#compliant#urn:factur-x.eu:1p0:basic';
$invoice->exchangedDocumentContext->documentContextParameter->id = Builder::GUIDELINE_SPECIFIED_DOCUMENT_CONTEXT_ID_BASIC;

$invoice->exchangedDocument = new ExchangedDocument();
$invoice->exchangedDocument->id = 'TX-471102';
Expand Down Expand Up @@ -477,4 +478,83 @@ public function testBuildBASICTaxifahrt(): void
Validator::SCHEMA_BASIC
);
}

public function testBuildBASICWLEinfach(): void
{
$invoice = new CrossIndustryInvoice();
$invoice->exchangedDocumentContext = new ExchangedDocumentContext();
$invoice->exchangedDocumentContext->documentContextParameter = new DocumentContextParameter();
$invoice->exchangedDocumentContext->documentContextParameter->id = Builder::GUIDELINE_SPECIFIED_DOCUMENT_CONTEXT_ID_BASIC_WL;

$invoice->exchangedDocument = new ExchangedDocument();
$invoice->exchangedDocument->id = 'TX-471102';
$invoice->exchangedDocument->typeCode = '380';
$invoice->exchangedDocument->issueDateTime = DateTime::create(102, '20191030');
$invoice->exchangedDocument->notes[] = Note::create('Rechnung gemäß Taxifahrt vom 29.10.2019');
$invoice->exchangedDocument->notes[] = Note::create('Taxiunternehmen TX GmbH
Lieferantenstraße 20
10369 Berlin
Deutschland
Geschäftsführer: Hans Mustermann
Handelsregisternummer: H A 123
');
$invoice->exchangedDocument->notes[] = Note::create('Unsere GLN: 4000001123452
Ihre GLN: 4000001987658
Ihre Kundennummer: GE2020211
');

$invoice->supplyChainTradeTransaction = new SupplyChainTradeTransaction();
$invoice->supplyChainTradeTransaction->applicableHeaderTradeAgreement = new HeaderTradeAgreement();

// Seller Trade Party
$invoice->supplyChainTradeTransaction->applicableHeaderTradeAgreement->sellerTradeParty = $sellerTradeParty = new TradeParty();
$sellerTradeParty->name = 'Taxiunternehmen TX GmbH';
$sellerTradeParty->postalTradeAddress = new TradeAddress();
$sellerTradeParty->postalTradeAddress->postcode = '10369';
$sellerTradeParty->postalTradeAddress->lineOne = 'Lieferantenstraße 20';
$sellerTradeParty->postalTradeAddress->city = 'Berlin';
$sellerTradeParty->postalTradeAddress->countryCode = 'DE';
$sellerTradeParty->taxRegistrations[] = TaxRegistration::create('DE123456789', 'VA');

// Buyer Trade Party
$invoice->supplyChainTradeTransaction->applicableHeaderTradeAgreement->buyerTradeParty = $buyerTradeParty = new TradeParty();
$buyerTradeParty->name = 'Taxi-Gast AG Mitte';
$buyerTradeParty->postalTradeAddress = new TradeAddress();
$buyerTradeParty->postalTradeAddress->postcode = '13351';
$buyerTradeParty->postalTradeAddress->lineOne = 'Hans Mustermann';
$buyerTradeParty->postalTradeAddress->lineTwo = 'Kundenstraße 15';
$buyerTradeParty->postalTradeAddress->city = 'Berlin';
$buyerTradeParty->postalTradeAddress->countryCode = 'DE';

$invoice->supplyChainTradeTransaction->applicableHeaderTradeDelivery = new HeaderTradeDelivery();
$invoice->supplyChainTradeTransaction->applicableHeaderTradeDelivery->chainEvent = $chainEvent = new SupplyChainEvent();
$chainEvent->date = DateTime::create(102, '20191029');

$invoice->supplyChainTradeTransaction->applicableHeaderTradeSettlement = new HeaderTradeSettlement();
$invoice->supplyChainTradeTransaction->applicableHeaderTradeSettlement->currency = 'EUR';
$invoice->supplyChainTradeTransaction->applicableHeaderTradeSettlement->tradeTaxes[] = $headerTax1 = new TradeTax();
$headerTax1->typeCode = 'VAT';
$headerTax1->categoryCode = 'S';
$headerTax1->basisAmount = Amount::create('16.90');
$headerTax1->calculatedAmount = Amount::create('1.18');
$headerTax1->rateApplicablePercent = '7';

$invoice->supplyChainTradeTransaction->applicableHeaderTradeSettlement->specifiedTradePaymentTerms[] = $paymentTerms = new TradePaymentTerms();
$paymentTerms->dueDate = DateTime::create(102, '20191129');

$invoice->supplyChainTradeTransaction->applicableHeaderTradeSettlement->specifiedTradeSettlementHeaderMonetarySummation = $monetarySummation = new TradeSettlementHeaderMonetarySummation();
$monetarySummation->lineTotalAmount = Amount::create('16.90');
$monetarySummation->chargeTotalAmount = Amount::create('0.00');
$monetarySummation->allowanceTotalAmount = Amount::create('0.00');
$monetarySummation->taxBasisTotalAmount[] = Amount::create('16.90');
$monetarySummation->taxTotalAmount[] = Amount::create('1.18', 'EUR');
$monetarySummation->grandTotalAmount[] = Amount::create('18.08');
$monetarySummation->duePayableAmount = Amount::create('18.08');

$this->buildAndAssertXmlFromCII(
$invoice,
__DIR__ . '/Examples/BASIC WL/BASIC-WL_Einfach.xml',
Validator::SCHEMA_BASIC_WL
);
}
}

0 comments on commit 3407554

Please sign in to comment.