Imprimi Página | Fechar janela

Desenvolvimento Relatório

Impresso de: Helpfacil - Portal do conhecimento
Nome do Forum: ADVPL
Descrição do Forum: Dúvidas sobre a programação em ADVPL
URL:http://www.helpfacil.com.br/display_topic_threads.asp?ForumID=1&TopicID=43028
Data da Impressão: quinta-feira, 18 de abril de 2024 at 18:31


Topico: Desenvolvimento Relatório

Postado por: BLALVES
Assunto: Desenvolvimento Relatório
Data Postagem: segunda-feira, 23 de dezembro de 2019 at 20:05

Olá colegas, boa noite!

Estou iniciando no desenvolvimento ADVPL, e estou gerando um relatório que fiz baseado em outros fontes.

Estou gravando a variável: _aProcesso que é populada através da execução de uma função, já debuggei e não consigo descobrir o motivo de ao imprimir o relatório, ela vir zerada.

Segue o código completo abaixo, caso alguém possa me dar uma força pra resolver.

Feliz Natal e Boas Festas.
Obrigada;
Brunna
-----------------------------------------------------------------------------------#INCLUDE "PROTHEUS.CH"
#INCLUDE "TOPCONN.CH"
#INCLUDE "TBICONN.CH"

/*/{Protheus.doc} RELCUS01
Relatorio Personalizado Custo Importacao
@author QsdoBrasil - Brunna ALves
@since Dez/2019
@version 1.0
/*/
User Function RELCUS01()

Local aArea      := GetArea()

Private cPerg   := PadR("RELCUS01",Len (SX1->X1_GRUPO))
Private oReport := Nil
Private oSecCab:= Nil

Pergunte(cPerg,.F.)

oReport:= ReportDef(cPerg)
oReport:PrintDialog()

RestArea(aArea)

Return Nil

