Compare commits
9 Commits
master-map
...
master-doc
| Author | SHA1 | Message | Date | |
|---|---|---|---|---|
|
|
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. |
||
|
|
07122aa8a8 |
[IMP] inventory: landed cost conditions
closes odoo/documentation#11395
X-original-commit:
|
||
|
|
9490048209 |
[IMP] pos: remove warning "july 22" in six
task-4337378
closes odoo/documentation#11401
X-original-commit:
|
||
|
|
c31d61cb5b |
[IMP] POS: remove star printer reference
closes odoo/documentation#11383
X-original-commit:
|
||
|
|
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:
|
||
|
|
0292755fe1 |
[IMP] accounting: adding info about group payments
task-3518648
closes odoo/documentation#11358
X-original-commit:
|
||
|
|
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:
|
||
|
|
71b426177a |
[IMP] payment_providers/paypal: new PayPal version
task-3355211
closes odoo/documentation#11388
X-original-commit:
|
||
|
|
b29eae5102 |
[FIX] accounting: fix broken OCR tutorial link
closes odoo/documentation#11371
X-original-commit:
|
|
|
@@ -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:
|
||||
|
|
|
|||
|
|
@@ -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:
|
||||
|
|
|
|||
|
After Width: | Height: | Size: 14 KiB |
|
Before Width: | Height: | Size: 4.1 KiB |
|
|
@@ -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:
|
||||
|
||||
|
|
|
|||
|
|
@@ -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.
|
||||
|
|
|
|||
|
|
@@ -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
|
||||
=============
|
||||
|
|
|
|||
|
|
@@ -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,
|
||||
|
|
|
|||
|
|
@@ -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
|
||||
|
|
|
|||
|
|
@@ -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`
|
||||
|
|
|
|||
|
|
@@ -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
|
||||
|
||||
|
|
|
|||
|
|
@@ -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.
|
||||
|
Before Width: | Height: | Size: 38 KiB After Width: | Height: | Size: 38 KiB |
|
Before Width: | Height: | Size: 33 KiB After Width: | Height: | Size: 33 KiB |
|
Before Width: | Height: | Size: 32 KiB After Width: | Height: | Size: 32 KiB |
|
Before Width: | Height: | Size: 74 KiB After Width: | Height: | Size: 74 KiB |
|
Before Width: | Height: | Size: 61 KiB After Width: | Height: | Size: 61 KiB |
|
Before Width: | Height: | Size: 70 KiB After Width: | Height: | Size: 70 KiB |
|
Before Width: | Height: | Size: 13 KiB After Width: | Height: | Size: 13 KiB |
|
Before Width: | Height: | Size: 17 KiB After Width: | Height: | Size: 17 KiB |
|
Before Width: | Height: | Size: 4.3 KiB After Width: | Height: | Size: 4.3 KiB |
|
Before Width: | Height: | Size: 28 KiB After Width: | Height: | Size: 28 KiB |
|
Before Width: | Height: | Size: 14 KiB After Width: | Height: | Size: 14 KiB |
|
|
@@ -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>`.
|
||||
|
|
|
|||
|
|
@@ -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
|
||||
=============
|
||||
|
|
|
|||
|
|
@@ -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
|
||||
~~~~
|
||||
|
|
|
|||
|
|
@@ -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
|
||||
=================
|
||||
|
|
|
|||
|
|
@@ -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 |
|
||||
+-------------------------+------------------------------------------------------------------------+
|
||||
|
|
|
|||
|
|
@@ -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.
|
||||
|
||||
|
|
|
|||
|
|
@@ -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"/>
|
||||
|
|
|
|||
|
|
@@ -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
|
||||
|
|
|
|||