Duvida de como alinhar um valor sql a esquerda da coluna

Não estou conseguindo alinhar uma coluna com valor do banco de dados (float) a esquerda, campo B1_XRKPROD

include 'protheus.ch'

include 'parmtype.ch'

INCLUDE "TOPCONN.CH"

INCLUDE "FWPrintSetup.ch"

INCLUDE "TBICONN.CH"

INCLUDE "COLORS.CH"

INCLUDE "RPTDEF.CH"

//CRIADA POR PEDRO SOUZA //TELA PARA SUGERIR PRODUTOS E QUANTIDADE A SER COMPRADA DAS MARCAS SELECIONADAS //A PARTIR DO ESTOQUE EM DIAS

User Function SUGESDOM() //inicializa a tela

Local cAias := "ZZ3"

PRIVATE aRotina := MenuZZ3()

DbSelectArea("ZZ3") DbSetOrder(1)

mBrowse(06, 01, 22, 75, cAias,,,,,,,,,,,,,,)

Return()

Static Function MenuZZ3() //função para criação do a Rotina (menu)

Private aRotina := {{OemToAnsi("Incluir"), "U_INCZZ3", 0, 3},; {OemToAnsi("Visualizar") , "U_VisualZZ3" , 0, 2},; {OemToAnsi("Alterar") , "U_AlterZZ3" , 0, 4},; {OemToAnsi("Excluir") , "U_DelZZ3" , 0, 5},; {OemToAnsi("Efetivar") , "U_Efetsug(M->ZZ3_COD)" , 0, 4}}

Return(aRotina)

User Function VisualZZ3(cAlias, nReg, nOpc) //função para alteração do registro posicionado

Local cSql := "" Local nOpcG := GD_INSERT + GD_UPDATE + GD_DELETE Local nOpcA := 0 Local aSize := {}, aObjects := {}, aInfo := {}, aPObjs := {} Local aArea := GetArea() //CAMPOS QUE PODERAM SER EDITADOS Local aCpoMostra := {} Local cMarca := "" Local cEst := "" Local nDias := 0 Local nQtdSug := 0 Local nVlTotal := 0 local nUltcom := 0 local nCount := 0 local nFor local aACampos := {'ZZ4_VLUNIT','ZZ4_QTDINF', 'ZZ3TINF'} Local aButtons := {} Private oZZ3, oZZ4 Private aHeader := {}, aCols := {}, nUSD2 := 0 //Private cPerg := Padr("SUGDOMA",Len(SX1->X1_GRUPO)) Private aTela := {}, aGets := {}

RegToMemory("ZZ3", .T.)

//CRIA CABEÇALHO GerHead()

cSql := " select " cSql += " ZZ4PROD, " cSql += " ZZ4_DESCP, " cSql += " B1_XRKPROD " cSql += " ZZ4_ESTDIS, " cSql += " ZZ4_MEDDIA," cSql += " ZZ4_ESTDIA, " cSql += " ZZ4_EMBA," cSql += " ZZ4_QTDSUG," cSql += " ZZ4_VLTOTA, " cSql += " ZZ4_QTDINF," cSql += " ZZ4_VLINFO," cSql += " ZZ4_VLUNIT," cSql += " ZZ4_QTDCOM," cSql += " ZZ4_CURVAD," cSql += " ZZ4_CURVAM," cSql += " ZZ4_ESTDF," cSql += " ZZ4_UNICOM" cSql += " FROM ZZ4010" cSql += " INNER JOIN SB1010" cSql += " ON B1_COD = ZZ4_PROD" cSql += " where ZZ4_COD = '" + ZZ3->ZZ3_COD + "'" cSql += " AND ZZ4010.D_E_L_E_T = ''"

cSQL := ChangeQuery(cSQL) TCQUERY cSQL NEW ALIAS "QZZ4" DbSelectArea("QZZ4") DbGoTop()

M->ZZ3_COD := ZZ3->ZZ3_COD M->ZZ3_DESCM := ZZ3->ZZ3_DESCM M->ZZ3_FORNEC := ZZ3->ZZ3_FORNEC M->ZZ3_LOJA := ZZ3->ZZ3_LOJA M->ZZ3_NFORNE := ZZ3->ZZ3_NFORNE M->ZZ3_DIASSU := ZZ3->ZZ3_DIASSU M->ZZ3_EMISSA := ZZ3->ZZ3_EMISSA M->ZZ3_DIAQTD := ZZ3->ZZ3_DIAQTD M->ZZ3_COND := ZZ3->ZZ3_COND M->ZZ3_PRAZO := ZZ3->ZZ3_PRAZO

//MONTA O ACOLS COM OS DADOS DO SELECT While !Eof() AADD(aCols ,{QZZ4->ZZ4_PROD,QZZ4->ZZ4_DESCP,QZZ4->RK_PROD,QZZ4->ZZ4_CURVAD,QZZ4->ZZ4_CURVAM,QZZ4->ZZ4_ESTDIS,QZZ4->ZZ4_MEDDIA,QZZ4->ZZ4_ESTDIA,QZZ4->ZZ4_EMBA,; QZZ4->ZZ4_QTDSUG,QZZ4->ZZ4_UNICOM,QZZ4->ZZ4_VLTOTA,QZZ4->ZZ4_QTDCOM,QZZ4->ZZ4_QTDINF,QZZ4->ZZ4_VLUNIT,QZZ4->ZZ4_VLINFO,QZZ4->ZZ4_ESTDF,.F.})

DbSelectArea("QZZ4") DBSKIP() End

DbSelectArea("QZZ4") DbCloseArea()

aSize := MsAdvSize(.T.) aObjects := {}

AAdd(aObjects, {100, 060, .T., .T.}) AAdd(aObjects, {100, 040, .T., .T.})

aInfo := {aSize[1], aSize[2], aSize[3], aSize[4], 0, 0} aPObjs := MsObjSize(aInfo, aObjects, .T.)

nOpcA := 0

DEFINE MSDIALOG oDlg TITLE "SUGESTÃO DE COMPRAS DOMA" From aSize[7], 000 To aSize[6], aSize[5] Of oMainWnd Pixel

Aadd( aButtons, {"Exportar", {|| GDToExcel(aHeader,aCols)}, "Exportar", "Exportar" , {|| .T.}} )

oZZ3 := MsMGet():New("ZZ3",, 3,,,,aCpoMostra, aPObjs[1],aCpoMostra, 3,,,,oDlg) oZZ3:oBox:Align := CONTROL_ALIGN_NONE

oZZ4 := MsNewGetDados():New(aPObjs[1, 1], aPObjs[1, 2], aPObjs[1, 3], aPObjs[1, 4], nOpcG,,,,aACampos,, 99999,,,,oDlg, aHeader, aCols ) oZZ4:oBrowse:Align := CONTROL_ALIGN_BOTTOM oZZ4:oBrowse:bHeaderClick := {|oZZ4,nCol| Ordena(nCol)} SetKey(VK_F4, {|| Funf4()})

//oZZ4:oBrowse:bSeekChange := {|| VlTotal(@oZZ4,nUltcom)}

ACTIVATE MSDIALOG oDlg ON INIT EnchoiceBar(oDlg, {|| nOpcA := 1, oDlg:End()} , {|| nOpcA := 0, oDlg:End()},,@aButtons) //ACTIVATE MSDIALOG oDlg ON INIT (EnchoiceBar(oDlg,{||lOk:=.T.,oDlg:End()},{||oDlg:End()},,@aButtons)) Return

User Function AlterZZ3(cAlias, nReg, nOpc) //função para alteração do registro posicionado

Local cSql := "" Local nOpcG := GD_INSERT + GD_UPDATE + GD_DELETE Local nOpcA := 0 Local aSize := {}, aObjects := {}, aInfo := {}, aPObjs := {} Local aArea := GetArea() //CAMPOS QUE PODERAM SER EDITADOS Local aCpoMostra := {"ZZ3_FORNEC","ZZ3_LOJA","ZZ3_NFORNE","ZZ3_COND","ZZ3_PRAZO"} Local cMarca := "" Local cEst := "" Local nDias := 0 Local nQtdSug := 0 Local nVlTotal := 0 local nUltcom := 0 local aACampos := {'ZZ4_VLUNIT','ZZ4_QTDINF', 'ZZ3TINF'} Local aButtons := {} Private oZZ3, oZZ4 Private aHeader := {}, aCols := {}, nUSD2 := 0 //Private cPerg := Padr("SUGDOMA",Len(SX1->X1_GRUPO)) Private aTela := {}, aGets := {}

RegToMemory("ZZ3", .T.)

//CRIA CABEÇALHO GerHead()

cSql := " select " cSql += " ZZ4PROD, " cSql += " ZZ4_DESCP, " cSql += " ZZ4_ESTDIS, " cSql += " ZZ4_MEDDIA," cSql += " ZZ4_ESTDIA, " cSql += " ZZ4_EMBA," cSql += " ZZ4_QTDSUG," cSql += " ZZ4_VLTOTA, " cSql += " ZZ4_QTDINF," cSql += " ZZ4_VLINFO," cSql += " ZZ4_VLUNIT," cSql += " ZZ4_QTDCOM," cSql += " ZZ4_CURVAD," cSql += " ZZ4_CURVAM," cSql += " ZZ4_ESTDF," cSql += " ZZ4_UNICOM" cSql += " ,B1_XRKPROD" cSql += " FROM ZZ4010" cSql += " INNER JOIN SB1010" cSql += " ON B1_COD = ZZ4_PROD" cSql += " where ZZ4_COD = '" + ZZ3->ZZ3_COD + "'" cSql += " AND ZZ4010.D_E_L_E_T = ''"

cSQL := ChangeQuery(cSQL) TCQUERY cSQL NEW ALIAS "QZZ4" DbSelectArea("QZZ4") DbGoTop()

M->ZZ3_COD := ZZ3->ZZ3_COD M->ZZ3_DESCM := ZZ3->ZZ3_DESCM M->ZZ3_FORNEC := ZZ3->ZZ3_FORNEC M->ZZ3_LOJA := ZZ3->ZZ3_LOJA M->ZZ3_NFORNE := ZZ3->ZZ3_NFORNE M->ZZ3_DIASSU := ZZ3->ZZ3_DIASSU M->ZZ3_EMISSA := ZZ3->ZZ3_EMISSA M->ZZ3_DIAQTD := ZZ3->ZZ3_DIAQTD M->ZZ3_COND := ZZ3->ZZ3_COND M->ZZ3_PRAZO := ZZ3->ZZ3_PRAZO

//MONTA O ACOLS COM OS DADOS DO SELECT While !Eof()

AADD(aCols ,{QZZ4->ZZ4_PROD,QZZ4->ZZ4_DESCP,QZZ4->B1_XRKPROD,QZZ4->ZZ4_CURVAD,QZZ4->ZZ4_CURVAM,QZZ4->ZZ4_ESTDIS,QZZ4->ZZ4_MEDDIA,QZZ4->ZZ4_ESTDIA,QZZ4->ZZ4_EMBA,; QZZ4->ZZ4_QTDSUG,QZZ4->ZZ4_UNICOM,QZZ4->ZZ4_VLTOTA,QZZ4->ZZ4_QTDCOM,QZZ4->ZZ4_QTDINF,ZZ4_VLUNIT,QZZ4->ZZ4_VLINFO,QZZ4->ZZ4_ESTDF,.F.})

DbSelectArea("QZZ4") DBSKIP() End

DbSelectArea("QZZ4") DbCloseArea()

aSize := MsAdvSize(.T.) aObjects := {}

AAdd( aObjects, { 100, 060, .T., .T. } ) AAdd( aObjects, { 100, 040, .T., .T. } )

aInfo := { aSize[ 1 ], aSize[ 2 ], aSize[ 3 ], aSize[ 4 ], 0, 0 } aPObjs := MsObjSize( aInfo, aObjects, .T. )

nOpcA := 0