Static Function ReportDef(cPerg)

    oReport := TReport():New(cPerg,"Custo Importacao (EIC)",cPerg,{|oReport| pReport(oReport)},"Impressao de Livros Fiscais")
    oReport:SetLandscape(.T.)
    
    oSecCab := TRSection():New( oReport , "RELCUS01", {"QRY"} )              
    
    TRCell():New( oSecCab, "W6_TPOPER" , "QRY", ‘Tipo Operacao‘    ,PesqPict(‘SW6‘,"W6_TPOPER")    ,TamSX3("W6_TPOPER")[1],/*lPixel*/,/*{|| code-block de impressao }*/)
    TRCell():New( oSecCab, "W6_PTAX_DI" , "QRY", ‘Taxa Cambio DI‘   ,PesqPict(‘SW6‘,"W6_PTAX_DI")   ,TamSX3("W6_PTAX_DI")[1],/*lPixel*/,/*{|| code-block de impressao }*/)
    TRCell():New( oSecCab, "D1_FILIAL" , "QRY", ‘Filial‘           ,PesqPict(‘SD1‘,"D1_FILIAL")    ,TamSX3("D1_FILIAL")[1],/*lPixel*/,/*{|| code-block de impressao }*/)
    TRCell():New( oSecCab, "D1_CONHEC" , "QRY", ‘Processo    ‘     ,PesqPict(‘SD1‘,"D1_CONHEC")    ,TamSX3("D1_CONHEC")[1],/*lPixel*/,/*{|| code-block de impressao }*/)
    TRCell():New( oSecCab, "D1_DOC"     , "QRY", ‘Doc. Fiscal‘      ,PesqPict(‘SD1‘,"D1_DOC")       ,TamSX3("D1_DOC")[1],/*lPixel*/,/*{|| code-block de impressao }*/)
    TRCell():New( oSecCab, "D1_SERIE"   , "QRY", ‘Serie NF‘        ,PesqPict(‘SD1‘,"D1_SERIE")     ,TamSX3("D1_SERIE")[1],/*lPixel*/,/*{|| code-block de impressao }*/)
    TRCell():New( oSecCab, "D1_EMISSAO" , "QRY", ‘Dt. Emissao NF‘   ,PesqPict(‘SD1‘,"D1_EMISSAO")   ,TamSX3("D1_EMISSAO")[1],/*lPixel*/,/*{|| code-block de impressao }*/)
    TRCell():New( oSecCab, "D1_DTDIGIT" , "QRY", ‘Dt. Digitacao NF‘ ,PesqPict(‘SD1‘,"D1_DTDIGIT")   ,TamSX3("D1_DTDIGIT")[1],/*lPixel*/,/*{|| code-block de impressao }*/)
    TRCell():New( oSecCab, "D1_FORNECE" , "QRY", ‘Codigo Fornece‘   ,PesqPict(‘SD1‘,"D1_FORNECE")   ,TamSX3("D1_FORNECE")[1],/*lPixel*/,/*{|| code-block de impressao }*/)
    TRCell():New( oSecCab, "D1_VALICM" , "QRY", ‘Vlr. ICMS‘        ,PesqPict(‘SD1‘,"D1_VALICM")    ,TamSX3("D1_VALICM")[1],/*lPixel*/,/*{|| code-block de impressao }*/)
    TRCell():New( oSecCab, "D1_II"      , "QRY", ‘Vlr. II‘          ,PesqPict(‘SD1‘,"D1_II")        ,TamSX3("D1_II")[1],/*lPixel*/,/*{|| code-block de impressao }*/)
    TRCell():New( oSecCab, "D1_VALIPI" , "QRY", ‘Vlr. IPI‘        ,PesqPict(‘SD1‘,"D1_VALIPI")    ,TamSX3("D1_VALIPI")[1],/*lPixel*/,/*{|| code-block de impressao }*/)
    TRCell():New( oSecCab, "D1_VALIMP6" , "QRY", ‘Vlr. PIS‘        ,PesqPict(‘SD1‘,"D1_VALIMP6")   ,TamSX3("D1_VALIMP6")[1],/*lPixel*/,/*{|| code-block de impressao }*/)
    TRCell():New( oSecCab, "D1_VALIMP5" , "QRY", ‘Vlr. COF‘        ,PesqPict(‘SD1‘,"D1_VALIMP5")   ,TamSX3("D1_VALIMP5")[1],/*lPixel*/,/*{|| code-block de impressao }*/)
    TRCell():New( oSecCab, "D1_DESPESA" , "QRY", ‘Vlr. Siscomex‘    ,PesqPict(‘SD1‘,"D1_DESPESA")   ,TamSX3("D1_DESPESA")[1],/*lPixel*/,/*{|| code-block de impressao }*/)
    TRCell():New( oSecCab, "D1_OBS"     , "QRY", ‘Obs‘              ,PesqPict(‘SD1‘,"D1_OBS")       ,TamSX3("D1_OBS")[1],/*lPixel*/,/*{|| code-block de impressao }*/)
    TRCell():New( oSecCab, "W8_INVOICE" , "QRY", ‘Num. Invoice‘     ,PesqPict(‘SW8‘,"W8_INVOICE")   ,TamSX3("W8_INVOICE")[1],/*lPixel*/,/*{|| code-block de impressao }*/)
    TRCell():New( oSecCab, "W8_DT_EMIS" , "QRY", ‘Dt. Emis. Invoice‘,PesqPict(‘SW8‘,"W8_DT_EMIS")   ,TamSX3("W8_DT_EMIS")[1],/*lPixel*/,/*{|| code-block de impressao }*/)
    TRCell():New( oSecCab, "W8_COD_I"   , "QRY", ‘Cod. Produto‘     ,PesqPict(‘SW8‘,"W8_COD_I")     ,TamSX3("W8_COD_I")[1],/*lPixel*/,/*{|| code-block de impressao }*/)
    TRCell():New( oSecCab, "B1_DESC"    , "QRY", ‘Desc. Produto‘    ,PesqPict(‘SB1‘,"B1_DESC")      ,TamSX3("B1_DESC")[1],/*lPixel*/,/*{|| code-block de impressao }*/)
    TRCell():New( oSecCab, "W8_LOTEORI" , "QRY", ‘Lote Origem‘      ,PesqPict(‘SW8‘,"W8_LOTEORI") ,TamSX3("W8_LOTEORI")[1],/*lPixel*/,/*{|| code-block de impressao }*/)
    TRCell():New( oSecCab, "W8_QTDE"    , "QRY", ‘Qtde Produto‘     ,PesqPict(‘SW8‘,"W8_QTDE")      ,TamSX3("W8_QTDE")[1],/*lPixel*/,/*{|| code-block de impressao }*/)
    TRCell():New( oSecCab, "W8_PRECO_R" , "QRY", ‘Vlr. Produto R$‘ ,PesqPict(‘SW8‘,"W8_PRECO_R")   ,TamSX3("W8_PRECO_R")[1],/*lPixel*/,/*{|| code-block de impressao }*/)
    TRCell():New( oSecCab, "W8_PRECO_D" , "QRY", ‘Vlr. Produto USD‘ ,PesqPict(‘SW8‘,"W8_PRECO_D")   ,TamSX3("W8_PRECO_D")[1],/*lPixel*/,/*{|| code-block de impressao }*/)
    TRCell():New( oSecCab, "W8_FRETEIN" , "QRY", ‘Vlr. Frete R$‘    ,PesqPict(‘SW8‘,"W8_FRETEIN")   ,TamSX3("W8_FRETEIN")[1],/*lPixel*/,/*{|| code-block de impressao }*/)
    TRCell():New( oSecCab, "W8_FRETE_D" , "QRY", ‘Vlr. Frete USD‘   ,PesqPict(‘SW8‘,"W8_FRETE_D")   ,TamSX3("W8_FRETE_D")[1],/*lPixel*/,/*{|| code-block de impressao }*/)
    TRCell():New( oSecCab, "W8_SEGURO" , "QRY", ‘Vlr. Seguro‘      ,PesqPict(‘SW8‘,"W8_SEGURO")    ,TamSX3("W8_SEGURO")[1],/*lPixel*/,/*{|| code-block de impressao }*/)
    TRCell():New( oSecCab, "W2_INCOTER" , "QRY", ‘Incoterm‘        ,PesqPict(‘SW2‘,"W2_INCOTER")   ,TamSX3("W2_INCOTER")[1],/*lPixel*/,/*{|| code-block de impressao }*/)
    TRCell():New( oSecCab, "YQ_DESCR"   , "QRY", ‘Tipo de Envio‘    ,PesqPict(‘SYQ‘,"YQ_DESCR")     ,TamSX3("YQ_DESCR")[1],/*lPixel*/,/*{|| code-block de impressao }*/)
    TRCell():New( oSecCab, "VL_DESPESA" , " ", ‘Vlr. Despesas‘      ,PesqPict(‘SWD‘,"WD_VALOR_R")   ,TamSX3("WD_VALOR_R")[1],/*lPixel*/,/*{|| code-block de impressao }*/)
    //TRCell():New( oSecCab, "WD_VALOR_R" , "QRY", ‘Vlr. Servico Clac‘,PesqPict(‘SWD‘,"WD_VALOR_R")   ,TamSX3("WD_VALOR_R")[1],/*lPixel*/,/*{|| code-block de impressao }*/)
    
    
    Return oReport

