Esempio n. 1
0
 def existe_artbynombre(self, ic_nombre):
     if (ic_nombre is not None and len(cadenas.strip(ic_nombre)) > 0):
         sql = u"select count(*) as cuenta from titemconfig where  ic_nombre = '{0}' and ic_estado=1".format(
             cadenas.strip(unicode(ic_nombre)))
         cuenta = self.first_col(sql, 'cuenta')
         return cuenta > 0
     return False
Esempio n. 2
0
    def collection_post(self):
        log.info('TFuserRest------------>')
        log.info('collection_post------------>')
        accion = self.get_request_param('accion')
        if accion == 'auth':
            form = self.get_request_json_body()
            fuserdao = TFuserDao(self.dbsession)
            emp_codigo = cadenas.strip(form['empresa'])
            empresaDao = TEmpresaDao(self.dbsession)

            self.change_dbschema('public')
            empresa = empresaDao.buscar_por_codigo(emp_codigo=emp_codigo)
            if empresa is None:
                return {'status': 404,
                        'msg': 'Empresa no registrada'}
            else:
                emp_esquema = empresa['emp_esquema']
                self.change_dbschema(emp_esquema)
                autenticado = fuserdao.autenticar(us_cuenta=cadenas.strip(form['username']),
                                                  us_clave=cadenas.strip(form['password']))
                secciones = TSeccionDao(self.dbsession).listar()
                sec_id = secciones[0]['sec_id']

            if autenticado:
                user = fuserdao.get_user(us_cuenta=cadenas.strip(form['username']))
                genera_token_util = GeneraTokenUtil()
                token = genera_token_util.gen_token(us_id=user['us_id'], emp_codigo=empresa['emp_codigo'],
                                                    emp_esquema=empresa['emp_esquema'], sec_id=sec_id)
                return {'autenticado': autenticado,
                        'userinfo': user,
                        'seccion': secciones[0],
                        'token': token,
                        'menu': empresa['emp_menu']}
            else:
                return {'autenticado': autenticado}
Esempio n. 3
0
    def update_nomapel(self, id_user, nomapel, user_name, roles):
        """
        Actualiza el nombre del usuario
        :param id_user:
        :param us_nomapel:
        :return:
        """

        if not cadenas.es_nonulo_novacio(nomapel):
            raise ErrorValidacionExc(
                "Debe ingresar los apellidos y nombres del usuario")

        if not cadenas.es_nonulo_novacio(user_name):
            raise ErrorValidacionExc("Debe ingresar el nombre de usuario")

        tuser = self.dbsession.query(TUser).filter(
            TUser.us_id == id_user).first()

        if tuser is not None:

            if cadenas.strip(user_name) != cadenas.strip(tuser.us_name):
                if self.existe(user_name):
                    raise ErrorValidacionExc(
                        "Ya existe una cuenta de usuario con el nombre:{0}, elija otro"
                        .format(user_name))

            tuser.us_nomapel = nomapel.upper()
            tuser.us_name = user_name

        # Registro de la matriz de roles
        tuserroldao = TUserRolDao(self.dbsession)
        tuserroldao.asociar(us_id=id_user, roles_list=roles)
Esempio n. 4
0
    def update_nomapel(self, id_user, nomapel, user_name, roles, user_edit):
        """
        Actualiza el nombre del usuario
        :param id_user:
        :param us_nomapel:
        :return:
        """

        if not cadenas.es_nonulo_novacio(nomapel):
            raise ErrorValidacionExc(
                "Debe ingresar los apellidos y nombres del usuario")

        if not cadenas.es_nonulo_novacio(user_name):
            raise ErrorValidacionExc("Debe ingresar el nombre de usuario")

        tuser = self.dbsession.query(TUser).filter(
            TUser.us_id == id_user).first()

        form = {}
        form['us_nomapel'] = nomapel
        form['user_name'] = user_name

        if tuser is not None:

            tuser_cloned = copy.copy(tuser)

            if cadenas.strip(user_name) != cadenas.strip(tuser.us_name):
                if self.existe(user_name):
                    raise ErrorValidacionExc(
                        "Ya existe una cuenta de usuario con el nombre:{0}, elija otro"
                        .format(user_name))

            tuser.us_nomapel = nomapel.upper()
            tuser.us_name = user_name

            tauditdao = TAuditDao(self.dbsession)
            list_cambios = checkcambioutil.valor_cambiado(
                tuser_cloned.__json__(), form)
            if list_cambios is not None and len(list_cambios) > 0:
                for row in list_cambios:
                    col = row['col']
                    valorant = row['valorant']
                    valordesp = row['valordesp']
                    tauditdao.crea_accion_update(enums.TBL_USUARIOS, col,
                                                 user_edit, valorant,
                                                 valordesp, tuser.us_id)

        # Registro de la matriz de roles
        tuserroldao = TUserRolDao(self.dbsession)
        tuserroldao.asociar(us_id=id_user,
                            roles_list=roles,
                            user_crea=user_edit)
Esempio n. 5
0
 def get_datos_cuenta(self, email):
     sql = u"""
     select up_id, up_email, up_tipo, up_nombres, up_celular, up_photourl from tuserpaciente where up_email = '{0}' 
     """.format(cadenas.strip(email))
     tupla_desc = ('up_id', 'up_email', 'up_tipo', 'up_nombres',
                   'up_celular', 'up_photourl')
     return self.first(sql, tupla_desc)
