Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[IMP] l10n_vn: SInvoice documentation #11372

Closed
wants to merge 1 commit into from
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions content/applications/finance/accounting/bank.rst
Original file line number Diff line number Diff line change
Expand Up @@ -110,6 +110,8 @@ You can edit the currency used to enter the statements.
.. seealso::
:doc:`get_started/multi_currency`

.. _accounting/bank/account-number:

Account number
--------------

Expand Down
288 changes: 252 additions & 36 deletions content/applications/finance/fiscal_localizations/vietnam.rst
Original file line number Diff line number Diff line change
Expand Up @@ -2,55 +2,271 @@
Vietnam
=======

Add Vietnamese QR banking codes to invoices
===========================================
.. _SInvoice: https://www.sinvoice.vn/

Vietnamese QR banking is a payment service platform that allows customers to make instant domestic
payments to individuals and merchants in Vietnamese dong via online and mobile banking.
.. _localizations/vietnam/modules:

Activate QR codes
-----------------
Modules
=======

Go to :menuselection:`Accounting --> Configuration --> Settings`. Under the :guilabel:`Customer
Payments` section, activate the :guilabel:`QR Codes` feature.
The following modules are installed automatically with the Vietnamese localization:

Vietnamese QR banking bank account configuration
------------------------------------------------
.. list-table::
:header-rows: 1

Go to :menuselection:`Contacts --> Configuration --> Bank Accounts` and select the bank account for
which you want to activate Vietnamese QR banking. Set the :guilabel:`Bank Identifier Code` on the
bank. Then set the :guilabel:`Proxy Type` and fill in the :guilabel:`Proxy Value` field depending on
the type you chose.
* - Name
- Technical name
- Description
* - :guilabel:`Vietnam - Accounting`
- `l10n_vn`
- This module includes the default
:ref:`fiscal localization package <fiscal_localizations/packages>`.
* - :guilabel:`Vietnam - E-invoicing`
- `l10n_vn_edi_viettel`
- This module includes the features required for integration with :ref:`SInvoice
<localizations/vietnam/sinvoice>`.

.. important::
- The account holder's country must be set to `Vietnam` on its contact form.
- The account holder's city is mandatory.
- You could also include the invoice number in the QR code by checking the :guilabel:`Include
Reference` checkbox.
.. note::
In some cases, such as when upgrading to a version with additional modules, it is possible that
modules may not be installed automatically. Any missing modules can be manually :ref:`installed
<general/install>`.

.. _localizations/vietnam/company:

Company
=======

To use all the features of this fiscal localization, the following fields are required on the
:doc:`company record </applications/general/companies>`:

- :guilabel:`Name`
- :guilabel:`Address`, including the :guilabel:`City`, :guilabel:`State`, :guilabel:`Zip Code`,
and :guilabel:`Country`.

- In the :guilabel:`Street` field, enter the street name, number, and any additional address
information.
- In the :guilabel:`Street 2` field, enter the neighborhood.

- :guilabel:`Tax ID`: tax identification number.

.. _localizations/vietnam/sinvoice:

E-invoicing with SInvoice
=========================

SInvoice_ is an e-invoice service platform provided by Viettel, one of the biggest e-invoice service
providers in Vietnam. Odoo supports integration with SInvoice to submit invoices generated in Odoo.

Configuration
-------------

SInvoice platform
~~~~~~~~~~~~~~~~~

To send electronic invoices to SInvoice, the following must be created on SInvoice_:

.. image:: vietnam/vn-paynow-bank-setting.png
:alt: Vietnamese QR banking bank account configuration
- :ref:`SInvoice account <localizations/vietname/sinvoice-registration>`
- :ref:`Invoice template <localizations/vietname/sinvoice-template>`
- :ref:`Invoice symbol <localizations/vietname/sinvoice-symbol>`
- :ref:`Invoice issuance notice <localizations/vietname/sinvoice-notice>`

.. _localizations/vietname/sinvoice-registration:

SInvoice registration
*********************

To create an account, go to SInvoice_ and register for the desired plan. Fill in the form that
opens to be contacted by SInvoice_ to create an account.

Once you have an account, log into SInvoice_ using your :guilabel:`Username` and
:guilabel:`Password`.

.. _localizations/vietname/sinvoice-template:

Invoice template creation
*************************

#. On the left side of the overview page, in the :guilabel:`Release management` menu, click
:guilabel:`Create business information`.
#. In the :guilabel:`Update key information` step, fill in the following fields and other optional
information if needed: :guilabel:`Unit name`, :guilabel:`Address`, :guilabel:`Contact person`,
:guilabel:`Type of representative documents`.
#. Click :guilabel:`Update`.
#. In the :guilabel:`Look up digital certificate` step, click :guilabel:`Add new` to add a digital
certificate.
#. Select the :guilabel:`Branch/Enterprise` and the :guilabel:`Type of digital certificate`, then
fill in the required fields for each type:

