e-Invoice KSA | tax invoice | report | qrcode | ZATCA | vat | electronic | einvoice | e-invoice sa | accounting | tax | Zakat, Tax and Customs Authority | invoice

by
Odoo 6
v 15.0 Third Party 2334
Download for v 15.0 Deploy on Odoo.sh
Required Apps Invoicing (account)
Lines of code 461
Technical Name einv_sa
LicenseOPL-1
Websitehttps://genius-valley.com/
Also available in version v 13.0 v 12.0 v 14.0
You bought this module and need support? Click here!
Required Apps Invoicing (account)
Lines of code 461
Technical Name einv_sa
LicenseOPL-1
Websitehttps://genius-valley.com/
Also available in version v 13.0 v 12.0 v 14.0
Last Update:27-Nov-2021 Last Version:15.0.1.3
QR code Ref:
https://zatca.gov.sa/ar/E-Invoicing/SystemsDevelopers/Documents/QRCodeCreation.pdf

E-Invoicing الفوترة الإلكترونية

KSA المملكة العربية السعودية

المرحلة الاولي

تطبيق يهدف إلى تحقيق المتطلبات الخاصة بعناصر الفاتورة الضريبية بالمرحلة الاولي داخل نظام اودو بحيث يسمح بتبادل الفواتير والإشعارات المدينة والدائنة ومعالجتها بصيغة الكترونية

الفاتورة الإلكترونية

يتم إصدارها وحفظها بصيغة الكترونية منظمة عبر نظام إلكتروني وتحتوي على متطلبات الفاتورة الضريبية وهناك نوعين من الفواتير الضريبية (الفاتورة الضريبية والفاتورة الضريبية المبسطة)

الفاتورة الضريبية هي الفاتورة التي يتم إصدارها غالبًا من منشأة إلى منشأة أخرى محتوية على جميع عناصر الفاتورة الضريبية

المرحلة الاولي تم إضافة الحقول الغير موجودة في اودو وتم اضافة تقرير منفصل للفاتورة الضريبية

Electronic invoicing is a procedure that aims to convert the issuing of paper invoices and notes into an electronic process that allows the exchange and processing of invoices, credit notes & debit notes in a structure electronic format

Zakat, Tax and Customs Authority

المرحلة الاولي

يتم تطبيق الفوترة الإلكترونية على مرحلتين، المرحلة الأولى "مرحلة الإصدار" ستطبق من 4 ديسمبر 2021م لكل المكلفين المسجلين في ضريبة القيمة المضافة (باستثناء المكلفين غير المقيمين في المملكة) ومن ينيب عن المكلف بإصدار الفاتورة. إصدار الفواتير الإلكترونية سيكون مماثل لإصدار الفواتير اليوم ولكن من خلال نظام فوترة إلكتروني متوافق وتكون الفاتورة متضمنة لكل العناصر المطلوبة بناءً على نوع الفاتورة:

E-Invoicing will be rolled-out in two phases in KSA (more details about the phases here​). For the first phase, enforceable as of December 4th, 2021, for all taxpayers (excluding non-resident taxpayers), and any other parties issuing tax invoices on behalf of suppliers subject to VAT, electronic invoice issuance will be very similar to today, with invoices issued

خصائص المرحلة الاولي

Features applied in first phase

Barcode الباركود

يحتوي الباركود علي معلومات المورد

Barcode contains seller information

Seller معلومات البائع

إضافة العنوان بالتفاصيل مع رقم ضريبة القيمة المضافة ورقم السجل التجاري

Add missing fields in odoo to match with required specification

Buyer معلومات المشتري

إضافة العنوان بالتفاصيل مع رقم ضريبة القيمة المضافة

Add missing fields in odoo to match with required specification

Security الدخول الآمن

عن طريق تطبيق نظام اودو يمكن تطبيق اي مستوي من الصلاحيات للمستخدمين

Using security level permission in odoo to appy on users and match with required specification

Usage - الاستخدام

Customers / Vendors - العميل/المورد

من شاشة العميل او المورد يمكن اضافة جميع الحقول المطلوبة بالفاتورة