Static Function RcpItensNF(cProcesso, cDoc, cSerie)
       //
       Local cQuery2 := " "
       Local _cTotal := " "
       //
       
      cQuery2 := "SELECT DISTINCT (G.WD_VALOR_R / MAX(A.D1_ITEM))AS VLR_DESPESAS"+CRLF
      cQuery2 += "FROM "+RetSqlName(‘SD1‘)+" A (NOLOCK), "+RetSqlName(‘SWD‘)+" G (NOLOCK)" +CRLF
      //cQuery2 += "WHERE A.D1_CONHEC = ‘IMP 362/19‘"+CRLF
      cQuery2 += "WHERE D1_CONHEC = ‘"+cProcesso+"‘ " + CRLF   
      cQuery2 += "AND D1_DOC = ‘"+cDoc+"‘ " + CRLF
      cQuery2 += "AND D1_SERIE = ‘"+cSerie+"‘ " + CRLF
      cQuery2 += "AND A.D_E_L_E_T_ <> ‘*‘ "+CRLF
      cQuery2 += "AND A.D1_FILIAL = G.WD_FILIAL "+CRLF
      cQuery2 += "AND A.D1_CONHEC = G.WD_HAWB "+CRLF
      cQuery2 += "AND G.WD_DESPESA IN (‘411‘)"+CRLF
      cQuery2 += "AND A.D1_TIPO = ‘N‘"+CRLF
      cQuery2 += "AND G.D_E_L_E_T_ <> ‘*‘"+CRLF
      cQuery2 += "GROUP BY G.WD_VALOR_R"

      if Select("TRB") > 0
           TRB->( dbCloseArea() )
       endif
       //
       cQuery2 := ChangeQuery(cQuery2)
       dbUseArea(.T.,"TOPCONN",TcGenQry(,,cQuery2),"TRB",.T.,.T.)
       //aTam := TamSx3("WD_VALOR_R")
       //TCSetField( "TRB", "VLR_DESPESAS", "N", aTam[1], aTam[2] )
       //
       dbselectarea("TRB")
       //
       TRB->( dbGoTop() )
       If !TRB->( eof() )
          _cTotal := TRB->VLR_DESPESAS
       Endif
       //
       if Select("TRB") > 0
           TRB->( dbCloseArea() )
       endif
       //

Return {_cTotal}


Static Function pReport(oReport)

    Local cQuery     := ""
    Local oSection1 := oReport:Section(1)    
       
    
    Local _aProcesso := " "
    Pergunte(cPerg,.F.)
    oSection1:Init()
    oSection1:SetHeaderSection(.T.)


//Query
cQuery := "SELECT DISTINCT W6_TPOPER, W6_PTAX_DI,D1_FILIAL, D1_CONHEC, D1_DOC, D1_SERIE, D1_EMISSAO, D1_DTDIGIT, D1_FORNECE, "+CRLF
cQuery += "D1_VALICM,D1_II, D1_VALIPI, D1_VALIMP6,D1_DTDIGIT, D1_FORNECE, D1_VALICM, D1_II, D1_VALIPI, "+CRLF
cQuery += "D1_VALIMP6,D1_VALIMP5,D1_DESPESA, D1_OBS, W8_INVOICE, W8_DT_EMIS, W8_COD_I, B1_DESC, "+CRLF
cQuery += "W8_LOTEORI, W8_QTDE, W8_PRECO_R,W8_PRECO_D, W8_FRETEIN, W8_FRETE_D, W8_SEGURO,"+CRLF
cQuery += "W2_INCOTER, YQ_DESCR"+CRLF
cQuery += "FROM "+RetSqlName(‘SD1‘)+" A (NOLOCK), "+RetSqlName(‘SW8‘)+" B (NOLOCK)," +CRLF
cQuery += +RetSqlName(‘SB1‘)+" C (NOLOCK), "+RetSqlName(‘SW2‘)+" D (NOLOCK)," +CRLF
cQuery += +RetSqlName(‘SYQ‘)+" E (NOLOCK), "+RetSqlName(‘SW6‘)+" F (NOLOCK)" +CRLF
cQuery += "WHERE D1_DTDIGIT BETWEEN ‘"+DtoS(MV_PAR01)+"‘ AND ‘"+DtoS(MV_PAR02)+"‘ "+CRLF
cQuery += "AND A.D_E_L_E_T_ <> ‘*‘ "+CRLF
cQuery += "AND A.D1_CONHEC <> ‘ ‘ "+CRLF
cQuery += "AND A.D1_CONHEC = B.W8_HAWB "+CRLF
cQuery += "AND A.D1_FILIAL = B.W8_FILIAL "+CRLF
cQuery += "AND A.D1_COD    = B.W8_COD_I "+CRLF
cQuery += "AND A.D1_QUANT = B.W8_QTDE "+CRLF
cQuery += "AND B.D_E_L_E_T_ <> ‘*‘ "+CRLF
cQuery += "AND B.W8_COD_I = C.B1_COD "+CRLF
cQuery += "AND C.D_E_L_E_T_ <> ‘*‘ "+CRLF
cQuery += "AND D.W2_PO_NUM = A.D1_CONHEC "+CRLF
cQuery += "AND D.W2_FILIAL = A.D1_FILIAL "+CRLF
cQuery += "AND D.D_E_L_E_T_ <> ‘*‘ "+CRLF
cQuery += "AND D.W2_TIPO_EM = E.YQ_VIA"+CRLF
cQuery += "AND D.W2_FILIAL = E.YQ_FILIAL"+CRLF
cQuery += "AND E.D_E_L_E_T_ <> ‘*‘ "+CRLF
cQuery += "AND A.D1_TIPO = ‘N‘"+CRLF
cQuery += "AND A.D1_CONHEC = F.W6_HAWB "+CRLF
cQuery += "AND A.D1_FILIAL = F.W6_FILIAL"+CRLF
cQuery += "AND F.D_E_L_E_T_ <> ‘*‘ "+CRLF
cQuery += "AND A.D1_CONHEC = ‘IMP 366/19‘"+CRLF
cQuery += "ORDER BY D1_EMISSAO, D1_DOC, D1_SERIE"

