~torbat-j/+junk/ncdierp

« back to all changes in this revision

Viewing changes to ierp_loan/loan_risk_foundation.py

  • Committer: erka
  • Date: 2014-10-21 08:43:45 UTC
  • Revision ID: erka-20141021084345-vb5veh7pk63zeys9
Зээл болон худалдан авалтын классын дагуу нэмэлт талбаруудыг нэмэв.

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
# -*- coding: utf-8 -*-
 
2
import time
 
3
from datetime import datetime
 
4
from datetime import date
 
5
from dateutil.relativedelta import relativedelta
 
6
 
 
7
from openerp.osv import osv, fields
 
8
import openerp.netsvc
 
9
import openerp.pooler
 
10
from openerp.tools.translate import _
 
11
import openerp.addons.decimal_precision as dp
 
12
from openerp.tools import DEFAULT_SERVER_DATE_FORMAT, DEFAULT_SERVER_DATETIME_FORMAT
 
13
from mx.DateTime.mxDateTime.mxDateTime_Python import DateTime
 
14
#
 
15
# Model definition
 
16
#
 
17
class loan_risk_foundation(osv.osv):
 
18
    _name = "loan.risk.foundation"
 
19
    _description = "Loan Risk Foundation"
 
20
    _order = "name desc"
 
21
    STATE_SELECTION = [
 
22
        ('draft', 'Draft'),
 
23
        ('approved', 'Approved'),
 
24
        ('done', 'Done'),
 
25
        ('closed', 'Closed'),
 
26
        ('cancel', 'Cancelled')
 
27
    ]
 
28
    
 
29
    _columns = {
 
30
        'company_id':fields.many2one('res.company','Company'),
 
31
        'name': fields.char(u'Risk number', size=64, select=True,readonly=True),
 
32
        'refund_id': fields.many2one('loan.refund.risk.foundation',u'Refund risk foundation',readonly=True),
 
33
        'loan_order': fields.many2one('loan.order',u'Loan contract', domain=[('state','=','paid')],states={'closed':[('readonly',True)], 'approved':[('readonly',True)],'done':[('readonly',True)]},required=True),
 
34
        'date_order':fields.date('Order Date', required=True, states={'closed':[('readonly',True)], 'approved':[('readonly',True)],'done':[('readonly',True)]},help="Date on which this document has been created."),
 
35
        'date_approve':fields.date('Date Approved', readonly=1),
 
36
        'state': fields.selection(STATE_SELECTION, 'State', readonly=True, help="Help..."),        
 
37
        'partner_id':fields.many2one('res.partner', 'Debtor', required=True,states={'closed':[('readonly',True)], 'approved':[('readonly',True)],'done':[('readonly',True)]}),
 
38
        'notes': fields.text('Other',states={'closed':[('readonly',True)], 'approved':[('readonly',True)],'done':[('readonly',True)]}),        
 
39
        'loan_balance':fields.float(u'Loan balance',digits = (16,2),states={'closed':[('readonly',True)], 'approved':[('readonly',True)],'done':[('readonly',True)]},required=True),
 
40
        'beyond_days':fields.integer(u'Beyond days',states={'closed':[('readonly',True)], 'approved':[('readonly',True)],'done':[('readonly',True)]},required=True),
 
41
        'risk_amount':fields.float(u'Amount of risk',digits = (16,2),states={'closed':[('readonly',True)], 'approved':[('readonly',True)],'done':[('readonly',True)]},required=True),
 
42
        'risk_percent': fields.float(u'Percent of risk',digits = (16,2),states={'closed':[('readonly',True)], 'approved':[('readonly',True)],'done':[('readonly',True)]},required=True),
 
43
        'risk_account': fields.many2one('account.account',u'Account of risk foundation',states={'closed':[('readonly',True)], 'approved':[('readonly',True)],'done':[('readonly',True)]},required=True),
 
44
        'risk_expense_account': fields.many2one('account.account',u'Account of risk expense',states={'closed':[('readonly',True)], 'approved':[('readonly',True)],'done':[('readonly',True)]},required=True),
 
45
        'journal': fields.many2one('account.journal',u'Journal',states={'done':[('readonly',True)],'approved':[('readonly',True)]},required=True),
 
46
 
 
47
        'loan_current_state': fields.selection([
 
48
                                        ('d00','Normal'),
 
49
                        ('d90','Past due loans'),
 
50
                        ('d180','Abnormal loans'),
 
51
                        ('d360','Doubted loans'),
 
52
                        ('d361g','Bad loan')], u'Loan state(current)',states={'closed':[('readonly',True)], 'approved':[('readonly',True)],'done':[('readonly',True)]},required=True),
 
53
        'loan_next_state': fields.selection([
 
54
                                        ('d00','Normal'),
 
55
                        ('d90','Past due loans'),
 
56
                        ('d180','Abnormal loans'),
 
57
                        ('d360','Doubted loans'),
 
58
                        ('d361g','Bad loan')], u'Loan state(changed)',states={'closed':[('readonly',True)], 'approved':[('readonly',True)],'done':[('readonly',True)]},required=True),
 
59
                'approve_economist': fields.many2one('hr.employee',u'Approved economist',readonly=True),
 
60
                'approve_accountant': fields.many2one('hr.employee',u'Approved accountant',readonly=True),
 
61
    }
 
