Example #1
0
    def get_context_data(self, **kwargs):
        context = super(StockPosition, self).get_context_data(**kwargs)

        ean = self.request.GET.get('ean')
        context['ean'] = ean

        if ean:
            dc = DatabaseConnection()

            ean_position = dc.select("""
				SELECT
					ps.codigo_barra as ean,
					dsp.position as position,
					LEFT(ps.codigo_barra, LEN(ps.codigo_barra) - LEN(ps.grade))
				from dbo.produtos_barra ps
				left join dbo.bi_django_stock_position dsp on dsp.product_color = LEFT(ps.codigo_barra, LEN(ps.codigo_barra) - LEN(ps.grade))
				where ps.codigo_barra = '%s'
				;
			""" % ean,
                                     strip=True,
                                     dict_format=True)

            if not ean_position:
                context['position'] = 'Produto não existe'

            else:
                ean_position = ean_position[0]
                context['position'] = ean_position['position']

        return context
Example #2
0
def get_and_set_data(worksheet_tuple):
    print('Updating sheet: %s...' % worksheet_tuple[1], end='')
    dc = DatabaseConnection()
    worksheet = workbook.worksheet(worksheet_tuple[1])
    query = open(worksheet_tuple[0]).read().replace('%', '%%').replace(
        '%%(', '%(') % {
            'date_to': DATE_TO
        }
    query_result = dc.select(query, strip=True)
    columns = [column[0] for column in dc.cursor.description]
    shadow_google_spreadsheet.update_cells_with_dict(worksheet, columns,
                                                     query_result)
    print('Done!')
Example #3
0
		left join bi_vtex_product_items v_item on v_item.ean = ps.codigo_barra
		left join bi_vtex_categorizacao_categoria cat1 on cat1.grupo_produto = p.GRUPO_PRODUTO and cat1.subgrupo_produto = p.SUBGRUPO_PRODUTO
		left join bi_vtex_categorizacao_categoria cat2 on cat2.grupo_produto = p.GRUPO_PRODUTO and cat2.subgrupo_produto is null
		left join bi_vtex_categorizacao_cor color on color.linx_color = pc.DESC_COR_PRODUTO
		where 1=1
			-- and p.produto in (
			-- 	select distinct
			-- 		vp.produto
			-- 	from bi_vtex_product_items vpi
			-- 	inner join bi_vtex_products vp on vpi.product_id = vp.product_id
			-- 	where vpi.vtex_color = 'None'
			-- )
			and p.produto = '22.05.0577'
		order by ps.CODIGO_BARRA
		;
	"""
	# print(query)
	products_to_register = dc.select(query, strip=True, dict_format=True)
	# print(products_to_register)

	errors = []
	# Rodar sem thread:
	# for product_to_register in products_to_register:
	# 	errors.append(f(product_to_register))

	# ============== nao rodar com threads ainda
	with Pool(20) as p:
		errors = p.map(f, products_to_register)

	errors = [x for x in errors if x]
	print(errors)
Example #4
0
soup = post_to_webservice("http://tempuri.org/IService/ProductGet",
                          soap_productget)
if not soup:
    raise Exception('error: soap_productget %s' % product_id)

product_code = soup.find('a:RefId').text

dc = DatabaseConnection()
query = """
	SELECT
		IdItem
	from IT4Produto 
	where RefProduto='%s'
