CREATE OR REPLACE VIEW view_estoque_pendentes AS
  SELECT
    prd.ITE_CODIGOI, prd.ITE_CODIGOL, prd.ITE_DESCRIC,
    SUM(
      CASE
       WHEN ( fti.FAT_CODITE4 > 0 )  THEN  fti.FAT_QTD_ITE / 4
       WHEN ( fti.FAT_CODITE3 > 0 )  THEN  fti.FAT_QTD_ITE / 3
       WHEN ( fti.FAT_CODITE2 > 0 )  THEN  fti.FAT_QTD_ITE / 2
       WHEN ( fti.FAT_CODITE1 > 0 )  THEN  fti.FAT_QTD_ITE / 1
      END
    ) AS Qtd_Pendente
  FROM      cad_produto AS prd
  INNER JOIN   fat_item AS fti  ON
    ( LENGTH( fti.FAT_CANITEM ) = 0 AND
     (   fti.FAT_CODITE1 = prd.ITE_CODIGOI
  	  OR fti.FAT_CODITE2 = prd.ITE_CODIGOI
  	  OR fti.FAT_CODITE3 = prd.ITE_CODIGOI
   	  OR fti.FAT_CODITE4 = prd.ITE_CODIGOI
   	 )
    )
  RIGHT JOIN view_comandas_abertas AS ftg  ON  ftg.FAT_CODIGOI = fti.FAT_CFATGER
  WHERE LENGTH( fti.FAT_CANITEM ) = 0
  GROUP BY prd.ITE_CODIGOI
;

CREATE OR REPLACE VIEW view_produtos_estoque AS
  SELECT
    prd.ITE_CODIGOI, prd.ITE_CODIGOL, prd.ITE_DESCRIC, prd.ITE_CONTR_ESTOQUE AS Bloqueia_Venda,
    CASE WHEN est.EST_SALDOS   IS NULL THEN 0 ELSE est.EST_SALDOS   END AS Saldo_Estoque,
    CASE WHEN pnd.Qtd_Pendente IS NULL THEN 0 ELSE pnd.Qtd_Pendente END AS Qtd_Pendente,
    ( COALESCE( est.EST_SALDOS, 0 ) - COALESCE( pnd.Qtd_Pendente, 0 ) ) AS Saldo_Previsto
  FROM                  cad_produto AS prd
  LEFT JOIN view_estoque_pendentes  AS pnd  ON  pnd.ITE_CODIGOI = prd.ITE_CODIGOI
  LEFT JOIN cad_produto_estoque     AS est  ON  est.EST_CODITE  = prd.ITE_CODIGOI
;