;** AC_PROD ********************************************************************
;*  Producao/Retorno Faccao/Estamparia                                         *
;*******************************************************************************
;Autor           : Vise Informatica (VISERP)
;Desenvolvido    : 28/07/2014 por Kamila Gomes
;Ultima Alteracao: 30/05/2016 por Bruno Carvalho 
;Motivo Alteracao: Adaptado processo para gera‡Æo do [Numero do Lancamento] "Interno"            
;Ultima Alteracao: 06/05/2020 por Bruno Carvalho
;Motivo Alteracao: Alterado Monta_Array_Grade() p/ Array_Monta_Grade() *Bib_Proc

;*******************************************************************************
;* Rotina para Controlar Chave                                                 *
;*******************************************************************************
Proc CHAVE()
INICIO=True
campocorrente=""

While True
  Moveto "RFACC"
  Moveto [Numero_Producao]
  NPROD=[Numero_Producao]
  
  If [Data_Producao] >= VSDGDTINI And [Data_Producao] <= VSDGDTFIM
     Then CHAVE=0    
     Else CHAVE=9 
          Return
  EndIf
  
  While True
    TECLA=""
  
    ;---- Gerando Tabela Temporaria -----------------------------------
    If Not PRODUCAO2
       Then Do_It!
            FormKey
            Moveto RFACRIG 
            ClearImage
            Moveto "Rfacrig"
            ClearImage
             
            Copy "Rfacrig"  RFACRIG
            
            View RFACRIG
            View "RFACRIG"
            CoeditKey
            Moveto "Rfacc"
            FormKey
     EndIf       
    ;------------------------------------------------------------------
  
     If OPCAO_FORM="F"
        Then If PRODUCAO2
                Then PickForm "3" 
                Else PickForm "2"
             EndIf   
     EndIf
     If IsLockRecord()
        Then If OPCAO_FORM="F"
                Then PickForm "F"
             EndIf
             QuitLoop
    EndIf
    Return
  EndWhile
EndWhile
EndProc   ; (Chave)

;*******************************************************************************
;* Rotina para Digitacao Dados Gerais                                          *
;*******************************************************************************
Proc DIGITA()
MSGCAMPO=""
gerou_rfacri=False  
If IsBlank(campocorrente)
   Then If Not PRODUCAO2
           Then Moveto "Rfacrir"
                Moveto [Numero_Producao]
                Locate [Rfacc->Numero_Producao]
                If RetVal
                   Then Moveto "Rfacc" 
                        Mensagem("Este lan‡amento foi utilizado com c¢digo de barras !//Rotina de Fac‡„o > 36. Produ‡„o II")
                        CHAVE=9        
                        Return
                EndIf   
                Moveto "Rfacc" 
           Else Moveto "Rfacrig"
                Moveto [Numero_Producao]
                Locate [Rfacc->Numero_Producao]
                If RetVal
                   Then Moveto "Rfacc" 
                        Mensagem("Este lan‡amento foi utilizado via grade !//Rotina de Fac‡„o > 03. Produ‡„o")
                        CHAVE=9
                        Return
                EndIf   
                Moveto "Rfacc"               
        EndIf 
        
        If [Situacao_Producao]="FINALIZADA" And INICIO     ;;testar
           Then Mensagem("Ordem "+[Numero_Producao]+" Finalizada !")
                If Not Checa_Supervisor()
                   Then CHAVE=9
                        Return
                EndIf
        EndIf

        If Not IsBlank([Codigo da Empresa])
           Then If Not Carrega_Parametros()
                   Then If CHAVE=1
                           Then Del
                        EndIf
                        CHAVE=9
                        Return
                EndIf
        EndIf
   Else Moveto Field campocorrente
EndIf

While True
  If PARAM_ATUA_CAPG="S"
     Then If [Destino_Producao]<>"INTERNO" And [Codigo]<>"0001" And (IsBlank([]) Or [Data de Vencimento]<[Data_Producao])
             Then Mensagem("Data de Vencimento Inv lida !")
                  Loop
          EndIf
  EndIf
  
  FINALIZADO=True
  OPCAO=""
  QuitLoop
EndWhile
EndProc

;*******************************************************************************
;* Rotina para Localizar Registro Item                                         *
;*******************************************************************************
Proc CHAVEI()

If PRODUCAO2
   Then Moveto "Rfacrir"
        Calc_Itens()   
   Else Moveto "Rfacrig"
EndIf
   
While True
  Moveto [Sequencia do Lancamento]
  End
  ITEM = [Sequencia do Lancamento]
  Down
  Moveto [Sequencia do Lancamento]
  Seta_Sequencia(ITEM,False)
  If IsLockRecord()
     Then Del
          Loop
  EndIf

  Opcao_Ver=False
  SetaCorRegistro("Editar")
  While True
    If PRODUCAO2
       Then Moveto "Rfacrir"
            Moveto [Quantidade Produzida]
            TOTQTD= ImageCSum()

            Moveto [Preco Total         ]
            TOTVR = ImageCSum() 
       Else Moveto "Rfacrig"
            Moveto [Quantidade Produzida]
            TOTQTD= ImageCSum()

            Moveto [Preco Total         ]
            TOTVR = ImageCSum()         
    EndIf
    
    Moveto "RFACC"
    [Quantidade_Produzida ]=TOTQTD
    [Valor Total          ]=TOTVR

    If PRODUCAO2
       Then Moveto "Rfacrir"
       Else Moveto "Rfacrig" 
    EndIf  
    Moveto [Sequencia do Lancamento]
         

    Del
    CHAVEI=9
    FINALIZADO=True
    Tecla_Funcao=""
    Return
  EndWhile
EndWhile
EndProc    ; ChaveI()

;*******************************************************************************
;* Rotina Gera Tabela Rfacrig                                                  *
;*******************************************************************************
Proc Gera_Rfacri(PARAM)
Private PARAM,codite

Aguarde("Convertendo produ‡„o modo padr„o")
Moveto "Rfacri"
Moveto [Numero_Producao]
Locate [Rfacc->Numero_Producao]
If RetVal
   Then While [Numero_Producao]=[Rfacc->Numero_Producao]
          Del
        EndWhile
EndIf

refant="****"
Seq=0

