示例#1
0
文件: tests.py 项目: cedir/web
    def test_factory_success(self):
        comprobante = Comprobante.objects.create(tipo_comprobante=self.tipo_comprobante_factura,
                                                 numero=2,
                                                 nombre_cliente='',
                                                 domicilio_cliente='',
                                                 nro_cuit='',
                                                 gravado_paciente='',
                                                 condicion_fiscal='',
                                                 responsable='',
                                                 sub_tipo='A',
                                                 estado=Comprobante.NO_COBRADO,
                                                 total_cobrado=0,
                                                 fecha_emision=datetime.today(),
                                                 fecha_recepcion=datetime.today()
                                                 )
        instance_created = calculador_informe_factory(comprobante)
        self.assertTrue(isinstance(instance_created, CalculadorInformeFactura))

        comprobante = Comprobante.objects.create(tipo_comprobante=self.tipo_comprobante_nota_debito,
                                                 numero=2,
                                                 nombre_cliente='',
                                                 domicilio_cliente='',
                                                 nro_cuit='',
                                                 gravado_paciente='',
                                                 condicion_fiscal='',
                                                 responsable='',
                                                 sub_tipo='A',
                                                 estado=Comprobante.NO_COBRADO,
                                                 total_cobrado=0,
                                                 fecha_emision=datetime.today(),
                                                 fecha_recepcion=datetime.today()
                                                 )
        instance_created = calculador_informe_factory(comprobante)
        self.assertTrue(isinstance(instance_created, CalculadorInformeNotaDebito))

        comprobante = Comprobante.objects.create(tipo_comprobante=self.tipo_comprobante_nota_credito,
                                                 numero=2,
                                                 nombre_cliente='',
                                                 domicilio_cliente='',
                                                 nro_cuit='',
                                                 gravado_paciente='',
                                                 condicion_fiscal='',
                                                 responsable='',
                                                 sub_tipo='A',
                                                 estado=Comprobante.NO_COBRADO,
                                                 total_cobrado=0,
                                                 fecha_emision=datetime.today(),
                                                 fecha_recepcion=datetime.today()
                                                 )
        instance_created = calculador_informe_factory(comprobante)
        self.assertTrue(isinstance(instance_created, CalculadorInformeNotaCredito))
示例#2
0
文件: views.py 项目: cedir/web
 def list(self, request):
     comprobantes = Comprobante.objects.exclude(estado=Comprobante.ANULADO)
     queryset = comprobantes.filter(fecha_emision__month=request.query_params["mes"],
                                    fecha_emision__year=request.query_params["anio"])
     data = [ComprobanteListadoSerializer(q, context={'calculador': calculador_informe_factory(q)}).data
             for q in queryset]
     return Response(data)
示例#3
0
 def list(self, request):
     comprobantes = Comprobante.objects.all()
     queryset = comprobantes.filter(fecha_emision__month=request.query_params["mes"],
                                    fecha_emision__year=request.query_params["anio"])
     data = [ComprobanteListadoSerializer(q, context={'calculador': calculador_informe_factory(q)}).data
             for q in queryset]
     return Response(data)
示例#4
0
文件: tests.py 项目: cedir/web
 def test_retencion_cedir_para_presentacion_no_cobrada_que_no_va_por_AMR(self):
     comprobante = Comprobante.objects.get(pk=4)
     presentacion = comprobante.presentacion.first()
     self.assertIsNotNone(presentacion)
     self.assertIsNone(presentacion.pago.first())
     calculador = calculador_informe_factory(comprobante)
     retencion_esperada = Decimal("25.00") * presentacion.total_facturado / Decimal("100.00")
     self.assertEquals(calculador.retencion_cedir, retencion_esperada)
