VARIAVEL Z_AAMM = right( str(year(date()),4), 2) + strzero( month(date()) ,2) 
VARIAVEL z_pfnum = 0 
VARIAVEL z_pfnumped = 0 
VARIAVEL z_forn = 0 
VARIAVEL Z_DE = CTOD( "01."+SUBSTR(DTOC(S_DATUAL),4) )
VARIAVEL Z_ATE = S_DATUAL
*
VARIAVEL Z_MOVE = "" 
VARIAVEL Z_FATF = "" 
T10,10,17,60,Parametros 
T2,4,Ano e Mes (AaMm) :,4,z_aamm,9999 
T3,4,Fornecedor ......:,4,z_forn,9999
T4,4,Data Inicial ....:,10,Z_DE,99.99.9999
T5,4,Data Final ......:,10,Z_ATE,99.99.9999
 
COMANDO ANTES DbGoBottom() 
COMANDO DEPOIS Z_MOVE = "MOVE"+Z_AAMM 
COMANDO DEPOIS Z_FATF = "FATF"+Z_AAMM 
 
ARQUIVO (Z_FATF) ("temp0001") dtos(pfdatache)+str(pffor,4) 
OUTROARQ (z_MOVE) z_MOVE+".f" mfnum 
OUTROARQ SCCPFOR 
OUTROARQ SE_PROD SEIP_C PCOD 
VARIAVEL Z_NUMNOTAS = 0 
VARIAVEL Z_PRODS = 0 
VARIAVEL Z_UNIDS = 0 
 
*- FILTRO PFNUM>0 .and. pficmBnorm+pficmBfont+pficmisent <> pfbaseicms 
FILTRO PFNUM>0 
FILTRO (z_forn=0 .OR. z_forn=PFFOR) .AND. (PFDATACHE>=Z_DE .AND. PFDATACHE<=Z_ATE)
 
C[SISTEMA]                                       pag [Z_NUMNOTAS 999] 
CConsistencia nas Bases de ICMs                           em [s_datual] as [time()] 
C----------------------------------------------------------------------------------------------------------
CFornecedor      Ok? Prd     NF  Chegada CFOP    Valor   Positiv  Negativ   Neutra    %Pos    %Neg    %Neu
C==========================================================================================================
 
COMANDO DURANTE z_pfnum  = pfnum 
COMANDO DURANTE z_pffor  = PFFOR 
COMANDO DURANTE sccpfor->(DBgoto(Z_pffor)) 
COMANDO DURANTE z_pfnumped = PFNUMPED 
 
COMANDO DURANTE Z_PFDATACHE = PFDATACHE 
COMANDO DURANTE Z_PFVAL     = PFVAL 
COMANDO DURANTE Z_PFTOTICMS = PFTOTICMS 
COMANDO DURANTE Z_PFVALRET  = PFVALRET 
COMANDO DURANTE Z_PRCUSTO   = PFVAL - PFVALRET 
 
COMANDO DURANTE Z_NUMNOTAS   = Z_NUMNOTAS + 1 
COMANDO DURANTE Z_PRODS      = 0 
COMANDO DURANTE Z_UNIDS      = 0 
COMANDO DURANTE Z_BsIcmNORMAL = 0 
 
