예제 #1
0
파일: views.py 프로젝트: fabian017/WebUIS
def new_persona(request):
    #se ejecuta cuando el usuario envia el formulario con lo datos
    if request.method == 'POST':
        #Crea una instancia del autor
        form = PersonaForm(request.POST)
        #Evaluamos si el formulario es correcto, lo guardamos y redireccionamos
        if form.is_valid():
            #Obtenemos lo datos del formulario
            ciudadd = Ciudad.objects.get(pk=2)
            docd = TipoDocumento.objects.get(pk=2)
            nombrex = form.cleaned_data['nombres']
            apellidox = form.cleaned_data['apellidos']
            documentox = form.cleaned_data['documento']
            fechanacimientox = form.cleaned_data['fechanacimiento']
            emailx = form.cleaned_data['email']
            telefonox = form.cleaned_data['telefono']
            usuariox = form.cleaned_data['usuario']
            passwordx = form.cleaned_data['password']
            persona = Persona(idtipoDocumento= docd, ciudad= ciudadd, nombres=nombrex, apellidos = apellidox, documento =documentox, fechanacimiento=fechanacimientox, email = emailx,telefono=telefonox, usuario=usuariox,password=passwordx)
            persona.save()
            return HttpResponseRedirect(reverse('personas'))

    else:
        #Se ejecuta cuando el usuario va a llenar el formulario
        form = PersonaForm()

    return render(request, 'persona/create_personas.html', {'form': form})
예제 #2
0
    def setUp(self):

        self.persona = Persona(nombre="Alguien",
                               apellido="Alguien",
                               doc="123321123",
                               domicilio="cale213",
                               email="*****@*****.**")
        self.persona.save()
        self.persona.agregar_rol(Tecnico())
        self.persona.agregar_rol(Cliente())
        self.usuario = Usuario.objects.crear_usuario(username="******",
                                                     password="******",
                                                     persona=self.persona)
        self.persona.agregar_rol(Usuario())
        self.persona.save()
        self.rubro = Rubro(nombre="Notebooks",
                           descripcion="Reparación de notebooks")
        self.rubro.save()
        self.tipo_servicio = TipoServicio(
            nombre="Taller", descripcion="Reparación de equipos en taller")
        self.tipo_servicio.save()
        self.descripcion = "Ta todo completamente hecho mierda"
        self.orden = Orden(cliente=self.persona.como(Cliente),
                           usuario=self.usuario,
                           tecnico=self.persona.como(Tecnico),
                           rubro=self.rubro,
                           equipo=None,
                           tipo_servicio=self.tipo_servicio,
                           descripcion=self.descripcion)
        self.orden.save()
예제 #3
0
    def setUp(self):
        # Creamos una orden de trabajo para probar comportamiento de la reserva de stock 
        # frente a las tareas
        self.persona = Persona(
            nombre="Alguien",
            apellido="Alguien",
            doc="123321123",
            domicilio="cale213",
            email="*****@*****.**"
        )
        self.persona.save()
        self.persona.agregar_rol(Tecnico())
        self.persona.agregar_rol(Cliente())
        self.usuario = Usuario.objects.crear_usuario(username="******", password="******", persona=self.persona)
        self.persona.agregar_rol(Usuario())
        self.persona.save
        self.rubro = Rubro(nombre="Notebooks", descripcion="Reparación de notebooks")
        self.rubro.save()
        self.tipo_servicio = TipoServicio(nombre="Taller", descripcion="Reparación de equipos en taller")
        self.tipo_servicio.save()
        self.descripcion = "Ta destruida la máquina"

        self.orden = Orden(
            cliente=self.persona.como(Cliente), 
            usuario=self.usuario, 
            tecnico=self.persona.como(Tecnico), 
            rubro=self.rubro,
            equipo=None, 
            tipo_servicio=self.tipo_servicio, 
            descripcion=self.descripcion
        )
        self.orden.save()

        # creamos un producto, tarifa y tarea para reservar stock
        self.producto = Producto(
            nombre="SSD", 
            descripcion="Disco de estado sólido",
            marca="kingstong",
            stock_minimo=10,
            stock=20,
            precio=600
        )
        self.producto.save()
        self.tipo_tarea = TipoTarea(nombre="Cambio de disco", rubro=self.rubro)
        self.tipo_tarea.save()  
        self.tarifa = Tarifa(tipo_tarea=self.tipo_tarea, tipo_servicio=self.tipo_servicio, precio=300)
        self.tarifa.save()      
        self.tarea = Tarea.crear(
            tipo_tarea=self.tipo_tarea,
            orden=self.orden,
            observacion="Guardar el disco viejo")
        self.tarea.save()

        # Reserva de 12 unidades del producto el stock mínimo del producto es 10
        self.reserva = ReservaStock(tarea=self.tarea, producto=self.producto, cantidad=12)
        self.reserva.save()