DEFINE MSDIALOG oDlg TITLE "SUGESTÃO DE COMPRAS DOMA" From aSize[7], 000 To aSize[6], aSize[5] Of oMainWnd Pixel

Aadd( aButtons, {"Exportar", {|| GDToExcel(aHeader,aCols)}, "Exportar", "Exportar" , {|| .T.}} )

oZZ3 := MsMGet():New("ZZ3",, 3,,,,aCpoMostra, aPObjs[1],aCpoMostra, 3,,,,oDlg) oZZ3:oBox:Align := CONTROL_ALIGN_NONE

oZZ4 := MsNewGetDados():New(aPObjs[1, 1], aPObjs[1, 2], aPObjs[1, 3], aPObjs[1, 4], nOpcG,,,,aACampos,, 99999,,,,oDlg, aHeader, aCols ) oZZ4:oBrowse:Align := CONTROL_ALIGN_BOTTOM oZZ4:oBrowse:bHeaderClick := {|oZZ4,nCol| Ordena(nCol)} SetKey(VK_F4, {|| Funf4()}) //oZZ4:oBrowse:bSeekChange := {|| VlTotal(@oZZ4,nUltcom)}

ACTIVATE MSDIALOG oDlg ON INIT EnchoiceBar(oDlg,{|| AltSug()}, {|| nOpcA := 0, oDlg:End()},,@aButtons)//EnchoiceBar(oDlg, {|| nOpcA := 1, oDlg:End()} , {|| nOpcA := 0, oDlg:End()})

Return

User Function INCZZ3() //FUNÇÃO PARA ABRIR TELA DE INCLUSÃO DA SUGESTÃO

Local cCont := 1 Local cSql := "" Local nOpcG := GD_INSERT + GD_UPDATE + GD_DELETE Local nOpcA := 0 Local aSize := {}, aObjects := {}, aInfo := {}, aPObjs := {} Local aArea := GetArea() //CAMPOS QUE PODERAM SER EDITADOS Local aCpoMostra := {"ZZ3_COD","ZZ3_DESCM","ZZ3_EMISSA","ZZ3_DIASSU","ZZ3_FORNEC","ZZ3_LOJA","ZZ3_NFORNE","ZZ3_COND",; "ZZ3_PRAZO"} Local cMarca := "" Local cEst := "" Local nDias := 0 Local nQtdSug := 0 Local nVlTotal := 0 local nUltcom := 0 local aACampos := {'ZZ4_VLUNIT','ZZ4_QTDINF', 'ZZ3TINF'} Private oZZ3, oZZ4 Private aHeader := {}, aCols := {}, nUSD2 := 0 Private cPerg := "SUGDOMA" //Padr("SUGDOMA",Len(SX1->X1_GRUPO)) Private aTela := {}, aGets := {}

If !Pergunte(cPerg,.T.) Return(Nil) EndIf

cMarca := mv_par01 cEst := mv_par02 nDias := mv_par03

U_notificaMarca(cMarca)

RegToMemory("ZZ3", .T.)

//CRIA CABEÇALHO GerHead() // linha 295 modificada cSql := " select " cSql += " SB1.B1COD," cSql += " SB1.B1_DESC," cSql += " B1_XRKPROD," cSql += " (SELECT SUM(B2_QATU - B2_RESERVA) AS EST" cSql += " FROM SB2010" cSql += " WHERE SB2010.B2_COD = SB1.B1_COD" cSql += " AND B2_LOCAL != '03'" cSql += " AND B2_LOCAL != '04'" cSql += " AND B2_LOCAL != '53'" cSql += " AND B2_LOCAL != '07'" cSql += " AND B2_LOCAL != '57'" cSql += " AND B2_LOCAL != '54') AS EST," cSql += " SB1.B1_XMDIA," cSql += " SB1.B1_ESTDIA," cSql += " B1_CONV," cSql += " B1_XDESCM," cSql += " (CASE WHEN ((SELECT TOP 1 D1_VUNIT FROM SD1010" cSql += " WHERE D1_COD = SB1.B1_COD" cSql += " AND SD1010.D_E_L_E_T = '' AND D1TIPO = 'N'" cSql += " ORDER BY D1_DTDIGIT DESC) IS NOT NULL) " cSql += " THEN (SELECT TOP 1 round((D1_TOTAL-D1_VALDESC)/D1_QUANT,4) FROM SD1010" cSql += " WHERE D1_COD = SB1.B1_COD" cSql += " AND SD1010.D_E_L_E_T = '' AND D1TIPO = 'N'" cSql += " ORDER BY D1_DTDIGIT DESC) " cSql += " ELSE ((SELECT TOP 1 Z9_PRCVEN FROM SZ9010" cSql += " WHERE Z9_CODBARR = SB1.B1_COD" cSql += " AND SZ9010.D_E_L_E_T = '' AND Z9ESTOQUE = 'E'" cSql += " ORDER BY Z9_EMISSAO DESC))" cSql += " END) AS ULTCOM," cSql += " 0 AS ZZ4_QTDINF," cSql += " 0 AS ZZ4_VLINFO," cSql += " (SELECT" cSql += " SUM(C7_QUANT - C7_QUJE) AS QUANT" cSql += " FROM SC7010 SC7" cSql += " INNER JOIN SB1010 ON SC7.C7_PRODUTO = SB1.B1_COD" cSql += " AND SB1.D_E_L_E_T = ''" cSql += " WHERE SC7.DE_L_E_T = ''" cSql += " AND SC7.C7ENCER = ''" cSql += " AND B1_COD = SB1.B1_COD) AS COMPRA," cSql += " B1_CURVAD," cSql += " B1_CURVAM" cSql += " from SB1010 SB1" cSql += " WHERE SB1.D_E_L_E_T = '' AND SB1.B1_MSBLQL = '2'" cSql += " AND SB1.B1_XMARCA in (" + STRTRAN(ALLTRIM(cMarca),"\",",") + ")" If ALLTRIM(cEst) != "" cSql += " AND SB1.B1_ESTDIA < '" + cEst + "'" EndIf cSql += " AND SB1.B1_TIPO = 'PA'"