- :guilabel:`Supplier`: CloudCA
- :guilabel:`Signer ID`: CloudCA
- :guilabel:`Digital Certificate`: CloudCA
- :guilabel:`How to download file`: HSM
- :guilabel:`File Upload`: HSM, USB-TOKEN

#. Click :guilabel:`Generate key pair` to generate encryption keys for authentication, and
:guilabel:`Save`.
#. In the :guilabel:`Manage invoice templates` step, add a new :guilabel:`Invoice template`.
#. Select the :guilabel:`Invoice type` and fill in the :guilabel:`Invoice template code`,
:guilabel:`Invoice template name`, and other optional information if needed.
#. Click :guilabel:`Update`.

.. seealso::
:doc:`../accounting/bank`
`SInvoice documentation on electronic invoice template creation
<https://www.sinvoice.vn/2021/02/hdsd-tai-lieu-nghiep-vu-tao-mau-hoa-don-dien-tu.html?debug=1>`_

.. _localizations/vietname/sinvoice-symbol:

Invoice symbol creation
***********************

On the left side of the main screen, in the :guilabel:`Release management` menu, click
:guilabel:`Invoice symbol` and follow these steps:

#. Click :guilabel:`Add new` and select the :guilabel:`Invoice template`.
#. Set the :guilabel:`Status` to :guilabel:`Active` to activate the symbol and fill in the
:guilabel:`Invoice symbol`.
#. Enable :guilabel:`Stop automatic sending to tax authorities` and :guilabel:`Default for built-in
API` based on preference.
#. Click :guilabel:`Save`.

.. _localizations/vietname/sinvoice-notice:

Invoice issuance notice
***********************

On the left side of the main screen, in the :guilabel:`Release management` menu, click
:guilabel:`Create issuance notice` and follow these steps:

Bank journal configuration
--------------------------
#. Click :guilabel:`Add new`, select the :guilabel:`Name of the business unit to issue an e-invoice`
and the :guilabel:`Tax agency name`. Based on the business unit and tax agency selected, the
:guilabel:`Tax code`, :guilabel:`Address`, :guilabel:`Phone number`, and :guilabel:`Separator
used` are automatically filled and uneditable.
#. Click :guilabel:`Select the invoice type for issuance`, and then select and fill in the
following information :

Go to :menuselection:`Accounting --> Configuration --> Journals`, open the bank journal, then fill
out the :guilabel:`Account Number` and :guilabel:`Bank` under the :guilabel:`Journal Entries` tab.
- :guilabel:`Invoice type`: The invoice type on which to declare an issuance notice.
- :guilabel:`Invoice template`: Select from the list of templates available based on the invoice
type.
- :guilabel:`Symbol`: Select from the list of symbols available based on the invoice type.
- :guilabel:`Quantity`: Total number of invoices to issue for the selected type. Based on the
type and template selected, this field is filled in automatically. It can be changed if needed.
- :guilabel:`Start date of use`: The date from which the invoice template, range, and quantity
are used for the issuance notice.

.. image:: vietnam/vn-bank-account-journal-setting.png
:alt: Bank Account's journal configuration
#. Click :guilabel:`Save` and select more invoice types if necessary by repeating the steps above.
Click :guilabel:`Save` to finish drafting the notice.
#. Click :guilabel:`Send to tax authorities` for approval. Once approved, the notice's
:guilabel:`Status` is changed to :guilabel:`Active`.

Issue invoices with Vietnamese QR banking QR codes
--------------------------------------------------
.. _localizations/vietnam/sinvoice-odoo:

Odoo database
~~~~~~~~~~~~~

Link Odoo to SInvoice
*********************

To connect Odoo with SInvoice, go to :menuselection:`Accounting --> Configuration --> Settings`.
In the :guilabel:`Vietnamese Integration` section, fill in your SInvoice :guilabel:`Username` and
:guilabel:`Password`. Add a :guilabel:`Default symbol` to generate a prefix for the invoice number
managed in SInvoice if needed.

Invoice template
****************

kidoodoo marked this conversation as resolved.
Show resolved Hide resolved
To create SInvoice templates, go to :menuselection:`Accounting --> Configuration --> Templates`.
Click :guilabel:`New` and add a :guilabel:`Template code` and a :guilabel:`Template Invoice Type`.
The :guilabel:`Template code` is the initial sequence of digits in the name assigned by SInvoice.
For example, if the invoice template is `1/001 - Hóa đơn GTGT - ND123`, the :guilabel:`Template
code` is `1/001`. The SInvoice templates in Odoo must match the ones in SInvoice.

To add :guilabel:`Invoice Symbols`, click :guilabel:`Add a new line`.

Sending invoices to SInvoice
----------------------------

Invoices can be sent to SInvoice once they have been confirmed. To do so, follow the
:ref:`invoice sending <accounting/invoice/sending>` steps. In the :guilabel:`Send` popup, enable
:guilabel:`Send to SInvoice` and click :guilabel:`Send & Print`.

Once the invoice has been successfully submitted to SInvoice, the :guilabel:`SInvoice Status` field
in the :guilabel:`SInvoice` tab of the invoice is updated to :guilabel:`Sent`. The
:guilabel:`SInvoice Number`, :guilabel:`Issue Date`, :guilabel:`Secret Code` and :guilabel:`eInvoice
Number` fields are also updated. The same information is available on SInvoice.

Replacement or adjustment invoices
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

A replacement invoice is issued to correct an invoice that has **yet to be tax declared**, whereas
an adjustment invoice is issued to correct one that has **already been tax declared**. Follow these
steps to issue a replacement or adjustment invoice:

#. Open the invoice and click :guilabel:`Credit Note`.
#. In the :guilabel:`Credit Note` popup, fill in the following fields:

kidoodoo marked this conversation as resolved.
Show resolved Hide resolved
- :guilabel:`Reason displayed on Credit Note`
- :guilabel:`Adjustment type`
- :guilabel:`Agreement Name`
- :guilabel:`Agreement Date`
- :guilabel:`Journal`
- :guilabel:`Reversal date`

#. Click :guilabel:`Reverse and Create Invoice` to issue a replacement invoice, or
:guilabel:`Reverse` to issue an adjustment invoice.

The :guilabel:`SInvoice Status` in the :guilabel:`SInvoice` invoice tab is updated to
:guilabel:`Replaced` for a replacement invoice or :guilabel:`Adjusted` for an adjustment invoice.

Invoice cancellation
~~~~~~~~~~~~~~~~~~~~

If an invoice needs to be canceled, open the invoice and click :guilabel:`Request Cancel`. In the
:guilabel:`Invoice Cancellation` popup, enter the cancellation :guilabel:`Reason`,
:guilabel:`Agreement Name`, and :guilabel:`Agreement Date`, and click :guilabel:`Request
Cancellation`.

The :guilabel:`SInvoice Status` in the :guilabel:`SInvoice` invoice tab is updated to
:guilabel:`Canceled`.

.. _localizations/vietnam/qrcode:

QR banking codes
================

Vietnamese QR banking is a payment service platform that allows customers to make instant domestic
payments to individuals and merchants in Vietnamese dong via online and mobile banking.

Configuration
-------------

To activate QR banking codes, go to :menuselection:`Accounting --> Configuration --> Settings` and
enable :guilabel:`QR Codes` in the :guilabel:`Customer Payments` section.

Bank account
~~~~~~~~~~~~

To activate QR banking for a bank account, go to :menuselection:`Contacts --> Configuration -->
Bank Accounts` and select the bank account. Fill in the :guilabel:`Bank Identifier Code`,
:guilabel:`Proxy Type` (based on the information used to identify the :guilabel:`Merchant Account`,
such as the card number and bank account numbers), and :guilabel:`Proxy Value` fields.

Enable :guilabel:`Include Reference` to include the invoice number in the QR code.

.. important::
- The account holder's country must be set to `Vietnam`, and their city must be specified on the
contact form.
- The :ref:`account number <accounting/bank/account-number>` and bank must be set on the
:guilabel:`Bank` journal.

.. seealso::
:doc:`../accounting/bank`

When creating a new invoice, open the :guilabel:`Other Info` tab and set the :guilabel:`Payment
QR-code` option to *EMV Merchant-Presented QR-code*.
Generating QR codes on invoices
-------------------------------

.. image:: vietnam/vn-qr-code-invoice-setting.png
:alt: Select EMV Merchant-Presented QR-code option
When creating a new invoice, open the :guilabel:`Other Info` tab and select :guilabel:`EMV
Merchant-Presented QR-code` in the :guilabel:`Payment QR-code` field.

Ensure that the :guilabel:`Recipient Bank` is the one you configured, as Odoo uses this field to
generate the Vietnamese QR banking QR code.
.. note::
Ensure the :guilabel:`Recipient Bank` is configured, as Odoo uses this field to generate QR
codes.
Binary file not shown.
Binary file not shown.
Binary file not shown.