;** RP_CORTE *******************************************************************
;*  Conferencia/Saldo Programa‡Ćo/Corte/Producao                               *
;*******************************************************************************
;Autor           : Vise Informatica (VISERP)
;Desenvolvido    : 21/01/2014 por Bruno Carvalho
;Ultima Alteracao: 13/04/2018 por Bruno Carvalho
;Motivo Alteracao: Novos ajustes p/ apurar as informa‡äes precisas da posi‡Ćo do corte diante da producao Interna/FAC 

;*******************************************************************************
;* Rotina p/ Selecionar e Ordernar Registros                                   *
;*******************************************************************************
Proc Seleciona()
Private i

;---- Programacao do Corte ----------------------------------------
{Ask} {Cfacri}
Moveto [Numero_Corte         ] TypeIn "~NCORT.."
Moveto [Codigo do Item       ] Check 
Moveto [Quantidade Programada] Check TypeIn "as QtdProgCorte"
Do_It!
ClearAll

ProgCorte=Cria_Temp(PrivDir())
Copy "Answer" ProgCorte

;---- Produ‡Ćo do Corte -------------------------------------------
{Ask} {PCfacc}
Moveto [Numero_Producao_Corte   ]       TypeIn "_Cort"
Moveto [Numero_Programacao_Corte]       TypeIn "~NCORT.."
{Ask} {PCfacri}
Moveto [Numero_Producao_Corte   ]       TypeIn "_Cort"
Moveto [Codigo do Item          ] Check 
Moveto [Quantidade Produzida    ]       TypeIn "Calc Sum as QtdProdCorte"
Do_It!
ClearAll

ProdCorte=Cria_Temp(PrivDir())
Copy "Answer" ProdCorte

;---- Produ‡Ćo Interna RFACRI ------------------------------------
{Ask} {Rfacc}
Moveto [Numero_Corte            ] Check TypeIn "~NCORT.."
Moveto [Numero_Producao         ]       TypeIn "_Num"
Moveto [Destino_Producao        ]       TypeIn "~DESTINO.." 
{Ask} {Rfacri}
Moveto [Numero_Producao         ]       TypeIn "_Num"
Moveto [Codigo do Item          ] Check 
Moveto [Quantidade Produzida    ]       TypeIn "Calc Sum as QtdProdInterna"
Do_It!
ClearAll

ProdInterna=Cria_Temp(PrivDir())
Copy "Answer" ProdInterna

;---- Produ‡Ćo Interna RFACRIR -----------------------------------
;APURACAO DOS ITENS DA RELACAO DA PRODUCAO INTERNA 2 (Op‡Ćo 36 no Menu)
{Ask} {Rfacc}
Moveto [Numero_Corte            ] Check TypeIn "~NCORT.."
Moveto [Numero_Producao         ]       TypeIn "_Num" 
{Ask} {Rfacrir}
Moveto [Numero_Producao         ]       TypeIn "_Num"
Moveto [Codigo do Item          ] Check 
Moveto [Quantidade Produzida    ]       TypeIn "Calc Sum as QtdProdInternaIR"
Do_It!
ClearAll

ProdInternaIR=Cria_Temp(PrivDir())
Copy "Answer" ProdInternaIR

;---- Tempor ria -------------------------------------------------
Tabela2=Cria_Temp(PrivDir())
Copy "\\Base\\Sistemas\\Faccao\\Rm_0105" Tabela2
Empty(Tabela2)

