def draft_force_assign(self, cr, uid, ids, context=None): """ inherit to draft_force_assign to make custody id readable """ custody_lines_obj = self.pool.get('custody.order.lines') rec = self.browse(cr,uid,ids)[0] wf_service = netsvc.LocalService('workflow') if rec.custody_line_ids: for line in rec.custody_line_ids: custody_lines_obj.write(cr,uid,[line.id], {'order_state' : 'complete' }) wf_service.trg_validate(uid, 'stock.picking', rec.id, 'button_confirm', cr) if rec.order_type == 'admin' : send_mail(self, cr, uid, ids[0] , 'purchase_ntc.group_administrative_user', "New Stock Exchange Order", self.message,context=context) else: send_mail(self, cr, uid, ids[0] , 'purchase_ntc.group_technical_user', "New Stock Exchange Order", self.message,context=context) return super(stock_picking_out,self).draft_force_assign(cr, uid, ids, context=context)
def purchase_confirm_order(self, cr, uid, ids, context=None): """ Function For Change Order State into Budget Approve """ requisition = self.browse(cr, uid, ids)[0].requisition_id for user in requisition.user_ids: if not user.opinion: raise osv.except_osv( _('Warning!'), _('Some of Tender Members didnt sign on this tender like "%s" ' ) % (user.user_id.name)) if requisition.exclusive == 'exclusive': for quote in requisition.purchase_ids: if quote.id != ids[0]: self.write(cr, uid, [quote.id], {'state': 'cancel'}) else: self.write(cr, uid, ids, {'state': 'budget_approved'}) else: self.write(cr, uid, ids, {'state': 'budget_approved'}) send_mail(self, cr, uid, ids[0], 'purchase_ntc.group_internal_auditor', "New Purchase Requisition", self.message, user=False, department=False, context=context) return True
def tender_in_progress(self, cr, uid, ids, context=None): wf_service = netsvc.LocalService('workflow') purchase_order_pool = self.pool.get('purchase.order') for req in self.browse(cr, uid, ids, context=context): req.write({'state': 'in_progress'}) if not req.purchase_ids: wf_service.trg_validate(uid, 'purchase.requisition', req.id, 'tender_in_progress', cr) send_mail(self, cr, uid, ids[0], 'purchase_wafi.group_committee_user', "New Purchase Requisition", self.message, user=False, department=False, context=context) else: for order in req.purchase_ids: if order.state == 'budget_approved': wf_service.trg_validate(uid, 'purchase.order', order.id, 'create_picking_in', cr) wf_service.trg_validate(uid, 'purchase.requisition', req.id, 'tender_done', cr) return True
def approve(self, cr, uid, ids, context=None): """ Workflow function that changes the state to 'approved' and if the type is 'hr.approved.course' then it updates employee's record and set training to True to indicate that the employee is in training. @return: Boolean True """ obj_attachment = self.pool.get('ir.attachment') emp_obj = self.pool.get('hr.employee') emp_training_id = self.browse(cr, uid, ids, context=context)[0].id for emp_trainig in self.browse(cr, uid, ids, context=context): if emp_trainig.type == 'hr.approved.course': emp_ids = [l.employee_id.id for l in emp_trainig.line_ids] emp_obj.write(cr, uid, emp_ids, {'training': True}, context=context) attachment_ids = obj_attachment.search( cr, uid, [('res_model', 'in', ('hr.employee.training.approved', 'hr.employee.training.suggested')), ('res_id', '=', emp_training_id)], context=context) '''if attachment_ids: self.write(cr, uid, ids, {'state':'approved'}, context=context) else: raise osv.except_osv(_('Warning!'), _('Their Is No Attachments To Approved'))''' training_line_pool = self.pool.get('hr.employee.training.line') line_ids = training_line_pool.search( cr, uid, [('training_employee_id', 'in', ids)], context=context) emp_dict = [{ 'name': l.training_employee_id.course_id.name, 'emp_id': l.employee_id.id, 'place': l.training_employee_id.training_place, 'from': l.training_employee_id.start_date, 'to': l.training_employee_id.end_date, 'trainer': l.training_employee_id.partner_id.name, 'template': False, 'user_id': l.employee_id.user_id.id, 'course_id': ids[0] } for l in training_line_pool.browse( cr, uid, line_ids, context=context)] hr_employee_obj = self.pool.get('hr.employee') for emp in emp_dict: send_mail(hr_employee_obj, cr, uid, emp['emp_id'], '', 'Course', unicode(' لديك دورة تدريبية ', 'utf-8') + emp['name'] + unicode(' \n في ', 'utf-8') + emp['trainer'] + unicode(' \n من ', 'utf-8') + emp['from'] + unicode(' إلى ', 'utf-8') + emp['to'], user=[emp['user_id']], context=context or {}) self.write(cr, uid, ids, {'state': 'approved'}, context=context) return True
def done(self, cr, uid, ids, context={}): """ Workflow function that changes the state to 'done' and updates employee's record by setting training to False to indicate that the employee has finished the training. @return: Boolean True """ training_line_pool = self.pool.get('hr.employee.training.line') line_ids = training_line_pool.search( cr, uid, [('training_employee_id', 'in', ids)], context=context) emp_ids = [ l.employee_id.id for l in training_line_pool.browse( cr, uid, line_ids, context=context) ] self.pool.get('hr.employee').write(cr, uid, emp_ids, {'training': False}, context=context) #### training_eva_obj = self.pool.get('training.eva') #training_eva_ids = training_eva_obj.search(cr, uid, [('template','=', True)], context=context) #close for something training_eva_id = self.read(cr, uid, ids[0], context=context)['eva_template_id'][0] emp_dict = [{ 'name': l.training_employee_id.course_id.name, 'emp_id': l.employee_id.id, 'place': l.training_employee_id.training_place, 'from': l.training_employee_id.start_date, 'to': l.training_employee_id.end_date, 'trainer': l.training_employee_id.partner_id.name, 'template': False, 'user_id': l.employee_id.user_id.id, 'course_id': ids[0] } for l in training_line_pool.browse( cr, uid, line_ids, context=context)] for emp in emp_dict: new_id = training_eva_obj.copy(cr, uid, training_eva_id, emp, context=context) #for email perpuse context['action'] = 'hr_ntc_custom.training_eva_form_action_menud' send_mail(training_eva_obj, cr, uid, new_id, '', unicode(' طلب تقييم ', 'utf-8'), unicode(' طلب تقييم في', 'utf-8'), user=[emp['user_id']], context=context or {}) return self.write(cr, uid, ids, {'state': 'done'}, context=context)
def mail(self, cr, uid, ids, context=None): send_mail(self, cr, uid, ids[0], 'attendance_ntc.group_attendace_direct_manager', unicode(' إشعار الحضور', 'utf-8'), unicode(' يرجى اﻹطلاع على سجلات الحضور', 'utf-8'), context=context)
def tender_GM_approve2(self, cr, uid, ids, context=None): send_mail(self, cr, uid, ids[0], 'base_custom.group_account_general_manager', "New Purchase Requisition", self.message, user=False, department=False, context=context) self.write(cr, uid, ids, {'state': 'GM_approve2'}) return True
def tender_approve(self, cr, uid, ids, context=None): send_mail(self, cr, uid, ids[0], '', "New Purchase Requisition", self.message, user=self.get_manager_id(cr, uid, ids, uid), department=False, context=context) self.write(cr, uid, ids, {'state': 'approve'}) return True
def check_manager_email(self, cr, uid, ids, context=None): """ Method that send mail notification """ # just to use the common method dep_manager_user() in model the 'hr.employee.substitution' to get manager user_id emp_sub_obj = self.pool.get('hr.employee.substitution') for h in self.browse(cr, uid, ids, context=context): if h.state == 'completed' : group = False dep_cat = h.department_id.cat_id if dep_cat.category_type == 'section': department_id = h.department_id.parent_id.parent_id.id else: department_id = h.department_id.parent_id.id manager_user_id = emp_sub_obj.dep_manager_user(cr, uid, ids, {'department_id':department_id}, context=context) send_mail(self, cr, uid, ids[0], group,u'تصديق مأمورية'.encode('utf-8'), u'هناك سجل مأمورية في انتظار تصديق مدير الادارة العامة'.encode('utf-8'), [manager_user_id[0]['user_id']] ,context=context) if h.state == 'validated' : send_mail(self, cr, uid, ids[0], 'base_custom.group_general_hr_manager', u'تصديق مأمورية و نثرية'.encode('utf-8'), u'هناك سجل مأمورية في انتظار تصديق مدير الادارة العامة للموارد البشرية و المالية'.encode('utf-8'), context=context) if h.state == 'hr_approved' : send_mail(self, cr, uid, ids[0], 'purchase_ntc.group_internal_auditor',u'تصديق بدل مأمورية'.encode('utf-8'), u'هناك سجل مأمورية في انتظار تصديق المراجع لحساب بدل المأمورية'.encode('utf-8'), context=context) if h.state == 'reviewed' : send_mail(self, cr, uid, ids[0], 'base.group_hr_manager',u'تصديق و ترحيل بدل المامورية'.encode('utf-8'), u'هناك سجل مأمورية في انتظار تصديق مدير الموارد البشرية'.encode('utf-8'), context=context)
def tender_confirm(self, cr, uid, ids, context=None): super(purchase_requisition, self).tender_confirm(cr, uid, ids, context=context) send_mail(self, cr, uid, ids[0], '', "New Purchase Requisition", self.message, user=self.get_manager_id(cr, uid, ids, uid), department=False, context=context) return True
def commite_confirm(self, cr, uid, ids, context=None): """ Function For Change Order State into commite_confirm """ for rec in self.browse(cr, uid, ids): if rec.purchase_ids: for quote in rec.purchase_ids: if quote.state == 'budget_approved': self.pool.get('purchase.order').action_invoice_create( cr, uid, [quote.id], context=context) self.write(cr, uid, ids, {'state': 'commite_confirm'}) send_mail(self, cr, uid, ids[0], 'purchase_ntc.group_commite_members_manager', "New Purchase Requisition", self.message, user=False, department=False, context=context) return True
def write(self, cr, uid, ids, vals, context=None): """ Method thats overwrite the write method and send email to the alternative employee @param vals: Values that have been entered @return: Supper copy Method """ write_boolean = super(granted_rights_order, self).write(cr, uid, ids, vals, context=context) rec = self.browse(cr, uid, ids, context=context)[0] ## to send notification if vals.has_key('state') and vals['state'] == 'granted' : group = False text = u'تم نقل صلاحيات الموظف '.encode('utf-8') + (rec.employee_donor.name).encode('utf-8') + u' إليك للفترة من '.encode('utf-8') text += str(rec.start_grant_date).encode('utf-8') + u' إلى '.encode('utf-8') + str(rec.end_grant_date).encode('utf-8') + u' وذلك لعدم توفره في هذه الفترة'.encode('utf-8') #text = text.encode('utf-8') send_mail(self, cr, uid, ids[0], group,u'الموظف البديل'.encode('utf-8'), text, [rec.employee_candidate.user_id.id] ,context=context) return write_boolean
def back_to_quatations_entry(self, cr, uid, ids, context=None): """ Back To Quatations Entry """ for rec in self.browse(cr, uid, ids): if not rec.purchase_ids: raise osv.except_osv(_('Error!'), _('The Order havent Quotations .... ')) for quote in rec.purchase_ids: self.pool.get('purchase.order').action_cancel_draft( cr, uid, [quote.id], context=context) send_mail( self, cr, uid, ids[0], 'purchase_ntc.group_commite_members_manager', "Purchase Requisition Returned from Internal Auditor For Correction", self.message, user=False, department=False, context=context) return True
def test_roof(self, cr, uid, ids, context=None): wf_service = netsvc.LocalService('workflow') total = 0.0 limite = self.pool.get('purchase.config.settings').get_limit_amount( cr, uid, ids) #requisition_pool = self.pool.get('purchase.requisition') for requisition in self.browse(cr, uid, ids, context={}): for purchase in requisition.purchase_ids: total += purchase.amount_total if total < limite: send_mail( self, cr, uid, ids[0], 'base_custom.group_general_hr_manager', "Purchase Requisition After Entry The Quotations", self.message, user=False, department=False, context=context) return False #wf_service.trg_validate(uid, 'purchase.requisition', requisition_id.id, 'tender_HRM_approve2', cr) send_mail(self, cr, uid, ids[0], 'base_custom.group_account_general_manager', "Purchase Requisition After Entry The Quotations", self.message, user=False, department=False, context=context) return True