예제 #1
0
def _test_Sql_filterIndustriaLealdade3():
    try:
        filters = data_Sql
        filters[0]['filtros']['lealdadeProduto'] = 3
        index_info = data_Sql_filterIndustriaIndexInfo
        obj = GetFilter('INDUSTRIA').get(filters[0])
        ret = obj.get_sql_filters(index_info).replace('\n', '').strip()
        ret = ' '.join(ret.split()).lower()

        assert ret == ' '.join(
            data_Sql_filterIndustria_lealdade3_response.split()).lower(
            ), 'SQL command wasnt built properly'
        execute_query(ret)
    except Exception as e:
        assert False, repr(e)
예제 #2
0
def _test_Sql_filterIndustriaLealdade1():
    try:
        filters = data_Sql_Modalidade.get('audience')
        filters[0]['filtros']['lealdadeProduto'] = 6
        modalidade = data_Sql_filterIndustriaIModalidade
        obj = GetFilter('INDUSTRIA').get(filters[0])
        ret = obj.get_sql_filters(modalidade).replace('\n', '').strip()
        ret = ' '.join(ret.split()).lower()

        assert ret == ' '.join(
            data_Sql_filterIndustria_lealdade1_response.split()).lower(
            ), 'SQL command wasnt built properly'
        execute_query(ret)
    except Exception as e:
        assert False, repr(e)
예제 #3
0
def test_Sql_filterIndustriaLealdade20_grupo():
    try:
        filters = data_Sql_Modalidade.get('audience')

        filters[0]['modalidade'] = data_Sql_filterIndustriaIModalidade

        filters[0]['modalidade']['tipotarget'] = 'GRUPO'

        filters[0]['modalidade']['grupo'] = '015'
        filters[0]['modalidade']['subcategoria'] = '01'
        filters[0]['modalidade']['categoria'] = '114'
        filters[0]['modalidade']['departamento'] = '010'
        filters[0]['modalidade']['vendor_class_code'] = '0000'
        filters[0]['modalidade']['vendor_code'] = '0000000002433'
        filters[0]['filtros'] = {
            "genero": ["F", "M"],
            "idade": [2, 3, 4, 5],
            "lealdadeProduto": 20,
            "sensibilidadePreco": "0",
            "operador": "AND"
        }
        filters[0]['regioes'] = ['SP']
        obj = GetFilter('INDUSTRIA').get(filters[0])
        ret, conn = getSql_filters(obj)

        ret = ret.replace('\n', '').strip()
        ret = ' '.join(ret.split()).lower()

        result, conn = execute_query_temp(ret, conn)
        assert result[0][0] == 708

        conn.close()
    except Exception as e:
        assert False, repr(e)
예제 #4
0
def test_Sql_filterIndustriaLealdade7_plu1072870():
    try:
        filters = data_Sql_Modalidade.get('audience')

        filters[0]['modalidade'] = data_Sql_filterIndustriaIModalidade
        filters[0]['modalidade']['produto'] = ['1072870']
        filters[0]['modalidade']['subgrupo'] = '004'
        filters[0]['modalidade']['grupo'] = '565'
        filters[0]['modalidade']['subcategoria'] = '01'
        filters[0]['modalidade']['categoria'] = '101'
        filters[0]['modalidade']['departamento'] = '010'
        filters[0]['modalidade']['vendor_class_code'] = '0303'
        filters[0]['modalidade']['vendor_code'] = '0000000059021'
        filters[0]['filtros'] = {
            "genero": ["F", "M"],
            "idade": [1, 2, 3, 4, 5, 6],
            "lealdadeProduto": 7,
            "sensibilidadePreco": "0",
            "operador": "AND"
        }
        filters[0]['regioes'] = [
            'BA', 'CE', 'GO', 'MG', 'MS', 'PB', 'PE', 'PI', 'PR', 'RJ', 'SE'
        ]

        obj = GetFilter('INDUSTRIA').get(filters[0])
        ret, conn = getSql_filters(obj)

        ret = ret.replace('\n', '').strip()
        ret = ' '.join(ret.split()).lower()

        result, conn = execute_query_temp(ret, conn)
        assert result[0][0] == 17
        conn.close()
    except Exception as e:
        assert False, repr(e)