62
    _defaults = {
 
63
        'company_id':lambda self, cr, uid, c: self.pool.get('res.users').browse(cr, uid, uid, c).company_id.id,
 
64
        'date_order': fields.date.context_today,
 
65
        'state': 'draft',
 
66
    }
 
67
    _sql_constraints = [
 
68
        ('name_uniq', 'unique(name)', 'Risk number must be unique!'),
 
69
    ]
 
70
 
 
71
 
 
72
#   ---------------------------------MY----------------------------------------
 
73
    def onchange_risk_percent(self, cr, uid, ids, percent,balance):
 
74
        val = {}
 
75
        if percent <= 0:
 
76
            return {'warning':{'message':"Wrong percent",'title':'Warning!'}}
 
77
        ra = 0.0
 
78
        ra = percent*balance/100.0
 
79
        val['risk_amount'] = ra
 
80
        return {'value':val}
 
81
 
 
82
    def onchange_loan_order(self, cr, uid, ids, lid,today):
 
83
        val = {}
 
84
        lorder = self.pool.get('loan.order').browse(cr,uid,lid)
 
85
        lps = self.pool.get('loan.payment').search(cr,uid,[('state','=','paid'),('loan_order','=',lorder.id)],order='id')
 
86
        last_date = ''
 
87
        one = 0
 
88
        if lps != []:
 
89
            last_date = self.pool.get('loan.payment').browse(cr,uid,lps[len(lps)-1]).graphic.payment_date
 
90
            one = 1
 
91
            print 'lp',last_date
 
92
        else:
 
93
            last_date = lorder.schedules[0].payment_date
 
94
            print 'no lp',last_date
 
95
        print 'LPS',lps
 
96
        print '-----days',self._get_days(today,last_date,one),today,last_date        
 
97
        days = 0
 
98
        days = self._get_days(today,last_date,one)
 
99
        val['beyond_days'] = days
 
100
        if days <= 0:
 
101
            return {'value':{'loan_order':False},'warning':{'message':"This loan is normal. Don't create risk foundation!",'title':'Warning!'}}
 
102
        
 
103
        val['partner_id'] = lorder.partner_id.id
 
104
        val['loan_current_state'] = lorder.loan_state
 
105
        val['loan_balance'] = lorder.loan_balance
 
106
        
 
107
        return {'value':val}
 
108
 
 
109
    def _get_month_days(self,x):
 
110
                return {
 
111
                1:31, 2:28, 3:31, 4:30, 5:31, 6:30, 7:31, 8:31, 9:30, 10:31, 11:30, 12:31
 
112
        }.get(x)
 
113
 
 
114
    def _get_days(self,now,last,m):
 
115
                last_year = int(last[:4])
 
116
                last_mounth = int(last[5:7])+m
 
117
                last_day = int(last[8:])        
 
118
                
 
119
                if last_mounth > 12:
 
120
                    last_mounth = 1
 
121
                    last_year += 1
 
122
                
 
123
                now_year = int(now[:4])
 
124
                now_mounth = int(now[5:7])
 
125
                now_day = int(now[8:])  
 
126
                
 
127
                d0 = date(last_year, last_mounth, last_day)
 
128
                d1 = date(now_year, now_mounth, now_day)
 
129
                delta = d1 - d0
 
130
                return delta.days
 