Switch                                 
  Case PARAM="" :
       Moveto "Rfacrig"
       NR = NIMAGERECORDS()
       Scan
         Barra(NR, RecNo())
         Aguarde("Aguarde, Convertendo produ‡„o modo padr„o "+BARRA_STRING)
       
         CopyToArray RegRq
         If RegRq["Referencia"]<>refant
       	    Then Array_Monta_Grade("")
       	         refant=[Referencia]
         EndIf        
        
         For ic From 1 to 12
           Aguarde("Convertendo produ‡„o modo padr„o")
           Qtd=0
           TM=RTrim(SubStr(Array_TM[ic],4,2))
           Switch
             Case ic=1:  Qtd=RegRq["Qtd1"]  
             Case ic=2:  Qtd=RegRq["Qtd2"]  
             Case ic=3:  Qtd=RegRq["Qtd3"]  
             Case ic=4:  Qtd=RegRq["Qtd4"]  
             Case ic=5:  Qtd=RegRq["Qtd5"]  
             Case ic=6:  Qtd=RegRq["Qtd6"]  
             Case ic=7:  Qtd=RegRq["Qtd7"]  
             Case ic=8:  Qtd=RegRq["Qtd8"]  
             Case ic=9:  Qtd=RegRq["Qtd9"]  
             Case ic=10: Qtd=RegRq["Qtd10"] 
             Case ic=11: Qtd=RegRq["Qtd11"] 
             Case ic=12: Qtd=RegRq["Qtd12"] 
           EndSwitch
        
           If Qtd>0
              Then If Len(TM)=1
                      Then codite=SubStr(RegRq["Codigo do Item"],1,9)+TM
                      Else codite=SubStr(RegRq["Codigo do Item"],1,8)+TM
                   EndIf
        
                   Moveto "Rfacri"
                   Moveto [Numero_Producao]
                   Locate RegRq["Numero_Producao"],codite
                   If Not RetVal
                      Then End Down
                           Seq=Seq+1
                           [Numero_Producao          ]=RegRq["Numero_Producao"]
                           [Codigo do Item           ]=codite
                           [Lookup_Itens             ]=[Codigo do Item]
                   EndIf
                   [Quantidade Produzida     ]=[Quantidade Produzida     ]+Qtd
                   [Preco Unitario           ]=RegRq["Preco Unitario"]
                   [Preco Unitario Tabela    ]=RegRq["Preco Unitario Tabela"]
                   [Codigo da Tabela         ]=RegRq["Codigo da Tabela"]
                 
                   If [Quantidade Produzida ]>0
                      Then [Preco Total]=[Quantidade Produzida ]*[Preco Unitario]
                   EndIf
        
                   Moveto "Rfacri"
                   UnlockRecord
            EndIf
          EndFor
          Moveto "Rfacrig"
        EndScan
  Case PARAM="Producao_Corte" :
       Moveto "Rfacri"
       Moveto [Numero_Producao]
       Locate [Rfacc->Numero_Producao]
       If RetVal
          Then While [Numero_Producao]=[Rfacc->Numero_Producao] 
                  Del
               EndWhile
       EndIf
       
       Moveto "Rfacrir"                        
       NR = NIMAGERECORDS()
       Scan
         Barra(NR, RecNo())
         Aguarde("Aguarde, Convertendo produ‡„o modo padr„o "+BARRA_STRING)
       
         CopyToArray RegRq
         Qtd    = RegRq["Quantidade Produzida"]
         codite = MudaCodigoPara(RegRq["Codigo do Item"],"P")
           
         If Qtd>0
            Then Moveto "Rfacri"
                 End Down
                 Seq=Seq+1
                 [Numero_Producao          ] = RegRq["Numero_Producao"]
                 [Codigo do Item           ] = codite
                 [Lookup_Itens             ] = [Codigo do Item]
                 [Quantidade Produzida     ] = RegRq["Quantidade Produzida"]
                 [Preco Unitario           ] = RegRq["Preco Unitario"]
                 [Preco Unitario Tabela    ] = RegRq["Preco Unitario Tabela"]
                 [Codigo da Tabela         ] = RegRq["Codigo da Tabela"]
                       
                 If [Quantidade Produzida ]>0
                     Then [Preco Total]=[Quantidade Produzida ]*[Preco Unitario]
                 EndIf        
         EndIf
         UnlockRecord
         Moveto "Rfacrir"
       EndScan
EndSwitch  

CHAVEF=8
LimpAguarde()
EndProc

;*******************************************************************************
;** Inclusao, Alteracao de Titulos Contas a Pagar                             **
;*******************************************************************************
Proc TITULOS(Tipo)
Private SEQ,Tipo,DESTINO

If PRODUCAO2
   Then DESTINO="PRODUCAO"
   Else DESTINO=[RFACC->Destino_Producao]
EndIf

If Not IsAssigned(PARAM_ATUA_CAPG)
   Then GetRecord "\\Sistemas\\Faccao\\P_Fac" [Rfacc->Codigo da Empresa] To EMPRESA
        If RetVal
           Then PARAM_ATUA_CAPG = EMPRESA["Atualiza_Contas_Pagar"]
           Else Return
        EndIf
EndIf           
   
If PARAM_ATUA_CAPG<>"S" Or DESTINO="INTERNO" Or [Rfacc->Codigo]="0001"
   Then Return
EndIf                 

Moveto "RFACC"
UnLockRecord
FormKey