""" % product_code
it4_item_id = dc.select(query, strip=True)

if it4_item_id:
    it4_item_id = it4_item_id[0][0]

    if int(product_id) != int(it4_item_id):
        query = """
			UPDATE dbo.IT4Produto
			SET IdProduto='%s'
			WHERE IdItem='%s'
		;
		""" % (product_id, it4_item_id)

        print(query)
        dc.execute(query)
Example #5
0
	for i in range(0,initial_loop_level):
		dimension_level = get_parent_dimension(dimension_level)
	while loop_level <= len(dimensions) and (metric_list == [] or max(metric_list) <= min_value or len(metric_list) < min_len):
		metric_list = get_metric_list(result_dict[loop_level][dimension_level],year_month,metric,year_month_from=year_month_from,year_month_to=year_month_to)
		if loop_level <= len(dimensions) and (metric_list == [] or max(metric_list) <= min_value or len(metric_list) < min_len):
			loop_level += 1
			dimension_level = get_parent_dimension(dimension_level)
	return loop_level, dimension_level

print('Connecting to database...',end='')
dc = DatabaseConnection()
print('Done!')

print('Getting database information...',end='')
result = dc.select(query % {
	'dimensions':',\n'.join(['cs.%s' % dimension for dimension in dimensions]),
	'metrics':',\n'.join(['SUM(cs.%s) as %s' % (metric,metric) for metric in metrics_list_for_query]),
})
print('Done!')

if result:
	print('Creating result dict structure...',end='')
	# Creates Result dict structure:
	result_dict = {}
	for level in range(0,len(dimensions)+1):
		result_dict[level] = {}

	historical_year_months = []
	for row in result:
		# set last sale:
		last_sale = max(last_sale,row[last_sale_index]) if last_sale else row[last_sale_index]
		historical_year_month = row[year_month_index]
Example #6
0
		voi.client_email, 
		voi.client_name, 
		voi.payment_method_group,

		voi.ean,
		voi.name,
		voi.vtex_sku
	from bi_vtex_order_items voi
	where 
		voi.order_sequence in ('561973','561857','561766','561549','561528','561304','561194','560970','560865','560840','560018','562757','562703','562633','562551','562301')
		-- voi.order_sequence in ('561268')
	;
"""

dc = DatabaseConnection()
orders_to_cancel = dc.select(query, strip=True, dict_format=True)

orders_to_cancel = make_dict(orders_to_cancel,
                             None, ['order_sequence'],
                             repeated_key='append')

for missing_products in orders_to_cancel.values():
    order = missing_products[0]
    subject = 'Informações do Pedido #%s' % order['order_sequence']

    missing_products_text = []
    for product in missing_products:
        missing_products_text.append(
            '%s\n%s (ref %s)' %
            (product['name'], product['vtex_sku'], product['ean']))
Example #7
0
                                     update_price_url,
                                     data=json.dumps(data))


integration_check = []
if __name__ == '__main__':
    query = """
		SELECT
			ps.produto as prod_code,
			ps.codigo_barra as ean,
			pp.preco1 as original_price,
			pp.preco1*(1-pp.PROMOCAO_DESCONTO/100) as current_sale_price,
			c.preco1 as cost,
			vpi.item_id as sku_id
		FROM PRODUTOS_BARRA ps
		INNER JOIN produtos_precos pp on ps.produto = pp.produto and pp.codigo_tab_preco = 11
		INNER JOIN produtos_precos c on ps.produto = c.produto and c.codigo_tab_preco = 2
		LEFT JOIN bi_vtex_product_items vpi on vpi.ean = ps.codigo_barra
		where 1=1 
			and ps.produto in (%s)
		;
	""" % product_filter

    print(query)
    skus_to_update = dc.select(query, strip=True, dict_format=True)

    with Pool(10) as p:
        integration_check = p.map(update_price_vtex, skus_to_update)

    # for sku in skus_to_update:
    # f(sku)
Example #8
0
from multiprocessing import Pool

# --------------------------------------------------------------------------------------------------------------------------------
if __name__ == '__main__':
	query = """
		SELECT distinct
			vpi.product_id
		from dbo.bi_vtex_products vp
		inner join bi_vtex_product_items vpi on vpi.product_id = vp.product_id
		where 1=1
			-- and vp.produto = '35.02.0766'
			and vpi.item_id in ('530762')
			-- and vpi.product_id = 530739
		;
	"""
	dc = DatabaseConnection()
	products_to_fix = dc.select(query, strip=True, dict_format=True)
	# print(products_to_fix)

	errors = []
	description_fields = {
		'Description': '%(Name)s',
		'DescriptionShort': '%(Name)s',
	}
	# Rodar sem thread:
	for product_to_fix in products_to_fix:
		update_vtex_product(product_to_fix['product_id'], description_fields)
		# errors.append(f(product_to_fix))

	errors = [x for x in errors if x]
	print(errors)
