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
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}
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)
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)
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)
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
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)
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)
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
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)
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))
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)
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)
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)
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)
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)
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
def existe_cuenta(self, email): aux_paciente = self.buscar_por_email(cadenas.strip(email)) return aux_paciente is not None
def buscar_por_email(self, up_email): return self.dbsession.query(TUserPaciente).filter( TUserPaciente.up_email == cadenas.strip(up_email)).first()
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)
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
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
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)
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
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
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)
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()
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