예제 #5
0
def test_Sql_filterIndustriaLealdade6_plu1072613():
    try:
        filters = data_Sql_Modalidade.get('audience')

        filters[0]['filtros']['lealdadeProduto'] = 6
        filters[0]['modalidade'] = data_Sql_filterIndustriaIModalidade
        filters[0]['modalidade']['produto'] = ['1072613']
        filters[0]['modalidade']['subgrupo'] = '001'
        filters[0]['modalidade']['grupo'] = '600'
        filters[0]['modalidade']['subcategoria'] = '08'
        filters[0]['modalidade']['categoria'] = '101'
        filters[0]['modalidade']['departamento'] = '010'
        filters[0]['modalidade']['vendor_class_code'] = '0049'
        filters[0]['modalidade']['vendor_code'] = '0000000007394'
        filters[0]['filtros'] = {
            "genero": ["F", "M"],
            "idade": [1, 2, 3, 4, 5, 6],
            "lealdadeProduto": 6,
            "sensibilidadePreco": "0",
            "operador": "AND"
        }
        filters[0]['regioes'] = None
        obj = GetFilter('INDUSTRIA').get(filters[0])
        ret, conn = getSql_filters(obj)

        ret = ret.replace('\n', '').strip()
        ret = ' '.join(ret.split()).lower()

        result, conn = execute_query_temp(ret, conn)
        assert result[0][0] == 54
        conn.close()
    except Exception as e:
        assert False, repr(e)
예제 #6
0
def test_Sql_filterIndustriaLealdade5_UN():
    try:
        filters = data_Sql_Modalidade.get('audience')
        filters[0]['filtros']['lealdadeProduto'] = 5
        filters[0]['filtros']['un'] = [{
            "codigo": "01011403034002",
            "descricao": "SHAMPOO BASICO"
        }, {
            "codigo": "01011403040",
            "descricao": "HIDRATACAO CABELO"
        }]
        filters[0]['modalidade'] = data_Sql_filterIndustriaIModalidade

        obj = GetFilter('INDUSTRIA').get(filters[0])
        ret, conn = getSql_filters(obj)

        ret = ret.replace('\n', '').strip()
        ret = ' '.join(ret.split()).lower()

        assert ret == ' '.join(
            data_Sql_filterIndustria_lealdade5_un_response.split()).lower(
            ), 'SQL command wasnt built properly'
        execute_query_temp(ret, conn)
        conn.close()
    except Exception as e:
        assert False, repr(e)
예제 #7
0
def test_Sql_filterIndustria_dna_Lealdade20():
    try:
        filters = data_Sql_Modalidade.get('audience')
        filters[0]['filtros']['lealdadeProduto'] = 20
        filters[0]['filtros']['dna'] = dna
        filters[0]['modalidade'] = data_Sql_filterIndustriaIModalidade
        modalidade = filters[0]['modalidade']

        vendor_class = modalidade.get('vendor_class_code')
        vendor_code = modalidade.get('vendor_code')

        index_info = data_Sql_filterIndustriaIndexInfo
        obj = GetFilter('INDUSTRIA').get(filters[0])
        ret, conn = getSql_filters(obj)

        ret = ret.replace('\n', '').strip()
        ret = ' '.join(ret.split()).lower()

        assert ret == ' '.join(
            data_Sql_filterIndustria_dna_lealdade20_response.split()).lower(
            ), 'SQL command wasnt built properly'
        execute_query_temp(ret, conn)
        conn.close()
    except Exception as e:
        assert False, repr(e)