131
 
 
132
#   ---------------------------------ERP----------------------------------------
 
133
    def create(self, cr, uid, vals, context=None):
 
134
        if vals['risk_amount'] <= 0:
 
135
            raise osv.except_osv(_('Invalid risk amount!'), _('Insert risk amount!'))
 
136
        if vals['risk_percent'] <= 0:
 
137
            raise osv.except_osv(_('Invalid risk percent!'), _('Insert risk period!'))
 
138
        return super(loan_risk_foundation, self).create(cr, uid, vals, context=context)
 
139
 
 
140
    def unlink(self, cr, uid, ids, context=None):
 
141
        loan_orders = self.read(cr, uid, ids, ['state'], context=context)
 
142
        unlink_ids = []
 
143
        for s in loan_orders:
 
144
            if s['state'] in ['draft','cancel']:
 
145
                unlink_ids.append(s['id'])
 
146
            else:
 
147
                raise osv.except_osv(_('Invalid action !'), _('In order to delete a loan order, it must be cancelled first!'))
 
148
        return super(loan_risk_foundation, self).unlink(cr, uid, unlink_ids, context=context)
 
149
 
 
150
    def refund_risk_validate(self, cr, uid, ids, context=None):
 
151
        order = self.browse(cr, uid, ids)[0]
 
152
        print '---',cr,uid,ids
 
153
        print 'refund action',order.name
 
154
        
 
155
        cur_id = order.loan_order.product_id.currency.id 
 
156
        res_currency_obj = self.pool.get('res.currency')
 
157
        res_users_obj = self.pool.get('res.users')
 
158
 
 
159
        company_currency_id = res_users_obj.browse(cr, uid, uid,context=context).company_id.currency_id.id
 
160
        currency_id = order.loan_order.product_id.currency.id
 
161
        
 
162
        amount_currency = res_currency_obj.compute(cr,uid, company_currency_id,currency_id,order.risk_amount, context=context)
 
163
        print 'amount currency-----',amount_currency
 
164
        amount = 0.0
 
165
        if amount_currency == order.risk_amount:
 
166
            amount_currency = 0.0
 
167
            amount = order.risk_amount
 
168
        else:
 
169
            t = amount_currency
 
170
            amount_currency = order.risk_amount
 
171
            amount = t
 
172
        
 
173
        am_id = self.pool.get('account.move').create(cr,uid, {
 
174
                                    'name':order.name,
 
175
                                    'journal_id':order.journal.id,
 
176
                                    'ref':order.loan_order.name})
 
177
                                    
 
178
        aml_one_one = self.pool.get('account.move.line').create(cr,uid,{
 
179
                                                                        'name':order.loan_order.name + u'гэрээний эрсдэлийн санг буцаав.',
 
180
                                                                        'partner_id':order.partner_id.id,
 
181
                                                                        'account_id':order.risk_expense_account.id,
 
182
                                                                        'credit':amount,
 
183
                                                                        #'currency_id':currency_id,
 
184
                                                                        #'amount_currency':amount_currency*(-1),
 
185
                                                                        'move_id':am_id })
 
186
                                                                        
 
187
        aml_one_two = self.pool.get('account.move.line').create(cr,uid,{
 
188
                                                                        'name':order.loan_order.name + u'гэрээний эрсдэлийн санг буцаав.',
 
189
                                                                        'partner_id':order.partner_id.id,
 
190
                                                                        'account_id':order.risk_account.id,
 
191
                                                                        'debit':amount,
 
192
                                                                        #'currency_id':currency_id,
 
193
                                                                        #'amount_currency':amount_currency,
 
194
                                                                'move_id':am_id })
 
195
        amove = self.pool.get('account.move').browse(cr,uid,am_id)
 
196
        amove.button_validate()
 
197
        
 
198
        new_st = order.loan_current_state
 
199
        old_st = order.loan_next_state
 
200
        
 
201
        condition = ''
 
202
        old_desc = ''
 
203
        
 
204
        if old_st == 'd00':
 
205
            old_desc = u'Хэвийн'
 
206
            condition = 'product_id'
 
207
        elif old_st == 'd90':
 
208
            old_desc = u'Хугацаа хэтэрсэн'
 
209
            condition = 'xxz_product'
 
210
        elif old_st == 'd180':
 
211
            old_desc = u'Хэвийн бус'
 
212
            condition = 'xb_product'
 
