from pprint import pprint

from utils.functions.models import rows_to_dict_list


def ped_inform(cursor, pedido, empresa=1):
    # Informações sobre Pedido
    sql = """
        SELECT
          ped.PEDIDO_VENDA
        , COALESCE(
            ( SELECT
                LISTAGG(i.CODIGO_DEPOSITO, ', ')
                WITHIN GROUP (ORDER BY i.CODIGO_DEPOSITO)
              FROM (
                SELECT DISTINCT
                  ii.CODIGO_DEPOSITO
                , ii.PEDIDO_VENDA
                FROM PEDI_110 ii
              ) i
              WHERE i.PEDIDO_VENDA = ped.PEDIDO_VENDA
            )
          , ' '
          ) DEPOSITO
        , ped.DATA_EMIS_VENDA DT_EMISSAO
        , ped.DATA_PREV_RECEB DT_RECEBIMENTO
        , ped.DATA_ENTR_VENDA DT_EMBARQUE
        , ped.OBSERVACAO
        , c.NOME_CLIENTE
          || ' (' || lpad(c.CGC_9, 8, '0')
          || '/' || lpad(c.CGC_4, 4, '0')
          || '-' || lpad(c.CGC_2, 2, '0')
          || ')' CLIENTE
        , c.CGC_9 CLIENTE_9
        , COALESCE(ped.COD_PED_CLIENTE, ' ') PEDIDO_CLIENTE
        , ped.STATUS_PEDIDO STATUS_PEDIDO_CODIGO
        , CASE ped.STATUS_PEDIDO
          WHEN 0 THEN '0-Digitado'
          WHEN 1 THEN '1-Financeiro'
          WHEN 2 THEN '2-Liberado Financeiro'
          WHEN 3 THEN '3-Faturamento'
          WHEN 4 THEN '4-A cancelar'
          WHEN 5 THEN '5-Cancelado'
          WHEN 9 THEN '9-Aberto na web'
          END STATUS_PEDIDO
        , ped.COD_CANCELAMENTO
        , ped.COD_CANCELAMENTO
            || '-' || canc.DESC_CANC_PEDIDO
          CANCELAMENTO_DESCR
        , CASE ped.SITUACAO_VENDA
          WHEN 0  THEN '0-Pedido liberado'
          WHEN 5  THEN '5-Pedido suspenso'
          WHEN 10 THEN '10-Faturado total'
          WHEN 15 THEN '15-Pedido com NF cancelada'
          END SITUACAO_VENDA
        FROM PEDI_100 ped -- pedido de venda
        JOIN PEDI_140 canc -- código de cancelamento
          ON canc.COD_CANC_PEDIDO = ped.COD_CANCELAMENTO
        LEFT JOIN PEDI_010 c
          ON c.CGC_9 = ped.CLI_PED_CGC_CLI9
         AND c.CGC_4 = ped.CLI_PED_CGC_CLI4
         AND c.CGC_2 = ped.CLI_PED_CGC_CLI2
        WHERE ped.PEDIDO_VENDA = %s
          AND ped.CODIGO_EMPRESA = %s
    """
    cursor.execute(sql, [pedido, empresa])
    return rows_to_dict_list(cursor)

@@ -122,38 +122,394 @@
 1):%0A
+%0A
     
-# Informa%C3%A7%C3%B5es sobre Pedido
+filtra_pedido = f%22AND ped.PEDIDO_VENDA = %7Bpedido%7D%22%0A%0A    filtro_empresa = %22%22%0A    if empresa:%0A        if not isinstance(empresa, tuple):%0A            empresa = (empresa, )%0A        empresas_list = %5B%5D%0A        for empr in empresa:%0A            empresas_list.append(f%22ped.CODIGO_EMPRESA = %7Bempr%7D%22)%0A        filtro_empresa = f%22%22%22--%0A            AND (%7B' OR '.join(empresas_list)%7D)%0A        %22%22%22%0A
 %0A   
@@ -515,16 +515,17 @@
   sql = 
+f
 %22%22%22%0A    
@@ -2158,32 +2158,222 @@
  SITUACAO_VENDA%0A
+        , ped.CODIGO_EMPRESA%0A        , CASE ped.CODIGO_EMPRESA%0A          WHEN 1 THEN '1-Tussor'%0A          WHEN 2 THEN '2-Agator'%0A          WHEN 3 THEN '3-Filial Corte'%0A          END EMPRESA%0A
         FROM PED
@@ -2690,67 +2690,99 @@
 ERE 
-ped.PEDIDO_VENDA = %25s%0A          AND ped.CODIGO_EMPRESA = %25s
+1=1%0A          %7Bfiltra_pedido%7D -- filtra_pedido%0A          %7Bfiltro_empresa%7D -- filtro_empresa
 %0A   
@@ -2812,27 +2812,8 @@
 (sql
-, %5Bpedido, empresa%5D
 )%0A  

query ped_inform aceita filtrar por mais de uma empresa