예제 #4
0
    def save(self, empleado=None):
        cleaned_data = super(EmpleadoForm, self).clean()

        if empleado is None:
            persona = Persona()
            persona.tipo = Persona.TIPO_PERSONA_NATURAL
            persona.observaciones = cleaned_data["observaciones"]
            persona.ruc = cleaned_data["cedula"]
            persona.nombre_comercial = ""
            persona.save()

            usuario = User()
            usuario.username = cleaned_data["usuario"]
            usuario.set_password(cleaned_data["contrasenia"])
            usuario.email = cleaned_data["email"]
            usuario.save()

            persona_natural = PersonaNatural()
            persona_natural.ciudad_nacimiento = cleaned_data['ciudad']
            persona_natural.cedula = cleaned_data["cedula"]
            persona_natural.nombres = cleaned_data["nombres"]
            persona_natural.apellido_paterno = cleaned_data["apellido_paterno"]
            persona_natural.apellido_materno = cleaned_data["apellido_materno"]
            persona_natural.persona = persona
            persona_natural.sexo = cleaned_data["sexo"]
            persona_natural.fecha_nacimiento = cleaned_data["fecha_nacimiento"]
            persona_natural.save()

            empleado = Empleado()
            empleado.persona = persona_natural
            empleado.usuario = usuario
            empleado.foto = cleaned_data["foto"]
            empleado.observaciones = cleaned_data["observaciones"]
            empleado.save()
            empleado.plazas_trabajo = cleaned_data["plazas_trabajo"]
            empleado.save()
        else:
            empleado.persona.nombres = cleaned_data["nombres"]
            empleado.persona.apellido_paterno = cleaned_data[
                "apellido_paterno"]
            empleado.persona.apellido_materno = cleaned_data[
                "apellido_materno"]
            empleado.persona.sexo = cleaned_data["sexo"]
            empleado.persona.cedula = cleaned_data["cedula"]
            empleado.persona.ciudad_nacimiento = cleaned_data["ciudad"]
            empleado.persona.save()

            empleado.usuario.email = cleaned_data["email"]
            empleado.usuario.save()

            empleado.foto = cleaned_data["foto"]
            empleado.observaciones = cleaned_data["observaciones"]
            empleado.save()

            empleado.plazas_trabajo = cleaned_data["plazas_trabajo"]
            empleado.save()

        return empleado
예제 #5
0
    def dispatch(self, request, *args, **kwargs):

        self.persona = Persona()
        self.ReciboFormset = inlineformset_factory(Persona, Recibo,
                                                   form=ReciboForm,
                                                   fk_name='cliente', extra=1)
        return super(CreateView, self).dispatch(request, *args, **kwargs)
예제 #6
0
    def dispatch(self, request, *args, **kwargs):

        self.persona = Persona()

        self.BeneficiarioFormset = inlineformset_factory(Persona,
                                                         Beneficiario,
                                                         form=BeneficiarioForm,
                                                         fk_name='persona',
                                                         extra=1)
        return super(BeneficiarioPersonaCreateView,
                     self).dispatch(request, *args, **kwargs)
예제 #7
0
    def dispatch(self, request, *args, **kwargs):

        self.persona = Persona()

        self.ContratoFormset = inlineformset_factory(Persona,
                                                     Contrato,
                                                     form=ContratoForm,
                                                     fk_name='persona',
                                                     extra=1)
        return super(ContratoPersonaCreateView,
                     self).dispatch(request, *args, **kwargs)