Oktit=True
Moveto "\\sistemas\\ctapag\\Titulos"
Moveto [Numero do Lancamento]
If IsBlank([RFACC->Numero Lancamento Titulos])
    Then If (Tipo="Incluir" or Tipo="Alterar")
            Then Tipo="Incluir"
                 While True
                   End
                   If Numero_Lancamento("Interno","")
                      Then SEQ = PROXLANCTO_NLANC
                           Release Vars PROXLANCTO_NLANC
                   EndIf
                   Down
                   [Numero do Lancamento]=SEQ
                   If Not IsLockRecord()
                      Then QuitLoop
                      Else Del
                   EndIf
                 EndWhile
            Else Oktit=False
         EndIf
    Else
         Locate [RFACC->Numero Lancamento Titulos]
         If Not RetVal
            Then MSG="O lan‡amento "+[RFACC->Numero Lancamento Titulos]+" no Contas a Pagar n„o foi encontrado !//"
                 MSG=MSG+"Verificar fechamento mensal no Contas a Pagar Ok !//"
                 MSG=MSG+"Neste caso o estorno ou alter‡„o no Contas a Pagar n„o ser  efefuado !"
                 Mensagem(MSG)
                 oktit=False
            Else For wi From 1 To DynArraySize(Param_Destino)+2        
                   Switch
                     Case wi-1 = DynArraySize(Param_Destino)-1 :        
                       If [Lancamento Gerador]<>[RFACC->Numero_Producao]
                          Then oktit=False
                               QuitLoop
                       EndIf        
                     Case wi   = DynArraySize(Param_Destino)   :         
                       If [Documento Referente]<>(SubStr(DESTINO,1,6)+"/"+[RFACC->Numero_Producao])
                          Then oktit=False
                               QuitLoop
                       EndIf
                     Case Not IsAssigned(Param_Destino[wi])    : QuitLoop        
                     OtherWise                                 :
                      If SubStr(Param_Destino[wi],2,12)=DESTINO And DESTINO<>"INTERNO"
                         Then [Sistema Gerador]=Rtrim(SubStr(Param_Destino[wi],26,2))
                              oktit=False
                              QuitLoop
                      EndIf   
                   EndSwitch   
                 EndFor
                 If Not OkTit
                    Then MSG="O lan‡amento "+[RFACC->Numero Lancamento Titulos]+" no Contas a Pagar,//"
                         MSG=MSG+"n„o corresponde a esta Produ‡„o ["+StrVal([RFACC->Numero_Producao])+"] !// //"
                         MSG=MSG+"Verifique no Contas a Pagar o lan‡amento corresponente e//"
                         MSG=MSG+"se talvez o mes n„o foi fechado !// //"
                         MSG=MSG+"Neste caso o estorno ou altera‡„o no Contas a Pagar n„o ser  efefuado !//"
                         MSG=MSG+"Talvez algum outro erro gerou este problema !"
                         Mensagem(MSG)
                 EndIf
         EndIf
EndIf

If OkTit And (Tipo="Excluir" or Tipo="Alterar")
   Then If [Saldo do Documento]<>[Valor do Documento]
           Then Oktit=False
                MSG="O estorno ou atualiza‡„o do lan‡amento no Contas a Pagar,//"
                MSG=MSG+"referente a este documento: "+
                    [RFACC->Codigo da Empresa]+" / "+
                    SubStr(DESTINO,1,6)+" / "+
                    [RFACC->Numero_Producao]+"//"
                MSG=MSG+"n„o ser  efetuado, pois o T¡tulo j  teve baixa ! // //"
                MSG=MSG+"Verificar !"
                Mensagem(MSG)
           Else If Tipo="Excluir"
                   Then Del
                EndIf
        EndIf
EndIf

If OkTit And (Tipo="Incluir" or Tipo="Alterar")
   Then
        Switch
          Case Tipo="Incluir":
               [Codigo do Documento ]="REC"
               [Numero do Documento ]=[RFACC->Numero_Producao     ]
               [Codigo do Emitente  ]=[RFACC->Codigo              ]
               [Tipo do Lancamento  ]="C"
               [Data Competencia    ]=[RFACC->Data_Producao       ]
               [Data de Emissao     ]=[RFACC->Data_Producao       ]
               [Data de Vencimento  ]=[RFACC->Data de Vencimento  ]
               [Data a Pagar        ]=[RFACC->Data de Vencimento  ]
               [Valor do Documento  ]=[RFACC->Valor Total         ]
               [Saldo do Documento  ]=[RFACC->Valor Total         ]
               [Tipo do Pagamento   ]="DN"
               [Codigo da Conta     ]=PARAM_CONTA_CAIXA  
               [Codigo da Empresa   ]=[RFACC->Codigo da Empresa   ]
               
               For wi From 1 To DynArraySize(Param_Destino)        
                 If SubStr(Param_Destino[wi],2,12)=DESTINO And DESTINO<>"INTERNO"
                    Then [Sistema Gerador]=Rtrim(SubStr(Param_Destino[wi],26,2))
                         QuitLoop
                 EndIf      
               EndFor
               
               [Lancamento Gerador  ]=[RFACC->Numero_Producao]
               [Documento Referente ]=SubStr(DESTINO,1,6)+"/"+[RFACC->Numero_Producao]
               Controle_Dia()
               UnLockRecord

               Moveto "RFACC"
               If IsBlank([Numero Lancamento Titulos])
                  Then [Numero Lancamento Titulos]=SEQ
               EndIF
               UnLockRecord

          Case Tipo="Alterar":
               [Codigo do Emitente  ]=""
               [Codigo do Emitente  ]=[RFACC->Codigo              ]
               [Data Competencia    ]=[RFACC->Data_Producao       ]
               [Data de Emissao     ]=[RFACC->Data_Producao       ]
               [Data de Vencimento  ]=[RFACC->Data de Vencimento  ]
               [Data a Pagar        ]=[RFACC->Data de Vencimento  ]
               [Valor do Documento  ]=[RFACC->Valor Total         ]
               [Saldo do Documento  ]=[RFACC->Valor Total         ]
               UnLockRecord
        EndSwitch
EndIf

Moveto "RFACC"
UnLockRecord
FormKey

EndProc  ; (Titulos)

;*******************************************************************************
;* Atualizacao Requisicao                                                      *
;*******************************************************************************
Proc REQUISICAO(Tipo)
Private NUMEROL, RQ_ENCONTRADA, SEQ, Tipo, i,
        CODIGO_ITEM, QTD_ITEM, CTO_ITEM, DESTINO, NOMDEST, CODREQ,
        QTDTOT, VRTOT, SAIR, TIPO_BE, TabAnt

SAIR        = False
TIPO_BE     = ""

If Not PRODUCAO2
   Then For Cont_Dest From 1 To DynArraySize(Param_Destino) 
        If Rtrim(SubStr(Param_Destino[Cont_Dest],2,12))=[RFACC->Destino_Producao] 
           Then REQ_DESTINO = Rtrim(SubStr(Param_Destino[Cont_Dest],13,12))
                If Rtrim(SubStr(Param_Destino[Cont_Dest],1,1))<>"S" 
                   Then SAIR=True
                        QuitLoop  
                EndIf
        EndIf
      EndFor
EndIf           

If SAIR 
   Then Return 
EndIf

If PRODUCAO2 And Tipo<>"Exclusao"
    Then TabAnt = Table()
         Calc_Itens()
         Moveto TabAnt
         If VSQTDE=0 Or VSQTDE=BlankNum()
            Then Return 
         EndIf 
EndIf

Aguarde("Gerando requisi‡„o no estoque")

If Not PRODUCAO2
   Then DESTINO=[RFACC->Destino_Producao      ]
        NOMDEST=" "+[RFACC->Nome Fantasia EmitDest]
   Else DESTINO = "PRODUCAO"
        NOMDEST = ""     
EndIf

Moveto "RFACC"
UnLockRecord
FormKey

