|
Bem Vindo, Visitante
|
Todos os Fórums
ADVPL
|
Imprimir
Enviar Para um Amigo Precisa estar Logado
|
|
|
Assunto: |
Desenvolvimento Relatório |
|
Versão: |
12.1.17 |
|
Plataforma: |
Microsoft |
Complemento: |
|
|
DB: |
SQL Server |
Complemento: |
|
|
|
|
|
Mensagem do
BLALVES
em 23/12/2019, 20:05 h
Local: SP Registro: 03/10/2017 Postagens: 2 |
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)
|
|
|
Mensagem do
MNGT
em 24/12/2019, 19:28 h
Local: SP Registro: 20/11/2018 Postagens: 2 |
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 |
|
|
Mensagem do
EMERSON.EN
em 26/12/2019, 11:50 h
Local: SP Registro: 20/08/2010 Postagens: 670 |
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)
|
|
Para postar no Fórum você precisa efetuar o seu login ou se registrar
|
|