예제 #8
0
    def dispatch(self, request, *args, **kwargs):

        self.persona = Persona()

        self.PacienteFormset = inlineformset_factory(Persona,
                                                     Paciente,
                                                     form=PacienteForm,
                                                     fk_name='persona',
                                                     extra=1)
        return super(PacientePersonaCreateView,
                     self).dispatch(request, *args, **kwargs)
예제 #9
0
    def setUp(self):
        # creamos una orden de trabajo para agregarle tareas
        self.persona = Persona(nombre="Alguien",
                               apellido="Alguien",
                               doc="123321123",
                               domicilio="cale213",
                               email="*****@*****.**")
        self.persona.save()
        self.persona.agregar_rol(Tecnico())
        self.persona.agregar_rol(Cliente())
        self.usuario = Usuario.objects.crear_usuario(username="******",
                                                     password="******",
                                                     persona=self.persona)
        self.persona.agregar_rol(Usuario())
        self.persona.save
        self.rubro = Rubro(nombre="Notebooks",
                           descripcion="Reparación de notebooks")
        self.rubro.save()
        self.tipo_servicio = TipoServicio(
            nombre="Taller", descripcion="Reparación de equipos en taller")
        self.tipo_servicio.save()
        self.descripcion = "Ta todo completamente hecho mierda"

        self.orden = Orden(cliente=self.persona.como(Cliente),
                           usuario=self.usuario,
                           tecnico=self.persona.como(Tecnico),
                           rubro=self.rubro,
                           equipo=None,
                           tipo_servicio=self.tipo_servicio,
                           descripcion=self.descripcion)
        self.orden.save()
        # creamos un producto para reservar stock
        self.producto = Producto(nombre="SSD",
                                 descripcion="Disco de estado sólido",
                                 marca="Kingtong",
                                 stock_minimo=10,
                                 stock=20,
                                 precio=600)
        self.producto.save()
예제 #10
0
def check_line(line, vencimiento):
    file_pcd = int(line[4])
    file_certificado = int(line[6])
    poliza_f = int(line[5])
    vencimiento_r = None

    master = MasterContract.objects.get(poliza=poliza_f)

    if line[21]:

        venc = server_timezone.localize(datetime.strptime(line[21], '%m/%d/%Y'))
        if venc <= vencimiento:
            vencimiento_r = venc
        else:
            vencimiento_r = vencimiento

    else:
        vencimiento_r = vencimiento

    try:
        pcd = PCD.objects.get(numero=file_pcd)
        contratos = pcd.persona.contratos.filter(
            certificado=file_certificado)

        for contrato in contratos.all():
            contrato.vencimiento = vencimiento_r
            contrato.plan = master.plan
            contrato.master = master
            contrato.save()

        for beneficiario in pcd.persona.beneficiarios.all():
            beneficiario.contrato.vencimiento = vencimiento_r
            beneficiario.contrato.save()

    except ObjectDoesNotExist:

        apellido_f, nombre_f = line[10].split(",")
        nacimiento_f = server_timezone.localize(
            datetime.strptime(line[16], "%m/%d/%Y"))
        sexo_f = line[15]
        identificacion = line[24]

        persona = Persona(nombre=nombre_f, apellido=apellido_f,
                          sexo=sexo_f, nacimiento=nacimiento_f,
                          identificacion=identificacion)
        persona.save()
        pcd = PCD(persona=persona, numero=file_pcd)
        pcd.save()

        dependiente = int(line[8])

        if dependiente == 0:

            contract = master.create_contract(persona, vencimiento_r,
                                              file_certificado, file_pcd)
            contract.save()
        else:
            contract = Contrato.objects.filter(poliza=poliza_f,
                                               certificado=file_certificado).first()

            if contract:
                beneficiario = Beneficiario(persona=persona, contrato=contract)
                beneficiario.save()

    except MultipleObjectsReturned:
        pass