If IsBlank([RFACC->Lancamento RQCabeca_RFACC])
   Then RQ_ENCONTRADA=False
   Else Moveto "\\Sistemas\\Estoque\\RQCabeca"
        Moveto [Numero do Lancamento]
        Locate [RFACC->Lancamento RQCabeca_RFACC]
        If RetVal
           then If [Codigo da Empresa]=[RFACC->Codigo da Empresa]
                   Then RQ_ENCONTRADA=True
                   Else RQ_ENCONTRADA=False
                EndIf
           Else RQ_ENCONTRADA=False
        EndIf
EndIf

If Not RQ_ENCONTRADA
   Then If Not IsBlank([RFACC->Lancamento RQCabeca_RFACC])
           Then LimpAguarde()
                MSG="Requisi‡„o de Estoque N. "+[RFACC->Lancamento RQCabeca_RFACC]+" n„o localizada !// //"
                MSG=MSG+"Este lan‡amento n„o ser  corrigido no Estoque !// //"
                MSG=MSG+"Motivos: - Fechamento Mensal do Estoque efetuado;          //"
                MSG=MSG+"         - Empresa da requisi‡„o n„o corresponde;          //"
                MSG=MSG+"         - Algum erro ocorrido no momento deste Lan‡amento.//"
                Mensagem(MSG)

                Moveto "RFACC"
                FormKey
                Return
        EndIf
	 Else NUMEROL=[\Sistemas\Estoque\RQCabeca->Numero do Lancamento]
        For i From 1 To 3
          Switch
            Case i=1: Moveto "\\Sistemas\\Estoque\\RqItem"
            Case i=2: Moveto "\\Sistemas\\Estoque\\RqMatPri"
            Case i=3: Moveto "\\Sistemas\\Estoque\\RqItemg"
          EndSwitch

          Moveto [Numero do Lancamento]
          Locate NUMEROL
          If RetVal
             Then While [Numero do Lancamento]=NUMEROL
                    CODIGO_ITEM=[Codigo do Item]
                    QTD_ITEM   =[Quantidade    ]
                    CTO_ITEM   =[Custo Total   ]
                    
                    Switch
                      Case i=1: ESTOQUE("ESTORNAR", "S", [\Sistemas\Estoque\RqCabeca->Data de Ocorrencia],
                                        [\Sistemas\Estoque\RqCabeca->Codigo da Empresa], CODIGO_ITEM, QTD_ITEM, CTO_ITEM)
                      Case i=2: ESTOQUE("ESTORNAR", "E", [\Sistemas\Estoque\RqCabeca->Data de Ocorrencia],
                                        [\Sistemas\Estoque\RqCabeca->Codigo da Empresa], CODIGO_ITEM, QTD_ITEM, CTO_ITEM)
                    EndSwitch
                    Switch
                      Case i=1: Moveto "\\Sistemas\\Estoque\\RqItem"
                      Case i=2: Moveto "\\Sistemas\\Estoque\\RqMatPri"
                      Case i=3: Moveto "\\Sistemas\\Estoque\\RqItemg"
                    EndSwitch
                    Del
                  EndWhile
          EndIf
        EndFor

        Moveto "\\Sistemas\\Estoque\\RqCabeca"
        Del
EndIf

If Tipo="Exclusao"
   Then Moveto "RFACC"
        FormKey
        LimpAguarde()
        Return
EndIf

WS_CREQ = ""
WS_DREQ = DESTINO+NOMDEST

If Not PRODUCAO2
   Then CODREQ  = REQ_DESTINO 
EndIf   

Moveto "\\Sistemas\\Estoque\\Requisit"
If PRODUCAO2
   Then Moveto [Descricao Requisitante]
        Locate DESTINO
   Else Moveto [Codigo do Requisitante]
        Locate CODREQ
EndIf        
If RetVal
   Then WS_CREQ=[Codigo do Requisitante]
EndIf

SEQ=0
While True
 Moveto "\\Sistemas\\Estoque\\RqCabeca"
 End
 If Not IsBlank([RFACC->Lancamento RQCabeca_RFACC]) And SEQ=0
    Then NUMEROL=[RFACC->Lancamento RqCabeca_RFACC]
    Else Moveto [Numero do Lancamento]
         If Numero_Lancamento("Interno","")
            Then NUMEROL = PROXLANCTO_NLANC
                 Release Vars PROXLANCTO_NLANC
         EndIf
 EndIf
 SEQ=SEQ+1
 Down 
 
 [Numero do Lancamento  ]=NUMEROL
 If IsLockRecord()
    Then Del
         Loop
 EndIf

 QuitLoop
EndWhile
[Codigo da Empresa     ]=[RFACC->Codigo da Empresa]
[Tipo de Movimento     ]="E"
[Descricao do Movimento]="ENTRADA"
Switch 
  Case DESTINO="FACCAO"      : [Tipo de Operacao]="P"  [Descricao da Operacao ]="PRODUCAO"
  Case DESTINO="INTERNO"     : [Tipo de Operacao]="P"  [Descricao da Operacao ]="PRODUCAO"
  Case DESTINO="PRODUCAO"    : [Tipo de Operacao]="P"  [Descricao da Operacao ]="PRODUCAO"
  OtherWise                  : [Tipo de Operacao]="D"  [Descricao da Operacao ]="DEVOLUCAO"
EndSwitch

[Codigo do Documento   ]="PROD"
[Numero do Documento   ]=AlinhM(StrVal([RFACC->Numero_Producao]),6)
[Data de Ocorrencia    ]=[RFACC->Data_Producao]
[Requisitante          ]=WS_CREQ
[Descricao Requisitante]=WS_DREQ
[Numero do Corte       ]=[RFACC->Numero_Corte]
Controle_Dia()
UnLockrecord
                    
QTDTOT=0
VRTOT =0
SEQ   =0  

If PRODUCAO2
   Then Moveto "Rfacrir"
   Else Moveto "Rfacri"
EndIf
                   
Moveto [Numero_Producao]
Locate [RFACC->Numero_Producao]
If RetVal
   Then While [Numero_Producao]=[RFACC->Numero_Producao] 
          CODIGO_ITEM=[Codigo do Item]
          
          If PRODUCAO2
             Then CODIGO_ITEM=MudaCodigoPara(CODIGO_ITEM,"P")
             Else Switch
                    Case DESTINO="FACCAO" Or DESTINO="INTERNO" :
                         CODIGO_ITEM=MudaCodigoPara(CODIGO_ITEM,"P")
                    Case DESTINO<>"FACCAO" And DESTINO<>"INTERNO" :
                         CODIGO_ITEM=MudaCodigoPara(CODIGO_ITEM,"S")
                  EndSwitch
          EndIf    
          QTD_ITEM   =[Quantidade Produzida]

          If QTD_ITEM >0
             Then Moveto "\\Sistemas\\Estoque\\Itens"
                  Moveto [Codigo do Item]
                  Locate CODIGO_ITEM
                  If RetVal
                     Then WS_TITEM=[Tipo do Item     ]
                          WS_DITEM=[Descricao do Item]
                          WS_UNI  =[Unidade Interna  ]
                     Else WS_TITEM=""
                          WS_DITEM=""
                          WS_UNI  =""
                  EndIf

                  Moveto "\\Sistemas\\Estoque\\RqItem"
                  End
                  Down
                  SEQ=SEQ+1
                  [Numero do Lancamento       ]=NUMEROL
                  [Sequencia do Lancamento    ]=SEQ
                  [Codigo da Empresa          ]=[RFACC->Codigo da Empresa ]
                  [Tipo do Item               ]=WS_TITEM
                  [Codigo do Item             ]=CODIGO_ITEM
                  [Descricao do Item          ]=WS_DITEM
                  [Quantidade                 ]=QTD_ITEM
                  ESTOQUE("ATUALIZAR", "E", [\Sistemas\Estoque\RqCabeca->Data de Ocorrencia], [\Sistemas\Estoque\RqCabeca->Codigo da Empresa], CODIGO_ITEM, QTD_ITEM, 0)
                  [Unidade Interna            ]=WS_UNI
                  [Custo Unitario             ]=CUSTOMEDIO
                  [Custo Total                ]=NDecimal(CUSTOMEDIO*[Quantidade],2)

                  QTDTOT=QTDTOT+[Quantidade ]
                  VRTOT =VRTOT +[Custo Total]
                  UnLockrecord
                  
                  ;25.03.2014 ajujstado anivel
                  Moveto [Numero do Lancamento]
                  Locate NUMEROL, SEQ
                  
                  If PARAM_EXPLODE_MP_PFAC="S" 
                     Then Formula()
                  EndIf
                  
                  If Not PRODUCAO2
                     Then Moveto "RFACRI"
                     Else Moveto "Rfacrir"
                  EndIf    

          EndIf
          Skip
          If EOT() Then QuitLoop EndIf
        EndWhile
EndIf

If Not PRODUCAO2
   Then Moveto "RFACRIG"
        Moveto [Numero_Producao]
        Locate [RFACC->Numero_Producao    ]
        If RetVal
           Then While [Numero_Producao]=[RFACC->Numero_Producao    ]
                  CODIGO_ITEM=[Codigo do Item       ]
        
                  Moveto "\\Sistemas\\Estoque\\RqItemg"
                  End
                  Down
                  [Numero do Lancamento       ]=NUMEROL
                  [Sequencia do Lancamento    ]=[RFACRIG->Sequencia do Lancamento    ]   
                  [Codigo da Empresa          ]=[RFACC->Codigo da Empresa            ]
                  [Codigo do Item             ]=[RFACRIG->Codigo do Item             ]
                  [Tipo do Item               ]=[RFACRIG->Tipo do Item               ]
                  [Referencia                 ]=[RFACRIG->Referencia                 ]
                  [Descricao do Item          ]=[RFACRIG->Descricao do Item          ]
                  [Codigo da Cor_Tecido       ]=[RFACRIG->Codigo da Cor_Tecido       ]
                  [Descricao da Cor_Tecido    ]=[RFACRIG->Descricao da Cor_Tecido    ]
                  [Qtd1                       ]=[RFACRIG->Qtd1                       ]
                  [Qtd2                       ]=[RFACRIG->Qtd2                       ]
                  [Qtd3                       ]=[RFACRIG->Qtd3                       ]
                  [Qtd4                       ]=[RFACRIG->Qtd4                       ]
                  [Qtd5                       ]=[RFACRIG->Qtd5                       ]
                  [Qtd6                       ]=[RFACRIG->Qtd6                       ]
                  [Qtd7                       ]=[RFACRIG->Qtd7                       ]
                  [Qtd8                       ]=[RFACRIG->Qtd8                       ]
                  [Qtd9                       ]=[RFACRIG->Qtd9                       ]
                  [Qtd10                      ]=[RFACRIG->Qtd10                      ]
                  [Qtd11                      ]=[RFACRIG->Qtd11                      ]
                  [Qtd12                      ]=[RFACRIG->Qtd12                      ]
                  [Quantidade                 ]=[RFACRIG->Quantidade Produzida       ]
                  [Unidade Interna            ]=[RFACRIG->Unidade Interna            ]
                  [Codigo da Grade            ]=[RFACRIG->Codigo da Grade            ]
                  ESTOQUE("CUSTO", "", [\Sistemas\Estoque\RqCabeca->Data de Ocorrencia], [\Sistemas\Estoque\RqCabeca->Codigo da Empresa], CODIGO_ITEM, 0, 0)
                  [Custo Unitario             ]=CUSTOMEDIO
                  [Custo Total                ]=NDecimal(CUSTOMEDIO*[Quantidade],2)
                  UnLockrecord
                  
                  Moveto "RFACRIG"
                  Skip
                  If EOT() Then QuitLoop EndIf
                  
              EndWhile
        EndIf          
EndIf

Moveto "\\Sistemas\\Estoque\\RqCabeca"
Moveto [Numero do Lancamento]
Locate NUMEROL
If RetVal
   Then [Quantidade Total         ]=QTDTOT
        [Valor Total              ]=VRTOT
        UnLockRecord
EndIf

Moveto "RFACC"
[Lancamento RQCabeca_RFACC]=NUMEROL
UnLockRecord
FormKey
LimpAguarde()
EndProc

;*******************************************************************************
;* Rotina para Calculos                                                        *
;*******************************************************************************
Proc Calc_Itens()

