~openerp-community/openobject-addons/taktik

« back to all changes in this revision

Viewing changes to point_of_sale/report/pos_entry.py

  • Committer: Fabien Lydoire
  • Date: 2010-01-08 12:48:56 UTC
  • Revision ID: fl@taktik.be-20100108124856-j2ccwjqbuybn0hht
betterĀ posĀ module

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
import time
 
2
from report import report_sxw
 
3
import pooler
 
4
 
 
5
class entry(report_sxw.rml_parse):
 
6
 
 
7
    def __init__(self, cr, uid, name, context):
 
8
        super(entry, self).__init__(cr, uid, name, context)
 
9
        user = pooler.get_pool(cr.dbname).get('res.users').browse(cr, uid, uid)
 
10
        self.sums = None;
 
11
        self.start_balance = None;
 
12
        self.localcontext.update({
 
13
            'time': time,
 
14
            'user': user,
 
15
            'get_start_balance' : self._get_start_balance,
 
16
            'get_sums' : self._get_sums,
 
17
        })
 
18
        
 
19
    def preprocess(self, objects, data, ids):
 
20
        super(entry, self).preprocess(objects, data, ids)
 
21
        self.cr.commit()
 
22
        self.localcontext['data'] = data
 
23
        #Add all entries between the 2 dates
 
24
        start = data['form']['date_start']
 
25
        stop = data['form']['date_stop']
 
26
        entry_obj = self.pool.get('pos.cash_entry')
 
27
        result = entry_obj.search(self.cr,self.uid,[('date','>=',start),('date','<=',stop)])
 
28
        entries = entry_obj.browse(self.cr,self.uid,result)
 
29
        self.localcontext['entries'] = entries
 
30
        
 
31
    def _get_start_balance(self):
 
32
        start = self.localcontext['data']['form']['date_start']
 
33
        entry_obj = self.pool.get('pos.cash_entry');
 
34
        result = entry_obj.search(self.cr,self.uid,[('date','<',start)])
 
35
        entries = entry_obj.browse(self.cr,self.uid,result)
 
36
        sum_debit=0
 
37
        sum_credit=0
 
38
        for e in entries:
 
39
            sum_debit = sum_debit + e['debit']
 
40
            sum_credit = sum_credit + e['credit']
 
41
        self.start_balance = sum_credit - sum_debit
 
42
        return sum_credit-sum_debit         
 
43
 
 
44
    def _get_sums(self):
 
45
        #returns [sum credit,sum debit,cumulative total,new balance]
 
46
        sum_debit=0
 
47
        sum_credit=0
 
48
        if not self.sums :  
 
49
            start = self.localcontext['data']['form']['date_start']
 
50
            stop = self.localcontext['data']['form']['date_stop']
 
51
            entry_obj = self.pool.get('pos.cash_entry');
 
52
            result = entry_obj.search(self.cr,self.uid,[('date','>=',start),('date','<=',stop)])
 
53
            entries = entry_obj.browse(self.cr,self.uid,result)
 
54
            for e in entries:
 
55
                sum_debit = sum_debit + e['debit']
 
56
                sum_credit = sum_credit + e['credit']
 
57
        else:
 
58
            sum_credit = self.sums[0];
 
59
            sum_debit = self.sums[1];
 
60
        return [sum_credit,sum_debit,self.start_balance+sum_credit,self.start_balance+sum_credit-sum_debit]         
 
61
 
 
62
 
 
63
report_sxw.report_sxw('report.pos.entry', 'pos.cash_entry', 'addons/point_of_sale/report/pos_entry.rml', parser=entry, header=False)