예제 #11
0
class ProductoTest(TestCase):

    def setUp(self):
        # Creamos una orden de trabajo para probar comportamiento de la reserva de stock 
        # frente a las tareas
        self.persona = Persona(
            nombre="Alguien",
            apellido="Alguien",
            doc="123321123",
            domicilio="cale213",
            email="*****@*****.**"
        )
        self.persona.save()
        self.persona.agregar_rol(Tecnico())
        self.persona.agregar_rol(Cliente())
        self.usuario = Usuario.objects.crear_usuario(username="******", password="******", persona=self.persona)
        self.persona.agregar_rol(Usuario())
        self.persona.save
        self.rubro = Rubro(nombre="Notebooks", descripcion="Reparación de notebooks")
        self.rubro.save()
        self.tipo_servicio = TipoServicio(nombre="Taller", descripcion="Reparación de equipos en taller")
        self.tipo_servicio.save()
        self.descripcion = "Ta destruida la máquina"

        self.orden = Orden(
            cliente=self.persona.como(Cliente), 
            usuario=self.usuario, 
            tecnico=self.persona.como(Tecnico), 
            rubro=self.rubro,
            equipo=None, 
            tipo_servicio=self.tipo_servicio, 
            descripcion=self.descripcion
        )
        self.orden.save()

        # creamos un producto, tarifa y tarea para reservar stock
        self.producto = Producto(
            nombre="SSD", 
            descripcion="Disco de estado sólido",
            marca="kingstong",
            stock_minimo=10,
            stock=20,
            precio=600
        )
        self.producto.save()
        self.tipo_tarea = TipoTarea(nombre="Cambio de disco", rubro=self.rubro)
        self.tipo_tarea.save()  
        self.tarifa = Tarifa(tipo_tarea=self.tipo_tarea, tipo_servicio=self.tipo_servicio, precio=300)
        self.tarifa.save()      
        self.tarea = Tarea.crear(
            tipo_tarea=self.tipo_tarea,
            orden=self.orden,
            observacion="Guardar el disco viejo")
        self.tarea.save()

        # Reserva de 12 unidades del producto el stock mínimo del producto es 10
        self.reserva = ReservaStock(tarea=self.tarea, producto=self.producto, cantidad=12)
        self.reserva.save()

    def test_save(self):
        # testeamos que se hayan formateado las cadenas nombre y marca a formamo title
        self.assertTrue(str.istitle(self.producto.nombre))
        self.assertTrue(str.istitle(self.producto.marca))

        # intentamos crear nuevamente el producto comprobando que lanza excepción
        try:
            producto = Producto(
                nombre="ssd", 
                descripcion="Disco de estado sólido",
                marca="kingstong",
                stock_minimo=10,
                stock=20,
                precio=600
            )
            producto.save()
        except Exception as e:
            #print(str(e))
            pass
        self.assertFalse(producto.id)

    def test_stock_disponible(self):
        # En línea 52 se fijó el stock en 20. En linea 67 se creó una reserva de 12
        self.assertEqual(self.producto.stock_disponible, 8)

    def test_stock_reservado(self):
        self.assertEqual(self.producto.stock_reservado, 12)

    def test_stock_bajo(self):
        # En línea 51 se fijó el stock mínimo requerido en 10. El stock es bajo si
        # stock disponible (8) < sotck mínimo (10)
        self.assertTrue(self.producto.stock_es_bajo)
