summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFabien Pinckaers <fp@tinyerp.com>2012-12-08 14:57:23 +0100
committerFabien Pinckaers <fp@tinyerp.com>2012-12-08 14:57:23 +0100
commit94d94a9d54745485296ce91a01bbdfecac18b4e8 (patch)
tree0b4e9deb198ee9e41d17eda6f85891a3e3d5a496
parent56f5c12020eaa508115c44e46771219446bb17b2 (diff)
parent00e42737f29de12dc43c279c079b13836c57a15d (diff)
[IMP] implification of payment terms, it even works without balance line
bzr revid: fp@tinyerp.com-20121208135723-ori198g559b1sxsu
-rw-r--r--addons/account/account.py17
-rw-r--r--addons/account/account_view.xml35
-rw-r--r--addons/account/data/account_data.xml56
-rw-r--r--addons/account/demo/account_demo.xml35
4 files changed, 78 insertions, 65 deletions
diff --git a/addons/account/account.py b/addons/account/account.py
index 98e51d0cf4f..9ae6edcba38 100644
--- a/addons/account/account.py
+++ b/addons/account/account.py
@@ -75,8 +75,8 @@ class account_payment_term(osv.osv):
amount = value
result = []
obj_precision = self.pool.get('decimal.precision')
+ prec = obj_precision.precision_get(cr, uid, 'Account')
for line in pt.line_ids:
- prec = obj_precision.precision_get(cr, uid, 'Account')
if line.value == 'fixed':
amt = round(line.value_amount, prec)
elif line.value == 'procent':
@@ -92,19 +92,20 @@ class account_payment_term(osv.osv):
next_date += relativedelta(day=line.days2, months=1)
result.append( (next_date.strftime('%Y-%m-%d'), amt) )
amount -= amt
- return result
-account_payment_term()
+ amount = reduce(lambda x,y: x+y[1], result, 0.0)
+ dist = round(value-amount, prec)
+ if dist:
+ result.append( (time.strftime('%Y-%m-%d'), dist) )
+ return result
class account_payment_term_line(osv.osv):
_name = "account.payment.term.line"
_description = "Payment Term Line"
_columns = {
- 'name': fields.char('Line Name', size=32, required=True),
- 'sequence': fields.integer('Sequence', required=True, help="The sequence field is used to order the payment term lines from the lowest sequences to the higher ones"),
'value': fields.selection([('procent', 'Percent'),
('balance', 'Balance'),
- ('fixed', 'Fixed Amount')], 'Valuation',
+ ('fixed', 'Fixed Amount')], 'Computation',
required=True, help="""Select here the kind of valuation related to this payment term line. Note that you should have your last line with the type 'Balance' to ensure that the whole amount will be treated."""),
'value_amount': fields.float('Amount To Pay', digits_compute=dp.get_precision('Payment Term'), help="For percent enter a ratio between 0-1."),
@@ -115,10 +116,10 @@ class account_payment_term_line(osv.osv):
}
_defaults = {
'value': 'balance',
- 'sequence': 5,
+ 'days': 30,
'days2': 0,
}
- _order = "sequence"
+ _order = "value desc,days"
def _check_percent(self, cr, uid, ids, context=None):
obj = self.browse(cr, uid, ids[0], context=context)
diff --git a/addons/account/account_view.xml b/addons/account/account_view.xml
index 6d3519cc461..401f569c74e 100644
--- a/addons/account/account_view.xml
+++ b/addons/account/account_view.xml
@@ -1549,10 +1549,8 @@
<field name="model">account.payment.term.line</field>
<field name="arch" type="xml">
<tree string="Payment Term">
- <field name="sequence"/>
- <field name="name"/>
<field name="value"/>
- <field name="value_amount"/>
+ <field name="value_amount" attrs="{'readonly':[('value','=','balance')]}"/>
<field name="days"/>
<field name="days2"/>
</tree>
@@ -1564,36 +1562,19 @@
<field name="arch" type="xml">
<form string="Payment Term" version="7.0">
<group>
- <field name="name"/>
- <field name="sequence"/>
- </group>
- <group>
<group string="Amount Computation">
- <field name="value"/>
- <field name="value_amount" attrs="{'readonly':[('value','=','balance')]}"/>
+ <field name="value"/>
+ <label for="value_amount" string="Amount To Pay" attrs="{'invisible':[('value','=','balance')]}"/>
+ <div attrs="{'invisible':[('value','=','balance')]}">
+ <field name="value_amount" class="oe_inline"/>
+ <label string="%%" class="oe_inline" attrs="{'invisible':['!',('value','=','procent')]}" />
+ </div>
</group>
<group string="Due Date Computation">
<field name="days"/>
<field name="days2"/>
</group>
</group>
-
- <separator string="Example"/>
- <label string="At 14 net days 2 percent, remaining amount at 30 days end of month."/>
- <group>
- <label string="Line 1:" colspan="2"/>
- <label string=" Valuation: Percent"/>
- <label string=" Number of Days: 14"/>
- <label string=" Value amount: 0.02"/>
- <label string=" Day of the Month: 0"/>
- </group>
- <group>
- <label string="Line 2:" colspan="2"/>
- <label string=" Valuation: Balance"/>
- <label string=" Number of Days: 30"/>
- <label string=" Value amount: n.a"/>
- <label string=" Day of the Month= -1"/>
- </group>
</form>
</field>
</record>
@@ -1616,7 +1597,7 @@
<field name="name"/>
<field name="active"/>
</group>
- <field name="note" placeholder="Note for the invoice..."/>
+ <field name="note" placeholder="Payment term explanation for the customer..."/>
<separator string="Computation"/>
<field name="line_ids"/>
</form>
diff --git a/addons/account/data/account_data.xml b/addons/account/data/account_data.xml
index 97bea14c1f2..f8a0fcdfcaa 100644
--- a/addons/account/data/account_data.xml
+++ b/addons/account/data/account_data.xml
@@ -10,17 +10,33 @@
<!--
Payment term
-->
- <record id="account_payment_term" model="account.payment.term">
- <field name="name">30 Days End of Month</field>
- <field name="note">30 Days End of Month</field>
+ <record id="account_payment_term_immediate" model="account.payment.term">
+ <field name="name">Immediate Payment</field>
+ <field name="note">Immediate Payment</field>
</record>
- <record id="account_payment_term_line" model="account.payment.term.line">
- <field name="name">30 Days End of Month</field>
+
+ <record id="account_payment_term_line_immediate" model="account.payment.term.line">
+ <field name="name">Immediate Payment</field>
<field name="value">balance</field>
- <field eval="30" name="days"/>
- <field eval="-1" name="days2"/>
- <field eval="account_payment_term" name="payment_id"/>
+ <field eval="0" name="days"/>
+ <field eval="0" name="days2"/>
+ <field eval="account_payment_term_immediate" name="payment_id"/>
+ </record>
+
+
+ <record id="account_payment_term_15days" model="account.payment.term">
+ <field name="name">15 Days</field>
+ <field name="note">15 Days</field>
+ </record>
+
+ <record id="account_payment_term_line_15days" model="account.payment.term.line">
+ <field name="name">15 Days</field>
+ <field name="value">balance</field>
+ <field eval="15" name="days"/>
+ <field eval="0" name="days2"/>
+ <field eval="account_payment_term_15days" name="payment_id"/>
</record>
+
<record forcecreate="True" id="decimal_payment" model="decimal.precision">
<field name="name">Payment Term</field>
<field name="digits">6</field>
@@ -30,6 +46,7 @@
<field name="name">30 Net Days</field>
<field name="note">30 Net Days</field>
</record>
+
<record id="account_payment_term_line_net" model="account.payment.term.line">
<field name="name">30 Net Days</field>
<field name="value">balance</field>
@@ -37,28 +54,7 @@
<field eval="0" name="days2"/>
<field eval="account_payment_term_net" name="payment_id"/>
</record>
-
- <record id="account_payment_term_advance" model="account.payment.term">
- <field name="name">30% Advance End 30 Days</field>
- <field name="note">30% Advance End 30 Days</field>
- </record>
- <record id="account_payment_term_line_advance1" model="account.payment.term.line">
- <field name="name">30% Advance</field>
- <field name="value">procent</field>
- <field eval="3" name="sequence"/>
- <field eval="0.300000" name="value_amount"/>
- <field eval="0" name="days"/>
- <field eval="0" name="days2"/>
- <field eval="account_payment_term_advance" name="payment_id"/>
- </record>
- <record id="account_payment_term_line_advance2" model="account.payment.term.line">
- <field name="name">Remaining Balance</field>
- <field name="value">balance</field>
- <field eval="30" name="days"/>
- <field eval="-1" name="days2"/>
- <field eval="account_payment_term_advance" name="payment_id"/>
- </record>
-
+
<!--
Account Journal Sequences
-->
diff --git a/addons/account/demo/account_demo.xml b/addons/account/demo/account_demo.xml
index 8b0f026c9f0..6918ad44702 100644
--- a/addons/account/demo/account_demo.xml
+++ b/addons/account/demo/account_demo.xml
@@ -127,6 +127,41 @@
<field eval="time.strftime('%Y')+'-12-31'" name="date_stop"/>
<field name="company_id" ref="base.main_company"/>
</record>
+
+ <!-- Payment Term -->
+
+ <record id="account_payment_term" model="account.payment.term">
+ <field name="name">30 Days End of Month</field>
+ <field name="note">30 Days End of Month</field>
+ </record>
+ <record id="account_payment_term_line" model="account.payment.term.line">
+ <field name="name">30 Days End of Month</field>
+ <field name="value">balance</field>
+ <field eval="30" name="days"/>
+ <field eval="-1" name="days2"/>
+ <field eval="account_payment_term" name="payment_id"/>
+ </record>
+
+ <record id="account_payment_term_advance" model="account.payment.term">
+ <field name="name">30% Advance End 30 Days</field>
+ <field name="note">30% Advance End 30 Days</field>
+ </record>
+ <record id="account_payment_term_line_advance1" model="account.payment.term.line">
+ <field name="name">30% Advance</field>
+ <field name="value">procent</field>
+ <field eval="3" name="sequence"/>
+ <field eval="0.300000" name="value_amount"/>
+ <field eval="0" name="days"/>
+ <field eval="0" name="days2"/>
+ <field eval="account_payment_term_advance" name="payment_id"/>
+ </record>
+ <record id="account_payment_term_line_advance2" model="account.payment.term.line">
+ <field name="name">Remaining Balance</field>
+ <field name="value">balance</field>
+ <field eval="30" name="days"/>
+ <field eval="-1" name="days2"/>
+ <field eval="account_payment_term_advance" name="payment_id"/>
+ </record>
<record id="base.user_demo" model="res.users">
<field name="groups_id" eval="[(4,ref('account.group_account_user'))]"/>