Esempio n. 6
0
    def actualizar(self, form, user_actualiza):
        # Datos para actualizar:

        ic_id = form['ic_id']
        titemconfig = self.dbsession.query(TItemConfig).filter(
            TItemConfig.ic_id == ic_id).first()
        if titemconfig is not None:
            # Cosas que se pueden actualizar:
            # Nombre, categoria, proveedro, precio de compra, precio de venta, fecha de caducidad, observacion
            icdp_preciocompra = form['icdp_preciocompra']
            icdp_precioventa = form['icdp_precioventa']
            icdp_precioventamin = form['icdp_precioventamin']

            icdp_grabaiva = form['icdp_grabaiva']
            if icdp_grabaiva:
                # El precio de compra y de venta se le debe quitar el iva
                # icdp_preciocompra = ivautil.redondear_precio_db(ivautil.quitar_iva(icdp_preciocompra))
                icdp_precioventa = ivautil.redondear_precio_db(
                    ivautil.quitar_iva(icdp_precioventa))
                icdp_precioventamin = ivautil.redondear_precio_db(
                    ivautil.quitar_iva(icdp_precioventamin))

            old_ic_nombre = cadenas.strip(titemconfig.ic_nombre)
            ic_nombre = cadenas.strip_upper(form['ic_nombre'])
            if ic_nombre != old_ic_nombre:
                if self.existe_artbynombre(ic_nombre):
                    raise ErrorValidacionExc(
                        u"Ya existe registrado un producto o servicio con el nombre: '{0}'"
                        .format(ic_nombre))

            titemconfig.ic_nombre = ic_nombre
            titemconfig.ic_nota = form['ic_nota']
            titemconfig.catic_id = form['catic_id']
            titemconfig.ic_useractualiza = user_actualiza
            titemconfig.ic_fechaactualiza = datetime.now()

            self.dbsession.add(titemconfig)

            titemconfigdp = self.dbsession.query(TItemConfigDatosProd).filter(
                TItemConfigDatosProd.ic_id == ic_id).first()
            if titemconfigdp is not None:
                titemconfigdp.icdp_proveedor = form['icdp_proveedor']

                icdp_fechacaducidad = form['icdp_fechacaducidad']
                if cadenas.es_nonulo_novacio(icdp_fechacaducidad):
                    titemconfigdp.icdp_fechacaducidad = fechas.parse_cadena(
                        icdp_fechacaducidad)
                else:
                    titemconfigdp.icdp_fechacaducidad = None

                titemconfigdp.icdp_grabaiva = icdp_grabaiva
                titemconfigdp.icdp_preciocompra = icdp_preciocompra
                titemconfigdp.icdp_precioventa = icdp_precioventa
                titemconfigdp.icdp_precioventamin = icdp_precioventamin
                # TODO: Agregar logica para registrar kardek del articulo
                self.dbsession.add(titemconfigdp)

            self.dbsession.flush()
            return ic_id
Esempio n. 7
0
    def editar(self, form, user_edit):
        """
        Editar la informacion de un contribuyente
        :param cnt_codigo:
        :param form:
        :return:
        """
        cnt_id = form['cnt_id']
        tcontribuyente = self.dbsession.query(TContribuyente).filter(
            TContribuyente.cnt_id == cnt_id).first()
        if tcontribuyente is not None:

            cnt_ruc = cadenas.strip(form.get('cnt_ruc'))
            if not cadenas.es_nonulo_novacio(cnt_ruc):
                raise ErrorValidacionExc("Debe ingresar el ruc")

            current_ruc = form['cnt_ruc']
            if current_ruc != tcontribuyente.cnt_ruc:
                if self.ya_existe(cnt_ruc=cnt_ruc):
                    raise ErrorValidacionExc(
                        "El contribuyente con número de ruc: {0} ya ha sido registrado"
                        .format(cnt_ruc))

            if not cadenas.es_nonulo_novacio(form['cnt_razonsocial']):
                raise ErrorValidacionExc("Ingrese la razón social")

            if not cadenas.es_nonulo_novacio(form['cnt_dirmatriz']):
                raise ErrorValidacionExc("Ingrese la dirección matriz")

            if not cadenas.es_nonulo_novacio(form['cnt_nombrecomercial']):
                raise ErrorValidacionExc("Ingrese el nombre comercial")

            #Clonamos el objeto para auditoria
            tcontribuyente_cloned = copy.copy(tcontribuyente)

            tcontribuyente.cnt_ruc = cnt_ruc
            tcontribuyente.cnt_razonsocial = form.get(
                'cnt_razonsocial').upper()
            tcontribuyente.cnt_telf = form.get('cnt_telf')
            tcontribuyente.cnt_email = form.get('cnt_email')
            tcontribuyente.cnt_dirmatriz = form.get('cnt_dirmatriz')
            tcontribuyente.cnt_clase = form.get('cnt_clase')
            tcontribuyente.cnt_nrocntespecial = form.get('cnt_nrocntespecial')
            tcontribuyente.cnt_oblcontab = form.get('cnt_oblcontab')
            tcontribuyente.cnt_nombrecomercial = form.get(
                'cnt_nombrecomercial')

        # Agregamos informacion de auditoria
        tauditdao = TAuditDao(self.dbsession)
        list_cambios = checkcambioutil.valor_cambiado(
            tcontribuyente_cloned.__json__(), form)
        if list_cambios is not None and len(list_cambios) > 0:
            for row in list_cambios:
                col = row['col']
                valorant = row['valorant']
                valordesp = row['valordesp']
                tauditdao.crea_accion_update(enums.TBL_CONTRIBUYENTE, col,
                                             user_edit, valorant, valordesp,
                                             tcontribuyente.cnt_id)
