ALIAS _ItKits

variavel zPrCustoEmFalta =0
variavel zFgFaltas="N"
variavel zFgSoFaltas="N"
variavel zFgPrecos="N"
variavel zFgCorte="S"
variavel zFgCorteSimplificado="S"
variavel zFgSoCorte="S"
variavel znPecas=0
variavel z0QtdCompra=0
variavel z1QtdCompra=0
variavel zLarguraPeca=0
variavel zAlturaPeca = 0
variavel zLarguraCompra = 0
variavel zAlturaCompra = 0
variavel zSobra1Barra=0
variavel zqPecas1UndCompra=0
variavel zSobraCompra=0
variavel zpDesc=''
variavel zaPc={}
// variavel sPrtLineLen = 80

comando antes #TEXTO_FONTE
   // oLst:lPortrait := .t.
   oLst:nLinesPorPagina := 80

   oLst:AddCol('Insumo;PcodInsumo;N;999999;6;;')
   oLst:AddCol('Descricao;pdesc;C;@S35;35;;')
   if zFgSoCorte<>"S"
      oLst:AddCol('Qtd_1;mQuant;N;@e 99999.99;9;;')
      oLst:AddCol('Qtd_Os;mQtdOs*mQuant;P;@e 99999.99;9;;')
      if zFgFaltas='S'
         oLst:AddCol('Saldo;peAtual;N;@e 99999.99;9;;')
         oLst:AddCol('Falta;if(mQtdOs*mQuant>peAtual,mQtdOs*mQuant-peAtual,0);P;@e 99999.99;9;;')
         if zFgPrecos='S'
            oLst:AddCol('PrUnit;pVluVen3;N;@e 99999.99;9;;')
            oLst:AddCol('PrTotFalt;if(mQtdOs*mQuant>peAtual,pVluVen3*(mQtdOs*mQuant-peAtual),0);P;@e 99999.99;9;;')
         endif
      endif
   endif
   if zFgCorte="S"
      if zFgCorteSimplificado<>"S"
         oLst:AddCol('Pecas\n1 Unid;if(pPecas>0,pPecas,"");P;999999.99;9;;;Direita;NaoSome;')
      endif
      if zFgCorteSimplificado<>"S"
         oLst:AddCol('Altura\n1 Peca;if(pAltura>0,pAltura,"");N;9999.99;7;;;Direita;NaoSome;')
      endif
      oLst:AddCol('Unids\nInteiras;if(pPecas>0,z0QtdCompra+z1QtdCompra,"");P;999999.99;9;;;Direita;NaoSome;')
      oLst:AddCol('Pecas;if(pPecas>0,znPecas,"");P;999999.99;9;;;Direita;NaoSome;')
      oLst:AddCol('Tamanho\n1 Peca;if(pLargura>0,pLargura,"");P;9999.99;7;;;Direita;NaoSome;')
      if zFgCorteSimplificado<>"S"
         oLst:AddCol('Pecas\nPor Barra;if(pPecas>0,zqPecas1UndCompra,"");P;999999.99;9;;;Direita;NaoSome;')
         oLst:AddCol('Tot_Perda\nCorte;if(pPecas>0.and.zSobra1Barra>0,Str(z0QtdCompra,6)+" x "+Str(zSobra1Barra,5,2),"");P;@S14;14;;;Direita;NaoSome;')
         oLst:AddCol('Sobra\nUlt_Barra;if(pPecas>0.and.z1QtdCompra>0,zSobraCompra,"");P;999999.99;9;;;Direita;NaoSome;')
      endif
   endif
   oLst:AddCol('QtdOs;"para os "+lTrim(Str(_kits->mQtdOs,10))+" "+Lower(_kits->pDesc)+" (Cod:"+lTrim(Str(pCod,6));P;@S35;35;;')
   
   if zFgCorte="S"
      oLst:AddCol('ObsCorte;pObsForma;C;@S20;20;;')
   endif

   // oLst:AddCab( {"FONT"=>"Helvetica,14", "COLS"=>"0,C"}, "OS para Montagem do Pedido "+ltrim(str(m_fnumped,10)))
   // oLst:AddCab( "(Cod "+lTrim(Str(_kits->pcod,6))+") "+lTrim(_kits->pDesc) )
   oLst:AddCab( if(zFgSoFaltas="S","VALOR DAS FALTAS","OS")+" para Montagem do Pedido "+ltrim(str(m_fnumped,10)))
   // if mQtdOs>_kits->pEatual
   //    oLst:AddCab( "Saldo em Estoque: "+lTrim(Str(_kits->pEatual,10))+"  A Fabricar: "+lTrim(Str(mQtdOs-_kits->pEatual)) )
   // else
   //    oLst:AddCab( "Saldo em Estoque: "+lTrim(Str(_kits->pEatual,10)) )
   // endif
   oLst:AddCab( '_LINHA_FINA_' )
   oLst:AddCab( '_CABCOLS_' )
   oLst:AddCab( '_LINHA_GROSSA_' )

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


   oLst:AddGroup( { "KEY"=>{||PcodInsumo} } )

   oLst:AddGroup( { "FOOTER"=>{ {||len(zaPc)>1}, {|| zAux:="........  Plano Corte: "+BrwComposicoes("planocorte",zaPc)} } } )
   
   oLst:AddGroup( { "FOOTER"=>{ {||zaPc:={},'_PULE_1LINHA_'} } } )

   // oLst:AddGroup( { "FOOTER"=>{ {|| zAux:=Pad(" ",len(zAux)) + Transform(zSaldoAcum,"@E 999,999,999.99") +" T  "+z0strsaldo, ztSupDia:=0,ztRetDia:=0,z0SldDia:=zSaldoAcum, zAux}, '_PULE_1LINHA_' } } )
   // oLst:AddGroup( { "SOMAS"=> {||nvCred:=if(tipo="S",valor,0), nvDeb:=if(tipo="S",0,valor), ztSupDia+=nvCred, ztRetDia+=nvDeb, ztCred+=nvCred, ztDeb+=nvDeb, zSaldoAcum+=nvCred-nvDeb } } )


   DbGoTop()
   Do While .not. eof()
      zPrCustoEmFalta:=0
      znPecas:=0
      z0QtdCompra:=0
      z1QtdCompra:=0
      zLarguraPeca:=0
      zAlturaPeca:= 0
      zLarguraCompra:= 0
      zAlturaCompra:= 0
      zSobra1Barra:=0
      zqPecas1UndCompra:=0
      zSobraCompra:=0
      
      if _kits->mQtdOs*mQuant-peAtual > 0
         zPrCustoEmFalta := zPrCustoEmFalta + pVluVen3*(_kits->mQtdOs*mQuant-peAtual)
      endif
      
      zLarguraPeca := if(pLargura=0,1,pLargura)
      zAlturaPeca := if(pAltura=0,1,pAltura)  
      znPecas := _kits->mQtdOs*pPecas

      zLarguraCompra := if(pLargCompr=0,1,pLargCompr)
      zAlturaCompra := if(pAltCompr=0,1,pAltCompr)  

      zqPecas1UndCompra := Int((zLarguraCompra*zAlturaCompra)/(zLarguraPeca*zAlturaPeca))
      zSobra1Barra := ((zLarguraCompra*zAlturaCompra)-(zLarguraPeca*zAlturaPeca)*zqPecas1UndCompra)
      
      z0QtdCompra := int( znPecas/zqPecas1UndCompra ) 
      z1QtdCompra := if(znPecas%zqPecas1UndCompra>0,1,0)
      
      zSobraCompra := if(z1QtdCompra>0, (zLarguraCompra*zAlturaCompra) - z1QtdCompra*(znPecas-z0QtdCompra*zqPecas1UndCompra)*(zLarguraPeca*zAlturaPeca), 0)
      
      if (zFgSoFaltas<>"S" .or. _kits->mQtdOs*mQuant-peAtual > 0) .and. (zFgSoCorte<>"S" .or. pPecas>0)
         oLst:EvalCabDetRod()
         aAdd(zaPc, {zLarguraCompra, zAlturaCompra, zLarguraPeca, zAlturaPeca, z0QtdCompra, zqPecas1UndCompra, zSobra1Barra} )
      endif
      DbSkip()
   EndDo

#FIM_TEXTO_FONTE

comando depois #TEXTO_FONTE
   oLst:lPrtRodape := .f.
   // oLst:EvalLineBlocks('DETALHE', '_PULE_1LINHA_', '_LINHA_GROSSA_', '_SOMACOLS_')
   if zPrCustoEmFalta > 0 
      oLst:EvalLineBlocks('DETALHE', '_PULE_1LINHA_', '_LINHA_GROSSA_', {"ROWCOL" => "oLst:oPdf:pRow,0"}, "", "Custo Total das Faltas: "+lTrim(Transform(zPrCustoEmFalta,"@E 99999,999.99")))
   endif
   oLst:Run()
   oLst:End()
#FIM_TEXTO_FONTE