If Select("QRY") > 0
     Dbselectarea("QRY")
     QRY->(DbClosearea())
EndIf

TcQuery cQuery New Alias "QRY"

dbSelectArea("QRY")
QRY->(dbGoTop())
oReport:SetMeter(QRY->(RecCount()))     

Alert("Vlr. Despesas3: " + cValToChar(_aProcesso))


While QRY->(!Eof())

_aProcesso := RcpItensNF(QRY->D1_CONHEC ,QRY->D1_DOC, QRY->D1_SERIE) // ùltima Compra


     If oReport:Cancel()
          Exit
     EndIf       
     
     
    oReport:IncMeter()
    oSection1:Cell("W6_TPOPER"):SetValue(QRY->W6_TPOPER)
    oSection1:Cell("W6_PTAX_DI"):SetValue(QRY->W6_PTAX_DI)
    oSection1:Cell("D1_FILIAL"):SetValue(QRY->D1_FILIAL)
    oSection1:Cell("D1_CONHEC"):SetValue(QRY->D1_CONHEC)
    oSection1:Cell("D1_DOC"):SetValue(QRY->D1_DOC)
    oSection1:Cell("D1_SERIE"):SetValue(QRY->D1_SERIE)
    oSection1:Cell("D1_EMISSAO"):SetValue(QRY->D1_EMISSAO)
    oSection1:Cell("D1_DTDIGIT"):SetValue(QRY->D1_DTDIGIT)
    oSection1:Cell("D1_DTDIGIT"):SetValue(QRY->D1_DTDIGIT)
    oSection1:Cell("D1_VALICM"):SetValue(QRY->D1_VALICM)
    oSection1:Cell("D1_II"):SetValue(QRY->D1_II)
    oSection1:Cell("D1_VALIPI"):SetValue(QRY->D1_VALIPI)
    oSection1:Cell("D1_VALIMP6"):SetValue(QRY->D1_VALIMP6)
    oSection1:Cell("D1_VALIMP5"):SetValue(QRY->D1_VALIMP5)
    oSection1:Cell("D1_DESPESA"):SetValue(QRY->D1_DESPESA)
    oSection1:Cell("D1_OBS"):SetValue(QRY->D1_OBS)
    oSection1:Cell("W8_INVOICE"):SetValue(QRY->W8_INVOICE)
    oSection1:Cell("W8_DT_EMIS"):SetValue(QRY->W8_DT_EMIS)
    oSection1:Cell("W8_COD_I"):SetValue(QRY->W8_COD_I)
    oSection1:Cell("B1_DESC"):SetValue(QRY->B1_DESC)
    oSection1:Cell("W8_LOTEORI"):SetValue(QRY->W8_LOTEORI)
    oSection1:Cell("W8_QTDE"):SetValue(QRY->W8_QTDE)
    oSection1:Cell("W8_PRECO_R"):SetValue(QRY->W8_PRECO_R)
    oSection1:Cell("W8_PRECO_D"):SetValue(QRY->W8_PRECO_D)
    oSection1:Cell("W8_FRETEIN"):SetValue(QRY->W8_FRETEIN)
    oSection1:Cell("W8_FRETE_D"):SetValue(QRY->W8_FRETE_D)
    oSection1:Cell("W8_SEGURO"):SetValue(QRY->W8_SEGURO)
    oSection1:Cell("W2_INCOTER"):SetValue(QRY->W2_INCOTER)
    oSection1:Cell("YQ_DESCR"):SetValue(QRY->YQ_DESCR)
    oSection1:Cell("VL_DESPESA"):SetValue(_aProcesso)

     oSection1:PrintLine()
     QRY->(dbSkip())

End            
             
oSection1:Finish()

Return Nil

User Function VLDFT01()

Local lRet := .t.
Local cVar := ReadVar()
Local xCont := &(cVar)

If cVar == "MV_PAR01"
    If Empty(xCont)
        lRet:= .f.
        Alert("Preencha a Data de Inicio")
    ENDIF
EndIf

If cVar == "MV_PAR02"
    If Empty(xCont)
        lRet := .f.
        Alert("Preencha a Data Final")
    Elseif Substr(dToS(xCont),1,6) != SubStr(dToS(MV_PAR01),1,6)
        lRet := .f.
        Alert("Favor Utilizar Data Final no mesmo Mês e Ano da Data Inicial")
    Elseif xCont < MV_PAR01
        lRet := .f.
        Alert("Data Final deve ser maior que Data Inicial")
    Endif
EndIf

Return(lret)





Respostas:

Postado Por: MNGT
Data Postagem: terça-feira, 24 de dezembro de 2019 at 19:28

Brunna

