def generate_report(params, data): log = logging.getLogger('task') error = False term = Term.query.filter_by(hard_id=params['term_id']).first() if not term: log.error('Not found term %s' % params['term_id']) return False event = Event.get_by_key(data['event_key']) if not event: log.error('Not found event %s' % data['event_key']) return False firm_terms = FirmTerm.query.filter_by(term_id=term.id).all() payments = data['payments'] report_max_date = '' for payment in payments: report = Report() report.term_id = term.id report.event_id = event.id report.type = payment['type'] report.payment_id = None report.amount = payment['amount'] * int(term.factor) real_person = None for row in firm_terms: report.term_firm_id = row.firm_id query = Person.query query = query.filter((Person.payment_id == payment['card']) | (Person.hard_id == int(payment['card']))) person = query.filter(Person.firm_id == row.child_firm_id).first() if not person: continue real_person = person if real_person: report.name = real_person.name report.person_id = real_person.id report.person_firm_id = real_person.firm_id report.payment_id = real_person.payment_id else: report.payment_id = payment['card'] date_pattern = '%Y-%m-%d %H:%M:%S' date_time_utc = date_helper.convert_date_to_utc( payment['date_time'], term.tz, date_pattern, date_pattern) report.creation_date = date_time_utc if report.creation_date > report_max_date: report_max_date = report.creation_date error = report.add_new() if not error: ReportSenderTask.lost_report_watcher.delay(term.id, report_max_date) return error
def generate_report(params, data): log = logging.getLogger('task') error = False term = Term.query.filter_by(hard_id=params['term_id']).first() if not term: log.error('Not found term %s' % params['term_id']) return False event = Event.get_by_key(data['event_key']) if not event: log.error('Not found event %s' % data['event_key']) return False firm_terms = FirmTerm.query.filter_by(term_id=term.id).all() payments = data['payments'] report_max_date = '' for payment in payments: report = Report() report.term_id = term.id report.event_id = event.id report.type = payment['type'] report.payment_id = None report.amount = payment['amount'] * int(term.factor) real_person = None for row in firm_terms: report.term_firm_id = row.firm_id query = Person.query query = query.filter((Person.payment_id == payment['card']) | ( Person.hard_id == int(payment['card']))) person = query.filter( Person.firm_id == row.child_firm_id).first() if not person: continue real_person = person if real_person: report.name = real_person.name report.person_id = real_person.id report.person_firm_id = real_person.firm_id report.payment_id = real_person.payment_id else: report.payment_id = payment['card'] date_pattern = '%Y-%m-%d %H:%M:%S' date_time_utc = date_helper.convert_date_to_utc( payment['date_time'], term.tz, date_pattern, date_pattern) report.creation_date = date_time_utc if report.creation_date > report_max_date: report_max_date = report.creation_date error = report.add_new() if not error: ReportSenderTask.lost_report_watcher.delay(term.id, report_max_date) return error