213
        elif old_st == 'd360':
 
214
            old_desc = u'Эргэлзээтэй зээл'
 
215
            condition = 'ez_product'
 
216
        elif old_st == 'd361g':
 
217
            old_desc = u'Муу зээл'
 
218
            condition = 'mz_product'
 
219
        
 
220
        cid = self.pool.get('configure.product').search(cr,uid,[(condition,'=',order.loan_order.product_id.id)])
 
221
        if cid == []:
 
222
            raise osv.except_osv(_('Warning'), _('Not found configure!'))
 
223
             
 
224
        config = self.pool.get('configure.product').browse(cr,uid,cid[0])
 
225
        print '--------------c id',cid
 
226
        
 
227
        new_desc = ''
 
228
        pro_id = 0
 
229
        if new_st == 'd00':
 
230
            new_desc = u'Хэвийн'
 
231
            pro_id = config.product_id.id
 
232
        elif new_st == 'd90':
 
233
            new_desc = u'Хугацаа хэтэрсэн'
 
234
            pro_id = config.xxz_product.id
 
235
        elif new_st == 'd180':
 
236
            new_desc = u'Хэвийн бус'
 
237
            pro_id = config.xb_product.id
 
238
        elif new_st == 'd360':
 
239
            new_desc = u'Эргэлзээтэй зээл'
 
240
            pro_id = config.ez_product.id
 
241
        elif new_st == 'd361g':
 
242
            new_desc = u'Муу зээл'
 
243
            pro_id = config.mz_product.idfields.date.context_today(self,cr,uid,context=context),
 
244
               
 
245
        pro = self.pool.get('product.product').browse(cr,uid,pro_id)
 
246
        amount_currency = res_currency_obj.compute(cr,uid, company_currency_id,currency_id,order.loan_order.loan_balance, context=context)
 
247
        amount = 0.0
 
248
        if amount_currency == order.loan_order.loan_balance:
 
249
            amount_currency = 0.0
 
250
            amount = order.loan_order.loan_balance
 
251
        else:
 
252
            t = amount_currency
 
253
            amount_currency = order.loan_order.loan_balance
 
254
            amount = t
 
255
        am_id2 = self.pool.get('account.move').create(cr,uid, {
 
256
                                    'name':order.name,
 
257
                                    'journal_id':order.journal.id,
 
258
                                    'ref':order.loan_order.name})
 
259
        aml_one_one2 = self.pool.get('account.move.line').create(cr,uid,{
 
260
                                                                        'name':order.loan_order.name + u'гэрээ ангилал шилжив.',
 
261
                                                                        'partner_id':order.partner_id.id,
 
262
                                                                        'account_id':order.loan_order.product_id.property_account_expense.id,
 
263
                                                                        'credit':order.loan_order.loan_balance,
 
264
                                                                        #'currency_id':currency_id,
 
265
                                                                        #'amount_currency':amount_currency*(-1),
 
266
                                                                        'move_id':am_id2 })
 
267
                                                                        
 
268
        aml_one_two2 = self.pool.get('account.move.line').create(cr,uid,{
 
269
                                                                        'name':order.loan_order.name + u'гэрээ ангилалrisk_orders шилжив.',
 
270
                                                                        'partner_id':order.partner_id.id,
 
271
                                                                        'account_id':pro.property_account_income.id,
 
272
                                                                        'debit':order.loan_order.loan_balance,
 
273
                                                                        #'currency_id':currency_id,
 
274
                                                                        #'amount_currency':amount_currency,
 
275
                                                                'move_id':am_id2 })
 
276
        amove2 = self.pool.get('account.move').browse(cr,uid,am_id2)
 
277
        amove2.button_validate()
 
278
        
 
279
        print 'new state-',new_st,'pro',pro_id
 
280
        print 'update lorder-',self.pool.get('loan.order').write(cr,uid,order.loan_order.id,
 
281
                                        {'loan_state':new_st,
 
282
                                         'product_id':pro_id,
 
283
                                        })
 
284
        print 'update refund-',self.pool.get('loan.refund.risk.foundation').write(cr,uid,order.refund_id.id,{'loan_current_state':new_st})
 
