===============
Base report csv
===============

.. 
   !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
   !! This file is generated by oca-gen-addon-readme !!
   !! changes will be overwritten.                   !!
   !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
   !! source digest: sha256:380b9dc8c98a77b37a8e5e5846b3ddc471dcbf470c9805cc5f9a04f2e4913f12
   !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

.. |badge1| image:: https://img.shields.io/badge/maturity-Production%2FStable-green.png
    :target: https://odoo-community.org/page/development-status
    :alt: Production/Stable
.. |badge2| image:: https://img.shields.io/badge/licence-AGPL--3-blue.png
    :target: http://www.gnu.org/licenses/agpl-3.0-standalone.html
    :alt: License: AGPL-3
.. |badge3| image:: https://img.shields.io/badge/github-OCA%2Freporting--engine-lightgray.png?logo=github
    :target: https://github.com/OCA/reporting-engine/tree/18.0/report_csv
    :alt: OCA/reporting-engine
.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png
    :target: https://translation.odoo-community.org/projects/reporting-engine-18-0/reporting-engine-18-0-report_csv
    :alt: Translate me on Weblate
.. |badge5| image:: https://img.shields.io/badge/runboat-Try%20me-875A7B.png
    :target: https://runboat.odoo-community.org/builds?repo=OCA/reporting-engine&target_branch=18.0
    :alt: Try me on Runboat

|badge1| |badge2| |badge3| |badge4| |badge5|

This module provides a basic report class to generate csv report.

**Table of contents**

.. contents::
   :local:

Configuration
=============

In case the exported CSV report should be encoded in another system than
UTF-8, following fields of the report record (*Settings > Technical >
Reports*) should be populated accordingly.

- Encoding: set an encoding system (such as cp932)
- Encode Error Handling: select 'Ignore' or 'Replace' as necessary.

  - 'Ignore': in case of an encoding error, the problematic character
    will be removed from the exported file.
  - 'Replace': in case of an encoding error, the problematic character
    will be replaced with '?' symbol.
  - Leaving the field blank: in case of an encoding error, the report
    generation fails with an error message.

Usage
=====

An example of CSV report for partners on a module called
\`module_name\`:

A python class :

::

   from odoo import models

   class PartnerCSV(models.AbstractModel):
       _name = 'report.report_csv.partner_csv'
       _inherit = 'report.report_csv.abstract'

       def generate_csv_report(self, writer, data, partners):
           writer.writeheader()
           for obj in partners:
               writer.writerow({
                   'name': obj.name,
                   'email': obj.email,
               })

       def csv_report_options(self):
           res = super().csv_report_options()
           res['fieldnames'].append('name')
           res['fieldnames'].append('email')
           res['delimiter'] = ';'
           res['quoting'] = csv.QUOTE_ALL
           return res

A report XML record :

::

   <report
       id="partner_csv"
       model="res.partner"
       string="Print to CSV"
       report_type="csv"
       name="module_name.report_name"
       file="res_partner"
       attachment_use="False"
   />

Update encoding with an appropriate value (e.g. cp932) as necessary.

Bug Tracker
===========

Bugs are tracked on `GitHub Issues <https://github.com/OCA/reporting-engine/issues>`_.
In case of trouble, please check there if your issue has already been reported.
If you spotted it first, help us to smash it by providing a detailed and welcomed
`feedback <https://github.com/OCA/reporting-engine/issues/new?body=module:%20report_csv%0Aversion:%2018.0%0A%0A**Steps%20to%20reproduce**%0A-%20...%0A%0A**Current%20behavior**%0A%0A**Expected%20behavior**>`_.

Do not contact contributors directly about support or help with technical issues.

Credits
=======

Authors
-------

* Creu Blanca

Contributors
------------

- Enric Tobella <etobella@creublanca.es>
- Jaime Arroyo <jaime.arroyo@creublanca.es>
- Rattapong Chokmasermkul <rattapongc@ecosoft.co.th>
- `Quartile <https://www.quartile.co>`__:

  - Aung Ko Ko Lin

Maintainers
-----------

This module is maintained by the OCA.

.. image:: https://odoo-community.org/logo.png
   :alt: Odoo Community Association
   :target: https://odoo-community.org

OCA, or the Odoo Community Association, is a nonprofit organization whose
mission is to support the collaborative development of Odoo features and
promote its widespread use.

This module is part of the `OCA/reporting-engine <https://github.com/OCA/reporting-engine/tree/18.0/report_csv>`_ project on GitHub.

You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.