SUBLIST Z_MOVE 
   COMANDO ANTES Z_PFlpos = 0
   COMANDO ANTES Z_PfLNeg = 0
   COMANDO ANTES Z_PfLNeu = 0 
   COMANDO ANTES DbSeek(z_pfnum) 
   REPITA ENQUANTO MFNUM = z_pfnum 
   FILTRO MFGES="E".and.mquant>0.and.mfnum=z_pfnum.and.mcodforc=z_pffor.and.fnumped=z_pfnumped 
   COMANDO DURANTE Z_PCOD = PCOD 
   COMANDO DURANTE SE_PROD->(DBSEEK(Z_PCOD)) 
   COMANDO DURANTE Z_PRODS = Z_PRODS + 1 
   COMANDO DURANTE Z_UNIDS = Z_UNIDS + MQUANT 

   COMANDO DURANTE Z_PFlpos = Z_PFlpos + if(se_prod->PnegPos="+",mvalor,0)
   COMANDO DURANTE Z_PfLNeg = Z_PfLNeg + if(se_prod->PnegPos="-",mvalor,0)
   COMANDO DURANTE Z_PfLNeu = Z_PfLNeu + if(.not.se_prod->PnegPos$"+-",mvalor,0)

   COMANDO DEPOIS z_pftotNf = Z_PFlpos+Z_PfLNeg+Z_PfLNeu
   COMANDO DEPOIS z_pftotNf = if(z_pftotNf=0,z_fatf->PFVal,z_pftotNf)
   COMANDO DEPOIS z_fg_pis_atua = z_prods>0.and.(z_fatf->(PFlpos+PfLNeg+PfLNeu)=0)
   COMANDO DEPOIS if(z_fg_pis_atua,z_fatf->(reglock()),)
   COMANDO DEPOIS if(z_fg_pis_atua,z_fatf->(Put_Var("PFlpos",Z_PFlpos)),)
   COMANDO DEPOIS if(z_fg_pis_atua,z_fatf->(Put_Var("PfLNeg",Z_PfLNeg)),)
   COMANDO DEPOIS if(z_fg_pis_atua,z_fatf->(Put_Var("PfLNeu",Z_PfLNeu)),)
 
   COMANDO DEPOIS zstring = z_fatf->( str(pfnum,6)+" "+dtoc(pfdatache)+" "+PFCODOP+" "+str(PFVAL,8,2) ) 
   COMANDO DEPOIS zstring = zstring+" "+z_fatf->( str(pfLPOS,8,2)+" "+str(pfLNEG,8,2)+" "+str(pfLNEU,8,2)+" ")
   COMANDO DEPOIS zstring = zstring+" "+z_fatf->( str(pfLPOS/z_pftotNf*100,6,2)+"% "+str(pfLNEG/z_pftotNf*100,6,2)+"% "+str(pfLNEU/z_pftotNf*100,6,2)+"% " ) 
   *-COMANDO DEPOIS ZDIF1    = z_fatf->( PFBASEICMS - pfIcmBNorm - pfIcmBfont ) 
   *-COMANDO DEPOIS ZDIF2    = z_fatf->( PFTOTICMS  - pfIcmNormA - pfIcmfontE ) 
   *- COMANDO DEPOIS zstring = zstring+" "+str(zdif1,8,2)+" "+str(zdif2,8,2) 
   *- COMANDO DEPOIS zstring = zstring+str(zdif2,8,2) 
   *- COMANDO DEPOIS z_outras = z_fatf->( pfvalret+pfoutros+pftotipi ) 
   *- COMANDO DEPOIS z_fgok = z_fatf->( if( pfval<>PFBASEICMS+pfIcmIsenta+z_outras,"*n"," s") ) 
   COMANDO DEPOIS z_fgok = z_fatf->( if( z_prods+PFlpos+PfLNeg+PfLNeu=0 , "*n", " s") ) 
   ULTPAG [z_pffor 9999]-[sccpfor->cp_fantasi @s10] [z_fgok] [z_prods 999] [zstring] 
 
FIM SUBLIST 
 
 
variavel zt_pfval  = 0 
variavel Zt_PFlpos = 0
variavel Zt_PfLNeg = 0
variavel Zt_PfLNeu = 0
variavel Zt_pfoutros = 0

comando durante zt_pfval    = zt_pfval    + pfval
comando durante Zt_PFlpos   = Zt_PFlpos   + PFlpos
comando durante Zt_PfLNeg   = Zt_PfLNeg   + PFlNeg
comando durante Zt_PfLNeu   = Zt_PfLNeu   + PFlNeu
comando durante Zt_pfoutros = Zt_pfoutros + pfoutros 

COMANDO DEPOIS zt_pftotNf = Zt_PFlpos+Zt_PfLNeg+Zt_PfLNeu
COMANDO DEPOIS zt_pftotNf = if(zt_pftotNf=0,zt_pfval,zt_pftotNf)

COMANDO DEPOIS Z_FGERRO = zt_pfval<>Zt_PFlpos+Zt_PfLNeg+Zt_PfLNeu+Zt_pfoutros
COMANDO DEPOIS z_critica = if(Z_FGERRO,"Diferenca de OUTRAS DO PIS/COFINS: "+transform(zt_pfval-(Zt_PFlpos+Zt_PfLNeg+Zt_PfLNeu+Zt_pfoutros),"@E 9999,999.99"),"") 
COMANDO DEPOIS z_critica = if(Z_FGERRO,z_critica+" (Diferenca entre TOTAIS DAS NOTAS e BASES de Calculo)","BASES DE CALCULO versus TOTAIS da nota Ok") 

ULTPAG==========================================================================================================
ULTPAG 
ULTPAG *** Notas Listadas..................: [Z_NUMNOTAS 9999] 
ULTPAG *** Valor Total das Entradas........: [Zt_pfval @E 9999,999.99] 
ULTPAG 
ULTPAG *** Total de Entradas Lista Positiva: [Zt_PFlpos @E 9999,999.99]   [100*Zt_PFlpos/zt_pftotNf 999.99]% (Isentos de PIS/COFINS)
ULTPAG *** Total de Entradas Lista Negativa: [Zt_PfLNeg @E 9999,999.99]   [100*Zt_PFlNeg/zt_pftotNf 999.99]% (Pagto Fonte de PIS/COFINS)
ULTPAG 
ULTPAG *** Total de Entradas Lista Neutra..: [Zt_PfLNeu @E 9999,999.99]   [100*Zt_PFlNeu/zt_pftotNf 999.99]% (Base de Credito de PIS/COFIS no DACOM)
ULTPAG *** Outros Encargos nas Entradas....: [Zt_pfoutros @E 9999,999.99] 
ULTPAG 
ULTPAG ==> [z_critica] 
ULTPAG 
 