Vou tentar ajudar na análise, porém não li minuciosamente. Portanto, estou realizando um pré-análise. Pelo que vi vc não esta utilizando a função Pergunte() vc esta definindo as variáveis na query.
Primeiro, as query estão trazendo registros ? tente utilizar a função Memowrite() para as query e valide no próprio MSSQL se elas estão trazendo registros. Esse pode ser um dos motivos para estar trazendo o resultado reportado.
Aplique o DbGoTop() depois do Reccount()
Não utilize o Changequery(). O NOLOCK é eliminado com esta função. Verifique esta minha afirmação com a utilização do Memowrite().
O retorno da RcpItensNF() é uma variável numérica e vc esta armazenando numa variável matriz. Somente comece nesta área de programação de forma coesa para criar uma linha de metodologia e normatização correta. Ajuda na sua linha de raciocínio. desenvolvimento e aprendizado mais fácil. Vc cria coerência nas suas decisões.
Como lhe informei foi superficial minha análise, 2 minutinhos. Aparentemente, parece o vilão o RecCount(), porém muito pouco tenho para afirmar. Além do que um bom programador precisa realizar exaustivamente "teste de mesa" para entender como analisar e onde esta a causa do mau resultado da rotina. Querendo ou não o que seu cliente deseja é o resultado solicitado.
Perdi mais tempo escrevendo do que analisando. Boa Análise, Boas festas e um Feliz Natal.

Att,

mngt



Postado Por: EMERSON.EN
Data Postagem: quinta-feira, 26 de dezembro de 2019 at 11:50

avalie tudo o que o MNGT apontou.

segue uma versão do teu relatório:
#INCLUDE "PROTHEUS.CH"
#INCLUDE "TOPCONN.CH"
#INCLUDE "TBICONN.CH"

/*/{Protheus.doc} RELCUS01
Relatorio Personalizado Custo Importacao
@author QsdoBrasil - Brunna ALves
@since Dez/2019
@version 1.0
/*/
User Function RELCUS01()
Local aArea     := GetArea()

Private cPerg     := PadR("RELCUS01",Len (SX1->X1_GRUPO))
Private oReport     := Nil
Private oSecCab     := Nil

     Pergunte(cPerg,.F.)

     oReport := TReport():New(cPerg,"Custo Importacao (EIC)",cPerg,{|oReport| pReport(oReport)},"Impressao de Livros Fiscais")
     oReport:SetLandscape()
     oReport:PrintDialog()

     RestArea(aArea)

Return Nil