cSQL := ChangeQuery(cSQL) TCQUERY cSQL NEW ALIAS "QZZ4" DbSelectArea("QZZ4") DbGoTop()

M->ZZ3_DIASSU := ALLTRIM(cEst) M->ZZ3_EMISSA := Date() M->ZZ3_DIAQTD := ALLTRIM(nDias)

//MONTA O ACOLS COM OS DADOS DO SELECT While !Eof()

nQtdSug := 0 nUltcom := 0

IF ALLTRIM(QZZ4->B1_XDESCM) $ ALLTRIM(M->ZZ3_DESCM) else if cCont = 1 M->ZZ3_DESCM := ALLTRIM(QZZ4->B1_XDESCM) else M->ZZ3_DESCM += "," + ALLTRIM(QZZ4->B1_XDESCM) endif ENDIF

//PREENCHE A QUANTIDADE SUGERIADA COM O NUMERO DE DIAS INFOMADO MEDIA DIA - ESTOQUE DISPONIVEL nQtdSug := ((VAL(nDias) QZZ4->B1_XMDIA) - QZZ4->EST) - QZZ4->COMPRA

if nQtdSug < 0 nQtdSug := 0 EndIf

nQtdSug := ROUND(nQtdSug,0) //FAZ A QUANTIDADE DISPONIVEL O VALOR TOTAL nVlTotal := nQtdSug ULTCOM nUltcom := ULTCOM

AADD(aCols ,{QZZ4->B1_COD,QZZ4->B1_DESC, QZZ4->B1_XRKPROD,10, QZZ4->B1_CURVAD,QZZ4->B1_CURVAM,QZZ4->EST,QZZ4->B1_XMDIA,QZZ4->B1_ESTDIA,QZZ4->B1_CONV,; nQtdSug,nUltcom,nVlTotal,QZZ4->COMPRA,QZZ4->ZZ4_QTDINF,nUltcom,QZZ4->ZZ4_VLINFO,QZZ4->B1_ESTDIA,.F.})

DbSelectArea("QZZ4") DBSKIP() cCont++ End

DbSelectArea("QZZ4") DbCloseArea()

aSize := MsAdvSize(.T.) aObjects := {}

AAdd( aObjects, { 100, 060, .T., .T. } ) AAdd( aObjects, { 100, 040, .T., .T. } )

aInfo := { aSize[ 1 ], aSize[ 2 ], aSize[ 3 ], aSize[ 4 ], 0, 0 } aPObjs := MsObjSize( aInfo, aObjects, .T. )

nOpcA := 0

DEFINE MSDIALOG oDlg TITLE "SUGESTÃO DE COMPRAS DOMA" From aSize[7], 000 To aSize[6], aSize[5] Of oMainWnd Pixel

oZZ3 := MsMGet():New("ZZ3",, 3,,,,aCpoMostra, aPObjs[1],aCpoMostra, 3,,,,oDlg) oZZ3:oBox:Align := CONTROL_ALIGN_NONE

oZZ4 := MsNewGetDados():New(aPObjs[1, 1], aPObjs[1, 2], aPObjs[1, 3], aPObjs[1, 4], nOpcG,,,,aACampos,, 99999,,,,oDlg, aHeader, aCols ) oZZ4:oBrowse:Align := CONTROL_ALIGN_BOTTOM oZZ4:oBrowse:bHeaderClick := {|oZZ4,nCol| Ordena(nCol)} SetKey(VK_F4, {|| Funf4()}) //oZZ4:oBrowse:bSeekChange := {|| VlTotal(@oZZ4,nUltcom)}

ACTIVATE MSDIALOG oDlg ON INIT EnchoiceBar(oDlg,{|| GravaSug()}, {|| nOpcA := 0, oDlg:End()})//EnchoiceBar(oDlg, {|| nOpcA := 1, oDlg:End()} , {|| nOpcA := 0, oDlg:End()})

Return()

User Function DelZZ3(cAlias, nReg, nOpc) //função para alteração do registro posicionado

Local cSql := "" Local nOpcG := GD_INSERT + GD_UPDATE + GD_DELETE Local nOpcA := 0 Local aSize := {}, aObjects := {}, aInfo := {}, aPObjs := {} Local aArea := GetArea() //CAMPOS QUE PODERAM SER EDITADOS Local aCpoMostra := {} Local cMarca := "" Local cEst := "" Local nDias := 0 Local nQtdSug := 0 Local nVlTotal := 0 local nUltcom := 0 local aACampos := {'ZZ4_VLUNIT','ZZ4_QTDINF', 'ZZ3TINF'} Private oZZ3, oZZ4 Private aHeader := {}, aCols := {}, nUSD2 := 0

Private aTela := {}, aGets := {}

RegToMemory("ZZ3", .T.)

//CRIA CABEÇALHO GerHead()

cSql := " select " cSql += " ZZ4PROD, " cSql += " ZZ4_DESCP, " cSql += " ZZ4_ESTDIS, " cSql += " ZZ4_MEDDIA," cSql += " ZZ4_ESTDIA, " cSql += " ZZ4_EMBA," cSql += " ZZ4_QTDSUG," cSql += " ZZ4_VLTOTA, " cSql += " ZZ4_QTDINF," cSql += " ZZ4_VLINFO," cSql += " ZZ4_VLUNIT," cSql += " ZZ4_QTDCOM," cSql += " ZZ4_CURVAD," cSql += " ZZ4_CURVAM," cSql += " ZZ4_ESTDF," cSql += " ZZ4_UNICOM" cSql += " ,B1_XRKPROD" cSql += " FROM ZZ4010" cSql += " INNER JOIN SB1010" cSql += " ON B1_COD = ZZ4_PROD" cSql += " where ZZ4_COD = '" + ZZ3->ZZ3_COD + "'" cSql += " AND ZZ4010.D_E_L_E_T = ''"

cSQL := ChangeQuery(cSQL) TCQUERY cSQL NEW ALIAS "QZZ4" DbSelectArea("QZZ4") DbGoTop()

