mirror of
https://github.com/invoiceninja/invoiceninja.git
synced 2025-07-09 03:14:30 -04:00
padding out e-invoicing - country specifics
This commit is contained in:
parent
0ad5836a2f
commit
5e5b2e666b
@ -153,7 +153,7 @@ class BrowserPay implements MethodInterface
|
|||||||
$this->stripe->client->company,
|
$this->stripe->client->company,
|
||||||
);
|
);
|
||||||
|
|
||||||
return redirect()->route('client.payments.show', ['payment' => $this->stripe->encodePrimaryKey($payment->id)]);
|
return redirect()->route('client.payments.show', ['payment' => $payment->hashed_id)]);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -160,7 +160,7 @@ class CreditCard
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return redirect()->route('client.payments.show', ['payment' => $this->stripe->encodePrimaryKey($payment->id)]);
|
return redirect()->route('client.payments.show', ['payment' => $payment->hashed_id)]);
|
||||||
}
|
}
|
||||||
|
|
||||||
public function processUnsuccessfulPayment($server_response)
|
public function processUnsuccessfulPayment($server_response)
|
||||||
|
@ -707,4 +707,198 @@ $tax_amount->amount = $this->invoice->uses_inclusive_taxes ? $this->calcInclusiv
|
|||||||
|
|
||||||
return $this;
|
return $this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function countryLevelMutators():self
|
||||||
|
{
|
||||||
|
|
||||||
|
if(method_exists($this, $this->invoice->company->country()->iso_3166_2))
|
||||||
|
$this->{$this->invoice->company->country()->iso_3166_2}();
|
||||||
|
|
||||||
|
return $this;
|
||||||
|
}
|
||||||
|
|
||||||
|
private function DE(): self
|
||||||
|
{
|
||||||
|
// accountingsupplierparty.party.contact MUST be set - Name / Telephone / Electronic Mail
|
||||||
|
|
||||||
|
// ONE payment means MUST be set
|
||||||
|
|
||||||
|
//
|
||||||
|
return $this;
|
||||||
|
}
|
||||||
|
|
||||||
|
private function CH(): self
|
||||||
|
{
|
||||||
|
//if QR-Bill support required - then special flow required.... optional.
|
||||||
|
|
||||||
|
return $this;
|
||||||
|
}
|
||||||
|
|
||||||
|
private function AT(): self
|
||||||
|
{
|
||||||
|
//special fields for sending to AT:GOV
|
||||||
|
return $this;
|
||||||
|
}
|
||||||
|
|
||||||
|
private function AU(): self
|
||||||
|
{
|
||||||
|
|
||||||
|
//if payment means are included, they must be the same `type`
|
||||||
|
return $this;
|
||||||
|
}
|
||||||
|
|
||||||
|
private function ES(): self
|
||||||
|
{
|
||||||
|
|
||||||
|
// For B2B, provide an ES:DIRE routing identifier and an ES:VAT tax identifier.
|
||||||
|
// both sender and receiver must be an ES company;
|
||||||
|
// you must have a "credit_transfer" PaymentMean;
|
||||||
|
// the "dueDate" property is mandatory.
|
||||||
|
|
||||||
|
// For B2G, provide three ES:FACE identifiers in the routing object,
|
||||||
|
// as well as the ES:VAT tax identifier in the accountingCustomerParty.publicIdentifiers.
|
||||||
|
// The invoice will then be routed through the FACe network. The three required ES:FACE identifiers are as follows:
|
||||||
|
// "routing": {
|
||||||
|
// "eIdentifiers":[
|
||||||
|
// {
|
||||||
|
// "scheme": "ES:FACE",
|
||||||
|
// "id": "L01234567",
|
||||||
|
// "role": "ES-01-FISCAL"
|
||||||
|
// },
|
||||||
|
// {
|
||||||
|
// "scheme": "ES:FACE",
|
||||||
|
// "id": "L01234567",
|
||||||
|
// "role": "ES-02-RECEPTOR"
|
||||||
|
// },
|
||||||
|
// {
|
||||||
|
// "scheme": "ES:FACE",
|
||||||
|
// "id": "L01234567",
|
||||||
|
// "role": "ES-03-PAGADOR"
|
||||||
|
// }
|
||||||
|
// ]
|
||||||
|
// }
|
||||||
|
|
||||||
|
return $this;
|
||||||
|
}
|
||||||
|
|
||||||
|
private function FI(): self
|
||||||
|
{
|
||||||
|
|
||||||
|
// For Finvoice, provide an FI:OPID routing identifier and an FI:OVT legal identifier.
|
||||||
|
// An FI:VAT is recommended. In many cases (depending on the sender/receiver country and the type of service/goods)
|
||||||
|
// an FI:VAT is required. So we recommend always including this.
|
||||||
|
|
||||||
|
return $this;
|
||||||
|
}
|
||||||
|
|
||||||
|
private function FR(): self
|
||||||
|
{
|
||||||
|
// When sending invoices to the French government (Chorus Pro):
|
||||||
|
|
||||||
|
// All invoices have to be routed to SIRET 0009:11000201100044. There is no test environment for sending to public entities.
|
||||||
|
|
||||||
|
// The SIRET / 0009 identifier of the final recipient is to be included in the invoice.accountingCustomerParty.publicIdentifiers array.
|
||||||
|
|
||||||
|
// The service code must be sent in invoice.buyerReference (deprecated) or the invoice.references array (documentType buyer_reference)
|
||||||
|
|
||||||
|
// The commitment number must be sent in the invoice.orderReference (deprecated) or the invoice.references array (documentType purchase_order).
|
||||||
|
|
||||||
|
// Invoices to companies (SIRET / 0009 or SIRENE / 0002) are routed directly to that identifier.
|
||||||
|
return $this;
|
||||||
|
}
|
||||||
|
|
||||||
|
private function IT(): self
|
||||||
|
{
|
||||||
|
// IT Sender, IT Receiver, B2B/B2G
|
||||||
|
// Provide the receiver IT:VAT and the receiver IT:CUUO (codice destinatario)
|
||||||
|
|
||||||
|
// IT Sender, IT Receiver, B2C
|
||||||
|
// Provide the receiver IT:CF and the receiver IT:CUUO (codice destinatario)
|
||||||
|
|
||||||
|
// IT Sender, non-IT Receiver
|
||||||
|
// Provide the receiver tax identifier and any routing identifier applicable to the receiving country (see Receiver Identifiers).
|
||||||
|
|
||||||
|
// non-IT Sender, IT Receiver, B2B/B2G
|
||||||
|
// Provide the receiver IT:VAT and the receiver IT:CUUO (codice destinatario)
|
||||||
|
|
||||||
|
// non-IT Sender, IT Receiver, B2C
|
||||||
|
// Provide the receiver IT:CF and an optional email. The invoice will be eReported and sent via email. Note that this cannot be a PEC email address.
|
||||||
|
|
||||||
|
return $this;
|
||||||
|
}
|
||||||
|
|
||||||
|
private function MY(): self
|
||||||
|
{
|
||||||
|
//way too much to digest here, delayed.
|
||||||
|
return $this;
|
||||||
|
}
|
||||||
|
|
||||||
|
private function NL(): self
|
||||||
|
{
|
||||||
|
|
||||||
|
// When sending to public entities, the invoice.accountingSupplierParty.party.contact.email is mandatory.
|
||||||
|
|
||||||
|
// Dutch senders and receivers require a legal identifier. For companies, this is NL:KVK, for public entities this is NL:OINO.
|
||||||
|
|
||||||
|
return $this;
|
||||||
|
}
|
||||||
|
|
||||||
|
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;
|
||||||
|
}
|
||||||
|
|
||||||
|
private function PL(): 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:
|
||||||
|
|
||||||
|
// "routing": {
|
||||||
|
// "eIdentifiers": [
|
||||||
|
// {
|
||||||
|
// "scheme": "PL:VAT",
|
||||||
|
// "id": "PL0101010101"
|
||||||
|
// }
|
||||||
|
// ],
|
||||||
|
// "networks": [
|
||||||
|
// {
|
||||||
|
// "application": "pl-ksef",
|
||||||
|
// "settings": {
|
||||||
|
// "enabled": true
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
// ]
|
||||||
|
// }
|
||||||
|
// Note this will only work if your LegalEntity has been setup for this network.
|
||||||
|
|
||||||
|
return $this;
|
||||||
|
}
|
||||||
|
|
||||||
|
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:
|
||||||
|
|
||||||
|
// "routing": {
|
||||||
|
// "eIdentifiers": [
|
||||||
|
// {
|
||||||
|
// "scheme": "RO:VAT",
|
||||||
|
// "id": "RO010101010"
|
||||||
|
// }
|
||||||
|
// ],
|
||||||
|
// "networks": [
|
||||||
|
// {
|
||||||
|
// "application": "ro-anaf",
|
||||||
|
// "settings": {
|
||||||
|
// "enabled": true
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
// ]
|
||||||
|
// }
|
||||||
|
// Note this will only work if your LegalEntity has been setup for this network.
|
||||||
|
// The county field for a Romania address must use the ISO3166-2:RO codes, e.g. "RO-AB, RO-AR". Don’t omit the country prefix!
|
||||||
|
// The city field for county RO-B must be SECTOR1 - SECTOR6.
|
||||||
|
|
||||||
|
return $this;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user