Static Function ReportDef( oReport )
     oSecCab := TRSection():New( oReport, "RELCUS01", {"QRY"} )
    
     TRCell():New( oSecCab, "W6_TPOPER"     , "QRY", ‘Tipo Operacao‘     , PesqPict(‘SW6‘,"W6_TPOPER")     , TamSX3("W6_TPOPER")[1]     , /*lPixel*/, /*{|| code-block de impressao }*/)
     TRCell():New( oSecCab, "W6_PTAX_DI"     , "QRY", ‘Taxa Cambio DI‘     , PesqPict(‘SW6‘,"W6_PTAX_DI")     , TamSX3("W6_PTAX_DI")[1]     , /*lPixel*/, /*{|| code-block de impressao }*/)
     TRCell():New( oSecCab, "D1_FILIAL"     , "QRY", ‘Filial‘          , PesqPict(‘SD1‘,"D1_FILIAL")     , TamSX3("D1_FILIAL")[1]     , /*lPixel*/, /*{|| code-block de impressao }*/)
     TRCell():New( oSecCab, "D1_CONHEC"     , "QRY", ‘Processo‘          , PesqPict(‘SD1‘,"D1_CONHEC")     , TamSX3("D1_CONHEC")[1]     , /*lPixel*/, /*{|| code-block de impressao }*/)
     TRCell():New( oSecCab, "D1_DOC"          , "QRY", ‘Doc. Fiscal‘          , PesqPict(‘SD1‘,"D1_DOC")     , TamSX3("D1_DOC")[1]          , /*lPixel*/, /*{|| code-block de impressao }*/)
     TRCell():New( oSecCab, "D1_SERIE"     , "QRY", ‘Serie NF‘          , PesqPict(‘SD1‘,"D1_SERIE")     , TamSX3("D1_SERIE")[1]          , /*lPixel*/, /*{|| code-block de impressao }*/)
     TRCell():New( oSecCab, "D1_EMISSAO"     , "QRY", ‘Dt. Emissao NF‘     , PesqPict(‘SD1‘,"D1_EMISSAO")     , TamSX3("D1_EMISSAO")[1]     , /*lPixel*/, /*{|| code-block de impressao }*/)
     TRCell():New( oSecCab, "D1_DTDIGIT"     , "QRY", ‘Dt. Digitacao NF‘     , PesqPict(‘SD1‘,"D1_DTDIGIT")     , TamSX3("D1_DTDIGIT")[1]     , /*lPixel*/, /*{|| code-block de impressao }*/)
     TRCell():New( oSecCab, "D1_FORNECE"     , "QRY", ‘Codigo Fornece‘     , PesqPict(‘SD1‘,"D1_FORNECE")     , TamSX3("D1_FORNECE")[1]     , /*lPixel*/, /*{|| code-block de impressao }*/)
     TRCell():New( oSecCab, "D1_VALICM"     , "QRY", ‘Vlr. ICMS‘          , PesqPict(‘SD1‘,"D1_VALICM")     , TamSX3("D1_VALICM")[1]     , /*lPixel*/, /*{|| code-block de impressao }*/)
     TRCell():New( oSecCab, "D1_II"          , "QRY", ‘Vlr. II‘          , PesqPict(‘SD1‘,"D1_II")     , TamSX3("D1_II")[1]          , /*lPixel*/, /*{|| code-block de impressao }*/)
     TRCell():New( oSecCab, "D1_VALIPI"     , "QRY", ‘Vlr. IPI‘          , PesqPict(‘SD1‘,"D1_VALIPI")     , TamSX3("D1_VALIPI")[1]     , /*lPixel*/, /*{|| code-block de impressao }*/)
     TRCell():New( oSecCab, "D1_VALIMP6"     , "QRY", ‘Vlr. PIS‘          , PesqPict(‘SD1‘,"D1_VALIMP6")     , TamSX3("D1_VALIMP6")[1]     , /*lPixel*/, /*{|| code-block de impressao }*/)
     TRCell():New( oSecCab, "D1_VALIMP5"     , "QRY", ‘Vlr. COF‘          , PesqPict(‘SD1‘,"D1_VALIMP5")     , TamSX3("D1_VALIMP5")[1]     , /*lPixel*/, /*{|| code-block de impressao }*/)
     TRCell():New( oSecCab, "D1_DESPESA"     , "QRY", ‘Vlr. Siscomex‘     , PesqPict(‘SD1‘,"D1_DESPESA")     , TamSX3("D1_DESPESA")[1]     , /*lPixel*/, /*{|| code-block de impressao }*/)
     TRCell():New( oSecCab, "D1_OBS"          , "QRY", ‘Obs‘               , PesqPict(‘SD1‘,"D1_OBS")     , TamSX3("D1_OBS")[1]          , /*lPixel*/, /*{|| code-block de impressao }*/)
     TRCell():New( oSecCab, "W8_INVOICE"     , "QRY", ‘Num. Invoice‘          , PesqPict(‘SW8‘,"W8_INVOICE")     , TamSX3("W8_INVOICE")[1]     , /*lPixel*/, /*{|| code-block de impressao }*/)
     TRCell():New( oSecCab, "W8_DT_EMIS"     , "QRY", ‘Dt. Emis. Invoice‘     , PesqPict(‘SW8‘,"W8_DT_EMIS")     , TamSX3("W8_DT_EMIS")[1]     , /*lPixel*/, /*{|| code-block de impressao }*/)
     TRCell():New( oSecCab, "W8_COD_I"     , "QRY", ‘Cod. Produto‘          , PesqPict(‘SW8‘,"W8_COD_I")     , TamSX3("W8_COD_I")[1]          , /*lPixel*/, /*{|| code-block de impressao }*/)
     TRCell():New( oSecCab, "B1_DESC"     , "QRY", ‘Desc. Produto‘     , PesqPict(‘SB1‘,"B1_DESC")     , TamSX3("B1_DESC")[1]          , /*lPixel*/, /*{|| code-block de impressao }*/)
     TRCell():New( oSecCab, "W8_LOTEORI"     , "QRY", ‘Lote Origem‘          , PesqPict(‘SW8‘,"W8_LOTEORI")     , TamSX3("W8_LOTEORI")[1]     , /*lPixel*/, /*{|| code-block de impressao }*/)
     TRCell():New( oSecCab, "W8_QTDE"     , "QRY", ‘Qtde Produto‘          , PesqPict(‘SW8‘,"W8_QTDE")     , TamSX3("W8_QTDE")[1]          , /*lPixel*/, /*{|| code-block de impressao }*/)
     TRCell():New( oSecCab, "W8_PRECO_R"     , "QRY", ‘Vlr. Produto R$‘     , PesqPict(‘SW8‘,"W8_PRECO_R")     , TamSX3("W8_PRECO_R")[1]     , /*lPixel*/, /*{|| code-block de impressao }*/)
     TRCell():New( oSecCab, "W8_PRECO_D"     , "QRY", ‘Vlr. Produto USD‘     , PesqPict(‘SW8‘,"W8_PRECO_D")     , TamSX3("W8_PRECO_D")[1]     , /*lPixel*/, /*{|| code-block de impressao }*/)
     TRCell():New( oSecCab, "W8_FRETEIN"     , "QRY", ‘Vlr. Frete R$‘     , PesqPict(‘SW8‘,"W8_FRETEIN")     , TamSX3("W8_FRETEIN")[1]     , /*lPixel*/, /*{|| code-block de impressao }*/)
     TRCell():New( oSecCab, "W8_FRETE_D"     , "QRY", ‘Vlr. Frete USD‘     , PesqPict(‘SW8‘,"W8_FRETE_D")     , TamSX3("W8_FRETE_D")[1]     , /*lPixel*/, /*{|| code-block de impressao }*/)
     TRCell():New( oSecCab, "W8_SEGURO"     , "QRY", ‘Vlr. Seguro‘          , PesqPict(‘SW8‘,"W8_SEGURO")     , TamSX3("W8_SEGURO")[1]     , /*lPixel*/, /*{|| code-block de impressao }*/)
     TRCell():New( oSecCab, "W2_INCOTER"     , "QRY", ‘Incoterm‘          , PesqPict(‘SW2‘,"W2_INCOTER")     , TamSX3("W2_INCOTER")[1]     , /*lPixel*/, /*{|| code-block de impressao }*/)
     TRCell():New( oSecCab, "YQ_DESCR"     , "QRY", ‘Tipo de Envio‘     , PesqPict(‘SYQ‘,"YQ_DESCR")     , TamSX3("YQ_DESCR")[1]          , /*lPixel*/, /*{|| code-block de impressao }*/)
     TRCell():New( oSecCab, "VL_DESPESA"     , "   ", ‘Vlr. Despesas‘     , PesqPict(‘SWD‘,"WD_VALOR_R")     , TamSX3("WD_VALOR_R")[1]     , /*lPixel*/, /*{|| code-block de impressao }*/)