예제 #12
0
def check_line(line, vencimiento):
    file_pcd = int(line[4])
    file_certificado = int(line[6])
    poliza_f = int(line[5])
    vencimiento_r = None

    master = MasterContract.objects.get(poliza=poliza_f)

    if line[21]:

        venc = server_timezone.localize(datetime.strptime(
            line[21], '%m/%d/%Y'))
        if venc <= vencimiento:
            vencimiento_r = venc
        else:
            vencimiento_r = vencimiento

    else:
        vencimiento_r = vencimiento

    try:
        pcd = PCD.objects.get(numero=file_pcd)
        contratos = pcd.persona.contratos.filter(certificado=file_certificado)

        for contrato in contratos.all():
            contrato.vencimiento = vencimiento_r
            contrato.plan = master.plan
            contrato.master = master
            contrato.save()

        for beneficiario in pcd.persona.beneficiarios.all():
            beneficiario.contrato.vencimiento = vencimiento_r
            beneficiario.contrato.save()

    except ObjectDoesNotExist:

        apellido_f, nombre_f = line[10].split(",")
        nacimiento_f = server_timezone.localize(
            datetime.strptime(line[16], "%m/%d/%Y"))
        sexo_f = line[15]
        identificacion = line[24]

        persona = Persona(nombre=nombre_f,
                          apellido=apellido_f,
                          sexo=sexo_f,
                          nacimiento=nacimiento_f,
                          identificacion=identificacion)
        persona.save()
        pcd = PCD(persona=persona, numero=file_pcd)
        pcd.save()

        dependiente = int(line[8])

        if dependiente == 0:

            contract = master.create_contract(persona, vencimiento_r,
                                              file_certificado, file_pcd)
            contract.save()
        else:
            contract = Contrato.objects.filter(
                poliza=poliza_f, certificado=file_certificado).first()

            if contract:
                beneficiario = Beneficiario(persona=persona, contrato=contract)
                beneficiario.save()

    except MultipleObjectsReturned:
        pass
예제 #13
0
파일: models.py 프로젝트: AngelPercy/sysmed
def check_line(line, vencimiento):
    file_pcd = line[0]
    file_certificado = int(line[2])
    poliza_f = line[1]
    apellido_f, nombre_f = line[4].split(",")
    nacimiento_f = server_timezone.localize(
        datetime.strptime(line[6], "%m/%d/%Y"))
    sexo_f = line[5]
    identificacion = line[9]
    vencimiento_r = vencimiento

    activo = line[7].upper()

    master = MasterContract.objects.get(poliza=poliza_f)

    if line[8]:
        venc = server_timezone.localize(datetime.strptime(line[8], '%m/%d/%Y'))
        if venc <= vencimiento_r:
            vencimiento_r = venc

    try:
        pcd = PCD.objects.get(numero=file_pcd)

        persona = pcd.persona
        persona.apellido = apellido_f
        persona.nombre = nombre_f
        persona.save()

        contratos = Contrato.objects.filter(persona=persona,
                                            certificado=file_certificado)

        for contrato in contratos.all():
            contrato.vencimiento = vencimiento_r
            contrato.plan = master.plan
            contrato.master = master
            contrato.exclusion = line[10]
            if activo == 'S':
                contrato.suspendido = True
            else:
                contrato.suspendido = False

            contrato.save()

        for beneficiario in Beneficiario.objects.filter(
                persona=persona).all():
            beneficiario.contrato.vencimiento = vencimiento_r
            beneficiario.exclusion = line[10]
            beneficiario.contrato.save()

    except ObjectDoesNotExist:

        persona = Persona(nombre=nombre_f, apellido=apellido_f,
                          sexo=sexo_f, nacimiento=nacimiento_f,
                          identificacion=identificacion)
        persona.save()
        pcd = PCD(persona=persona, numero=file_pcd)
        pcd.save()

        dependiente = int(line[3])

        if dependiente == 0:

            contract = master.create_contract(persona, vencimiento_r,
                                              file_certificado, file_pcd)
            if activo == 'S':
                contract.suspendido = True
            else:
                contract.suspendido = False
            contract.exclusion = line[10]
            contract.save()
        else:
            contract = Contrato.objects.filter(poliza=poliza_f,
                                               certificado=file_certificado).first()

            if contract:
                beneficiario = Beneficiario(persona=persona, contrato=contract)
                beneficiario.exclusion = line[10]
                beneficiario.save()

    except MultipleObjectsReturned:
        pass