Example #9
0
	e.codigo_barra = voi.ean 
INNER JOIN produtos_barra pb on pb.codigo_barra = voi.ean 
INNER JOIN produtos p on p.produto = pb.produto 
LEFT JOIN ( 
	SELECT 
	produto, 
	cor_produto, 
	MIN(vpi.image_url) as imagem 
	FROM bi_vtex_product_images vpi 
	GROUP BY 
	produto, 
	cor_produto 
) vpi on vpi.produto = pb.produto and vpi.cor_produto = pb.cor_produto 
WHERE 1=1
-- and voi.created_at >= GETDATE()-14 
and voi.order_sequence IN ('558432','558598','558813','559025','559085','559161','559499','559700','559951','560004','560018','560053','560253','560260','560354','560563','560840','560865','560907','560945','560970','560974','561041','561194','561268','561304','561421','561528','561549','561766','561857','561882','561966','561973','562000','562092','562162','562235','562771','562786','562791','562797')
and COALESCE(e.estoque,0) = 0
ORDER BY
CASE voi.courier WHEN 'Retira Fácil - MM Cambuí' THEN 0 WHEN 'SEDEX' THEN 1 ELSE 2 END, 
voi.order_sequence
;
"""

results = dc.select(query, strip=True)
columns = [column[0] for column in dc.cursor.description]

with open('query_result.csv', 'w', newline='\n') as csvfile:
    writer = csv.writer(csvfile, delimiter=';')
    writer.writerow(columns)
    writer.writerows(results)
Example #10
0
product_fail_selenium = []
exclude_list = [
    '20-OFF-New-Year', '3-por-99', '50-OFF', '50-off-campaign', '70-OFF',
    'Black Friday 3 por 199', 'Black Friday 60 OFF', 'Black Friday 3 por 99',
    'Black Friday 33 50 66', 'Black Friday 50 OFF', 'Black Friday 70 OFF',
    'Black Friday 80 OFF', 'Black Friday Vestidos Festa', 'NATAL-2018'
]

for exclude_var in exclude_list:
    query = """
	SELECT produto, product_id
	FROM  bi_vtex_product_categories pc
	WHERE pc.category_name = '/Promoções/%s/'
	""" % exclude_var
    # products_to_modify = ['530656']
    products_to_modify = dc.select(query, strip=True, dict_format=True)
    # raise Exception(len(products_to_modify))
    print("Excluding %s" % exclude_var)
    timeout = 20
    path = "C:/geckodriver.exe"

    options = Options()
    options.headless = True
    driver = webdriver.Firefox(options=options, executable_path=path)
    driver.get(
        "https://marciamello.myvtex.com/_v/auth-server/v1/login?ReturnUrl=%2Fadmin%2F"
    )

    action = driver.find_element_by_id("vtexIdUI-google-plus")
    action.click()
Example #11
0
    def handle(self, *args, **kwargs):
        current_tz = timezone.get_current_timezone()

        db_order_items = OrderItem.objects.all().prefetch_related('order')
        db_orders = Order.objects.all()

        existing_order_items_dict = make_dict(db_order_items, None,
                                              ['order__vtex_id', 'ean'])
        existing_orders_dict = make_dict(db_orders, None, ['vtex_id'])

        dc = DatabaseConnection()

        order_item_infos = dc.select("""
			SELECT
				voi.*,
				coalesce(e.estoque_disponivel, 0) as stock_warehouse,
				dsp.position as warehouse_position
			from dbo.bi_vtex_order_items voi
			left join w_estoque_disponivel_sku e on e.codigo_barra = voi.ean and e.filial = 'e-commerce'
			left join dbo.produtos_barra ps on ps.codigo_barra = voi.ean
			left join dbo.bi_django_stock_position dsp on dsp.product_color = LEFT(voi.ean, LEN(voi.ean) - LEN(ps.grade))
			where voi.created_at > '2018-12-26 10:03:33'
			;
		""",
                                     strip=True,
                                     dict_format=True)

        order_infos = make_dict(order_item_infos, None, ['order_id'])
        order_dict = {}
        for order_info in order_infos.values():
            order = get_from_dict(existing_orders_dict,
                                  [order_info['order_id']])
            if not order:
                order = Order()
                order.vtex_id = order_info['order_id']

            order.vtex_created_at = current_tz.normalize(
                order_info['created_at'].astimezone(current_tz))
            if order_info['invoiced_at']:
                order.vtex_invoiced_at = current_tz.normalize(
                    order_info['invoiced_at'].astimezone(current_tz))
            if order_info['paid_at']:
                order.vtex_paid_at = current_tz.normalize(
                    order_info['paid_at'].astimezone(current_tz))

            order.sequence = order_info['order_sequence']
            order.client_name = order_info['client_name']
            order.cpf = order_info['cpf']
            order.status = order_info['status']
            order.total_product_price = order_info['total_product_price']
            order.total_shipping_price = order_info['total_shipping_price']
            order.courier = order_info['courier']
            order.city = order_info['city']
            order.neighborhood = order_info['neighborhood']
            order.state = order_info['state']
            order.postal_code = order_info['postal_code']
            order.street_number = order_info['street_number']

            order.payment_method_group = order_info['payment_method_group']

            order_dict[order.vtex_id] = order

        with atomic():
            # OrderItem.objects.all().delete()
            # Order.objects.all().delete()

            for order in order_dict.values():
                order.save()

            order_items_to_create = []
            order_items_to_update = []
            for order_item_info in order_item_infos:
                order_item = get_from_dict(
                    existing_order_items_dict,
                    [order_item_info['order_id'], order_item_info['ean']])
                if order_item:
                    order_items_to_update.append(order_item)
                else:
                    order_item = OrderItem()
                    order = order_dict[order_item_info['order_id']]
                    order_item.order_id = order.id

                    order_items_to_create.append(order_item)

                order_item.ean = order_item_info['ean']
                order_item.vtex_sku = order_item_info['vtex_sku']
                order_item.vtex_product_id = order_item_info['vtex_product_id']
                order_item.quantity = order_item_info['quantity']
                order_item.product_name = order_item_info['name']
                order_item.unit_sale_price = order_item_info['price']
                order_item.image_link = order_item_info['image_link']
                order_item.stock_warehouse = order_item_info['stock_warehouse']
                order_item.invoiced_quantity = order_item_info[
                    'invoiced_quantity']
                order_item.warehouse_position = order_item_info[
                    'warehouse_position']

            OrderItem.objects.bulk_create(order_items_to_create, batch_size=99)

            for order_item in order_items_to_update:
                order_item.save()
Example #12
0
    skus_for_image = """
		SELECT
			ps.produto,
			ps.cor_produto,
			MAX(ps.CODIGO_BARRA) as ean
		FROM produtos_barra ps
		LEFT JOIN dbo.W_ESTOQUE_DISPONIVEL_SKU e on e.codigo_barra = ps.CODIGO_BARRA
		where e.estoque_disponivel > 0
			-- and ps.produto = '23.11.0244'
			-- and ps.COR_PRODUTO = '32'
		group by ps.produto, ps.COR_PRODUTO-- , LEFT(ps.CODIGO_BARRA, LEN(ps.CODIGO_BARRA)-LEN(ps.grade))
		;
	"""

    skus_for_image = dc.select(skus_for_image, strip=True, dict_format=True)

    # images = []
    # for sku in skus_for_image:
    # 	images.append(get_image_url(sku))

    with Pool(50) as p:
        images = p.map(get_image_url, skus_for_image)

    images = [x for x in images if x]

    # brute-force remove repeated images
    images = list(set(images))

    dc = DatabaseConnection()
    print('Inserting into tables...')
Example #13
0
	SUM(ppc.potencial_receita_sorting) as potencial_receita_sorting
	from bi_potencial_produto_cor ppc
	inner join produtos p on p.produto = ppc.produto
	inner join bi_vtex_products vp on vp.produto = ppc.produto
	inner join bi_disponibilidade_produto_cor dpc on
	dpc.produto = ppc.produto and
	dpc.cor_produto = ppc.cor_produto and
	dpc.filial = 'E-COMMERCE'
	group by
	ppc.produto
	ORDER BY
	CASE WHEN MAX(dpc.disponibilidade_filial) >= 0.5 THEN 1 ELSE 0 END asc,
	SUM(ppc.potencial_receita_sorting) asc;
"""

