~vauxoo/addons-vauxoo/7.0-account_voucher_category-dev-hbto

« back to all changes in this revision

Viewing changes to valued_stock/stock.py

  • Committer: Jose Morales
  • Date: 2013-05-16 15:44:16 UTC
  • mfrom: (544.1.9 addons-vauxoo)
  • Revision ID: jose@vauxoo.com-20130516154416-eago8zbxslb2scq8
 
[MERGE] Added new features in the user_story module to make easy the user story management, these improvements are:
         [IMP] Added a priority field in the user story to define the priority level for each user story for ease of handling and delivery
         [IMP] Added filter to show user story for priority level
         [IMP] Added automatically project in the task when you create a new task from user story view, this project is the seted in the user story
         [IMP] Added filter to show user story for state, to ease the user story management
         [IMP] Added sum in the planned hours field to control, the hours used for each user story, for we can see the progress in any project easily
         [IMP] Added translations in the user_story module
         [IMP] Added branch to clone field in the project task module
         
       [MERGE] Merge from trunk to apply pep8 and V7 migrate in all modules
       

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
#!/usr/bin/python
2
 
# -*- encoding: utf-8 -*-
3
 
###########################################################################
4
 
#    Module Writen to OpenERP, Open Source Management Solution
5
 
#    Copyright (C) OpenERP Venezuela (<http://openerp.com.ve>).
6
 
#    All Rights Reserved
7
 
# Credits######################################################
8
 
#    Coded by: Vauxoo C.A.
9
 
#    Planified by: Nhomar Hernandez
10
 
#    Audited by: Vauxoo C.A.
11
 
#############################################################################
12
 
#    This program is free software: you can redistribute it and/or modify
13
 
#    it under the terms of the GNU Affero General Public License as published by
14
 
#    the Free Software Foundation, either version 3 of the License, or
15
 
#    (at your option) any later version.
16
 
#
17
 
#    This program is distributed in the hope that it will be useful,
18
 
#    but WITHOUT ANY WARRANTY; without even the implied warranty of
19
 
#    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
20
 
#    GNU Affero General Public License for more details.
21
 
#
22
 
#    You should have received a copy of the GNU Affero General Public License
23
 
#    along with this program.  If not, see <http://www.gnu.org/licenses/>.
24
 
##########################################################################
25
 
from openerp.osv import fields, osv
26
 
from openerp.tools.translate import _
27
 
 
28
 
import time
29
 
import decimal_precision as dp
30
 
 
31
 
 
32
 
class stock_inventory_line(osv.Model):
33
 
    _inherit = 'stock.inventory.line'
34
 
    '''
35
 
 
36
 
    '''
37
 
    def _get_cost(self, cr, uid, ids, name, args, context={}):
38
 
        res = {}
39
 
        for id in ids:
40
 
            res[id] = self.compute_cost(cr, uid, [id])
41
 
        return res
42
 
 
43
 
    _columns = {
44
 
        'cost': fields.function(_get_cost, method=True, digits_compute=dp.get_precision('Account'), string='Costo'),
45
 
    }
46
 
 
47
 
    def search_date_desc(self, cr, uid, ids, product_id, date):
48
 
        cr.execute('SELECT price FROM product_historic_cost '
49
 
                   'WHERE product_id=%s AND name <= %s ORDER BY name desc LIMIT 1', (product_id, date))
50
 
        res = [x[0] for x in cr.fetchall()]
51
 
        if not res:
52
 
            res = 0.0
53
 
        else:
54
 
            res = res[0]
55
 
        return res
56
 
 
57
 
    def search_date_asc(self, cr, uid, ids, product_id, date):
58
 
        cr.execute('SELECT price FROM product_historic_cost '
59
 
                   'WHERE product_id=%s AND name > %s ORDER BY name asc LIMIT 1', (product_id, date))
60
 
        res = [x[0] for x in cr.fetchall()]
61
 
        if not res:
62
 
            res = 0.0
63
 
        else:
64
 
            res = res[0]
65
 
        return res
66
 
 
67
 
    def compute_cost(self, cr, uid, ids, *args):
68
 
        prod_obj = self.pool.get('product.product')
69
 
        costo = 0.0
70
 
        inv_brw = self.browse(cr, uid, ids, context=None)[0]
71
 
        date = inv_brw.inventory_id.date
72
 
        costo = self.search_date_desc(
73
 
            cr, uid, ids, inv_brw.product_id.id, date)
74
 
        if not costo:
75
 
            costo = self.search_date_asc(
76
 
                cr, uid, ids, inv_brw.product_id.id, date)
77
 
        costo = costo * inv_brw.product_qty * \
78
 
            inv_brw.product_uom.factor_inv * inv_brw.product_id.uom_id.factor
79
 
        return costo
80
 
 
81
 
 
82
 
 
83
 
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: