ALIAS SE_PROD

VARIAVEL zFgRedefinePrecos := "N"
VARIAVEL zFgSoAbaixo := "S"
VARIAVEL zFgSoAcima := "N"
VARIAVEL zFgSoEstoque := "N"
VARIAVEL zPvluVendaMkp := 0
VARIAVEL zAlterou := ""
VARIAVEL zTaxas := ""
T4,5,18,88,Alteracao de Precos pelo Markup

T2, 2,Grupo de precos.:,6,m_Grupo,XXXXX;.f.;
T3, 2,Descricao ......:,30,m_descricao,@s30;.f.;
T5, 2,Markup Minimo(%):,6,m_markup,999.99;.f.;

T7, 2,Redefine Precos de Venda Abaixo do Markup?,1,zFgRedefinePrecos,!;m_markup>0;

T 9,2,Lista Apenas Produtos Abaixo do Markup   ?,1,zFgSoAbaixo,!;(zFgRedefinePrecos<>"S");
T10,2,Lista Apenas Produtos Acima  do Markup   ?,1,zFgSoAcima,!;(zFgRedefinePrecos<>"S".and.zFgSoAbaixo<>"S");
T11,2,Lista Apenas Produtos com Estoque        ?,1,zFgSoEstoque,!;

comando antes #TEXTO_FONTE

   Private zFgOk, zoProgressBar, zQtdAlterados:=0, zRecnoProd:=0
   if select("se_prod")=0
      Abra('0NOIDX',r_siga,'se_prod','se_prod','seip_n','pdesc')
   else
      zRecnoProd:=se_prod->(Recno())
   endif

   DbSelectArea("SE_PROD")
   zTaxas:="%Markup Minimo: "+Str(m_markup,5,2)+"%  So Abaixo do Markup? "+zFgSoAbaixo+"   So Acima? "+zFgSoAcima+"  So Com Estoque? "+zFgSoEstoque+"  Redefine Precos?"+zFgRedefinePrecos

   // oLst:nFontSize := 10
   oLst:lPortrait := .t.
   // oLst:nLinesPorPagina := 40

   oLst:cAlias_DataCols := 'prod'
   oLst:cAliasMaster    := 'prod'

   if zFgRedefinePrecos="S"
      oLst:Cab1( "Redefinicao de Precos pelo Markup" )
   else
      oLst:Cab1( "Auditoria de Precos pelo Markup" )
   endif
   oLst:AddCab( {"style"=>"font:Helvetica-Oblique#size:9", "COLS"=>"0,C"}, {|| zTaxas } )
   
   oLst:AddCab( '_LINHA_FINA_' )
   oLst:AddCab( '_CABCOLS_' )
   oLst:AddCab( '_LINHA_GROSSA_' )

   oLst:AddCol('Descricao;PDESC;C;@s25;25;S;')
   oLst:AddCol('Un;PUNIDADE;C;xxxxx;  3;;')
   oLst:AddCol('Tp;Ptipoitem;C;99;2;S;')
   oLst:AddCol('Finalidade;Efd_TipoItem();P;@S13;13;N;')
   oLst:AddCol('Cod;PCOD;N;99999;5;N;')
   oLst:AddCol('Fracao;PITENS;N;9999.999;8;;')
   oLst:AddCol('Saldo\nEstoque;pEatual;N;999999999;  9;;')
   oLst:AddCol('PrCompra;PVLUVEN3;N;99999.99; 9;;')
   oLst:AddCol('PrVenda\nMarkup;zPvluVendaMkp;P;99999.99;9;;')
   oLst:AddCol('PrVenda\nOriginal;pVluVenda;P;99999.99;9;;')
   oLst:AddCol('Situacao;zAlterou;P;@S20;20;;')

   oLst:AddRodape( '_LINHA_FINA_', "", {|| "Pagina "+Str(++pag,4)+" / ####"} )

   DbSelectArea("SE_PROD")
	DbGoTop()
   zoProgressBar := myhProgressBar():Create('Processando Lancamentos...')
	Do While .not. eof()
      zoProgressBar:Step()
      if AllTrim(pgPreco)==AllTrim(m_Grupo) .and. (zFgSoEstoque<>"S".or.peatual>0)
         zPvluVendaMkp := Se_Prod->pVluVen3 * (1+m_markup/100)
         if (zFgSoAbaixo<>"S".and.zFgSoAcima<>"S").or.(zFgSoAbaixo="S".and.(zPvluVendaMkp-pVluVenda)>0.01).or.(zFgSoAcima="S".and.(pVluVenda-zPvluVendaMkp)>0.01)
            if zFgRedefinePrecos="S" .and. zPvluVendaMkp>pVluVenda
               Se_Prod->( RegLock(), _field->pVluVenda:=zPvluVendaMkp, _field->pDataAlter:=S_dAtual )
               zAlterou := "*Redefiniu Preco*"
               ++zQtdAlterados
            else
               if zFgRedefinePrecos="S"
               zAlterou := "*NAO Redefiniu*"
               else
                  if zPvluVendaMkp>pVluVenda
                     zAlterou := "*Deveria Alterar*"
                  else
                     zAlterou := "*Nao Alteraria*"
                  endif
               endif
            endif
            oLst:PrtD('_DATACOLS_')
   	   endif
	   endif
	   DbSkip()
	EndDo
   zoProgressBar:Close()
   if(zRecnoProd=0, se_prod->(DbCloseArea()) , se_prod->(DbGoTo(zRecnoProd),DbCommit(),DbUnlock()) )
   oLst:Run()
   oLst:End()
   if zQtdAlterados>0
      Alert("Foram alterados os precos de "+lTrim(Str(zQtdAlterados,6))+" Produtos")
   endif
#FIM_TEXTO_FONTE