M->ZZ3_COD := ZZ3->ZZ3_COD M->ZZ3_DESCM := ZZ3->ZZ3_DESCM M->ZZ3_FORNEC := ZZ3->ZZ3_FORNEC M->ZZ3_LOJA := ZZ3->ZZ3_LOJA M->ZZ3_NFORNE := ZZ3->ZZ3_NFORNE M->ZZ3_DIASSU := ZZ3->ZZ3_DIASSU M->ZZ3_EMISSA := ZZ3->ZZ3_EMISSA M->ZZ3_DIAQTD := ZZ3->ZZ3_DIAQTD M->ZZ3_COND := ZZ3->ZZ3_COND M->ZZ3_PRAZO := ZZ3->ZZ3_PRAZO

//MONTA O ACOLS COM OS DADOS DO SELECT While !Eof()

AADD(aCols ,{QZZ4->ZZ4_PROD,QZZ4->ZZ4_DESCP,QZZ4->B1_XRKPROD ,QZZ4->ZZ4_CURVAD,QZZ4->ZZ4_CURVAM,QZZ4->ZZ4_ESTDIS,QZZ4->ZZ4_MEDDIA,QZZ4->ZZ4_ESTDIA,QZZ4->ZZ4_EMBA,; QZZ4->ZZ4_QTDSUG,QZZ4->ZZ4_UNICOM,QZZ4->ZZ4_VLTOTA,QZZ4->ZZ4_QTDCOM,QZZ4->ZZ4_QTDINF,ZZ4_VLUNIT,QZZ4->ZZ4_VLINFO,QZZ4->ZZ4_ESTDF,.F.})

DbSelectArea("QZZ4") DBSKIP() End

DbSelectArea("QZZ4") DbCloseArea()

aSize := MsAdvSize(.T.) aObjects := {}

AAdd( aObjects, { 100, 060, .T., .T. } ) AAdd( aObjects, { 100, 040, .T., .T. } )

aInfo := { aSize[ 1 ], aSize[ 2 ], aSize[ 3 ], aSize[ 4 ], 0, 0 } aPObjs := MsObjSize( aInfo, aObjects, .T. )

nOpcA := 0

DEFINE MSDIALOG oDlg TITLE "SUGESTÃO DE COMPRAS DOMA" From aSize[7], 000 To aSize[6], aSize[5] Of oMainWnd Pixel

oZZ3 := MsMGet():New("ZZ3",, 3,,,,aCpoMostra, aPObjs[1],aCpoMostra, 3,,,,oDlg) oZZ3:oBox:Align := CONTROL_ALIGN_NONE

oZZ4 := MsNewGetDados():New(aPObjs[1, 1], aPObjs[1, 2], aPObjs[1, 3], aPObjs[1, 4], nOpcG,,,,aACampos,, 99999,,,,oDlg, aHeader, aCols ) oZZ4:oBrowse:Align := CONTROL_ALIGN_BOTTOM //oZZ4:oBrowse:bSeekChange := {|| VlTotal(@oZZ4,nUltcom)}

ACTIVATE MSDIALOG oDlg ON INIT EnchoiceBar(oDlg, {|| nOpcA := 1, DeletaSug()} , {|| nOpcA := 0, oDlg:End()})

Return

Static Function GerHead()

Local aAux := {'ZZ4_PROD', 'ZZ4_DESCP', 'B1_XRKPROD','ZZ4_CURVAD', 'ZZ4_CURVAM', 'ZZ4_ESTDIS', 'ZZ4_MEDDIA',; 'ZZ4_ESTDIA', 'ZZ4_EMBA', 'ZZ4_QTDSUG', 'ZZ4_UNICOM', 'ZZ4_VLTOTA', 'ZZ4_QTDCOM',; 'ZZ4_QTDINF', 'ZZ4_VLUNIT', 'ZZ4_VLINFO','ZZ4_ESTDF'}

Local nFor := 1 Local cCampo := ""

For nFor := 1 To Len(aAux)

AADD(aHeader,{ TRIM(GetSx3Cache(aAux[nFor],"X3_TITULO")),; AllTrim(GetSx3Cache(aAux[nFor],"X3_CAMPO")),; GetSx3Cache(aAux[nFor],"X3_PICTURE"),; GetSx3Cache(aAux[nFor],"X3_TAMANHO"),; GetSx3Cache(aAux[nFor],"X3_DECIMAL"),; "",; GetSx3Cache(aAux[nFor],"X3_USADO"),; GetSx3Cache(aAux[nFor],"X3_TIPO"),; GetSx3Cache(aAux[nFor],"X3_ARQUIVO"),; GetSx3Cache(aAux[nFor],"X3_CONTEXT") } )

Next nFor

Return()

Static Function GravaSug()

if ValidInc()

//INCLUI ZZ3 (CABEÇALHO)

RecLock("ZZ3", .T.) DbSelectArea("ZZ3") DbSetOrder(1) ZZ3->ZZ3_COD := M->ZZ3_COD ZZ3->ZZ3_DESCM := M->ZZ3_DESCM ZZ3->ZZ3_EMISSA := M->ZZ3_EMISSA ZZ3->ZZ3_DIASSU := val(M->ZZ3_DIASSU) ZZ3->ZZ3_DIAQTD := val(M->ZZ3_DIAQTD) ZZ3->ZZ3_FORNEC := M->ZZ3_FORNEC ZZ3->ZZ3_LOJA := M->ZZ3_LOJA ZZ3->ZZ3_NFORNE := M->ZZ3_NFORNE ZZ3->ZZ3_COND := M->ZZ3_COND ZZ3->ZZ3_PRAZO := M->ZZ3_PRAZO ZZ3->ZZ3_EFET := M->ZZ3_EFET MsUnLock()

//INCLUI ZZ4 (ITENS)

For nCont := 1 to Len(oZZ4:aCols)

IF !GDDeleted(nCont,oZZ4:aHeader,oZZ4:aCols)

RecLock("ZZ4", .T.) DbSelectArea("ZZ4") DbSetOrder(1)

