Merge lp:~openbig/bigconsulting/added_new_changes_in_cash_account into lp:bigconsulting

Proposed by gpa(OpenERP)
Status: Merged
Merged at revision: 26
Proposed branch: lp:~openbig/bigconsulting/added_new_changes_in_cash_account
Merge into: lp:bigconsulting
Diff against target: 228 lines (+77/-32)
4 files modified
account_invoice_cash_discount/account_invoice_cash_discount.py (+47/-9)
account_invoice_cash_discount/wizard/account_pay_invoice.py (+14/-8)
account_invoice_cash_discount/wizard/account_pay_invoice_view.xml (+1/-1)
product_ean13_generator/product_ean13_generator.py (+15/-14)
To merge this branch: bzr merge lp:~openbig/bigconsulting/added_new_changes_in_cash_account
Reviewer Review Type Date Requested Status
openbig Pending
Review via email: mp+28053@code.launchpad.net

Description of the change

Added modification in cash discount module by client. And solve problem of product_ean13_generator

To post a comment you must log in.

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
=== modified file 'account_invoice_cash_discount/account_invoice_cash_discount.py'
--- account_invoice_cash_discount/account_invoice_cash_discount.py 2010-06-18 13:06:05 +0000
+++ account_invoice_cash_discount/account_invoice_cash_discount.py 2010-06-21 13:43:25 +0000
@@ -128,19 +128,23 @@
128 payment_term_lines = self.pool.get('account.payment.term').browse(cr, uid, payment_term, context=context)128 payment_term_lines = self.pool.get('account.payment.term').browse(cr, uid, payment_term, context=context)
129 if payment_term_lines.cash_discount_ids:129 if payment_term_lines.cash_discount_ids:
130 res = 0.0130 res = 0.0
131 dis = 0.0
131 for discount_line in payment_term_lines.cash_discount_ids:132 for discount_line in payment_term_lines.cash_discount_ids:
132 if diff_day == discount_line.delay or diff_day < discount_line.delay:133 if diff_day >= dis and diff_day <= discount_line.delay:
133 account_id = discount_line.discount_account_id.id134 account_id = discount_line.discount_account_id.id
135 dis = discount_line.delay
134 return account_id 136 return account_id
135 137
136 def pay_and_reconcile(self, cr, uid, ids, pay_amount, pay_account_id, period_id, pay_journal_id, writeoff_acc_id, writeoff_period_id, writeoff_journal_id, context=None, name=''):138 def pay_and_reconcile(self, cr, uid, ids, pay_amount, pay_account_id, period_id, pay_journal_id, writeoff_acc_id, writeoff_period_id, writeoff_journal_id, context=None, name=''):
137
138 if context is None:139 if context is None:
139 context = {}140 context = {}
140 #TODO check if we can use different period for payment and the writeoff line141 #TODO check if we can use different period for payment and the writeoff line
141 assert len(ids)==1, "Can only pay one invoice at a time"142 assert len(ids)==1, "Can only pay one invoice at a time"
142 invoice = self.browse(cr, uid, ids[0])143 invoice = self.browse(cr, uid, ids[0])
143 144
145 tax_obj = self.pool.get('account.tax')
146 invoice_tax_obj = self.pool.get("account.invoice.tax")
147
144 if 'amount_currency' in context and context['amount_currency']:148 if 'amount_currency' in context and context['amount_currency']:
145 amount_currency = context['amount_currency']149 amount_currency = context['amount_currency']
146 else:150 else:
@@ -183,6 +187,7 @@
183 'currency_id':currency_id,187 'currency_id':currency_id,
184 'amount_currency':amount_currency and direction * amount_currency or 0.0,188 'amount_currency':amount_currency and direction * amount_currency or 0.0,
185 }189 }
190
186 l2 = {191 l2 = {
187 'debit': direction * (pay_amount-amount_discount)<0 and - direction * (pay_amount-amount_discount),192 'debit': direction * (pay_amount-amount_discount)<0 and - direction * (pay_amount-amount_discount),
188 'credit': direction * (pay_amount-amount_discount)>0 and direction * (pay_amount-amount_discount),193 'credit': direction * (pay_amount-amount_discount)>0 and direction * (pay_amount-amount_discount),
@@ -199,12 +204,47 @@
199 l1['name'] = name204 l1['name'] = name
200 l2['name'] = name205 l2['name'] = name
201 lines = [(0, 0, l1), (0, 0, l2)]206 lines = [(0, 0, l1), (0, 0, l2)]
207
208 discount_amount = 0.0
209 tax_total_amount = 0.0
210 if 'cash_amount' in context and context['cash_amount']:
211 discount_amount = context['cash_amount']
212
213 if discount_amount>0.0:
214 for line in invoice.invoice_line:
215 if line.invoice_line_tax_id:
216 for tax in tax_obj.compute(cr, uid, line.invoice_line_tax_id, discount_amount, line.quantity, invoice.address_invoice_id.id, line.product_id, invoice.partner_id):
217 tax_amount = tax['amount']
218 tax_total_amount += tax['amount']
219
220 tax_invoice_id = invoice_tax_obj.search(cr,uid,[('invoice_id','=',invoice.id),('name','=',tax['name'])])
221 for tax_id in tax_invoice_id:
222 tax_value = invoice_tax_obj.browse(cr, uid, tax_id)
223 tax_account_id = tax_value.account_id.id
202224
225 l3 = {
226 'debit': direction * tax_amount<0 and - direction * tax_amount,
227 'credit': direction * tax_amount>0 and direction * tax_amount,
228 'account_id': tax_account_id,
229 'partner_id': invoice.partner_id.id,
230 'ref':ref,
231 'date': date,
232 'currency_id':currency_id,
233 'amount_currency':amount_currency and direction * amount_currency or 0.0,
234 }
235 l3['name'] = name
236 lines.append((0, 0, l3))
237
203 if amount_discount>0:238 if amount_discount>0:
204 if 'account_id' in context and context['account_id']:239 if 'account_id' in context and context['account_id']:
205 account_id = context['account_id'] 240 account_id = context['account_id']
206241
207 l3 = {242 if tax_total_amount>0:
243 amount_discount = (amount_discount - tax_total_amount)
244 else:
245 amount_discount = amount_discount
246
247 l4 = {
208 'debit': direction * amount_discount<0 and - direction * amount_discount,248 'debit': direction * amount_discount<0 and - direction * amount_discount,
209 'credit': direction * amount_discount>0 and direction * amount_discount,249 'credit': direction * amount_discount>0 and direction * amount_discount,
210 'account_id': account_id,250 'account_id': account_id,
@@ -214,10 +254,8 @@
214 'currency_id':currency_id,254 'currency_id':currency_id,
215 'amount_currency':amount_currency and direction * amount_currency or 0.0,255 'amount_currency':amount_currency and direction * amount_currency or 0.0,
216 }256 }
217 l3['name'] = name257 l4['name'] = name
218 258 lines.append((0, 0, l4))
219 lines = [(0, 0, l1), (0, 0, l2), (0, 0, l3)]
220
221259
222 move = {'ref': ref, 'line_id': lines, 'journal_id': pay_journal_id, 'period_id': period_id, 'date': date}260 move = {'ref': ref, 'line_id': lines, 'journal_id': pay_journal_id, 'period_id': period_id, 'date': date}
223 move_id = self.pool.get('account.move').create(cr, uid, move, context=context)261 move_id = self.pool.get('account.move').create(cr, uid, move, context=context)
224262
=== modified file 'account_invoice_cash_discount/wizard/account_pay_invoice.py'
--- account_invoice_cash_discount/wizard/account_pay_invoice.py 2010-06-18 13:06:05 +0000
+++ account_invoice_cash_discount/wizard/account_pay_invoice.py 2010-06-21 13:43:25 +0000
@@ -79,7 +79,6 @@
7979
80 def _get_amount(self, cr, uid, context=None):80 def _get_amount(self, cr, uid, context=None):
81 residual_amount = self.pool.get('account.invoice').browse(cr, uid, context['id'], context=context).residual81 residual_amount = self.pool.get('account.invoice').browse(cr, uid, context['id'], context=context).residual
82 residual_amount -= self._get_discount(cr, uid, context=context)
83 return residual_amount82 return residual_amount
84 83
85 def on_change_ammount(self, cr, uid, ids, amount, context=None):84 def on_change_ammount(self, cr, uid, ids, amount, context=None):
@@ -110,6 +109,13 @@
110 account = self.pool.get('account.fiscal.position').map_account(cr, uid, fpos, account)109 account = self.pool.get('account.fiscal.position').map_account(cr, uid, fpos, account)
111 return account110 return account
112 111
112 def default_get(self, cr, uid, fields, context=None):
113 res = super(account_invoice_pay, self).default_get(cr, uid, fields, context=context)
114 invoice = self.pool.get('account.invoice').browse(cr, uid, context['id'], context=context)
115 if invoice.state in ['draft', 'proforma2', 'cancel']:
116 raise osv.except_osv(_('Error !'), _('Can not pay draft/proforma/cancel invoice.'))
117 return res
118
113 _defaults = {119 _defaults = {
114 'date': lambda *a: time.strftime('%Y-%m-%d'),120 'date': lambda *a: time.strftime('%Y-%m-%d'),
115 'period_id': _get_period,121 'period_id': _get_period,
@@ -143,9 +149,9 @@
143 # Get the current amount paid in company currency149 # Get the current amount paid in company currency
144 if journal.currency and invoice.company_id.currency_id.id<>journal.currency.id:150 if journal.currency and invoice.company_id.currency_id.id<>journal.currency.id:
145 ctx = {'date':data['date']}151 ctx = {'date':data['date']}
146 amount_paid = cur_obj.compute(cr, uid, journal.currency.id, invoice.company_id.currency_id.id, data['amount']+data['cash_amount'], round=True, context=ctx)152 amount_paid = cur_obj.compute(cr, uid, journal.currency.id, invoice.company_id.currency_id.id, data['amount'], round=True, context=ctx)
147 else:153 else:
148 amount_paid = data['amount'] + data['cash_amount']154 amount_paid = data['amount']
149 # Get the old payment if there are some155 # Get the old payment if there are some
150 if invoice.payment_ids:156 if invoice.payment_ids:
151 debit=credit=0.0157 debit=credit=0.0
@@ -186,8 +192,8 @@
186 writeoff_journal_id = context['write_off']['writeoff_journal_id']192 writeoff_journal_id = context['write_off']['writeoff_journal_id']
187 comment = context['write_off']['comment']193 comment = context['write_off']['comment']
188194
189 amount = data['amount'] + data['cash_amount']195 amount = data['amount']
190196
191 invoice = self.pool.get('account.invoice').browse(cr, uid, context['id'], context=context)197 invoice = self.pool.get('account.invoice').browse(cr, uid, context['id'], context=context)
192 journal = self.pool.get('account.journal').browse(cr, uid, data['journal_id'], context=context)198 journal = self.pool.get('account.journal').browse(cr, uid, data['journal_id'], context=context)
193 # Compute the amount in company's currency, with the journal currency (which is equal to payment currency)199 # Compute the amount in company's currency, with the journal currency (which is equal to payment currency)
@@ -197,14 +203,14 @@
197 amount = cur_obj.compute(cr, uid, journal.currency.id, invoice.company_id.currency_id.id, amount, context=ctx)203 amount = cur_obj.compute(cr, uid, journal.currency.id, invoice.company_id.currency_id.id, amount, context=ctx)
198 currency_id = journal.currency.id204 currency_id = journal.currency.id
199 # Put the paid amount in currency, and the currency, in the context if currency is different from company's currency205 # Put the paid amount in currency, and the currency, in the context if currency is different from company's currency
200 context.update({'amount_currency':data['amount'] + data['cash_amount'],'currency_id':currency_id})206 context.update({'amount_currency':data['amount'],'currency_id':currency_id})
201207
202 if invoice.company_id.currency_id.id<>invoice.currency_id.id:208 if invoice.company_id.currency_id.id<>invoice.currency_id.id:
203 ctx = {'date':data['date']}209 ctx = {'date':data['date']}
204 amount = cur_obj.compute(cr, uid, invoice.currency_id.id, invoice.company_id.currency_id.id, amount, context=ctx)210 amount = cur_obj.compute(cr, uid, invoice.currency_id.id, invoice.company_id.currency_id.id, amount, context=ctx)
205 currency_id = invoice.currency_id.id211 currency_id = invoice.currency_id.id
206 # Put the paid amount in currency, and the currency, in the context if currency is different from company's currency212 # Put the paid amount in currency, and the currency, in the context if currency is different from company's currency
207 context.update({'amount_currency':data['amount'] + data['cash_amount'],'currency_id':currency_id})213 context.update({'amount_currency':data['amount'],'currency_id':currency_id})
208214
209 # Take the choosen date215 # Take the choosen date
210 if comment:216 if comment:
@@ -212,7 +218,7 @@
212 else:218 else:
213 context.update({'date_p':data['date'],'comment':False})219 context.update({'date_p':data['date'],'comment':False})
214220
215 context.update({'account_id':data['account_id'],'cash_amount':data['cash_amount'],'amount_currency':data['amount'] + data['cash_amount']}) 221 context.update({'account_id':data['account_id'],'cash_amount':data['cash_amount'],'amount_currency':data['amount']})
216 222
217 acc_id = journal.default_credit_account_id and journal.default_credit_account_id.id223 acc_id = journal.default_credit_account_id and journal.default_credit_account_id.id
218 if not acc_id:224 if not acc_id:
219225
=== modified file 'account_invoice_cash_discount/wizard/account_pay_invoice_view.xml'
--- account_invoice_cash_discount/wizard/account_pay_invoice_view.xml 2010-08-05 13:41:54 +0000
+++ account_invoice_cash_discount/wizard/account_pay_invoice_view.xml 2010-06-21 13:43:25 +0000
@@ -12,7 +12,7 @@
12 <newline/>12 <newline/>
13 <field name="name"/>13 <field name="name"/>
14 <field name="date"/>14 <field name="date"/>
15 <field name="journal_id"/>15 <field name="journal_id" domain="[('type','=','cash')]"/>
16 <field name="period_id"/>16 <field name="period_id"/>
17 <field name="cash_amount" attrs="{'required':[('cash_amount','>',0)]}"/>17 <field name="cash_amount" attrs="{'required':[('cash_amount','>',0)]}"/>
18 <field name="account_id" attrs="{'required':[('cash_amount','>',0)]}"/>18 <field name="account_id" attrs="{'required':[('cash_amount','>',0)]}"/>
1919
=== modified file 'product_ean13_generator/product_ean13_generator.py'
--- product_ean13_generator/product_ean13_generator.py 2010-06-03 06:48:10 +0000
+++ product_ean13_generator/product_ean13_generator.py 2010-06-21 13:43:25 +0000
@@ -37,20 +37,21 @@
37 raise ValueError('invalid test')37 raise ValueError('invalid test')
38 cr.execute('select id from ir_sequence where '+test+' and active=%s', (sequence_id, True,))38 cr.execute('select id from ir_sequence where '+test+' and active=%s', (sequence_id, True,))
39 res = cr.dictfetchone()39 res = cr.dictfetchone()
40 ean_nr = self.browse(cr, uid, res['id'], context=context)40 if res:
41 sequence = super(ir_sequence, self).get_id(cr, uid, sequence_id, test, context)41 ean_nr = self.browse(cr, uid, res['id'], context=context)
42 code = 'generator.ean13'42 sequence = super(ir_sequence, self).get_id(cr, uid, sequence_id, test, context)
43 43 code = 'generator.ean13'
44 if ean_nr.code == code:44
45 number = ean_nr.number_max45 if ean_nr.code == code:
46 check_seq = sequence[8:]46 number = ean_nr.number_max
47 if check_seq >= ean_nr.warning_number:47 check_seq = sequence[8:]
48 obj = self.pool.get("ir.actions.server")48 if check_seq >= ean_nr.warning_number:
49 action_name = "EAN Generator Action"49 obj = self.pool.get("ir.actions.server")
50 id = obj.search(cr, uid, [('name',"ilike",action_name)])50 action_name = "EAN Generator Action"
51 context.update({'active_id':res['id']})51 id = obj.search(cr, uid, [('name',"ilike",action_name)])
52 obj.run(cr, uid, id, context)52 context.update({'active_id':res['id']})
53 return sequence53 obj.run(cr, uid, id, context)
54 return sequence
54 55
55ir_sequence()56ir_sequence()
5657

Subscribers

People subscribed via source and target branches