私はOpenERPのタイムシートに関するプロジェクトを行っています。私はこの問題があります: これはx_luongテーブルです。OpenERP:データベースを入手して形式で表示
class x_luong(osv.osv):
_name = 'x_luong'
_description = 'Luong'
_columns = {'name': fields.many2one('x_nhanvien', 'Mã nhân viên', size=10, required='1'),
'ma_luong': fields.integer('ma luong', size=10, required='1'),
'giolam': fields.float('Giờ làm', size=100, required='1'),
'giolamthuc': fields.char('Gio lam thuc te', size=5, required='1'),
'time_in': fields.char('Gio vào', size=20),
'time_out' :fields.char('Gio về', size=20),
'state' :fields.selection([('dangnhap','Đẳng nhập.'),('rave','Ra về')]),
'test': fields.integer('Kiem tra', size=20),
'phutvao': fields.integer('Phut vao ', size=20),
'phutra': fields.integer('phut ra', size=20),
}
_defaults = {'state':'dangnhap',
}
とその中のこのいくつかの機能:
この2機能は、時間を取得する意味際にスタッフsign_inまたはシステムsign_out:
def get_timein(self,cr,uid,ids,context={}):
obj = self.browse(cr,uid,ids,context=context)[0]
timein = str(datetime.now())
self.write(cr, uid, ids, {'time_in':timein }, context=context)
return 1
def get_timeout(self,cr,uid,ids,context={}):
obj = self.browse(cr,uid,ids,context=context)[0]
timeout = str(datetime.now())
self.write(cr, uid, ids, {'time_out':timeout }, context=context)
return 1
とボタンsign_inため、この2機能sign_out:
def cho_dangnhap(self,cr,uid,ids,context={}):
self.pool.get('x_luong').write(cr,uid,ids,{'state':'dangnhap'})
self.get_timein(cr,uid,ids)
return 1
def cho_rave(self,cr,uid,ids,context={}):
self.pool.get('x_luong').write(cr,uid,ids,{'state':'rave'})
self.get_timeout(cr,uid,ids)
self.tinh_thoigian(cr,uid,ids)
self.insert(cr,uid,ids)
計算の取得...時間または分の文字列時間をカット意味
def _thoigianlam(self,cr,uid,ids,context={}):
obj = self.browse(cr,uid,ids,context=context)[0]
hour_den = int(obj.time_in[12:13])
hour_di = int(obj.time_out[12:13])
min_den = int(obj.time_in[15:16])
min_di = int(obj.time_out[15:16])
gl = int(hour_di)-int(hour_den)
pl = min_di-min_den
thucte = str(gl)+':'+pl
self.write(cr, uid, ids, {'giolam':gl }, context=context)
self.write(cr, uid, ids, {'giolamthuc':thucte }, context=context)
return 1
と最後の関数insert(tinh_thoigian機能)ma_luong(私はSQLでこれと同じ主キーを思う)とgiolam(取得私はスタッフの中に記号や日中のシステムをサインアウトする際ため、表x_giolamにデータを挿入する場合は、この機能を持つ会社)、time_in、TIME_OUTでのスタッフの仕事の時間とこのです関数insert()
def insert(self,cr,uid,ids,context={}):
obj = self.browse(cr,uid,ids,context=context)
values = {'ma_luong':obj.name.id,
'giolam':obj.giolam,
'time_in':time_in,
'time_out':time_out,
self.pool.get('x_giolam').create(cr,uid,values,context=context)
...このテーブルに保存したデータと、もう一度やり直す先日
class x_giolam(osv.osv):
_name = 'x_giolam'
_description = 'Gio Lam'
_columns = {'name': fields.integer('Lọai',size=64,required="true"),
'giolam' : fields.float('Gio lam',size=64,required="True"),
'time_in': fields.char('Gio vào',size=20),
'time_out' :fields.char('Gio về',size=20),
}
と私は私のプロジェクトで3質問があります:あなたはちょうどma_luong = ma_luong(テーブルx_luongの)を選択し、それらの給与について計算し、このテーブルx_giolamをしたい場合には、先月再びそれを保存...とと:
1)関数insertはAERROR持っている:
AttributeError: 'browse_record_list' object has no attribute 'name'
私はそれを修正することができますどのように?私のデータはテーブルx_giolamに保存されています
2)どのように私はこのテーブルのx_giolamテーブルの多くの行を選択することができます自分自身..この関数についていくつかの例を教えてください
3)どのように組織field.Xml私はできる
あなたのお困りのために申し訳ありませんが、それは非常に長いためです...しかし、私はここにすべての体が私を助けることを願っています。 Pythonと開いているErpのでC + +またはCとの違い#。そして、この私のプロジェクト「OpenErpでモジュールのタイムシートを研究して書く」と私と来週の締め切りは終わりです。 私の英語は良い、私はそれについてのソーリーです! ありがとうございます!
質問を上に移動すると、より良い回答が得られるかもしれません。彼らにあなたの質問を伝える前に、すべての詳細を人が読ませないようにしてください。 –