From Customers / vendors screen you can fill all required fields

طباعة الفاتورة الضريبية

Tax Invoice Print

تم إنشاء فاتورة ضريبة بشكل منفصل يحتوي علي المتطلبات المطلوبة من هيئة الزكاة ثم يتم الطباعة من خلال تحديد فاتورة معينة و اختيار طباعة ثم اختيار فاتورة ضريبة

We build tax invoice contains the required fields specifications from Zakat, Tax and Customs Authority. You can print from select invoice and click print button then select "Tax Invoice"

Versions History --------------------
* version 1.3: 27-Nov-2021
    - update qrcode format with base64 ref:
    https://zatca.gov.sa/ar/E-Invoicing/SystemsDevelopers/Documents/QRCodeCreation.pdf
* version 1.2: 10-Oct-2021
         - Initial version compatible with odoo v15 , tax invoice report, QR code
* version 1.2: 27-Sept-2021
    - fix field vat when qrcode scanning 
* version 1.1: 26-Sept-2021
    - Add fields (company_id.name,company_id.vat,
        invoice_date,amount_total,amount_tax_signed) to qrcode scanning 
    - Update Tax Invoice from html to pdf
* version 1.0: 20-Sept-2021
    - Initial version contains missing fields to generate tax invoice report with qrcode
            
Odoo Proprietary License v1.0
This software and associated files (the "Software") may only be used (executed,
modified, executed after modifications) if you have purchased a valid license
from the authors, typically via Odoo Apps, or if you have received a written
agreement from the authors of the Software (see the COPYRIGHT file).
You may develop Odoo modules that use the Software as a library (typically
by depending on it, importing it and using its resources), but without copying
any source code or material from the Software. You may distribute those
modules under the license of your choice, provided that this license is
compatible with the terms of the Odoo Proprietary License (For example:
LGPL, MIT, or proprietary licenses similar to this one).
It is forbidden to publish, distribute, sublicense, or sell copies of the Software
or modified copies of the Software.
The above copyright notice and this permission notice must be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
DEALINGS IN THE SOFTWARE.

Please log in to comment on this module

  • The author can leave a single reply to each comment.
  • This section is meant to ask simple questions or leave a rating. Every report of a problem experienced while using the module should be addressed to the author directly (refer to the following point).
  • If you want to start a discussion with the author, please use the developer contact information. They can usually be found in the description.
Please choose a rating from 1 to 5 for this module.
by
Abdelrazek Badr
on 5/21/22, 3:23 AM



excellent
by
hesham amoudi
on 5/14/22, 4:25 AM

im facing an issue with the qr code it doesnt work as it should im not sure should i change something in the code or what it doesnt match the qr code shown here for the latest ver 1.3 

it only shows the qr code as is.

no encryption neither the is an info


by
Mohamed Elbaz
on 4/10/22, 6:27 AM



-
by
Abdalla
on 4/6/22, 7:08 AM

Hi,

i have set the country to Saudi Arabia and restart server many times. Still i'm getting an error whenever i click on invoice record. would you please help ?

This is the error message i'm getting :

UncaughtClientError > TypeError

Uncaught Javascript Error > browser.navigator.clipboard is undefined


TypeError: browser.navigator.clipboard is undefined
    onClickClipboard@http://209.23.11.158:8069/web/assets/129-7de5b1b/web.assets_backend.min.js:371:20
    anonymous/extra.handlers[k1485]<@http://209.23.11.158:8069/web/assets/128-efea723/web.assets_common.min.js line 1026 > Function:24:137
    invokeHandler@http://209.23.11.158:8069/web/assets/128-efea723/web.assets_common.min.js:848:144
    handleEvent@http://209.23.11.158:8069/web/assets/128-efea723/web.assets_common.min.js:852:105
    handler@http://209.23.11.158:8069/web/assets/128-efea723/web.assets_common.min.js:854:69

Re: -
by
Abdelrazek Badr
on 4/7/22, 2:30 AM Author

Thank you for the feedback, but the error is not related to our module, it seems the error comes from the browser you can try from another browser ,
[another Solution]
This requires a secure origin — either HTTPS or localhost (or disabled by running Chrome with a flag). Just like for ServiceWorker, this state is indicated by the presence or absence of the property on the navigator object.

Reference URL:
https://stackoverflow.com/questions/51805395/navigator-clipboard-is-undefined


Great work
by
mohamed
on 12/6/21, 8:30 AM


Re: Great work
by
Abdelrazek Badr
on 12/6/21, 9:08 AM Author

Thank you for your feedback, we hope this module be helpful for you


by
hesham amoudi
on 5/14/22, 4:28 AM

im facing an issue which  is the qr code is only showing but there is no encryption neither there is a seller info when scanned.

please let me know if i should change or modify something in the code im using latest version 1.3


by
Mohamed Elbaz
on 4/10/22, 6:26 AM



Not working with Odoo 15
by
Mohamed Elbaz
on 3/1/22, 5:05 PM

Thanks for your feedback. Let me confirm that it's obvious server was restarted many times and that country is -for sure- Saudi Arabia in all settings. App is not working with all instances of Odoo 15. 

Re: Not working with Odoo 15
by
Abdelrazek Badr
on 3/2/22, 1:53 AM Author

thank  you for your patient
please try to download the new version and install it again 
waiting for your feedback 


by
Mohamed Elbaz
on 2/27/22, 7:00 AM


Re:
by
Abdelrazek Badr
on 2/27/22, 10:18 AM Author

We are sorry for the problem you face,
we replied to your problem in discuss section 


Not working with Odoo 15
by
Mohamed Elbaz
on 2/24/22, 4:55 AM
ValueError: Compute method failed to assign account.move(<NewId 0x7fade1d6b160>,).einv_sa_show_delivery_date
Re: Not working with Odoo 15
by
Abdelrazek Badr
on 2/27/22, 10:16 AM Author

Thank you for feedback,
We are sorry for the problem you face so try:
1- Sure the current  company country is Saud Arabia in Odoo setting 
2- Please restart the Odoo service on your PC or the server
kindly give us feedback again


tax invoice generated but missing the QR code?
by
info@hejazultra.org
on 12/22/21, 10:05 AM
I am new to Odoo.
I installed the bitnami OVA virtual appliance (latest version ) yesterday for a proof of concept.

I installed your module. thank you for making it available!

The TaxInvoice is generated but the QR code is missing in the upper right corner on the PDF " Invoice - INV2021.... "
I am not sure what I am doing wrong. can you help?
Re: tax invoice generated but missing the QR code?
by
Abdelrazek Badr
on 12/22/21, 4:00 PM Author

Please sure from that

1- The country of your company is Saudi Arabia 

2-Confirm invoice before print QR 


After install cant open invoice get error
by
Mohammad AL-Omari
on 12/5/21, 2:43 PM
Hi 
Please Solve this problem

