Histórico da Página
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: |
| ||||||||
Retorno: |
|
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
CN120ALTOFC470FDV()
Local aCabcQuery :=
PARAMIXBParamIxb[
101]
Local cTipo:= PARAMIXB[2]
If cTipo == '1'
aCab[4][2]:= 'NF' //Validações do usuário
EndIf
Return aCab
MsgInfo("Ponto de entrada OFC470FDV executado com sucesso!")
Return(cQuery)