285
        
 
286
        sid = self.pool.get('loan.account.statement').create(cr,uid, {
 
287
                                    'contract_id':order.loan_order.id,
 
288
                                    'name':u"Эрсдэлийн сан буцаав, ангилал шилжив('"+unicode(old_desc)+"'->'"+unicode(new_desc)+"')",
 
289
                                    'write_date':order.date_order,
 
290
                                    'risk':(-1)*order.risk_amount})
 
291
 
 
292
        self.write(cr, uid, ids, {'state': 'closed'})
 
293
        return am_id
 
294
 
 
295
    def action_risk_cancel(self, cr, uid, ids, context=None):
 
296
        self.write(cr, uid, ids, {'state': 'draft'})
 
297
        print 'Cancel-------------'
 
298
        return True
 
299
    
 
300
        
 
301
    def action_approve_risk(self, cr, uid, ids, context=None):
 
302
#         print "tessss",self.pool.get('ir.sequence').get(cr, uid, 'loan.risk.foundation')
 
303
        hrid = self.pool.get('hr.employee').search(cr, uid, [('user_id','=',uid)])
 
304
        if hrid !=[]:
 
305
            self.write(cr, uid, ids, {'state': 'approved', 
 
306
                                      'approve_economist' : hrid[0], 
 
307
                                      'name': self.pool.get('ir.sequence').get(cr, uid, 'loan.risk.foundation'),
 
308
                                      'date_approve': fields.date.context_today(self,cr,uid,context=context),
 
309
                                      })
 
310
        else:
 
311
            raise osv.except_osv(_('Warning'), _('Хүний нөөц дээр энэ ажилтанг бүртгээгүй эсвэл холбоотой хэрэглэгчийг тохируулаагүй байна!'))
 
312
 
 
313
        return True
 
314
 
 
315
    def action_done_risk(self, cr, uid, ids, context=None):
 
316
        order = self.browse(cr,uid,ids)[0]
 
317
        cur_id = order.loan_order.product_id.currency.id 
 
318
        res_currency_obj = self.pool.get('res.currency')
 
319
        res_users_obj = self.pool.get('res.users')
 
320
 
 
321
        company_currency_id = res_users_obj.browse(cr, uid, uid,context=context).company_id.currency_id.id
 
322
        currency_id = order.loan_order.product_id.currency.id
 
323
        
 
324
        amount_currency = res_currency_obj.compute(cr,uid, company_currency_id,currency_id,order.risk_amount, context=context)
 
325
        amount = 0.0
 
326
        if amount_currency == order.risk_amount:
 
327
            amount_currency = 0.0
 
328
            amount = order.risk_amount
 
329
        else:
 
330
            t = amount_currency
 
331
            amount_currency = order.risk_amount
 
332
            amount = t
 
333
        
 
334
        am_id = self.pool.get('account.move').create(cr,uid, {
 
335
                                    'name':order.name,
 
336
                                    'journal_id':order.journal.id,
 
337
                                    'ref':order.loan_order.name})
 
338
        if company_currency_id == currency_id:
 
339
                                   
 
340
            aml_one_one = self.pool.get('account.move.line').create(cr,uid,{
 
341
                                                                        'name':order.loan_order.name + u'гэрээнд эрсдэлийн сан байгуулав.',
 
342
                                                                        'partner_id':order.partner_id.id,
 
343
                                                                        'account_id':order.risk_account.id,
 
344
                                                                        'credit':amount,
 
345
#                                                                       'currency_id':currency_id,
 
346
#                                                                       'amount_currency':amount_currency*(-1),
 
347
                                        'date':datetime.now(),
 
348
                                                                        'move_id':am_id })
 
349
                                                                        
 
350
            aml_one_two = self.pool.get('account.move.line').create(cr,uid,{
 
351
                                                                        'name':order.loan_order.name + u'гэрээнд эрсдэлийн сан байгуулав.',
 
352
                                                                        'partner_id':order.partner_id.id,
 
353
                                                                        'account_id':order.risk_expense_account.id,
 
354
                                                                        'debit':amount,
 
355
                                        'date': datetime.now(),
 
356
#                                                                       'currency_id':currency_id,
 
357
#                                                                       'amount_currency':amount_currency,
 
358
                                                                        'move_id':am_id })
 
359
                                                                
 
360
        else:
 