Esempio n. 8
0
    def get_datos_completos(self, per_ciruc):
        """
        Retorna los datos completos de una persona
        :param per_ciruc:
        :return: per_id,
            per_ciruc,
            per_nombres,
            per_apellidos,
            per_direccion,
            per_telf,
            per_movil,
            per_email,
            per_fecreg,
            per_tipo,
            per_lugnac,
            per_nota,
            per_fechanac,
            per_genero,
            per_estadocivil,
            per_lugresidencia
        """
        sql = u"""select
            per_id,
            per_ciruc,
            per_nombres,
            per_apellidos,
            per_direccion,
            per_telf,
            per_movil,
            per_email,
            per_fecreg,
            per_tipo,
            per_lugnac,
            per_nota,
            per_fechanac,
            per_genero,
            per_estadocivil,
            per_lugresidencia from tpersona where per_ciruc = '{0}' 
        """.format(cadenas.strip(per_ciruc))

        tupla_desc = ('per_id',
                      'per_ciruc',
                      'per_nombres',
                      'per_apellidos',
                      'per_direccion',
                      'per_telf',
                      'per_movil',
                      'per_email',
                      'per_fecreg',
                      'per_tipo',
                      'per_lugnac',
                      'per_nota',
                      'per_fechanac',
                      'per_genero',
                      'per_estadocivil',
                      'per_lugresidencia',
                      'per_ocupacion')
        return self.first(sql, tupla_desc)
Esempio n. 9
0
    def buscar_porciruc(self, per_ciruc):
        sql = "{0} where per_ciruc = '{1}'".format(self.BASE_SQL, cadenas.strip(per_ciruc))
        result = self.first(sql, tupla_desc=self.BASE_TUPLA_DESC)
        try:
            if result is not None and cadenas.es_nonulo_novacio(result['per_fechanac']):
                edad = fechas.get_edad_anios(fechas.parse_cadena(result['per_fechanac']))
                result['per_edad'] = edad
        except:
            pass

        return result
Esempio n. 10
0
    def crea_actualiza_cuenta(self, form):

        provider = form['provider']
        nombres = form['nombres']
        email = form['email']
        celular = form['celular']
        photo_url = form['photoUrl']
        clave = form['clave']
        clave_md5 = hashlib.md5(clave)

        up_email = cadenas.strip(email)
        up_nombres = cadenas.strip_upper(nombres)
        up_celular = cadenas.strip_upper(celular)

        aux_paciente = self.buscar_por_email(up_email)
        if aux_paciente is None:
            up_tipo = 0
            if provider == 'google':
                up_tipo = 2
            elif provider == 'facebook':
                up_tipo = 1

            tuserpaciente = TUserPaciente()
            tuserpaciente.up_email = cadenas.strip(up_email)
            tuserpaciente.up_tipo = up_tipo
            tuserpaciente.up_estado = 0
            tuserpaciente.up_fechacrea = datetime.now()
            tuserpaciente.up_nombres = up_nombres
            tuserpaciente.up_celular = up_celular
            tuserpaciente.up_tipo = up_tipo
            tuserpaciente.up_photourl = photo_url
            tuserpaciente.up_pasword = clave_md5

            self.dbsession.add(tuserpaciente)
            self.dbsession.flush()
        else:
            aux_paciente.up_nombres = up_nombres
            if cadenas.es_nonulo_novacio(up_celular):
                aux_paciente.up_celular = up_celular
            aux_paciente.up_photourl = photo_url
            self.dbsession.add(aux_paciente)
Esempio n. 11
0
    def crear_cuenta(self, form):
        provider = form['provider']
        nombres = form['nombres']
        email = form['email']
        celular = form['celular']
        photo_url = form['photoUrl']
        clave = cadenas.strip(form['clave'])
        clave_md5 = hashlib.md5(clave.encode()).hexdigest()

        up_email = cadenas.strip(email)
        up_nombres = cadenas.strip_upper(nombres)
        up_celular = cadenas.strip_upper(celular)

        aux_paciente = self.buscar_por_email(up_email)
        if aux_paciente is None:
            up_tipo = 0
            if provider == 'google':
                up_tipo = 2
            elif provider == 'facebook':
                up_tipo = 1

            tuserpaciente = TUserPaciente()
            tuserpaciente.up_email = cadenas.strip(up_email)
            tuserpaciente.up_tipo = up_tipo
            tuserpaciente.up_estado = 0
            tuserpaciente.up_fechacrea = datetime.now()
            tuserpaciente.up_nombres = up_nombres
            tuserpaciente.up_celular = up_celular
            tuserpaciente.up_tipo = up_tipo
            tuserpaciente.up_photourl = photo_url
            tuserpaciente.up_pasword = clave_md5

            self.dbsession.add(tuserpaciente)
            self.dbsession.flush()
        else:
            raise ErrorValidacionExc(
                u'Ya existe una cuenta registrada con el correo: {0} no se puede crear nuevamente'
                .format(up_email))
Esempio n. 12
0
 def update_barcode(self, ic_id, newbarcode):
     titemconfig = self.dbsession.query(TItemConfig).filter(
         TItemConfig.ic_id == ic_id).first()
     newbarcode_strip = cadenas.strip(unicode(newbarcode))
     if titemconfig is not None:
         current_ic_code = titemconfig.ic_code
         if newbarcode_strip != current_ic_code:
             if self.existe_codbar(newbarcode_strip):
                 raise ErrorValidacionExc(
                     u'No se puede cambiar el código de barra, el código {0} ya esta siendo usado por otro producto o servicio'
                     .format(newbarcode))
             else:
                 titemconfig.ic_code = newbarcode_strip
                 self.dbsession.add(titemconfig)