;---- Processando as Informa‡äes ---------------------------------
View "PCFACC"
View ProgCorte
View ProdCorte
View ProdInterna
View Tabela2
CoEdit ProdInternaIR
Scan
  Barra(NRecords(ProdInternaIR), RecNo())
  Aguarde("Aguarde, imprimindo a posi‡„o do corte "+BARRA_STRING)
  
  CORTE = [Numero_Corte  ]
  ITEM  = [Codigo do Item]
  
  ;**** Observa‡äes da Produ‡Ćo do Corte *****************
  GetRecord "PCFACC" [Numero_Corte] To REG_PCFACC
  If RetVal
     Then OBSCONF = REG_PCFACC["Observacoes"]
     Else OBSCONF = ""
  EndIf           
  
  ;**** Programa‡ao do Corte *****************************
  Moveto ProgCorte
  Moveto [Codigo do Item]
  Locate ITEM
  If RetVal
     Then CORTE_PROG = [QtdProgCorte]
     Else Locate MudaCodigoPara(ITEM,"S") 
          If RetVal
             Then CORTE_PROG = [QtdProgCorte]
             Else CORTE_PROG = 0
          EndIf   
  EndIf
  
  ;**** Produ‡Ćo do Corte ********************************
  Moveto ProdCorte
  Moveto [Codigo do Item]
  Locate ITEM
  If RetVal
     Then CORTE_PROD = [QtdProdCorte]
     Else Locate MudaCodigoPara(ITEM,"S") 
          If RetVal
             Then CORTE_PROD = [QtdProdCorte]
             Else CORTE_PROD = 0
          EndIf   
  EndIf
  
  Moveto ProdInterna
  Moveto [Codigo do Item]
  Locate ITEM
  If RetVal
     Then INTERNO_PROD = [QtdProdInterna]
     Else Locate MudaCodigoPara(ITEM,"S") 
          If RetVal
             Then INTERNO_PROD = [QtdProdInterna]
             Else INTERNO_PROD = 0
          EndIf   
  EndIf  
  
  ;**** ROTINA PRINCIPAL *********************************
  AUX_ITEM = ITEM
  
  Moveto Tabela2
  Moveto [Numero_Programacao]
  Locate CORTE,ITEM
  If Not RetVal
     Then Moveto [Numero_Programacao]
          Locate CORTE,MudaCodigoPara(ITEM,"S")
          If RetVal
             Then AUX_ITEM = MudaCodigoPara(ITEM,"S")     
          EndIf
  EndIf
  
  GetRecord "\\Sistemas\\Estoque\\Itens" AUX_ITEM To REG_ITEM
  
  Moveto Tabela2
  End Down
  [Numero_Programacao      ]=CORTE
  [Codigo do Item          ]=AUX_ITEM
  [Descricao do Item       ]=REG_ITEM["Descricao do Item"]
  [Referencia              ]=REG_ITEM["Referencia"]
  [Unidade Fiscal          ]=REG_ITEM["Unidade Fiscal"]
  [Quantidade Programada   ]=CORTE_PROG
  [Quantidade Prod Anterior]=CORTE_PROD
  [Quantidade Prod Atual   ]=INTERNO_PROD
  UnLockRecord
  
  Moveto ProdInternaIR
EndScan
Do_It!
ClearAll

{Ask} {Rfacc}
Moveto [Numero_Producao       ] Example "numprod"
Moveto [Numero_Programacao    ] Check TypeIn "~NPROG.."
{Ask} {RfacRI} Check
Moveto [Numero_Producao       ] Example "numprod"
Do_It!
ClearAll

EndProc   ; (Seleciona)

;*******************************************************************************
;* ROTINA PRINCIPAL                                                            *
;*******************************************************************************
AGUARDE("Aguarde, Processando Dados")

Seleciona()

If IsEmpty(Tabela2)
   Then MENSAGEM("N„o existem registros a processar")
   Else IMPRIREL(Tabela2,"2")
EndIf

If Isassigned(Tabela2)       Then If IsTable(Tabela2)       Then Delete Tabela2       EndIf EndIf
If Isassigned(ProgCorte)     Then If IsTable(ProgCorte)     Then Delete ProgCorte     EndIf EndIf
If Isassigned(ProdCorte)     Then If IsTable(ProdCorte)     Then Delete ProdCorte     EndIf EndIf
If Isassigned(ProdInternaIG) Then If IsTable(ProdInternaIG) Then Delete ProdInternaIG EndIf EndIf
If Isassigned(ProdInternaIR) Then If IsTable(ProdInternaIR) Then Delete ProdInternaIR EndIf EndIf

LimpAguarde()
ClearAll
Release Vars OBSCONF,NUMPROD_ANTERIOR
Release Procs Seleciona