예제 #14
0
class TareaTest(TestCase):
    def setUp(self):
        # creamos una orden de trabajo para agregarle tareas
        self.persona = Persona(nombre="Alguien",
                               apellido="Alguien",
                               doc="123321123",
                               domicilio="cale213",
                               email="*****@*****.**")
        self.persona.save()
        self.persona.agregar_rol(Tecnico())
        self.persona.agregar_rol(Cliente())
        self.usuario = Usuario.objects.crear_usuario(username="******",
                                                     password="******",
                                                     persona=self.persona)
        self.persona.agregar_rol(Usuario())
        self.persona.save
        self.rubro = Rubro(nombre="Notebooks",
                           descripcion="Reparación de notebooks")
        self.rubro.save()
        self.tipo_servicio = TipoServicio(
            nombre="Taller", descripcion="Reparación de equipos en taller")
        self.tipo_servicio.save()
        self.descripcion = "Ta todo completamente hecho mierda"

        self.orden = Orden(cliente=self.persona.como(Cliente),
                           usuario=self.usuario,
                           tecnico=self.persona.como(Tecnico),
                           rubro=self.rubro,
                           equipo=None,
                           tipo_servicio=self.tipo_servicio,
                           descripcion=self.descripcion)
        self.orden.save()
        # creamos un producto para reservar stock
        self.producto = Producto(nombre="SSD",
                                 descripcion="Disco de estado sólido",
                                 marca="Kingtong",
                                 stock_minimo=10,
                                 stock=20,
                                 precio=600)
        self.producto.save()

    def test_crear(self):
        # Creamos un tipo de tarea y una tarifa para la creación de la tarea
        self.tipo_tarea = TipoTarea(nombre="Cambio de disco", rubro=self.rubro)
        self.tipo_tarea.save()
        self.tarifa = Tarifa(tipo_tarea=self.tipo_tarea,
                             tipo_servicio=self.tipo_servicio,
                             precio=300)
        self.tarifa.save()

        # creamos la tarea
        self.tarea = Tarea.crear(tipo_tarea=self.tipo_tarea,
                                 orden=self.orden,
                                 observacion="Guardar el disco viejo")

        # Testeamos que el precio de la tarea sea el precio de la tarifa
        self.assertEqual(self.tarifa.precio, self.tarea.precio)

    def test_crear_sin_tarifa(self):
        # Creamos un tipo de tarea sin tarifa para la creación de la tarea
        self.tipo_tarea = TipoTarea(nombre="crear_sin_tarifa",
                                    rubro=self.rubro)
        self.tipo_tarea.save()

        # Verificamos que el tipo de tarea creado no tiene tareas asociadas
        self.assertEqual(self.tipo_tarea.tareas.all().count(), 0)
        try:
            # creamos la tarea
            self.tarea = Tarea.crear(tipo_tarea=self.tipo_tarea,
                                     orden=self.orden,
                                     observacion="Guardar el disco viejo")
        except Exception as e:
            self.assertTrue(e)

        # Testeamos que el tipo de tarea sigue sin tareas asociadas
        self.assertEqual(self.tipo_tarea.tareas.all().count(), 0)

    def test_sos_estado(self):
        # Test para los métodos que preguntan si una tarea está en un determinado estado

        # Creamos un tipo de tarea y una tarifa para la creación de la tarea
        self.tipo_tarea = TipoTarea(nombre="Cambio de disco", rubro=self.rubro)
        self.tipo_tarea.save()
        self.tarifa = Tarifa(tipo_tarea=self.tipo_tarea,
                             tipo_servicio=self.tipo_servicio,
                             precio=300)
        self.tarifa.save()

        # creamos la tarea
        self.tarea = Tarea.crear(tipo_tarea=self.tipo_tarea,
                                 orden=self.orden,
                                 observacion="Guardar el disco viejo")

        tarea_presupuestada = TareaPresupuestada(self.tarea)
        self.assertTrue(self.tarea.estas_presupuestada)

        tarea_pendiente = TareaPendiente(self.tarea)
        self.assertTrue(self.tarea.estas_pendiente)

        tarea_cancelada = TareaCancelada(self.tarea)
        self.assertTrue(self.tarea.estas_cancelada)

        tarea_realizada = TareaRealizada(self.tarea)
        self.assertTrue(self.tarea.estas_realizada)