Esempio n. 13
0
    def crear(self, lug_nombre):
        if not cadenas.es_nonulo_novacio(lug_nombre) or len(
                cadenas.strip(lug_nombre)) <= 2:
            raise ErrorValidacionExc(
                u"Se debe ingresar el nombre del lugar que desea crear")

        if self.existe_lug_nombre(lug_nombre):
            raise ErrorValidacionExc(
                u"El lugar {0} ya esta registrado, no es posible registrar nuevamente"
                .format(lug_nombre))
        else:
            tlugar = TLugar()
            tlugar.lug_nombre = cadenas.strip_upper(lug_nombre)
            tlugar.lug_status = 1
            self.dbsession.add(tlugar)
Esempio n. 14
0
 def actualizar(self, lug_id, lug_nombre):
     if not cadenas.es_nonulo_novacio(lug_nombre) or len(
             cadenas.strip(lug_nombre)) <= 2:
         raise ErrorValidacionExc(
             u"Se debe ingresar el nombre del lugar que desea actualizar")
     tlugar = self.dbsession.query(TLugar).filter(
         TLugar.lug_id == lug_id).first()
     if tlugar is not None:
         lug_nombre_upper = cadenas.strip_upper(lug_nombre)
         if tlugar.lug_nombre != lug_nombre_upper:
             if self.existe_lug_nombre(lug_nombre_upper):
                 raise ErrorValidacionExc(
                     u"El lugar {0} ya esta registrado, no es actualizar este registro"
                     .format(lug_nombre_upper))
             else:
                 tlugar.lug_nombre = lug_nombre_upper
                 self.dbsession.add(tlugar)
Esempio n. 15
0
    def buscar_pornomapelci(self, filtro, solo_cedulas=True, limit=30, offsset=0):
        basesql = u"""
        select per_id,
                        per_ciruc,
                        per_genero,
                        per_nombres||' '||coalesce(per_apellidos,'') as nomapel,
                        per_lugresidencia,
                        coalesce(tlugar.lug_nombre,'') as lugresidencia
                        from tpersona
                        left join tlugar on tpersona.per_lugresidencia = tlugar.lug_id
        """
        concedula = u" coalesce(per_ciruc,'')!='' and per_id>0" if solo_cedulas else ''

        if cadenas.es_nonulo_novacio(filtro):
            palabras = cadenas.strip_upper(filtro).split()
            filtromod = []
            for cad in palabras:
                filtromod.append(u"%{0}%".format(cad))

            nombreslike = u' '.join(filtromod)
            filtrocedulas = u" per_ciruc like '{0}%'".format(cadenas.strip(filtro))

            sql = u"""{basesql}
                        where ((per_nombres||' '||per_apellidos like '{nombreslike}') or ({filtrocedulas})) and {concedula} order by 4 limit {limit} offset {offset}
                    """.format(nombreslike=nombreslike,
                               concedula=concedula,
                               limit=limit,
                               offset=offsset,
                               filtrocedulas=filtrocedulas,
                               basesql=basesql)

            tupla_desc = ('per_id', 'per_ciruc', 'per_genero', 'nomapel', 'per_lugresidencia', 'lugresidencia')
            return self.all(sql, tupla_desc)
        else:
            sql = u"""{basesql} where {concedula}
             order by 4 limit {limit} offset {offset}
            """.format(basesql=basesql, limit=limit, offset=offsset, concedula=concedula)


        print 'sql es:'
        print sql

        tupla_desc = ('per_id', 'per_ciruc', 'per_genero', 'nomapel', 'per_lugresidencia', 'lugresidencia')
        return self.all(sql, tupla_desc)
Esempio n. 16
0
    def crear(self, form, user_crea):
        """
        Crea un nuevo contribuyente
        :param form:
        :return:
        """
        cnt_ruc = cadenas.strip(form.get('cnt_ruc'))
        if not cadenas.es_nonulo_novacio(cnt_ruc):
            raise ErrorValidacionExc("Debe ingresar el ruc")

        if self.ya_existe(cnt_ruc=cnt_ruc):
            raise ErrorValidacionExc(
                "El contribuyente con número de ruc: {0} ya ha sido registrado"
                .format(cnt_ruc))

        if not cadenas.es_nonulo_novacio(form['cnt_razonsocial']):
            raise ErrorValidacionExc("Ingrese la razón social")

        if not cadenas.es_nonulo_novacio(form['cnt_dirmatriz']):
            raise ErrorValidacionExc("Ingrese la dirección matriz")

        if not cadenas.es_nonulo_novacio(form['cnt_nombrecomercial']):
            raise ErrorValidacionExc("Ingrese el nombre comercial")

        tcontribuyente = TContribuyente()
        tcontribuyente.cnt_ruc = cnt_ruc
        tcontribuyente.cnt_razonsocial = form.get('cnt_razonsocial').upper()
        tcontribuyente.cnt_telf = form.get('cnt_telf')
        tcontribuyente.cnt_email = form.get('cnt_email')
        tcontribuyente.cnt_dirmatriz = form.get('cnt_dirmatriz')
        tcontribuyente.cnt_clase = form.get('cnt_clase')
        tcontribuyente.cnt_nrocntespecial = form.get('cnt_nrocntespecial')
        # tcontribuyente.cnt_oblcontab = 1 if form.get('cnt_oblcontab') else 0
        tcontribuyente.cnt_oblcontab = form.get('cnt_oblcontab')
        tcontribuyente.cnt_nombrecomercial = form.get('cnt_nombrecomercial')

        self.dbsession.add(tcontribuyente)
        self.dbsession.flush()

        # Agregar informacion de auditoria
        tautditdao = TAuditDao(self.dbsession)
        tautditdao.crea_accion_insert(enums.TBL_CONTRIBUYENTE, user_crea,
                                      tcontribuyente.cnt_id)