def main():
    lineas_ejemplo = parsear_informe()
    comprobantes_del_informe = buscar_comprobantes(lineas_ejemplo)
    print(len(lineas_ejemplo))
    print(len(comprobantes_del_informe))
    assert (len(lineas_ejemplo) == len(comprobantes_del_informe)
            or len(sys.argv) > 2)

    for c in comprobantes_del_informe:
        # print("Comprobante {}".format(c.id))
        # printear_estudios(c)
        try:
            Presentacion.objects.get(comprobante__id=c.id)
        except ObjectDoesNotExist:
            continue

        nuestro = calculador_informe_factory(c)
        ejemplo = lineas_ejemplo[c.numero]
        print("\nComprobante {}".format(c.id))
        otros = nuestro.retencion_impositiva + nuestro.retencion_cedir + \
            nuestro.sala_recuperacion + \
            nuestro.total_material_especifico + \
            nuestro.uso_de_materiales + nuestro.honorarios_solicitantes
        suma = int(nuestro.honorarios_anestesia + nuestro.honorarios_medicos +
                   nuestro.total_medicamentos + nuestro.iva +
                   nuestro.retencion_anestesia + otros)
        if int(nuestro.total_facturado) != suma:
            printear_estudios(c, nuestro)
            print("    Total Facturado - calculado: {0}, suma: {1}".format(
                nuestro.total_facturado, suma))
            if int(nuestro.honorarios_medicos) != int(
                    ejemplo["honorarios_medicos"]):
                print("    Honorarios Medicos - calculado: {}, ejemplo: {}".
                      format(nuestro.honorarios_medicos,
                             ejemplo["honorarios_medicos"]))
            if int(nuestro.honorarios_anestesia) != int(
                    ejemplo["honorarios_anestesistas"]):
                print(
                    "    Honorarios Anestesistas - calculado: {}, ejemplo: {}".
                    format(nuestro.honorarios_anestesia,
                           ejemplo["honorarios_anestesistas"]))
            if int(nuestro.total_medicamentos) != int(ejemplo["medicacion"]):
                print("    Total Medicamentos - calculado: {}, ejemplo: {}".
                      format(nuestro.total_medicamentos,
                             ejemplo["medicacion"]))
            if int(otros) != int(ejemplo["otros"]):
                print("    Otros- calculado: {}, ejemplo: {}".format(
                    otros, ejemplo["otros"]))
                print("        ret_imp: {}".format(
                    nuestro.retencion_impositiva))
                print("        ret_cedir: {}".format(nuestro.retencion_cedir))
                print("        sala_rec: {}".format(nuestro.sala_recuperacion))
                print("        mat_esp: {}".format(
                    nuestro.total_material_especifico))
                print("        uso_mat: {}".format(nuestro.uso_de_materiales))
                print("        hon_sol: {}".format(
                    nuestro.honorarios_solicitantes))
示例#6
0
 def test_retencion_impositiva_para_presentacion_no_cobrada_que_no_va_por_AMR(
         self):
     comprobante = Comprobante.objects.get(pk=4)
     presentacion = comprobante.presentacion.first()
     self.assertIsNotNone(presentacion)
     self.assertIsNone(presentacion.pago.first())
     calculador = calculador_informe_factory(comprobante)
     retencion_esperada = Decimal(
         "25.00") * presentacion.total_facturado / Decimal("100.00")
     self.assertEqual(calculador.retencion_impositiva, retencion_esperada)
示例#7
0
文件: tests.py 项目: cedir/web
 def test_retencion_cedir_presentacion_cobrada(self):
     """
     Comprobante de presentación con pago.
     """
     comprobante = Comprobante.objects.get(pk=2)
     presentacion = comprobante.presentacion.first()
     self.assertIsNotNone(presentacion)
     pago = presentacion.pago.first()
     self.assertIsNotNone(pago)
     retencion_esperada = pago.gasto_administrativo * presentacion.total_facturado / Decimal(100)
     calculador = calculador_informe_factory(comprobante)
     self.assertEquals(calculador.retencion_cedir, retencion_esperada)
示例#8
0
 def test_retencion_impositiva_presentacion_cobrada(self):
     """
     Comprobante de presentación con pago.
     """
     comprobante = Comprobante.objects.get(pk=2)
     presentacion = comprobante.presentacion.first()
     self.assertIsNotNone(presentacion)
     pago = presentacion.pago.first()
     self.assertIsNotNone(pago)
     retencion_esperada = pago.retencion_impositiva * \
         presentacion.total_facturado / Decimal(100)
     calculador = calculador_informe_factory(comprobante)
     self.assertEqual(calculador.retencion_impositiva, retencion_esperada)
示例#9
0
 def test_factory_nota_debito_electronica(self):
     comprobante = Comprobante(
         tipo_comprobante=self.tipo_comprobante_nota_debito)
     instance_created = calculador_informe_factory(comprobante)
     self.assertTrue(isinstance(instance_created, CalculadorInformeFactura))
示例#10
0
 def test_factory_nota_credito(self):
     comprobante = Comprobante(
         tipo_comprobante=self.tipo_comprobante_nota_credito)
     instance_created = calculador_informe_factory(comprobante)
     self.assertTrue(
         isinstance(instance_created, CalculadorInformeNotaCredito))
示例#11
0
 def setUp(self):
     self.lineas_informe = [
         calculador_informe_factory(c) for c in Comprobante.objects.all()
     ]
示例#12
0
 def test_retencion_impositiva_es_cero_si_no_hay_presentacion(self):
     comprobante = Comprobante.objects.get(pk=3)
     self.assertIsNone(comprobante.presentacion.first())
     calculador = calculador_informe_factory(comprobante)
     self.assertEqual(calculador.retencion_cedir, Decimal("0.00"))
示例#13
0
文件: tests.py 项目: cedir/web
 def test_retencion_cedir_es_cero_si_no_hay_presentacion(self):
     comprobante = Comprobante.objects.get(pk=3)
     self.assertIsNone(comprobante.presentacion.first())
     calculador = calculador_informe_factory(comprobante)
     self.assertEquals(calculador.retencion_cedir, Decimal("0.00"))