products_to_set_score = dc.select(query, strip=True, dict_format=True)

# raise Exception(len(products_to_set_score))

score = 0
for product_info in products_to_set_score:
    print("%s: %s" % (product_info['produto'], score))
    error = update_vtex_product(
        product_info['product_id'], {
            'Score': str(score),
            'Description': '%(Name)s',
            'DescriptionShort': '%(Name)s',
        })
    if error:
        print(error)
Example #14
0
products_tested = dc.select("""
	SELECT distinct
		-- count(*), sum(e.estoque_disponivel)
		-- , p.DATA_REPOSICAO 
		p.produto as prod_code, 
		CAST(ps.COR_PRODUTO AS INT) as cod_color, 
		MAX(ps.CODIGO_BARRA) as ean
	from dbo.PRODUTOS_BARRA ps
	inner join dbo.PRODUTOS p on p.produto = ps.produto
	inner join dbo.PRODUTO_CORES pc on pc.produto = p.produto and ps.COR_PRODUTO = pc.COR_PRODUTO
	left join w_estoque_disponivel_sku e on e.codigo_barra = ps.CODIGO_BARRA and e.filial = 'e-commerce'
	left join dbo.bi_vtex_product_items v_item on v_item.ean = ps.codigo_barra
	left join bi_vtex_categorizacao_categoria cat1 on cat1.grupo_produto = p.GRUPO_PRODUTO and cat1.subgrupo_produto = p.SUBGRUPO_PRODUTO
	left join bi_vtex_categorizacao_categoria cat2 on cat2.grupo_produto = p.GRUPO_PRODUTO and cat2.subgrupo_produto is null
	left join bi_vtex_categorizacao_cor color on color.linx_color = pc.DESC_COR_PRODUTO
	where 1=1
	 	--and p.DATA_REPOSICAO > '2018-01-01'
	 	-- and v_item.image_url is null
	 	and pc.DESC_COR_PRODUTO NOT LIKE '%%(CANCELADO)%%'
	 	-- and ps.codigo_barra = '3302022901P'
		-- and color.vtex_color is not null
		-- and p.produto in ('35.01.0828','28.06.2016','35.04.0041','35.04.0041','35.02.0828','35.02.0828','35.02.0828','35.01.0859','35.01.0858','35.01.0860','35.01.0856','35.01.0858','01.02.1008','01.02.1008','01.02.1008','35.02.0829','35.02.0829','35.02.0829','35.01.0825','35.01.0857','35.02.0830','35.02.0835','35.02.0835','35.02.0835','35.02.0833','35.02.0833','35.02.0833','35.02.0834','35.02.0834','35.02.0834','41.01.0102','22.07.0269','22.07.0266','22.07.0269','22.05.0472','22.07.0267','22.03.0243','22.12.0591','22.07.0267','22.07.0260','22.12.0594','22.05.0505','22.05.0486','22.07.0261','22.07.0266','22.05.0526','41.01.0108','22.12.0594','22.07.0263','22.07.0268','41.01.0110','24.04.0536','24.04.0535','22.03.0243','41.01.0109','41.01.0103','41.01.0104','41.01.0109','41.01.0101','41.01.0110','41.01.0106','22.07.0261','22.07.0260','22.14.0008','22.14.0008','22.14.0008','22.07.0263','22.12.0593','41.01.0104','22.05.0526','41.01.0105','41.01.0105','41.01.0108','41.01.0108','41.01.0103','41.01.0101','41.01.0109','41.01.0107','41.01.0102','41.01.0106','22.12.0593','41.01.0105','41.01.0105','24.04.0535','24.04.0536','24.04.0536','22.07.0268','22.07.0266','22.07.0260','22.03.0243','41.01.0104','41.01.0110','41.01.0107','41.01.0107','41.01.0106','41.01.0107','22.12.0591','22.07.0267','22.07.0261','22.05.0505')
		and p.produto = '22.04.0163'
		and pc.COR_PRODUTO in ('01')
		-- and e.estoque_disponivel > 0
		-- and ((p.produto='22.12.0598' and pc.cor_produto='01') OR (p.produto='22.12.0598' and pc.cor_produto='336') OR (p.produto='22.12.0598' and pc.cor_produto='482') OR (p.produto='22.12.0598' and pc.cor_produto='64') OR (p.produto='22.07.0250' and pc.cor_produto='263') OR (p.produto='22.07.0252' and pc.cor_produto='39') OR (p.produto='22.12.0597' and pc.cor_produto='01') OR (p.produto='22.12.0597' and pc.cor_produto='94') OR (p.produto='22.12.0601' and pc.cor_produto='02') OR (p.produto='22.12.0601' and pc.cor_produto='20') OR (p.produto='22.12.0601' and pc.cor_produto='211') OR (p.produto='22.12.0600' and pc.cor_produto='02') OR (p.produto='22.07.0269' and pc.cor_produto='02') OR (p.produto='22.07.0269' and pc.cor_produto='176') OR (p.produto='22.07.0267' and pc.cor_produto='02') OR (p.produto='22.07.0267' and pc.cor_produto='03') OR (p.produto='22.07.0267' and pc.cor_produto='110') OR (p.produto='22.05.0472' and pc.cor_produto='02') OR (p.produto='22.05.0505' and pc.cor_produto='01') OR (p.produto='22.05.0505' and pc.cor_produto='02') OR (p.produto='22.14.0008' and pc.cor_produto='01') OR (p.produto='22.14.0008' and pc.cor_produto='02') OR (p.produto='22.14.0008' and pc.cor_produto='03') OR (p.produto='22.07.0266' and pc.cor_produto='02') OR (p.produto='22.07.0266' and pc.cor_produto='176') OR (p.produto='22.03.0243' and pc.cor_produto='02') OR (p.produto='22.03.0243' and pc.cor_produto='10') OR (p.produto='22.03.0243' and pc.cor_produto='194') OR (p.produto='35.04.0041' and pc.cor_produto='105') OR (p.produto='35.04.0041' and pc.cor_produto='176') OR (p.produto='22.12.0594' and pc.cor_produto='02') OR (p.produto='22.12.0594' and pc.cor_produto='10') OR (p.produto='22.12.0594' and pc.cor_produto='341') OR (p.produto='22.07.0261' and pc.cor_produto='01') OR (p.produto='22.07.0261' and pc.cor_produto='02') OR (p.produto='22.07.0261' and pc.cor_produto='105') OR (p.produto='22.07.0260' and pc.cor_produto='02') OR (p.produto='22.07.0260' and pc.cor_produto='25') OR (p.produto='22.07.0260' and pc.cor_produto='33') OR (p.produto='22.12.0593' and pc.cor_produto='02') OR (p.produto='22.07.0263' and pc.cor_produto='02') OR (p.produto='22.07.0263' and pc.cor_produto='176') OR (p.produto='22.07.0268' and pc.cor_produto='02') OR (p.produto='22.07.0268' and pc.cor_produto='176') OR (p.produto='24.04.0536' and pc.cor_produto='01') OR (p.produto='24.04.0536' and pc.cor_produto='05') OR (p.produto='24.04.0536' and pc.cor_produto='117') OR (p.produto='22.12.0591' and pc.cor_produto='02') OR (p.produto='22.12.0591' and pc.cor_produto='194') OR (p.produto='24.04.0535' and pc.cor_produto='122') OR (p.produto='24.04.0535' and pc.cor_produto='68') OR (p.produto='22.05.0486' and pc.cor_produto='02') )
	group by p.produto, ps.COR_PRODUTO
	;
""", strip=True, dict_format=True)
Example #15
0
		e.produto
		FROM w_estoque_disponivel_sku e
		INNER JOIN produtos p on e.produto = p.produto
		WHERE
		p.grupo_produto != 'GIFTCARD' and
		e.estoque_disponivel > 0 and
		e.filial = 'E-COMMERCE'
		order by e.produto
	"""

    print('Connecting to database...', end='')
    dc = DatabaseConnection()
    print('Done!')

    print('Getting products from database...', end='')
    product_ref_ids = dc.select(query, dict_format=True, strip=True)
    print('Done!')

    print('Getting product info from vtex...', end='')

    product_info = {
        "product_categories": [],
        "product_items": [],
        "product_images": [],
        "products": []
    }

    result = []
    # for x in product_ref_ids:
    # 	result.append(get_product_info(x))
Example #16
0
		SELECT
		RTRIM(ps.grupo_produto) as grupo_produto,
		RTRIM(ps.subgrupo_produto) as subgrupo_produto,
		RTRIM(pg.codigo_grupo) as cod_grupo,
		RTRIM(ps.codigo_subgrupo) as cod_subgrupo,
		ps.codigo_sequencial as sequence_code
		FROM produtos_subgrupo ps
		INNER JOIN produtos_grupo pg on pg.grupo_produto = ps.grupo_produto 
		WHERE
		ps.inativo = 0 and
		pg.inativo = 0 and
		(
			%s
		)
	""" % '\n OR '.join(subgroup_filter_list)
    sequence_codes = dc.select(query)
    for sequence_code in sequence_codes:
        product_dict[sequence_code[0]][
            sequence_code[1]]['group_code'] = sequence_code[2]
        product_dict[sequence_code[0]][
            sequence_code[1]]['subgroup_code'] = sequence_code[3]
        product_dict[sequence_code[0]][
            sequence_code[1]]['current_sequence_code'] = sequence_code[4]
        product_dict[sequence_code[0]][
            sequence_code[1]]['final_sequence_code'] = sequence_code[4]

    sequence_code_update_query_list = []
    product_insert_query_values_list = []
    product_price_insert_query_values_list = []
    product_price_update_query_values_list = []
    product_color_insert_query_values_list = []
