Árvore de páginas

Ponto de Entrada

Descrição:

Este ponto de entrada possibilita o usuário realizar alterações na query do levantamento das devoluções.

Localização:

Relatórios\ Gerencial\ Painel Venda Peças (OFIOC470)

Eventos:

//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿

    //³ SQL DEVOLUCOES - SELECT ( Filiais / Dias / Grupos / Itens ) ³

    //ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ

    If aFiltro[13] <> STR0020 // devolucoes diferente de ( nao considerar )

        If aFiltro[13] == STR0021 // Devolucoes referente ao Periodo ( do Periodo )

            aNFsDev := {}

            aAdd(aNFsDev,{"","",""}) // Considerar Todas as devolucoes dentro do Periodo

        EndIf

        For nDev := 1 to len(aNFsDev)

            ///////////////////

            // CAMPOS  SQL   //

            ///////////////////

            cQuery := "SELECT SD1.D1_LOJA, SD1.D1_FORNECE, SD1.D1_DOC, SD1.D1_SERIE, SD1.D1_FILIAL , SF4.F4_SITTRIB , SD1.D1_TOTAL , SD1.D1_VALIPI , SD1.D1_DESPESA , SD1.D1_SEGURO , "

            cQuery += "SD1.D1_QUANT , SD1.D1_ICMSRET , SD1.D1_VALFRE , SD1.D1_VALICM , SD1.D1_VALIMP5 , "

            cQuery += "SD1.D1_VALIMP6 , SD1.D1_VALDESC , SD1.D1_CUSTO , SF2.F2_PREFORI , SF2.F2_EMISSAO , SD2.D2_ICMSRET, SD2.D2_COD , SD2.D2_VALICM, SD2.D2_QUANT, SA1.A1_EST "

            Do Case

                Case cTipo == "FIL"

                    cQuery += ", SD1.D1_FILIAL "

                Case cTipo == "DIA"

                    cQuery += ", SD1.D1_DTDIGIT "

                Case cTipo == "GRP" // Grupos

                    cQuery += ", SD1.D1_GRUPO , SBM.BM_DESC "

                Case cTipo == "ITE" // Itens

                    cQuery += ", SD1.D1_GRUPO , SB1.B1_CODITE , SB1.B1_DESC "

                Case cTipo == "ANA" // Analitico

                    cQuery += ", SD1.D1_FILIAL , SD1.D1_NFORI , SD1.D1_SERIORI , SD1.D1_COD , VS1.VS1_NUMORC , VOO.VOO_NUMOSV , VOO.VOO_TIPTEM "

                Case cTipo == "TPTT" // Oficina - Tipo de Publico / Tipo de Tempo

                    cQuery += ", SD1.D1_FILIAL , SD1.D1_NFORI , SD1.D1_SERIORI , SD1.D1_COD , VOI.VOI_SITTPO , VOI.VOI_DESTTE , VOO.VOO_TIPTEM "

                Case cTipo == "VEND" // Ranking Vendedores

                    cQuery += ", SF2.F2_VEND1 "

                Case cTipo == "VNDE" // Vendedores

                    cQuery += ", SF2.F2_VEND1 "

                Case cTipo == "MARCA" // MARCAS

                    cQuery += ", COALESCE(VE1.VE1_CODMAR,'-') AS VE1_CODMAR, VE1.VE1_DESMAR "

            EndCase

            ///////////////////

            // FROM SD1      //

            ///////////////////

            cQuery += "FROM "+cNamSD1+" SD1 "

            ///////////////////

            // JOIN SF2      //

            ///////////////////

            cQuery += "JOIN "+cNamSF2+" SF2 ON "

            cQuery += "( SF2.F2_FILIAL=SD1.D1_FILIAL AND SF2.F2_DOC=SD1.D1_NFORI AND SF2.F2_SERIE=SD1.D1_SERIORI AND "

            If cTipo == "TPTT" // Oficina - Tipo de Publico / Tipo de Tempo

                cQuery += "SF2.F2_PREFORI='"+cPrefOFI+"' AND "

            Else

                If aFiltro[15] == "T" // Todos (Balcao/Oficina)

                    cQuery += "SF2.F2_PREFORI IN ('"+cPrefBAL+"','"+cPrefOFI+"') AND "

                ElseIf aFiltro[15] == "B" // Balcao

                    cQuery += "SF2.F2_PREFORI='"+cPrefBAL+"' AND "

                ElseIf aFiltro[15] == "O" // Oficina

                    cQuery += "SF2.F2_PREFORI='"+cPrefOFI+"' AND "

                EndIf

            EndIf

            If !Empty(aFiltro[12]) // Filtra Vendedor

                cQuery += "SF2.F2_VEND1='"+aFiltro[12]+"' AND "

            EndIf

            cQuery += "SF2.D_E_L_E_T_=' ' ) "

            ///////////////////

            // JOIN SD2      //

            ///////////////////

            cQuery += "JOIN "+cNamSD2+" SD2 ON "

            cQuery += "( SD2.D2_FILIAL=SF2.F2_FILIAL AND SD2.D2_DOC=SF2.F2_DOC AND SD2.D2_SERIE=SF2.F2_SERIE AND SD2.D2_COD=SD1.D1_COD AND SD2.D_E_L_E_T_=' ' ) "

            //////////////////////

            // JOIN SF4 ENTRADA //

            //////////////////////

            cQuery += "JOIN "+cNamSF4+" SF4 ON ( "

            cQuery += "SF4.F4_FILIAL='"+cFilSF4+"' AND "

            cQuery += "SF4.F4_CODIGO=SD1.D1_TES AND SF4.F4_OPEMOV='09' AND SF4.D_E_L_E_T_=' ' ) " // F4_OPEMOV='09' -> Devolucao

 

            ////////////////////

            // JOIN SF4 SAIDA //

            ////////////////////

            cQuery += "JOIN "+cNamSF4+" SF4SAI ON ( "

            cQuery += "SF4SAI.F4_FILIAL='"+cFilSF4+"' AND "

            cQuery += "SF4SAI.F4_CODIGO=SD2.D2_TES AND SF4SAI.F4_OPEMOV='05' AND SF4SAI.D_E_L_E_T_=' ' ) " // Devolução de Venda

 

            ///////////////////

            // JOIN SBM      //

            ///////////////////

            cQuery += "JOIN "+cNamSBM+" SBM ON ( "

            cQuery += "SBM.BM_FILIAL='"+cFilSBM+"' AND "

            cQuery += "SBM.BM_GRUPO=SD1.D1_GRUPO AND SBM.BM_TIPGRU NOT IN ('7','4') AND SBM.D_E_L_E_T_=' ' ) "

            ///////////////////

            // JOIN SB1      //

            ///////////////////

            cQuery += "JOIN "+cNamSB1+" SB1 ON ( "

            cQuery += "SB1.B1_FILIAL='"+cFilSB1+"' AND "

            cQuery += "SB1.B1_COD=SD1.D1_COD AND SB1.D_E_L_E_T_=' ' ) "

            ///////////////////

            // JOIN SA1      //

            ///////////////////

            cQuery += "JOIN "+cNamSA1+" SA1 ON ( "

            cQuery += "SA1.A1_FILIAL='"+cFilSA1+"' AND "

            cQuery += "SA1.A1_COD=SF2.F2_CLIENTE AND SA1.A1_LOJA=SF2.F2_LOJA AND "

            If !Empty(aFiltro[04]) // 04 - Pessoa

                cQuery += "SA1.A1_PESSOA='"+aFiltro[04]+"' AND "

            EndIf

            If !Empty(aFiltro[05]) // 05 - Tipo

                cQuery += "SA1.A1_TIPO='"+aFiltro[05]+"' AND "

            EndIf

            If !Empty(aFiltro[06]) // 06 - Tipo Cliente

                cQuery += "SA1.A1_TIPOCLI='"+aFiltro[06]+"' AND "

            EndIf

            cQuery += "SA1.D_E_L_E_T_=' ' ) "

            If !Empty(aFiltro[03]) // 03 - Regiao de Atuacao

                ///////////////////

                // LEFT JOIN VAM //

                ///////////////////

                cQuery += "LEFT JOIN "+cNamVAM+" VAM ON ( "

                cQuery += "VAM.VAM_FILIAL='"+cFilVAM+"' AND "

                cQuery += "VAM.VAM_IBGE=SA1.A1_IBGE AND VAM.VAM_REGIAO='"+aFiltro[03]+"' AND VAM.D_E_L_E_T_=' ' ) "

            EndIf

            /////////////////////////////////////

            // Filtro                          //

            // 07 - Tipo de Negocio do Cliente //

            /////////////////////////////////////

            If !Empty(aFiltro[07])

                ///////////////////

                // JOIN VZO      //

                ///////////////////

                cQuery += "JOIN "+cNamVZO+" VZO ON ( "

                cQuery += "VZO.VZO_FILIAL='"+cFilVZO+"' AND "

                cQuery += "VZO.VZO_CLIENT=SF2.F2_CLIENTE AND VZO.VZO_LOJA=SF2.F2_LOJA AND "

                cQuery += "VZO.VZO_TIPO='"+aFiltro[07]+"' AND VZO.D_E_L_E_T_=' ' )"

            EndIf

            If cTipo == "ANA" // Analitico

                ///////////////////

                // LEFT JOIN VS1 //

                ///////////////////

                cQuery += "LEFT JOIN "+cNamVS1+" VS1 ON ( "

                cQuery += "VS1.VS1_FILIAL='"+cFilVS1+"' AND "

                cQuery += "VS1.VS1_NUMNFI=SD1.D1_NFORI AND VS1.VS1_SERNFI=SD1.D1_SERIORI AND VS1.D_E_L_E_T_=' ' ) "

                ///////////////////

                // LEFT JOIN VOO //

                ///////////////////

                cQuery += "LEFT JOIN "+cNamVOO+" VOO ON ( "

                cQuery += "VOO.VOO_FILIAL='"+cFilVOO+"' AND "

                cQuery += "VOO.VOO_NUMNFI=SD1.D1_NFORI AND VOO.VOO_SERNFI=SD1.D1_SERIORI AND VOO.D_E_L_E_T_=' ' ) "

            EndIf

            If cTipo == "TPTT" // Oficina - Tipo de Publico / Tipo de Tempo

                ///////////////////

                // LEFT JOIN VOO //

                ///////////////////

                cQuery += "LEFT JOIN "+cNamVOO+" VOO ON ( "

                cQuery += "VOO.VOO_FILIAL='"+cFilVOO+"' AND "

                cQuery += "VOO.VOO_NUMNFI=SD1.D1_NFORI AND VOO.VOO_SERNFI=SD1.D1_SERIORI AND VOO.D_E_L_E_T_=' ' ) "

                ///////////////////

                // LEFT JOIN VOI //

                ///////////////////

                cQuery += "LEFT JOIN "+cNamVOI+" VOI ON ( "

                cQuery += "VOI.VOI_FILIAL='"+cFilVOI+"' AND "

                cQuery += "VOI.VOI_TIPTEM=VOO.VOO_TIPTEM AND VOI.D_E_L_E_T_=' ' ) "

            EndIf

 

            ///////////////////

            // LEFT JOIN VE1 //

            ///////////////////

            cQuery += "LEFT JOIN "+cNamVE1+" VE1 ON ( "

            cQuery += "VE1.VE1_FILIAL='"+cFilVE1+"' AND "

            cQuery += "VE1.VE1_CODMAR=SBM.BM_CODMAR AND VE1.D_E_L_E_T_=' ' ) "

 

            ///////////////////

            // WHERE         //

            ///////////////////

            cQuery += "WHERE "

            If Empty(aNFsDev[nDev,2]) // Considerar Todas as devolucoes dentro do Periodo

                cQuery += "SD1.D1_FILIAL='"+cFilSD1+"' AND "

                If Empty(aFiltro[18]) // Todas os Dias do Periodo

                    cQuery += "SD1.D1_DTDIGIT>='"+dtos(aFiltro[01])+"' AND SD1.D1_DTDIGIT<='"+dtos(aFiltro[02])+"' AND "

                Else // Dia selecionado

                    cQuery += "SD1.D1_DTDIGIT='"+dtos(ctod(aFiltro[18]))+"' AND "

                EndIf

            Else // Somente a Devolucao referente a venda NF+SERIE

                cQuery += "SD1.D1_FILIAL='"+aNFsDev[nDev,1]+"' AND SD1.D1_NFORI='"+aNFsDev[nDev,2]+"' AND SD1.D1_SERIORI='"+aNFsDev[nDev,3]+"' AND "

            EndIf

            If !Empty(aFiltro[10]) // Grupo do Item do Filtro

                cQuery += "SD1.D1_GRUPO IN "+cFiltGrupo+" AND "

            Else

                If !Empty(aFiltro[19]) // Grupo do Item selecionado

                    cQuery += "SD1.D1_GRUPO='"+aFiltro[19]+"' AND "

                EndIf

            EndIf

            If !Empty(aFiltro[11]) // Codigo do Item do Filtro

                cQuery += "SB1.B1_CODITE='"+aFiltro[11]+"' AND "

            Else

                If !Empty(aFiltro[20]) // Grupo + Codigo do Item selecionado

                    cQuery += "SD1.D1_GRUPO='"+left(aFiltro[20],TamSx3("D1_GRUPO")[1])+"' AND "

                    cQuery += "SB1.B1_CODITE='"+substr(aFiltro[20],(TamSx3("D1_GRUPO")[1]+1))+"' AND "

                EndIf

            EndIf

            If !Empty(aFiltro[08]) // Codigo do Cliente

                cQuery += "SD1.D1_FORNECE='"+aFiltro[08]+"' AND "

            EndIf

            If !Empty(aFiltro[09]) // Loja do Cliente

                cQuery += "SD1.D1_LOJA='"+aFiltro[09]+"' AND "

            EndIf

            If !Empty(aFiltro[16]) // Vendedor

                cQuery += "SF2.F2_VEND1 = '"+aFiltro[16]+"' AND "

            EndIf

            If !Empty(aFiltro[17]) // Marca

                If aFiltro[17] == "-"

                    cQuery += "VE1.VE1_CODMAR IS NULL AND "

                Else

                    cQuery += "VE1.VE1_CODMAR = '"+aFiltro[17]+"' AND "

                EndIf

            EndIf

            //

            //Este ponto de entrada deverá possibilitar a alteração da clausula 'WHERE' no levantamento das devoluções.

            if ExistBlock("OFC470FDV")

                cQuery := ExecBlock("OFC470FDV",.f.,.f., {cQuery})

            EndIf

            //

            cQuery += "SD1.D_E_L_E_T_=' ' ORDER BY "

Programa Fonte:

OFIOC470.PRW

Função:

FS_MONTAVET()

Parâmetros:
NomeTipoDescriçãoObrigatório
cQueryCaractereQuery que contém a instrução para levantamento das devoluçõesSim

Retorno:

Nome

Tipo

Descrição

Obrigatório

cQuery

Caractere

Query alterada pelo ponto de entrada que contém a instrução para levantamento das devoluções

Sim

 

Exemplo:

#Include 'Protheus.ch'

// Este ponto de entrada deverá possibilitar o cliente de realizar alterações na query do levantamento das devoluções.

User Function OFC470FDV()

cQuery := ParamIxb[01]     

MsgInfo("Ponto de entrada OFC470FDV executado com sucesso!")

Return(cQuery)