add report sale_agent_commission
This commit is contained in:
parent
f06f3dae9d
commit
989e0485eb
|
@ -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')
|
||||
|
|
|
@ -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
|
|
@ -0,0 +1,26 @@
|
|||
<?xml version="1.0"?>
|
||||
<!-- This file is part of Tryton. The COPYRIGHT file at the top level of
|
||||
this repository contains the full copyright notices and license terms. -->
|
||||
<tryton>
|
||||
<data>
|
||||
|
||||
<record model="ir.ui.view" id="agent_commission_sales_start_view_form">
|
||||
<field name="model">commission_global.agent_commission_sales.start</field>
|
||||
<field name="type">form</field>
|
||||
<field name="name">agent_commission_sales_start_view_form</field>
|
||||
</record>
|
||||
<record model="ir.action.wizard" id="wizard_print_agent_commission_sale">
|
||||
<field name="name">Sale Agent Commission</field>
|
||||
<field name="wiz_name">commission_global.agent_commission_sales</field>
|
||||
</record>
|
||||
<record model="ir.action.report" id="report_sale_commission_sale">
|
||||
<field name="name">Report Sale Agent Commission</field>
|
||||
<field name="model"></field>
|
||||
<field name="report_name">commission_global.agent_commission_sales_report</field>
|
||||
<field name="report">commission_global/sale_agent_commission.ods</field>
|
||||
</record>
|
||||
<menuitem parent="sale.menu_reporting" sequence="110"
|
||||
action="wizard_print_agent_commission_sale" id="menu_sale_agent_commission_report"/>
|
||||
|
||||
</data>
|
||||
</tryton>
|
222
locale/es.po
222
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"
|
||||
|
|
Binary file not shown.
|
@ -7,8 +7,7 @@ depends:
|
|||
invoice_report
|
||||
commission
|
||||
sale_shop
|
||||
sale_pos
|
||||
sale_pos_frontend
|
||||
xml:
|
||||
commission.xml
|
||||
sale.xml
|
||||
agent.xml
|
||||
|
|
|
@ -0,0 +1,13 @@
|
|||
<?xml version="1.0"?>
|
||||
<!-- This file is part of Tryton. The COPYRIGHT file at the top level of
|
||||
this repository contains the full copyright notices and license terms. -->
|
||||
<form>
|
||||
<label name="agent"/>
|
||||
<field name="agent"/>
|
||||
<label name="company"/>
|
||||
<field name="company"/>
|
||||
<label name="start_date"/>
|
||||
<field name="start_date"/>
|
||||
<label name="end_date"/>
|
||||
<field name="end_date"/>
|
||||
</form>
|
Loading…
Reference in New Issue