Compare commits

..

9 Commits

Author SHA1 Message Date
Amélie Dieudonné
f0548c755b [IMP] documentation: update many2many_binary widget
The widget now also display an image preview for the files of MIME type "image".
A new option 'reverse_order' has been added to visually reverse the files order.
2024-11-19 13:29:25 +01:00
Felicious
07122aa8a8 [IMP] inventory: landed cost conditions
closes odoo/documentation#11395

X-original-commit: 22a0a1834e
Signed-off-by: Samuel Lieber (sali) <sali@odoo.com>
Signed-off-by: Felicia Kuan (feku) <feku@odoo.com>
2024-11-15 16:38:13 +00:00
Loredana Perazzo
9490048209 [IMP] pos: remove warning "july 22" in six
task-4337378

closes odoo/documentation#11401

X-original-commit: 738703df14
Signed-off-by: Loredana Perazzo (lrpz) <lrpz@odoo.com>
2024-11-15 15:14:03 +00:00
jero-odoo
c31d61cb5b [IMP] POS: remove star printer reference
closes odoo/documentation#11383

X-original-commit: 54359951db
Signed-off-by: Samuel Lieber (sali) <sali@odoo.com>
Signed-off-by: Jessica Rogers (jero) <jero@odoo.com>
2024-11-15 09:49:54 +00:00
Joris Makauskis
085613f63e [IMP] extract_api: Add bank statement documentation
- Updated documentation to include details on the new bank statement
extraction via OCR.
- Removed mention of unsupported discount, product, and unit features
from invoice_lines feature.

Task-3895452

closes odoo/documentation#11393

X-original-commit: 8c93ff790e
Signed-off-by: Joris Makauskis (jmak) <jmak@odoo.com>
2024-11-15 07:00:34 +00:00
afma-odoo
0292755fe1 [IMP] accounting: adding info about group payments
task-3518648

closes odoo/documentation#11358

X-original-commit: 75af17192f
Signed-off-by: Audrey Vandromme (auva) <auva@odoo.com>
Signed-off-by: Anne-Françoise Marcq (afma) <afma@odoo.com>
2024-11-15 07:00:22 +00:00
Albaraa Maktabi
6d7d9aacb7 [FIX] developer/tutorials/pdf_reports: fix a grammer issue
On line 60 changed "we will can print..." to "we will be able to print..."

closes odoo/documentation#11366

X-original-commit: ad624afdf8
Signed-off-by: Victor Feyens (vfe) <vfe@odoo.com>
2024-11-15 00:08:44 +00:00
Audrey (auva)
71b426177a [IMP] payment_providers/paypal: new PayPal version
task-3355211

closes odoo/documentation#11388

X-original-commit: 3a24e18b45
Signed-off-by: Audrey Vandromme (auva) <auva@odoo.com>
2024-11-15 00:08:37 +00:00
Zachary Straub (ZST)
b29eae5102 [FIX] accounting: fix broken OCR tutorial link
closes odoo/documentation#11371

X-original-commit: 724f7000d7
Signed-off-by: Zachary Straub (zst) <zst@odoo.com>
2024-11-14 09:13:04 +00:00
31 changed files with 234 additions and 221 deletions

View File

@@ -69,8 +69,9 @@ When new products arrive, the new average cost for each product is recomputed us
- **Incoming Qty**: count of products arriving in the new shipment;
- **Purchase Price**: estimated price of products at the reception of products (since vendor bills
may arrive later). The amount includes not only the price for the products, but also added costs,
such as shipping, taxes, and :ref:`landed costs <inventory/reporting/landed_costs>`. At reception
of the vendor bill, this price is adjusted;
such as shipping, taxes, and :doc:`landed costs
<../../../inventory_and_mrp/inventory/product_management/inventory_valuation/landed_costs>`. At
reception of the vendor bill, this price is adjusted;
- **Final Qty**: quantity of on-hand stock after the stock move.
.. _inventory/avg_cost/definite_rule:

View File