If PRODUCAO2
   Then Moveto "Rfacrir"                                                     
        Moveto [Quantidade Programada  ] VSQTDP  =ImageCSum()
        Moveto [Quantidade Produzida   ] VSQTDE  =ImageCSum()
                                                                                     
        VSQTDD=VSQTDE-VSQTDP

        If VSQTDP =0 Then VSQTDP =BlankNum() EndIf
        If VSQTDE =0 Then VSQTDE =BlankNum() EndIf
        
   Else Moveto "ExpedI"
        Moveto [Quantidade_Fora_Pedido] VSQTDFP =ImageCSum()
        Moveto [Quantidade_Pedido     ] VSQTDP  =ImageCSum()
        Moveto [Quantidade_Expedida   ] VSQTDE  =ImageCSum()
        Moveto [Quantidade_Substituida] VSQTDS  =ImageCSum()
        
        If Not IsBlank([ExpedC->Numero do Pedido])
           Then VSQTDD=(VSQTDE-VSQTDP)+VSQTDS
           Else VSQTDD =BlankNum()
        EndIf
        
        If VSQTDP =0 Then VSQTDP =BlankNum() EndIf
        If VSQTDFP=0 Then VSQTDFP=BlankNum() EndIf
        If VSQTDE =0 Then VSQTDE =BlankNum() EndIf
        If VSQTDS =0 Then VSQTDS =BlankNum() EndIf
        
        Moveto "ExpedC"
        [Quantidade_Pedido     ]=VSQTDP
        [Quantidade_Expedida   ]=VSQTDE
        [Quantidade_Diferenca  ]=VSQTDD
        [Quantidade_Fora_Pedido]=VSQTDFP
        [Quantidade_Substituida]=VSQTDS
        
        Moveto "ExpedI"   
EndIf   
EndProc   ;Calc_Itens()

;*******************************************************************************
;* Verifica Formula de Materia Prima                                           *
;*******************************************************************************
Proc FORMULA()
Private UNIDADE,TIPO_ITEM,FAZ_ROTINA

Moveto "\\Sistemas\\Producao\\FormulaC"
Moveto [Codigo do Produto]
Locate [\Sistemas\Estoque\RqItem->Codigo do Item],"",""

If [Baixa_Automatica]="N"
   Then Moveto "\\Sistemas\\Estoque\\RqItem"
        Return
EndIf

Moveto "\\Sistemas\\Producao\\FormulaI"
Moveto [Codigo do Produto]
Locate [\Sistemas\Estoque\RqItem->Codigo do Item],"",""
If RetVal
   Then While [Codigo do Produto]=[\Sistemas\Estoque\RqItem->Codigo do Item]
          FAZ_ROTINA = False
          If Not IsBlank([Codigo do Material]) And [Item_Baixa_Automatica]="S"
             Then If [Tipo do Item]<>"D" And [Tipo do Item]<>"C" 
                     Then FAZ_ROTINA = True
                  EndIf
          EndIf    
          
          If FAZ_ROTINA
             Then Moveto "\\Sistemas\\Estoque\\RqMatPri"
                  Moveto [Numero do Lancamento]
                  Locate NUMEROL,SEQ,[\Sistemas\Producao\FormulaI->Sequencia]
                  If Not RetVal
                     Then End Down
                          [Numero do Lancamento   ]=NUMEROL
                          [Sequencia do Item      ]=SEQ
                          [Sequencia Materia Prima]=[\Sistemas\Producao\FormulaI->Sequencia]
                  EndIf
                  [Codigo da Empresa  ]=[\Sistemas\Estoque\RqCabeca->Codigo da Empresa]
                  [Codigo do Item     ]=[\Sistemas\Producao\FormulaI->Codigo do Material]
                  UNIDADE=([\Sistemas\Estoque\RqItem->Quantidade]/[\Sistemas\Producao\Formulac->Quantidade Produzida])
                  [Quantidade         ]=NDecimal(UNIDADE*[\Sistemas\Producao\FormulaI->Quantidade],3)
                  ESTOQUE("ATUALIZAR", "S", [\Sistemas\Estoque\RqCabeca->Data de Ocorrencia],
                          [Codigo da Empresa], [Codigo do Item], UNIDADE, 0)
                  [Custo Unitario     ]=CUSTOMEDIO
                  [Custo Total        ]=Round([Quantidade]*[Custo Unitario],2)
                  [Codigo CCusto      ]=[\Sistemas\Estoque\RqItem->Codigo CCusto]
                  UnLockRecord
                  Moveto "\\Sistemas\\Producao\\FormulaI"
          EndIf
          Skip
          If EOT() Then QuitLoop EndIf
        EndWhile
EndIf
Moveto "\\Sistemas\\Estoque\\RqItem"
EndProc  ;  (Formula)

;*******************************************************************************
;* Rotina Baixa Materia Prima                                                  *
;*******************************************************************************
Proc ESTOQUE(OPERACAO, TPMOV, DTREF, COD_EMPRESA, COD_ITEM, QTDE, CTTOT)
Private OPERACAO, TPMOV, DTREF, COD_EMPRESA, COD_ITEM, ANO, MES, QTDE, CTTOT, Tabela

Tabela=Table()

MES=ALINHM(StrVal(Month(DTREF)),2)
ANO=ALINHM(StrVal(Year(DTREF)),4)

Moveto "\\Sistemas\\Estoque\\SdEstq"
Moveto [Codigo da Empresa]
Locate COD_EMPRESA, COD_ITEM, ANO, MES
If Not RetVal
   Then Cria_Ficha(COD_EMPRESA,COD_ITEM,ANO,MES,False)
EndIf
While True
  If IsLockRecord()
     Then Loop
  EndIf

  If OPERACAO="ATUALIZAR" Or
     OPERACAO="CUSTO"
     Then CUSTOMEDIO=NDecimal([Custo Total Atual]/[Saldo Atual],5)
          If CUSTOMEDIO=0
             Then CUSTOMEDIO=[Ultimo Custo Atual]
          EndIf
          CTTOT=NDecimal(QTDE*CUSTOMEDIO,2)
  EndIf

  Switch
    Case TPMOV="S":
         [Saldo Atual      ]=NDecimal([Saldo Atual      ]-QTDE,3)
         [Custo Total Atual]=NDecimal([Custo Total Atual]-CTTOT,2)
    Case TPMOV="E":
         [Saldo Atual      ]=NDecimal([Saldo Atual      ]+QTDE,3)
         [Custo Total Atual]=NDecimal([Custo Total Atual]+CTTOT,2)
  EndSwitch

  If OPERACAO="ATUALIZAR" Or
     OPERACAO="ESTORNAR" 
     Then If ([Custo Total Atual]/[Saldo Atual])>0
              Then [Ultimo Custo Atual]=NDecimal([Custo Total Atual]/[Saldo Atual],5)
          EndIf
          UnLockRecord
  EndIf
  QuitLoop
EndWhile

