From 569efa357fd131cb5a24159db15450876d16fe7e Mon Sep 17 00:00:00 2001
From: Marco Folco <marcofolco28@gmail.com>
Date: Thu, 22 Aug 2019 21:05:24 -0300
Subject: [PATCH 1/7] Traducciones

---
 i18n/es_AR.mo | Bin 9843 -> 10406 bytes
 i18n/es_AR.po |  46 +++++++++++++++++++++++-----------------------
 2 files changed, 23 insertions(+), 23 deletions(-)

diff --git a/i18n/es_AR.mo b/i18n/es_AR.mo
index 94ea26e84ebc688f70326286de1090776bd51873..b67e9333a5f402b40f378c5116d8d5caccf0b417 100644
GIT binary patch
delta 4164
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
Mk~O)wx2(zYKe!>*PXGV_

delta 3711
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
SPp3KIp1gyeaMd-lJ^unc3VnnC

diff --git a/i18n/es_AR.po b/i18n/es_AR.po
index dd824ea..c0d062e 100644
--- a/i18n/es_AR.po
+++ b/i18n/es_AR.po
@@ -6,8 +6,8 @@ msgid ""
 msgstr ""
 "Project-Id-Version: Odoo Server 8.0\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2019-08-21 15:30+0000\n"
-"PO-Revision-Date: 2019-08-21 12:46-0300\n"
+"POT-Creation-Date: 2019-08-23 00:00+0000\n"
+"PO-Revision-Date: 2019-08-22 21:03-0300\n"
 "Last-Translator: <>\n"
 "Language-Team: \n"
 "MIME-Version: 1.0\n"
@@ -112,7 +112,7 @@ msgstr "Ciudad"
 #. module: rafalim_cattle_account
 #: field:cattle.account.mapping,clasification_id:0
 msgid "Clasification"
-msgstr "Clasificaciòn"
+msgstr "Clasificación"
 
 #. module: rafalim_cattle_account
 #: field:ranch.expenses.type,code:0
@@ -130,6 +130,7 @@ msgid "Commisions"
 msgstr "Comisiones"
 
 #. module: rafalim_cattle_account
+#: view:ranch.create.adjustement:rafalim_cattle_account.view_ranch_create_adjustement_form
 #: view:ranch.purchase.data.invoice.wizard:rafalim_cattle_account.view_ranch_purchase_data_invoice_wizard
 #: view:ranch.purchase.data.invoice.wizardd:rafalim_cattle_account.view_ranch_purchase_data_invoice_wizardd
 msgid "Create"
@@ -191,6 +192,11 @@ msgstr "Creado por"
 msgid "Created on"
 msgstr "Creado el"
 
+#. module: rafalim_cattle_account
+#: selection:ranch.create.adjustement,voucher_type:0
+msgid "Credit"
+msgstr "Credit"
+
 #. module: rafalim_cattle_account
 #: model:ir.ui.menu,name:rafalim_cattle_account.cross_move_info_report
 msgid "Cross account move lines"
@@ -286,7 +292,7 @@ msgstr "Hilo de Mensajes"
 
 #. module: rafalim_cattle_account
 #: code:addons/rafalim_cattle_account/models/purchase_romaneo.py:36
-#: code:addons/rafalim_cattle_account/wizard/ranch_purchase_data_invoice_wizard.py:401
+#: code:addons/rafalim_cattle_account/wizard/ranch_purchase_data_invoice_wizard.py:402
 #, python-format
 msgid "Error!"
 msgstr "¡Error!"
@@ -342,11 +348,6 @@ msgstr "Líneas definitivas"
 msgid "Fully invoiced"
 msgstr "Totalmente facturado"
 
-#. module: rafalim_cattle_account
-#: field:ranch.purchase.data.invoice.wizard,group:0
-msgid "Group by partner"
-msgstr "Agrupado por partner"
-
 #. module: rafalim_cattle_account
 #: field:account.invoice,guide:0
 msgid "Guide"
@@ -358,7 +359,7 @@ msgid "Head Qty"
 msgstr "Cabezas"
 
 #. module: rafalim_cattle_account
-#: code:addons/rafalim_cattle_account/wizard/ranch_purchase_data_invoice_wizard.py:158
+#: code:addons/rafalim_cattle_account/wizard/ranch_purchase_data_invoice_wizard.py:157
 #, python-format
 msgid "Head Qty must be greater than 0"
 msgstr "Cantidad de cabezas debe ser mayor a 0"
@@ -398,7 +399,7 @@ msgid "Interface missing invoices found"
 msgstr "Facturas faltantes de interfaz encontradas"
 
 #. module: rafalim_cattle_account
-#: code:addons/rafalim_cattle_account/wizard/ranch_purchase_data_invoice_wizard.py:402
+#: code:addons/rafalim_cattle_account/wizard/ranch_purchase_data_invoice_wizard.py:403
 #, python-format
 msgid "Invalid invoiced kilos.Please complete the lines with the correct kilos"
 msgstr "Kilos facturados inválidos. Por favor complete las líneas con los valores correctos."
@@ -454,7 +455,8 @@ msgid "Invoice Total"
 msgstr "Total facturado"
 
 #. module: rafalim_cattle_account
-#: code:addons/rafalim_cattle_account/wizard/ranch_purchase_data_invoice_wizard.py:207
+#: code:addons/rafalim_cattle_account/wizard/ranch_create_adjustement.py:255
+#: code:addons/rafalim_cattle_account/wizard/ranch_purchase_data_invoice_wizard.py:206
 #: code:addons/rafalim_cattle_account/wizard/ranch_purchase_data_invoice_wizardd.py:162
 #, python-format
 msgid "Invoice created"
@@ -552,11 +554,6 @@ msgstr "Última modificación el"
 msgid "Limit Date"
 msgstr "Fecha Límite"
 
-#. module: rafalim_cattle_account
-#: view:cross.move.info.result.wizard:rafalim_cattle_account.view_cross_info_result_wizard
-msgid "Load results"
-msgstr "Resultados de carga"
-
 #. module: rafalim_cattle_account
 #: field:cattle.account.mapping,mapping_type:0
 msgid "Mapping type"
@@ -584,20 +581,20 @@ msgid "Move info crossing results"
 msgstr "Resultados del cruce de asientos contables"
 
 #. module: rafalim_cattle_account
-#: code:addons/rafalim_cattle_account/wizard/cross_info.py:181
+#: code:addons/rafalim_cattle_account/wizard/cross_info.py:169
 #, python-format
 msgid "Move lines info crossing result"
 msgstr "Resultados del cruce de asientos contables"
 
 #. module: rafalim_cattle_account
-#: code:addons/rafalim_cattle_account/wizard/ranch_purchase_data_invoice_wizard.py:502
+#: code:addons/rafalim_cattle_account/wizard/ranch_purchase_data_invoice_wizard.py:503
 #: code:addons/rafalim_cattle_account/wizard/ranch_purchase_data_invoice_wizardd.py:580
 #, python-format
 msgid "New invoice created"
 msgstr "Nueva factura creada"
 
 #. module: rafalim_cattle_account
-#: code:addons/rafalim_cattle_account/wizard/ranch_purchase_data_invoice_wizard.py:191
+#: code:addons/rafalim_cattle_account/wizard/ranch_purchase_data_invoice_wizard.py:190
 #: code:addons/rafalim_cattle_account/wizard/ranch_purchase_data_invoice_wizardd.py:153
 #, python-format
 msgid "No invoice created!"
@@ -671,6 +668,7 @@ msgstr "Planilla de Compra"
 
 #. module: rafalim_cattle_account
 #: help:purchase.data.final_line.line_invoice.line,head_qty:0
+#: help:ranch.final.line.adjustement,head_qty:0
 msgid "Qty of heads"
 msgstr "Cantidad de Cabezas"
 
@@ -823,14 +821,14 @@ msgstr ""
 "Facturas: %s"
 
 #. module: rafalim_cattle_account
-#: code:addons/rafalim_cattle_account/wizard/ranch_purchase_data_invoice_wizard.py:96
+#: code:addons/rafalim_cattle_account/wizard/ranch_purchase_data_invoice_wizard.py:95
 #: code:addons/rafalim_cattle_account/wizard/ranch_purchase_data_invoice_wizardd.py:81
 #, python-format
 msgid "There is not lines to invoice!"
 msgstr "No hay líneas para facturar!"
 
 #. module: rafalim_cattle_account
-#: code:addons/rafalim_cattle_account/models/purchase_data.py:70
+#: code:addons/rafalim_cattle_account/models/purchase_data.py:91
 #, python-format
 msgid "There is nothing to show here :)"
 msgstr "No hay facturas que mostrar"
@@ -856,12 +854,14 @@ msgid "Total Kilos"
 msgstr "Total de Kilos"
 
 #. module: rafalim_cattle_account
+#: view:ranch.create.adjustement:rafalim_cattle_account.view_ranch_create_adjustement_form
 #: view:ranch.purchase.data.invoice.wizard:rafalim_cattle_account.view_ranch_purchase_data_invoice_wizard
 msgid "Total Price"
 msgstr "Precio total"
 
 #. module: rafalim_cattle_account
 #: field:purchase.data.final_line.line_invoice.line,price_unit:0
+#: field:ranch.final.line.adjustement,price_unit:0
 msgid "Unit Price"
 msgstr "Precio unitario"
 
@@ -882,7 +882,7 @@ msgid "WSLSP Expenses Codes"
 msgstr "WSLSP Codigos de Gastos"
 
 #. module: rafalim_cattle_account
-#: code:addons/rafalim_cattle_account/models/purchase_data.py:69
+#: code:addons/rafalim_cattle_account/models/purchase_data.py:90
 #, python-format
 msgid "Warning!"
 msgstr "Precaución!"
-- 
GitLab


From 3394e253a622e0d99a1f15351f037391090594d8 Mon Sep 17 00:00:00 2001
From: Marco Folco <marcofolco28@gmail.com>
Date: Wed, 28 Aug 2019 15:10:07 -0300
Subject: [PATCH 2/7] Merge with preprod

---
 i18n/es_AR.mo | Bin 10406 -> 10475 bytes
 i18n/es_AR.po |   9 +++++++--
 2 files changed, 7 insertions(+), 2 deletions(-)

diff --git a/i18n/es_AR.mo b/i18n/es_AR.mo
index b67e9333a5f402b40f378c5116d8d5caccf0b417..eb3d2f210aff696b5bfbe5be8b79a9f9964a42d9 100644
GIT binary patch
delta 3838
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

delta 3758
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

diff --git a/i18n/es_AR.po b/i18n/es_AR.po
index c0d062e..e2c6345 100644
--- a/i18n/es_AR.po
+++ b/i18n/es_AR.po
@@ -7,7 +7,7 @@ msgstr ""
 "Project-Id-Version: Odoo Server 8.0\n"
 "Report-Msgid-Bugs-To: \n"
 "POT-Creation-Date: 2019-08-23 00:00+0000\n"
-"PO-Revision-Date: 2019-08-22 21:03-0300\n"
+"PO-Revision-Date: 2019-08-28 15:00-0300\n"
 "Last-Translator: <>\n"
 "Language-Team: \n"
 "MIME-Version: 1.0\n"
@@ -554,6 +554,11 @@ msgstr "Última modificación el"
 msgid "Limit Date"
 msgstr "Fecha Límite"
 
+#. module: rafalim_cattle_account
+#: view:cross.move.info.result.wizard:rafalim_cattle_account.view_cross_info_result_wizard
+msgid "Load results"
+msgstr "Resultados de carga"
+
 #. module: rafalim_cattle_account
 #: field:cattle.account.mapping,mapping_type:0
 msgid "Mapping type"
@@ -748,7 +753,7 @@ msgstr "Elaboración"
 #. module: rafalim_cattle_account
 #: view:website:rafalim_cattle_account.report_invoice_settlement_header_info_template_document
 msgid "Seller"
-msgstr "Seller"
+msgstr "Vendedor"
 
 #. module: rafalim_cattle_account
 #: view:cross.move.info.wizard:rafalim_cattle_account.view_cross_move_info_wizard
-- 
GitLab


From 206e730f01624dbd2c8dfc24dfdf84b165342d4f Mon Sep 17 00:00:00 2001
From: Marco Folco <marcofolco28@gmail.com>
Date: Wed, 28 Aug 2019 16:12:13 -0300
Subject: [PATCH 3/7] [NEW]Report de planillas de compra sin facturar

Added a report inside Compras-->Hacienda vacuna-->Reportes called "Planillas de compra sin facturar"

RAF-135
---
 __openerp__.py                                |   5 +-
 i18n/es_AR.mo                                 | Bin 10475 -> 10911 bytes
 i18n/es_AR.po                                 |  40 ++-
 report/__init__.py                            |   1 +
 report/cattle_chore_uninvoiced_report_xls.py  | 267 ++++++++++++++++++
 report/ir_actions_report_xml_data.xml         |  17 ++
 views/menu_inheritance.xml                    |  10 +
 wizard/__init__.py                            |   1 +
 wizard/cattle_chore_uninvoiced_xls_wizard.py  |  44 +++
 ...attle_chore_uninvoiced_xls_wizard_view.xml |  33 +++
 10 files changed, 409 insertions(+), 9 deletions(-)
 create mode 100644 report/cattle_chore_uninvoiced_report_xls.py
 create mode 100644 report/ir_actions_report_xml_data.xml
 create mode 100644 views/menu_inheritance.xml
 create mode 100644 wizard/cattle_chore_uninvoiced_xls_wizard.py
 create mode 100644 wizard/cattle_chore_uninvoiced_xls_wizard_view.xml

diff --git a/__openerp__.py b/__openerp__.py
index 3ad594a..79c91d5 100644
--- a/__openerp__.py
+++ b/__openerp__.py
@@ -29,7 +29,7 @@
     "depends": [
         "rafalim_cattle_ranch",
         "account_invoice_merge",
-        "l10n_ar_invoice_registration_date",
+        #"l10n_ar_invoice_registration_date",
     ],
     "data": [
         "views/assets.xml",
@@ -39,9 +39,12 @@
         "wizard/ranch_purchase_data_invoice_wizardd_view.xml",
         "wizard/ranch_cross_info_result_wizard_view.xml",
         "wizard/ranch_cross_move_info_wizard_view.xml",
+        "wizard/cattle_chore_uninvoiced_xls_wizard_view.xml",
         "views/ranch_purchase_data.xml",
         "views/account_invoice_view.xml",
         "views/res_config_view.xml",
+        "views/menu_inheritance.xml",
+        "report/ir_actions_report_xml_data.xml",
         'security/ir.model.access.csv',
     ],
     "installable": True,
diff --git a/i18n/es_AR.mo b/i18n/es_AR.mo
index eb3d2f210aff696b5bfbe5be8b79a9f9964a42d9..02c380a4b4e1225f0148c7166ebdbef0d150ed3b 100644
GIT binary patch
delta 4263
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
A^#A|>

delta 3828
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

diff --git a/i18n/es_AR.po b/i18n/es_AR.po
index e2c6345..1b7fd3a 100644
--- a/i18n/es_AR.po
+++ b/i18n/es_AR.po
@@ -6,8 +6,8 @@ msgid ""
 msgstr ""
 "Project-Id-Version: Odoo Server 8.0\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2019-08-23 00:00+0000\n"
-"PO-Revision-Date: 2019-08-28 15:00-0300\n"
+"POT-Creation-Date: 2019-08-28 19:05+0000\n"
+"PO-Revision-Date: 2019-08-28 16:10-0300\n"
 "Last-Translator: <>\n"
 "Language-Team: \n"
 "MIME-Version: 1.0\n"
@@ -78,6 +78,7 @@ msgid "Billing Type"
 msgstr "Tipo Facturación"
 
 #. module: rafalim_cattle_account
+#: view:cattle.chore.uninvoiced.xls.wizard:rafalim_cattle_account.cattle_chore_uninvoiced_xls_wizard_view
 #: view:cross.move.info.wizard:rafalim_cattle_account.view_cross_move_info_wizard
 #: view:ranch.config.settings:rafalim_cattle_account.view_ranch_config_settings_form
 #: view:ranch.purchase.data.invoice.wizard:rafalim_cattle_account.view_ranch_purchase_data_invoice_wizard
@@ -99,6 +100,11 @@ msgstr "Vacuna"
 msgid "Cattle Account Mapping"
 msgstr "Mapeo de cuenta vacuna"
 
+#. module: rafalim_cattle_account
+#: model:ir.actions.report.xml,name:rafalim_cattle_account.cattle_chore_report_uninvoiced_xlsx
+msgid "Cattle Chore Report Uninvoiced"
+msgstr "Faena sin facturar XLSX"
+
 #. module: rafalim_cattle_account
 #: model:ir.actions.act_window,name:rafalim_cattle_account.action_cattle_ranch_invoices
 msgid "Cattle Ranch Invoices"
@@ -279,6 +285,12 @@ msgstr "Descuento [Kg]"
 msgid "Display Name"
 msgstr "Nombre"
 
+#. module: rafalim_cattle_account
+#: view:cattle.chore.uninvoiced.xls.wizard:rafalim_cattle_account.cattle_chore_uninvoiced_xls_wizard_view
+#: model:ir.actions.act_window,name:rafalim_cattle_account.cattle_chore_uninvoiced_xls_wizard_action
+msgid "Download XLSX"
+msgstr "Descargar XLSX"
+
 #. module: rafalim_cattle_account
 #: code:addons/rafalim_cattle_account/report/invoice_settlement_parser.py:62
 #, python-format
@@ -348,6 +360,11 @@ msgstr "Líneas definitivas"
 msgid "Fully invoiced"
 msgstr "Totalmente facturado"
 
+#. module: rafalim_cattle_account
+#: view:cattle.chore.uninvoiced.xls.wizard:rafalim_cattle_account.cattle_chore_uninvoiced_xls_wizard_view
+msgid "Generate XLSX"
+msgstr "Generar XLSX"
+
 #. module: rafalim_cattle_account
 #: field:account.invoice,guide:0
 msgid "Guide"
@@ -388,6 +405,11 @@ msgstr "Cabezas"
 msgid "ID"
 msgstr "ID"
 
+#. module: rafalim_cattle_account
+#: view:cattle.chore.uninvoiced.xls.wizard:rafalim_cattle_account.cattle_chore_uninvoiced_xls_wizard_view
+msgid "Insert the dates to generate the .xlsx"
+msgstr "Inserte las fechas para generar el .xlsx"
+
 #. module: rafalim_cattle_account
 #: view:cross.move.info.result.wizard:rafalim_cattle_account.view_cross_info_result_wizard
 msgid "Interface missing invoices"
@@ -554,11 +576,6 @@ msgstr "Última modificación el"
 msgid "Limit Date"
 msgstr "Fecha Límite"
 
-#. module: rafalim_cattle_account
-#: view:cross.move.info.result.wizard:rafalim_cattle_account.view_cross_info_result_wizard
-msgid "Load results"
-msgstr "Resultados de carga"
-
 #. module: rafalim_cattle_account
 #: field:cattle.account.mapping,mapping_type:0
 msgid "Mapping type"
@@ -586,7 +603,7 @@ msgid "Move info crossing results"
 msgstr "Resultados del cruce de asientos contables"
 
 #. module: rafalim_cattle_account
-#: code:addons/rafalim_cattle_account/wizard/cross_info.py:169
+#: code:addons/rafalim_cattle_account/wizard/cross_info.py:167
 #, python-format
 msgid "Move lines info crossing result"
 msgstr "Resultados del cruce de asientos contables"
@@ -782,6 +799,12 @@ msgstr "Cuenta Origen"
 msgid "Species"
 msgstr "Especies"
 
+#. module: rafalim_cattle_account
+#: code:addons/rafalim_cattle_account/wizard/cattle_chore_uninvoiced_xls_wizard.py:29
+#, python-format
+msgid "Start Date must be earlier than End Date"
+msgstr "La fecha de inicio debe ser menor a la fecha de fin"
+
 #. module: rafalim_cattle_account
 #: view:website:rafalim_cattle_account.report_invoice_settlement_header_info_template_document
 msgid "State"
@@ -931,6 +954,7 @@ msgid "of ranch invoices or autoliquidation. Use to not to load invoices of othe
 msgstr "of ranch invoices or autoliquidation. Use to not to load invoices of other period than actual one."
 
 #. module: rafalim_cattle_account
+#: view:cattle.chore.uninvoiced.xls.wizard:rafalim_cattle_account.cattle_chore_uninvoiced_xls_wizard_view
 #: view:ranch.config.settings:rafalim_cattle_account.view_ranch_config_settings_form
 #: view:ranch.purchase.data.invoice.wizard:rafalim_cattle_account.view_ranch_purchase_data_invoice_wizard
 #: view:ranch.purchase.data.invoice.wizardd:rafalim_cattle_account.view_ranch_purchase_data_invoice_wizardd
diff --git a/report/__init__.py b/report/__init__.py
index 66cf907..cc374ad 100644
--- a/report/__init__.py
+++ b/report/__init__.py
@@ -1,3 +1,4 @@
 # -*- coding: utf-8 -*-
 
 from . import invoice_settlement_parser  # noqa
+from . import cattle_chore_uninvoiced_report_xls # noqa
diff --git a/report/cattle_chore_uninvoiced_report_xls.py b/report/cattle_chore_uninvoiced_report_xls.py
new file mode 100644
index 0000000..986c468
--- /dev/null
+++ b/report/cattle_chore_uninvoiced_report_xls.py
@@ -0,0 +1,267 @@
+# -*- coding: utf-8 -*-
+###############################################################################
+#
+#    OpenERP, Open Source Management Solution
+#    Copyright (c) 2019 E-MIPS (http://www.e-mips.com.ar)
+#    Copyright (c) 2019 Eynes (http://www.eynes.com.ar)
+#    All Rights Reserved. See AUTHORS for details.
+#
+#    This program is free software: you can redistribute it and/or modify
+#    it under the terms of the GNU Affero General
+#    Public License as published by
+#    the Free Software Foundation, either version 3 of the License, or
+#    (at your option) any later version.
+#
+#    This program is distributed in the hope that it will be useful,
+#    but WITHOUT ANY WARRANTY; without even the implied warranty of
+#    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+#    GNU Affero General Public License for more details.
+#
+#    You should have received a copy of the GNU Affero General Public License
+#    along with this program.  If not, see <http://www.gnu.org/licenses/>.
+#
+##############################################################################
+
+import logging
+from datetime import datetime
+import re
+import operator
+from itertools import groupby
+
+from openerp import _
+from openerp.tools import DEFAULT_SERVER_DATE_FORMAT as DSDATEF
+from openerp.exceptions import ValidationError
+from psycopg2 import sql
+
+_logger = logging.getLogger(__name__)
+
+try:
+    from openerp.addons.report_xlsx.report.report_xlsx import ReportXlsx
+except ImportError:
+    _logger.warning("ReportXLSX Dependecy Unmet")
+
+    class ReportXlsx(object):
+        def __init__(self, *args, **kwargs):
+            pass
+
+class CattleChoreReportUninvoicedXLSX(ReportXlsx):
+
+    def _print_headers(self):
+        header_cols = [
+            u'Grupo', u'Referencia a planilla de compra', u'Fecha de compra', 
+            u'Fecha Faena', u'Comprador', u'Productor', u'Feria/Consignatario',
+            u'Localidad de Compra', u'Cabezas compradas', u'Cabezas faenadas',
+            u'Total previo impuesto', u'Monto total neto',
+        ]
+        row = col = 0
+        for header in header_cols:
+            self.sheet.write(row, col, header, self.header_format)
+            self.sheet.set_column(col, col, len(header) * 0.9)
+            col += 1
+
+    def _get_xls_data(self):
+        rpd_model = self.env['ranch.purchase.data']
+
+        locality_re = re.compile('(^.+)\(')
+
+        rpds = rpd_model.search([
+            ('ranch_type', '=', 'cattle'),
+            ('purchase_date', '>=', self.start_date),
+            ('purchase_date', '<=', self.end_date),
+            ('invoice_ids', '!=', False),
+        ])
+
+        result = []
+
+        for rpd in rpds:
+
+            rpd_ref = rpd.name
+            rpd_date = rpd.purchase_date
+
+            #Todo: Where is 'fecha faena'
+
+            chore_date = ''
+
+            if rpd.romaneo_ids and rpd.billing_type == "performance":
+                romaneo_dates = [rline.date for rline in rpd.romaneo_ids]
+                chore_date = min(romaneo_dates)
+
+            buyer = rpd.buyer_id
+            buyer_name = buyer.name or ''
+
+            productor = rpd.productor_id
+            productor_name = productor.name or ''
+
+            auction = rpd.auction_id or rpd.productor_id or \
+                self.env['res.partner']
+            auction_name = auction.name
+
+            locality = locality_re.findall(rpd.purchase_locality)
+            locality = locality and locality[0] or rpd.purchase_locality
+
+            #alive_head_count = rpr.alive_head_count
+            alive_head_count = 0
+            if rpd.billing_type == "performance":
+                alive_head_count = rpd.alive_head_count
+            else:
+                for fline in rpd.final_lines:
+                    alive_head_count += fline.quantity
+
+            #head_count = rpr.head_count
+            head_count = 0
+            for rline in rpd.romaneo_ids:
+                head_count += rline.head_count
+
+            untaxed_total = rpd.untaxed_total
+            amount_total = rpd.amount_total
+
+            rpd_vals = {
+                'rpd_id': rpd.id,
+                'rpd_ref': rpd_ref,
+                'rpd_date': rpd_date,
+                'buyer_name': buyer_name,
+                'chore_date': chore_date,
+                'productor_name': productor_name,
+                'auction_name': auction_name,
+                'locality': locality,
+                'alive_head_count': alive_head_count,
+                'head_count': head_count,
+                'untaxed_total': untaxed_total,
+                'amount_total': amount_total,
+            }
+
+            result.append(rpd_vals)
+
+        result = sorted(
+            result, key=operator.itemgetter(
+                'rpd_date')
+        )
+        return result
+
+    def generate_xlsx_report(self, wb, data, repositors):
+
+        self.start_date = data.get('start_date')
+        self.end_date = data.get('end_date')
+
+        self.sheet = wb.add_worksheet()
+        self.header_format = wb.add_format({
+            'font_name': 'DejaVu Sans',
+            'font_size': 8,
+            'bold': True,
+            'bg_color': 'silver',
+            'border': 1,
+        })
+        self.cell_format = wb.add_format({
+            'font_name': 'DejaVu Sans',
+            'font_size': 8,
+        })
+        self.cell_bold = wb.add_format({
+            'font_name': 'DejaVu Sans',
+            'font_size': 8, 'bold': True,
+        })
+        self.cell_italic = wb.add_format({
+            'font_name': 'DejaVu Sans',
+            'font_size': 8, 'italic': True,
+        })
+        self.total_format = wb.add_format({
+            'font_name': 'DejaVu Sans',
+            'font_size': 8,
+            'italic': True,
+            'bg_color': 'silver',
+            'border': 1,
+        })
+        self.highlighted_format = wb.add_format({
+            'font_name': 'DejaVu Sans',
+            'font_size': 8,
+            'italic': True,
+            'bg_color': 'yellow',
+            'border': 1,
+        })
+
+        self._print_headers()
+
+        xls_data = self._get_xls_data()
+
+        row = 1
+
+        group_date = ''
+
+        sorted_data = {}
+
+        if xls_data:
+            group_date = xls_data[0]['rpd_date']
+
+        for values in xls_data:
+            if values['rpd_date'] != group_date:
+                group_date = values['rpd_date']
+            sorted_data.setdefault(group_date, []).append(values)
+        
+
+        sorted_data = sorted(
+            sorted_data.items(), key=operator.itemgetter(0)
+        )
+
+        for k, values in sorted_data:
+            col = 0
+            group_str = k + "(" + str(len(values)) + ")"
+            self.sheet.write(row, col, group_str, self.cell_bold)
+            col = 8
+            total_alive_heads = sum([r['alive_head_count'] for r in values])
+            self.sheet.write(row, col, str(total_alive_heads), self.cell_bold)
+            col = 9
+            total_heads = sum([r['head_count'] for r in values])
+            self.sheet.write(row, col, str(total_heads), self.cell_bold)
+            col = 10
+            sum_untaxed_total = sum([r['untaxed_total'] for r in values])
+            self.sheet.write(row, col, str(sum_untaxed_total), self.cell_bold)
+            col = 11
+            sum_amount_total = sum([r['amount_total'] for r in values])
+            self.sheet.write(row, col, str(sum_amount_total), self.cell_bold)
+            row += 1
+            for value in values:
+                col = 1
+
+                self.sheet.write(
+                    row, col, value['rpd_ref'], self.cell_format)
+                col += 1
+                rpr_date_dt = datetime.strptime(
+                    value['rpd_date'], DSDATEF).strftime('%d/%m/%Y')
+                self.sheet.write(
+                    row, col, rpr_date_dt, self.cell_format)
+                col += 1
+                if value['chore_date'] != '':
+                    chore_date_dt = datetime.strptime(
+                        value['chore_date'], DSDATEF).strftime('%d/%m/%Y')
+                    self.sheet.write(
+                        row, col, chore_date_dt, self.highlighted_format)
+                col += 1
+                self.sheet.write(
+                    row, col, value['buyer_name'], self.cell_format)
+                col += 1
+                self.sheet.write(
+                    row, col, value['productor_name'], self.cell_format)
+                col += 1
+                self.sheet.write(
+                    row, col, value['auction_name'], self.cell_format)
+                col += 1
+                self.sheet.write(
+                    row, col, value['locality'], self.cell_format)
+                col += 1
+                self.sheet.write(
+                    row, col, value['alive_head_count'], self.cell_format)
+                col += 1
+                self.sheet.write(
+                    row, col, value['head_count'], self.cell_format)
+                col += 1
+                self.sheet.write(
+                    row, col, value['untaxed_total'], self.cell_format)
+                col += 1
+                self.sheet.write(
+                    row, col, value['amount_total'], self.cell_format)
+                col += 1
+
+                row += 1
+        return
+
+CattleChoreReportUninvoicedXLSX('report.rafalim_cattle_account.cattle_chore_report_uninvoiced_xlsx',
+                                'ranch.purchase.data')
diff --git a/report/ir_actions_report_xml_data.xml b/report/ir_actions_report_xml_data.xml
new file mode 100644
index 0000000..b56c6d6
--- /dev/null
+++ b/report/ir_actions_report_xml_data.xml
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<openerp>
+    <data>
+        <record id="cattle_chore_report_uninvoiced_xlsx" model="ir.actions.report.xml">
+            <field name="report_type">xlsx</field>
+            <field name="report_name">rafalim_cattle_account.cattle_chore_report_uninvoiced_xlsx</field>
+            <field eval="[(6,0,[])]" name="groups_id"/>
+            <field eval="1" name="multi"/>
+            <field eval="0" name="auto"/>
+            <field eval="1" name="header"/>
+            <field name="model">ranch.purchase.data</field>
+            <field name="type">ir.actions.report.xml</field>
+            <field name="name">Cattle Chore Report Uninvoiced</field>
+            <field name="file">CattleChoreUninvoiced</field>
+        </record>
+    </data>
+</openerp>
diff --git a/views/menu_inheritance.xml b/views/menu_inheritance.xml
new file mode 100644
index 0000000..ef5680a
--- /dev/null
+++ b/views/menu_inheritance.xml
@@ -0,0 +1,10 @@
+<openerp>
+    <data>
+        <menuitem id="ranch_cattle_uninvoiced_xlsx_report"
+            name="Uninvoiced purchase data report"
+            parent="rafalim_cattle_ranch.ranch_cattle_reports"
+            action="cattle_chore_uninvoiced_xls_wizard_action"
+            sequence = "35"/>
+    </data>
+</openerp>
+
diff --git a/wizard/__init__.py b/wizard/__init__.py
index 7ed0606..3ab8845 100644
--- a/wizard/__init__.py
+++ b/wizard/__init__.py
@@ -4,3 +4,4 @@ import ranch_cross_info_result_wizard
 import ranch_purchase_data_invoice_wizard
 import ranch_purchase_data_invoice_wizardd
 import ranch_cross_move_info_wizard
+import cattle_chore_uninvoiced_xls_wizard
diff --git a/wizard/cattle_chore_uninvoiced_xls_wizard.py b/wizard/cattle_chore_uninvoiced_xls_wizard.py
new file mode 100644
index 0000000..0e44994
--- /dev/null
+++ b/wizard/cattle_chore_uninvoiced_xls_wizard.py
@@ -0,0 +1,44 @@
+# -*- coding: utf-8 -*-
+##############################################################################
+
+#   Copyright (c) 2019 Rafaela Alimentos (Eynes - Ingenieria del software)
+#   License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
+
+##############################################################################
+
+
+from openerp import _, api, exceptions, fields, models
+from openerp.exceptions import except_orm
+from openerp.addons.decimal_precision import decimal_precision as dp
+from openerp.tools import DEFAULT_SERVER_DATE_FORMAT, DEFAULT_SERVER_DATETIME_FORMAT, float_compare
+
+import datetime
+import logging
+
+_logger = logging.getLogger(__name__)
+
+class CattleChoreUninvoicedXlsWizard(models.TransientModel):
+    _name = 'cattle.chore.uninvoiced.xls.wizard'
+
+    start_date = fields.Date("Start Date")
+    end_date = fields.Date("End Date")
+    
+    @api.constrains('start_date', 'end_date')
+    def _check_dates(self):
+        if self.start_date > self.end_date:
+            raise exceptions.ValidationError(_("Start Date must be earlier than End Date"))
+
+    @api.multi
+    def _pre_print_data(self):
+        data = self.read()[0]
+        return data
+
+    @api.multi
+    def button_generate_xls(self):
+        data = self._pre_print_data()
+        action = {
+            'type': 'ir.actions.report.xml',
+            'report_name': 'rafalim_cattle_account.cattle_chore_report_uninvoiced_xlsx',
+            'datas': data,
+        }
+        return action
diff --git a/wizard/cattle_chore_uninvoiced_xls_wizard_view.xml b/wizard/cattle_chore_uninvoiced_xls_wizard_view.xml
new file mode 100644
index 0000000..970e5f7
--- /dev/null
+++ b/wizard/cattle_chore_uninvoiced_xls_wizard_view.xml
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<openerp>
+    <data>
+
+        <record model="ir.ui.view" id="cattle_chore_uninvoiced_xls_wizard_view">
+            <field name="name">cattle.chore.uninvoiced.xls.wizard.form</field>
+            <field name="model">cattle.chore.uninvoiced.xls.wizard</field>
+            <field name="arch" type="xml">
+                <form string="Generate XLSX">
+                    <p>
+                        <strong>Insert the dates to generate the .xlsx</strong>
+                    </p>
+                    <group>
+                        <field name="start_date" required="True"/>
+                        <field name="end_date" required="True"/>
+                    </group>
+                    <footer>
+                        <button name="button_generate_xls" type="object" string="Download XLSX" class="oe_highlight"/>
+                        or
+                        <button special="cancel" string="Cancel"/>
+                    </footer>
+                </form>
+            </field>
+        </record>
+
+        <act_window id="cattle_chore_uninvoiced_xls_wizard_action"
+                    name="Download XLSX"
+                    res_model="cattle.chore.uninvoiced.xls.wizard"
+                    view_mode="form"
+                    target="new"/>
+
+    </data>
+</openerp>
-- 
GitLab


From 0c495594fcf7edbb1c65a288dd823e6ac12c6e45 Mon Sep 17 00:00:00 2001
From: Marco Folco <marcofolco28@gmail.com>
Date: Wed, 28 Aug 2019 16:15:45 -0300
Subject: [PATCH 4/7] Modified __openerp__.py

---
 __openerp__.py | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/__openerp__.py b/__openerp__.py
index 79c91d5..e8a7c08 100644
--- a/__openerp__.py
+++ b/__openerp__.py
@@ -29,7 +29,7 @@
     "depends": [
         "rafalim_cattle_ranch",
         "account_invoice_merge",
-        #"l10n_ar_invoice_registration_date",
+        "l10n_ar_invoice_registration_date",
     ],
     "data": [
         "views/assets.xml",
-- 
GitLab


From 693d0914d660fef61646cda1d74246cf79c1a7a8 Mon Sep 17 00:00:00 2001
From: Marco Folco <marcofolco28@gmail.com>
Date: Thu, 29 Aug 2019 16:41:05 -0300
Subject: [PATCH 5/7] [ADD]Comments in report

Added comments in cattle_chore_uninvoiced_report_xls.py explaining the code and mentioning important files

RAF-135
---
 report/cattle_chore_uninvoiced_report_xls.py | 58 +++++++++++++++++++-
 1 file changed, 56 insertions(+), 2 deletions(-)

diff --git a/report/cattle_chore_uninvoiced_report_xls.py b/report/cattle_chore_uninvoiced_report_xls.py
index 986c468..6ec25ec 100644
--- a/report/cattle_chore_uninvoiced_report_xls.py
+++ b/report/cattle_chore_uninvoiced_report_xls.py
@@ -46,7 +46,24 @@ except ImportError:
 
 class CattleChoreReportUninvoicedXLSX(ReportXlsx):
 
+    # Important files are:
+
+    # This one. Defines the logic to print all the cells in the XLSX.
+
+    # ir_actions_report_xml_data.xml. There we define the record we will
+    # referencing through the wizard to launch the report.
+
+    # ../wizard/cattle_chore_uninvoiced_xls_wizard.py. There we ask for
+    # the dates to filter and we launch the report
+
+    # ../wizard/cattle_chore_uninvoiced_xls_wizard_view.xml. There we define
+    # the form view and the window action for the wizard
+
+    # ../views/menu_inheritance.xml. There we define the menuaction for
+    # the wizard.
+
     def _print_headers(self):
+        # List o all headers for the sheet
         header_cols = [
             u'Grupo', u'Referencia a planilla de compra', u'Fecha de compra', 
             u'Fecha Faena', u'Comprador', u'Productor', u'Feria/Consignatario',
@@ -54,6 +71,7 @@ class CattleChoreReportUninvoicedXLSX(ReportXlsx):
             u'Total previo impuesto', u'Monto total neto',
         ]
         row = col = 0
+        # Write all headers in the sheet using the desired format (self.header_format)
         for header in header_cols:
             self.sheet.write(row, col, header, self.header_format)
             self.sheet.set_column(col, col, len(header) * 0.9)
@@ -64,6 +82,9 @@ class CattleChoreReportUninvoicedXLSX(ReportXlsx):
 
         locality_re = re.compile('(^.+)\(')
 
+        # Bring all uninvoiced purchase data
+        # Maybe it will be better to include partially invoiced purchase data
+
         rpds = rpd_model.search([
             ('ranch_type', '=', 'cattle'),
             ('purchase_date', '>=', self.start_date),
@@ -73,6 +94,9 @@ class CattleChoreReportUninvoicedXLSX(ReportXlsx):
 
         result = []
 
+        # Iterate over all the records and fill a dictionary with the
+        # desired values for each one, appending all of them into a list
+
         for rpd in rpds:
 
             rpd_ref = rpd.name
@@ -82,6 +106,8 @@ class CattleChoreReportUninvoicedXLSX(ReportXlsx):
 
             chore_date = ''
 
+            # We only want the chore date if the billing_type is "performance"
+
             if rpd.romaneo_ids and rpd.billing_type == "performance":
                 romaneo_dates = [rline.date for rline in rpd.romaneo_ids]
                 chore_date = min(romaneo_dates)
@@ -99,7 +125,10 @@ class CattleChoreReportUninvoicedXLSX(ReportXlsx):
             locality = locality_re.findall(rpd.purchase_locality)
             locality = locality and locality[0] or rpd.purchase_locality
 
-            #alive_head_count = rpr.alive_head_count
+            # If the billing_type is performance, we use the value of
+            # rpd.alive_head_count. Otherwhise we will calculate the
+            # amount based in the final lines
+
             alive_head_count = 0
             if rpd.billing_type == "performance":
                 alive_head_count = rpd.alive_head_count
@@ -107,7 +136,8 @@ class CattleChoreReportUninvoicedXLSX(ReportXlsx):
                 for fline in rpd.final_lines:
                     alive_head_count += fline.quantity
 
-            #head_count = rpr.head_count
+            # The head_count will always be calculated based on
+            # romaneo lines
             head_count = 0
             for rline in rpd.romaneo_ids:
                 head_count += rline.head_count
@@ -132,6 +162,9 @@ class CattleChoreReportUninvoicedXLSX(ReportXlsx):
 
             result.append(rpd_vals)
 
+        # Sort the list based on the purchase_date to fulfill the format
+        # of the report
+
         result = sorted(
             result, key=operator.itemgetter(
                 'rpd_date')
@@ -144,6 +177,9 @@ class CattleChoreReportUninvoicedXLSX(ReportXlsx):
         self.end_date = data.get('end_date')
 
         self.sheet = wb.add_worksheet()
+
+        # Formats of the cells
+
         self.header_format = wb.add_format({
             'font_name': 'DejaVu Sans',
             'font_size': 8,
@@ -188,20 +224,35 @@ class CattleChoreReportUninvoicedXLSX(ReportXlsx):
 
         sorted_data = {}
 
+        # Initialize group_date variable so we can compare in the iteration
+
         if xls_data:
             group_date = xls_data[0]['rpd_date']
 
+        # Build a dictionary using rpd_date as key and for each key
+        # inserting as value a list of rpds with rpd_date = key
+
         for values in xls_data:
             if values['rpd_date'] != group_date:
                 group_date = values['rpd_date']
             sorted_data.setdefault(group_date, []).append(values)
         
+        # Sort the dictionary again to make sure that we
+        # will print the values in ascending date order
 
         sorted_data = sorted(
             sorted_data.items(), key=operator.itemgetter(0)
         )
 
+        # Note that the dictionary becomes a list of tuples
+        # after it gets sorted
+
+        # Iterate over the list and print the values in the desired format
+
         for k, values in sorted_data:
+            # First we print the header of the group
+            # It consist in the group date, the number of records,
+            # and the sum of all amounts and head_counts
             col = 0
             group_str = k + "(" + str(len(values)) + ")"
             self.sheet.write(row, col, group_str, self.cell_bold)
@@ -219,6 +270,9 @@ class CattleChoreReportUninvoicedXLSX(ReportXlsx):
             self.sheet.write(row, col, str(sum_amount_total), self.cell_bold)
             row += 1
             for value in values:
+
+                # Print the values in the desired order and format
+
                 col = 1
 
                 self.sheet.write(
-- 
GitLab


From 1f68bd624833f27145264b27d44065b70a785d35 Mon Sep 17 00:00:00 2001
From: Sebastian Kennedy <skennedy@e-mips.com.ar>
Date: Tue, 17 Sep 2019 10:18:38 -0300
Subject: [PATCH 6/7] [FIX] domain for uninvoiced purchase data

---
 report/cattle_chore_uninvoiced_report_xls.py | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/report/cattle_chore_uninvoiced_report_xls.py b/report/cattle_chore_uninvoiced_report_xls.py
index 6ec25ec..5cef50d 100644
--- a/report/cattle_chore_uninvoiced_report_xls.py
+++ b/report/cattle_chore_uninvoiced_report_xls.py
@@ -89,7 +89,7 @@ class CattleChoreReportUninvoicedXLSX(ReportXlsx):
             ('ranch_type', '=', 'cattle'),
             ('purchase_date', '>=', self.start_date),
             ('purchase_date', '<=', self.end_date),
-            ('invoice_ids', '!=', False),
+            ('invoice_ids', '=', False),
         ])
 
         result = []
-- 
GitLab


From 44bc0d61bf1861f1f8bb380df7576267bd1e35e4 Mon Sep 17 00:00:00 2001
From: Sebastian Kennedy <skennedy@e-mips.com.ar>
Date: Mon, 23 Sep 2019 10:50:40 -0300
Subject: [PATCH 7/7] [ADD] Payment term date to reporte uninvoiced cattle
 chore

RAF-135
---
 report/cattle_chore_uninvoiced_report_xls.py | 12 +++++++++---
 1 file changed, 9 insertions(+), 3 deletions(-)

diff --git a/report/cattle_chore_uninvoiced_report_xls.py b/report/cattle_chore_uninvoiced_report_xls.py
index 5cef50d..6e6bfdc 100644
--- a/report/cattle_chore_uninvoiced_report_xls.py
+++ b/report/cattle_chore_uninvoiced_report_xls.py
@@ -68,7 +68,7 @@ class CattleChoreReportUninvoicedXLSX(ReportXlsx):
             u'Grupo', u'Referencia a planilla de compra', u'Fecha de compra', 
             u'Fecha Faena', u'Comprador', u'Productor', u'Feria/Consignatario',
             u'Localidad de Compra', u'Cabezas compradas', u'Cabezas faenadas',
-            u'Total previo impuesto', u'Monto total neto',
+            u'Plazo de Pago', u'Total previo impuesto', u'Monto total neto',
         ]
         row = col = 0
         # Write all headers in the sheet using the desired format (self.header_format)
@@ -142,6 +142,8 @@ class CattleChoreReportUninvoicedXLSX(ReportXlsx):
             for rline in rpd.romaneo_ids:
                 head_count += rline.head_count
 
+            payment_term_date = max(rpd.payment_system_term_ids.mapped('days'))
+
             untaxed_total = rpd.untaxed_total
             amount_total = rpd.amount_total
 
@@ -156,6 +158,7 @@ class CattleChoreReportUninvoicedXLSX(ReportXlsx):
                 'locality': locality,
                 'alive_head_count': alive_head_count,
                 'head_count': head_count,
+                'payment_term_date': payment_term_date,
                 'untaxed_total': untaxed_total,
                 'amount_total': amount_total,
             }
@@ -262,10 +265,10 @@ class CattleChoreReportUninvoicedXLSX(ReportXlsx):
             col = 9
             total_heads = sum([r['head_count'] for r in values])
             self.sheet.write(row, col, str(total_heads), self.cell_bold)
-            col = 10
+            col = 11
             sum_untaxed_total = sum([r['untaxed_total'] for r in values])
             self.sheet.write(row, col, str(sum_untaxed_total), self.cell_bold)
-            col = 11
+            col = 12
             sum_amount_total = sum([r['amount_total'] for r in values])
             self.sheet.write(row, col, str(sum_amount_total), self.cell_bold)
             row += 1
@@ -307,6 +310,9 @@ class CattleChoreReportUninvoicedXLSX(ReportXlsx):
                 self.sheet.write(
                     row, col, value['head_count'], self.cell_format)
                 col += 1
+                self.sheet.write(
+                    row, col, value['payment_term_date'], self.cell_format)
+                col += 1
                 self.sheet.write(
                     row, col, value['untaxed_total'], self.cell_format)
                 col += 1
-- 
GitLab