Example #1
0
    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)
Example #2
0
 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'))
Example #3
0
    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)
Example #4
0
 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)
Example #5
0
 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)
Example #6
0
 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'))