If OPERACAO="ATUALIZAR" And TPMOV="S"
   Then While True
          Moveto "\\Sistemas\\Estoque\\EstqPrm"
          Moveto [Codigo da Empresa]
          Locate COD_EMPRESA, COD_ITEM
          If Not RetVal
             Then End Down
                  [Codigo da Empresa   ]=COD_EMPRESA
                  [Codigo do Item      ]=COD_ITEM
                  UnLockRecord
                  Loop
          EndIf
          If IsLockRecord()
             Then Loop
          EndIf
          If DTREF>[Data da Ultima Saida]
             Then [Data da Ultima Saida]=DTREF
          EndIf
          UnLockRecord

          QuitLoop
        EndWhile
EndIf
Moveto Tabela
EndProc  ;  (Estoque)

;*******************************************************************************
;* Rotina para Criar Ficha do Estoque e Parametros                             *
;*******************************************************************************
Proc Cria_Ficha(ESTQ_EMPRESA, ESTQ_ITEM, ESTQ_ANO, ESTQ_MES, ESTQ_CONFIRMA)
Private ESTQ_EMPRESA, ESTQ_ITEM, ESTQ_CONFIRMA, ESTQ_ANO, ESTQ_MES, ESTQ_CONFIRMA

Moveto "\\Sistemas\\Estoque\\EstqPrm"
Moveto [Codigo da Empresa]
Locate ESTQ_EMPRESA, ESTQ_ITEM
If Not RetVal
   Then End Down
        [Codigo da Empresa   ]=ESTQ_EMPRESA
        [Codigo do Item      ]=ESTQ_ITEM
        UnLockRecord
EndIf

Moveto "\\Sistemas\\Estoque\\SdEstq"
While True
  Moveto [Codigo da Empresa]
  Locate ESTQ_EMPRESA, ESTQ_ITEM, ESTQ_ANO, ESTQ_MES
  If Not RetVal
     Then End Down
          [Codigo da Empresa   ]=ESTQ_EMPRESA
          [Codigo do Item      ]=ESTQ_ITEM
          [Ano Referencia      ]=ESTQ_ANO
          [Mes Referencia      ]=ESTQ_MES
          If IsLockRecord()
             Then Del
             Else UnLockRecord
          EndIf
          Loop
  EndIf
  QuitLoop
EndWhile

Return True
EndProc  ; Cria_Ficha()

;*******************************************************************************
;* Rotina para Carregar Parametros                                             *
;*******************************************************************************
Proc Carrega_Parametros()
Private Result

If IsEmpty("P_Desti")
   Then Mensagem("N„o esta Configurado os Parametros para Digita‡„o !")
        Moveto "Rfacc"
        KeyPress "F7"
        Return False   
EndIf

If IsEmpty("P_Fac")
   Then Mensagem("N„o esta Configurado os Parametros para Digita‡„o !")
        Result=False
   Else UnLockRecord
        KeyPress "F7"
        While True
          If Not IsLockRecord()
             Then QuitLoop
          EndIf
        EndWhile
        
        Moveto "P_Fac"
        Moveto [Codigo_Empresa]
        Locate [Rfacc->Codigo da Empresa]
        If Not RetVal
           Then Mensagem("Parametros n„o Cadastrado para esta Empresa !")
                Result=False
           Else PARAM_EMPRESA         = [Codigo_Empresa           ]
                PARAM_EXPLODE_MP_PFAC = [Explosao_MatPrim_ProdFac ]
                PARAM_COR_TECIDO      = [Cor_Tecido               ]
                PARAM_RELATORIO       = [Script_Impressao_ProdFac ]
                PARAM_RELATSALDO      = [Script_Impressao_SaldFac ]
                PARAM_ATUA_CAPG       = [Atualiza_Contas_Pagar    ]
                PARAM_CONTA_CAIXA     = [Codigo_Conta_Caixa       ]

                Result=True
        EndIf
EndIf           
           
If Not PRODUCAO2
   Then Moveto "P_DESTI"
        Moveto [Codigo da Empresa]
        Locate [Rfacc->Codigo da Empresa],[Rfacc->Destino_Producao]
        If RetVal
           Then Cont_Dest = 0
                DynArray Param_Destino[]
                While [Codigo da Empresa]=[Rfacc->Codigo da Empresa] And [Destino]=[Rfacc->Destino_Producao] 
                  Cont_Dest = Cont_Dest + 1
                  Moveto "P_FacD"
                  Moveto [Destino]
                  Locate [Rfacc->Destino_Producao] 
                  If RetVal 
                     Then SG = [Sistema Gerador]
                     Else SG = "" 
                  EndIf  
                  Moveto "P_DESTI" 
                  Param_Destino[Cont_Dest]=Format("W1,AL",[Baixa Estoque])+Format("W12",[Destino])+Format("W12",[Codigo do Requisitante])+Format("W2",SG)
                  Skip
                  If Eot() Then QuitLoop EndIf
                EndWhile 
           Else Release Vars Param_Destino
                Mensagem("Parametros de Destinos n„o Cadastrado para esta Empresa !")
                Result=False
        EndIf   
EndIf

Moveto "Rfacc"
KeyPress "F7"

Return Result
EndProc

;*******************************************************************************
;* Rotina p/ arir tabelas                                                      *
;*******************************************************************************
Proc AbreTabelas()

RFACRIG = Cria_Temp(PrivDir())
Copy "Rfacrig" RFACRIG 

View "P_FAC"
View "P_Destc"
View "\\Sistemas\\Estoque\\RqCabeca"
View "\\Sistemas\\Estoque\\RqItem"
View "\\Sistemas\\Estoque\\RqItemG"
View "\\Sistemas\\Estoque\\RqMatPri"
View "\\Sistemas\\Estoque\\EstqPrm"
View "\\Sistemas\\Estoque\\SdEstq"
View "\\Sistemas\\Estoque\\Itens"
View "\\Sistemas\\Estoque\\Requisit"
View "\\Sistemas\\Producao\\FormulaC"
View "\\Sistemas\\Producao\\FormulaI"
View "\\Sistemas\\CtaPag\\Titulos"
View NoWindow "P_FacD"
View NoWindow "P_DESTI"

View "CFACRI"
View "PCFACRI"
View "PFACRI"
View "RFACRI"
View "Rfacrir"

View "PFACRIG"
View "Rfacrig"
View RFACRIG

View "PCFACC"
CoEdit "RFACC"

EndProc ;AbreTabelas()

;*******************************************************************************
;* Rotina para controlar Edicao do registro                                    *
;*******************************************************************************
Proc Controla_EdicaoC()
Private Verifica_Rotina
FINALIZADO=False
OPCHAVEI=""
  