ZZ4->ZZ4_COD := M->ZZ3_COD ZZ4->ZZ4_PROD := oZZ4:ACOLS[nCont][AScan(aHeader,{|x| AllTrim(x[2]) == 'ZZ4_PROD'})] ZZ4->ZZ4_DESCP := oZZ4:ACOLS[nCont][AScan(aHeader,{|x| AllTrim(x[2]) == 'ZZ4_DESCP'})] ZZ4->ZZ4_ESTDIS := oZZ4:ACOLS[nCont][AScan(aHeader,{|x| AllTrim(x[2]) == 'ZZ4_ESTDIS'})] ZZ4->ZZ4_MEDDIA := oZZ4:ACOLS[nCont][AScan(aHeader,{|x| AllTrim(x[2]) == 'ZZ4_MEDDIA'})] ZZ4->ZZ4_ESTDIA := oZZ4:ACOLS[nCont][AScan(aHeader,{|x| AllTrim(x[2]) == 'ZZ4_ESTDIA'})] ZZ4->ZZ4_EMBA := oZZ4:ACOLS[nCont][AScan(aHeader,{|x| AllTrim(x[2]) == 'ZZ4_EMBA'})] ZZ4->ZZ4_QTDSUG := oZZ4:ACOLS[nCont][AScan(aHeader,{|x| AllTrim(x[2]) == 'ZZ4_QTDSUG'})] ZZ4->ZZ4_QTDCOM := oZZ4:ACOLS[nCont][AScan(aHeader,{|x| AllTrim(x[2]) == 'ZZ4_QTDCOM'})] ZZ4->ZZ4_VLUNIT := oZZ4:ACOLS[nCont][AScan(aHeader,{|x| AllTrim(x[2]) == 'ZZ4_VLUNIT'})] ZZ4->ZZ4_VLTOTA := oZZ4:ACOLS[nCont][AScan(aHeader,{|x| AllTrim(x[2]) == 'ZZ4_VLTOTA'})] ZZ4->ZZ4_QTDINF := oZZ4:ACOLS[nCont][AScan(aHeader,{|x| AllTrim(x[2]) == 'ZZ4_QTDINF'})] ZZ4->ZZ4_VLINFO := oZZ4:ACOLS[nCont][AScan(aHeader,{|x| AllTrim(x[2]) == 'ZZ4_VLINFO'})] ZZ4->ZZ4_CURVAD := oZZ4:ACOLS[nCont][AScan(aHeader,{|x| AllTrim(x[2]) == 'ZZ4_CURVAD'})] ZZ4->ZZ4_CURVAM := oZZ4:ACOLS[nCont][AScan(aHeader,{|x| AllTrim(x[2]) == 'ZZ4_CURVAM'})] ZZ4->ZZ4_ESTDF := oZZ4:ACOLS[nCont][AScan(aHeader,{|x| AllTrim(x[2]) == 'ZZ4_ESTDF'})] ZZ4->ZZ4_UNICOM := oZZ4:ACOLS[nCont][AScan(aHeader,{|x| AllTrim(x[2]) == 'ZZ4_UNICOM'})]

MsUnLock()

Endif Next oDlg:End() else MsgAlert("Deve preencher todos os itens obrigatorios","Prencher itens obrigatorios") EndIf

Return()

//VALIDAÇÕES DE INCLUSÃO DA SUGESTÃO Static Function ValidInc()

Local lRet := .f. Local nCont := 0

if alltrim(M->ZZ3_FORNEC) != "" .AND. alltrim(M->ZZ3_COND) != "" lRet := .t. End

For nCont := 1 to Len(oZZ4:ACOLS) IF !GDDeleted(nCont,oZZ4:aHeader,oZZ4:aCols) if oZZ4:ACOLS[nCont][AScan(aHeader,{|x| AllTrim(x[2]) == 'ZZ4_QTDINF'})] = 0 lRet := .f. endif ENDIF

Next

Return(lRet)

//ALTERA A SUGESTÃO NO BANCO NAS TABELAS //ZZ3 E ZZ4 Static Function AltSug()

Local cCod := M->ZZ3_COD

if ValidInc()

//ALTERA ZZ3 (CABEÇALHO)

DbSelectArea("ZZ3") DbSetOrder(1) If DbSeek(xFilial()+ZZ3->(cCod)) RecLock("ZZ3", .F.) ZZ3->ZZ3_FORNEC := M->ZZ3_FORNEC ZZ3->ZZ3_LOJA := M->ZZ3_LOJA ZZ3->ZZ3_NFORNE := M->ZZ3_NFORNE ZZ3->ZZ3_COND := M->ZZ3_COND ZZ3->ZZ3_PRAZO := M->ZZ3_PRAZO MsUnLock() endif

//ALTERA ZZ4 (ITENS) For nCont := 1 to Len(oZZ4:ACOLS)

IF !GDDeleted(nCont,oZZ4:aHeader,oZZ4:aCols) DbSelectArea("ZZ4") DbSetOrder(1) If DbSeek(xFilial()+ZZ4->(cCod)+oZZ4:ACOLS[nCont][AScan(aHeader,{|x| AllTrim(x[2]) == 'ZZ4_PROD'})]) RecLock("ZZ4", .F.) ZZ4->ZZ4_QTDINF := oZZ4:ACOLS[nCont][AScan(aHeader,{|x| AllTrim(x[2]) == 'ZZ4_QTDINF'})] ZZ4->ZZ4_VLINFO := oZZ4:ACOLS[nCont][AScan(aHeader,{|x| AllTrim(x[2]) == 'ZZ4_VLINFO'})] ZZ4->ZZ4_VLUNIT := oZZ4:ACOLS[nCont][AScan(aHeader,{|x| AllTrim(x[2]) == 'ZZ4_VLUNIT'})] MsUnLock() ENDIF ELSE DbSelectArea("ZZ4") DbSetOrder(1) If DbSeek(xFilial()+ZZ4->(cCod)+oZZ4:ACOLS[nCont][AScan(aHeader,{|x| AllTrim(x[2]) == 'ZZ4_PROD'})]) RecLock("ZZ4", .F.) ZZ4->( dbDelete() ) MsUnLock() ENDIF Endif Next oDlg:End() else MsgAlert("Deve preencher todos os itens obrigatorios","Prencher itens obrigatorios") EndIf

