Example #1
0
    def post(self):
        doer = getTheDoer()
        form = CreateServiceOrderForm()
    
        if form.validate():
            patient = None
            if form.data['patient_id']:
                patient = patientRepo.get(form.data['patient_id'])
            
            service = serviceRepo.get(form.data['service_id'])
            numberOfSessions = form.data['numberOfSessions']

            serviceOffer = None
            if form.data['serviceOffer_id'] is not None:
                serviceOffer = ServiceOffer.query.get(form.data['serviceOffer_id'])

            if patient is None:
                patient = Patient(name=form.data['name'], mobileNumber=form.data['mobileNumber'], createdBy=doer)
                # patientRepo.save(patient)


            payments = None
            discount = form.data['discount']

            if form.data['amount']:
                amount = form.data['amount']
                
                paymentType = PaymentTypes.CASH
                if form.data['paymentType']:
                    paymentType = form.data['paymentType']

                payment = ServicePayment(amount=amount, paymentType=paymentType, createdBy=doer)
                payments = [payment]
            try:
                entity = ServiceOrder(patient=patient, service=service, numberOfSessions=numberOfSessions, 
                    serviceOffer=serviceOffer, payments=payments, createdBy=doer)
                
                # discount the order
                if discount is not None :
                    try:
                        entity.setOrderDiscount(amount=discount, user=doer)
                    except ValueError as err:
                        return unableToProcessResponse([ err.args[0] ])

                serviceOrderRepo.save(entity)
                return createdResponseWithPayload(marshal(entity, serviceOrder_fields))
            except ValueError as err:
                return unableToProcessResponse([ err.args[0] ])

        return unableToProcessResponse(form.errors)
Example #2
0
    def setUp(self):
        service = Service(name='service 1 s', price=100)
        patient = Patient(name='patient 1 z', mobileNumber="121232")
        user = User(password='******', name='user one receive', userName='******')
        discountUser = User(password='******', name='discountUser', userName='******')
        payments = []
        payments.append(ServicePayment(amount=100, paymentType=PaymentTypes.CASH, createdBy=user) )
        payments.append(ServicePayment(amount=50, paymentType=PaymentTypes.CASH, createdBy=user) )
        payments.append(ServicePayment(amount=50, paymentType=PaymentTypes.CASH, createdBy=user) )
        payments.append(ServicePayment(amount=100, paymentType=PaymentTypes.CASH, createdBy=user) )
        payments.append(ServicePayment(amount=100, paymentType=PaymentTypes.VISA, createdBy=user) )
        serviceOrder = ServiceOrder(service=service, numberOfSessions=10, patient=patient, payments=payments)
        serviceOrder.setOrderDiscount(amount=500, user=user)

        db.session.add(serviceOrder)
        db.session.commit()

        # serviceOrder.refundOrder(amount=300, fee=100, user= discountUser, refundReason='no reason !')
        
        db.session.add(serviceOrder)
        db.session.commit()

        payments = []
        payments.append(ServicePayment(amount=1000, paymentType=PaymentTypes.CASH, createdBy=user) )
        payments.append(ServicePayment(amount=500, paymentType=PaymentTypes.VISA, createdBy=user) )
        serviceOrder = ServiceOrder(service=service, numberOfSessions=20, patient=patient, payments=payments)

        serviceOrder.setOrderDiscount(amount=500, user=user)

        db.session.add(serviceOrder)
        db.session.commit()

        # serviceOrder.refundOrder(amount=1400, fee=100, user= discountUser, refundReason='no reason 22!')
        
        db.session.add(serviceOrder)
        db.session.commit()