While Not FINALIZADO
  Tecla_Funcao=BlankNum()
  DIGITA()
  INICIO=False

  If Finalizado
     Then If Not gerou_rfacri             
             Then If PRODUCAO2 
                     Then Gera_Rfacri("Producao_Corte")
                     Else Gera_Rfacri("")
                  EndIf   
                  Verifica_Rotina = True
                  If PRODUCAO2
                     Then Verifica_Rotina = False
                  EndIF
                  If Verifica_Rotina
                     Then Switch
                            Case CHAVE=1: Titulos("Incluir")
                            Case CHAVE=0: Titulos("Alterar")
                          EndSwitch
                  EndIf        
                  Requisicao("Inclusao")
          EndIf
  EndIf
  Moveto "RFACC"
EndWhile
If RecordStatus("Locked") Then UnLockRecord EndIf
If OPCAO_FORM="F"
   Then PickForm "F"
EndIf
EndProc

;*******************************************************************************
;* Rotina                                                                      *
;*******************************************************************************
Proc SD_Dialog(Disparo,Campo,Evento,Elemento)
Temp = True
TECLA    =""
MSG_CAMPO=""
If Disparo="OPEN"  Then AoCriarShowDialog() EndIf
If Disparo="EVENT" And Evento["Type"]="KEY" Then
   Switch
     Case Evento["KeyCode"] = -59: Dialog_F1()
          If Campo="TG_OPDEST"
             Then Seleciona_Opcoes("Op‡”es de Desinat rio","7,9")
          EndIf
     Case Evento["KeyCode"] =  27:
          Temp=False
          Switch
            Case Campo="TG_DTINI"         : Campo="NO"
            Case Campo="TG_DTFIM"         : Campo="TG_DTINI"
            Case Campo="YES" Or Campo="NO": Campo="TG_DTINI"
          EndSwitch
     Case (Evento["KeyCode"] <= -104 And Evento["KeyCode"] >= -113) Or 
           Evento["KeyCode"]  = -139 Or  Evento["KeyCode"]  = -140:
           SYS_TECLA_ACIONADA=Evento["KeyCode"]
           Seta_Tecla_Acionada()
           CancelDialog
     Case Evento["KeyCode"] = 13:
          Temp=False
          If Checa_TAG()
             Then Switch
                    Case Campo="TG_DTINI"      : Campo="TG_DTFIM"
                    Case Campo="TG_DTFIM"      : Campo="YES"
                  EndSwitch
          EndIf
          RefreshDialog
   EndSwitch
EndIf
MSG_CAMPO=""
TECLA=""
Monta_Prompt(MSG_CAMPO,TECLA)
Return Temp
EndProc


;*******************************************************************************
;* Rotina Principal                                                            *
;*******************************************************************************
AutoLib="\\Sistemas\\Cadastro\\Bibliot,\\Sistemas\\Cadastro\\Bib_Show,\\Sistemas\\Cadastro\\Bib_Proc"
SYS_Valor()

If Not IsAssigned(SYS_EMPRESA_DEFAULT) Then SYS_EMPRESA_DEFAULT=""   EndIf
If Not IsAssigned(SYS_CHAPA_USUARIO)   Then SYS_CHAPA_USUARIO="9999" EndIf
If Not IsAssigned(SYS_CODIGO_CLIENTE)  Then SYS_CODIGO_CLIENTE=""    EndIf
If Not IsAssigned(SYS_CLIENTE_CONFEC)  Then SYS_CLIENTE_CONFEC=""    EndIf                       
If Not IsAssigned(PRODUCAO2)           Then PRODUCAO2=False          EndIf
                                  
VCITENS   =BlankNum()
VSQTDE    =BlankNum()
VSVRMERC  =BlankNum()
VSDGDTINI =BlankDate()
VSDGDTFIM =BlankDate()
;PRODUCAO2=True          ;;;Habilitar se o cliente usa a rotina PRODU€ÇO II

If Not PRODUCAO2
   Then Array Array_TM[12]
        grdant="***"
EndIf

While True
  ShowDialog "Acerto de Requisi‡Æo de Produ‡Æo" Proc "SD_Dialog"
  Trigger "OPEN","ARRIVE"
  Key "F1","ENTER","ESC",
      -104, -105, -106, -107, -108, -109, -110, -111, -112, -113, -139, -140  
   @ 05,12   Height 09 Width 56

    Label  @ 01,04 "Per¡odo Referente" For "TG_DTINI"
    Label  @ 02,04 "de" For "TG_DTINI"
    Accept @ 02,08 Width 13 "D"  Picture "#[#];.##;.##[##]" Tag "TG_DTINI" To VSDGDTINI
    Label  @ 02,21 "at‚" For "TG_DTFIM"
    Accept @ 02,26 Width 13 "D"  Picture "#[#];.##;.##[##]" Tag "TG_DTFIM" To VSDGDTFIM

    Pushbutton @ 05,14 width 11 "~O~k"      OK     Default Value "Ok" Tag "YES" To BottonValue
    Pushbutton @ 05,28 width 11 "~C~ancela" CANCEL                    Tag "NO"  To BottonValue

  EndDialog
  If Not RetVal Then QuitLoop EndIf

  AbreTabelas()
  
  If PRODUCAO2     
     Then Moveto "CFACRI"   SetaCorRegistro("Invisivel")
          Moveto "PFACRI"   SetaCorRegistro("Invisivel")
          Moveto "RFACRI"   SetaCorRegistro("Invisivel")
          Moveto "PCFACRI"  SetaCorRegistro("Invisivel")
          Moveto "RFACRIG"  SetaCorRegistro("Invisivel")
          Moveto "PCFACC"   SetaCorRegistro("Invisivel")    
     Else Moveto "RFACRI"   SetaCorRegistro("Invisivel")
          Moveto "PFACRIG"  SetaCorRegistro("Invisivel")
          Moveto "RFACRIR"  SetaCorRegistro("Invisivel") 
  EndIf  
  Moveto "RFACC" 
  PickForm "F"
  OPCAO_FORM="F"
  Scan
    NR=NRecords("RFACC")
    Barra(NR, RecNo())
    Aguarde("Aguarde, Corrigindo "+Completa(StrVal(Recno())+"/"+StrVal(NR),9," ")+BARRA_STRING)
    CHAVE()
    If CHAVE=0 Then Controla_EdicaoC() EndIf    
  EndScan
  Do_It!
  ClearAll
  MENSAGEM("Opera‡Æo Finalizada !")
EndWhile
Release Vars All
Release Procs All 