//     TRCell():New( oSecCab, "WD_VALOR_R"     , "QRY", ‘Vlr. Servico Clac‘     , PesqPict(‘SWD‘,"WD_VALOR_R")     , TamSX3("WD_VALOR_R")[1]     , /*lPixel*/, /*{|| code-block de impressao }*/)

Return oReport


Static Function RcpItensNF(cProcesso, cDoc, cSerie)
//
Local cQuery2
Local _nTotal     := 0
//
     // D1_ITEM é caracter; não tem como dividir
     cQuery2 := "SELECT COALESCE(SUM(WD.WD_VALOR_R),0) AS VLR_DESPESAS "+CRLF
     cQuery2 += "FROM "+RetSqlName(‘SD1‘)+" D1 (NOLOCK) "+CRLF
     cQuery2 += "INNER JOIN "+RetSqlName(‘SWD‘)+" WD (NOLOCK) ON WD.D_E_L_E_T_ = ‘‘ AND WD.WD_FILIAL = ‘"+xFilial("SWD")+"‘ "+CRLF
     cQuery2 += " AND WD.WD_HAWB = D1.D1_CONHEC "+CRLF
     cQuery2 += " AND WD.WD_DESPESA IN (‘411‘) "+CRLF
     cQuery2 += "WHERE D1.D_E_L_E_T_ = ‘‘ AND D1.D1_FILIAL = ‘"+xFilial("SD1")+"‘ "+CRLF
     cQuery2 += " AND D1.D1_CONHEC = ‘"+cProcesso+"‘ "+CRLF
     cQuery2 += " AND D1.D1_DOC = ‘"+cDoc+"‘ "+CRLF
     cQuery2 += " AND D1.D1_SERIE = ‘"+cSerie+"‘ "+CRLF
     cQuery2 += " AND D1.D1_TIPO = ‘N‘ "+CRLF

     if Select("TRB") > 0
          TRB->( dbCloseArea() )
     endif
     dbUseArea(.T.,"TOPCONN",TcGenQry(,,cQuery2),"TRB",.T.,.T.)
     _nTotal := TRB->VLR_DESPESAS
     TRB->( dbCloseArea() )
Return _nTotal