Example #17
0
    def get_queryset(self):
        ean = self.request.GET.get('ean')

        if not ean:
            return []
        else:
            dc = DatabaseConnection()

            sku_history = dc.select("""
				SELECT 
					t.*
				from (
					SELECT distinct
						ps.codigo_barra as ean,
						'saida' as action,
						case 
							when lsp.DATA_PARA_TRANSFERENCIA > ls.DATA_PARA_TRANSFERENCIA then lsp.DATA_PARA_TRANSFERENCIA
							else ls.DATA_PARA_TRANSFERENCIA 
						end as transf_date,
						lsp.QTDE_SAIDA as qnt,
						ls.FILIAL_DESTINO as filial,
						ls.NUMERO_NF_TRANSFERENCIA as nf
					FROM loja_saidas ls
					INNER JOIN loja_saidas_produto lsp on lsp.ROMANEIO_PRODUTO = ls.ROMANEIO_PRODUTO
					inner join produtos_barra ps on ps.produto = lsp.produto and ps.COR_PRODUTO = lsp.COR_PRODUTO
					where 1=1
						and ls.filial = 'e-commerce'
						and case 
							when lsp.DATA_PARA_TRANSFERENCIA > ls.DATA_PARA_TRANSFERENCIA then lsp.DATA_PARA_TRANSFERENCIA
							else ls.DATA_PARA_TRANSFERENCIA 
						end >= DATEADD(day, -30, GETDATE())
					UNION
					SELECT distinct
						ps.codigo_barra,
						'entrada',
						case 
							when lep.DATA_PARA_TRANSFERENCIA > le.DATA_PARA_TRANSFERENCIA then lep.DATA_PARA_TRANSFERENCIA
							else le.DATA_PARA_TRANSFERENCIA 
						end,
						lep.QTDE_ENTRADA,
						le.FILIAL_ORIGEM,
						le.NUMERO_NF_TRANSFERENCIA
					FROM loja_entradas le
					INNER JOIN loja_entradas_produto lep on lep.ROMANEIO_PRODUTO = le.ROMANEIO_PRODUTO
					inner join produtos_barra ps on ps.produto = lep.produto and ps.COR_PRODUTO = lep.COR_PRODUTO
					where 1=1
						and le.filial = 'e-commerce'
						and case 
							when lep.DATA_PARA_TRANSFERENCIA > le.DATA_PARA_TRANSFERENCIA then lep.DATA_PARA_TRANSFERENCIA
							else le.DATA_PARA_TRANSFERENCIA 
						end >= DATEADD(day, -30, GETDATE())
					UNION
					SELECT
						lvp.CODIGO_BARRA,
						'venda',
						data_venda,
						lvp.qtde,
						'venda',
						'venda'
					FROM dbo.LOJA_VENDA_PRODUTO lvp
					inner join dbo.FILIAIS fil on fil.cod_filial = lvp.codigo_filial
					INNER JOIN produtos p on lvp.produto = p.produto
					where 1=1
						and fil.filial = 'e-commerce' 
						and data_venda >= DATEADD(day, -30, GETDATE())
						and p.grupo_produto != 'GIFTCARD'
						and lvp.qtde > 0
				) t
				where t.ean = '%s'
				order by t.transf_date
				;
			""" % ean,
                                    strip=True,
                                    dict_format=True)

            return sku_history