예제 #8
0
def test_padrao():
    try:
        filters = data_Sql_Modalidade.get('audience')
        filters[0]['filtros']['lealdadeProduto'] = 6
        modalidade = data_Sql_filterIndustriaIModalidade
        obj = GetFilter('INDUSTRIA').get(filters[0])
        print(obj)
        assert True
    except Exception as e:
        assert False, repr(e)
예제 #9
0
def test_Sql_filterIndustriaLealdade5_familia4076810():
    try:
        filters = data_Sql_Modalidade.get('audience')

        filters[0]['filtros']['lealdadeProduto'] = 5
        filters[0]['modalidade'] = data_Sql_filterIndustriaIModalidade
        filters[0]['modalidade']['produto'] = ['4076810']
        filters[0]['modalidade']['familia'] = '9802'
        filters[0]['modalidade']['tipotarget'] = 'FAMILIA'
        filters[0]['modalidade']['subgrupo'] = '002'
        filters[0]['modalidade']['grupo'] = '504'
        filters[0]['modalidade']['subcategoria'] = '08'
        filters[0]['modalidade']['categoria'] = '101'
        filters[0]['modalidade']['departamento'] = '010'
        filters[0]['modalidade']['vendor_class_code'] = '5697'
        filters[0]['modalidade']['vendor_code'] = '0000000076905'
        filters[0]['filtros'] = {
            "genero": ["F", "M"],
            "idade": [1, 2, 3, 4, 5, 6],
            "lealdadeProduto":
            5,
            "sensibilidadePreco":
            "0",
            "un": [{
                "codigo": "01010108386",
                "descricao": "AGUA"
            }, {
                "codigo": "01010104592",
                "descricao": "VINHOS BRANCOS"
            }, {
                "codigo": "01010108503",
                "descricao": "CHA PRONTO"
            }],
            "operador":
            "OR"
        }
        filters[0]['regioes'] = ['SP']
        obj = GetFilter('INDUSTRIA').get(filters[0])
        ret, conn = getSql_filters(obj)

        ret = ret.replace('\n', '').strip()
        ret = ' '.join(ret.split()).lower()

        result, conn = execute_query_temp(ret, conn)
        assert result[0][0] == 11680

        conn.close()
    except Exception as e:
        assert False, repr(e)
예제 #10
0
def test_Sql_filterIndustriaLealdade5_categoria():
    try:
        filters = data_Sql_Modalidade.get('audience')

        filters[0]['modalidade'] = data_Sql_filterIndustriaIModalidade

        filters[0]['modalidade']['tipotarget'] = 'CATEGORIA'

        filters[0]['modalidade']['categoria'] = '101'
        filters[0]['modalidade']['departamento'] = '010'
        filters[0]['modalidade']['vendor_class_code'] = '7893'
        filters[0]['modalidade']['vendor_code'] = '123456789'
        filters[0]['filtros'] = {
            "genero": ["F", "M"],
            "idade": [1, 2, 3, 4, 5, 6],
            "lealdadeProduto":
            5,
            "sensibilidadePreco":
            "0",
            "un": [{
                "codigo": "01010101565"
            }, {
                "codigo": "01010101598"
            }, {
                "codigo": "01010101535"
            }],
            "operador":
            "AND"
        }
        filters[0]['regioes'] = ['SP']
        obj = GetFilter('INDUSTRIA').get(filters[0])
        ret, conn = getSql_filters(obj)

        ret = ret.replace('\n', '').strip()
        ret = ' '.join(ret.split()).lower()

        result, conn = execute_query_temp(ret, conn)
        assert result[0][0] == 236

        conn.close()
    except Exception as e:
        assert False, repr(e)
