2
2
Reconciliation models
3
3
=====================
4
4
5
- Reconciliation models are used to automate the :doc: `bank reconciliation <reconciliation >` process,
6
- which is especially handy when dealing with recurring entries like bank fees. Reconciliation models
7
- can also be helpful in handling :doc: `cash discounts <../customer_invoices/cash_discounts >`.
8
-
9
- Each model is created based on a :ref: `model type <models/type >` and :guilabel: `bank transaction
10
- conditions `.
5
+ Reconciliation models are custom rules that complement the :ref: `default set of matching rules
6
+ <accounting/reconciliation/reconcile>` and enable more advanced automation of the :doc: `bank
7
+ reconciliation <reconciliation>` process. These models are especially useful when dealing with
8
+ recurring flows like writing off bank fees or :doc: `cash discounts
9
+ <../customer_invoices/cash_discounts>`.
11
10
12
11
.. seealso ::
13
- - :doc: `bank_synchronization `
14
- - `Odoo Tutorials: Reconciliation models <https://www.odoo.com/slides/slide/reconciliation-models-6858 >`_
15
-
16
- .. _models/type :
17
-
18
- Reconciliation model types
19
- ==========================
20
-
21
- To access reconciliation models, go to the :guilabel: `Accounting Dashboard `, click on the
22
- :icon: `fa-ellipsis-v ` :guilabel: `(vertical ellipsis) ` menu on the bank journal and select
23
- :guilabel: `Models ` under the :guilabel: `Reconciliation ` section. For each reconciliation model, a
24
- :guilabel: `Type ` must be set. Three types of models exist:
25
-
26
- - :guilabel: `Button to generate counterpart entry `: a button is created in the resulting entry
27
- section of the bank reconciliation view. If clicked, this button generates a counterpart entry to
28
- reconcile with the active transaction based on the rules set in the model. The rules specified in
29
- the model determine the counterpart entry's account(s), amount(s), label(s), and analytic
30
- distribution;
31
- - :guilabel: `Rule to suggest counterpart entry `: used for recurring transactions to match the
32
- transaction to a new entry based on conditions that must match the information on the transaction;
33
- - :guilabel: `Rule to match invoices/bills `: used for recurring transactions to match the transaction
34
- to existing invoices, bills, or payments based on conditions that must match the information on
35
- the transaction.
12
+ `Odoo Tutorials: Reconciliation models <https://www.odoo.com/slides/slide/reconciliation-models-6858 >`_
36
13
37
- Default reconciliation models
38
- =============================
14
+ .. _accounting/rec-models/config :
15
+
16
+ Configuration
17
+ =============
18
+
19
+ To access reconciliation models, go to the :guilabel: `Accounting Dashboard `, click the
20
+ :icon: `fa-ellipsis-v ` :guilabel: `(dropdown menu) ` menu on the bank journal, and select
21
+ :guilabel: `Models ` under the :guilabel: `Reconciliation ` section.
22
+
23
+ To create a new reconciliation model, click :guilabel: `New `.
24
+
25
+ Reconciliation models can be either :guilabel: `Manual ` or :guilabel: `Automated `. Manual
26
+ reconciliation models appear as :ref: `possible action buttons
27
+ <accounting/reconciliation/action-buttons>` when :doc: `reconciling <reconciliation >`. Automatic
28
+ reconciliation models apply automatically to transactions that meet the reconciliation model's
29
+ :ref: `matching conditions <accounting/rec-models/conditions >`.
30
+
31
+ Each reconciliation model is configured with :ref: `matching conditions
32
+ <accounting/rec-models/conditions>` to identify the relevant bank transactions and :ref: `Counterpart
33
+ Items <accounting/rec-models/counterpart>` to be generated during reconciliation.
39
34
40
- In Odoo, different models are available by default depending on the company's fiscal localization.
41
- These can be updated if needed. Users can also create their own reconciliation models by clicking
42
- :guilabel: `New ` .
35
+ .. tip ::
36
+ To create an activity on the transaction, select which type of activity to create in the
37
+ :guilabel: `Next Activity ` field .
43
38
44
39
.. important ::
45
40
If a record matches with several reconciliation models, the first one in the *sequence * of models
46
- is applied. You can rearrange the order by dragging and dropping the handle next to the name.
41
+ is applied. Rearrange the order by dragging and dropping the handle next to the name.
47
42
48
43
.. image :: reconciliation_models/list-view.png
49
44
:alt: Rearrange the sequence of models in the list view.
50
45
51
- Invoices/Bills perfect match
52
- ----------------------------
46
+ .. _accounting/rec-models/conditions :
47
+
48
+ Matching conditions
49
+ -------------------
50
+
51
+ A reconciliation model's matching conditions determine to which transactions it applies.
52
+
53
+ The following fields can be used to restrict the reconciliation model's availability to transactions
54
+ that meet the conditions:
55
+
56
+ - :guilabel: `Journals `
57
+ - :guilabel: `Partners `
58
+ - :guilabel: `Amount `: Select :guilabel: `Is lower than or equal to `, :guilabel: `Is greater than or
59
+ equal to `, or :guilabel: `Is between ` and enter the amount(s).
60
+ - :guilabel: `Label `: Select :guilabel: `Contains `, :guilabel: `Not Contains `, or :guilabel: `Match
61
+ Regex ` and enter the transaction label's matching condition.
62
+
63
+ .. tip ::
64
+ `Regular expressions <https://regexone.com/ >`_, often abbreviated as **regex **, can be used in
65
+ Odoo in various ways to search, validate, and manipulate data. Regex can be powerful but also
66
+ complex, so it's essential to use it judiciously.
67
+
68
+ To use regular expressions in a reconciliation model, set the :guilabel: `Label ` to
69
+ :guilabel: `Match Regex ` and add an expression. Odoo automatically retrieves the transactions
70
+ that match the regex expression and the conditions specified in the reconciliation model.
53
71
54
- This model should be at the top of the *sequence * of models, as it enables Odoo to suggest matching
55
- existing invoices or bills with a bank transaction based on set conditions.
72
+ .. note ::
73
+ A transaction must meet all conditions for the reconciliation model to be available for it. If no
74
+ condition is defined (i.e., if all fields are left blank), the reconciliation model will be
75
+ available for all transactions.
56
76
57
- .. image :: reconciliation_models/invoices-bills-perfect-match.png
58
- :alt: Set rules to trigger the reconciliation.
77
+ .. _accounting/rec-models/counterpart :
59
78
60
- Odoo automatically reconciles the payment when the :guilabel: `Auto-validate ` option is selected, and
61
- the model conditions are perfectly met. In this case, it expects to find on the bank statement's
62
- line the invoice/payment's reference (as :guilabel: `Label ` is selected) and the partner's name
63
- (as :guilabel: `Partner is set ` is selected) to suggest the correct counterpart entry and reconcile
64
- the payment automatically.
79
+ Counterpart items
80
+ -----------------
65
81
66
- Invoices/Bills partial match if underpaid
67
- -----------------------------------------
82
+ Each line in the :guilabel: ` Counterpart items ` tab creates a journal item with the specified
83
+ details:
68
84
69
- This model suggests a customer invoice or vendor bill that partially matches the payment when the
70
- amount received is slightly lower than the invoice amount, for example in the case of
71
- **cash discounts **. The difference is reconciled with the account indicated in the
72
- :guilabel: `counterpart entries ` tab.
85
+ - :guilabel: `Partner `: Select the partner, if any, to set on the journal item.
86
+ - :guilabel: `Account `: Select the account, if any, to set on the journal item.
87
+ - :guilabel: `Amount Type `: Select how the amount of the journal item should be calculated:
73
88
74
- The reconciliation model :guilabel: `Type ` is :guilabel: `Rule to match invoices/bills `, and the
75
- :guilabel: `Payment tolerance ` should be set.
89
+ - :guilabel: `Fixed `: Use a fixed amount.
90
+ - :guilabel: `Percentage of balance `: Use a percentage of the remaining balance of the
91
+ transaction, regardless of the transaction total.
92
+ - :guilabel: `Percentage of statement line `: Use a percentage of the transaction total, regardless
93
+ of the remaining balance of the transaction.
94
+ - :guilabel: `From label `: Use a percentage from the transaction's label using regex.
76
95
77
- .. image :: reconciliation_models/partial-match.png
78
- :alt: Set rules to trigger the reconciliation.
96
+ - :guilabel: `Amount `: Enter the amount to be used on the journal item. This field will be either a
97
+ fixed amount, percentage amount, or regex depending on the :guilabel: `Account Type `.
98
+ - :guilabel: `Taxes `: Select a tax, if any, to set on the journal item. This field is hidden behind
99
+ the :icon: `oi-settings-adjust ` :guilabel: `(settings adjust) ` icon by default.
100
+ - :guilabel: `Analytic `: Select an analytic distribution, if any, to set on the journal item.
101
+ - :guilabel: `Label `: Enter a label, if any, to set on the journal item.
79
102
80
103
.. note ::
81
- The :guilabel: `Payment tolerance ` is only applicable to lower payments. It is disregarded when an
82
- overpayment is received.
104
+ - While neither the :guilabel: `Partner ` nor :guilabel: `Account ` fields are mandatory, at least
105
+ one of the two must be set for the reconciliation model to work correctly.
106
+ - The reconciliation model can be used for :ref: `partner mapping <accounting/rec-models/partner >`
107
+ if the :guilabel: `Counterpart Items ` include a :guilabel: `Partner ` but no :guilabel: `Account `.
108
+
109
+ .. _accounting/rec-models/defaults :
110
+
111
+ Default reconciliation models
112
+ =============================
113
+
114
+ In Odoo, different models are available by default depending on the company's :doc: `fiscal
115
+ localization <../../fiscal_localizations>`. These can be updated if needed. The following
116
+ reconciliation models exist across most fiscal localizations.
117
+
118
+ Internal Transfers
119
+ ------------------
120
+
121
+ The :guilabel: `Internal Transfers ` reconciliation model is used for making :doc: `internal transfers
122
+ <internal_transfers>` from one bank or cash account to another by moving the entire transaction's
123
+ balance to a liquidity or internal transfer account. To fully transfer the amount from one account
124
+ to another, this reconciliation model must be used on both the incoming journal's transaction and
125
+ the outgoing journal's transaction.
83
126
84
127
.. seealso ::
85
- :doc: `../customer_invoices/cash_discounts `
128
+ :doc: `internal_transfers `
86
129
87
- Line with bank fees
88
- -------------------
130
+ Bank Fees
131
+ ---------
89
132
90
- This model suggests a counterpart entry according to the rules set in the model. In this case, the
91
- reconciliation model :guilabel: `Type ` is :guilabel: `Rule to suggest counterpart entry `, and the
92
- :guilabel: `Label ` can be used for example, to identify the information referring to the
93
- :guilabel: `Bank fees ` in the label of the transaction.
133
+ The :guilabel: `Bank Fees ` reconciliation model generates a counterpart item that moves the remaining
134
+ balance of a transaction to a bank fees account (that varies by :doc: `fiscal localization
135
+ <../../fiscal_localizations>`) and includes "Bank Fees" in the :guilabel: `Label ` of the new item
136
+ that it creates. This reconciliation model is only applicable to transactions whose label contains
137
+ "Bank Fees" due to its :ref: `matching conditions <accounting/rec-models/conditions >`.
94
138
95
- .. image :: reconciliation_models/bank-fees.png
96
- :alt: Set rules to trigger the reconciliation.
139
+ .. example ::
140
+ An outgoing bank transaction for $103 is partially matched with a vendor bill for $100, leaving
141
+ $3 of the transaction still unreconciled. Use the :guilabel: `Bank Fees ` reconciliation model to
142
+ create a new counterpart item for $3 and reconcile it with the remaining $3 of the bank
143
+ transaction.
97
144
98
- .. note ::
99
- `Regular expressions <https://regexone.com/ >`_, often abbreviated as **Regex **, can be used in
100
- Odoo in various ways to search, validate, and manipulate data within the system. Regex can be
101
- powerful but also complex, so it's essential to use it judiciously and with a good understanding
102
- of the patterns you're working with.
145
+ Cash Discount
146
+ -------------
103
147
104
- To use regular expressions in your reconciliation models, set the :guilabel: `Transaction Type `
105
- to :guilabel: `Match Regex ` and add your expression. Odoo automatically retrieves the
106
- transactions that match your Regex expression and the conditions specified in your model.
148
+ The :guilabel: `Cash Discount ` reconciliation model generates a counterpart item that moves the
149
+ remaining balance of a transaction to a cash discount account (that varies by :doc: `fiscal
150
+ localization <../../fiscal_localizations>`) and includes "Cash Discount" in the :guilabel: `Label ` of
151
+ the new item that it creates.
107
152
108
- .. image :: reconciliation_models/regex.png
109
- :alt: Using Regex in Odoo
153
+ .. seealso ::
154
+ :doc: `../customer_invoices/cash_discounts `
155
+
156
+ .. _accounting/rec-models/partner :
110
157
111
158
Partner mapping
112
159
===============
@@ -117,8 +164,8 @@ reconciliation. For example, you can create a partner mapping rule for incoming
117
164
specific reference numbers or keywords in the transaction description. When an incoming payment
118
165
meets these criteria, Odoo automatically maps it to the corresponding customer's account.
119
166
120
- To create a partner mapping rule, go to the :guilabel: ` Partner Mapping ` tab and enter the
121
- :guilabel: ` Find Text in Label `, :guilabel: ` Find Text in Notes ` , and :guilabel: ` Partner `.
122
-
123
- .. image :: reconciliation_models/partner-mapping.png
124
- :alt: defining partner mapping
167
+ To create a partner mapping rule, configure any :ref: ` matching conditions
168
+ <accounting/rec-models/conditions>`, such as a specific transaction label , and then configure the
169
+ :guilabel: ` Partner ` and any other relevant fields in the :ref: ` Counterpart Items
170
+ <accounting/rec-models/counterpart>` tab. Setting an :guilabel: ` Account ` is not mandatory for
171
+ partner mapping.
0 commit comments