Example #18
0
			from (
				SELECT 
					codigo_barra,
					estoque_disponivel - 0 as estoque_disponivel
				FROM w_estoque_disponivel_sku
				where filial = 'e-commerce' and (estoque_disponivel - 0) > 0
			) e
			full outer join bi_vtex_product_items vpi on vpi.ean = e.codigo_barra
			where 1=1
				and COALESCE(vpi.stock_quantity, 0) != COALESCE(e.estoque_disponivel, 0)
				-- and vpi.ean = '0810001026339'
		) t
	;
	"""

    divergence_skus = dc.select(divergence_query, strip=True, dict_format=True)
    print(divergence_skus)

    STOCK_MARGIN = 0
    product_filter = """
		-- and ps.produto in ('22.05.0562','35.02.0507','22.03.0218','77.61.0123','77.99.2300','22.05.0574','22.05.0566','22.05.0571','22.03.0161','22.12.0541','22.12.0541','22.12.0541','77.22.0243','77.73.0354','35.02.0599','77.61.0107','77.61.0136','22.05.0489','35.09.0929','77.61.0139','22.05.0175','32.03.0292','32.03.0291','35.02.0786','35.02.0786','35.09.0832','22.06.0448','23.11.0186','22.05.0577','22.06.0469','22.04.0161','31.05.0005','35.09.0834','22.05.0545','19.07.0002','77.61.0106','32.06.0052','77.61.0105','22.12.0443','28.01.0052','22.02.0246')
		ps.codigo_barra in (
			-- produtos com mudanca de estoque em X dias
			SELECT distinct
				ps.codigo_barra
			FROM loja_saidas ls
			INNER JOIN loja_saidas_produto lsp on lsp.ROMANEIO_PRODUTO = ls.ROMANEIO_PRODUTO
			inner join produtos_barra ps on ps.produto = lsp.produto and ps.COR_PRODUTO = lsp.COR_PRODUTO
			where 1=1
				and ls.filial = 'e-commerce'
				and case