@@ -7,20 +7,20 @@ Payments
In Odoo, payments can either be automatically linked to an invoice or bill or be stand-alone records
for use at a later date:
- If a payment is **linked to an invoice or bill**, it reduces/settles the amount due of the
invoice. You can have multiple payments related to the same invoice.
- If a payment is **linked to an invoice or bill**, it reduces/settles the amount due on the
invoice. Multiple payments on the same invoice are possible.
- If a payment is **not linked to an invoice or bill**, the customer has an outstanding credit with
your company, or your company has an outstanding debit with a vendor. You can use those
outstanding amounts to reduce/settle unpaid invoices/bills.
the company, or the company has an outstanding debit with a vendor. Those outstanding amounts
reduce/settle unpaid invoices/bills.
.. seealso::
- :doc:`Internal transfers <payments/internal_transfers>`
- :doc:`bank/reconciliation`
- `Odoo Tutorials: Bank Configuration
<https://www.odoo.com/slides/slide/bank-configuration-1880>`_
<https://www.odoo.com/slides/slide/bank-configuration-6832>`_
.. _payments/register:
.. _accounting/payments/from-invoice-bill:
Registering payment from an invoice or bill
===========================================
@@ -29,11 +29,12 @@ When clicking :guilabel:`Register payment` in a customer invoice or vendor bill,
journal entry and changes the amount due according to the payment amount. The counterpart is
reflected in an :ref:`outstanding <bank/outstanding-accounts>` **receipts** or **payments** account.
At this point, the customer invoice or vendor bill is marked as :guilabel:`In payment`. Then, when
the outstanding account is reconciled with a bank statement line, the invoice or vendor bill changes
to the :guilabel:`Paid` status.
the outstanding account is reconciled with a bank transaction line, the invoice or vendor bill
changes to the :guilabel:`Paid` status.
The information icon near the payment line displays more information about the payment. You can
access additional information, such as the related journal, by clicking :guilabel:`View`.
The :icon:`fa-info-circle` information icon next to the payment line displays more
information about the payment. To access additional information, such as the related journal, click
:guilabel:`View`.
.. image:: payments/information-icon.png
:alt: See detailed information of a payment.
@@ -41,65 +42,89 @@ access additional information, such as the related journal, by clicking :guilabe
.. note::
- The customer invoice or vendor bill must be in the :guilabel:`Posted` status to register the
payment.
- If you unreconcile a payment, it still appears in your books but is no longer linked to the
- If a payment is unreconciled, it still appears in the books but is no longer linked to the
invoice.
- If you (un)reconcile a payment in a different currency, a journal entry is automatically
- If a payment is (un)reconciled in a different currency, a journal entry is automatically
created to post the currency exchange gains/losses (reversal) amount.
- If you (un)reconcile a payment and an invoice having cash basis taxes, a journal entry is
automatically created to post the cash basis tax (reversal) amount.
- If a payment is (un)reconciled and an invoice with cash-basis taxes, a journal entry is
automatically created to post the cash-basis tax (reversal) amount.
.. tip::
- If your main bank account is set as an :ref:`outstanding account
<bank/outstanding-accounts>`, and the payment is registered in Odoo (not through a related
bank statement), invoices and bills are directly registered as :guilabel:`Paid`.
If the main bank account is set as an :ref:`outstanding account
<bank/outstanding-accounts>`, and the payment is registered in Odoo (not through a related
bank transaction), invoices and bills are directly registered as :guilabel:`Paid`.
.. _accounting/payments/not-tied:
Registering payments not tied to an invoice or bill
===================================================
When a new payment is registered via :menuselection:`Customers / Vendors --> Payments` menu, it is
not directly linked to an invoice or bill. Instead, the account receivable or the account payable is
When a new payment is registered via :menuselection:`Customers / Vendors --> Payments`, it is not
directly linked to an invoice or bill. Instead, the account receivable or the account payable is
matched with the **outstanding account** until it is manually matched with its related invoice or
bill.
.. _accounting/payments/matching-invoices-bills:
Matching invoices and bills with payments
-----------------------------------------
A blue banner appears when you validate a new invoice/bill and an **outstanding payment** exists for
this specific customer or vendor. It can easily be matched from the invoice or bill by clicking
:guilabel:`ADD` under :guilabel:`Outstanding Credits` or :guilabel:`Outstanding Debits`.
A blue banner appears when validating a new invoice/bill and an **outstanding payment** exists for
this specific customer or vendor. To match it with the invoice or bill, click :guilabel:`ADD`
under :guilabel:`Outstanding Credits` or :guilabel:`Outstanding Debits`.
.. image:: payments/add-option.png
:alt: Shows the ADD option to reconcile an invoice or a bill with a payment.
The invoice or bill is now marked as :guilabel:`In payment` until it is reconciled with its
corresponding bank statement.
corresponding bank transaction.
.. _payments/batch-payments:
.. _accounting/payments/group-payments:
Batch payment
-------------
Group payments
--------------
Batch payments allow you to group different payments to ease :doc:`reconciliation
<bank/reconciliation>`. They are also useful when you deposit :doc:`checks <payments/checks>` to the
bank or for :doc:`SEPA payments <payments/pay_sepa>`. To do so, go to :menuselection:`Accounting -->
Customers --> Batch Payments` or :menuselection:`Accounting --> Vendors --> Batch Payments`. In the
list view of payments, you can select and group several payments in a batch by clicking
:menuselection:`Action --> Create Batch Payment`.
Group payments allow combining outgoing and incoming payments from the same contact into a single
payment to simplify the process and improve payment usability. To register a group payment:
#. Go to :menuselection:`Accounting --> Customers --> Invoices/Credit Notes` or
:menuselection:`Accounting --> Vendors --> Bills/Refunds`.
#. Select the relevant invoices/credit notes or bills/refunds linked to a specific contact.
#. Click the :icon:`fa-cog` (:guilabel:`Action menu`) icon and select :guilabel:`Register Payment`.
#. In the :guilabel:`Register Payment` window, select the :guilabel:`Journal`, the
:guilabel:`Payment Method`, and the :guilabel:`Payment Date`.
#. Enable the :guilabel:`Group Payments` option and click :guilabel:`Create payment`.
The invoices or bills are now marked as :guilabel:`In payment` until they are reconciled with the
corresponding bank transactions. The credit notes or refunds are marked as :guilabel:`Paid`.
.. _accounting/payments/batch-payments:
Batch payments
--------------
Batch payments allow grouping payments from multiple contacts to ease
:doc:`reconciliation <bank/reconciliation>`. They are also useful when depositing :doc:`checks
<payments/checks>` to the bank or for :doc:`SEPA payments <payments/pay_sepa>`. To do so, go to
:menuselection:`Accounting --> Customers --> Batch Payments` or :menuselection:`Accounting -->
Vendors --> Batch Payments`. In the list view of payments, to group several payments in a
batch, select them and click :menuselection:`Action --> Create Batch Payment`.
.. seealso::
- :doc:`payments/batch`
- :doc:`payments/batch_sdd`
.. _payments/matching:
.. _accounting/payments/matching:
Payments matching
-----------------
The :guilabel:`Payments matching` tool opens all unreconciled customer invoices or vendor bills and
allows you to process them individually, matching all payments and invoices in one place. You can
reach this tool from the :menuselection:`Accounting Dashboard --> Customer Invoices / Vendor Bills`,
click the drop-down menu button (:guilabel:`⋮`), and select :guilabel:`Payments Matching`, or go to
:menuselection:`Accounting --> Accounting --> Reconciliation`.
allows them to be processed individually, matching all payments and invoices in one place. Go to the
:guilabel:`Accounting Dashboard`, click the :icon:`fa-ellipsis-v` (:guilabel:`dropdown menu`)
button from the :guilabel:`Customer Invoices` or :guilabel:`Vendor Bills` journals, and select
:guilabel:`Payments Matching`, or go to :menuselection:`Accounting --> Accounting -->
Reconciliation`.
.. image:: payments/payments-journal.png
:alt: Payments matching menu in the drop-down menu.
@@ -107,39 +132,49 @@ click the drop-down menu button (:guilabel:`⋮`), and select :guilabel:`Payment
.. note::
During the :doc:`reconciliation <bank/reconciliation>`, if the sum of the debits and credits does
not match, there is a remaining balance. This either needs to be reconciled at a later date or
needs to be written off directly.
written off directly.
.. _accounting/payments/batch-payments-matching:
Batch payments matching
-----------------------
You can use the **batch reconciliation feature** to reconcile several outstanding payments or
invoices simultaneously for a specific customer or vendor. Go to your **Accounting Dashboard** and
open your **bank journal**. In the **bank reconciliation** view, select a **transaction**, and click
the :guilabel:`Batch Payments` tab. From here, you can reconcile your
:doc:`batch payments <payments/batch>` with your outstanding payments or invoices.
Use the batch reconciliation feature to reconcile several outstanding payments or invoices
simultaneously for a specific customer or vendor. Go to :menuselection:`Accounting --> Reporting -->
Aged Receivable / Aged Payable`. All transactions that have not yet been reconciled for that
contact are visible, and when a customer or vendor is selected, the :guilabel:`Reconcile` option is
displayed.
.. image:: payments/reconcile-option.png
:alt: The batch payment reconcile option.
.. _accounting/payments/partial-payment:
Registering a partial payment
=============================
To register a **partial payment**, click :guilabel:`Register payment` from the related invoice or
bill, and enter the amount received or paid. Upon entering the amount, a prompt appears to decide
whether to :guilabel:`Keep open` the invoice or bill, or :guilabel:`Mark as fully paid`. Select
:guilabel:`Keep open` and click :guilabel:`Create payment`. The invoice or bill is now marked as
:guilabel:`Partial`. Select :guilabel:`Mark as fully paid` if you wish to settle the invoice or bill
with a difference in the amount.
To register a partial payment, click on :guilabel:`Register Payment` from the related invoice or
bill. In the case of a partial payment (when the :guilabel:`Amount` paid is less than the total
remaining amount on the invoice or the bill), the :guilabel:`Payment Difference` field displays the
outstanding balance. There are two options:
.. image:: payments/payment-difference.png
:alt: Partial payment of an invoice or bill.
- :guilabel:`Keep open`: Keep the invoice or the bill open and mark it with a :guilabel:`Partial`
banner;
- :guilabel:`Mark as fully paid`: Select an account in the :guilabel:`Post Difference In` field and
change the :guilabel:`Label` if needed. A journal entry will be created to balance the accounts
payable or receivable with the selected account.
Reconciling payments with bank statements
=========================================
.. image:: payments/partial-payment.png
:alt: register a partial payment
.. _accounting/payments/reconciling-payments:
Reconciling payments with bank transactions
===========================================
Once a payment has been registered, the status of the invoice or bill is :guilabel:`In payment`. The
next step is :doc:`reconciling <bank/reconciliation>` it with the related bank statement line to
have the transaction finalized and the invoice or bill marked as :guilabel:`Paid`.
next step is :doc:`reconciling <bank/reconciliation>` it with the related bank transaction line to
finalize the payment workflow and mark the invoice or bill as :guilabel:`Paid`.
.. toctree::
:titlesonly:

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.1 KiB

View File

@@ -62,10 +62,10 @@ Then, to close the fiscal year:
<accounting/reporting/aged-payable>` reports.
- Audit all accounts, being sure to fully understand all transactions and their nature, making
sure to include loans and fixed assets.
- Optionally, run :ref:`payments matching <payments/matching>` to validate any open vendor bills
and customer invoices with their payments. While this step is optional, it could assist the
year-end closing process if all outstanding payments and invoices are reconciled, potentially
finding errors or mistakes in the system.
- Optionally, run :ref:`payments matching <accounting/payments/matching>` to validate any open
vendor bills and customer invoices with their payments. While this step is optional, it could
assist the year-end closing process if all outstanding payments and invoices are reconciled,
potentially finding errors or mistakes in the system.
Next, the accountant likely verifies balance sheet items and book entries for:

