Skip to content

Commit

Permalink
Merge branch 'main' into br-typical-nfse
Browse files Browse the repository at this point in the history
  • Loading branch information
cavalle committed Nov 21, 2024
2 parents 44a3b9e + 76e5d83 commit 2216d92
Show file tree
Hide file tree
Showing 18 changed files with 896 additions and 56 deletions.
44 changes: 23 additions & 21 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,18 +8,25 @@ The format is based on [Keep a Changelog](http://keepachangelog.com/) and this p

### Added

- `org`: `Address` includes `LineOne()`, `LineTwo()`, `CompleteNumber()` methods to help with conversion to other formats with some regional formatting.
- `ae`: added UAE regime
- `br-nfse-v1`: new extensions, validations & identities for the typical service note and supplier.

## [v0.205.1] - 2024-11-19

### Added

- `org`: `Address` includes `LineOne()`, `LineTwo()`, `CompleteNumber()` methods to help with conversion to other formats with some regional formatting.

### Changes

- `bill`: `Invoice` can now have empty lines if discounts or charges present.

### Fixes

- `ch`: Deleted Supplier validation (not needed for under 2300 CHF/year)
- `bill`: `Invoice` `GetExtensions` method now works correctly if missing totals [Issue #424](https://github.com/invopop/gobl/issues/424).

## [v0.205.0]
## [v0.205.0] - 2024-11-12

### Added

Expand All @@ -37,7 +44,7 @@ The format is based on [Keep a Changelog](http://keepachangelog.com/) and this p

- `cal`: Fixing json schema issue with date times.

## [v0.204.1]
## [v0.204.1] - 2024-11-04

### Added

Expand All @@ -47,7 +54,7 @@ The format is based on [Keep a Changelog](http://keepachangelog.com/) and this p

- `tax`: identity code handling will skip default validation for specific countries that use special characters.

## [v0.204.0]
## [v0.204.0] - 2024-10-31

### Added

Expand Down Expand Up @@ -86,7 +93,7 @@ The format is based on [Keep a Changelog](http://keepachangelog.com/) and this p

- `mx`: Tax ID validation now correctly supports `&` and `Ñ` symbols in codes.

## [v0.203.0]
## [v0.203.0] - 2024-20-21

### Added

Expand All @@ -100,7 +107,7 @@ The format is based on [Keep a Changelog](http://keepachangelog.com/) and this p
- `tax.Identity`: support Calculate method to normalize IDs.
- `tax.Regime`: properly set regime when alternative codes is given.

## [v0.202.0]
## [v0.202.0] - 2024-10-14

### Changed

Expand All @@ -116,7 +123,7 @@ The format is based on [Keep a Changelog](http://keepachangelog.com/) and this p

- `mx`: fixed panic when normalizing an invoice with `tax` but no `ext` inside.

## [v0.201.0]
## [v0.201.0] - 2024-10-07

### Fixed

Expand All @@ -129,13 +136,13 @@ The format is based on [Keep a Changelog](http://keepachangelog.com/) and this p
- `pt`: reduced rate category for PT-MA was updated to reflect latest value of 4%
- `co-dian-v2`: moved from `co` tax regime into own addon.

## [v0.200.1]
## [v0.200.1] - 2024-09-30

### Fixed

- `pt`: moving invoice tags from saft addon to regime, ensure defaults present.

## [v0.200.0]
## [v0.200.0] - 2024-09-26

Another ~~significant~~ epic release. Introducing "add-ons" which move the normalization and validation rules from Tax Regimes to specific packages that need to be enabled inside a document to be used.

Expand Down Expand Up @@ -177,13 +184,13 @@ Finally, the `draft` flag has been removed from the header, and much more emphas
- `org`: `DocumentRef` consolidates references to previous documents in a single place.
- `bill`: invoice type option `other` for usage when regular scenarios do not apply.

## [v0.115.1]
## [v0.115.1] - 2024-09-10

### Fixes

- `tax`: totals calculator was ignoring tax combos with rate and percent, when they should be classed as exempt.

## [v0.115.0]
## [v0.115.0] - 2024-09-10

This one is big...

Expand Down Expand Up @@ -236,20 +243,20 @@ Invoices in GOBL can now also finally produced for any country in the world, eve
- `tax.Scenario`: potential issue around matching notes.
- `tax.Set`: improved validation embedded error handling.

## [v0.114.0]
## [v0.114.0] - 2024-08-26

### Changed

- `org.Name`: either given **or** surname are required, as opposed to both at the same time.

## [v0.113.0]
## [v0.113.0] - 2024-08-01

### Added

- `head`: validation rule to check for the presence of stamps
- GR: support for credit notes

## [v0.112.0]
## [v0.112.0] - 2024-07-29

Significant set of small changes related to renaming of the `l10n.CountryCode` type. The main reason for this is an attempt to reduce confusion between regular ISO country selection, and the specific country codes used for tax purposes. Normally they coincide, but exception cases like for Greece, whose ISO code is `GR` but use `EL` for tax purposes, or `XI` for companies in Northern Ireland, mean that there needs to be a clear selection.

Expand All @@ -265,6 +272,8 @@ Significant set of small changes related to renaming of the `l10n.CountryCode` t
- GR: support for simplified invoices
- `l10n`: ISO and Tax lists of country definitions available, e.g. `l10n.Countries().ISO()`
- `tax`: support for alternative country codes
- `tax`: Scenarios now handle extension key and value for filtering.
- PT: exemption text handling moved to scenarios.

### Upgraded

Expand All @@ -274,13 +283,6 @@ Significant set of small changes related to renaming of the `l10n.CountryCode` t

- GR: fixed certain tax combos not getting calculated by the regime

## [v0.112.0] - 2024-07-26

### Added

- `tax`: Scenarios now handle extension key and value for filtering.
- PT: exemption text handling moved to scenarios.

## [v0.111.1] - 2024-07-25

### Added
Expand Down
172 changes: 172 additions & 0 deletions data/regimes/ae.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,172 @@
{
"$schema": "https://gobl.org/draft-0/tax/regime-def",
"name": {
"ar": "الإمارات العربية المتحدة",
"en": "United Arab Emirates"
},
"time_zone": "Asia/Dubai",
"country": "AE",
"currency": "AED",
"tags": [
{
"schema": "bill/invoice",
"list": [
{
"key": "simplified",
"name": {
"de": "Vereinfachte Rechnung",
"en": "Simplified Invoice",
"es": "Factura Simplificada",
"it": "Fattura Semplificata"
},
"desc": {
"de": "Wird für B2C-Transaktionen verwendet, wenn die Kundendaten nicht verfügbar sind. Bitte wenden Sie sich an die örtlichen Behörden, um die Grenzwerte zu ermitteln.",
"en": "Used for B2C transactions when the client details are not available, check with local authorities for limits.",
"es": "Usado para transacciones B2C cuando los detalles del cliente no están disponibles, consulte con las autoridades locales para los límites.",
"it": "Utilizzato per le transazioni B2C quando i dettagli del cliente non sono disponibili, controllare con le autorità locali per i limiti."
}
},
{
"key": "reverse-charge",
"name": {
"de": "Umkehr der Steuerschuld",
"en": "Reverse Charge",
"es": "Inversión del Sujeto Pasivo",
"it": "Inversione del soggetto passivo"
}
},
{
"key": "self-billed",
"name": {
"de": "Rechnung durch den Leistungsempfänger",
"en": "Self-billed",
"es": "Facturación por el destinatario",
"it": "Autofattura"
}
},
{
"key": "customer-rates",
"name": {
"de": "Kundensätze",
"en": "Customer rates",
"es": "Tarifas aplicables al destinatario",
"it": "Aliquote applicabili al destinatario"
}
},
{
"key": "partial",
"name": {
"de": "Teilweise",
"en": "Partial",
"es": "Parcial",
"it": "Parziale"
}
}
]
}
],
"scenarios": [
{
"schema": "bill/invoice",
"list": [
{
"tags": [
"reverse-charge"
],
"note": {
"key": "legal",
"src": "reverse-charge",
"text": "Reverse Charge"
}
},
{
"tags": [
"simplified"
],
"note": {
"key": "legal",
"src": "simplified",
"text": "Simplified Tax Invoice"
}
}
]
}
],
"corrections": [
{
"schema": "bill/invoice",
"types": [
"credit-note"
]
}
],
"categories": [
{
"code": "VAT",
"name": {
"ar": "ضريبة القيمة المضافة",
"en": "VAT"
},
"title": {
"ar": "ضريبة القيمة المضافة",
"en": "Value Added Tax"
},
"rates": [
{
"key": "zero",
"name": {
"ar": "معدل صفر",
"en": "Zero Rate"
},
"desc": {
"ar": "نسبة ضريبة قيمة مضافة 0٪ تطبق على الصادرات المحددة والمناطق المعينة والخدمات الأساسية.",
"en": "A VAT rate of 0% applicable to specific exports, designated areas, and essential services."
},
"values": [
{
"percent": "0.0%"
}
]
},
{
"key": "standard",
"name": {
"ar": "معدل قياسي",
"en": "Standard Rate"
},
"desc": {
"ar": "ينطبق على معظم السلع والخدمات ما لم ينص على خلاف ذلك.",
"en": "Applies to most goods and services unless specified otherwise."
},
"values": [
{
"since": "2018-01-01",
"percent": "5%"
}
]
},
{
"key": "exempt",
"name": {
"ar": "معفى",
"en": "Exempt"
},
"desc": {
"ar": "بعض السلع والخدمات، مثل الخدمات المالية والعقارات السكنية، معفاة من ضريبة القيمة المضافة.",
"en": "Certain goods and services, such as financial services and residential real estate, are exempt from VAT."
},
"exempt": true
}
],
"sources": [
{
"title": {
"ar": "الهيئة الاتحادية للضرائب",
"en": "Federal Tax Authority - UAE VAT Regulations"
},
"url": "https://www.tax.gov.ae"
}
]
}
]
}
47 changes: 47 additions & 0 deletions examples/ae/invoice-ae-ae-stnr.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
$schema: "https://gobl.org/draft-0/bill/invoice"
uuid: "3aea7b56-59d8-4beb-90bd-f8f280d852a0"
currency: "AED"
issue_date: "2022-02-01"
series: "SAMPLE"
code: "001"

supplier:
tax_id:
country: "AE"
code: "123456789012346"
name: "Provide One LLC"
emails:
- addr: "[email protected]"
addresses:
- num: "16"
street: "Sheikh Zayed Road"
locality: "Dubai"
code: "00000"
country: "AE"

customer:
tax_id:
country: "AE"
code: "123456789012345"
name: "Sample Consumer"
emails:
- addr: "[email protected]"
addresses:
- num: "25"
street: "Al Maryah Island"
locality: "Abu Dhabi"
code: "00000"
country: "AE"

lines:
- quantity: 20
item:
name: "Development services"
price: "90.00"
unit: "h"
discounts:
- percent: "5%"
reason: "Special discount"
taxes:
- cat: VAT
rate: standard
Loading

0 comments on commit 2216d92

Please sign in to comment.