diff --git a/customer_outstanding_statement/README.rst b/customer_outstanding_statement/README.rst
index 4455e4bf..efaf4548 100644
--- a/customer_outstanding_statement/README.rst
+++ b/customer_outstanding_statement/README.rst
@@ -2,16 +2,16 @@
:target: http://www.gnu.org/licenses/agpl-3.0-standalone.html
:alt: License: AGPL-3
-====================================
-Print Customer Outstanding Statement
-====================================
+===================================
+Print Partner Outstanding Statement
+===================================
-The outstanding statement provides details of all outstanding customer receivables
+The outstanding statement provides details of all outstanding partner receivables or payables
up to a particular date. This includes all unpaid invoices, unclaimed refunds and
outstanding payments. The list is displayed in chronological order and is split by currencies.
Aging details can be shown in the report, expressed in aging buckets (30 days
-due, ...), so the customer can review how much is open, due or overdue.
+due, ...), so the customer or vendor can review how much is open, due or overdue.
Configuration
=============
@@ -26,9 +26,9 @@ Usage
To use this module, you need to:
-#. Go to Customers and select one or more
-#. Press 'Action > Customer Outstanding Statement'
-#. Indicate if you want to display aging buckets
+#. Go to Customers or Vendors and select one or more
+#. Press 'Action > Partner Outstanding Statement'
+#. Indicate if you want to display receivables or payables, and if you want to display aging buckets
.. image:: https://odoo-community.org/website/image/ir.attachment/5784_f2813bd/datas
diff --git a/customer_outstanding_statement/__manifest__.py b/customer_outstanding_statement/__manifest__.py
index b5e5fdf5..5703d5b2 100644
--- a/customer_outstanding_statement/__manifest__.py
+++ b/customer_outstanding_statement/__manifest__.py
@@ -4,8 +4,8 @@
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html).
{
- 'name': 'Customer Outstanding Statement',
- 'version': '10.0.1.1.0',
+ 'name': 'Partner Outstanding Statement',
+ 'version': '10.0.2.0.0',
'category': 'Accounting & Finance',
'summary': 'OCA Financial Reports',
'author': "Eficent, Odoo Community Association (OCA)",
diff --git a/customer_outstanding_statement/report/customer_outstanding_statement.py b/customer_outstanding_statement/report/customer_outstanding_statement.py
index 1caae334..6343a6ac 100644
--- a/customer_outstanding_statement/report/customer_outstanding_statement.py
+++ b/customer_outstanding_statement/report/customer_outstanding_statement.py
@@ -47,7 +47,7 @@ class CustomerOutstandingStatement(models.AbstractModel):
""" % (self._get_reconcile_date(), date_end,
self._get_reconcile_date(), date_end)
- def _display_lines_sql_q1(self, partners, date_end):
+ def _display_lines_sql_q1(self, partners, date_end, account_type):
return """
SELECT m.name as move_id, l.partner_id, l.date, l.name,
l.ref, l.blocked, l.currency_id, l.company_id,
@@ -87,14 +87,14 @@ class CustomerOutstandingStatement(models.AbstractModel):
ON pr.debit_move_id = l2.id
WHERE l2.date <= '%s'
) as pc ON pc.credit_move_id = l.id
- WHERE l.partner_id IN (%s) AND at.type = 'receivable'
+ WHERE l.partner_id IN (%s) AND at.type = '%s'
AND (Q0.reconciled_date is null or
Q0.reconciled_date > '%s')
AND l.date <= '%s'
GROUP BY l.partner_id, m.name, l.date, l.date_maturity, l.name,
l.ref, l.blocked, l.currency_id,
l.balance, l.amount_currency, l.company_id
- """ % (date_end, date_end, partners, date_end, date_end)
+ """ % (date_end, date_end, partners, account_type, date_end, date_end)
def _display_lines_sql_q2(self):
return """
@@ -117,7 +117,8 @@ class CustomerOutstandingStatement(models.AbstractModel):
WHERE c.id = %s
""" % company_id
- def _get_account_display_lines(self, company_id, partner_ids, date_end):
+ def _get_account_display_lines(self, company_id, partner_ids, date_end,
+ account_type):
res = dict(map(lambda x: (x, []), partner_ids))
partners = ', '.join([str(i) for i in partner_ids])
date_end = datetime.strptime(
@@ -130,7 +131,7 @@ class CustomerOutstandingStatement(models.AbstractModel):
FROM Q3
ORDER BY date, date_maturity, move_id""" % (
self._display_lines_sql_q0(date_end),
- self._display_lines_sql_q1(partners, date_end),
+ self._display_lines_sql_q1(partners, date_end, account_type),
self._display_lines_sql_q2(),
self._display_lines_sql_q3(company_id)))
for row in self.env.cr.dictfetchall():
@@ -194,7 +195,7 @@ class CustomerOutstandingStatement(models.AbstractModel):
""" % (self._get_reconcile_date(), date_end,
self._get_reconcile_date(), date_end)
- def _show_buckets_sql_q1(self, partners, date_end):
+ def _show_buckets_sql_q1(self, partners, date_end, account_type):
return """
SELECT l.partner_id, l.currency_id, l.company_id, l.move_id,
CASE WHEN l.balance > 0.0
@@ -225,14 +226,14 @@ class CustomerOutstandingStatement(models.AbstractModel):
ON pr.debit_move_id = l2.id
WHERE l2.date <= '%s'
) as pc ON pc.credit_move_id = l.id
- WHERE l.partner_id IN (%s) AND at.type = 'receivable'
+ WHERE l.partner_id IN (%s) AND at.type = '%s'
AND (Q0.reconciled_date is null or
Q0.reconciled_date > '%s')
AND l.date <= '%s' AND not l.blocked
GROUP BY l.partner_id, l.currency_id, l.date, l.date_maturity,
l.amount_currency, l.balance, l.move_id,
l.company_id
- """ % (date_end, date_end, partners, date_end, date_end)
+ """ % (date_end, date_end, partners, account_type, date_end, date_end)
def _show_buckets_sql_q2(self, date_end, minus_30, minus_60, minus_90,
minus_120):
@@ -324,7 +325,8 @@ class CustomerOutstandingStatement(models.AbstractModel):
'minus_120': date_end - timedelta(days=120),
}
- def _get_account_show_buckets(self, company_id, partner_ids, date_end):
+ def _get_account_show_buckets(self, company_id, partner_ids, date_end,
+ account_type):
res = dict(map(lambda x: (x, []), partner_ids))
partners = ', '.join([str(i) for i in partner_ids])
date_end = datetime.strptime(
@@ -341,7 +343,7 @@ class CustomerOutstandingStatement(models.AbstractModel):
GROUP BY partner_id, currency_id, current, b_1_30, b_30_60, b_60_90,
b_90_120, b_over_120""" % (
self._show_buckets_sql_q0(date_end),
- self._show_buckets_sql_q1(partners, date_end),
+ self._show_buckets_sql_q1(partners, date_end, account_type),
self._show_buckets_sql_q2(
full_dates['date_end'],
full_dates['minus_30'],
@@ -359,6 +361,7 @@ class CustomerOutstandingStatement(models.AbstractModel):
company_id = data['company_id']
partner_ids = data['partner_ids']
date_end = data['date_end']
+ account_type = data['account_type']
today = fields.Date.today()
buckets_to_display = {}
@@ -367,7 +370,7 @@ class CustomerOutstandingStatement(models.AbstractModel):
today_display, date_end_display = {}, {}
lines = self._get_account_display_lines(
- company_id, partner_ids, date_end)
+ company_id, partner_ids, date_end, account_type)
for partner_id in partner_ids:
lines_to_display[partner_id], amount_due[partner_id] = {}, {}
@@ -393,7 +396,7 @@ class CustomerOutstandingStatement(models.AbstractModel):
if data['show_aging_buckets']:
buckets = self._get_account_show_buckets(
- company_id, partner_ids, date_end)
+ company_id, partner_ids, date_end, account_type)
for partner_id in partner_ids:
buckets_to_display[partner_id] = {}
for line in buckets[partner_id]:
@@ -415,6 +418,7 @@ class CustomerOutstandingStatement(models.AbstractModel):
'Filter_non_due_partners': data['filter_non_due_partners'],
'Date_end': date_end_display,
'Date': today_display,
+ 'account_type': account_type,
}
return self.env['report'].render(
'customer_outstanding_statement.statement', values=docargs)
diff --git a/customer_outstanding_statement/static/description/index.html b/customer_outstanding_statement/static/description/index.html
index 9c3d2c94..b0792a47 100644
--- a/customer_outstanding_statement/static/description/index.html
+++ b/customer_outstanding_statement/static/description/index.html
@@ -1,7 +1,7 @@
Customer Outstanding Statement
+ Partner Outstanding Statement
Aging details can be shown in the report, expressed in aging buckets (30 days
-due, ...), so the customer can review how much is open, due or overdue.
To use this module, you need to:
Customers
and select one or moreAction > Customer Outstanding Statement
'Customers
or Vendors
and select one or moreAction > Partner Outstanding Statement
'- Outstanding Statement at in : +
++ Customer Outstanding Statement at in : ++
+++ Supplier Outstanding Statement at in :