Return()

//GRAVA A SUGESTÃO NO BANCO NAS TABELAS //ZZ3 E ZZ4 Static Function DeletaSug()

Local cCod := M->ZZ3_COD

DbSelectArea("ZZ3") DbSetOrder(1) If DbSeek(xFilial()+ZZ3->(cCod)) RecLock("ZZ3",.F.) ZZ3->(DbDelete()) ZZ3->(MsUnlock()) endif

For nCont := 1 to Len(oZZ4:ACOLS)

DbSelectArea("ZZ4") DbSetOrder(1) If DbSeek(xFilial()+ZZ4->(cCod)+oZZ4:ACOLS[nCont][AScan(aHeader,{|x| AllTrim(x[2]) == 'ZZ4_PROD'})]) RecLock("ZZ4", .F.) ZZ4->( dbDelete() ) MsUnLock() ENDIF

Next

oDlg:End() Return()

Static Function Funf4()

Local nLinha := oZZ4:oBrowse:nAt

Local cCod := oZZ4:ACOLS[nLinha][AScan(aHeader,{|x| AllTrim(x[2]) == 'ZZ4_PROD'})] Local cDesc := oZZ4:ACOLS[nLinha][AScan(aHeader,{|x| AllTrim(x[2]) == 'ZZ4_DESCP'})]

U_XMEDPROD(cCod,cDesc)

Return()

STATIC FUNCTION Ordena(nCol)

aCols := oZZ4:ACOLS aSort( aCols,,,{|x,y|x[nCol] < y[nCol]}) oZZ4:setArray(aCols) oZZ4:oBrowse:Refresh()

RETURN

Static Function GDToExcel(aHeader,aCols,cWorkSheet,cTable,lTotalize,lPicture)

Local oFWMSExcel := FWMSExcel():New() Local oMsExcel Local aCells Local cType Local cColumn Local cFile Local cFileTMP Local cPicture Local lTotal Local nRow Local nRows Local nField Local nFields Local nAlign Local nFormat Local cabecalho := "" Local uCell

DEFAULT cWorkSheet := "MARCA: " + alltrim(ZZ3->ZZ3_DESCM) + " - " + "FORNECEDOR: " + alltrim(ZZ3->ZZ3_NFORNE) + " - " + "COND.: " + alltrim(ZZ3_PRAZO) DEFAULT cTable := cWorkSheet DEFAULT lTotalize := .T. DEFAULT lPicture := .F.

BEGIN SEQUENCE

oFWMSExcel:AddworkSheet(cWorkSheet) oFWMSExcel:AddTable(cWorkSheet,cTable)

nFields := Len( aHeader ) For nField := 1 To nFields cType := aHeader[nField][8] nAlign := IF(cType=="C",1,IF(cType=="N",3,2)) nFormat := IF(cType=="D",4,IF(cType=="N",2,1)) cColumn := aHeader[nField][1] lTotal := ( lTotalize .and. cType == "N" ) oFWMSExcel:AddColumn(@cWorkSheet,@cTable,@cColumn,@nAlign,@nFormat,@lTotal) Next nField

aCells := Array(nFields)

nRows := Len( aCols ) For nRow := 1 To nRows For nField := 1 To nFields uCell := aCols[nRow][nField] IF ( lPicture ) cPicture := aHeader[nField][3] IF .NOT.( Empty(cPicture) ) uCell := Transform(uCell,cPicture) EndIF EndIF aCells[nField] := uCell Next nField oFWMSExcel:AddRow(@cWorkSheet,@cTable,aClone(aCells)) Next nRow

oFWMSExcel:Activate()

cFile := ( CriaTrab( NIL, .F. ) + ".xml" )

While File( cFile ) cFile := ( CriaTrab( NIL, .F. ) + ".xml" ) End While

oFWMSExcel:GetXMLFile( cFile ) oFWMSExcel:DeActivate()

IF .NOT.( File( cFile ) ) cFile := "" BREAK EndIF

cFileTMP := ( GetTempPath() + cFile ) IF .NOT.( __CopyFile( cFile , cFileTMP ) ) fErase( cFile ) cFile := "" BREAK EndIF

fErase( cFile )

cFile := cFileTMP

IF .NOT.( File( cFile ) ) cFile := "" BREAK EndIF

IF .NOT.( ApOleClient("MsExcel") ) BREAK EndIF

oMsExcel := MsExcel():New() oMsExcel:WorkBooks:Open( cFile ) oMsExcel:SetVisible( .T. ) oMsExcel := oMsExcel:Destroy()

END SEQUENCE

oFWMSExcel := FreeObj( oFWMSExcel )

Return( cFile )

user Function notificaMarca(cMarca)

local cSql := "" Local lAvencer := .F. Local lAReceber := .F. Local lRecebidos := .F. Local cVencerDescMarca := "" Local cReceberDescMarca := "" Local cRecebidosDescMarca := ""

IF FUNNAME() == "MATA121"

cSql := " SELECT STRINGAGG(ZN_MARCA,'\') MARCA," cSql += " STRING_AGG(trim(ZN_DESCM),',') DMARCAS" cSql += " FROM SZN010" cSql += " WHERE ZN_FORNEC = '" + CA120FORN + "' AND ZN_LOJAF = '" + CA120LOJ + "' AND SZN010.D_E_L_E_T = ''"

cSQL := ChangeQuery(cSQL) TCQUERY cSQL NEW ALIAS "QMARC" DbSelectArea("QMARC") DbGoTop() While !Eof() cMarca := ALLTRIM(QMARC->MARCA) DbSelectArea("QMARC") DBSKIP() End

DbSelectArea("QMARC") DbCloseArea()

ENDIF

IF Empty(cMarca) RETURN ENDIF

