diff --git a/TODO b/TODO index 8b137891791fe96927ad78e64b0aad7bded08bdc..627d2f51e2b99707480f975def31405d61de62be 100644 --- a/TODO +++ b/TODO @@ -1 +1,4 @@ +Bank Loan +--------- +* Cambiar 'Préstamos' de la pestaña de Bancos a 'LÃnea Crediticia' o 'Calificación Crediticia'. diff --git a/i18n/es_AR.po b/i18n/es_AR.po new file mode 100644 index 0000000000000000000000000000000000000000..40e5092c77b794fdf1265c66cc04789c13d10e55 --- /dev/null +++ b/i18n/es_AR.po @@ -0,0 +1,367 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * bank_loan +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 8.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2018-02-27 14:40+0000\n" +"PO-Revision-Date: 2018-02-27 11:41-0300\n" +"Last-Translator: <>\n" +"Language-Team: \n" +"Language: es_AR\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: \n" +"X-Generator: Poedit 1.8.7.1\n" + +#. module: bank_loan +#: model:ir.actions.act_window,help:bank_loan.act_open_bank_loan_view +msgid "" +"<p class=\"oe_view_nocontent_create\">\n" +" Click to create a new Bank Loan\n" +" </p>\n" +" " +msgstr "" +"<p class=\"oe_view_nocontent_create\">\n" +" Click para crear un nuevo Préstamo Bancario\n" +"</p>\n" +" " + +#. module: bank_loan +#: field:bank.loan,total_amount:0 field:bank.loan.line,amount:0 +msgid "Amount" +msgstr "Importe" + +#. module: bank_loan +#: field:res.bank.loan.line,amount_loaned:0 +msgid "Amount Loaned" +msgstr "Importe Prestado" + +#. module: bank_loan +#: field:res.bank.loan.line,amount_remaining:0 +msgid "Amount Remaining" +msgstr "Restante" + +#. module: bank_loan +#: code:addons/bank_loan/models/bank_loan.py:85 +#: code:addons/bank_loan/models/bank_loan.py:224 +#, python-format +msgid "Amount must be >= 0!" +msgstr "¡El Importe debe ser mayor o igual a 0!" + +#. module: bank_loan +#: field:res.bank.loan.line,amount_to_loan:0 +msgid "Amount to Loan" +msgstr "Total a prestar" + +#. module: bank_loan +#: field:bank.loan,bank_id:0 model:ir.model,name:bank_loan.model_res_bank +#: field:res.bank.loan.line,bank_id:0 +msgid "Bank" +msgstr "Banco" + +#. module: bank_loan +#: view:bank.loan:bank_loan.view_bank_loan_form +#: view:bank.loan:bank_loan.view_bank_loan_search +#: view:bank.loan:bank_loan.view_bank_loan_tree +#: model:ir.model,name:bank_loan.model_bank_loan +#: model:ir.ui.menu,name:bank_loan.menu_bank_loan_act +msgid "Bank Loan" +msgstr "Préstamo Bancario" + +#. module: bank_loan +#: model:ir.actions.act_window,name:bank_loan.act_open_bank_loan_view +msgid "Bank Loans" +msgstr "Préstamos Bancarios" + +#. module: bank_loan +#: view:bank.loan.concept:bank_loan.view_bank_loan_concept_form +#: view:bank.loan.concept:bank_loan.view_bank_loan_concept_tree +#: model:ir.model,name:bank_loan.model_bank_loan_concept +msgid "Bank Loan Concept" +msgstr "Concepto del Préstamo Bancario" + +#. module: bank_loan +#: view:bank.loan.concept:bank_loan.view_bank_loan_concept_form +msgid "Bank Loan Concept Name" +msgstr "Nombre del Concepto..." + +#. module: bank_loan +#: field:bank.loan,capital:0 +msgid "Capital" +msgstr "Capital" + +#. module: bank_loan +#: code:addons/bank_loan/models/bank_loan.py:103 +#, python-format +msgid "Capital must be >= 0!" +msgstr "¡El Capital debe ser mayor o igual a 0!" + +#. module: bank_loan +#: view:bank.loan:bank_loan.view_bank_loan_form +msgid "Close" +msgstr "Cerrar" + +#. module: bank_loan +#: field:bank.loan,close_date:0 +msgid "Close Date" +msgstr "Fecha de Cierre" + +#. module: bank_loan +#: selection:bank.loan,state:0 +msgid "Closed" +msgstr "Cerrado" + +#. module: bank_loan +#: field:bank.loan,concept_id:0 field:res.bank.loan.line,concept_id:0 +msgid "Concept" +msgstr "Concepto" + +#. module: bank_loan +#: field:bank.loan,create_uid:0 field:bank.loan.concept,create_uid:0 +#: field:bank.loan.line,create_uid:0 field:res.bank.loan.line,create_uid:0 +msgid "Created by" +msgstr "Creado por" + +#. module: bank_loan +#: field:bank.loan,create_date:0 field:bank.loan.concept,create_date:0 +#: field:bank.loan.line,create_date:0 field:res.bank.loan.line,create_date:0 +msgid "Created on" +msgstr "Creado el" + +#. module: bank_loan +#: field:bank.loan,currency_id:0 field:bank.loan.concept,currency_id:0 +#: field:res.bank.loan.line,currency_id:0 +msgid "Currency" +msgstr "Moneda" + +#. module: bank_loan +#: field:bank.loan,display_name:0 field:bank.loan.concept,display_name:0 +#: field:bank.loan.line,display_name:0 field:res.bank.loan.line,display_name:0 +msgid "Display Name" +msgstr "Nombre a mostrar" + +#. module: bank_loan +#: selection:bank.loan,state:0 +msgid "Draft" +msgstr "Borrador" + +#. module: bank_loan +#: field:bank.loan,id:0 field:bank.loan.concept,id:0 field:bank.loan.line,id:0 +#: field:res.bank.loan.line,id:0 +msgid "ID" +msgstr "ID" + +#. module: bank_loan +#: field:bank.loan,interest:0 +msgid "Interest" +msgstr "Interés" + +#. module: bank_loan +#: code:addons/bank_loan/models/bank_loan.py:109 +#, python-format +msgid "Interest must be >= 0!" +msgstr "¡El Interés debe ser mayor o igual a 0!" + +#. module: bank_loan +#: field:bank.loan,__last_update:0 field:bank.loan.concept,__last_update:0 +#: field:bank.loan.line,__last_update:0 +#: field:res.bank.loan.line,__last_update:0 +msgid "Last Modified on" +msgstr "Última actualización el" + +#. module: bank_loan +#: field:bank.loan,write_uid:0 field:bank.loan.concept,write_uid:0 +#: field:bank.loan.line,write_uid:0 field:res.bank.loan.line,write_uid:0 +msgid "Last Updated by" +msgstr "Última actualización por" + +#. module: bank_loan +#: field:bank.loan,write_date:0 field:bank.loan.concept,write_date:0 +#: field:bank.loan.line,write_date:0 field:res.bank.loan.line,write_date:0 +msgid "Last Updated on" +msgstr "Última actualización el" + +#. module: bank_loan +#: model:ir.model,name:bank_loan.model_bank_loan_line +msgid "Line of a Bank Loan" +msgstr "LÃnea de Préstamo Bancario" + +#. module: bank_loan +#: field:bank.loan,line_ids:0 +msgid "Lines" +msgstr "LÃneas" + +#. module: bank_loan +#: code:addons/bank_loan/models/bank_loan.py:121 +#, python-format +msgid "Lines amount is misconfigured, it can't be more than %s!" +msgstr "" +"¡El/Los importe(s) en la(s) lÃnea(s) es incorrecto o está mal configurado!\n" +"No debe superar: %s" + +#. module: bank_loan +#: model:ir.model,name:bank_loan.model_res_bank_loan_line +msgid "Lines describing the loans for an specific Bank" +msgstr "LÃneas que resumen los préstamos para un Banco especÃfico" + +#. module: bank_loan +#: field:bank.loan.line,loan_id:0 +msgid "Loan" +msgstr "Préstamo" + +#. module: bank_loan +#: view:res.bank:bank_loan.view_res_bank_form_inherit_add_loan_line_ids +#: field:res.bank,loan_line_ids:0 +msgid "Loan Lines" +msgstr "Préstamos" + +#. module: bank_loan +#: code:addons/bank_loan/models/res_bank.py:105 +#: sql_constraint:res.bank.loan.line:0 +#, python-format +msgid "Loan duplicated!" +msgstr "¡Préstamo duplicado!" + +#. module: bank_loan +#: view:bank.loan:bank_loan.view_bank_loan_form +msgid "Maturities" +msgstr "Vencimientos" + +#. module: bank_loan +#: field:bank.loan,maturity_date:0 field:bank.loan.line,maturity_date:0 +msgid "Maturity Date" +msgstr "Fecha de Vencimiento" + +#. module: bank_loan +#: code:addons/bank_loan/models/bank_loan.py:130 +#, python-format +msgid "Maturity Date must be >= Rate Type Close Date!" +msgstr "¡La Fecha de Vencimiento debe ser mayor o igual a la Fecha de Cierre del TC!" + +#. module: bank_loan +#: code:addons/bank_loan/models/bank_loan.py:232 +#, python-format +msgid "Maturity Date must be >= to the Loan Maturity Date (%s)!" +msgstr "¡La Fecha de Vencimiento debe ser mayor o igual a la Fecha de Vencimiento del Préstamo (%s)!" + +#. module: bank_loan +#: field:bank.loan,nar:0 +msgid "NAR" +msgstr "TNA" + +#. module: bank_loan +#: code:addons/bank_loan/models/bank_loan.py:115 +#, python-format +msgid "NAR must be >= 0!" +msgstr "¡TNA debe ser mayor o igual a 0!" + +#. module: bank_loan +#: view:bank.loan.concept:bank_loan.view_bank_loan_concept_form +#: field:bank.loan.concept,name:0 +msgid "Name" +msgstr "Nombre" + +#. module: bank_loan +#: field:bank.loan,next_maturity_date:0 +msgid "Next Maturity Date" +msgstr "Siguiente Fecha de Vencimiento" + +#. module: bank_loan +#: selection:bank.loan,state:0 +msgid "Open" +msgstr "Abierto" + +#. module: bank_loan +#: field:bank.loan,operation_nbr:0 +msgid "Operation N°" +msgstr "N° de operación" + +#. module: bank_loan +#: view:bank.loan:bank_loan.view_bank_loan_form +msgid "Post" +msgstr "Contabilizar" + +#. module: bank_loan +#: selection:bank.loan,state:0 +msgid "Posted" +msgstr "Contabilizado" + +#. module: bank_loan +#: view:bank.loan:bank_loan.view_bank_loan_form +msgid "Rate Type" +msgstr "Tipo de Cambio" + +#. module: bank_loan +#: field:bank.loan,refund_rate_type:0 +msgid "Rate Type (Refund)" +msgstr "Tipo de Cambio (Devolución)" + +#. module: bank_loan +#: field:bank.loan,request_rate_type:0 +msgid "Rate Type (Request)" +msgstr "Tipo de Cambio (Pedido)" + +#. module: bank_loan +#: field:bank.loan,rate_type_date:0 +msgid "Rate Type Close Date" +msgstr "Fecha de cierre del TC" + +#. module: bank_loan +#: code:addons/bank_loan/models/bank_loan.py:91 +#: code:addons/bank_loan/models/bank_loan.py:97 +#, python-format +msgid "Rate Type must be >= 0!" +msgstr "¡El Tipo de Cambio debe ser mayor o igual a 0!" + +#. module: bank_loan +#: view:bank.loan:bank_loan.view_bank_loan_form +msgid "Set to Draft" +msgstr "Volver a Borrador" + +#. module: bank_loan +#: view:bank.loan:bank_loan.view_bank_loan_form +msgid "Set to Open" +msgstr "Abrir Préstamo" + +#. module: bank_loan +#: field:res.bank.loan.line,start_date:0 +msgid "Start Date" +msgstr "Fecha de Inicio" + +#. module: bank_loan +#: code:addons/bank_loan/models/res_bank.py:53 +#, python-format +msgid "Start Date must be < Stop Date!" +msgstr "¡Fecha de Inicio debe ser menor a Fecha de Fin!" + +#. module: bank_loan +#: field:bank.loan,state:0 +msgid "State" +msgstr "Estado" + +#. module: bank_loan +#: field:res.bank.loan.line,stop_date:0 +msgid "Stop Date" +msgstr "Fecha de Fin" + +#. module: bank_loan +#: field:bank.loan,term_days:0 +msgid "Term" +msgstr "Plazo" + +#. module: bank_loan +#: code:addons/bank_loan/models/bank_loan.py:240 +#: sql_constraint:bank.loan.line:0 +#, python-format +msgid "The Maturity is duplicated!" +msgstr "¡El Vencimiento está duplicado!" + +#. module: bank_loan +#: code:addons/bank_loan/models/bank_loan.py:59 +#, python-format +msgid "This concept already exists!" +msgstr "¡Este Concepto ya existe!" diff --git a/models/bank_loan.py b/models/bank_loan.py index c548314dd8285b433112617e34267424625a6189..86b0b830e8affa33ed4c0808b55ad364d9bd0b9c 100644 --- a/models/bank_loan.py +++ b/models/bank_loan.py @@ -32,15 +32,35 @@ class BankLoanConcept(models.Model): _name = 'bank.loan.concept' _description = 'Bank Loan Concept' - @api.constrains("name") + @api.multi + def name_get(self): + ret = [] + for concept in self: + name = "%s (%s)" % (concept.name, concept.currency_id.name) + ret.append((concept.id, name)) + + return ret + + @api.returns("res.currency") + def _get_default_currency(self): + return self.env.ref("base.USD") + + @api.constrains("name", "currency_id") def check_name_uniq(self): for concept in self: - count = self.env["bank.loan.concept"].search_count([("name", "ilike", concept.name), - ("id", "!=", concept.id)]) + count = self.env["bank.loan.concept"].search_count( + [ + ("name", "ilike", concept.name), + ("currency_id", "=", concept.currency_id.id), + ("id", "!=", concept.id), + ] + ) if count > 0: raise exceptions.ValidationError(_("This concept already exists!")) name = fields.Char(string='Name', size=256, required=True) + currency_id = fields.Many2one('res.currency', string='Currency', required=True, + default=_get_default_currency) class BankLoan(models.Model): @@ -48,10 +68,6 @@ class BankLoan(models.Model): _description = 'Bank Loan' _rec_name = "bank_id" - @api.returns("res.currency") - def _get_default_currency(self): - return self.env.ref("base.USD") - @api.multi def name_get(self): ret = [] @@ -111,12 +127,12 @@ class BankLoan(models.Model): rate_type_date = fields.Date.from_string(loan.rate_type_date) maturity_date = fields.Date.from_string(loan.maturity_date) if maturity_date < rate_type_date: - raise exceptions.ValidationError(_("Due Date must be >= Rate Type Close Date!")) + err = _("Maturity Date must be >= Rate Type Close Date!") + raise exceptions.ValidationError(err) bank_id = fields.Many2one('res.bank', string='Bank', required=True) concept_id = fields.Many2one('bank.loan.concept', string='Concept', required=True) - currency_id = fields.Many2one('res.currency', string='Currency', required=True, - default=_get_default_currency) + currency_id = fields.Many2one(related="concept_id.currency_id", store=True) operation_nbr = fields.Char(string='Operation N°', size=128) total_amount = fields.Float(string='Amount', digits=dp.get_precision('Account')) request_rate_type = fields.Float(string='Rate Type (Request)', @@ -127,9 +143,10 @@ class BankLoan(models.Model): nar = fields.Float(string='NAR', digits=dp.get_precision('Account')) capital = fields.Float(string='Capital', digits=dp.get_precision('Account')) interest = fields.Float(string='Interest', digits=dp.get_precision('Account')) - maturity_date = fields.Date(string='Due Date', required=True) + maturity_date = fields.Date(string='Maturity Date', required=True) term_days = fields.Integer(string='Term', compute="_calc_term_days") - next_maturity_date = fields.Date(string='Next Due Date', compute="_calc_next_maturity_date") + next_maturity_date = fields.Date(string='Next Maturity Date', + compute="_calc_next_maturity_date") close_date = fields.Date(string='Close Date') line_ids = fields.One2many('bank.loan.line', 'loan_id', string='Lines') state = fields.Selection( @@ -212,13 +229,13 @@ class BankLoanLine(models.Model): maturity_date = fields.Date.from_string(line.maturity_date) loan_maturity_date = fields.Date.from_string(line.loan_id.maturity_date) if maturity_date and loan_maturity_date and maturity_date > loan_maturity_date: - err = _("Due Date must be >= to the Loan Due Date (%s)!") + err = _("Maturity Date must be >= to the Loan Maturity Date (%s)!") raise exceptions.ValidationError(err % line.loan_id.maturity_date) loan_id = fields.Many2one('bank.loan', string='Loan', required=True, ondelete='cascade') amount = fields.Float(string='Amount', digits=dp.get_precision('Account')) - maturity_date = fields.Date(string='Due Date', required=True) + maturity_date = fields.Date(string='Maturity Date', required=True) _sql_constraints = [ - ("uniq_date", "UNIQUE(loan_id, maturity_date)", _("The Due Date is duplicated!")) + ("uniq_date", "UNIQUE(loan_id, maturity_date)", _("The Maturity is duplicated!")) ] diff --git a/models/res_bank.py b/models/res_bank.py index ece6d205fc22c79ed090944da4e9731123e7d270..c9977c05ddf8e2ba7ac742c39803429e7e1f4c5f 100644 --- a/models/res_bank.py +++ b/models/res_bank.py @@ -19,7 +19,7 @@ # ############################################################################## -from openerp import api, fields, models +from openerp import _, api, exceptions, fields, models from openerp.addons import decimal_precision as dp @@ -37,17 +37,71 @@ class ResBankLoanLine(models.Model): def _get_default_currency(self): return self.env.ref("base.USD") + def _get_default_start_date(self): + today = fields.Date.from_string(fields.Date.context_today(self)) + return "%s-01-01" % today.year + + @api.constrains("start_date", "stop_date") + def check_dates(self): + for line in self: + if not (line.start_date and line.stop_date): + continue + + start_date = fields.Date.from_string(line.start_date) + stop_date = fields.Date.from_string(line.stop_date) + if stop_date <= start_date: + raise exceptions.ValidationError(_("Start Date must be < Stop Date!")) + + @api.onchange("start_date") + def onchange_start_date(self): + if not self.start_date: + return + + start_date = fields.Date.from_string(self.start_date) + self.stop_date = "%s-12-31" % start_date.year + bank_id = fields.Many2one('res.bank', string='Bank', required=True) - currency_id = fields.Many2one('res.currency', string='Currency', required=True, - default=_get_default_currency) + currency_id = fields.Many2one(related="concept_id.currency_id", store=True) + concept_id = fields.Many2one('bank.loan.concept', string='Concept', required=True) amount_to_loan = fields.Float(string='Amount to Loan', digits=dp.get_precision('Account')) amount_loaned = fields.Float(string='Amount Loaned', digits=dp.get_precision('Account'), compute="_calc_loaned_remaining") amount_remaining = fields.Float(string='Amount Remaining', digits=dp.get_precision('Account'), compute="_calc_loaned_remaining") + start_date = fields.Date(string='Start Date', required=True, default=_get_default_start_date) + stop_date = fields.Date(string='Stop Date', required=True) - @api.depends("amount_to_loan") + @api.depends("amount_to_loan", "concept_id", "currency_id", "start_date", "stop_date") def _calc_loaned_remaining(self): + query = """ + SELECT COALESCE(SUM(line.amount), 0) + FROM bank_loan_line AS line + JOIN bank_loan AS loan + ON loan.id = line.loan_id + WHERE line.maturity_date <= current_date + AND loan.state IN ('open', 'posted') + AND loan.bank_id = %s + AND line.maturity_date BETWEEN %s AND %s + AND loan.concept_id = %s + AND loan.currency_id = %s + """ for line in self: - line.amount_loaned = 0 - line.amount_remaining = 0 + if not (line.amount_to_loan and line.currency_id and line.concept_id and + line.start_date and line.stop_date) or isinstance(line.bank_id.id, + models.NewId): + continue + + self.env.cr.execute(query, (line.bank_id.id, line.start_date, line.stop_date, + line.concept_id.id, line.currency_id.id)) + amount_loaned = self.env.cr.fetchone()[0] + + line.amount_loaned = amount_loaned + line.amount_remaining = line.amount_to_loan - amount_loaned + + _sql_constraints = [ + ( + "uniq_dates_bank_concept_curr", + "UNIQUE(start_date, stop_date, currency_id, bank_id, concept_id)", + _("Loan duplicated!") + ) + ] diff --git a/views/bank_loan_view.xml b/views/bank_loan_view.xml index 797fbd1574f708960bc78d3b22f5cbeaeec3e75f..4b35bce4cafe14a3f871c8f864fe5b87b37384de 100644 --- a/views/bank_loan_view.xml +++ b/views/bank_loan_view.xml @@ -35,7 +35,7 @@ <field name="arch" type="xml"> <form string="Bank Loan"> <header> - <button string="Open" states="draft" type="object" name="button_open" class="oe_highlight"/> + <button string="Set to Open" states="draft" type="object" name="button_open" class="oe_highlight"/> <button string="Set to Draft" states="open" type="object" name="button_draft"/> <button string="Post" states="open" type="object" name="button_post" class="oe_highlight"/> <button string="Close" states="posted" type="object" name="button_close"/> @@ -44,36 +44,37 @@ <sheet> <h1> <label for="bank_id" class="oe_inline oe_edit_only"/> - <field name="bank_id" class="oe_inline"/> + <field name="bank_id" class="oe_inline" attrs="{'readonly': [('state', 'not in', ('draft',))]}"/> </h1> <h2> <label for="concept_id" class="oe_inline"/> - <field name="concept_id" class="oe_inline"/> + <field name="concept_id" class="oe_inline" attrs="{'readonly': [('state', 'not in', ('draft',))]}"/> <label for="total_amount" class="oe_inline"/> - <field name="total_amount" class="oe_inline"/> + <field name="total_amount" class="oe_inline" attrs="{'readonly': [('state', 'not in', ('draft',))]}"/> </h2> <group col="4" colspan="2" string="Rate Type"> - <field name="currency_id"/> - <field name="rate_type_date"/> - <field name="request_rate_type"/> - <field name="nar"/> - <field name="capital"/> - <field name="interest"/> - <field name="refund_rate_type"/> - <field name="term_days"/> + <field name="currency_id" readonly="1"/> + <field name="rate_type_date" attrs="{'readonly': [('state', 'not in', ('draft',))]}"/> + <field name="request_rate_type" attrs="{'readonly': [('state', 'not in', ('draft',))]}"/> + <field name="nar" attrs="{'readonly': [('state', 'not in', ('draft',))]}"/> + <field name="capital" attrs="{'readonly': [('state', 'not in', ('draft',))]}"/> + <field name="interest" attrs="{'readonly': [('state', 'not in', ('draft',))]}"/> + <field name="refund_rate_type" attrs="{'readonly': [('state', 'not in', ('draft',))]}"/> + <field name="term_days" attrs="{'readonly': [('state', 'not in', ('draft',))]}"/> </group> <group col="4" colspan="2"> - <field name="operation_nbr"/> - <field name="maturity_date"/> - <field name="next_maturity_date"/> + <field name="operation_nbr" attrs="{'readonly': [('state', 'not in', ('draft',))]}"/> + <field name="maturity_date" attrs="{'readonly': [('state', 'not in', ('draft',))]}"/> + <field name="next_maturity_date" attrs="{'readonly': [('state', 'not in', ('draft',))]}"/> <field name="close_date" readonly="1"/> </group> <notebook colspan="4"> <page string="Maturities"> <group> - <field name="line_ids" nolabel="1"> + <field name="line_ids" nolabel="1" + attrs="{'readonly': [('state', 'not in', ('draft',))]}"> <tree editable="bottom"> - <field name="amount" required="1"/> + <field name="amount" required="1" sum="Total Amount"/> <field name="maturity_date"/> </tree> </field> @@ -93,24 +94,42 @@ <field name="arch" type="xml"> <search string="Bank Loan"> <field name="bank_id" select="True"/> + <field name="concept_id"/> + <field name="operation_nbr"/> + <field name="total_amount"/> + <field name="maturity_date"/> + <!--<field name="next_maturity_date"/>--> + <field name="close_date"/> + <field name="rate_type_date"/> + <field name="term_days"/> + <filter string="Draft" domain="[('state', '=', 'draft')]" name="filter_by_draft"/> + <filter string="Open" domain="[('state', '=', 'open')]" name="filter_by_open"/> + <filter string="Posted" domain="[('state', '=', 'posted')]" name="filter_by_posted"/> + <filter string="Closed" domain="[('state', '=', 'closed')]" name="filter_by_closed"/> + <group expand="0" string="Group By..."> + <filter string="Concept" context="{'group_by': 'concept_id'}" name="group_by_concept_id"/> + <filter string="Bank" context="{'group_by': 'bank_id'}" name="group_by_bank_id"/> + <filter string="Maturity Date" context="{'group_by': 'maturity_date'}" name="group_by_maturity_date"/> + <filter string="Close Date" context="{'group_by': 'close_date'}" name="group_by_close_date"/> + <filter string="Rate Type Close Date" context="{'group_by': 'rate_type_date'}" + name="group_by_rate_type_date"/> + </group> </search> </field> </record> <record model="ir.actions.act_window" id="act_open_bank_loan_view"> - <field name="name">Bank Loan</field> + <field name="name">Bank Loans</field> <field name="type">ir.actions.act_window</field> <field name="res_model">bank.loan</field> <field name="view_type">form</field> <field name="view_mode">tree,form</field> <field name="search_view_id" ref="view_bank_loan_search"/> <field name="domain">[]</field> - <field name="context">{}</field> + <field name="context">{'search_default_group_by_concept_id': 1}</field> <field name="help" type="html"> <p class="oe_view_nocontent_create"> Click to create a new Bank Loan - </p><p> - Bank Loan </p> </field> </record> @@ -129,5 +148,40 @@ <field name="view_id" ref="view_bank_loan_tree"/> </record> + <!-- Concept --> + + <record id="view_bank_loan_concept_tree" model="ir.ui.view"> + <field name="name">bank.loan.concept.tree</field> + <field name="model">bank.loan.concept</field> + <field name="type">tree</field> + <field name="priority" eval="8"/> + <field name="arch" type="xml"> + <tree string="Bank Loan Concept"> + <field name="name"/> + <field name="currency_id"/> + </tree> + </field> + </record> + + <record id="view_bank_loan_concept_form" model="ir.ui.view"> + <field name="name">bank.loan.concept.form</field> + <field name="model">bank.loan.concept</field> + <field name="type">form</field> + <field name="priority" eval="8"/> + <field name="arch" type="xml"> + <form string="Bank Loan Concept"> + <sheet> + <h1> + <label for="name" string="Name" class="oe_inline"/> + <field name="name" placeholder="Bank Loan Concept Name" class="oe_inline"/> + </h1> + <group col="4" colspan="2"> + <field name="currency_id"/> + </group> + </sheet> + </form> + </field> + </record> + </data> </openerp> diff --git a/views/res_bank_view.xml b/views/res_bank_view.xml index 793b5b7b6412d7506c695f57b490c9d9f0de5eb5..9b05b8023b5b306e9019d0a8b31843673b0ce3f7 100644 --- a/views/res_bank_view.xml +++ b/views/res_bank_view.xml @@ -8,15 +8,18 @@ <field name="inherit_id" ref="base.view_res_bank_form"/> <field name="priority" eval="8"/> <field name="arch" type="xml"> - <xpath expr="/form/sheet/group" position="after"> + <xpath expr="/form/sheet/group[last()]" position="after"> <notebook colspan="4"> <page string="Loan Lines"> <field name="loan_line_ids"> <tree editable="bottom"> - <field name="currency_id"/> + <field name="currency_id" readonly="1"/> + <field name="concept_id"/> <field name="amount_to_loan"/> <field name="amount_loaned"/> <field name="amount_remaining"/> + <field name="start_date"/> + <field name="stop_date"/> </tree> </field> </page>