Пример #1
0
    def get(self):
        details_fields = {
            'id': fields.Integer(),
            'patient_id': fields.Integer(),
            'service_id': fields.Integer(),
            'amountDue': fields.Integer(),
            'totalPrice': fields.Integer(),
            'discount': fields.Integer(default=None),
            'totalPayments': fields.Integer(),
            'numberOfSessions': fields.Integer(),
            'issueDateTime': fields.DateTime(dt_format='iso8601'),
        }

        idName_fields = {
            'id': fields.Integer(default=None),
            'name': fields.String
        }

        patient_fields = {
            'id': fields.Integer(default=None),
            'name': fields.String(),
            'mobileNumber': fields.String()
        }

        details_fields['service'] = fields.Nested(idName_fields)
        details_fields['createdBy'] = fields.Nested(idName_fields)
        details_fields['patient'] = fields.Nested(patient_fields)
        details_fields['serviceOffer'] = fields.Nested(idName_fields)
        details_fields['leadedBy'] = fields.Nested(idName_fields)

        result_fields = {
            'details': fields.Nested(details_fields),
            'ordersCount': fields.Integer(),
            'totalDiscount': fields.Integer(),
            'totalPrice': fields.Integer(),
            'totalPayments': fields.Integer(),
            'totalAmountDue': fields.Integer(),
        }

        qParser = reqparse.RequestParser()

        qParser.add_argument('fromDate', type=dateInput, default=None)
        qParser.add_argument('toDate', type=dateInput, default=None)
        qParser.add_argument('service_id', type=int, default=None)
        qParser.add_argument('patient_id', type=int, default=None)
        qParser.add_argument('employee_id', type=int, default=None)
        qParser.add_argument('serviceOffer_id', type=int, default=None)
        qParser.add_argument('patient_mobile', type=str, default=None)

        args = qParser.parse_args()

        fromDate = args.get('fromDate')
        toDate = args.get('toDate')

        service_id = args.get('service_id')
        employee_id = args.get('employee_id')
        patient_id = args.get('patient_id')
        serviceOffer_id = args.get('serviceOffer_id')
        patient_mobile = args.get('patient_mobile')

        if patient_mobile is not None:
            patient = Patient.query.filter_by(mobileNumber=patient_mobile).first()
            patient_id = patient.id if patient else None

        report = OrdersDetailsReport()
        report.filterDateRange(fromDate, toDate)
        report.filterByService(service_id)
        report.filterByPatient(patient_id)
        report.filterByUser(employee_id)
        report.filterByServiceOffer(serviceOffer_id)

        result = report.result()
        return marshal(result, result_fields)
Пример #2
0
    def get(self):

        details_fields = {
            "id": fields.Integer(),
            "patient_id": fields.Integer(),
            "service_id": fields.Integer(),
            "amountDue": fields.Integer(),
            "totalPrice": fields.Integer(),
            "discount": fields.Integer(default=None),
            "totalPayments": fields.Integer(),
            "numberOfSessions": fields.Integer(),
            "serviceName": fields.String,
            "serviceOfferName": fields.String,
            "patientName": fields.String,
            "issueDateTime": fields.DateTime(dt_format="iso8601"),
        }

        idName_fields = {"id": fields.Integer(default=None), "name": fields.String}

        patient_fields = {"id": fields.Integer(default=None), "name": fields.String(), "mobileNumber": fields.String()}

        details_fields["service"] = fields.Nested(idName_fields)
        details_fields["patient"] = fields.Nested(patient_fields)
        details_fields["serviceOffer"] = fields.Nested(idName_fields)

        result_fields = {
            "details": fields.Nested(details_fields),
            "ordersCount": fields.Integer(),
            "totalDiscount": fields.Integer(),
            "totalPrice": fields.Integer(),
            "totalAmountDue": fields.Integer(),
        }

        qParser = reqparse.RequestParser()

        qParser.add_argument("fromDate", type=dateInput, default=None)
        qParser.add_argument("toDate", type=dateInput, default=None)
        qParser.add_argument("service_id", type=int, default=None)
        qParser.add_argument("patient_id", type=int, default=None)
        qParser.add_argument("serviceOffer_id", type=int, default=None)
        qParser.add_argument("patient_mobile", type=str, default=None)

        args = qParser.parse_args()

        fromDate = args.get("fromDate")
        toDate = args.get("toDate")

        service_id = args.get("service_id")
        patient_id = args.get("patient_id")
        serviceOffer_id = args.get("serviceOffer_id")
        patient_mobile = args.get("patient_mobile")

        if patient_mobile is not None:
            patient = Patient.query.filter_by(mobileNumber=patient_mobile).first()
            patient_id = patient.id if patient else None

        report = OrdersDetailsReport()
        report.filterDateRange(fromDate, toDate)
        report.filterByService(service_id)
        report.filterByPatient(patient_id)
        report.filterByServiceOffer(serviceOffer_id)

        result = report.result()
        return marshal(result, result_fields)