361
            aml_one_one = self.pool.get('account.move.line').create(cr,uid,{
 
362
                                        'name':order.loan_order.name + u'гэрээнд эрсдэлийн сан байгуулав.',
 
363
                                        'partner_id':order.partner_id.id,
 
364
                                        'account_id':order.risk_account.id,
 
365
                                        'credit':amount,
 
366
                                         'currency_id':currency_id,
 
367
                                         'amount_currency':amount_currency*(-1),
 
368
                                        'date':datetime.now(),
 
369
                                        'move_id':am_id })
 
370
                                        
 
371
            aml_one_two = self.pool.get('account.move.line').create(cr,uid,{
 
372
                                        'name':order.loan_order.name + u'гэрээнд эрсдэлийн сан байгуулав.',
 
373
                                        'partner_id':order.partner_id.id,
 
374
                                        'account_id':order.risk_expense_account.id,
 
375
                                        'debit':amount,
 
376
                                        'date': datetime.now(),
 
377
                                         'currency_id':currency_id,
 
378
                                         'amount_currency':amount_currency,
 
379
                                        'move_id':am_id })
 
380
        print 'Return AM',am_id
 
381
        amove = self.pool.get('account.move').browse(cr,uid,am_id)
 
382
        amove.button_validate()
 
383
        
 
384
        old_st = order.loan_current_state
 
385
        new_st = order.loan_next_state
 
386
        
 
387
        condition = ''
 
388
        old_desc = ''
 
389
        
 
390
        if old_st == 'd00':
 
391
            old_desc = u'Хэвийн'
 
392
            condition = 'product_id'
 
393
        elif old_st == 'd90':
 
394
            old_desc = u'Хугацаа хэтэрсэн'
 
395
            condition = 'xxz_product'
 
396
        elif old_st == 'd180':
 
397
            old_desc = u'Хэвийн бус'
 
398
            condition = 'xb_product'
 
399
        elif old_st == 'd360':
 
400
            old_desc = u'Эргэлзээтэй зээл'
 
401
            condition = 'ez_product'
 
402
        elif old_st == 'd361g':
 
403
            old_desc = u'Муу зээл'
 
404
            condition = 'mz_product'
 
405
        
 
406
        cid = self.pool.get('configure.product').search(cr,uid,[(condition,'=',order.loan_order.product_id.id)])
 
407
        if cid == []:
 
408
            raise osv.except_osv(_('Warning'), _('Not found configure!'))
 
409
             
 
410
        config = self.pool.get('configure.product').browse(cr,uid,cid[0])
 
411
        print '--------------c id',cid
 
412
        
 
413
        new_desc = ''
 
414
        pro_id = 0
 
415
        am_id2 = 0
 
416
        days = order.beyond_days
 
417
        if new_st == 'd00':
 
418
            new_desc = u'Хэвийн'
 
419
            pro_id = config.product_id.id
 
420
        elif new_st == 'd90':
 
421
            new_desc = u'Хугацаа хэтэрсэн'
 
422
            pro_id = config.xxz_product.id
 
423
        elif new_st == 'd180':
 
424
            new_desc = u'Хэвийн бус'
 
425
            pro_id = config.xb_product.id
 
426
        elif new_st == 'd360':
 
427
            new_desc = u'Эргэлзээтэй зээл'
 
428
            pro_id = config.ez_product.id
 
429
        elif new_st == 'd361g':
 
430
            new_desc = u'Муу зээл'
 
431
            pro_id = config.mz_product.id
 
432
        
 
433
        pro = self.pool.get('product.product').browse(cr,uid,pro_id)
 
434
        
 
435
        amount_currency = res_currency_obj.compute(cr,uid, company_currency_id,currency_id,order.loan_order.loan_balance, context=context)
 
436
        amount = 0.0
 
437
        if amount_currency == order.loan_order.loan_balance:
 
438
            amount_currency = 0.0
 
439
            amount = order.loan_order.loan_balance
 
440
        else:
 
441
            t = amount_currency
 
442
            amount_currency = order.loan_order.loan_balance
 
443
            amount = t
 
444
        print "account",order.loan_order
 
445
        am_id2 = self.pool.get('account.move').create(cr,uid, {
 
446
                                    'name':order.name,
 
447
                                    'journal_id':order.journal.id,
 
448
                                    'ref':order.loan_order.name})
 
449
        if company_currency_id == currency_id:
 
