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
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!')
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)
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)
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]
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']))
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)
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)
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)
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()
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()
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...')
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)
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)
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))
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 = []
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
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