Static Function pReport(oReport)
Local oSection1
Local cQuery     := ""
Local _aProcesso:= {}

     Pergunte(cPerg,.F.)

     //Query
     cQuery := "SELECT DISTINCT W6_TPOPER, W6_PTAX_DI,D1_FILIAL, D1_CONHEC, D1_DOC, D1_SERIE, D1_EMISSAO, D1_DTDIGIT, D1_FORNECE, "+CRLF
     cQuery += " D1_VALICM,D1_II, D1_VALIPI, D1_VALIMP6,D1_DTDIGIT, D1_FORNECE, D1_VALICM, D1_II, D1_VALIPI, "+CRLF
     cQuery += " D1_VALIMP6,D1_VALIMP5,D1_DESPESA, D1_OBS, W8_INVOICE, W8_DT_EMIS, W8_COD_I, B1_DESC, "+CRLF
     cQuery += " W8_LOTEORI, W8_QTDE, W8_PRECO_R,W8_PRECO_D, W8_FRETEIN, W8_FRETE_D, W8_SEGURO, "+CRLF
     cQuery += " W2_INCOTER, YQ_DESCR "+CRLF
     cQuery += "FROM "+RetSqlName(‘SD1‘)+" D1 (NOLOCK) "+CRLF
     cQuery += "INNER JOIN "+RetSqlName(‘SW8‘)+" W8 (NOLOCK) ON W8.D_E_L_E_T_ = ‘‘ AND W8.W8_FILIAL = ‘"+xFilial("SW8")+"‘ "+CRLF
     cQuery += " AND W8.W8_HAWB = D1.D1_CONHEC "+CRLF
     cQuery += " AND W8.W8_COD_I = D1.D1_COD "+CRLF
     cQuery += " AND W8.W8_QTDE = D1.D1_QUANT "+CRLF
     cQuery += "INNER JOIN "+RetSqlName(‘SB1‘)+" B1 (NOLOCK) ON B1.D_E_L_E_T_ = ‘‘ AND B1.B1_FILIAL = ‘"+xFilial("SB1")+"‘ "+CRLF
     cQuery += " AND B1.B1_COD = W8.W8_COD_I "+CRLF
     cQuery += "INNER JOIN "+RetSqlName(‘SW2‘)+" W2 (NOLOCK) ON W2.D_E_L_E_T_ = ‘‘ AND W2.W2_FILIAL = ‘"+xFilial("SW2")+"‘ "+CRLF
     cQuery += " AND W2.W2_PO_NUM = D1.D1_CONHEC "+CRLF
     cQuery += "INNER JOIN "+RetSqlName(‘SYQ‘)+" YQ (NOLOCK) ON YQ.D_E_L_E_T_ = ‘‘ AND YQ.YQ_FILIAL = ‘"+xFilial("SYQ")+"‘ "+CRLF
     cQuery += " AND YQ.YQ_VIA = W2.W2_TIPO_EM "+CRLF
     cQuery += "INNER JOIN "+RetSqlName(‘SW6‘)+" W6 (NOLOCK) ON W6.D_E_L_E_T_ = ‘‘ AND W6.W6_FILIAL = ‘"+xFilial("SW6")+"‘ "+CRLF
     cQuery += " AND W6.W6_HAWB = D1.D1_CONHEC "+CRLF
     cQuery += "WHERE D1.D_E_L_E_T_ = ‘‘ AND D1.D1_FILIAL = ‘"+xFilial("SD1")+"‘ "+CRLF
     cQuery += " AND D1.D1_DTDIGIT BETWEEN ‘"+DtoS(MV_PAR01)+"‘ AND ‘"+DtoS(MV_PAR02)+"‘ "+CRLF
     cQuery += " AND D1.D1_CONHEC <> ‘ ‘ "+CRLF
     cQuery += " AND D1.D1_TIPO = ‘N‘ "+CRLF
     cQuery += " AND D1.D1_CONHEC = ‘IMP 366/19‘ "+CRLF // VALOR CHUMBADO ?????
     cQuery += "ORDER BY D1.D1_EMISSAO, D1.D1_DOC, D1.D1_SERIE "+CRLF

     If Select("QRY") > 0
          QRY->(DbClosearea())
     EndIf

     TcQuery cQuery New Alias "QRY"

     QRY->(dbGoTop())
     oReport:SetMeter(QRY->(RecCount()))     

     ReportDef()

     oSection1 := oReport:Section(1)

     oSection1:Init()
     oSection1:SetHeaderSection()

     While QRY->(!EOF())

          _aProcesso := RcpItensNF(QRY->D1_CONHEC, QRY->D1_DOC, QRY->D1_SERIE) // última compra
          Alert("Vlr. Despesas3: " + cValToChar(_aProcesso))

          If oReport:Cancel()
               Exit
          EndIf       

          oReport:IncMeter()
          oSection1:Cell("W6_TPOPER"):SetValue(QRY->W6_TPOPER)
          oSection1:Cell("W6_PTAX_DI"):SetValue(QRY->W6_PTAX_DI)
          oSection1:Cell("D1_FILIAL"):SetValue(QRY->D1_FILIAL)
          oSection1:Cell("D1_CONHEC"):SetValue(QRY->D1_CONHEC)
          oSection1:Cell("D1_DOC"):SetValue(QRY->D1_DOC)
          oSection1:Cell("D1_SERIE"):SetValue(QRY->D1_SERIE)
          oSection1:Cell("D1_EMISSAO"):SetValue(QRY->D1_EMISSAO)
          oSection1:Cell("D1_DTDIGIT"):SetValue(QRY->D1_DTDIGIT)
          oSection1:Cell("D1_DTDIGIT"):SetValue(QRY->D1_DTDIGIT)
          oSection1:Cell("D1_VALICM"):SetValue(QRY->D1_VALICM)
          oSection1:Cell("D1_II"):SetValue(QRY->D1_II)
          oSection1:Cell("D1_VALIPI"):SetValue(QRY->D1_VALIPI)
          oSection1:Cell("D1_VALIMP6"):SetValue(QRY->D1_VALIMP6)
          oSection1:Cell("D1_VALIMP5"):SetValue(QRY->D1_VALIMP5)
          oSection1:Cell("D1_DESPESA"):SetValue(QRY->D1_DESPESA)
          oSection1:Cell("D1_OBS"):SetValue(QRY->D1_OBS)
          oSection1:Cell("W8_INVOICE"):SetValue(QRY->W8_INVOICE)
          oSection1:Cell("W8_DT_EMIS"):SetValue(QRY->W8_DT_EMIS)
          oSection1:Cell("W8_COD_I"):SetValue(QRY->W8_COD_I)
          oSection1:Cell("B1_DESC"):SetValue(QRY->B1_DESC)
          oSection1:Cell("W8_LOTEORI"):SetValue(QRY->W8_LOTEORI)
          oSection1:Cell("W8_QTDE"):SetValue(QRY->W8_QTDE)
          oSection1:Cell("W8_PRECO_R"):SetValue(QRY->W8_PRECO_R)
          oSection1:Cell("W8_PRECO_D"):SetValue(QRY->W8_PRECO_D)
          oSection1:Cell("W8_FRETEIN"):SetValue(QRY->W8_FRETEIN)
          oSection1:Cell("W8_FRETE_D"):SetValue(QRY->W8_FRETE_D)
          oSection1:Cell("W8_SEGURO"):SetValue(QRY->W8_SEGURO)
          oSection1:Cell("W2_INCOTER"):SetValue(QRY->W2_INCOTER)
          oSection1:Cell("YQ_DESCR"):SetValue(QRY->YQ_DESCR)
          oSection1:Cell("VL_DESPESA"):SetValue(_aProcesso)

          oSection1:PrintLine()
          QRY->(dbSkip())

     End            
             
     oSection1:Finish()

Return Nil


User Function VLDFT01()
Local lRet := .t.
Local cVar := ReadVar()
Local xCont := &(cVar)

     If cVar == "MV_PAR01"
          If Empty(xCont)
               lRet:= .f.
               Alert("Preencha a Data de Inicio")
          ENDIF
     ElseIf cVar == "MV_PAR02"
          If Empty(xCont)
               lRet := .f.
               Alert("Preencha a Data Final")
          Elseif Substr(dToS(xCont),1,6) != SubStr(dToS(MV_PAR01),1,6)
               lRet := .f.
               Alert("Favor Utilizar Data Final no mesmo Mês e Ano da Data Inicial")
          Elseif xCont < MV_PAR01
               lRet := .f.
               Alert("Data Final deve ser maior que Data Inicial")
          Endif
     EndIf

Return(lret)





Imprimir Página | Fechar Janela