1
0
mirror of https://github.com/invoiceninja/invoiceninja.git synced 2024-11-12 22:22:32 +01:00

Clean up for Peppol

This commit is contained in:
David Bomba 2024-08-30 09:49:43 +10:00
parent c1f45a8319
commit 638c823722

View File

@ -262,6 +262,38 @@ class Peppol extends AbstractService
$this->setSettings()->setInvoice();
}
/**
* Entry point for building document
*
* @return self
*/
public function run(): self
{
$this->p_invoice->ID = $this->invoice->number;
$this->p_invoice->IssueDate = new \DateTime($this->invoice->date);
if($this->invoice->due_date) {
$this->p_invoice->DueDate = new \DateTime($this->invoice->due_date);
}
$this->p_invoice->InvoiceTypeCode = 380; //
$this->p_invoice->AccountingSupplierParty = $this->getAccountingSupplierParty();
$this->p_invoice->AccountingCustomerParty = $this->getAccountingCustomerParty();
$this->p_invoice->InvoiceLine = $this->getInvoiceLines();
// $this->p_invoice->TaxTotal = $this->getTotalTaxes(); it only wants the aggregate here!!
$this->p_invoice->LegalMonetaryTotal = $this->getLegalMonetaryTotal();
$this->senderSpecificLevelMutators()
->receiverSpecificLevelMutators();
$this->invoice->e_invoice = $this->toObject();
$this->invoice->save();
return $this;
}
/**
* Rehydrates an existing e invoice - or - scaffolds a new one
*
@ -300,6 +332,11 @@ class Peppol extends AbstractService
}
/**
* getInvoice
*
* @return InvoiceNinja\EInvoice\Models\Peppol\Invoice
*/
public function getInvoice(): \InvoiceNinja\EInvoice\Models\Peppol\Invoice
{
//@todo - need to process this and remove null values
@ -307,6 +344,11 @@ class Peppol extends AbstractService
}
/**
* toXml
*
* @return string
*/
public function toXml(): string
{
$e = new EInvoice();
@ -322,6 +364,11 @@ class Peppol extends AbstractService
}
/**
* toJson
*
* @return string
*/
public function toJson(): string
{
$e = new EInvoice();
@ -331,43 +378,31 @@ class Peppol extends AbstractService
}
/**
* toObject
*
* @return mixed
*/
public function toObject(): mixed
{
return json_decode($this->toJson());
}
/**
* toArray
*
* @return array
*/
public function toArray(): array
{
return json_decode($this->toJson(), true);
}
public function run()
{
$this->p_invoice->ID = $this->invoice->number;
$this->p_invoice->IssueDate = new \DateTime($this->invoice->date);
if($this->invoice->due_date) {
$this->p_invoice->DueDate = new \DateTime($this->invoice->due_date);
}
$this->p_invoice->InvoiceTypeCode = 380; //
$this->p_invoice->AccountingSupplierParty = $this->getAccountingSupplierParty();
$this->p_invoice->AccountingCustomerParty = $this->getAccountingCustomerParty();
$this->p_invoice->InvoiceLine = $this->getInvoiceLines();
// $this->p_invoice->TaxTotal = $this->getTotalTaxes(); it only wants the aggregate here!!
$this->p_invoice->LegalMonetaryTotal = $this->getLegalMonetaryTotal();
$this->senderSpecificLevelMutators()
->receiverSpecificLevelMutators();
$this->invoice->e_invoice = $this->toObject();
$this->invoice->save();
return $this;
}
/**
* getLegalMonetaryTotal
*
* @return LegalMonetaryTotal
*/
private function getLegalMonetaryTotal(): LegalMonetaryTotal
{
$taxable = $this->getTaxable();
@ -397,6 +432,11 @@ class Peppol extends AbstractService
return $lmt;
}
/**
* getTotalTaxAmount
*
* @return float
*/
private function getTotalTaxAmount(): float
{
if(!$this->invoice->total_taxes) {
@ -408,6 +448,11 @@ class Peppol extends AbstractService
return $this->calcAmountLineTax($this->invoice->tax_rate1, $this->invoice->amount) ?? 0;
}
/**
* getTotalTaxes
*
* @return array
*/
private function getTotalTaxes(): array
{
$taxes = [];
@ -572,7 +617,13 @@ class Peppol extends AbstractService
return $lines;
}
private function costWithDiscount($item)
/**
* costWithDiscount
*
* @param mixed $item
* @return float
*/
private function costWithDiscount($item): float
{
$cost = $item->cost;
@ -587,6 +638,11 @@ class Peppol extends AbstractService
return $cost;
}
/**
* zeroTaxAmount
*
* @return array
*/
private function zeroTaxAmount(): array
{
$blank_tax = [];
@ -623,6 +679,12 @@ class Peppol extends AbstractService
return $blank_tax;
}
/**
* getItemTaxes
*
* @param object $item
* @return array
*/
private function getItemTaxes(object $item): array
{
$item_taxes = [];
@ -748,6 +810,11 @@ class Peppol extends AbstractService
return $item_taxes;
}
/**
* getAccountingSupplierParty
*
* @return AccountingSupplierParty
*/
private function getAccountingSupplierParty(): AccountingSupplierParty
{
@ -819,6 +886,11 @@ class Peppol extends AbstractService
// return false;
}
/**
* getAccountingCustomerParty
*
* @return AccountingCustomerParty
*/
private function getAccountingCustomerParty(): AccountingCustomerParty
{
@ -878,6 +950,11 @@ class Peppol extends AbstractService
return $acp;
}
/**
* getTaxable
*
* @return float
*/
private function getTaxable(): float
{
$total = 0;
@ -926,6 +1003,11 @@ class Peppol extends AbstractService
///////////////// Helper Methods /////////////////////////
/**
* getClientRoutingCode
*
* @return string
*/
private function getClientRoutingCode(): string
{
// $receiver_identifiers = $this->routing_rules[$this->invoice->client->country->iso_3166_2];
@ -1007,15 +1089,28 @@ class Peppol extends AbstractService
}
/**
* getClientSetting
*
* @param string $property_path
* @return mixed
*/
private function getClientSetting(string $property_path): mixed
{
return PropertyResolver::resolve($this->_client_settings, $property_path);
}
/**
* getCompanySetting
*
* @param string $property_path
* @return mixed
*/
private function getCompanySetting(string $property_path): mixed
{
return PropertyResolver::resolve($this->_company_settings, $property_path);
}
/**
* senderSpecificLevelMutators
*
@ -1171,7 +1266,6 @@ class Peppol extends AbstractService
*/
private function buildRouting(array $identifiers): array
{
return
[
"routing" => [
@ -1182,6 +1276,12 @@ class Peppol extends AbstractService
];
}
/**
* setEmailRouting
*
* @param string $email
* @return self
*/
private function setEmailRouting(string $email): self
{
nlog($email);
@ -1217,6 +1317,11 @@ class Peppol extends AbstractService
return $this;
}
/**
* getStorecoveMeta
*
* @return array
*/
public function getStorecoveMeta(): array
{
return $this->storecove_meta;
@ -1225,9 +1330,6 @@ class Peppol extends AbstractService
////////////////////////// Country level mutators /////////////////////////////////////
/**
@ -1342,6 +1444,11 @@ class Peppol extends AbstractService
return $this;
}
/**
* FI
*
* @return self
*/
private function FI(): self
{
@ -1405,6 +1512,11 @@ class Peppol extends AbstractService
return $this;
}
/**
* IT
*
* @return self
*/
private function IT(): self
{
@ -1451,6 +1563,11 @@ class Peppol extends AbstractService
return $this;
}
/**
* client_IT
*
* @return self
*/
private function client_IT(): self
{
@ -1468,12 +1585,22 @@ class Peppol extends AbstractService
}
/**
* MY
*
* @return self
*/
private function MY(): self
{
//way too much to digest here, delayed.
return $this;
}
/**
* NL
*
* @return self
*/
private function NL(): self
{
@ -1484,12 +1611,22 @@ class Peppol extends AbstractService
return $this;
}
/**
* NZ
*
* @return self
*/
private function NZ(): self
{
// New Zealand uses a GLN to identify businesses. In addition, when sending invoices to a New Zealand customer, make sure you include the pseudo identifier NZ:GST as their tax identifier.
return $this;
}
/**
* PL
*
* @return self
*/
private function PL(): self
{
@ -1516,6 +1653,11 @@ class Peppol extends AbstractService
return $this;
}
/**
* RO
*
* @return self
*/
private function RO(): self
{
// Because using this network is not yet mandatory, the default workflow is to not use this network. Therefore, you have to force its use, as follows:
@ -1550,6 +1692,11 @@ class Peppol extends AbstractService
return $this;
}
/**
* SG
*
* @return self
*/
private function SG(): self
{
//delayed - stage 2