cSql := " SELECT STRINGAGG(TRIM(B1_XDESCM), ',') MARCA" cSql += " FROM (" cSql += " SELECT " cSql += " B1_XDESCM cSql += " FROM SB8010 " cSql += " JOIN SB1010 ON SB1010.D_E_L_E_T='' AND B1COD = B8_PRODUTO" cSql += " WHERE SB8010.D_E_L_E_T='' AND B8_SALDO<>'0' AND (B8_SALDO) <>'0' and B8_DTVALID <= DATEADD(DAY, 180 , GETDATE())" cSql += " AND B8_LOCAL NOT IN ('03','04','53','54','07','57') AND B1_XMARCA in (" + STRTRAN(ALLTRIM(cMarca),"\",",") + ")" cSql += " GROUP BY B1_XDESCM) RESULTADO"

cSQL := ChangeQuery(cSQL) TCQUERY cSQL NEW ALIAS "QVENC" DbSelectArea("QVENC") DbGoTop() While !Eof() if !empty(QVENC->MARCA) lAvencer := .t. cVencerDescMarca := alltrim(QVENC->MARCA) endif DbSelectArea("QVENC") DBSKIP() End

DbSelectArea("QVENC") DbCloseArea()

cSql := " SELECT STRINGAGG(TRIM(B1_XDESCM), ',') MARCA" cSql += " FROM (" cSql += " SELECT " cSql += " B1_XDESCM" cSql += " FROM SB8010 " cSql += " JOIN SB1010 ON SB1010.D_E_L_E_T='' AND B1COD = B8_PRODUTO " cSql += " LEFT JOIN SB2010 ON B1_COD = B2_COD " cSql += " JOIN NNR010 ON NNR010.D_E_L_E_T='' AND NNRCODIGO = B8_LOCAL AND NNR_FILIAL = B8_FILIAL " cSql += " WHERE SB8010.D_E_L_E_T='' AND B8_SALDO <> '0' AND B8_LOCAL IN ('03','53')" cSql += " AND B1_XMARCA in (" + STRTRAN(ALLTRIM(cMarca),"\",",") + ")" cSql += " group by B1_XDESCM) RESULTADO"

cSQL := ChangeQuery(cSQL) TCQUERY cSQL NEW ALIAS "QVENC" DbSelectArea("QVENC") DbGoTop() While !Eof() if !empty(QVENC->MARCA) lAReceber := .t. cReceberDescMarca := alltrim(QVENC->MARCA) endif DbSelectArea("QVENC") DBSKIP() End

DbSelectArea("QVENC") DbCloseArea()

if lAvencer MsgAlert('Existem produtos a vencer para a marca: ' + cVencerDescMarca) endif

if lAReceber MsgAlert('Existem produtos vencidos a receber para a marca: ' + cReceberDescMarca) endif

Return

user Function NotFornec(cFornecedor,cLoja,cMarca)

local cSql := "" Local lPendencia := .F. Local cCliente := "" Local cLojaCli := "" Local lAutomato := IsBlind()

IF !lAutomato

if empty(cLoja) IF FUNNAME() == "MATA121" cLoja := CA120LOJ endif endif

//VERIFICA SE EXISTE RELACIONAMENTO COM ALGUM CLIENTE NA TABELA (MARCA X FORNECEDOR X CLIENTE) cSql := " SELECT TOP 1 ZNCLIENTE,ZN_LOJAC FROM SZN010" cSql += " WHERE ZN_FORNEC = '" + cFornecedor + "' cSql += " AND ZN_LOJAF = '" + cLoja + "' AND SZN010.D_E_L_E_T = ''"

cSQL := ChangeQuery(cSQL) TCQUERY cSQL NEW ALIAS "QCLI" DbSelectArea("QCLI") DbGoTop() While !Eof() cCliente := QCLI->ZN_CLIENTE cLojaCli := QCLI->ZN_LOJAC DbSelectArea("QCLI") DBSKIP() End DbSelectArea("QCLI") DbCloseArea()

if !empty(cCliente)

cSql := " SELECT TOP 1 * " cSql += " FROM SE1010" cSql += " WHERE E1CLIENTE = '" + cCliente + "' AND E1_LOJA = '" + cLojaCli + "'" cSql += " AND E1_STATUS = 'A' AND E1_TIPO NOT IN ('RA','NCC') and SE1010.D_E_L_E_T = ''"

cSQL := ChangeQuery(cSQL) TCQUERY cSQL NEW ALIAS "QVENC" DbSelectArea("QVENC") DbGoTop() While !Eof() lPendencia := .t. DbSelectArea("QVENC") DBSKIP() End DbSelectArea("QVENC") DbCloseArea()

if lPendencia MsgAlert('Este fornecedor possui DEBITO') endif

lPendencia := .f. cSql := " SELECT TOP 1 * " cSql += " FROM SE1010" cSql += " WHERE E1CLIENTE = '" + cCliente + "' AND E1_LOJA = '" + cLojaCli + "'" cSql += " AND E1_STATUS = 'A' AND E1_TIPO IN ('RA','NCC') and SE1010.D_E_L_E_T = ''"

cSQL := ChangeQuery(cSQL) TCQUERY cSQL NEW ALIAS "QVENC" DbSelectArea("QVENC") DbGoTop() While !Eof() lPendencia := .t. DbSelectArea("QVENC") DBSKIP() End DbSelectArea("QVENC") DbCloseArea()

if lPendencia MsgAlert('Este fornecedor possui CREDITO') endif

endif

IF FUNNAME() == "MATA121" U_notificaMarca("") ENDIF ENDIF

Return .T.

compartilhar
  1. Você vai ver essas setas em qualquer página de pergunta. Com elas, você pode dizer se uma pergunta ou uma resposta foram relevantes ou não.
  2. Edite sua pergunta ou resposta caso queira alterar ou adicionar detalhes.
  3. Caso haja alguma dúvida sobre a pergunta, adicione um comentário. O espaço de respostas deve ser utilizado apenas para responder a pergunta.
  4. Se o autor da pergunta marcar uma resposta como solucionada, esta marca aparecerá.
  5. Clique aqui para mais detalhes sobre o funcionamento do TOTVS DevForum!

1 resposta

Não é a resposta que estava procurando? Procure outras perguntas com as tags advpl sql tabela grid msdialog ou faça a sua própria pergunta.