diff --git a/__init__.py b/__init__.py
index 9024016..966c9ce 100644
--- a/__init__.py
+++ b/__init__.py
@@ -5,6 +5,7 @@ from trytond.pool import Pool
import commission
import invoice
import sale
+import agent
def register():
@@ -14,8 +15,15 @@ def register():
sale.Sale,
invoice.Invoice,
commission.CreateInvoiceAsk,
+ agent.AgentCommissionSalesStart,
module='commission_global', type_='model')
Pool.register(
commission.CreateInvoice,
commission.CreateInvoiceDirect,
+ agent.AgentCommissionSales,
module='commission_global', type_='wizard')
+ Pool.register(
+ commission.CreateInvoice,
+ commission.CreateInvoiceDirect,
+ agent.AgentCommissionSalesReport,
+ module='commission_global', type_='report')
diff --git a/agent.py b/agent.py
new file mode 100644
index 0000000..008c6e8
--- /dev/null
+++ b/agent.py
@@ -0,0 +1,126 @@
+# This file is part of Tryton. The COPYRIGHT file at the top level of
+# this repository contains the full copyright notices and license terms.
+from __future__ import unicode_literals
+from decimal import Decimal
+from trytond.pool import PoolMeta, Pool
+from trytond.model import fields, ModelSQL, ModelView
+from trytond.transaction import Transaction
+from trytond.wizard import Wizard, StateView, StateReport, Button, StateTransition
+from trytond.report import Report
+
+__all__ = ['AgentCommissionSalesStart',
+ 'AgentCommissionSales', 'AgentCommissionSalesReport']
+
+
+class AgentCommissionSalesStart(ModelView):
+ 'Agent Commission Sales Start'
+ __name__ = 'commission_global.agent_commission_sales.start'
+ start_date = fields.Date('Start Date', required=True)
+ end_date = fields.Date('End Date', required=True)
+ company = fields.Many2One('company.company', 'Company',
+ required=True)
+ agent = fields.Many2One('commission.agent', 'Agent')
+
+ @staticmethod
+ def default_company():
+ return Transaction().context.get('company')
+
+
+class AgentCommissionSales(Wizard):
+ 'Agent Commission Sales'
+ __name__ = 'commission_global.agent_commission_sales'
+ start = StateView('commission_global.agent_commission_sales.start',
+ 'commission_global.agent_commission_sales_start_view_form', [
+ Button('Cancel', 'end', 'tryton-cancel'),
+ Button('Print', 'print_', 'tryton-ok', default=True),
+ ])
+ print_ = StateReport('commission_global.agent_commission_sales_report')
+
+ def do_print_(self, action):
+ agent_id = None
+ if self.start.agent:
+ agent_id = self.start.agent.id
+ data = {
+ 'company': self.start.company.id,
+ 'start_date': self.start.start_date,
+ 'end_date': self.start.end_date,
+ 'agent': agent_id,
+ }
+ return action, data
+
+ def transition_print_(self):
+ return 'end'
+
+
+class AgentCommissionSalesReport(Report):
+ __name__ = 'commission_global.agent_commission_sales_report'
+
+ @classmethod
+ def get_context(cls, records, data):
+ report_context = super(AgentCommissionSalesReport, cls).get_context(records, data)
+ pool = Pool()
+ Company = pool.get('company.company')
+ Agent = pool.get('commission.agent')
+ PriceList = pool.get('product.price_list')
+ Invoice = pool.get('account.invoice')
+ InvoiceLine = pool.get('account.invoice.line')
+ dom = [
+ ('company', '=', data['company']),
+ ('state', 'in', ['posted', 'paid']),
+ ('invoice_date', '>=', data['start_date']),
+ ('invoice_date', '<=', data['end_date']),
+ ]
+ if data['agent']:
+ dom.append(
+ ('agent', '=', data['agent']),
+ )
+
+ invoices = Invoice.search([dom])
+ agents = {}
+ total_commission = []
+
+ for invoice in invoices:
+ if not invoice.agent or invoice.amount_to_pay != Decimal('0.0'):
+ continue
+ agent_id = invoice.agent.id
+ commission_ = 0
+
+ for l in invoice.lines:
+ if l.commission_amount:
+ commission_ += (l.commission_amount)
+ else:
+ if l.unit_price and l.product and l.quantity and l.origin \
+ and l.origin.sale.price_list:
+ percent_commission = l.origin.sale.price_list.percent_commission
+ if percent_commission:
+ commission_ += round((((l.unit_price) * int(l.quantity)) * percent_commission), 0)
+ if commission_ == 0:
+ continue
+ if invoice.total_amount < 0 and commission_ > 0:
+ commission_ = commission_ * (-1)
+
+ commission_ = round(commission_, 0)
+ total_commission.append(commission_)
+
+ if agent_id not in agents.keys():
+ agents[agent_id] = {
+ 'agent': invoice.agent.party.name,
+ 'invoices':[],
+ }
+ agents[agent_id]['invoices'].append({
+ 'number': invoice.number + ' [ ' + invoice.lines[0].origin.sale.number + ' ]',
+ 'date': invoice.invoice_date,
+ 'commission': commission_,
+ 'party': invoice.party.name,
+ })
+
+ report_context['records'] = agents.values()
+ report_context['total_commission'] = sum(total_commission)
+ report_context['start_date'] = data['start_date']
+ agent_ = ''
+ if data['agent']:
+ agent_ = Agent(data['agent']).party.name
+ report_context['agent'] = agent_
+ report_context['end_date'] = data['end_date']
+ report_context['company'] = Company(data['company']).rec_name
+ return report_context
diff --git a/agent.xml b/agent.xml
new file mode 100644
index 0000000..5d512a3
--- /dev/null
+++ b/agent.xml
@@ -0,0 +1,26 @@
+
+
+
+
+
+
+ commission_global.agent_commission_sales.start
+ form
+ agent_commission_sales_start_view_form
+
+
+ Sale Agent Commission
+ commission_global.agent_commission_sales
+
+
+ Report Sale Agent Commission
+
+ commission_global.agent_commission_sales_report
+ commission_global/sale_agent_commission.ods
+
+
+
+
+
diff --git a/locale/es.po b/locale/es.po
index aded136..8833c65 100644
--- a/locale/es.po
+++ b/locale/es.po
@@ -10,14 +10,6 @@ msgctxt "field:commission,origin_state:"
msgid "Origin State"
msgstr "Estado de Origen"
-msgctxt "field:commission.agent,active:"
-msgid "Active"
-msgstr "Activo"
-
-msgctxt "field:commission.agent,zones:"
-msgid "Zones"
-msgstr "Zonas"
-
msgctxt "field:commission.create_invoice.ask,agent:"
msgid "Agent"
msgstr "Agente"
@@ -30,42 +22,35 @@ msgctxt "field:commission.plan,percentage:"
msgid "Percentage"
msgstr "Porcentaje"
-msgctxt "field:sale.commission_global.agent_zone,agent:"
+msgctxt "field:commission_global.agent_commission_sales.start,agent:"
msgid "Agent"
msgstr "Agente"
-msgctxt "field:sale.commission_global.agent_zone,create_date:"
-msgid "Create Date"
-msgstr "Fecha de Creación"
+msgctxt "field:commission_global.agent_commission_sales.start,company:"
+msgid "Company"
+msgstr "Empresa"
-msgctxt "field:sale.commission_global.agent_zone,create_uid:"
-msgid "Create User"
-msgstr "Usuario de creción"
+msgctxt "field:commission_global.agent_commission_sales.start,end_date:"
+msgid "End Date"
+msgstr "Fin"
-msgctxt "field:sale.commission_global.agent_zone,id:"
+#, fuzzy
+msgctxt "field:commission_global.agent_commission_sales.start,id:"
msgid "ID"
msgstr "UP"
-msgctxt "field:sale.commission_global.agent_zone,rec_name:"
-msgid "Record Name"
-msgstr "Nombre del registro"
-
-msgctxt "field:sale.commission_global.agent_zone,write_date:"
-msgid "Write Date"
-msgstr "Modificado por Usuario"
-
-msgctxt "field:sale.commission_global.agent_zone,write_uid:"
-msgid "Write User"
-msgstr "Usuario modificación"
-
-msgctxt "field:sale.commission_global.agent_zone,zone:"
-msgid "Zone"
-msgstr "Zona"
+msgctxt "field:commission_global.agent_commission_sales.start,start_date:"
+msgid "Start Date"
+msgstr "Inicio"
msgctxt "field:sale.sale,commission:"
msgid "Commission"
msgstr "Comisión"
+msgctxt "model:commission_global.agent_commission_sales.start,name:"
+msgid "Agent Commission Sales Start"
+msgstr "Reporte de Comisiones Por Agente"
+
msgctxt "model:ir.action,name:"
msgid "Party Commission Dunning"
msgstr "Cartera por Comisiones"
@@ -74,9 +59,170 @@ msgctxt "model:ir.action,name:act_create_invoice_direct"
msgid "Create Invoice"
msgstr "Crear Factura"
-msgctxt "model:sale.commission_global.agent_zone,name:"
-msgid "Agent - Zones"
-msgstr "Agente - Zonas"
+msgctxt "model:ir.action,name:report_sale_commission_sale"
+msgid "Report Sale Agent Commission"
+msgstr ""
+
+#, fuzzy
+msgctxt "model:ir.action,name:wizard_print_agent_commission_sale"
+msgid "Sale Agent Commission"
+msgstr "Reporte de Comisiones Por Agente"
+
+msgctxt "model:ir.ui.menu,name:menu_sale_agent_commission_report"
+msgid "Sale Agent Commission"
+msgstr "Reporte de Comisiones Por Agente"
+
+#, fuzzy
+msgctxt "report:commission_global.agent_commission_sales_report:"
+msgid "$"
+msgstr "$"
+
+#, fuzzy
+msgctxt "report:commission_global.agent_commission_sales_report:"
+msgid "("
+msgstr "("
+
+#, fuzzy
+msgctxt "report:commission_global.agent_commission_sales_report:"
+msgid ")"
+msgstr ")"
+
+#, fuzzy
+msgctxt "report:commission_global.agent_commission_sales_report:"
+msgid ","
+msgstr ","
+
+#, fuzzy
+msgctxt "report:commission_global.agent_commission_sales_report:"
+msgid "-"
+msgstr "-"
+
+#, fuzzy
+msgctxt "report:commission_global.agent_commission_sales_report:"
+msgid "/"
+msgstr "/"
+
+msgctxt "report:commission_global.agent_commission_sales_report:"
+msgid "/for"
+msgstr ""
+
+msgctxt "report:commission_global.agent_commission_sales_report:"
+msgid "00/00/0000"
+msgstr ""
+
+msgctxt "report:commission_global.agent_commission_sales_report:"
+msgid "00:00:00"
+msgstr ""
+
+msgctxt "report:commission_global.agent_commission_sales_report:"
+msgid "???"
+msgstr ""
+
+msgctxt "report:commission_global.agent_commission_sales_report:"
+msgid "A PAGAR:"
+msgstr ""
+
+msgctxt "report:commission_global.agent_commission_sales_report:"
+msgid "COMISIÓN"
+msgstr ""
+
+msgctxt "report:commission_global.agent_commission_sales_report:"
+msgid "COMISIÓNES"
+msgstr ""
+
+msgctxt "report:commission_global.agent_commission_sales_report:"
+msgid "Comisiones por Agente"
+msgstr ""
+
+msgctxt "report:commission_global.agent_commission_sales_report:"
+msgid "FECHA"
+msgstr ""
+
+msgctxt "report:commission_global.agent_commission_sales_report:"
+msgid "FECHA FINAL"
+msgstr ""
+
+msgctxt "report:commission_global.agent_commission_sales_report:"
+msgid "FECHA INICIAL"
+msgstr ""
+
+msgctxt "report:commission_global.agent_commission_sales_report:"
+msgid "No DOC"
+msgstr ""
+
+msgctxt "report:commission_global.agent_commission_sales_report:"
+msgid "Página"
+msgstr ""
+
+msgctxt "report:commission_global.agent_commission_sales_report:"
+msgid "Reporte de"
+msgstr ""
+
+msgctxt "report:commission_global.agent_commission_sales_report:"
+msgid "TERCERO"
+msgstr ""
+
+#, fuzzy
+msgctxt "report:commission_global.agent_commission_sales_report:"
+msgid "TOTAL"
+msgstr "TOTAL"
+
+#, fuzzy
+msgctxt "report:commission_global.agent_commission_sales_report:"
+msgid "company"
+msgstr "empresa"
+
+msgctxt "report:commission_global.agent_commission_sales_report:"
+msgid "de"
+msgstr ""
+
+msgctxt "report:commission_global.agent_commission_sales_report:"
+msgid "end_date"
+msgstr ""
+
+msgctxt "report:commission_global.agent_commission_sales_report:"
+msgid "for each='invoice in value['invoices']"
+msgstr ""
+
+msgctxt "report:commission_global.agent_commission_sales_report:"
+msgid "for each='value in records'"
+msgstr ""
+
+msgctxt "report:commission_global.agent_commission_sales_report:"
+msgid "invoice['commission']"
+msgstr ""
+
+msgctxt "report:commission_global.agent_commission_sales_report:"
+msgid "invoice['date']"
+msgstr ""
+
+msgctxt "report:commission_global.agent_commission_sales_report:"
+msgid "invoice['number']"
+msgstr ""
+
+msgctxt "report:commission_global.agent_commission_sales_report:"
+msgid "invoice['party']"
+msgstr ""
+
+msgctxt "report:commission_global.agent_commission_sales_report:"
+msgid "start_date"
+msgstr ""
+
+msgctxt "report:commission_global.agent_commission_sales_report:"
+msgid "sum([invoice['commission'] for invoice in value['invoices']])"
+msgstr ""
+
+msgctxt "report:commission_global.agent_commission_sales_report:"
+msgid "total_commission"
+msgstr ""
+
+msgctxt "report:commission_global.agent_commission_sales_report:"
+msgid "value['agent']"
+msgstr ""
+
+msgctxt "report:commission_global.agent_commission_sales_report:"
+msgid "€"
+msgstr ""
msgctxt "selection:commission,origin_state:"
msgid ""
@@ -93,3 +239,11 @@ msgstr "Pagada"
msgctxt "selection:commission,origin_state:"
msgid "Posted"
msgstr "Contabilizada"
+
+msgctxt "wizard_button:commission_global.agent_commission_sales,start,end:"
+msgid "Cancel"
+msgstr "Cancelar"
+
+msgctxt "wizard_button:commission_global.agent_commission_sales,start,print_:"
+msgid "Print"
+msgstr "Imprimir"
diff --git a/sale_agent_commission.ods b/sale_agent_commission.ods
new file mode 100644
index 0000000..bd752cb
Binary files /dev/null and b/sale_agent_commission.ods differ
diff --git a/tryton.cfg b/tryton.cfg
index f955e0b..59eaf55 100644
--- a/tryton.cfg
+++ b/tryton.cfg
@@ -7,8 +7,7 @@ depends:
invoice_report
commission
sale_shop
- sale_pos
- sale_pos_frontend
xml:
commission.xml
sale.xml
+ agent.xml
diff --git a/view/agent_commission_sales_start_view_form.xml b/view/agent_commission_sales_start_view_form.xml
new file mode 100644
index 0000000..544190f
--- /dev/null
+++ b/view/agent_commission_sales_start_view_form.xml
@@ -0,0 +1,13 @@
+
+
+