TypeError: Cannot read properties of undefined (reading 'type') at ControlPanelModelExtension._extractAttributes (http://localhost:8069/web/assets/93-52e0c7b/web.assets_backend.min.js:3572:100) at http://localhost:8069/web/assets/93-52e0c7b/web.assets_backend.min.js:3556:6 at Array.forEach (<anonymous>) at ControlPanelModelExtension._createGroupOfFiltersFromArch (http://localhost:8069/web/assets/93-52e0c7b/web.assets_backend.min.js:3551:364) at ControlPanelModelExtension._addFilters (http://localhost:8069/web/assets/93-52e0c7b/web.assets_backend.min.js:3540:51) at ControlPanelModelExtension.prepareState (http://localhost:8069/web/assets/93-52e0c7b/web.assets_backend.min.js:3514:149) at ControlPanelModelExtension.importState (http://localhost:8069/web/assets/93-52e0c7b/web.assets_backend.min.js:5785:68) at ActionModel.importState (http://localhost:8069/web/assets/93-52e0c7b/web.assets_backend.min.js:5801:180) at new Model (http://localhost:8069/web/assets/93-52e0c7b/web.assets_backend.min.js:5790:6) at new ActionModel (http://localhost:8069/web/assets/93-52e0c7b/web.assets_backend.min.js:4447:1)
Re: After install cant open invoice get error
by
Abdelrazek Badr
on 12/6/21, 1:10 AM Author

please be sure of that :
1- You downloaded the right version for your Odoo version 
2- Clear browser cache and try again
if not help send your phone number to email:  odoo@gvitt.com
and we will help you 


after install invoice not open
by
Mohammad AL-Omari
on 12/5/21, 12:43 PM
Traceback (most recent call last):
  File "D:\odoo\odoo15\server\odoo\api.py", line 886, in get
    return field_cache[record._ids[0]]
KeyError: 2
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
  File "D:\odoo\odoo15\server\odoo\fields.py", line 1057, in __get__
    value = env.cache.get(record, self)
  File "D:\odoo\odoo15\server\odoo\api.py", line 889, in get
    raise CacheMiss(record, field)
odoo.exceptions.CacheMiss: 'account.move(2,).einv_sa_show_delivery_date'
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
  File "D:\odoo\odoo15\server\odoo\api.py", line 886, in get
    return field_cache[record._ids[0]]
KeyError: 2
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
  File "D:\odoo\odoo15\server\odoo\fields.py", line 1110, in __get__
    value = env.cache.get(record, self)
  File "D:\odoo\odoo15\server\odoo\api.py", line 889, in get
    raise CacheMiss(record, field)
odoo.exceptions.CacheMiss: 'account.move(2,).einv_sa_show_delivery_date'
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
  File "D:\odoo\odoo15\server\odoo\addons\base\models\ir_http.py", line 237, in _dispatch
    result = request.dispatch()
  File "D:\odoo\odoo15\server\odoo\http.py", line 687, in dispatch
    result = self._call_function(**self.params)
  File "D:\odoo\odoo15\server\odoo\http.py", line 359, in _call_function
    return checked_call(self.db, *args, **kwargs)
  File "D:\odoo\odoo15\server\odoo\service\model.py", line 94, in wrapper
    return f(dbname, *args, **kwargs)
  File "D:\odoo\odoo15\server\odoo\http.py", line 348, in checked_call
    result = self.endpoint(*a, **kw)
  File "D:\odoo\odoo15\server\odoo\http.py", line 916, in __call__
    return self.method(*args, **kw)
  File "D:\odoo\odoo15\server\odoo\http.py", line 535, in response_wrap
    response = f(*args, **kw)
  File "d:\odoo\odoo15\server\addons\web\controllers\main.py", line 1335, in call_kw
    return self._call_kw(model, method, args, kwargs)
  File "d:\odoo\odoo15\server\addons\web\controllers\main.py", line 1327, in _call_kw
    return call_kw(request.env[model], method, args, kwargs)
  File "D:\odoo\odoo15\server\odoo\api.py", line 464, in call_kw
    result = _call_kw_multi(method, model, args, kwargs)
  File "D:\odoo\odoo15\server\odoo\api.py", line 451, in _call_kw_multi
    result = method(recs, *args, **kwargs)
  File "D:\odoo\odoo15\server\odoo\models.py", line 3227, in read
    return self._read_format(fnames=fields, load=load)
  File "D:\odoo\odoo15\server\odoo\models.py", line 3247, in _read_format
    vals[name] = convert(record[name], record, use_name_get)
  File "D:\odoo\odoo15\server\odoo\models.py", line 5866, in __getitem__
    return self._fields[key].__get__(self, type(self))
  File "D:\odoo\odoo15\server\odoo\fields.py", line 1113, in __get__
    raise ValueError("Compute method failed to assign %s.%s" % (record, self.name))
Exception
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
  File "D:\odoo\odoo15\server\odoo\http.py", line 643, in _handle_exception
    return super(JsonRequest, self)._handle_exception(exception)
  File "D:\odoo\odoo15\server\odoo\http.py", line 301, in _handle_exception
    raise exception.with_traceback(None) from new_cause
ValueError: Compute method failed to assign account.move(2,).einv_sa_show_delivery_date

Error
by
Mohammad AL-Omari
on 12/5/21, 5:08 AM
Traceback (most recent call last):
  File "/odoo/odoo-server/odoo/api.py", line 886, in get
    return field_cache[record._ids[0]]
KeyError: 358
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
  File "/odoo/odoo-server/odoo/fields.py", line 1057, in __get__
    value = env.cache.get(record, self)
  File "/odoo/odoo-server/odoo/api.py", line 889, in get
    raise CacheMiss(record, field)
odoo.exceptions.CacheMiss: 'account.move(358,).einv_sa_show_delivery_date'
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
  File "/odoo/odoo-server/odoo/api.py", line 886, in get
    return field_cache[record._ids[0]]
KeyError: 358
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
  File "/odoo/odoo-server/odoo/fields.py", line 1110, in __get__
    value = env.cache.get(record, self)
  File "/odoo/odoo-server/odoo/api.py", line 889, in get
    raise CacheMiss(record, field)
odoo.exceptions.CacheMiss: 'account.move(358,).einv_sa_show_delivery_date'
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
  File "/odoo/odoo-server/odoo/addons/base/models/ir_http.py", line 237, in _dispatch
    result = request.dispatch()
  File "/odoo/odoo-server/odoo/http.py", line 687, in dispatch
    result = self._call_function(**self.params)
  File "/odoo/odoo-server/odoo/http.py", line 359, in _call_function
    return checked_call(self.db, *args, **kwargs)
  File "/odoo/odoo-server/odoo/service/model.py", line 94, in wrapper
    return f(dbname, *args, **kwargs)
  File "/odoo/odoo-server/odoo/http.py", line 348, in checked_call
    result = self.endpoint(*a, **kw)
  File "/odoo/odoo-server/odoo/http.py", line 916, in __call__
    return self.method(*args, **kw)
  File "/odoo/odoo-server/odoo/http.py", line 535, in response_wrap
    response = f(*args, **kw)
  File "/odoo/odoo-server/addons/web/controllers/main.py", line 1335, in call_kw
    return self._call_kw(model, method, args, kwargs)
  File "/odoo/odoo-server/addons/web/controllers/main.py", line 1327, in _call_kw
    return call_kw(request.env[model], method, args, kwargs)
  File "/odoo/odoo-server/odoo/api.py", line 464, in call_kw
    result = _call_kw_multi(method, model, args, kwargs)
  File "/odoo/odoo-server/odoo/api.py", line 451, in _call_kw_multi
    result = method(recs, *args, **kwargs)
  File "/odoo/odoo-server/odoo/models.py", line 3227, in read
    return self._read_format(fnames=fields, load=load)
  File "/odoo/odoo-server/odoo/models.py", line 3247, in _read_format
    vals[name] = convert(record[name], record, use_name_get)
  File "/odoo/odoo-server/odoo/models.py", line 5866, in __getitem__
    return self._fields[key].__get__(self, type(self))
  File "/odoo/odoo-server/odoo/fields.py", line 1113, in __get__
    raise ValueError("Compute method failed to assign %s.%s" % (record, self.name))
Exception
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
  File "/odoo/odoo-server/odoo/http.py", line 643, in _handle_exception
    return super(JsonRequest, self)._handle_exception(exception)
  File "/odoo/odoo-server/odoo/http.py", line 301, in _handle_exception
    raise exception.with_traceback(None) from new_cause
ValueError: Compute method failed to assign account.move(358,).einv_sa_show_delivery_date
Re: Error
by
Abdelrazek Badr
on 12/5/21, 11:18 AM Author

Thank you for feedback,
We are sorry for the problem you face so try:
1- Sure the current  company country is Saud Arabia in Odoo setting 
2- Please restart the Odoo service on your PC or the server
kindly give us feedback again


It is fine but it needs datetime not date
by
Talal Albahra
on 10/28/21, 2:03 PM

Hello,

ZATCA requires the date and time of the Invoice or the Credit/Debit Note, not only the date.

Can you please add it?

Re: It is fine but it needs datetime not date
by
Abdelrazek Badr
on 12/4/21, 7:32 AM Author

please download the update you will find QRcode encrypted with base64 and support confirmed date time for invoice