예제 #15
0
def check_line(line, vencimiento, master_dict):
    """
    Reads one list and according to its positional contents it will act
    accordingly:

    If there exists a :class:`PCD` instance matching its contents it will update
    the :class:`Contrato` associated to the :class:`PCD` instance.

    If there is not a matching :class:`PCD` it will start creating a
    :class:`Persona`, :class:`Contrato and :class:`PCD` that reflect the
    contents of the list.

    :param line:        The list that will be read its content can be described
                        this way:
                        0. PCD
                        1. Policy
                        2. Certificate
                        3. Dependant
                        4. Full name
                        5. Sex
                        6. Birthday
                        7. Active Status Flag
                        8. Contract ending date
                        9. Identification
                        10. Exclusion
    :param vencimiento: The end date of the contract to be updated
    :return:
    """
    file_pcd = smart_text(line[0])
    file_certificado = smart_text(line[2])
    poliza_f = smart_text(line[1])
    apellido_f, nombre_f = smart_text(line[4]).split(",")
    apellido_f = apellido_f.lstrip().rstrip()
    nombre_f = nombre_f.lstrip().rstrip()
    nacimiento_f = server_timezone.localize(
        datetime.strptime(line[6], "%m/%d/%Y"))
    sexo_f = smart_text(line[5])
    identificacion = smart_text(line[9])
    vencimiento_r = vencimiento
    exclusion = smart_text(line[10])
    dependiente = int(line[3])
    activo = smart_text(line[7]).upper()

    master = master_dict[poliza_f]
    suspendido = True if activo == 'S' else False

    vencimiento_r = make_end_day(datetime.strptime(line[8], '%m/%d/%Y'))

    try:
        pcd = PCD.objects.prefetch_related(
            'persona',
            'persona__beneficiarios',
            'persona__contratos',
        ).get(numero=file_pcd)

        persona = pcd.persona

        contratos = persona.contratos.filter(certificado=file_certificado)

        contratos.update(
            suspendido=suspendido,
            exclusion=exclusion,
            master=master,
            plan=master.plan,
            vencimiento=vencimiento_r
        )

        persona.beneficiarios.filter(
            persona__contratos__certificado=file_certificado
        ).update(
            exclusion=exclusion,
        )

    except ObjectDoesNotExist:

        persona = Persona(nombre=nombre_f, apellido=apellido_f,
                          sexo=sexo_f, nacimiento=nacimiento_f,
                          identificacion=identificacion)
        persona.save()
        pcd = PCD(persona=persona, numero=file_pcd)
        pcd.save()

        if dependiente == 0:

            contract = master.create_contract(
                persona,
                vencimiento_r,
                file_certificado,
                file_pcd
            )
            contract.suspendido = suspendido
            contract.exclusion = exclusion
            contract.save()
        else:
            contract = Contrato.objects.filter(
                poliza=poliza_f,
                certificado=file_certificado
            ).first()

            if contract:
                beneficiario = Beneficiario(persona=persona, contrato=contract)
                beneficiario.exclusion = exclusion
                beneficiario.save()

    except MultipleObjectsReturned:
        pass
