DocumentService.findComparativeSaleReturnByCnpjKeyPeriodCfop |
|
37
|
65
|
38
|
8
|
830
|
0.00
|
1
|
26
|
WITH operacoes AS ( SELECT CASE WHEN item.produto -> 'prod' ->> 'cfop' IN (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?) THEN CASE WHEN ds.status = '3' THEN 'VENDA|CANCELADA' ELSE 'VENDA' END WHEN item.produto -> 'prod' ->> 'cfop' IN (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?) THEN CASE WHEN ds.status = '3' THEN 'DEVOLUCAO|CANCELADA' ELSE 'DEVOLUCAO' END WHEN ds.status = '3' THEN 'CANCELADA' END AS tipoOperacao, TO_CHAR(d.data_emissao, 'YYYY-MM') AS periodo, SUM(CAST(item.produto -> 'prod' ->> 'vprod' AS NUMERIC)) AS valor FROM document d JOIN document_status ds ON d.key = ds.key AND d.cnpj_issuer = ds.cnpj_issuer AND d.protocol = ds.protocol AND d.nsu = ds.nsu AND d.type = ds.type JOIN jsonb_array_elements(d.data -> 'nfe' -> 'infNFe' -> 'det') item(produto) ON TRUE WHERE d.cnpj_issuer = ? AND d.type IN ('NFE_4_0', 'NFE_3_1') AND ((null) is NULL OR d.key IN (null)) AND d.data_emissao BETWEEN ? AND ? AND (? = 'nao_filtrar_ie' OR d.data -> 'nfe' -> 'infNFe' -> 'emit' ->> 'ie' =?) AND ( item.produto -> 'prod' ->> 'cfop' IN (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?) OR item.produto -> 'prod' ->> 'cfop' IN (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?) OR ds.status = '3' ) GROUP BY item.produto -> 'prod' ->> 'cfop', ds.status, TO_CHAR(d.data_emissao, 'YYYY-MM') ) SELECT tipoOperacao, periodo, SUM(valor) AS valor FROM operacoes GROUP BY tipoOperacao, periodo ORDER BY periodo |
1.00 |
26
|
46
|
28
|
|
|
0.00
|
|
|