Esempio n. 17
0
    def buscar_categoria_valor(self, valor, categoria):
        """
        Busca la categoria de un valor
        :param valor:
        :param categoria:
        :return:
        """
        #CAtegoria 1,2: Presion (Presion Sistolica/Presion Diastóica)
        result = ""
        color = ""
        if categoria == 1:
            valorespresion = valor.split("/")
            if len(valorespresion) == 2:
                sistolica = float(valorespresion[0])
                diastolica = float(valorespresion[1])
                sql = u"""select cmcv_nombrecat, cmcv_color from tconsultam_clasificaval where 
                            cmcv_cat =1 and 
                            ( {0} between cmcv_min and cmcv_max ) and
                            ( {1} between cmcv_minb and cmcv_maxb ) """.format(
                    sistolica, diastolica)
                tupla_desc = ('cmcv_nombrecat', 'cmcv_color')
                resa = self.all(sql, tupla_desc)

                if len(resa) > 0:
                    result = resa[0]['cmcv_nombrecat']
                    color = resa[0]['cmcv_color']

        if categoria == 3:
            if len(cadenas.strip(valor)) > 0:
                valimc = float(valor)
                sql = u"""select cmcv_nombrecat, cmcv_color from tconsultam_clasificaval where 
                                            cmcv_cat =3 and {0} between cmcv_min and cmcv_max """.format(
                    valimc)
                tupla_desc = ('cmcv_nombrecat', 'cmcv_color')
                resa = self.all(sql, tupla_desc)
                if len(resa) > 0:
                    result = resa[0]['cmcv_nombrecat']
                    color = resa[0]['cmcv_color']

        return result, color
Esempio n. 18
0
 def existe_cuenta(self, email):
     aux_paciente = self.buscar_por_email(cadenas.strip(email))
     return aux_paciente is not None
Esempio n. 19
0
 def buscar_por_email(self, up_email):
     return self.dbsession.query(TUserPaciente).filter(
         TUserPaciente.up_email == cadenas.strip(up_email)).first()
Esempio n. 20
0
 def update_param_value(self, abr, newvalue):
     tparam = self.dbsession.query(TParams.tprm_abrev == abr).first()
     if tparam is not None:
         tparam.tprm_val = cadenas.strip(newvalue)
Esempio n. 21
0
    def editar(self, form, user_edit):
        """
        Editar la informacion de un contribuyente
        :param cnt_codigo:
        :param form:
        :return:
        """
        cnt_id = form['cnt_id']
        tcontribuyente = self.dbsession.query(TContribuyente).filter(
            TContribuyente.cnt_id == cnt_id).first()
        if tcontribuyente is not None:

            cnt_ruc = cadenas.strip(form.get('cnt_ruc'))
            if not cadenas.es_nonulo_novacio(cnt_ruc):
                raise ErrorValidacionExc("Debe ingresar el ruc")

            current_ruc = form['cnt_ruc']
            if current_ruc != tcontribuyente.cnt_ruc:
                if self.ya_existe(cnt_ruc=cnt_ruc):
                    raise ErrorValidacionExc(
                        "El contribuyente con número de ruc: {0} ya ha sido registrado"
                        .format(cnt_ruc))

            if not cadenas.es_nonulo_novacio(form['cnt_razonsocial']):
                raise ErrorValidacionExc("Ingrese la razón social")

            if not cadenas.es_nonulo_novacio(form['cnt_dirmatriz']):
                raise ErrorValidacionExc("Ingrese la dirección matriz")

            if not cadenas.es_nonulo_novacio(form['cnt_razonsocial']):
                raise ErrorValidacionExc(u"Ingrese la razón social")
            elif len(form['cnt_razonsocial'].strip()) > 100:
                raise ErrorValidacionExc(
                    u"El nombre de la razon social es muy extenso, la longitud máxima es de 100 caracteres"
                )

            if not cadenas.es_nonulo_novacio(form['cnt_dirmatriz']):
                raise ErrorValidacionExc(u"Ingrese la dirección matriz")

            # if not cadenas.es_nonulo_novacio(form['cnt_nombrecomercial']):
            #     raise ErrorValidacionExc("Ingrese el nombre comercial")

            if len(form['cnt_nombrecomercial'].strip()) > 80:
                raise ErrorValidacionExc(
                    u"El nombre comercial es muy extenso, la longitud máxima es de 80 caracteres"
                )

            if len(form['cnt_dirmatriz'].strip()) > 100:
                raise ErrorValidacionExc(
                    u"La dirección matriz es muy extenso, la longitud máxima es de 100 caracteres"
                )

            if form.get('cnt_direstab') is None:
                raise ErrorValidacionExc(
                    u"La dirección del establecimiento es requerido")
            elif len(form['cnt_direstab'].strip()) > 100:
                raise ErrorValidacionExc(
                    u"La dirección del establecimiento es muy extenso, la longitud máxima es de 100 caracteres"
                )

            # Validador de correo
            if len(form['cnt_email'].strip()) > 0:
                if not cadenas.es_correo_valido(form['cnt_email'].strip()):
                    raise ErrorValidacionExc(
                        u"La dirección de correo ingresada es incorrecta, favor verificar"
                    )
                elif len(form['cnt_email'].strip()) > 40:
                    raise ErrorValidacionExc(
                        u"La dirección de correo electrónica es muy extensa, la longitud maxima es de 40 caracteres"
                    )

            if len(form['cnt_telf'].strip()) > 40:
                raise ErrorValidacionExc(
                    u"El número de teléfono es muy extensa, la longitud maxima es de 40 caracteres"
                )

            # if not cadenas.es_nonulo_novacio(form['cnt_nombrecomercial']):
            #     raise ErrorValidacionExc("Ingrese el nombre comercial")

            # Clonamos el objeto para auditoria
            tcontribuyente_cloned = copy.copy(tcontribuyente)

            tcontribuyente.cnt_ruc = cnt_ruc
            tcontribuyente.cnt_razonsocial = form.get(
                'cnt_razonsocial').upper()
            tcontribuyente.cnt_telf = form.get('cnt_telf')
            tcontribuyente.cnt_email = form.get('cnt_email')
            tcontribuyente.cnt_dirmatriz = form.get('cnt_dirmatriz')
            tcontribuyente.cnt_clase = form.get('cnt_clase')
            tcontribuyente.cnt_nrocntespecial = form.get('cnt_nrocntespecial')
            tcontribuyente.cnt_oblcontab = form.get('cnt_oblcontab')
            tcontribuyente.cnt_nombrecomercial = form.get(
                'cnt_nombrecomercial')
            tcontribuyente.cnt_direstab = form.get('cnt_direstab')

        # Agregamos informacion de auditoria
        tauditdao = TAuditDao(self.dbsession)
        list_cambios = checkcambioutil.valor_cambiado(
            tcontribuyente_cloned.__json__(), form)
        if list_cambios is not None and len(list_cambios) > 0:
            for row in list_cambios:
                col = row['col']
                valorant = row['valorant']
                valordesp = row['valordesp']
                tauditdao.crea_accion_update(enums.TBL_CONTRIBUYENTE, col,
                                             user_edit, valorant, valordesp,
                                             tcontribuyente.cnt_id)

        return cnt_id
Esempio n. 22
0
    def crear(self, form, user_crea):
        """
        Crea un nuevo contribuyente
        :param form:
        :return:
        """
        cnt_ruc = cadenas.strip(form.get('cnt_ruc'))
        if not cadenas.es_nonulo_novacio(cnt_ruc):
            raise ErrorValidacionExc("Debe ingresar el ruc")

        if not cnt_ruc.isdigit():
            raise ErrorValidacionExc("El ruc ingresado es incorrecto")

        # Logica para validacion de ruc
        resvalid = TContribuyenteDao.verificar(cnt_ruc)
        if not resvalid:
            raise ErrorValidacionExc(
                u"El número de ruc ingresado es incorrecto")

        if self.ya_existe(cnt_ruc=cnt_ruc):
            raise ErrorValidacionExc(
                u"El contribuyente con número de ruc: {0} ya ha sido registrado"
                .format(cnt_ruc))

        if not cadenas.es_nonulo_novacio(form['cnt_razonsocial']):
            raise ErrorValidacionExc(u"Ingrese la razón social")
        elif len(form['cnt_razonsocial'].strip()) > 100:
            raise ErrorValidacionExc(
                u"El nombre de la razon social es muy extenso, la longitud máxima es de 100 caracteres"
            )

        if not cadenas.es_nonulo_novacio(form['cnt_dirmatriz']):
            raise ErrorValidacionExc(u"Ingrese la dirección matriz")

        # if not cadenas.es_nonulo_novacio(form['cnt_nombrecomercial']):
        #     raise ErrorValidacionExc("Ingrese el nombre comercial")

        if len(form['cnt_nombrecomercial'].strip()) > 80:
            raise ErrorValidacionExc(
                u"El nombre comercial es muy extenso, la longitud máxima es de 80 caracteres"
            )

        if len(form['cnt_dirmatriz'].strip()) > 100:
            raise ErrorValidacionExc(
                u"La dirección matriz es muy extenso, la longitud máxima es de 100 caracteres"
            )

        if len(form['cnt_direstab'].strip()) > 100:
            raise ErrorValidacionExc(
                u"La dirección del establecimiento es muy extenso, la longitud máxima es de 100 caracteres"
            )

        #Validador de correo
        if len(form['cnt_email'].strip()) > 0:
            if not cadenas.es_correo_valido(form['cnt_email'].strip()):
                raise ErrorValidacionExc(
                    u"La dirección de correo ingresada es incorrecta, favor verificar"
                )
            elif len(form['cnt_email'].strip()) > 40:
                raise ErrorValidacionExc(
                    u"La dirección de correo electrónica es muy extensa, la longitud maxima es de 40 caracteres"
                )

        if len(form['cnt_telf'].strip()) > 40:
            raise ErrorValidacionExc(
                u"El número de teléfono es muy extensa, la longitud maxima es de 40 caracteres"
            )

        tcontribuyente = TContribuyente()
        tcontribuyente.cnt_ruc = cnt_ruc
        tcontribuyente.cnt_razonsocial = form.get('cnt_razonsocial').upper()
        tcontribuyente.cnt_telf = form.get('cnt_telf')
        tcontribuyente.cnt_email = form.get('cnt_email')
        tcontribuyente.cnt_dirmatriz = form.get('cnt_dirmatriz')
        tcontribuyente.cnt_clase = form.get('cnt_clase')
        tcontribuyente.cnt_nrocntespecial = form.get('cnt_nrocntespecial')
        # tcontribuyente.cnt_oblcontab = 1 if form.get('cnt_oblcontab') else 0
        tcontribuyente.cnt_oblcontab = form.get('cnt_oblcontab')
        tcontribuyente.cnt_nombrecomercial = form.get('cnt_nombrecomercial')
        tcontribuyente.cnt_direstab = form.get('cnt_direstab')

        self.dbsession.add(tcontribuyente)
        self.dbsession.flush()

        # Agregar informacion de auditoria
        tautditdao = TAuditDao(self.dbsession)
        tautditdao.crea_accion_insert(enums.TBL_CONTRIBUYENTE, user_crea,
                                      tcontribuyente.cnt_id)
        return tcontribuyente.cnt_id
Esempio n. 23
0
 def buscar_poremail(self, per_email):
     sql = "{0} where per_email = '{1}'".format(self.BASE_SQL, cadenas.strip(per_email))
     return self.first(sql, tupla_desc=self.BASE_TUPLA_DESC)
Esempio n. 24
0
    def crear(self, form, user_crea):
        """
        Crea un nuevo articulo
        :param form:
        :param user_crea:
        :param sec_id:
        :return:
        """
        codbar_auto = form['codbar_auto']
        ic_code = cadenas.strip(unicode(form['ic_code']))
        tparamdao = TParamsDao(self.dbsession)
        if codbar_auto:
            ic_code = tparamdao.get_next_sequence_codbar()

        icdp_preciocompra = form['icdp_preciocompra']
        icdp_precioventa = form['icdp_precioventa']
        icdp_precioventamin = form['icdp_precioventamin']

        icdp_grabaiva = form['icdp_grabaiva']
        if icdp_grabaiva:
            # El precio de compra y de venta se le debe quitar el iva
            # icdp_preciocompra = ivautil.redondear_precio_db(ivautil.quitar_iva(icdp_preciocompra))
            icdp_precioventa = ivautil.redondear_precio_db(
                ivautil.quitar_iva(icdp_precioventa))
            icdp_precioventamin = ivautil.redondear_precio_db(
                ivautil.quitar_iva(icdp_precioventamin))

        # Verificar si el codigo del producto ya esta registrado
        if self.existe_codbar(ic_code):
            raise ErrorValidacionExc(
                u"El código '{0}' ya está registrado, favor ingrese otro".
                format(ic_code))

        ic_nombre = cadenas.strip_upper(form['ic_nombre'])
        if self.existe_artbynombre(ic_nombre):
            raise ErrorValidacionExc(
                u"Ya existe registrado un producto o servicio con el nombre: '{0}'"
                .format(ic_nombre))

        itemconfig = TItemConfig()
        itemconfig.ic_nombre = ic_nombre
        itemconfig.ic_code = ic_code
        itemconfig.tipic_id = form['tipic_id']
        itemconfig.ic_nota = form['ic_nota']
        itemconfig.catic_id = form['catic_id']
        itemconfig.ic_usercrea = user_crea
        itemconfig.ic_fechacrea = datetime.now()

        self.dbsession.add(itemconfig)
        self.dbsession.flush()

        ic_id = itemconfig.ic_id

        titemconfigdp = TItemConfigDatosProd()
        titemconfigdp.ic_id = ic_id
        titemconfigdp.icdp_grabaiva = icdp_grabaiva

        icdp_fechacaducidad = form['icdp_fechacaducidad']
        if cadenas.es_nonulo_novacio(icdp_fechacaducidad):
            titemconfigdp.icdp_fechacaducidad = fechas.parse_cadena(
                icdp_fechacaducidad)
        else:
            titemconfigdp.icdp_fechacaducidad = None

        titemconfigdp.icdp_proveedor = form['icdp_proveedor']
        # titemconfigdp.icdp_modcontab = form['icdp_modcontab']
        titemconfigdp.icdp_modcontab = None

        titemconfigdp.icdp_preciocompra = icdp_preciocompra
        titemconfigdp.icdp_precioventa = icdp_precioventa
        titemconfigdp.icdp_precioventamin = icdp_precioventamin

        self.dbsession.add(titemconfigdp)

        if codbar_auto:
            tparamdao.update_sequence_codbar()

        return ic_id
Esempio n. 25
0
 def existe_codbar(self, codbar):
     sql = u"select count(*) as cuenta from titemconfig where  ic_code = '{0}'".format(
         cadenas.strip(unicode(codbar)))
     cuenta = self.first_col(sql, 'cuenta')
     return cuenta > 0
Esempio n. 26
0
 def get_codbarnombre_articulo(self, codbar):
     sql = u"select ic_code, ic_nombre from titemconfig where  ic_code = '{0}'".format(
         cadenas.strip(unicode(codbar)))
     tupla_desc = ('ic_code', 'ic_nombre')
     return self.first(sql, tupla_desc)
Esempio n. 27
0
    def actualizar(self, per_id, form):

        tpersona = self.get_entity_byid(per_id)
        if tpersona is not None:
            if not cadenas.es_nonulo_novacio(form['per_ciruc']):
                raise ErrorValidacionExc('Ingrese el número de cédula, ruc o pasaporte')

            if not cadenas.es_nonulo_novacio(form['per_nombres']):
                raise ErrorValidacionExc('Ingrese los nombres')

            current_email = cadenas.strip(tpersona.per_email)
            per_email = cadenas.strip(form['per_email'])
            if current_email != per_email and cadenas.es_nonulo_novacio(current_email):
                if self.existe_email(per_email=form['per_email']):
                    raise ErrorValidacionExc(
                        'Ya existe una persona registrada con la dirección de correo, ingrese otra: {0}'.format(
                            form['per_email']))

            if not cadenas.es_nonulo_novacio(per_email):
                per_email = None

            per_ciruc = cadenas.strip(form['per_ciruc'])
            current_per_ciruc = cadenas.strip(tpersona.per_ciruc)
            if per_ciruc != current_per_ciruc:
                if self.existe_ciruc(per_ciruc=form['per_ciruc']):
                    raise ErrorValidacionExc(
                        'El número de ci/ruc o pasaporte {0} ya está registrado, ingrese otro'.format(
                            form['per_ciruc']))
                else:
                    tpersona.per_ciruc = per_ciruc

            tpersona.per_nombres = cadenas.strip_upper(form['per_nombres'])
            tpersona.per_apellidos = cadenas.strip_upper(form['per_apellidos'])
            tpersona.per_movil = cadenas.strip_upper(form['per_movil'])
            tpersona.per_email = per_email
            if 'per_direccion' in form:
                tpersona.per_direccion = cadenas.strip(form['per_direccion'])

            # Columnas agregadas:
            if 'per_fechanacp' in form:
                per_fechanac_txt = form['per_fechanacp']
                if cadenas.es_nonulo_novacio(per_fechanac_txt):
                    per_fechanac = fechas.parse_cadena(per_fechanac_txt)
                    tpersona.per_fechanac = per_fechanac

            elif 'per_fechanac' in form:
                per_fechanac_txt = form['per_fechanac']
                if cadenas.es_nonulo_novacio(per_fechanac_txt):
                    per_fechanac = fechas.parse_cadena(per_fechanac_txt)
                    tpersona.per_fechanac = per_fechanac

            if 'per_genero' in form:
                per_genero = form['per_genero']
                tpersona.per_genero = per_genero

            if 'per_estadocivil' in form:
                if type(form['per_estadocivil']) is dict:
                    per_estadocivil = form['per_estadocivil']['lval_id']
                else:
                    per_estadocivil = form['per_estadocivil']
                tpersona.per_estadocivil = per_estadocivil

            if 'per_lugresidencia' in form:
                if type(form['per_lugresidencia']) is dict:
                    per_lugresidencia = form['per_lugresidencia']['lug_id']
                else:
                    per_lugresidencia = form['per_lugresidencia']

                if per_lugresidencia != 0:
                    tpersona.per_lugresidencia = per_lugresidencia

            if 'per_telf' in form:
                per_telf = form['per_telf']
                tpersona.per_telf = cadenas.strip(per_telf)

            if 'per_ocupacion' in form:
                if type(form['per_ocupacion']) is dict:
                    per_ocupacion = form['per_ocupacion']['lval_id']
                else:
                    per_ocupacion = form['per_ocupacion']
                tpersona.per_ocupacion = per_ocupacion

            self.dbsession.add(tpersona)
            self.dbsession.flush()
Esempio n. 28
0
    def crear(self, form, permit_ciruc_null=False):
        if not permit_ciruc_null:
            if not cadenas.es_nonulo_novacio(form['per_ciruc']):
                raise ErrorValidacionExc('Ingrese el número de cédula, ruc o pasaporte')

        per_ciruc = cadenas.strip_upper(form['per_ciruc'])
        if cadenas.es_nonulo_novacio(form['per_ciruc']):
            if self.existe_ciruc(per_ciruc=form['per_ciruc']):
                raise ErrorValidacionExc(
                    'El número de ci/ruc o pasaporte {0} ya está registrado, ingrese otro'.format(form['per_ciruc']))
        else:
            per_ciruc = None

        if not cadenas.es_nonulo_novacio(form['per_nombres']):
            raise ErrorValidacionExc('Ingrese los nombres')

        if cadenas.es_nonulo_novacio(form['per_email']):
            if self.existe_email(per_email=form['per_email']):
                raise ErrorValidacionExc(
                    'Ya existe una persona registrada con la dirección de correo: {0}'.format(form['per_email']))
        else:
            form['per_email'] = None

        tpersona = TPersona()
        tpersona.per_nombres = cadenas.strip_upper(form['per_nombres'])
        tpersona.per_apellidos = cadenas.strip_upper(form['per_apellidos'])
        tpersona.per_ciruc = per_ciruc
        # tpersona.per_direccion = cadenas.strip_upper(form['per_direccion'])
        if 'per_direccion' in form:
            tpersona.per_direccion = cadenas.strip(form['per_direccion'])

        # tpersona.per_telf = cadenas.strip_upper(form['per_telf'])
        tpersona.per_telf = ''
        tpersona.per_movil = cadenas.strip_upper(form['per_movil'])
        tpersona.per_email = cadenas.strip(form['per_email'])
        tpersona.per_fecreg = datetime.now()
        # tpersona.per_tipo = form['per_tipo']
        tpersona.per_tipo = form['per_tipo']
        # tpersona.per_lugnac = form['per_lugnac']
        tpersona.per_lugnac = 0
        # tpersona.per_nota = cadenas.strip(form['per_nota'])
        tpersona.per_nota = ''

        # Columnas agregadas:
        if 'per_fechanac' in form:
            per_fechanac_txt = form['per_fechanac']
            if cadenas.es_nonulo_novacio(per_fechanac_txt):
                per_fechanac = fechas.parse_cadena(per_fechanac_txt)
                tpersona.per_fechanac = per_fechanac

        if 'per_estadocivil' in form:
            if type(form['per_estadocivil']) is dict:
                per_estadocivil = form['per_estadocivil']['lval_id']
            else:
                per_estadocivil = form['per_estadocivil']
            tpersona.per_estadocivil = per_estadocivil

        if 'per_lugresidencia' in form:
            if type(form['per_lugresidencia']) is dict:
                per_lugresidencia = form['per_lugresidencia']['lug_id']
            else:
                per_lugresidencia = form['per_lugresidencia']

            if per_lugresidencia != 0:
                tpersona.per_lugresidencia = per_lugresidencia

        if 'per_genero' in form:
            per_genero = form['per_genero']
            tpersona.per_genero = per_genero

        if 'per_telf' in form:
            per_telf = form['per_telf']
            tpersona.per_telf = cadenas.strip(per_telf)

        if 'per_ocupacion' in form:
            if type(form['per_ocupacion']) is dict:
                per_ocupacion = form['per_ocupacion']['lval_id']
            else:
                per_ocupacion = form['per_ocupacion']
            tpersona.per_ocupacion = per_ocupacion

        self.dbsession.add(tpersona)
        self.dbsession.flush()

        return tpersona.per_id