예제 #16
0
파일: models.py 프로젝트: AngelPercy/sysmed
def check_line(line, vencimiento):
    file_pcd = line[0]
    file_certificado = int(line[2])
    poliza_f = line[1]
    apellido_f, nombre_f = line[4].split(",")
    nacimiento_f = server_timezone.localize(
        datetime.strptime(line[6], "%m/%d/%Y"))
    sexo_f = line[5]
    identificacion = line[9]
    vencimiento_r = vencimiento

    activo = line[7].upper()

    master = MasterContract.objects.get(poliza=poliza_f)

    if line[8]:
        venc = server_timezone.localize(datetime.strptime(line[8], '%m/%d/%Y'))
        if venc <= vencimiento_r:
            vencimiento_r = venc

    try:
        pcd = PCD.objects.get(numero=file_pcd)

        persona = pcd.persona
        persona.apellido = apellido_f
        persona.nombre = nombre_f
        persona.save()

        contratos = Contrato.objects.filter(persona=persona,
                                            certificado=file_certificado)

        for contrato in contratos.all():
            contrato.vencimiento = vencimiento_r
            contrato.plan = master.plan
            contrato.master = master
            contrato.exclusion = line[10]
            if activo == 'S':
                contrato.suspendido = True
            else:
                contrato.suspendido = False

            contrato.save()

        for beneficiario in Beneficiario.objects.filter(persona=persona).all():
            beneficiario.contrato.vencimiento = vencimiento_r
            beneficiario.exclusion = line[10]
            beneficiario.contrato.save()

    except ObjectDoesNotExist:

        persona = Persona(nombre=nombre_f,
                          apellido=apellido_f,
                          sexo=sexo_f,
                          nacimiento=nacimiento_f,
                          identificacion=identificacion)
        persona.save()
        pcd = PCD(persona=persona, numero=file_pcd)
        pcd.save()

        dependiente = int(line[3])

        if dependiente == 0:

            contract = master.create_contract(persona, vencimiento_r,
                                              file_certificado, file_pcd)
            if activo == 'S':
                contract.suspendido = True
            else:
                contract.suspendido = False
            contract.exclusion = line[10]
            contract.save()
        else:
            contract = Contrato.objects.filter(
                poliza=poliza_f, certificado=file_certificado).first()

            if contract:
                beneficiario = Beneficiario(persona=persona, contrato=contract)
                beneficiario.exclusion = line[10]
                beneficiario.save()

    except MultipleObjectsReturned:
        pass
예제 #17
0
class OrdenTest(TestCase):
    def setUp(self):

        self.persona = Persona(nombre="Alguien",
                               apellido="Alguien",
                               doc="123321123",
                               domicilio="cale213",
                               email="*****@*****.**")
        self.persona.save()
        self.persona.agregar_rol(Tecnico())
        self.persona.agregar_rol(Cliente())
        self.usuario = Usuario.objects.crear_usuario(username="******",
                                                     password="******",
                                                     persona=self.persona)
        self.persona.agregar_rol(Usuario())
        self.persona.save()
        self.rubro = Rubro(nombre="Notebooks",
                           descripcion="Reparación de notebooks")
        self.rubro.save()
        self.tipo_servicio = TipoServicio(
            nombre="Taller", descripcion="Reparación de equipos en taller")
        self.tipo_servicio.save()
        self.descripcion = "Ta todo completamente hecho mierda"
        self.orden = Orden(cliente=self.persona.como(Cliente),
                           usuario=self.usuario,
                           tecnico=self.persona.como(Tecnico),
                           rubro=self.rubro,
                           equipo=None,
                           tipo_servicio=self.tipo_servicio,
                           descripcion=self.descripcion)
        self.orden.save()

    def test_crear(self):
        # Testeamos que haya una orden creada y que sea la nuestra
        self.assertTrue(Orden.objects.all().count(), 1)

    def test_agregar_tarea(self):
        self.tipo_tarea1 = TipoTarea(nombre="Cambio de disco",
                                     rubro=self.rubro)
        self.tipo_tarea1.save()
        self.tarifa = Tarifa(tipo_tarea=self.tipo_tarea1,
                             tipo_servicio=self.tipo_servicio,
                             precio=300)
        self.tarifa.save()
        self.observacion = "Guardar el disco viejo"

        # Probamos caso de éxito
        self.orden.agregar_tarea(self.tipo_tarea1, self.observacion)
        self.assertEqual(self.orden.tareas.count(), 1)
        self.assertTrue(
            self.orden.tareas.get(
                tipo_tarea=self.tipo_tarea1).estas_presupuestada())

        # Probamos que lance excepción si la tarea no es del rubro de la orden
        rubro = Rubro(nombre="Impresoras Fiscales",
                      descripcion="Reparación de impresoras fiscales")
        rubro.save()
        tipo_tarea = TipoTarea(nombre="Limpieza de cabezales", rubro=rubro)
        tipo_tarea.save()

        try:
            self.orden.agregar_tarea(tipo_tarea, self.observacion)
        except Exception as e:
            self.assertTrue(e)

        self.assertEqual(self.orden.tareas.count(), 1)