#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