CREATE OR ALTER VIEW VWMFE(
    ESTABELECIMENTO_CODIGO,
    MFE_ID,
    NUMERO_NOTAFISCAL,
    SERIE,
    CHAVE_ACESSO,
    SITUACAO,
    NATUREZA,
    MODELO,
    MODELO_DESCRICAO,
    DATA_EMISSAO,
    HORA_EMISSAO,
    IND_FINAL,
    EMPRESA_CODIGO,
    EMPRESA_RAZAOSOCIAL,
    EMPRESA_CNPJ,
    EMPRESA_IE,
    EMPRESA_ENDERECO,
    EMPRESA_NUMERO,
    EMPRESA_BAIRRO,
    EMPRESA_CIDADE,
    EMPRESA_UF,
    EMPRESA_CEP,
    SPED,
    SPED_PISCOF,
    CONTABILIZACAO_ID,
    REPRESENTANTE_CODIGO,
    REPRESENTANTE_COMISSAO,
    VENDEDOR_CODIGO,
    VENDEDOR_COMISSAO,
    CLASSIFICACAO,
    SERIE_MFE,
    OPERADOR_ID,
    NUMERO_CFE_CANCELADO,
    CHAVE_ACESSO_CFE_CANCELADO,
    PDV_ID)
AS
SELECT
       A.ESTABELECIMENTO_ID AS ESTABELECIMENTO_CODIGO,
       A.ID AS MFE_ID,
       A.NUMERO_CFE AS NUMERO_NOTAFISCAL,
       CAST(A.SERIE AS VARCHAR(3)) SERIE,
       A.CHAVE_ACESSO,
       A.SITUACAO,
       1 AS NATUREZA,
       '59' AS MODELO,
       'MFE' AS MODELO_DESCRICAO,
       A.DATA_EMISSAO,
       A.HORA_EMISSAO,

       '1' AS IND_FINAL,
       IIF(A.CLIENTE_ID > 0, A.CLIENTE_ID,
       IIF(CHAR_LENGTH(A.CLIENTE_CPF)>0 AND COALESCE(A.CLIENTE_ID,0) = 0,
           COALESCE((SELECT FIRST 1 C.CODIGO FROM TBEMPRESA C WHERE C.CNPJ = A.CLIENTE_CPF),0),0)) AS EMPRESA_CODIGO,
       UPPER(A.CLIENTE_NOME) AS EMPRESA_RAZAOSOCIAL,
       A.CLIENTE_CPF AS EMPRESA_CNPJ,
       '' AS EMPRESA_IE,
       UPPER(A.CLIENTE_ENDERECO) AS EMPRESA_ENDERECO,
       A.CLIENTE_NUMERO AS EMPRESA_NUMERO,
       UPPER(A.CLIENTE_BAIRRO) AS EMPRESA_BAIRRO,
       (SELECT FIRST 1 C.DESCRICAO FROM TBCIDADE C WHERE C.ID = A.CLIENTE_CIDADE) CLIENTE_CIDADE,
       UPPER(A.CLIENTE_UF) AS EMPRESA_UF,
       A.CLIENTE_CEP AS EMPRESA_CEP,
       '1' AS SPED,
       '1' AS SPED_PISCOF,

       COALESCE(A.CONTABILIZACAO_ID,0) AS CONTABILIZACAO_ID,
       A.REPRESENTANTE_ID REPRESENTANTE_CODIGO,
       A.REPRESENTANTE_COMISSAO,
       A.VENDEDOR_ID,
       A.VENDEDOR_COMISSAO,
       '' CLASSIFICACAO,
       A.SERIE_MFE,
       A.OPERADOR_ID,
       A.NUMERO_CFE_CANCELADO,
       A.CHAVE_ACESSO_CFE_CANCELADO,
       A.PDV_ID

FROM TBPDV_CFE A
WHERE A.SITUACAO IN (2, 3);

CREATE OR ALTER VIEW VWMFE_ITEM(
    MFE_ID,
    MFE_ITEM_ID,
    CFOP_CODIGO,
    PRODUTO_CODIGO,
    TAMANHO,
    QUANTIDADE,
    VALOR_UNITARIO,
    VALOR_TOTAL,
    VALOR_DESCONTO,
    ORIGEM,
    TRIBUTACAO_ICMS,
    PERCENTUAL_ICMS,
    VALOR_BASECALCULO_ICMS,
    VALOR_ICMS,
    TRIBUTACAO_PIS,
    PERCENTUAL_PIS,
    BASECALCULO_PIS,
    VALOR_PIS,
    TRIBUTACAO_COFINS,
    PERCENTUAL_COFINS,
    BASECALCULO_COFINS,
    VALOR_COFINS,
    FISCAL_OUTRAS_ICMS,
    VALOR_CONTABIL,
    OPERACAO_CODIGO,
    NCM_CODIGO,
    ESTOQUE_ID,
    EAN,
    PRODUTO_DESCRICAO,
    ESTABELECIMENTO_CODIGO,
    PEDIDO,
    PEDIDO_ITEM_ID,
    CONFERENCIA_ID,
    CONFERENCIA_ITEM_ID,
    SEQUENCIA,
    DATA_EMISSAO,
    LOCALIZACAO_CODIGO)
AS
SELECT
       A.ID AS MFE_ID,
       B.ID AS MFE_ITEM_ID,
       B.CFOP_CODIGO,
       B.PRODUTO_ID AS PRODUTO_CODIGO,
       B.TAMANHO,

       B.QUANTIDADE,
       B.VALOR_UNITARIO AS VALOR_UNITARIO,
       B.VALOR_TOTAL VALOR_TOTAL,
       B.VALOR_DESCONTO AS VALOR_DESCONTO,

       B.TRIBUTACAO_ORIGEM AS ORIGEM,
       CAST(B.TRIBUTACAO_ICMS AS INTEGER) AS TRIBUTACAO_ICMS,
       B.ALIQUOTA_ICMS  AS PERCENTUAL_ICMS,
       B.BASECALCULO_ICMS AS VALOR_BASECALCULO_ICMS,
       B.VALOR_ICMS AS VALOR_ICMS,

       B.TRIBUTACAO_PIS  AS TRIBUTACAO_PIS,
       B.ALIQUOTA_PIS    AS PERCENTUAL_PIS,
       B.BASECALCULO_PIS AS BASECALCULO_PIS,
       B.VALOR_PIS       AS VALOR_PIS,

       B.TRIBUTACAO_COFINS AS TRIBUTACAO_COFINS,
       B.ALIQUOTA_COFINS   AS PERCENTUAL_COFINS,
       B.BASECALCULO_COFINS AS BASECALCULO_COFINS,
       B.VALOR_COFINS       AS VALOR_COFINS,

       B.VALOR_OUTRAS_ICMS AS FISCAL_OUTRAS_ICMS,
       B.VALOR_CONTABIL,

       B.OPERACAO_CODIGO,
       B.NCM_CODIGO,
       COALESCE(B.ESTOQUE_ID,0) AS ESTOQUE_ID,
       B.EAN,
       UPPER(B.PRODUTO_DESCRICAO) AS PRODUTO_DESCRICAO,
       A.ESTABELECIMENTO_ID,
       B.PEDIDO,
       B.PEDIDO_ITEM_ID,
       B.CONFERENCIA_ID,
       B.CONFERENCIA_ITEM_ID,
       B.SEQUENCIA,
       A.DATA_EMISSAO,
       B.LOCALIZACAO_ID

FROM TBPDV_CFE A, TBPDV_CFE_ITEM  B
WHERE A.ID = B.PDV_CFE_ID
AND A.SITUACAO IN (2, 3);