Ejemplo n.º 1
0
    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
Ejemplo n.º 2
0
    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