450
 
 
451
            aml_one_one2 = self.pool.get('account.move.line').create(cr,uid,{
 
452
                                                                        'name':order.loan_order.name + u'гэрээ ангилал шилжив.',
 
453
                                                                        'partner_id':order.partner_id.id,
 
454
                                                                        'account_id':order.loan_order.product_id.property_account_expense.id,
 
455
                                                                        'credit':order.loan_balance,
 
456
                                        'date': datetime.now(),
 
457
#                                                                       'currency_id':currency_id,
 
458
#                                                                       'amount_currency':amount_currency*(-1),
 
459
                                                                        'move_id':am_id2 })
 
460
                                                                        
 
461
            aml_one_two2 = self.pool.get('account.move.line').create(cr,uid,{
 
462
                                                                        'name':order.loan_order.name + u'гэрээ ангилал шилжив.',
 
463
                                                                        'partner_id':order.partner_id.id,
 
464
                                                                        'account_id':pro.property_account_income.id,
 
465
                                        'date': datetime.now(),
 
466
                                                                        'debit':order.loan_order.loan_balance,
 
467
#                                                                       'currency_id':currency_id,
 
468
#                                                                       'amount_currency':amount_currency,
 
469
                                                                        'move_id':am_id2 })
 
470
        else:
 
471
            aml_one_one2 = self.pool.get('account.move.line').create(cr,uid,{
 
472
                                        'name':order.loan_order.name + u'гэрээ ангилал шилжив.',
 
473
                                        'partner_id':order.partner_id.id,
 
474
                                        'account_id':order.loan_order.product_id.property_account_expense.id,
 
475
                                        'credit':order.loan_balance,
 
476
                                        'date': datetime.now(),
 
477
                                         'currency_id':currency_id,
 
478
                                         'amount_currency':amount_currency*(-1),
 
479
                                        'move_id':am_id2 })
 
480
                                        
 
481
            aml_one_two2 = self.pool.get('account.move.line').create(cr,uid,{
 
482
                                        'name':order.loan_order.name + u'гэрээ ангилал шилжив.',
 
483
                                        'partner_id':order.partner_id.id,
 
484
                                        'account_id':pro.property_account_income.id,
 
485
                                        'date': datetime.now(),
 
486
                                        'debit':order.loan_order.loan_balance,
 
487
                                        'currency_id':currency_id,
 
488
                                        'amount_currency':amount_currency,
 
489
                                        'move_id':am_id2 })
 
490
        amove2 = self.pool.get('account.move').browse(cr,uid,am_id2)
 
491
        amove2.button_validate()
 
492
        
 
493
        print 'new state-',new_st,'pro',pro_id
 
494
        print 'update lorder-',self.pool.get('loan.order').write(cr,uid,order.loan_order.id,
 
495
                                        {'loan_state':new_st,
 
496
                                         'product_id':pro_id,
 
497
                                         'late_day':order.beyond_days,
 
498
                                        })
 
499
        
 
500
        sid = self.pool.get('loan.account.statement').create(cr,uid, {
 
501
                                    'contract_id':order.loan_order.id,
 
502
                                    'name':u"Эрсдэлийн санг "+str(order.risk_percent)+u"%-р байгуулав, ангилал шилжив('"+unicode(old_desc)+"'->'"+unicode(new_desc)+"')",
 
503
                                    'write_date':order.date_order,
 
504
                                    'risk':order.risk_amount})
 
505
        hrid = self.pool.get('hr.employee').search(cr, uid, [('user_id','=',uid)])
 
506
        if hrid !=[]:
 
507
            self.write(cr, uid, ids, {'approve_accountant':hrid[0],
 
508
                                  'state': 'done'})
 
509
        else:
 
510
            raise osv.except_osv(_('Warning'), _('Хүний нөөц дээр энэ ажилтанг бүртгээгүй эсвэл холбоотой хэрэглэгчийг тохируулаагүй байна!'))
 
511
 
 
512
 
 
513
        return am_id
 
514
 
 
515
    def copy(self, cr, uid, id, default=None, context=None):
 
516
        if not default:
 
517
            default = {}
 
518
        default.update({
 
519
            'state':'draft',
 
520
            'name': self.pool.get('ir.sequence').get(cr, uid, 'loan.risk.foundation'),
 
521
        })
 
522
        return super(loan_risk_foundation, self).copy(cr, uid, id, default, context)
 
523
 
 
524
loan_risk_foundation()
 
525
 
 
526
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: