def get_a_vendor(tipo, id):
    item = '%{}%'.format(id)

    if tipo == 'id':
        return Fornecedor.query.filter_by(id=id).first()

    if tipo == 'nome':
        filter1 = unaccent(Fornecedor.nome).ilike(item)
        filter2 = Fornecedor.nome.ilike(item)
        return Fornecedor.query.filter(db.or_(filter1, filter2)).all()

    if tipo == 'cnpj':
        return Fornecedor.query.filter_by(cnpj=id).first()

    if tipo == 'bairro':
        return Fornecedor.query.filter(
            unaccent(Fornecedor.bairro).ilike(item)).all()

    if tipo == 'cidade':
        return Fornecedor.query.filter(
            unaccent(Fornecedor.cidade).ilike(item)).all()

    if tipo == 'estado':
        return Fornecedor.query.filter(
            unaccent(Fornecedor.estado).ilike(item)).all()

    if tipo == 'cep':
        return Fornecedor.query.filter_by(cep=id).all()

    if tipo == 'ativo':
        return Fornecedor.query.filter_by(ativo=id).all()
def save_new_vendor(data: Dict[str, str]) -> Tuple[Dict[str, str], int]:
    fornecedor = Fornecedor.query.filter(
        db.or_(Fornecedor.cnpj == data['cnpj'], )).first()
    if not fornecedor:
        novo_fornecedor = Fornecedor(
            cnpj=data['cnpj'],
            nome=data['nome'],
            logradouro=data['logradouro'],
            numero=data['numero'],
            complemento=data.get('complemento', ''),
            bairro=data['bairro'],
            cidade=data['cidade'],
            estado=data['estado'],
            cep=data['cep'],
            ativo=True,
        )
        save_changes(novo_fornecedor)
        response_object = {
            'status': 'Sucesso',
            'message': 'Fornecedor registrado com sucesso.',
            'id': novo_fornecedor.id
        }
        return response_object, 201
        # return generate_token(new_user)
    else:
        response_object = {
            'status': 'Falha',
            'message': 'CNPJ já existe.',
        }
        return response_object, 400
Esempio n. 3
0
def save_new_product(data: Dict[str, str],
                     authenticate: Authenticate) -> Tuple[Dict[str, str], int]:
    if not authenticate.perfil in ('admin', 'estoque'):
        response_object = {
            'status': 'Falha',
            'message': 'Não autorizado, verifique com o administrador.',
        }
        return response_object, 400

    produto = Produto.query.filter(
        db.or_(Produto.nome == data['nome'],
               Produto.codigo_barra == data['codigo_barra'])).first()

    fornecedor = Fornecedor.query.filter_by(id=data['fornecedor_id']).first()

    if not fornecedor:
        response_object = {
            'status': 'Falha',
            'message': 'Fornecedor não encontrado.',
        }
        return response_object, 404

    if fornecedor.ativo == False:
        response_object = {
            'status':
            'Falha',
            'message':
            'Não é possível incluir o produto de um fornecedor inativo.',
        }
        return response_object, 404

    if not produto:
        novo_produto = Produto(
            nome=data['nome'],
            codigo_barra=data['codigo_barra'],
            fornecedor_id=data['fornecedor_id'],
        )
        save_changes(novo_produto)
        if data.get('preco_venda'):
            novo_preco = Preco(
                preco_venda=data['preco_venda'],
                data_emissao=datetime.datetime.today(),
                ativo=True,
                usuario_id=authenticate.uid,
                produto_id=novo_produto.id,
            )
            save_price(novo_preco)
        response_object = {
            'status': 'Sucesso',
            'message': 'Produto registrado com sucesso.',
            'id': novo_produto.id,
        }
        return response_object, 201
    else:
        response_object = {
            'status': 'Falha',
            'message': 'Produto já existe. Tente novamente.',
        }
        return response_object, 409
Esempio n. 4
0
def get_a_product(tipo, id):
    if tipo == 'id':
        return Produto.query.filter_by(id=id).first()

    if tipo == 'nome':
        item = '%{}%'.format(id)
        filter1 = unaccent(Produto.nome).ilike(item)
        filter2 = Produto.nome.ilike(item)
        return Produto.query.filter(db.or_(filter1, filter2)).all()

    if tipo == 'codigo_barra':
        return Produto.query.filter_by(codigo_barra=id).all()

    if tipo == 'fornecedor_id':
        return Produto.query.filter_by(fornecedor_id=id).all()

    if tipo == 'ativo':
        return Produto.query.filter_by(ativo=id).all()