;*******************************************************************************
;* Rotina Principal                                                            *
;*******************************************************************************
AutoLib="\\Sistemas\\Cadastro\\Bibliot,\\Sistemas\\Cadastro\\Bib_Show"

SetDir "\\Sistemas\\Vendas"

MSG = "Deseja executar a rotina para ajustar o Valor e BC do PIS e COFINS ?"
ConfGeral(MSG)
If Ok="S"
   Then MSG = "Deseja realizar o BACKUP do NOTAC e NOTAI ?"
        ConfGeral(MSG)
        If Ok="S"
           Then Aguarde("Copiando a tabela NOTAC para BK_NOTC !")
                Copy "NotaC" "Bk_NotC"
                Aguarde("Copiando a tabela NOTAI para BK_NOTI !")
                Copy "NotaI" "Bk_NotI" 
        EndIf   
   Else Return
EndIf
 
A = 1  
   
REG = 0

NR = NRecords("NotaC")

Coedit "FaturaC","FaturaI","NotaI","NotaC"
Scan
  Barra(NR, RecNo())
  If REG > 0
     Then Aguarde("Aguarde, Atualizando PIS/COFINS -> "+StrVal(REG)+" registros"+BARRA_STRING)
     Else Aguarde("Aguarde, Atualizando PIS/COFINS "+BARRA_STRING)
  EndIf   
    
  If IsBlank([Data de Emissao])              Or   
     NumVal(Month([Data de Emissao]))<10     Or
     StrVal(Year([Data de Emissao]))<>"2015" Or 
     Upper([Tipo do Documento])<>"NFE"       Or
     Upper([Situacao])="C"
     Then Loop
  EndIf   
  
  If A = 1 Then Debug EndIf
  
  VRPIS    = 0
  VRCOFINS = 0
  
  VSDGEMPRESA = [Codigo da Empresa  ]
  CUPOM       = [Numero do Documento]
  SRDOCTO     = [Serie do Documento ]
  NUM_OF      = [Numero da OF       ]

  Moveto "FaturaC"
  Moveto [Numero da OF] 
  Locate NUM_OF
  If Retval
     Then If [Codigo              ] = [NotaC->Codigo              ] And
             [Codigo da Destinacao] = [NotaC->Codigo da Destinacao] And
             [Valor Nota Fsical   ] = [NotaC->Valor Nota Fsical   ]
             Then Moveto "FaturaI"
                  Moveto [Numero da OF]
                  Locate NUM_OF
                  If RetVal
                     Then While [Numero da OF] = NUM_OF
                            If Upper([Situacao_Item])="C"
                               Then QuitLoop
                            EndIf    
                            
                            ITEM_SEQ = [Item da OF      ]
                            ITEM_COD = [Codigo do Item  ]
                            ITEM_PRT = [Preco Total     ]
                            
                            PIS_CST = [PIS_CST           ] 
                            PIS_AL  = [PIS_Aliquota      ] 
                            PIS_VR  = [PIS_Valor         ] 
                            PIS_BC  = [PIS_BC            ]  
                            
                            COFINS_CST = [COFINS_CST     ] 
                            COFINS_AL  = [COFINS_Aliquota] 
                            COFINS_VR  = [COFINS_Valor   ] 
                            COFINS_BC  = [COFINS_BC      ]
                            
                            VRPIS      = VRPIS    + [PIS_Valor   ]
                            VRCOFINS   = VRCOFINS + [COFINS_Valor]
                            
                            Moveto "NotaI"
                            Moveto [Codigo da Empresa]
                            Locate VSDGEMPRESA,CUPOM,SRDOCTO,ITEM_SEQ 
                            If RetVal
                               Then REG = REG + 1
                                    If ITEM_COD = [Codigo do Item ] And
                                       ITEM_PRT = [Preco Total    ]       
                                       Then If PIS_CST <> [PIS_CST]
                                               Then [PIS_CST] = PIS_CST 
                                            EndIf
                                            
                                            If COFINS_CST <> [COFINS_CST]
                                               Then [COFINS_CST] = COFINS_CST
                                            EndIf    

                                            If [PIS_Aliquota] <> PIS_AL Or 
                                               [PIS_Valor   ] <> PIS_VR Or  
                                               [PIS_BC      ] <> PIS_BC   
                                               Then [PIS_Aliquota] = PIS_AL  
                                                    [PIS_Valor   ] = PIS_VR  
                                                    [PIS_BC      ] = PIS_BC
                                            EndIf
                                            
                                            If [COFINS_Aliquota] <> COFINS_AL Or 
                                               [COFINS_Valor   ] <> COFINS_VR Or  
                                               [COFINS_BC      ] <> COFINS_BC   
                                               Then [COFINS_Aliquota] = COFINS_AL  
                                                    [COFINS_Valor   ] = COFINS_VR  
                                                    [COFINS_BC      ] = COFINS_BC
                                            EndIf
                                    EndIf
                            EndIf
                            Moveto "FaturaI"
                            Skip
                            If Eot() Then QuitLoop EndIf
                          EndWhile
                  EndIf
          EndIf
  EndIf           
  Moveto "NotaC"
  [Valor PIS   ]=VRPIS
  [Valor COFINS]=VRCOFINS
EndScan
Do_it!
ClearAll

Mensagem("Processo Finalizado!")  

Release Vars All
Release Procs All