def test_create_pago_monto_consultorio_ok(self): medico = self.actuante sala = Sala.objects.get(pk=1) Disponibilidad.objects.create(dia='Lunes', horaInicio='08:20:00', horaFin='09:10:00',\ medico=medico, sala=sala, fecha=date.today()) Disponibilidad.objects.create(dia='Martes', horaInicio='10:00:00', horaFin='14:00:00',\ medico=medico, sala=sala, fecha=date.today()) cant_horas = ((50 + 4 * 60) / 60) * 4 monto_consultorio = 903.63 response = self.client.post("/api/pago-medico/", content_type='application/json', data=json.dumps({ "medico": medico.id, "lineas": [{ "estudio_id": self.estudio.id, "importe": str(self.importe) }], "observacion": "obs", "pago_consultorio": monto_consultorio })) self.assertEqual(response.status_code, 201) pago: PagoMedico = PagoMedico.objects.get(pk=response.json()["id"]) val = two_decimal(Decimal(cant_horas) * Decimal(monto_consultorio)) self.assertEqual(pago.pago_consultorio, val)
def test_estudio_pendiente_calcula_porcentaje_medico_ok(self): medico = Medico.objects.get(pk=2) estudio = Estudio.objects.get(pk=2) assert estudio.medico == medico assert estudio.medico_solicitante != medico estudio.practica = Practica(ID_LABORATORIO[0]) estudio_data = ListNuevoPagoMedicoSerializer( estudio, context={ 'calculador': CalculadorHonorariosPagoMedico(estudio), 'medico': medico, }).data assert estudio_data['porcentaje_medico'] == Decimal('80.00') assert estudio_data['pago'] == two_decimal( estudio_data['importe_sin_GA'] * Decimal('0.8'))
def get_importe_iva(self, estudio: Estudio) -> Decimal: ''' El importe del iva de cada estudio ''' gravado = estudio.get_gravado() resultado = Decimal('0') if not gravado: return resultado correspondiente = self.get_pago(estudio) if gravado.id == ID_GRAVADO_INSCRIPTO_21: resultado = correspondiente * gravado.porcentaje / Decimal('100') elif gravado.id == ID_GRAVADO_INSCRIPTO_10_5: resultado = correspondiente * gravado.porcentaje / Decimal('100') elif gravado.id == ID_GRAVADO_EXENTO: resultado = gravado.porcentaje else: # El día que la AFIP apruebe un IVA nuevo esto va a saltar. raise NotImplementedError return two_decimal(resultado)
def get_importe_neto(self, estudio: Estudio) -> Decimal: ''' Es el total del estudio que se reparte entre los medicos ''' calculador : CalculadorHonorariosPagoMedico = self.context.get('calculador') if estudio.es_pago_contra_factura: return two_decimal(calculador.get_importe()) return two_decimal(calculador.total_honorarios - calculador.cedir)
def get_importe_sin_GA(self, estudio: Estudio) -> Decimal: calculador : CalculadorHonorariosPagoMedico = self.context.get('calculador') if estudio.es_pago_contra_factura: return two_decimal(calculador.get_importe()) return two_decimal(calculador.total_honorarios)
def honorarios_medicos(self, medico) -> Decimal: importe = self.get_importe( ) if self.estudio.es_pago_contra_factura else self.total_honorarios return two_decimal(importe * self.porcentaje_honorarios(medico) / Decimal('100.00'))