View File

@@ -37,7 +37,7 @@ appropriately completed:
- :guilabel:`Vendor`: Odoo automatically fills some information based on the vendor's registered
information, previous purchase orders, or bills.
- :guilabel:`Bill Reference`: add the sales order reference provided by the vendor and is used to do
the :ref:`matching <payments/matching>` when you receive the products.
the :ref:`matching <accounting/payments/matching>` when you receive the products.
- :guilabel:`Auto-Complete`: select a past bill/purchase order to automatically complete the
document. The :guilabel:`Vendor` field should be completed prior to completing this field.
- :guilabel:`Bill Date`: is the issuance date of the document.

View File

@@ -11,8 +11,8 @@ created and populated based on the scanned invoices.
.. seealso::
- `Test Odoo's invoice digitization <https://www.odoo.com/app/invoice-automation>`_
- `Odoo Tutorials: Invoice Digitization with OCR
<https://www.odoo.com/slides/slide/digitize-bills-with-ocr-1712>`_
- `Odoo Tutorials: Vendor Bill Digitization
<https://www.odoo.com/slides/slide/vendor-bill-digitization-7065>`_
Configuration
=============

View File

@@ -369,7 +369,7 @@ the SAT documentation, there are two types of payments:
- `PPD` (Pago en Parcialidades o Diferido/Payment in Installements or Deferred)
.. seealso::
:doc:`../../inventory_and_mrp/inventory/product_management/inventory_valuation/integrating_landed_costs`
:doc:`../../inventory_and_mrp/inventory/product_management/inventory_valuation/landed_costs`
The difference lies in the *Due Date* or *Payment Terms* of the invoice.
@@ -883,8 +883,8 @@ Configuration
~~~~~~~~~~~~~
In order to track the correct customs number for a specific invoice, Odoo uses :doc:`landed costs
<../../inventory_and_mrp/inventory/product_management/inventory_valuation/integrating_landed_costs>`.
Go to :menuselection:`Inventory --> Configuration --> Settings --> Valuation`. Make sure that
<../../inventory_and_mrp/inventory/product_management/inventory_valuation/landed_costs>`. Go to
:menuselection:`Inventory --> Configuration --> Settings --> Valuation`. Make sure that
:guilabel:`Landed Costs` is activated.
Begin by creating a *service*-type product called, `Pedimento`. In the :guilabel:`Purchase` tab,

View File

@@ -717,7 +717,7 @@ Create batch payment
Now, record each payment in Odoo using the |NACHA| payment method.
.. seealso::
:ref:`Register Payments in Odoo <payments/register>`
:ref:`Register Payments in Odoo <accounting/payments/from-invoice-bill>`
.. important::
Be aware of the cut-off time for same-day payments. Either the file needs to have a future date

View File

@@ -2,7 +2,7 @@
PayPal
======
`Paypal <https://www.paypal.com/>`_ is an American online payment provider available worldwide, and
`Paypal <https://www.paypal.com/>`_ is an American online payment provider available worldwide and
one of the few that does not charge a subscription fee.
.. note::
@@ -10,112 +10,71 @@ one of the few that does not charge a subscription fee.
<https://www.paypal.com/webapps/mpp/country-worldwide>`_, only `a selection of currencies are
supported <https://developer.paypal.com/docs/reports/reference/paypal-supported-currencies>`_.
Settings in PayPal
==================
.. _payment_providers/paypal/configuration-paypal:
To access your PayPal account settings, log into PayPal, open the :guilabel:`Account Settings`, and
open the :guilabel:`Website payments` menu.
Configuration in PayPal
=======================
.. image:: paypal/paypal-account.png
:align: center
:alt: PayPal account menu
#. `Log into your PayPal Developer Dashboard <https://developer.paypal.com/dashboard/>`_.
#. Click :guilabel:`Apps & Credentials` and click :guilabel:`Create App`.
#. Enter an :guilabel:`App Name` and click :guilabel:`Create App`.
#. Copy the :guilabel:`Client ID` and :guilabel:`Secret` and save them for
:ref:`later <payment_providers/paypal/configuration-odoo>`.
.. important::
Note that for PayPal to work **in Odoo**, the options :ref:`Auto Return <paypal/auto-return>` and
:ref:`PDT <paypal/pdt>` **must** be enabled.
If you use customer names or addresses that include accented or non-Latin characters, you
**must** configure the encoding format of the payment request sent by Odoo to PayPal to avoid
transaction failures without notice. To do so, access the `PayPal button language encoding
setting <https://www.paypal.com/cgi-bin/websrc?cmd=_profile-language-encoding>`_, click
:guilabel:`More Options`, and set the :guilabel:`Encoding` field to :guilabel:`UTF-8`.
.. _paypal/auto-return:
Auto Return
-----------
The **Auto Return** feature automatically redirects customers to Odoo once the payment is processed.
From :guilabel:`Website payments`, go to :menuselection:`Website preferences --> Update --> Auto
return for website payments --> Auto return` and select :guilabel:`On`. Enter the address of your
Odoo database (e.g., `https://yourcompany.odoo.com`) in the :guilabel:`Return URL` field, and
:guilabel:`Save`.
.. note::
Any URL does the job. Odoo only needs the setting to be enabled since it uses another URL.
.. _paypal/pdt:
Payment Data Transfer (PDT)
---------------------------
:abbr:`PDT (Payment Data Transfer)` allows to receive payment confirmations, displays the payment
status to the customers, and verifies the authenticity of the payments. From :menuselection:`Website
preferences --> Update`, scroll down to :guilabel:`Payment data transfer` and select :guilabel:`On`.
If you are trying PayPal as a test, access your :ref:`PayPal Sandbox account
<payment_providers/paypal/testing>` and `configure the encoding format for your sandbox account
<https://sandbox.paypal.com/cgi-bin/customerprofileweb?cmd=_profile-language-encoding>`_.
.. tip::
PayPal displays your **PDT Identity Token** as soon as :ref:`Auto return <paypal/auto-return>`
and :ref:`Payment Data Transfer (PDT) <paypal/pdt>` are enabled. If you need the **PDT Identity
Token**, disable and re-enable :guilabel:`Payment data transfer` to display the token again.
For encrypted website payments & EWP_SETTINGS errors, please check the `PayPal documentation
<https://developer.paypal.com/docs/online/>`_.
PayPal Account Optional
-----------------------
.. _payment_providers/paypal/configuration-odoo:
We advise not to prompt customers to log in with a PayPal account upon payment. It is better and
more accessible for customers to pay with a debit/credit card. To disable that prompt, go to
:menuselection:`Account Settings --> Website payments --> Update` and select :guilabel:`On` for
:guilabel:`PayPal account optional`.
Configuration in Odoo
=====================
Payment Messages Format
-----------------------
#. :ref:`Navigate to the payment provider PayPal <payment_providers/add_new>`.
#. In the :guilabel:`Credentials` tab, enter the :guilabel:`Email` linked to your PayPal account,
then fill in the :guilabel:`Client ID` and :guilabel:`Client Secret` fields with the values you
saved at the step :ref:`payment_providers/paypal/configuration-paypal`.
#. Click :guilabel:`Generate your webhook` to create the :guilabel:`Webhook ID`.
#. Set the :guilabel:`State` field to :guilabel:`Enabled`, and make sure the PayPal payment provider
is :guilabel:`Published`.
#. Configure the remaining options as desired.
If you use accented characters (or anything other than primary Latin characters) for customer names
or addresses, then you **must** configure the encoding format of the payment request sent by Odoo to
PayPal. If you do not, some transactions fail without notice.
.. _payment_providers/paypal/testing:
To do so, go to `your production account <https://www.paypal.com/cgi-bin/customerprofileweb
?cmd=_profile-language-encoding>`_. Then, click :guilabel:`More Options` and set the two default
encoding formats as :guilabel:`UTF-8`.
Testing
=======
.. tip::
- For Encrypted Website Payments & EWP_SETTINGS error, please check the `Paypal documentation
<https://developer.paypal.com/docs/online/>`_.
- Configure your :ref:`Paypal Sandbox account <paypal/testing>`, then follow this
`link <https://sandbox.paypal.com/cgi-bin/customerprofileweb?cmd=_profile-language-encoding>`_
to configure the encoding format in a test environment.
PayPal provides two sandbox accounts that you can use to simulate live transactions:
Settings in Odoo
================
.. seealso::
:ref:`payment_providers/add_new`
Odoo needs your **API Credentials** to connect with your PayPal account. To do so, go to
:menuselection:`Accounting --> Configuration --> Payment Providers` and :guilabel:`Activate` PayPal.
Then, enter your PayPal account credentials in the :guilabel:`Credentials` tab:
- :guilabel:`Email`: the login email address in Paypal;
- :guilabel:`PDT Identity Token`: the key used to verify the authenticity of transactions.
.. _paypal/testing:
Test environment
================
Configuration
-------------
Thanks to PayPal sandbox accounts, you can test the entire payment flow in Odoo.
Log into the `Paypal Developer Site <https://developer.paypal.com/>`_ using your PayPal credentials,
which creates two sandbox accounts:
- A business account (to use as merchants, e.g.,
`pp.merch01-facilitator@example.com <mailto:pp.merch01-facilitator@example.com>`_);
- A default personal account (to use as shoppers, e.g.,
`pp.merch01-buyer@example.com <mailto:pp.merch01-buyer@example.com>`_).
Log into PayPal sandbox using the merchant account and follow the same configuration instructions.
Enter your sandbox credentials in Odoo (:menuselection:`Accounting --> Configuration --> Payment
Providers --> PayPal` in the :guilabel:`Credentials` tab, and make sure the status is set on
:guilabel:`Test Mode`.
Run a test transaction from Odoo using the sandbox personal account.
- A business account (to use as the merchant account, e.g., `ab-1abc12345678@business.example.com`);
- A default personal account (to use as the shopper account, e.g.,
`ba-9cba87654321@personal.example.com`).
To test the PayPal payment workflow in Odoo:
#. Log into the `Paypal Developer Site <https://developer.paypal.com/>`_ using your PayPal
credentials and go to :menuselection:`Testing Tools --> Sandbox Accounts`.
#. Click the :icon:`fa-ellipsis-v` (:guilabel:`ellipsis`) icon next to the sandbox business account
and select :guilabel:`View/Edit account`.
#. Copy the :guilabel:`Email`, :guilabel:`Client ID`, and :guilabel:`Secret` and save them for the
next step.
#. In Odoo, :ref:`configure the PayPal payment provider <payment_providers/paypal/configuration-odoo>`
with the values saved at the previous step and set the :guilabel:`State` field to
:guilabel:`Test Mode`.
You can then run a test transaction from Odoo using the sandbox personal account.
.. seealso::
- :ref:`payment_providers/test-mode`
- :doc:`../payment_providers`

View File

@@ -9,5 +9,6 @@ Inventory valuation
inventory_valuation/inventory_valuation_config
inventory_valuation/using_inventory_valuation
inventory_valuation/integrating_landed_costs
inventory_valuation/landed_costs
inventory_valuation/valuation_by_lots

View File

@@ -2,8 +2,6 @@
Landed costs
============
.. _inventory/reporting/landed_costs:
.. |RfQ| replace:: :abbr:`RfQ (Request for Quotation)`
.. |PO| replace:: :abbr:`PO (Purchase Order)`
.. |FIFO| replace:: :abbr:`FIFO (First In First Out)`
@@ -32,8 +30,7 @@ Costs` feature in the :guilabel:`Valuation` section.
Click the :guilabel:`Default Journal` drop-down menu to reveal a list of accounting journals. Select
a journal for which all accounting entries related to landed costs should be recorded.
.. image:: integrating_landed_costs/integrating-landed-costs-enabled-setting.png
:align: center
.. image:: landed_costs/integrating-landed-costs-enabled-setting.png
:alt: Landed Costs feature and resulting Default Journal field in the Inventory settings.
Create landed cost product
@@ -65,17 +62,16 @@ appears below it, prompting a selection. Clicking that drop-down menu reveals th
- :guilabel:`By Weight`: splits the cost, according to the weight of the products in the receipt.
- :guilabel:`By Volume`: splits the cost, according to the volume of the products in the receipt.
.. image:: integrating_landed_costs/integrating-landed-costs-landed-cost-product.png
:align: center
.. image:: landed_costs/integrating-landed-costs-landed-cost-product.png
:alt: Is a Landed Cost checkbox and Default Split Method on service type product form.
When creating new vendor bills, this product can be added as an invoice line as a landed cost.
.. important::
To apply a landed cost on a vendor bill, the products included in the original |PO| **must**
belong to a *Product Category* with its *Force Removal Strategy* set to |FIFO|. The *Costing
Method* can be set to either |AVCO| or |FIFO|, and the valuation method can be :doc:`manual
<using_inventory_valuation>` or :doc:`automatic <inventory_valuation_config>`.
To apply a landed cost on a vendor bill, products in the original |PO| **must** belong to a
*Product Category* with a *Costing Method* of either |AVCO| or |FIFO|, and the valuation method
can be :doc:`manual <using_inventory_valuation>` or :doc:`automatic
<inventory_valuation_config>`.
Create purchase order
=====================
@@ -105,8 +101,7 @@ menu in the :guilabel:`Product` column to select the previously-created landed c
the :icon:`fa-cloud-upload` :guilabel:`(cloud with arrow)` icon to manually save and update the
draft bill.
.. image:: integrating_landed_costs/integrating-landed-costs-checkboxes.png
:align: center
.. image:: landed_costs/integrating-landed-costs-checkboxes.png
:alt: Landed Costs column checkboxes for product and landed cost.
In the :guilabel:`Landed Costs` column, the product ordered from the vendor does **not** have its
@@ -115,8 +110,7 @@ costs from all other costs displayed on the bill.
Additionally, at the top of the form, a :guilabel:`Create Landed Costs` button appears.
.. image:: integrating_landed_costs/integrating-landed-costs-create-button.png
:align: center
.. image:: landed_costs/integrating-landed-costs-create-button.png
:alt: Create Landed Costs button on vendor bill.
Add landed cost
@@ -131,8 +125,7 @@ product line in the :guilabel:`Additional Costs` tab.
From the :guilabel:`Landed Cost` form, click the :guilabel:`Transfers` drop-down menu, and select
which transfer the landed cost belongs to.
.. image:: integrating_landed_costs/integrating-landed-costs-transfers-menu.png
:align: center
.. image:: landed_costs/integrating-landed-costs-transfers-menu.png
:alt: Landed cost form with selected receipt transfer.
.. tip::
@@ -171,6 +164,5 @@ To view the valuation of *every* product, including landed costs, navigate to
Click into the journal entry to view the :guilabel:`Journal Items`, and other information about
the entry.
.. image:: integrating_landed_costs/integrating-landed-costs-journal-entry.png
:align: center
.. image:: landed_costs/integrating-landed-costs-journal-entry.png
:alt: Journal Entry form for landed cost created from vendor bill.

View File

@@ -57,7 +57,7 @@ compatible with Odoo:
<https://download4.epson.biz/sec_pubs/pos/reference_en/technology/epson_epos_sdk.html>`_ are
compatible with Odoo **without** needing an :doc:`IoT Box
</applications/general/iot/devices/printer>`.
- Thermal printers using ESC/POS or StarPRNT protocol are compatible **with** an :doc:`IoT Box
- Thermal printers using ESC/POS are compatible **with** an :doc:`IoT Box
</applications/general/iot/devices/printer>`.
- Epson printers using only USB connections are compatible **with** an :doc:`IoT Box
</applications/general/iot/devices/printer>`.

View File

@@ -6,11 +6,9 @@ Connecting a SIX payment terminal allows you to offer a fluid payment flow to yo
ease the work of your cashiers.
.. warning::
- Starting in July 2022, it will **not** be possible anymore to connect and use a Six payment
terminal in PoS.
- Even though Worldline has recently acquired SIX Payment Services and both companies use Yomani
payment terminals, the firmware they run is different. Terminals received from Worldline are
therefore not compatible with this integration.
Even though Worldline has recently acquired SIX Payment Services and both companies use Yomani
payment terminals, the firmware they run is different. Terminals received from Worldline are
therefore not compatible with this integration.
Configuration
=============

View File

@@ -1086,17 +1086,13 @@ Map
.. note::
Accessing relational attributes returns the union of the recordsets.
You should probably always use simple attribute access and only ``mapped``
when you may have multiple records and you want to get a value for each
record in the recordset.
Since V13, multi-relational field access is supported and works like a mapped call:
.. code-block:: python3
records.partner_id # union of partner_id from records
records.mapped('partner_id') # [record['partner_id'] for record in records]
records.partner_id.bank_ids # union of banks of partners of records
records.mapped('partner_id.name') # for each record, get the name of the partner
records.partner_id # == records.mapped('partner_id')
records.partner_id.bank_ids # == records.mapped('partner_id.bank_ids')
records.partner_id.mapped('name') # == records.mapped('partner_id.name')
Sort
~~~~

View File

@@ -10,8 +10,6 @@ Odoo Online version 18.1
- Declare constraints and indexes as model attributes with `#175783 <https://github.com/odoo/odoo/pull/175783>`_.
- The `json` controllers have been renamed to `jsonrpc`. They are called the same, only the
`type` in the python files changed. See `#183636 <https://github.com/odoo/odoo/pull/183636>`_.
- Models' `mapped` function now behaves more like the `map` function: it always returns a
list where each element of the recordset is mapped. See `#185630 <https://github.com/odoo/odoo/pull/185630>`_.
Odoo version 18.0
=================

View File

@@ -2,13 +2,13 @@
Extract API
===========
Odoo provides a service to automate the processing of documents of type **invoices**, **expenses**
or **resumes**.
Odoo provides a service to automate the processing of documents of type **invoices**, **bank statements**,
**expenses** or **resumes**.
The service scans documents using an :abbr:`OCR (Optical Character Recognition)` engine and then
uses :abbr:`AI(Artificial Intelligence)`-based algorithms to extract fields of interest such as the
total, due date, or invoice lines for *invoices*, the total, date for *expenses*,
or the name, email, phone number for *resumes*.
total, due date, or invoice lines for *invoices*, the initial and final balances, the date for
*bank statements*, the total, date for *expenses*, or the name, email, phone number for *resumes*.
This service is a paid service. Each document processing will cost you one credit.
Credits can be bought on `iap.odoo.com <https://iap.odoo.com/iap/in-app-services/259?sortby=date>`_.
@@ -32,7 +32,8 @@ Version
The version of the Extract API is specified in the route.
The latest versions are:
- invoices: 122
- invoices: 123
- bank statements: 100
- expenses: 132
- applicant: 102
@@ -67,6 +68,7 @@ Routes
------
- /api/extract/invoice/2/parse
- /api/extract/bank_statement/1/parse
- /api/extract/expense/2/parse
- /api/extract/applicant/2/parse
@@ -213,6 +215,7 @@ Routes
------
- /api/extract/invoice/2/get_result
- /api/extract/bank_statement/1/get_result
- /api/extract/expense/2/get_result
- /api/extract/applicant/2/get_result
@@ -382,7 +385,7 @@ Invoices are complex and can have a lot of different fields. The following table
list of all the fields we can extract from an invoice.
+-------------------------+------------------------------------------------------------------------+
| Feature name | Specifities |
| Feature name | Specificities |
+=========================+========================================================================+
| ``SWIFT_code`` | ``content`` is a dictionary encoded as a string. |
| | |
@@ -453,31 +456,56 @@ list of all the fields we can extract from an invoice.
+-------------------------+------------------------------------------------------------------------+
``feature_result`` for the ``invoice_lines`` feature
****************************************************
``invoice_lines`` feature
*************************
It follows a more specific structure. It is basically a list of dictionaries where each dictionary
represents an invoice line. Each value follows a
:ref:`latestextract_api/get_result/feature_result` structure.
It is returned as a list of dictionaries where each dictionary represents an invoice line.
.. code-block:: js
"invoice_lines": [
{
"description": feature_result,
"discount": feature_result,
"product": feature_result,
"quantity": feature_result,
"subtotal": feature_result,
"total": feature_result,
"taxes": feature_result,
"total": feature_result,
"unit": feature_result,
"unit_price": feature_result
"description": string,
"quantity": float,
"subtotal": float,
"total": float,
"taxes": list[float],
"total": float,
"unit_price": float
},
...
]
Bank statements
~~~~~~~~~~~~~~~
The following table gives a list of all the fields that are extracted from bank statements.
+-------------------------+------------------------------------------------------------------------+
| Feature name | Specificities |
+=========================+========================================================================+
| ``balance_start`` | ``content`` is a float |
+-------------------------+------------------------------------------------------------------------+
| ``balance_end`` | ``content`` is a float |
+-------------------------+------------------------------------------------------------------------+
| ``date`` | ``content`` is a string |
+-------------------------+------------------------------------------------------------------------+
``bank_statement_lines`` feature
********************************
It is returned as a list of dictionaries where each dictionary represents a bank statement line.
.. code-block:: js
"bank_statement_lines": [
{
"amount": float,
"description": string,
"date": string,
},
...
]
Expense
~~~~~~~
@@ -486,7 +514,7 @@ The expenses are less complex than invoices. The following table gives an exhaus
fields we can extract from an expense report.
+-------------------------+------------------------------------------------------------------------+
| Feature name | Specifities |
| Feature name | Specificities |
+=========================+========================================================================+
| ``description`` | ``content`` is a string |
+-------------------------+------------------------------------------------------------------------+
@@ -506,7 +534,7 @@ This third type of document is meant for processing resumes. The following table
list of all the fields we can extract from a resume.
+-------------------------+------------------------------------------------------------------------+
| Feature name | Specifities |
| Feature name | Specificities |
+=========================+========================================================================+
| ``name`` | ``content`` is a string |
+-------------------------+------------------------------------------------------------------------+

View File

@@ -1202,6 +1202,8 @@ Many2many (`many2many`)
Many2many Binary File (`many2many_binary`)
This widget helps the user to upload or delete one or more files at the same time.
An image preview is available for files with the MIME type "image".
Note that this widget is specific to the model `ir.attachment`.
- Supported field types: `many2many`
@@ -1212,6 +1214,8 @@ Many2many Binary File (`many2many_binary`)
(cf: ``accept`` attribute on `<input type="file" />`)
- `reverse_order`: set to `true` to add new files at the top of the list (default: `false`, new files are added at the bottom).
Many2many Tags (`many2many_tags`)
Display a `many2many` field as a list of tags.

View File

@@ -57,7 +57,7 @@ Basic Report
.. note::
**Goal**: at the end of this section, we will can print a report that displays all offers for a
**Goal**: at the end of this section, we will be able to print a report that displays all offers for a
property.
.. image:: pdf_reports/simple_report.png
@@ -124,7 +124,7 @@ our minimal property offers template file:
</tr>
</thead>
<tbody>
<t t-set="offers" t-value="property.offer_ids"/>
<t t-set="offers" t-value="property.mapped('offer_ids')"/>
<tr t-foreach="offers" t-as="offer">
<td>
<span t-field="offer.price"/>

View File

@@ -34,6 +34,7 @@ applications/hr/appraisals/reporting.rst applications/hr/appraisals/appraisal_an
# applications/inventory_and_mrp
applications/inventory_and_mrp/inventory/product_management/product_tracking/type.rst applications/inventory_and_mrp/inventory/product_management/configure/type.rst # product_tracking/type --> configure/type
applications/inventory_and_mrp/inventory/product_management/inventory_valuation/integrating_landed_costs.rst applications/inventory_and_mrp/inventory/product_management/inventory_valuation/landed_costs.rst # integrating_landed_costs --> landed costs
applications/inventory_and_mrp/inventory/warehouses_storage/advanced_operations_warehouse/batch_transfer.rst applications/inventory_and_mrp/inventory/shipping_receiving/picking_methods/batch.rst # advanced_operations_warehouse/batch_transfer --> shipping_receiving/picking_methods/batch
applications/inventory_and_mrp/inventory/warehouses_storage/advanced_operations_warehouse/storage_category.rst applications/inventory_and_mrp/inventory/shipping_receiving/daily_operations/storage_category.rst # advanced_operations_warehouse/storage_category --> shipping_receiving/daily_operations/storage_category
applications/inventory_and_mrp/inventory/warehouses_storage/advanced_operations_warehouse/removal.rst applications/inventory_and_mrp/inventory/warehouses_storage/removal_strategies.rst # advanced_operations_warehouse/removal --> warehouses_storage/removal_strategies