예제 #11
0
def test_Sql_filterIndustriaLealdade5_subgrupo():
    try:
        filters = data_Sql_Modalidade.get('audience')

        filters[0]['filtros']['lealdadeProduto'] = 5
        filters[0]['modalidade'] = data_Sql_filterIndustriaIModalidade
        filters[0]['modalidade']['tipotarget'] = 'SUB-GRUPO'

        filters[0]['modalidade']['subgrupo'] = '001'
        filters[0]['modalidade']['grupo'] = '528'
        filters[0]['modalidade']['subcategoria'] = '09'
        filters[0]['modalidade']['categoria'] = '101'
        filters[0]['modalidade']['departamento'] = '010'
        filters[0]['modalidade']['vendor_class_code'] = '5697'
        filters[0]['modalidade']['vendor_code'] = '159753654'
        filters[0]['filtros'] = {
            "genero": ["F", "M"],
            "idade": [2, 3, 4, 5],
            "lealdadeProduto": 5,
            "sensibilidadePreco": "0",
            "operador": "AND",
            "un": [{
                "codigo": "01010108386",
                "descricao": "AGUA"
            }]
        }
        filters[0]['regioes'] = ['SP']
        obj = GetFilter('INDUSTRIA').get(filters[0])
        ret, conn = getSql_filters(obj)

        ret = ret.replace('\n', '').strip()
        ret = ' '.join(ret.split()).lower()

        result, conn = execute_query_temp(ret, conn)
        assert result[0][0] == 8954

        conn.close()
    except Exception as e:
        assert False, repr(e)
예제 #12
0
def get_Data_from_db(audience_filters, modalidade, plataforma):
    """
        Given the parameters calculates the audience  and the average price. Get max units per visit and min_perc_disc
        Parameters:
            audience_filters: audience filters to take in consideration
            index_info: information about de product        
    """

    units_per_visit = 0
    min_perc_disc = 0

    #f
    if audience_filters['modalidade']['tipotarget'] in ('PLU', 'FAMILIA'):
        produtos = audience_filters['modalidade']['produto']
        produto = ""
        if len(produtos) > 0:
            produto = produtos[0]
        else:
            raise Exception("Produto nao preenchido")

        queryprod = Queries().getProductInfo()
        queryprod = queryprod.format(produto)
        result = execute_query(queryprod)
        result = pd.DataFrame(result, columns=['prod_hier_l10_code'])

        if len(result) == 0:
            raise Exception(
                "Nao foram encontrados produtos(cubos) para esta selecao")

        prodinfo = str(result['prod_hier_l10_code'][0])
        audience_filters['modalidade']['departamento'] = prodinfo[:3]
        audience_filters['modalidade']['categoria'] = prodinfo[3:6]
        audience_filters['modalidade']['subcategoria'] = prodinfo[6:8]
        audience_filters['modalidade']['grupo'] = prodinfo[8:11]
        audience_filters['modalidade']['subgrupo'] = prodinfo[11:14]

    obj = GetFilter(plataforma).get(audience_filters)
    productsql = obj.getSqlProductTemporaryTable()

    result, conn = execute_query_temp(productsql, None)
    # create a temp table with products and return a list with l21
    # each l30 in a diferent audience table
    result = pd.DataFrame(result, columns=['l20_code', 'l30_code'])
    l20 = result['l20_code']
    l30 = result['l30_code'].unique()

    if len(l30) == 0:
        raise Exception(
            "Nao foram encontrados produtos(cubos) para esta selecao")

    obj.l30 = l30

    ret, level_conversion = obj.get_sql_filters()
    result, conn = execute_query_temp(ret.replace('\n', '').strip(), conn)

    avgpricequery = obj.get_average_price()

    resultavg, conn = execute_query_temp(avgpricequery, conn)
    resultavg = pd.DataFrame(
        resultavg, columns=['avg_prod_price_clex', 'avg_prod_price_pa'])
    avg_price_clex, avg_price_pa = resultavg['avg_prod_price_clex'][
        0], resultavg['avg_prod_price_pa'][0]

    index_info = get_index_info(conn, audience_filters.get('modalidade'))

    return result[0][
        0], conn, avg_price_clex, avg_price_pa, index_info, level_conversion, obj._vendor