123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515 |
- #include "PROTHEUS.CH"
- #include "RWMAKE.CH"
- #include "APWEBEX.CH"
- #include "TOPCONN.CH"
- #include "TBICONN.CH"
- /*__________________________________________________________________________
- ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦
- ¦¦+-----------------------------------------------------------------------+¦¦
- ¦¦¦Funçäo ¦ Estoque ¦ Autor ¦ Lucilene Mendes ¦ Data ¦17.07.19 ¦¦¦
- ¦¦+----------+------------------------------------------------------------¦¦¦
- ¦¦¦Descriçäo ¦ Grid com o estoque de itens por tabela de preço. ¦¦¦
- ¦¦+-----------------------------------------------------------------------+¦¦
- ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦
- ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯*/
- User Function Estoque()
- Local cHtml
- Local cArmazem := ""
- //Local cVend := HttpSession->CodVend
- Local cTabela := ""
- Local cGrupoP := ""
- Local cTpCli := ""
- Local i := 0
- Local cCliSel := ""
- Local cOport := ""
- Local cUfEntr := ""
- Local cUFFat := ""
- Local cMunEnt := ""
- Local cTipoProd := ""
- Local cGrupoProd:= ""
- Local nPrcVen := 0
- Private oObjLog := nil
- Private aMunic := {}
- Private cColunas:= ""
- Private cItens := ""
- Private cTopo := ""
- Private cSite := "u_PortalLogin.apw"
- Private cPagina := "Consulta de Preço"
- Private cTitle := ""
- Private lTableTools:= .T.
- Private lSidebar:= .F.
- Private cCodLogin := ""
- Private cVendLogin:= ""
- Web Extended Init cHtml Start U_inSite()
- oObjLog:= LogSMS():new()
- oObjLog:setFileName("\temp\"+Procname()+"_"+dtos(date())+".txt")
- cVendLogin := u_GetUsrPR()
- cCodLogin := U_SetParPR(cVendLogin)
- If Empty(HttpSession->CodVend)
- cHtml:= '<META HTTP-EQUIV="Refresh" CONTENT="0 ; URL='+cSite+'">'
- Return cHtml
- Else
- If !Empty(HttpSession->Superv) .and. HttpSession->Superv <> HttpSession->CodVend
- HttpSession->CodVend:= HttpSession->Superv
- Endif
- Endif
-
- // Pega do parâmetro com o Titulo do Portal
- cTitle := SuperGetMV("PS_TITLE", .T., "Portal SMS")
-
- // Define a funcao a ser chama no link
- cSite := "u_SMSPortal.apw?PR="+cCodLogin
-
- // Monta o cabeçalho para a pagina
- cHeader := U_PSHeader(cTitle, cSite)
-
- //Função que atualiza os menus
- cMenus := U_GetMenus(AllTrim(Upper(Procname())), cVendLogin)
-
- //Armazéns considerados para busca do estoque
- //@Todo - Ainda precisa?
- cArmazem:= GetNewPar("PR_ARMZPR","'01'") //deve estar no formato '01','02'
- //Tipos de produto que devem ser exibidos na consulta
- cTipoProd:= GetNewPar("PR_TPPROD","PA|RE")
-
- //Grupos de produto que devem ser exibidos na consulta
- cGrupoProd:= GetNewPar("PR_GRPPROD","PE|PEL")
- If type("HttpPost->FILTROP") <> "U"
- if !empty(HttpPost->FILTROP)
- cTabela := Alltrim(HttpPost->FILTROP)//@Todo - Valor fixado em 001
- //cGrupoP := HttpPost->GRUPOP
- cOport := Alltrim(HttpPost->OPORTUN)
- cUFEntr := Alltrim(HttpPost->EST_ENTRE)
- cUFFat := Alltrim(HttpPost->EST_FAT)
- cMunEnt := Alltrim(HttpPost->MUN_ENTRE)
- cTpCli := Alltrim(HttpPost->TPCLI)
- if !empty(Alltrim(HttpPost->CLIENTE))
- cCliSel := Alltrim(HttpPost->CLIENTE)
- else
- cCliSel := RetCli(cUFFat,cTpCli)//Usuario não preencheu o campo do cliente
- endif
- endif
- endif
- cQuery := " Select A1_COD, A1_LOJA, A1_NOME,A1_TIPO,A1_EST,A1_MUN,A1_GRPTRIB"
- cQuery += " From "+RetSqlName("SA1")+" SA1 "
- cQuery += " Where A1_FILIAL = '"+xFilial("SA1")+"' "
- cQuery += " And A1_MSBLQL <> '1'"
- cQuery += " AND A1_VEND = '"+cVendLogin+"' "
- if !empty(cCliSel)//Ao entrar na rotina, não estava vindo nenhum cliente para seleção
- if !empty(Alltrim(HttpPost->CLIENTE))
- cQuery += " AND A1_COD = '"+SubStr(cCliSel,1,len(cCliSel)-2)+"' "
- endif
- endif
- cQuery += " And SA1.D_E_L_E_T_ = ' ' "
- cQuery += " Order by A1_COD "
- If Select("QRY") > 0
- QRY->(dbCloseArea())
- Endif
- APWExOpenQuery(ChangeQuery(cQuery),"QRY",.T.)
- //Query das oportunidades
- cQuery := " Select AD1_NROPOR,AD1_REVISA, AD1_DESCRI, AD1_DESCCI, AD1_NOMPAR"
- cQuery += " From "+RetSqlName("AD1")+" AD1 "
- cQuery += " Where AD1_FILIAL = '"+xFilial("AD1")+"' "
- cQuery += " And AD1_HOMOLO = '3' " //Status homologação = homologado
- cQuery += " And AD1.D_E_L_E_T_ = ' ' "
- cQuery += " Order by AD1_NROPOR "
- If Select("QRYAD1") > 0
- QRYAD1->(dbCloseArea())
- Endif
- APWExOpenQuery(ChangeQuery(cQuery),"QRYAD1",.T.)
- //Query dos grupos de produtos
- /*cQuery := " Select BM_GRUPO,BM_DESC"
- cQuery += " From "+RetSqlName("SBM")+" SBM "
- cQuery += " Where BM_FILIAL = '"+xFilial("SBM")+"' "
- cQuery += " And BM_GRUPO NOT IN ('PE') AND BM_MSBLQL <> '1' AND SBM.D_E_L_E_T_ = ' ' "
- cQuery += " Order by BM_GRUPO "
- If Select("QRYSBM") > 0
- QRYSBM->(dbCloseArea())
- Endif
- APWExOpenQuery(ChangeQuery(cQuery),"QRYSBM",.T.)
- */
- aTpCli := {{"F","Cons. Final"},{"L","Prod. Rural"},{"R","Revendedor"},{"S","Solidario"},{"X","Exportacao"}}
- aEstados := {"AC","AL","AM","AP","BA","CE","DF","ES","EX","GO","MA","MG","MS","MT","PA","PB","PI","PR","RJ","RN","RO","RR","RS","SC","SE","SP","TO"}
- aMunicipio := {}
- cTopo := '<form name="formGrid" id="formGrid" method="POST" action="U_Estoque.apw?PR=' + cCodLogin + '">'
- //1º Linha
- //-----------------------CLIENTE---------------------
- cTopo += ' <div class="row form-group">'
- cTopo += ' <div class="col-12">'
- cTopo += ' <label class="col-md-1 control-label">Cliente:</label>'
- cTopo += ' <div class="col-md-8">'
- cTopo += ' <select data-plugin-selectTwo class="form-control populate placeholder" data-plugin-options='+"'"
- cTopo += ' { "placeholder": "Selecione um Cliente", "allowClear": false }'+"'"+' name="CLIENTE" id="CLIENTE" '
- cTopo += ' onchange="javascript:SelectCli()" > '
- if empty(cCliSel) .or. empty(Alltrim(HttpPost->CLIENTE))
- cTopo += ' <option value=""> </option>'
- endif
- While !QRY->(EOF())
- cTopo += ' <option value="' + Alltrim(QRY->A1_COD + QRY->A1_LOJA) ;
- + '" TIPO="'+QRY->A1_TIPO+'" EST="'+QRY->A1_EST+'" ESTE="'+QRY->A1_EST+'" MUN="'+QRY->A1_MUN+'" >' ;
- + QRY->A1_COD + '/' + QRY->A1_LOJA + ' - ' + Alltrim(QRY->A1_NOME) + '</option>'
- QRY->(dbSkip())
- End
- cTopo += ' </select>'
- cTopo += ' </div>'
- //-----------------------TIPO DO CLIENTE---------------------
- cTopo += ' <label class="col-md-1 control-label text-right">Tipo:</label>'
- cTopo += ' <div class="col-md-2">'
- cTopo += ' <select data-plugin-selectTwo class="form-control poulate mb-md" data-plugin-options='+"'"+'{"minimumResultsForSearch": "-1"}'+"'"'
- cTopo += ' name="TPCLI" id="TPCLI">'
- if Empty(cTpCli)
- cTopo += ' <option value=""> </option>'
- else
- cTopo += ' <option value="' + aTpCli[aScan(aTpCli,{|x| alltrim(x[1]) == cTpCli}), 1] + '">' + aTpCli[aScan(aTpCli,{|x| alltrim(x[1]) == cTpCli}), 2] + '</option>'
- endif
- for i := 1 to Len(aTpCli)
- cTopo += ' <option value="' + aTpCli[i, 1] + '">' + aTpCli[i, 2] + '</option>'
- Next
- cTopo += ' </select>'
- cTopo += ' </div>'
- cTopo += ' </div>'
- cTopo += ' </div>'
- //2º Linha
- //-----------------------ESTADO FATURAMENTO---------------------
- cTopo += ' <div class="row form-group">'
- cTopo += ' <label class="col-md-2 control-label">Estado Faturamento:</label>'
- cTopo += ' <div class="col-md-2">'
- cTopo += ' <select data-plugin-selectTwo class="form-control poulate mb-md" data-plugin-options='+"'"+'{"minimumResultsForSearch": "-1"}'+"'"'
- cTopo += ' name="EST_FAT" id="EST_FAT">'
- if Empty(cUFFat)
- cTopo += ' <option value=""> </option>'
- else
- cTopo += ' <option value="' + aEstados[aScan(aEstados,cUFFat)] + '">' + aEstados[aScan(aEstados,cUFFat)] + '</option>'
- endif
- for i := 1 to Len(aEstados)
- cTopo += ' <option value="' + aEstados[i] + '">' + aEstados[i] + '</option>'
- Next
- cTopo += ' </select>'
- cTopo += ' </div>'
- //-----------------------ESTADO ENTREGA---------------------
- cTopo += ' <label class="col-md-1 control-label">Estado Entrega:</label>'
- cTopo += ' <div class="col-md-2">'
- cTopo += ' <select data-plugin-selectTwo class="form-control poulate mb-md" data-plugin-options='+"'"+'{"minimumResultsForSearch": "-1"}'+"'"'
- cTopo += ' name="EST_ENTRE" id="EST_ENTRE" onchange="javascript:retMunicipios('+"'"+cMunEnt+"'"+')">'
- if empty(cUfEntr)
- cTopo += ' <option value=""> </option>'
- else
- cTopo += ' <option value="' + aEstados[aScan(aEstados,cUfEntr)] + '">' + aEstados[aScan(aEstados,cUfEntr)] + '</option>'
- endif
- for i := 1 to Len(aEstados)
- cTopo += ' <option value="' + aEstados[i] + '">' + aEstados[i] + '</option>'
- Next
- cTopo += ' </select>'
- cTopo += ' </div>'
- //-----------------------MUNICIPIO ENTREGA---------------------
- cTopo += ' <label class="col-md-1 control-label">Município Entrega:</label>'
- cTopo += ' <div class="col-md-4">'
- cTopo += ' <select data-plugin-selectTwo class="form-control poulate mb-md" data-plugin-options='+"'"+'{"minimumResultsForSearch": "-1"}'+"'"'
- cTopo += ' name="MUN_ENTRE" id="MUN_ENTRE">'
- if empty(cMunEnt)
- cTopo += ' <option value=""> </option>'
- else
- cTopo += u_retMun(cCliSel,cUFEntr)
- endif
- cTopo += ' </select>'
- cTopo += ' </div>'
- cTopo += ' </div>'
- //3º Linha
- //-----------------------OPORTUNIDADE---------------------
- cTopo += ' <div class="row form-group">'
- cTopo += ' <label class="col-md-2 control-label text-left">Oportunidade:</label>'
- cTopo += ' <div class="col-md-4">'
- cTopo += ' <select data-plugin-selectTwo class="form-control populate placeholder" data-plugin-options='+"'"
- cTopo += ' { "placeholder": "Selecione a oportunidade", "allowClear": false }'+"'"+' name="OPORTUN" id="OPORTUN" >'
-
- if Empty(cOport)
- cTopo += ' <option value=""> </option>'
- else
- If cOport = 'ZZZZZZ'
- cTopo += ' <option value="ZZZZZZ">ZZZZZZ - SEM OPORTUNIDADE </option>'
- Else
- cTopo += ' <option value="' + Alltrim(cOport)+'">'+cOport+'/'+Alltrim(GetAdvfVal("AD1","AD1_REVISA",xFilial("AD1")+cOport,1))+'/'+;
- Alltrim(GetAdvfVal("AD1","AD1_DESCRI",xFilial("AD1")+cOport,1))+'/'+Alltrim(GetAdvfVal("AD1","AD1_DESCCI",xFilial("AD1")+cOport,1))+'/'+;
- Alltrim(GetAdvfVal("AD1","AD1_NOMPAR",xFilial("AD1")+cOport,1))+'</option>'
- Endif
- endif
- cTopo += ' <option value="ZZZZZZ">ZZZZZZ - SEM OPORTUNIDADE </option>'
- While !QRYAD1->(EOF())
- If Alltrim(QRYAD1->AD1_NROPOR) <> cOport
- cTopo += ' <option value="' + Alltrim(QRYAD1->AD1_NROPOR)+'">'+QRYAD1->AD1_NROPOR+'/'+Alltrim(QRYAD1->AD1_REVISA)+'/'+;
- Alltrim(QRYAD1->AD1_DESCRI)+'/'+Alltrim(QRYAD1->AD1_DESCCI)+'/'+Alltrim(QRYAD1->AD1_NOMPAR)+'</option>'
- Endif
- QRYAD1->(dbSkip())
- End
- cTopo += ' </select>'
- cTopo += ' </div>'
-
- //-----------------------GRUPO PRODUTO---------------------
- //cTopo += ' <div class="row form-group">'
- /*
- cTopo += ' <label class="col-md-1 control-label">Grupo:</label>'
- cTopo += ' <input type="hidden" name="GRUPOP" id="GRUPOP" value="" />'
- cTopo += ' <div class="col-md-5">'
- cTopo += ' <select data-plugin-selectTwo class="form-control populate placeholder" data-plugin-options='+"'"
- cTopo += ' { "placeholder": "Selecione a oportunidade", "allowClear": false }'+"'"+' name="GRUP_PROD" id="GRUP_PROD"> '
- if empty(cGrupoP)
- cTopo += ' <option value=""> </option>'
- else
- cTopo += ' <option value="' + Alltrim(cGrupoP)+'">'+cGrupoP + ' - ' + GetAdvfVal("SBM","BM_DESC",xFilial("SBM")+cGrupoP,1)+'</option>'
- endif
-
- While !QRYSBM->(EOF())
- cTopo += ' <option value="' + Alltrim(QRYSBM->BM_GRUPO)+'">'+QRYSBM->BM_GRUPO + ' - ' + Alltrim(QRYSBM->BM_DESC) +'</option>'
- QRYSBM->(dbSkip())
- End
-
- cTopo += ' </select>'
- cTopo += ' </div>'
- */
- cTopo += ' </div>'
- //-----------------------BOTAO BUSCAR---------------------
- cTopo += ' <br>'
- cTopo += ' <div class="row form-group text-center">'
- cTopo += ' <input type="hidden" name="FILTROP" id="FILTROP" value="" />'
- //cTopo += ' <div class="col-md-5" offset-2 style="text-align: right">'
- cTopo += '<input class="btn btn-primary" type="button" id="btFiltro" name="btFiltro" value="Consultar" onclick="this.value= ' + "'Consultando...'" + ';Filtro()" />'+chr(13)+chr(10)
- //cTopo += ' </div>'
- cTopo += ' </div>'
- cTopo += '</form>'
- APWExCloseQuery('QRY')
- cColunas+='<th>Código</th>'
- cColunas+='<th>Descrição</th>'
- cColunas+='<th>Qtd Disponível</th>'
- cColunas+='<th>Preço de Venda</th>'
- conout("Antes query: "+Time())
- if !empty(cTabela)
- cQry := "SELECT CODIGO,PRODUTO,sum(SALDO_ATUAL) SALDO "
- cQry += "FROM V_BI_ESTQ_01_SEM_DONO "
- cQry += "INNER JOIN "+RetSqlName("SB1")+" SB1 ON B1_COD = CODIGO AND SB1.D_E_L_E_T_ = ' ' "
- cQry += " AND B1_TIPO IN ('PA','RE') "
- cQry += " AND B1_MSBLQL <> '1' "
- cQry += "WHERE GRUPO NOT IN ('PEL','PE') "
- cQry += "GROUP BY CODIGO,PRODUTO"
- cQry += "ORDER BY 1"
- /*
- cQry := "SELECT CODIGO,PRODUTO,sum(SALDO_ATUAL) SALDO FROM V_BI_ESTQ_01_SEM_DONO"
- cQry += " WHERE GRUPO = '"+cGrupoP+"' "
- cQry += " GROUP BY CODIGO,PRODUTO"
- cQry += " ORDER BY 1"
- */
- If Select("QRPB2") > 0
- QRPB2->(dbCloseArea())
- Endif
- APWExOpenQuery(ChangeQuery(cQry),'QRPB2',.T.)
- conout("depois query: "+Time())
- conout("query estoque: "+cQuery)
- DbSelectArea("SA1")
- DbSelectArea("SB1")
- DbSelectArea("AD1")
- While QRPB2->(!Eof())
- lOportun:= .F.
- SA1->(DbSetOrder(1))
- if SA1->(DbSeek(xFilial("SA1")+SubStr(cCliSel,1,6)+SubStr(cCliSel,7,2)))
- SB1->(DbSetOrder(1))
- if SB1->(DbSeek(xFilial("SB1")+Alltrim(QRPB2->CODIGO)))
- If (SB1->B1_TIPO $ cTipoProd) .and. !(SB1->B1_GRUPO $ cGrupoProd)
- AD1->(DbSetOrder(1))
- if AD1->(DbSeek(xFilial("AD1")+cOport))//AD1_FILIAL+AD1_NROPOR+AD1_REVISA
- lOportun:= .T.
- endif
- nPrcVen := cpFata1003(cUfEntr,cMunEnt,lOportun)
- cItens+='<tr>'
- cItens+=' <td>'+Alltrim(QRPB2->CODIGO)+'</td>'
- cItens+=' <td>'+Alltrim(QRPB2->PRODUTO)+'</td>'
- cItens+=' <td>'+cValtoChar(Iif(QRPB2->SALDO > 0, QRPB2->SALDO, 0))+'</td>'
- cItens+=' <td>'+Transform(nPrcVen,'@E 9,999,999.9999')+'</td>'
- cItens+='</tr>'
-
- Endif
- endif
- endif
- QRPB2->(dbSkip())
- End
- endif
- conout("final rotina: "+Time())
- //oObjLog:saveMsg("Vai chamar H_SMSGrid")
- cHtml := H_SMSGrid()
- //oObjLog:saveMsg("Vai retornar")
- Web Extended End
- Return (cHTML)
- User Function RetMun(cCli,cUF)
- Local cHtml
- Local cSigla := iif(empty(HttpPost->CEST),cUF,HttpPost->CEST)
- Local cCliente := iif(empty(HttpPost->CCLI),cCli,HttpPost->CCLI)
- Local cMuns := ""
- Local cCodMun := ""
- Web Extended Init cHtml Start U_inSite()
- cQry:="SELECT CC2_EST,CC2_CODMUN,CC2_MUN "
- cQry+=" From "+RetSqlName("CC2")+" CC2"
- cQry+=" Where CC2_FILIAL = '"+xFilial("CC2")+"' "
- cQry+=" And CC2_EST = '"+cSigla+"' "
- cQry+=" AND CC2.D_E_L_E_T_ = ' ' "
- cQry+=" ORDER BY CC2_MUN "
- If Select("QRPCC2") > 0
- QRPCC2->(dbCloseArea())
- Endif
- APWExOpenQuery(ChangeQuery(cQry),'QRPCC2',.T.)
- DbSelectArea("SA1")
- SA1->(DbSetOrder(1))
- if SA1->(DbSeek(xFilial("SA1")+cCliente))
- if SA1->A1_EST == cSigla
- cCodMun := GetAdvfVal("CC2","CC2_CODMUN",xFilial("CC2")+SA1->A1_EST,1)
- cMuns +=' <option value="'+Alltrim(cCodMun)+'">'+encodeUTF8(Alltrim(Strtran(SA1->A1_MUN,"'","")))+'</option>'
- endif
- endif
- While QRPCC2->(!Eof())
- cMuns += ' <option value="' + Alltrim(QRPCC2->CC2_CODMUN) + '"'
- cMuns += '>' + encodeUTF8(Alltrim(Strtran(QRPCC2->CC2_MUN, "'", ""))) + '</option>'
- QRPCC2->(dbSkip())
- End
-
- cHtml:= cMuns
- Web Extended end
- Return cHtml
- Static Function cpFata1003(cUfEntr,cMunEnt,lOportun)
- Local aArea := GetArea()
- Local cPrTabela := 0
-
- If Select("QRY") > 0
- dbSelectArea("QRY")
- QRY->(DbCloseArea())
- Endif
- cQuery := "SELECT * FROM "
- cQuery += RetSQLName("SF7")
- cQuery += " WHERE F7_FILIAL = '" + xFilial("SF7") + "' "
- cQuery += " AND F7_GRTRIB = '" + Trim(SB1->B1_GRTRIB) + "' "
- cQuery += " AND F7_EST = '" + SA1->A1_EST + "' "
- cQuery += " AND F7_TIPOCLI = '" + SA1->A1_TIPO + "' "
- cQuery += " AND F7_GRPCLI = '" + SA1->A1_GRPTRIB + "' "
- cQuery += " AND D_E_L_E_T_ = ' '" + " "
- TcQuery cQuery New Alias "QRY"
- cProduto := SB1->B1_COD//TMP1->CK_PRODUTO
- oObjLog:saveMsg("Estoque.apl - Calculo do produto:"+cProduto)
-
- If SB1->B1_TIPO = 'CO' .AND. SB1->B1_GRUPO = 'ELEV'
- oObjLog:saveMsg("Estoque.apl - Tipo do produto igual a CO e grupo igual a ELEV")
- cPrUnit := SB1->B1_CUSTD
- oObjLog:saveMsg("Estoque.apl - Recebeu preço de custo da SB1: "+cValtoChar(cPrUnit))
- Return(cPrUnit)
- EndIf
- If Select("QRY1") > 0
- dbSelectArea("QRY1")
- QRY1->(DbCloseArea())
- Endif
-
- cQuery1 := "SELECT DA1_PRCVEN FROM "
- cQuery1 += RetSQLName("DA1")
- cQuery1 += " WHERE DA1_FILIAL = '" + xFilial("DA1") + "' "
- cQuery1 += " AND DA1_CODPRO = '" + Trim(cProduto) + "' " //SB1->B1_COD + "' "
- cQuery1 += " AND DA1_CODTAB = '" + QRY->F7_TPL + "' "
- cQuery1 += " AND D_E_L_E_T_ = ' '"
- TcQuery cQuery1 New Alias "QRY1"
- If !QRY1->(Eof())
- cPrTabela := QRY1->DA1_PRCVEN
- oObjLog:saveMsg("Estoque.apl - Recebeu preço da tabela de venda: "+DA1->DA1_CODTAB+"="+cValtoChar(cPrTabela))
- Else
- cPrTabela := 0
- oObjLog:saveMsg("Estoque.apl - retorno zero da tabela de preço")
- EndIf
- cPrUnit := (cPrTabela - (cPrTabela * ((18 - QRY->F7_CARGICM - QRY->F7_FATCORR)/100)))
- If lOportun
- If AD1->AD1_COMIRT > 0
- cPrUnit := (cPrUnit * ((AD1->AD1_COMIRT/100)+1))
- oObjLog:saveMsg("Estoque.apl - entrou no calculo da oportunidade: "+cValtochar(cPrUnit)+" * ("+cValtochar(AD1->AD1_COMIRT)+"/100)+1")
- EndIf
- EndIf
- DbSelectArea("SZ3")
- SZ3->(DbSetOrder(1))//Z3_FILIAL+Z3_UF+Z3_MUNICIP
- if SZ3->(DbSeek(xFilial("SZ3")+cUfEntr+cMunEnt))
- oObjLog:saveMsg("Estoque.apl - Encntrou a UF e Municipio")
- If SZ3->Z3_PERFRAD > 0//Z3_VLFRMIN
- cPrUnit := (cPrUnit * ((SZ3->Z3_PERFRAD/100)+1))
- oObjLog:saveMsg("Estoque.apl - Entrou na SZ3 com SZ3->Z3_PERFRAD > 0: "+cValtoChar(cPrUnit)+" * ("+cValtoChar(SZ3->Z3_PERFRAD)+" /100)+1")
- EndIf
- elseif SZ3->(DbSeek(xFilial("SZ3")+cUfEntr))
- oObjLog:saveMsg("Estoque.apl - Encntrou a UF")
- If SZ3->Z3_PERFRAD > 0
- cPrUnit := (cPrUnit * ((SZ3->Z3_PERFRAD/100)+1))
- oObjLog:saveMsg("Estoque.apl - Entrou na SZ3 com SZ3->Z3_PERFRAD > 0: "+cValtoChar(cPrUnit)+" * ("+cValtoChar(SZ3->Z3_PERFRAD)+" /100)+1")
- EndIf
- endif
- oObjLog:saveMsg("Estoque.apl - Preço final retornado: "+cValtoChar(cPrUnit))
-
- RestArea(aArea)
- Return(cPrUnit)
- Static Function retCli(cEstFat,cTipoCli)
- Local aArea := GetArea()
- Local cCodigo := ""
- If Select("QRYCLI") > 0
- dbSelectArea("QRYCLI")
- QRYCLI->(DbCloseArea())
- Endif
- cQuery := "SELECT A1_COD,A1_LOJA FROM "+RetSQLName("SA1")+" SA1 "
- cQuery += " WHERE D_E_L_E_T_ = ' '"
- cQuery += " AND A1_TIPO = '"+cTipoCli+"' AND A1_EST = '"+cEstFat+"'"
- cQuery += " AND A1_COD = 'CLI-"+cEstFat+"' "
- TcQuery cQuery New Alias "QRYCLI"
- If !QRYCLI->(Eof())
- cCodigo := QRYCLI->A1_COD+QRYCLI->A1_LOJA
- oObjLog:saveMsg("Cliente padrão selecionado:"+cCodigo)
- else
- oObjLog:saveMsg("Estoque.apl - Cliente padrão não encontrado.")
- endif
- RestArea(aArea)
- Return cCodigo
|