;** ALTPR_CU *******************************************************************
;** Ajusta o Pre‡o de Custo dos Itens (P) ou (S)                               *
;*******************************************************************************
;Autor: Visao/Vise
;Desenvolvido  em: 05/02/2018 por Bruno Carvalho
;Ultima Alteracao: 14/03/2018 por Bruno Carvalho
;Motivo Alteracao: Adicionado processo p/ ajustar o custo unit rio na Produ‡Æo da Confecc‡Æo                          
;Ultima Alteracao: 27/10/2020 por Bruno Carvalho
;Motivo Alteracao: Adicionado processo para buscar pre~‡o da f¢rmula e novos filtros 

;*******************************************************************************
;* Cabe‡alho                                                                   *
;*******************************************************************************
Proc Cabecalho()

If Not IsAssigned(CI_15CPP) Then CI_15CPP="\15" EndIf

Print File ARQIMP CI_15CPP
Print File ARQIMP "\n\n\n"
Print File ARQIMP Spaces(2)+Fill("-",135) + "\n"
Switch
  Case VSDGOPCAO="1" : 
       Print File ARQIMP Spaces(2)+Format("W135,AC","Pre‡o de Custo na Ficha de Estoque - Itens n„o Localizados na Tabela de Pre‡o "+VSDGTABELA)+ "\n"
       Print File ARQIMP Spaces(2)+Format("W135,AC","Mes/Ano Referente a "+VSDGMESANO)+"\n"
  Case VSDGOPCAO="2" : 
       Print File ARQIMP Spaces(2)+Format("W135,AC","Movimenta‡Æo de Entrada por Produ‡Æo  - Itens n„o Localizados em nna Tabela de Pre‡o "+VSDGTABELA)+ "\n"
       Print File ARQIMP Spaces(2)+Format("W135,AC","Per¡odo de "+Format("D13",VSDGDTINI)+" ate "+Format("D13",VSDGDTFIM))+"\n"
EndSwitch
Print File ARQIMP Spaces(2)+Fill("-",135)+ "\n"
Print File ARQIMP "\n"

NLINHA = 8

EndProc ;Cabecalho()

;*******************************************************************************
;* Rotina de Impressao                                                         *
;*******************************************************************************
Proc Imprime(PARAM)
If Not IsAssigned(NLINHA) Then NLINHA = 0 EndIf

If Rtrim([Codigo do Item])="" 
   Then Return
EndIf

If Not IsFile(ARQIMP) Or NLINHA >= 66 Or Not IsAssigned(NAO_IMPRIME)
   Then If Not IsFile(ARQIMP)
           Then ConfGeral("Deseja visualizar a rela‡„o de itens n„o localizados na tabela de preco?")
                If OK<>"S"
                   Then NAO_IMPRIME=True     
                   Else NAO_IMPRIME=False
                        DISPOSITIVO_OPCAO = "V"
                        PDFZEBRA = False
                EndIf
       EndIf              
       If NLINHA >= 66
           Then Print File ARQIMP "\f"
       EndIf
       Cabecalho()
  Else NLINHA = NLINHA + 1    
EndIf

If NLINHA >= 66
   Then Print File ARQIMP "\f"
        Cabecalho()
EndIf

Switch
  Case VSDGOPCAO="1" : PRECO_CUSTO = [Preco de Custo]
  Case VSDGOPCAO="2" : PRECO_CUSTO = [Custo Unitario]
EndSwitch

GetRecord "\\Sistemas\\Estoque\\Itens" [Codigo do Item] To REG_ITEM
If Not RetVal
   Then Print File ARQIMP Spaces(2)+ Format("W11",[Codigo do Item]) + Format("W45","ITEM NAO LOCALIZADO NO CADASTRO DE ITENS")+Spaces(1)+Format("W12,EIC",PRECO_CUSTO)+"\n"
   Else Print File ARQIMP Spaces(2)+ Format("W11",[Codigo do Item]) + Format("W45",REG_ITEM["Descricao do Item"])+Spaces(1)+Format("W12,EIC",PRECO_CUSTO)+"\n"  
EndIf

EndProc ;Imprime()

;*******************************************************************************
;* Acerto Ficha de Estoque                                                     *
;*******************************************************************************
Proc Acerto_FichaEstoque_Formula()

{Ask} {Sdestq} Check
Moveto [Codigo da Empresa      ] TypeIn "~VSDGEMPRESA.."
Moveto [Codigo do Item         ] Example "Ite"
Moveto [Ano Referencia         ] TypeIn "~ANO"
Moveto [Mes Referencia         ] TypeIn "~MES"
{Ask} {Itens} 
Moveto [Codigo do Item         ] Example "Ite"
Moveto [Inativo                ] TypeIn "Not S"
Moveto [Referencia             ] TypeIn "~VSDGREFERENCIA.."
Moveto [Codigo da Marca        ] TypeIn "~VSDGMARCA.."
Moveto [Codigo da Familia      ] TypeIn "~VSDGFAMI.."
Moveto [Codigo do Grupo        ] TypeIn "~VSDGGRP.."
If VSDGTIPOEST<>""
   Then Ask_EstoqueTpItem("")
   Else Moveto [Tipo do Item   ] TypeIn "P or S"
EndIf    
Moveto [Codigo da Cor_Tecido   ] TypeIn "~VSDGCORTECIDO.."
Moveto [Codigo do Departamento ] TypeIn "~VSDGDEPART.."
Do_it!
ClearAll

AUX_SDESTQ=Adiciona_Indice_Temp("Codigo da Empresa,Codigo do Item,Ano Referencia,Mes Referencia")
ClearAll

If IsEmpty(AUX_SDESTQ)
   Then Return False
EndIf

;---- Apenas os Itens da Formula -----------------------------------------------
{Ask} TypeIn AUX_SDESTQ Enter TypeIn "Delete" Enter
Moveto [Codigo do Item         ] Example "_Ite"
{Ask} {\\Sistemas\\Producao\\FormulaC}
Moveto [Codigo do Produto      ] Example "_Ite"
Do_it!
ClearAll

SDESTQ=Cria_Temp(PrivDir())
Rename "Deleted" SDESTQ

Adiciona_Indice(SDESTQ,"Codigo da Empresa,Codigo do Item,Ano Referencia,Mes Referencia")

Edit SDESTQ
Scan
  ITEM = [Codigo do Item]
  
  Barra(NRecords(SDESTQ), RecNo())
  Aguarde("Aguarde, Ajustando Item " + ITEM + BARRA_STRING)
  
  ACHOU_ITEM = False
  GetRecord "\\Sistemas\\Producao\\FormulaC" ITEM To REG_FORMULA
  If RetVal
     Then ACHOU_ITEM = True   
  EndIf
       
  If ACHOU_ITEM
     Then GetRecord "\\Sistemas\\Estoque\\Itens" ITEM To REG_ITEM
          If Not ReTval
             Then Mensagem("Item "+ITEM+" n„o localizado no cadastro de itens!")
             Else If [Preco de Custo] <> REG_FORMULA["Custo Unitario"]
                     Then If Not ACHOU_MODIFICAO Then ACHOU_MODIFICAO=True EndIf
                          [Preco de Custo        ] = REG_FORMULA["Custo Unitario"]
                          [Data do Preco de Custo] = BlankDate() ;REG_FORMULA["Data Ultimo Reajuste"]
                     Else [Data do Preco de Custo] = BlankDate() ;REG_FORMULA["Data Ultimo Reajuste"]     
                  EndIf
          EndIf
     Else If Not IsAssigned(NAO_IMPRIME) Or IsAssigned(NAO_IMPRIME) And Not NAO_IMPRIME
             Then Imprime("FICHA DE ESTOQUE")
          EndIf    
  EndIf
EndScan
Do_It!
ClearAll

{Tools} {More} {Add} TypeIn SDESTQ Enter TypeIn "Sdestq" Enter
If MenuChoice()="NewEntries"
   Then {Update}
EndIf
ClearAll

Return True

EndProc ;Acerto_FichaEstoque_Formula()

;*******************************************************************************
;* Acerto Requisi‡äes                                                          *
;*******************************************************************************
Proc Acerto_Requisicoes_Formula()

{Ask} {RqCabeca}
Moveto [Numero do Lancamento   ] Example "Lanc"
Moveto [Codigo da Empresa      ] TypeIn "~VSDGEMPRESA.."
Moveto [Data de Ocorrencia     ] TypeIn ">=~VSDGDTINI ,<=~VSDGDTFIM"
Moveto [Tipo de Movimento      ] TypeIn "E"
Moveto [Tipo de Operacao       ] TypeIn "P"
{Ask} {RqItem} Check 
Moveto [Numero do Lancamento   ] Example "Lanc"
Moveto [Codigo do Item         ] Example "Ite"
{Ask} {Itens} 
Moveto [Codigo do Item         ] Example "Ite"
Moveto [Inativo                ] TypeIn "Not S"
Moveto [Referencia             ] TypeIn "~VSDGREFERENCIA.."
Moveto [Codigo da Marca        ] TypeIn "~VSDGMARCA.."
Moveto [Codigo da Familia      ] TypeIn "~VSDGFAMI.."
Moveto [Codigo do Grupo        ] TypeIn "~VSDGGRP.."
If VSDGTIPOEST<>""
   Then Ask_EstoqueTpItem("")
   Else Moveto [Tipo do Item   ] TypeIn "P or S"
EndIf    
Moveto [Codigo da Cor_Tecido   ] TypeIn "~VSDGCORTECIDO.."
Moveto [Codigo do Departamento ] TypeIn "~VSDGDEPART.."
Do_it!
ClearAll

AUX_RQITEM=Adiciona_Indice_Temp("Numero do Lancamento,Sequencia do Lancamento")
ClearAll

;---- Apenas os Itens da Formula -----------------------------------------------
{Ask} TypeIn AUX_RQITEM Enter TypeIn "Delete" Enter
Moveto [Codigo do Item         ] Example "_Ite"
{Ask} {\\Sistemas\\Producao\\FormulaC}
Moveto [Codigo do Produto      ] Example "_Ite"
Do_it!
ClearAll

RQITEM=Cria_Temp(PrivDir())
Rename "Deleted" RQITEM

Adiciona_Indice(RQITEM,"Numero do Lancamento,Sequencia do Lancamento")

CONTA_ITENS=0
DynArray ITENS[]

View "\\Sistemas\\Estoque\\RqitemG"
;---- Produ‡Æo do Corte -------------------
View "\\Sistemas\\Faccao\\PCfacc"
View "\\Sistemas\\Faccao\\PCfacri"
View "\\Sistemas\\Faccao\\PCfacrig"
;---- Produ‡Æo da Confeccao ---------------
View "\\Sistemas\\Faccao\\Rfacc"
View "\\Sistemas\\Faccao\\Rfacri"
View "\\Sistemas\\Faccao\\Rfacrig"
View "\\Sistemas\\Faccao\\Rfacrir"
Edit RQITEM
Scan
  LANCTO   = [Numero do Lancamento]
  ITEM     = [Codigo do Item]
  
  Barra(NRecords(RQITEM), RecNo())
  Aguarde("Aguarde, ajustando Item "+ITEM+BARRA_STRING)
  
  ACHOU_ITEM = False
  If DynArraySize(ITENS) > 0
     Then For i From 1 To DynArraySize(ITENS)
            If ITEM=ITENS[i] 
               Then ACHOU_ITEM = True
                    QuitLoop
            EndIf        
          EndFor
          If ACHOU_ITEM
             Then Loop
          EndIf    
  EndIf    
  
  ACHOU_ITEM = False
  GetRecord "\\Sistemas\\Producao\\FormulaC" ITEM To REG_FORMULA
  If RetVal
     Then ACHOU_ITEM = True   
  EndIf
       
  If ACHOU_ITEM
     Then GetRecord "\\Sistemas\\Estoque\\Itens" ITEM To REG_ITEM
          If Not ReTval
             Then Mensagem("Item "+ITEM+" n„o localizado no cadastro de itens!")
             Else If [Custo Unitario]<>REG_FORMULA["Custo Unitario"]
                     Then If Not ACHOU_MODIFICAO Then ACHOU_MODIFICAO=True EndIf
                          [Custo Unitario] = REG_FORMULA["Custo Unitario"]
                          [Custo Total   ] = NDecimal([Custo Unitario]*[Quantidade],2)
                          
                          CUSTO_UNITARIO  = [Custo Unitario] 
                                                    
                          ;---- Produ‡Æo do Corte ------------------------------                          
                          Moveto "\\Sistemas\\Faccao\\PCfacc"
                          Moveto [Lancamento RqCabeca_PCFAC]
                          Locate LANCTO
                          If RetVal
                             Then Moveto "\\Sistemas\\Faccao\\PCfacri"
                                  Moveto [Numero_Producao_Corte]
                                  Locate [\Sistemas\Faccao\PCfacc->Numero_Producao_Corte]
                                  If RetVal
                                     Then While [Numero_Producao_Corte] = [\Sistemas\Faccao\PCfacc->Numero_Producao_Corte]
                                            If ITEM = [Codigo do Item]
                                               Then [Custo Unitario] = CUSTO_UNITARIO
                                                    [Preco Total   ] = NDecimal([Custo Unitario]*[Quantidade Produzida],2)
                                                    AUX_ITEM=PegaCodigoRaizAteCor(ITEM)
                                                    Moveto "\\Sistemas\\Faccao\\PCfacrig"
                                                    Moveto [Numero_Producao_Corte]
                                                    Locate [\Sistemas\Faccao\PCfacc->Numero_Producao_Corte]
                                                    If RetVal
                                                       Then While [Numero_Producao_Corte] = [\Sistemas\Faccao\PCfacc->Numero_Producao_Corte]
                                                              If SubStr([Codigo do Item],1,Len(AUX_ITEM)) = AUX_ITEM
                                                                 Then [Custo Unitario] = CUSTO_UNITARIO
                                                                      [Preco Total   ] = NDecimal([Custo Unitario]*[Quantidade Produzida],2)
                                                              EndIf   
                                                              Skip
                                                              If Eot() Then QuitLoop EndIf
                                                            EndWhile
                                                    EndIf
                                                    
                                                    ;----- Requisi‡Æo de Grade --------------------------------
                                                    Moveto  "\\Sistemas\\Estoque\\RqitemG"
                                                    Moveto [Numero do Lancamento]
                                                    Locate LANCTO
                                                    If RetVal
                                                       Then While [Numero do Lancamento] = LANCTO
                                                              If SubStr([Codigo do Item],1,Len(AUX_ITEM)) = AUX_ITEM
                                                                 Then [Custo Unitario] = CUSTO_UNITARIO 
                                                                      [Custo Total   ] = NDecimal([Custo Unitario]*[Quantidade],2)
                                                              EndIf   
                                                              Skip
                                                              If Eot() Then QuitLoop EndIf
                                                            EndWhile
                                                    EndIf           
                                                    Moveto "\\Sistemas\\Faccao\\PCfacri"                                         
                                            EndIf        
                                            Skip
                                            If Eot() Then QuitLoop EndIf
                                          EndWhile   
                                  EndIf
                          EndIF
                          
                          ;---- Produ‡Æo da Confec‡Æo --------------------------
                          Moveto "\\Sistemas\\Faccao\\Rfacc"
                          Moveto [Lancamento RqCabeca_RFACC]
                          Locate LANCTO
                          If RetVal
                             Then Moveto "\\Sistemas\\Faccao\\Rfacri"
                                  Moveto [Numero_Producao]
                                  Locate [\Sistemas\Faccao\Rfacc->Numero_Producao]
                                  If RetVal
                                     Then While [Numero_Producao] = [\Sistemas\Faccao\Rfacc->Numero_Producao]
                                            AUX_ITEM=PegaCodigoRaizAteCor(ITEM)
                                            If AUX_ITEM = SubStr([Codigo do Item],1,Len(AUX_ITEM))
                                               Then [Custo Unitario] = CUSTO_UNITARIO
                                                    [Preco Total   ] = NDecimal([Custo Unitario]*[Quantidade Produzida],2)
                                                    
                                                    Moveto "\\Sistemas\\Faccao\\Rfacrig"
                                                    Moveto [Numero_Producao]
                                                    Locate [\Sistemas\Faccao\Rfacc->Numero_Producao]
                                                    If RetVal
                                                       Then 
                                                       ;---- RFACRIG -------------------------
                                                       While [Numero_Producao] = [\Sistemas\Faccao\Rfacc->Numero_Producao]
                                                         If SubStr([Codigo do Item],1,Len(AUX_ITEM)) = AUX_ITEM
                                                            Then [Custo Unitario] = CUSTO_UNITARIO
                                                                 [Preco Total   ] = NDecimal([Custo Unitario]*[Quantidade Produzida],2)
                                                         EndIf   
                                                         Skip
                                                         If Eot() Then QuitLoop EndIf
                                                       EndWhile
                                                            
                                                       Else 
                                                       ;---- RFACRIR -------------------------
                                                       Moveto "\\Sistemas\\Faccao\\Rfacrir"
                                                       Moveto [Numero_Producao]
                                                       Locate [\Sistemas\Faccao\Rfacc->Numero_Producao]
                                                       If RetVal
                                                          Then While [Numero_Producao] = [\Sistemas\Faccao\Rfacc->Numero_Producao]
                                                                 If SubStr([Codigo do Item],1,Len(AUX_ITEM)) = AUX_ITEM
                                                                    Then [Custo Unitario] = CUSTO_UNITARIO
                                                                         [Preco Total   ] = NDecimal([Custo Unitario]*[Quantidade Produzida],2)
                                                                 EndIf   
                                                                 Skip
                                                                 If Eot() Then QuitLoop EndIf
                                                               EndWhile
                                                       EndIf         
                                                    EndIf
                                                    
                                                    ;----- Requisi‡Æo de Grade --------------------------------
                                                    Moveto  "\\Sistemas\\Estoque\\RqitemG"
                                                    Moveto [Numero do Lancamento]
                                                    Locate LANCTO
                                                    If RetVal
                                                       Then While [Numero do Lancamento] = LANCTO
                                                              If SubStr([Codigo do Item],1,Len(AUX_ITEM)) = AUX_ITEM
                                                                 Then [Custo Unitario] = CUSTO_UNITARIO 
                                                                      [Custo Total   ] = NDecimal([Custo Unitario]*[Quantidade],2)
                                                              EndIf   
                                                              Skip
                                                              If Eot() Then QuitLoop EndIf
                                                            EndWhile
                                                    EndIf
                                                    Moveto "\\Sistemas\\Faccao\\Rfacri"                                                    
                                            EndIf        
                                            Skip
                                            If Eot() Then QuitLoop EndIf
                                          EndWhile   
                                  EndIf
                          EndIf      
                  EndIf
           EndIf
     Else If Not IsAssigned(NAO_IMPRIME) Or IsAssigned(NAO_IMPRIME) And Not NAO_IMPRIME
             Then CONTA_ITENS = CONTA_ITENS + 1
                  ITENS[CONTA_ITENS] = [Codigo do Item]
                  Imprime("ITEM SEM TABELA DE PRECO")
          EndIf    
  EndIf
  Moveto RQITEM
EndScan
Do_It!
ClearAll

{Tools} {More} {Add} TypeIn RQITEM Enter TypeIn "RqItem" Enter
If MenuChoice()="NewEntries"
   Then {Update}
EndIf
ClearAll

Return True

EndProc ;Acerto_Requisicoes_Formula()

;*******************************************************************************
;* Acerto Ficha de Estoque                                                     *
;*******************************************************************************
Proc Acerto_FichaEstoque_TbPreco()

{Ask} {Sdestq} Check
Moveto [Codigo da Empresa      ] TypeIn "~VSDGEMPRESA.."
Moveto [Codigo do Item         ] Example "Ite"
Moveto [Ano Referencia         ] TypeIn "~ANO"
Moveto [Mes Referencia         ] TypeIn "~MES"
{Ask} {Itens} 
Moveto [Codigo do Item         ] Example "Ite"
Moveto [Inativo                ] TypeIn "Not S"
Moveto [Referencia             ] TypeIn "~VSDGREFERENCIA.."
Moveto [Codigo da Marca        ] TypeIn "~VSDGMARCA.."
Moveto [Codigo da Familia      ] TypeIn "~VSDGFAMI.."
Moveto [Codigo do Grupo        ] TypeIn "~VSDGGRP.."
If VSDGTIPOEST<>""
   Then Ask_EstoqueTpItem("")
   Else Moveto [Tipo do Item   ] TypeIn "P or S"
EndIf    
Moveto [Codigo da Cor_Tecido   ] TypeIn "~VSDGCORTECIDO.."
Moveto [Codigo do Departamento ] TypeIn "~VSDGDEPART.."
Do_it!
ClearAll

AUX_SDESTQ=Adiciona_Indice_Temp("Codigo da Empresa,Codigo do Item,Ano Referencia,Mes Referencia")
ClearAll

If IsEmpty(AUX_SDESTQ)
   Then Return False
EndIf

;---- Apenas os Itens da Tabela de Pre‡o ---------------------------------------
{Ask} TypeIn AUX_SDESTQ Enter TypeIn "Delete" Enter
Moveto [Codigo do Item         ] Example "_Ite"
{Ask} {\\Sistemas\\Vendas\\TbPrite}
Moveto [Codigo da Tabela       ] TypeIn "~VSDGTABELA"
Moveto [Codigo do Item         ] Example "_Ite"
Do_it!
ClearAll

SDESTQ=Cria_Temp(PrivDir())
Rename "Deleted" SDESTQ

Adiciona_Indice(SDESTQ,"Codigo da Empresa,Codigo do Item,Ano Referencia,Mes Referencia")

If SYS_CLIENTE_CONFEC<>""
   Then AUX_SDESTQ2 = Cria_Temp(PrivDir())
        Copy AUX_SDESTQ AUX_SDESTQ2
        
        Edit AUX_SDESTQ
        Scan
          AUX_ITEM = PegaCodigoRaiz([Codigo do Item])
            
          Barra(NRecords(AUX_SDESTQ), RecNo())
          Aguarde("Aguarde, verificando item "+AUX_ITEM+BARRA_STRING)
          
          [Codigo do Item] = AUX_ITEM
        EndScan
        Do_it!
        ClearAll
        
        {Ask} TypeIn AUX_SDESTQ Enter TypeIn "Delete" Enter
        Moveto [Codigo do Item         ] Example "_Ite"
        {Ask} {\\Sistemas\\Vendas\\TbPrite}
        Moveto [Codigo da Tabela       ] TypeIn "~VSDGTABELA"
        Moveto [Codigo do Item         ] Example "_Ite"
        Do_it!
        ClearAll
        
        ;Se h  um item de aplicacao direta na tabela de pre‡o e h  filhos do mesmo no SDESTQ, TODOS
        ;estes filhos serÆo ajustado com o pre‡o informado no pai (item da aplicacao direta)
        If IsTable("Deleted") And Not IsEmpty("Deleted")
           Then ITEM = "****"
                ITEM_SCAN=Cria_Temp(PrivDir())
                Copy "Deleted" ITEM_SCAN
                
                View "Deleted"
                View AUX_SDESTQ2
                Edit ITEM_SCAN
                Scan
                  If ITEM<>[Codigo do Item]
                     Then ITEM=[Codigo do Item]
                  EndIf
                  Barra(NRecords("Deleted"), RecNo())
                  Aguarde("Aguarde, verificando item "+ITEM+BARRA_STRING)
                  Moveto AUX_SDESTQ2
                  Moveto [Codigo do Item]
                  Locate Pattern SubStr(ITEM,1,6)+".."
                  If RetVal
                     Then While True
                            CopyToArray REG_ITEM
                            If ITEM = PegaCodigoRaiz([Codigo do Item])
                              Then AUX_ITEM = [Codigo do Item]
                                   Moveto "Deleted"
                                   Moveto [Codigo do Item]
                                   Locate PegaCodigoRaiz(AUX_ITEM)
                                   If RetVal
                                      Then Del
                                   EndIf
                                   End Down
                                   CopyFromArray REG_ITEM    
                                   Moveto AUX_SDESTQ2
                                   Del
                              Else Skip                                           
                            EndIf
                            If Eot() Then QuitLoop EndIf
                            Locate Next Pattern SubStr(ITEM,1,6)+".."
                            If Not RetVal Then QuitLoop EndIf
                          EndWhile
                  EndIf   
                  Moveto ITEM_SCAN
                EndScan 
                Do_It!
                ClearAll
                Add "Deleted" SDESTQ
                Delete ITEM_SCAN
        EndIf
        Rename AUX_SDESTQ2 AUX_SDESTQ 
        If IsAssigned(AUX_SDESTQ2) And IsTable(AUX_SDESTQ2) Then Delete AUX_SDESTQ2 EndIf
EnDIf

If Not IsEmpty(AUX_SDESTQ)    
   Then View AUX_SDESTQ
        Scan
          Barra(NRecords(AUX_SDESTQ), RecNo())
          Aguarde("Aguarde, imprimindo o item "+[Codigo do Item]+BARRA_STRING)
          If Not IsAssigned(NAO_IMPRIME) Or IsAssigned(NAO_IMPRIME) And Not NAO_IMPRIME
             Then Imprime("FICHA DE ESTOQUE")
             Else QuitLoop
          EndIf   
        EndScan
        ClearAll
EndIf

If IsAssigned(SDESTQ)
   Then If IsEmpty(SDESTQ)
           Then Return False
        EnDIf   
EndIf   

Edit SDESTQ
Scan
  ITEM     = [Codigo do Item]
  AUX_ITEM = PegaCodigoRaiz(ITEM)
  
  Barra(NRecords(SDESTQ), RecNo())
  Aguarde("Aguarde, Ajustando Item "+ITEM+BARRA_STRING)
  
  ACHOU_ITEM = False
  GetRecord "\\Sistemas\\Vendas\\TbPrite" VSDGTABELA,ITEM To REG_PRECO
  If Not RetVal
     Then GetRecord "\\Sistemas\\Vendas\\TbPrite" VSDGTABELA,AUX_ITEM To REG_PRECO
          If RetVal
             Then ACHOU_ITEM = True
          EndIf   
     Else ACHOU_ITEM = True     
  EndIf
       
  If ACHOU_ITEM
     Then GetRecord "\\Sistemas\\Estoque\\Itens" ITEM To REG_ITEM
          If Not ReTval
             Then Mensagem("Item "+ITEM+" n„o localizado no cadastro de itens!")
             Else If [Preco de Custo] <>REG_PRECO["Preco Unitario"]
                     Then 
                          ;Fica invi vel ficar perguntando sempre a alteracao de custo de CADA item
                          ;MSG = "O custo unit rio informado no Item, // "+
                          ;      ITEM+" "+REG_ITEM["Descricao do Item"]+"// "+
                          ;      "difere da Ficha de Estoque !// //"+
                          ;      "Custo Informado = "+Format("W12.5,EIC",REG_PRECO["Preco Unitario"])+"//"+
                          ;      "Custo da Ficha  = "+Format("W12.5,EIC",[Preco de Custo])+"// //"+
                          ;      "Deseja Atualizar o custo da ficha de estoque deste item?"
                          ;ConfGeral(MSG)
                          ;If OK="S"
                          ;   Then If Not ACHOU_MODIFICAO Then ACHOU_MODIFICAO=True EndIf
                          ;        [Preco de Custo        ] = REG_PRECO["Preco Unitario"]
                          ;        [Data do Preco de Custo] = REG_PRECO["Data Ultimo Reajuste"]
                          ;EndIf
                          
                          If Not ACHOU_MODIFICAO Then ACHOU_MODIFICAO=True EndIf
                          [Preco de Custo        ] = REG_PRECO["Preco Unitario"]
                          [Data do Preco de Custo] = REG_PRECO["Data Ultimo Reajuste"]
                          
                     Else [Data do Preco de Custo] = REG_PRECO["Data Ultimo Reajuste"]
                  EndIf
          EndIf
     Else If Not IsAssigned(NAO_IMPRIME) Or IsAssigned(NAO_IMPRIME) And Not NAO_IMPRIME
             Then Imprime("FICHA DE ESTOQUE")
          EndIf    
  EndIf
EndScan
Do_It!
ClearAll

{Tools} {More} {Add} TypeIn SDESTQ Enter TypeIn "Sdestq" Enter
If MenuChoice()="NewEntries"
   Then {Update}
EndIf
ClearAll

Return True

EndProc ;Acerto_FichaEstoque_TbPreco()

;*******************************************************************************
;* Acerto Requisi‡äes                                                          *
;*******************************************************************************
Proc Acerto_Requisicoes_TbPreco()

{Ask} {RqCabeca}
Moveto [Numero do Lancamento   ] Example "Lanc"
Moveto [Codigo da Empresa      ] TypeIn "~VSDGEMPRESA.."
Moveto [Data de Ocorrencia     ] TypeIn ">=~VSDGDTINI ,<=~VSDGDTFIM"
Moveto [Tipo de Movimento      ] TypeIn "E"
Moveto [Tipo de Operacao       ] TypeIn "P"
{Ask} {RqItem} Check 
Moveto [Numero do Lancamento   ] Example "Lanc"
Moveto [Codigo do Item         ] Example "Ite"
{Ask} {Itens} 
Moveto [Codigo do Item         ] Example "Ite"
Moveto [Inativo                ] TypeIn "Not S"
Moveto [Referencia             ] TypeIn "~VSDGREFERENCIA.."
Moveto [Codigo da Marca        ] TypeIn "~VSDGMARCA.."
Moveto [Codigo da Familia      ] TypeIn "~VSDGFAMI.."
Moveto [Codigo do Grupo        ] TypeIn "~VSDGGRP.."
If VSDGTIPOEST<>""
   Then Ask_EstoqueTpItem("")
   Else Moveto [Tipo do Item   ] TypeIn "P or S"
EndIf    
Moveto [Codigo da Cor_Tecido   ] TypeIn "~VSDGCORTECIDO.."
Moveto [Codigo do Departamento ] TypeIn "~VSDGDEPART.."
Do_it!
ClearAll

AUX_RQITEM=Adiciona_Indice_Temp("Numero do Lancamento,Sequencia do Lancamento")
ClearAll

;---- Apenas os Itens da Tabela de Pre‡o ---------------------------------------
{Ask} TypeIn AUX_RQITEM Enter TypeIn "Delete" Enter
Moveto [Codigo do Item         ] Example "_Ite"
{Ask} {\\Sistemas\\Vendas\\TbPrite}
Moveto [Codigo da Tabela       ] TypeIn "~VSDGTABELA"
Moveto [Codigo do Item         ] Example "_Ite"
Do_it!

ClearAll

RQITEM=Cria_Temp(PrivDir())
Rename "Deleted" RQITEM

Adiciona_Indice(RQITEM,"Numero do Lancamento,Sequencia do Lancamento")

If SYS_CLIENTE_CONFEC<>""
   Then AUX_RQITEM2 = Cria_Temp(PrivDir())
        Copy AUX_RQITEM AUX_RQITEM2
        
        Edit AUX_RQITEM
        Scan
          AUX_ITEM = PegaCodigoRaiz([Codigo do Item])
            
          Barra(NRecords(AUX_RQITEM), RecNo())
          Aguarde("Aguarde, verificando item "+AUX_ITEM+BARRA_STRING)
          
          [Codigo do Item] = AUX_ITEM
        EndScan
        Do_it!
        ClearAll
        
        {Ask} TypeIn AUX_RQITEM Enter TypeIn "Delete" Enter
        Moveto [Codigo do Item         ] Example "_Ite"
        {Ask} {\\Sistemas\\Vendas\\TbPrite}
        Moveto [Codigo da Tabela       ] TypeIn "~VSDGTABELA"
        Moveto [Codigo do Item         ] Example "_Ite"
        Do_it!
        ClearAll
        
        If IsTable("Deleted") And Not IsEmpty("Deleted")
           Then ITEM = "****"
                View AUX_RQITEM2
                Edit "Deleted"
                Scan
                  If ITEM<>[Codigo do Item]
                     Then ITEM=[Codigo do Item]
                  EndIf
                  Barra(NRecords("Deleted"), RecNo())
                  Aguarde("Aguarde, verificando item "+ITEM+BARRA_STRING)
                  Moveto AUX_RQITEM2
                  Moveto [Codigo do Item]
                  Locate Pattern SubStr(ITEM,1,6)+".."
                  If RetVal
                     Then While True
                            If ITEM = PegaCodigoRaiz([Codigo do Item])
                              Then AUX_ITEM = [Codigo do Item]
                                   Moveto "Deleted" 
                                   [Codigo do Item] = AUX_ITEM 
                                   Moveto AUX_RQITEM2
                                   Del
                            EndIf
                            Skip
                            If Eot() Then QuitLoop EndIf
                            Locate Next Pattern SubStr(ITEM,1,6)+".."
                            If Not RetVal Then QuitLoop EndIf
                          EndWhile
                  EndIf   
                  Moveto "Deleted"
                EndScan 
                Do_It!
                ClearAll
                Add "Deleted" RQITEM
        EndIf
        Rename AUX_RQITEM2 AUX_RQITEM
EnDIf

If Not IsEmpty(AUX_RQITEM)    
   Then View AUX_RQITEM
        Scan
          Barra(NRecords(AUX_RQITEM), RecNo())
          Aguarde("Aguarde, imprimindo o item "+[Codigo do Item]+BARRA_STRING)
          If Not IsAssigned(NAO_IMPRIME) Or IsAssigned(NAO_IMPRIME) And Not NAO_IMPRIME
             Then Imprime("ITEM SEM TABELA DE PRECO")
             Else QuitLoop
          EndIf   
        EndScan
        ClearAll
EndIf        
If IsAssigned(AUX_RQITEM)  And IsTable(AUX_RQITEM)  Then Delete AUX_RQITEM  EndIf
If IsAssigned(AUX_RQITEM2) And IsTable(AUX_RQITEM2) Then Delete AUX_RQITEM2 EndIf

If IsEmpty(RQITEM)
   Then Return False
EndIf   

CONTA_ITENS=0
DynArray ITENS[]

View "\\Sistemas\\Estoque\\RqitemG"
;---- Produ‡Æo do Corte -------------------
View "\\Sistemas\\Faccao\\PCfacc"
View "\\Sistemas\\Faccao\\PCfacri"
View "\\Sistemas\\Faccao\\PCfacrig"
;---- Produ‡Æo da Confeccao ---------------
View "\\Sistemas\\Faccao\\Rfacc"
View "\\Sistemas\\Faccao\\Rfacri"
View "\\Sistemas\\Faccao\\Rfacrig"
View "\\Sistemas\\Faccao\\Rfacrir"
Edit RQITEM
Scan
  LANCTO   = [Numero do Lancamento]
  ITEM     = [Codigo do Item]
  AUX_ITEM = PegaCodigoRaiz(ITEM)
  
  Barra(NRecords(RQITEM), RecNo())
  Aguarde("Aguarde, ajustando Item "+ITEM+BARRA_STRING)
  
  ACHOU_ITEM = False
  If DynArraySize(ITENS) > 0
     Then For i From 1 To DynArraySize(ITENS)
            If ITEM=ITENS[i] 
               Then ACHOU_ITEM = True
                    QuitLoop
            EndIf        
          EndFor
          If ACHOU_ITEM
             Then Loop
          EndIf    
  EndIf    
  
  ACHOU_ITEM = False
  GetRecord "\\Sistemas\\Vendas\\TbPrite" VSDGTABELA,ITEM To REG_PRECO
  If Not RetVal
     Then GetRecord "\\Sistemas\\Vendas\\TbPrite" VSDGTABELA,AUX_ITEM To REG_PRECO
          If RetVal
             Then ACHOU_ITEM = True
          EndIf   
     Else ACHOU_ITEM = True     
  EndIf
       
  If ACHOU_ITEM
     Then GetRecord "\\Sistemas\\Estoque\\Itens" ITEM To REG_ITEM
          If Not ReTval
             Then Mensagem("Item "+ITEM+" n„o localizado no cadastro de itens!")
             Else If [Custo Unitario]<>REG_PRECO["Preco Unitario"]
                     Then 
                          ;Fica invi vel ficar perguntando sempre a alteracao de custo de CADA item
                          ;MSG = "O custo unit rio informado no Item,// "+
                          ;      ITEM+" "+REG_ITEM["Descricao do Item"]+"// "+
                          ;      "difere do item da requisi‡„o "+LANCTO+"!// //"+
                          ;      "Custo informado             = "+Format("W12.5,EIC",REG_PRECO["Preco Unitario"])+"//"+
                          ;      "Custo do Item na Requisi‡„o = "+Format("W12.5,EIC",[Custo Unitario])+"// //"+
                          ;      "Deseja atualizar o custo do item neste Lan‡amento ?"
                          ;ConfGeral(MSG)
                          ;If OK="S"
                          ;   Then If Not ACHOU_MODIFICAO Then ACHOU_MODIFICAO=True EndIf
                          ;        [Custo Unitario] = REG_PRECO["Preco Unitario"]
                          ;        [Custo Total   ] = NDecimal([Custo Unitario]*[Quantidade],2)
                          ;EndIf
                          
                          If Not ACHOU_MODIFICAO Then ACHOU_MODIFICAO=True EndIf
                          [Custo Unitario] = REG_PRECO["Preco Unitario"]
                          [Custo Total   ] = NDecimal([Custo Unitario]*[Quantidade],2)
                          
                          CUSTO_UNITARIO  = [Custo Unitario] 
                                                    
                          ;---- Produ‡Æo do Corte ------------------------------                          
                          Moveto "\\Sistemas\\Faccao\\PCfacc"
                          Moveto [Lancamento RqCabeca_PCFAC]
                          Locate LANCTO
                          If RetVal
                             Then Moveto "\\Sistemas\\Faccao\\PCfacri"
                                  Moveto [Numero_Producao_Corte]
                                  Locate [\Sistemas\Faccao\PCfacc->Numero_Producao_Corte]
                                  If RetVal
                                     Then While [Numero_Producao_Corte] = [\Sistemas\Faccao\PCfacc->Numero_Producao_Corte]
                                            If ITEM = [Codigo do Item]
                                               Then [Custo Unitario] = CUSTO_UNITARIO
                                                    [Preco Total   ] = NDecimal([Custo Unitario]*[Quantidade Produzida],2)
                                                    AUX_ITEM=PegaCodigoRaizAteCor(ITEM)
                                                    Moveto "\\Sistemas\\Faccao\\PCfacrig"
                                                    Moveto [Numero_Producao_Corte]
                                                    Locate [\Sistemas\Faccao\PCfacc->Numero_Producao_Corte]
                                                    If RetVal
                                                       Then While [Numero_Producao_Corte] = [\Sistemas\Faccao\PCfacc->Numero_Producao_Corte]
                                                              If SubStr([Codigo do Item],1,Len(AUX_ITEM)) = AUX_ITEM
                                                                 Then [Custo Unitario] = CUSTO_UNITARIO
                                                                      [Preco Total   ] = NDecimal([Custo Unitario]*[Quantidade Produzida],2)
                                                              EndIf   
                                                              Skip
                                                              If Eot() Then QuitLoop EndIf
                                                            EndWhile
                                                    EndIf
                                                    
                                                    ;----- Requisi‡Æo de Grade --------------------------------
                                                    Moveto  "\\Sistemas\\Estoque\\RqitemG"
                                                    Moveto [Numero do Lancamento]
                                                    Locate LANCTO
                                                    If RetVal
                                                       Then While [Numero do Lancamento] = LANCTO
                                                              If SubStr([Codigo do Item],1,Len(AUX_ITEM)) = AUX_ITEM
                                                                 Then [Custo Unitario] = CUSTO_UNITARIO 
                                                                      [Custo Total   ] = NDecimal([Custo Unitario]*[Quantidade],2)
                                                              EndIf   
                                                              Skip
                                                              If Eot() Then QuitLoop EndIf
                                                            EndWhile
                                                    EndIf           
                                                    Moveto "\\Sistemas\\Faccao\\PCfacri"                                         
                                            EndIf        
                                            Skip
                                            If Eot() Then QuitLoop EndIf
                                          EndWhile   
                                  EndIf
                          EndIF
                          
                          ;---- Produ‡Æo da Confec‡Æo --------------------------
                          Moveto "\\Sistemas\\Faccao\\Rfacc"
                          Moveto [Lancamento RqCabeca_RFACC]
                          Locate LANCTO
                          If RetVal
                             Then Moveto "\\Sistemas\\Faccao\\Rfacri"
                                  Moveto [Numero_Producao]
                                  Locate [\Sistemas\Faccao\Rfacc->Numero_Producao]
                                  If RetVal
                                     Then While [Numero_Producao] = [\Sistemas\Faccao\Rfacc->Numero_Producao]
                                            AUX_ITEM=PegaCodigoRaizAteCor(ITEM)
                                            If AUX_ITEM = SubStr([Codigo do Item],1,Len(AUX_ITEM))
                                               Then [Custo Unitario] = CUSTO_UNITARIO
                                                    [Preco Total   ] = NDecimal([Custo Unitario]*[Quantidade Produzida],2)
                                                    
                                                    Moveto "\\Sistemas\\Faccao\\Rfacrig"
                                                    Moveto [Numero_Producao]
                                                    Locate [\Sistemas\Faccao\Rfacc->Numero_Producao]
                                                    If RetVal
                                                       Then 
                                                       ;---- RFACRIG -------------------------
                                                       While [Numero_Producao] = [\Sistemas\Faccao\Rfacc->Numero_Producao]
                                                         If SubStr([Codigo do Item],1,Len(AUX_ITEM)) = AUX_ITEM
                                                            Then [Custo Unitario] = CUSTO_UNITARIO
                                                                 [Preco Total   ] = NDecimal([Custo Unitario]*[Quantidade Produzida],2)
                                                         EndIf   
                                                         Skip
                                                         If Eot() Then QuitLoop EndIf
                                                       EndWhile
                                                            
                                                       Else 
                                                       ;---- RFACRIR -------------------------
                                                       Moveto "\\Sistemas\\Faccao\\Rfacrir"
                                                       Moveto [Numero_Producao]
                                                       Locate [\Sistemas\Faccao\Rfacc->Numero_Producao]
                                                       If RetVal
                                                          Then While [Numero_Producao] = [\Sistemas\Faccao\Rfacc->Numero_Producao]
                                                                 If SubStr([Codigo do Item],1,Len(AUX_ITEM)) = AUX_ITEM
                                                                    Then [Custo Unitario] = CUSTO_UNITARIO
                                                                         [Preco Total   ] = NDecimal([Custo Unitario]*[Quantidade Produzida],2)
                                                                 EndIf   
                                                                 Skip
                                                                 If Eot() Then QuitLoop EndIf
                                                               EndWhile
                                                       EndIf         
                                                    EndIf
                                                    
                                                    ;----- Requisi‡Æo de Grade --------------------------------
                                                    Moveto  "\\Sistemas\\Estoque\\RqitemG"
                                                    Moveto [Numero do Lancamento]
                                                    Locate LANCTO
                                                    If RetVal
                                                       Then While [Numero do Lancamento] = LANCTO
                                                              If SubStr([Codigo do Item],1,Len(AUX_ITEM)) = AUX_ITEM
                                                                 Then [Custo Unitario] = CUSTO_UNITARIO 
                                                                      [Custo Total   ] = NDecimal([Custo Unitario]*[Quantidade],2)
                                                              EndIf   
                                                              Skip
                                                              If Eot() Then QuitLoop EndIf
                                                            EndWhile
                                                    EndIf
                                                    Moveto "\\Sistemas\\Faccao\\Rfacri"                                                    
                                            EndIf        
                                            Skip
                                            If Eot() Then QuitLoop EndIf
                                          EndWhile   
                                  EndIf
                          EndIf      
                  EndIf
           EndIf
     Else If Not IsAssigned(NAO_IMPRIME) Or IsAssigned(NAO_IMPRIME) And Not NAO_IMPRIME
             Then CONTA_ITENS = CONTA_ITENS + 1
                  ITENS[CONTA_ITENS] = [Codigo do Item]
                  Imprime("ITEM SEM TABELA DE PRECO")
          EndIf    
  EndIf
  Moveto RQITEM
EndScan
Do_It!
ClearAll

{Tools} {More} {Add} TypeIn RQITEM Enter TypeIn "RqItem" Enter
If MenuChoice()="NewEntries"
   Then {Update}
EndIf
ClearAll

Return True

EndProc ;Acerto_Requisicoes_TbPreco()

;*******************************************************************************
;* Rotina                                                                      *
;*******************************************************************************
Proc SD_Dialog(Disparo,Campo,Evento,Elemento)
Temp=True
MSG_CAMPO=""
TECLA=""

If Disparo="OPEN"  
   Then AoCriarShowDialog()
        If refazershowdialog 
           Then Campo=CampoAnterior 
                refazershowdialog=false 
        EndIf  
EndIf       
 
If Disparo="EVENT" And Evento["Type"]="KEY" Then
   Switch
     Case Evento["KeyCode"] = 9: Temp=False
     Case Evento["KeyCode"] = -59: Dialog_F1()
     Case Evento["KeyCode"] =  27:
          Temp=False
          Switch
            Case Campo="TG_EMPRESA"         : Campo="NO"
            
            Case Campo="TG_OPCAO"           : Campo="TG_EMPRESA"        
            Case Campo="TG_MESANO"          : Campo="TG_OPCAO"
            Case Campo="TG_DTINI"           : Campo="TG_OPCAO"  
            Case Campo="TG_DTFIM"           : Campo="TG_DTINI"
            Case Campo="TG_OPPRECO"         : Campo="TG_OPCAO"
            Case Campo="TG_TABELA"          : Campo="TG_OPPRECO"
            Case Campo="TG_TIPOEST"         : If VSDGOPPRECO = "1"
                                                Then Campo="TG_TABELA" 
                                                Else Campo="TG_OPPRECO"
                                              EndIF   
            Case Campo="TG_DEPART"          : Campo="TG_TIPOEST"
            Case Campo="TG_COR_TECIDO"      : Campo="TG_DEPART"
            Case Campo="TG_REFERENCIA"      : Campo="TG_COR_TECIDO"
            Case Campo="TG_MARCA"           : Campo="TG_REFERENCIA"
            Case Campo="TG_FAMI"            : Campo="TG_MARCA"
            Case Campo="TG_GRP"             : Campo="TG_FAMI"
            Case Campo="YES" or Campo="NO"  : Campo="TG_EMPRESA"
          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_EMPRESA"  :
                         If IsBlank(VSDGEMPRESA)
                             Then VSDGEMPRESA=""
                                  FastMsg("Informe a Empresa!")
                             Else Campo="TG_OPCAO"
                         EndIf  
                    Case Campo="TG_OPCAO"    : 
                         VSDGOPCAO = ControlValue("TG_OPCAO")
                         Switch
                           Case VSDGOPCAO = "2"  : VSDGNOMOPCAO = "Movimenta‡Æo de Entrada por Produ‡Æo" 
                           OtherWise             : VSDGOPCAO  = "1"
                                                   VSDGNOMOPCAO = "Ficha de Estoque"
                         Endswitch                         
                         Switch
                           Case VSDGOPCAO="1"  : WCol1 = 00
                                                 WCol2 = 80
                                                 CampoAnterior="TG_MESANO" 
                           Case VSDGOPCAO="2"  : wcol=00
                                                 wlin=10
                                                 WCol1 = 80
                                                 WCol2 = 00
                                                 CampoAnterior="TG_DTINI"
                         EndSwitch
                         refazershowdialog=true
                         AcceptDialog    
                    Case Campo="TG_DTINI"   : Campo="TG_DTFIM"     
                    Case Campo="TG_MESANO" Or     
                         Campo="TG_DTFIM"   : Campo="TG_OPPRECO"    
                    Case Campo="TG_OPPRECO" : 
                         VSDGOPPRECO = ControlValue("TG_OPPRECO")
                         Switch
                           Case VSDGOPPRECO = "2"  : VSDGNOMPRECO = "F¢rmula" 
                           OtherWise               : VSDGOPPRECO  = "1"
                                                     VSDGNOMPRECO = "Tabela de Pre‡o"
                         Endswitch
                         Switch
                           Case VSDGOPPRECO="1" : WCol3 = 00
                                                  CampoAnterior="TG_TABELA" 
                           Case VSDGOPPRECO="2" : WCol3 = 80
                                                  CampoAnterior="TG_TIPOEST"
                         EndSwitch
                         refazershowdialog=true
                         AcceptDialog              
                    Case Campo="TG_TABELA"   : 
                         If IsBlank(VSDGTABELA)
                             Then VSDGNOMTAB=""
                                  FastMsg("Informe a Tabela de Pre‡o!")
                             Else Campo="TG_TIPOEST"
                         EndIf
                    Case Campo="TG_TIPOEST"     : Campo="TG_DEPART"
                    Case Campo="TG_DEPART"      : Campo="TG_COR_TECIDO"
                    Case Campo="TG_COR_TECIDO"  : Campo="TG_REFERENCIA"
                    Case Campo="TG_REFERENCIA"  : Campo="TG_MARCA"
                    Case Campo="TG_MARCA"       : Campo="TG_FAMI"
                    Case Campo="TG_FAMI"        : Campo="TG_GRP"
                    Case Campo="TG_GRP"         : Campo="YES"
                  EndSwitch
          EndIf
          RefreshDialog
   EndSwitch
EndIf
Switch
  Case Campo="TG_TABELA"   :
     MSG_CAMPO="Informe a tabela de pre‡o do custo" 
  Case Campo="TG_OPPRECO"    :
     MSG_CAMPO="Origem do Pre‡o de Custo: 1=Tabela de Pre‡o  2=F¢rmula"
  Case Campo="TG_OPCAO"    :
     MSG_CAMPO="Alterar Pre‡o de Custo: 1=Ficha de Estoque  2=Movimenta‡Æo Entrada por Produ‡Æo"   
EndSwitch
Monta_Prompt(MSG_CAMPO,TECLA)
Return Temp

EndProc ;SD_DIALOG()

;*******************************************************************************
;* Rotina Principal                                                            *
;*******************************************************************************
AutoLib="\\Sistemas\\Cadastro\\Bibliot,\\Sistemas\\Cadastro\\Bib_Show"
LimpAguarde()
SYS_VALOR()

NAO_IMPRIME    = False
VSDGEMPRESA    = "" 
VSDGNOMEMP     = ""
VSDGTABELA     = "" 
VSDGNOMTAB     = ""
VSDGTIPOEST    = ""
VSDGDESCTIPOEST= ""
VSDGMARCA      = ""
VSDGNOMMARCA   = ""
VSDGFAMI       = ""
VSDGNOMFAMI    = ""
VSDGGRP        = ""
VSDGNOMGRP     = ""
VSDGDEPART     = ""
VSDGNOMDEPART  = ""
VSDGCORTECIDO  = ""
VSDGNOMCORTECIDO= ""
VSDGREFERENCIA = ""
VSDGOPPRECO    = "" 
VSDGNOMPRECO   = ""
VSDGDTINI      = BlankDate()
VSDGDTFIM      = BlankDate()
VSDGMESANO     = AlinhM(StrVal(Month(Today())),2)+"."+AlinhM(StrVal(Year(Today())),4)  

If Checa_Supervisor()
   Then Supervisor_OK=True
   Else Supervisor_OK=False
EndIf

refazershowdialog=false
WCol1 = 00
WCol2 = 80

WCol3 = 80

While Supervisor_OK
  ACHOU_MODIFICAO=False
  
  ShowDialog "Manuten‡Æo Pre‡o de Custo" Proc "SD_Dialog"
  Trigger "OPEN","ARRIVE"
  Key "F1","ENTER","ESC","TAB",
  -104, -105, -106, -107, -108, -109, -110, -111, -112, -113, -139, -140  
  @ 05,05 Height 19 Width 72

    Label  @ 00,00 "Empresa"  For "TG_EMPRESA"
    Accept @ 01,02 Width 07 "A4"  Picture "[&,#][#*#]" Tag "TG_EMPRESA"    To VSDGEMPRESA
    Accept @ 01,10 Width 25 "A20" Picture "!*!" Tag "TG_NOMEMPRESA" To VSDGNOMEMP
    
    Label  @ 02,00 "Alterar Pre‡o de Custo"  For "TG_OPCAO"
    Accept @ 03,05 Width 04 "A4"  Picture "1,2" Tag "TG_OPCAO"  To VSDGOPCAO
    Accept @ 03,10 Width 25 "A20" Picture "!*!" Tag "TG_NOMOPCAO" To VSDGNOMOPCAO
                                                                                                               
    Label  @ 04,WCol1 "Mˆs/Ano Estoque"  For "TG_MESANO"
    Accept @ 05,WCol1+4  Width 10 "A07"  Picture "##.####" Tag "TG_MESANO" To VSDGMESANO
    
    Label  @ 04,WCol2 "Per¡odo Referente de" For "TG_DTINI"
    Accept @ 05,WCol2+3 Width 13 "D"  Picture "#[#];.##;.##[##]" Tag "TG_DTINI" To VSDGDTINI
    Label  @ 05,WCol2+16 "at‚" For "TG_DTFIM"
    Accept @ 05,WCol2+21 Width 13 "D"  Picture "#[#];.##;.##[##]" Tag "TG_DTFIM" To VSDGDTFIM

    Label  @ 06,00 "Origem do Pre‡o de Custo"  For "TG_OPPRECO"
    Accept @ 07,05 Width 04 "A4"  Picture "1,2" Tag "TG_OPPRECO"    To VSDGOPPRECO
    Accept @ 07,10 Width 25 "A20" Picture "!*!" Tag "TG_NOMPRECO" To VSDGNOMPRECO
    
    Label  @ 08,WCol3    "Tabela de Pre‡o"  For "TG_TABELA"                           ;35
    Accept @ 09,WCol3+1  Width 08 "A5"  Picture "#*#" Tag "TG_TABELA" To VSDGTABELA   ;36
    Accept @ 09,WCol3+10 Width 25 "A30" Picture "!*!" Tag "TG_NOMTAB" To VSDGNOMTAB   ;45

    Label  @ 10,00 "Tipo do Estoque"  For "TG_TIPOEST"
    Accept @ 11,05 Width 04 "A1"  Picture "!" Tag "TG_TIPOEST" To VSDGTIPOEST
    Accept @ 11,10 Width 25 "A30"  Picture "!*!" Tag "TG_DESCTIPOEST" To VSDGDESCTIPOEST
    
    Label  @ 12,00 "Departamento"  For "TG_DEPART"
    Accept @ 13,03 Width 06 "A3"  Picture "#*#" Tag "TG_DEPART"    To VSDGDEPART
    Accept @ 13,10 Width 25 "A25" Picture "!*!" Tag "TG_NOMDEPART" To VSDGNOMDEPART
    
    Label  @ 00,35 "Cor do Tecido"  For "TG_COR_TECIDO"
    Accept @ 01,37 Width 07 "A4"  Picture "#*#" Tag "TG_COR_TECIDO"    To VSDGCORTECIDO
    Accept @ 01,44 Width 25 "A25" Picture "!*!" Tag "TG_NOMCOR_TECIDO" To VSDGNOMCORTECIDO
    
    Label  @ 02,35 "Referˆncia"  For "TG_REFERENCIA"
    Accept @ 03,37 Width 21 "A20" Picture "!*!" Tag "TG_REFERENCIA"     To VSDGREFERENCIA
    
    Label  @ 04,35 "Marca"  For "TG_MARCA"
    Accept @ 05,37 Width 06 "A3"  Picture "#*#" Tag "TG_MARCA"    To VSDGMARCA
    Accept @ 05,44 Width 25 "A24" Picture "!*!" Tag "TG_NOMMARCA" To VSDGNOMMARCA

    Label  @ 06,35 "Familia"  For "TG_FAMI"
    Accept @ 07,37 Width 06 "A3"  Picture "#*#" Tag "TG_FAMI"    To VSDGFAMI
    Accept @ 07,44 Width 25 "A30" Picture "!*!" Tag "TG_NOMFAMI" To VSDGNOMFAMI

    Label  @ 08,35 "Grupo"  For "TG_GRP"
    Accept @ 09,37 Width 06 "A3"  Picture "#*#" Tag "TG_GRP"    To VSDGGRP
    Accept @ 09,44 Width 25 "A30" Picture "!*!" Tag "TG_NOMGRP" To VSDGNOMGRP

    Pushbutton @ 15,24 width 11 "~O~k"      OK     Default Value "Ok" Tag "YES" To BottonValue
    Pushbutton @ 15,38 width 11 "~C~ancela" CANCEL                    Tag "NO"  To BottonValue


  EndDialog
  If Not RetVal Then QuitLoop EndIf

  if refazershowdialog then loop endif
  
  Switch
    Case VSDGDTINI=BlankDate() And VSDGOPCAO="2" : Mensagem("Data Inicial inv lida!")     Loop
    Case VSDGDTFIM=BlankDate() And VSDGOPCAO="2" : Mensagem("Data Final Invalida!")       Loop
    Case VSDGOPCAO=1 And IsBlank(VSDGMESANO)     : Mensagem("Mes/Ano Invalido!")          Loop
    Case VSDGOPCAO=2 And VSDGDTFIM<VSDGDTINI     : Loop
    Case IsBlank(VSDGTABELA) And VSDGOPPRECO="1" : Mensagem("Informe a Tabela de Pre‡o")  Loop 
  EndSwitch
  
  If VSDGOPPRECO="1"
     Then GetRecord "\\Sistemas\\Vendas\\TbPrIte" VSDGTABELA To REG_TABPRECO
          If Not RetVal
             Then FastMsg("Tabela de Pre‡o "+VSDGTABELA+" n„o localizada!")
                  Loop
          EndIf
     Else VSDGTABELA=""
  EndIf   
  
  If VSDGOPCAO="1"
     Then MES=Substr(VSDGMESANO,1,2)
          ANO=Substr(VSDGMESANO,4,4)
          If NumVal(MES) > 12 Or NumVal(MES) <= 0
             Then Loop
          EndIf
  EndIf
  
  COR_MENSAGEM="ALERTA"
  MSG=    "- Antes de efetuar esta opera‡„o de altera‡„o de dados,     //"
  MSG=MSG+"  recomendamos que seja feito um backup do sistema.         //"
  MSG=MSG+"- Caso a altera‡„o de dados fique errada ‚ poss¡vel retornar//"
  MSG=MSG+"  aos valores anteriores com a restaura‡„o do backup.       //"
  MSG=MSG+"- Recomendamos tamb‚m que durante este processo ningu‚m     //"
  MSG=MSG+"  esteja usando o sistema.                                  //"
  MSG=MSG+"Deseja continuar com este processo?"
  ConfGeral(MSG)
  If OK<>"S" Then Loop EndIf
      
  ARQIMP=PrivDir()+"ERRO.Txt"
  If IsFile(ARQIMP)
    Then Deleta_Arquivo(ARQIMP)
  EndIf
  
  Switch
    Case VSDGOPCAO="1": Switch
                         Case VSDGOPPRECO="1" :
                              If Not Acerto_FichaEstoque_TbPreco()
                                 Then If IsAssigned(SDESTQ) And IsTable(SDESTQ) Then Delete SDESTQ EndIf
                                      MENSAGEM("N„o existem registros a processar")
                                      Loop
                              EndIf
                         Case VSDGOPPRECO="2" :        
                              If Not Acerto_FichaEstoque_Formula()
                                 Then If IsAssigned(SDESTQ) And IsTable(SDESTQ) Then Delete SDESTQ EndIf
                                      MENSAGEM("N„o existem registros a processar")
                                      Loop
                              EndIf 
                        EndSwitch
    Case VSDGOPCAO="2": Switch
                         Case VSDGOPPRECO="1" :
                              If Not Acerto_Requisicoes_TbPreco()
                                 Then If IsAssigned(RQITEM) And IsTable(RQITEM) Then Delete RQITEM EndIf
                                      MENSAGEM("N„o existem registros a processar")
                                      Loop      
                              EndIf
                         Case VSDGOPPRECO="2" :
                              If Not Acerto_Requisicoes_Formula()
                                 Then If IsAssigned(RQITEM) And IsTable(RQITEM) Then Delete RQITEM EndIf
                                      MENSAGEM("N„o existem registros a processar")
                                      Loop      
                              EndIf
                        EndSwitch       
  EndSwitch
  
  If IsFile(ARQIMP) And Not NAO_IMPRIME
    Then ImpriArq(ARQIMP)
         Deleta_Arquivo(ARQIMP)
  EndIf
  
  If Not ACHOU_MODIFICAO
     Then MENSAGEM("N„o existem registros a processar")
          Loop    
  EndIf
  
  If VSDGOPCAO="2"
     Then COR_MENSAGEM="ALERTA"
          MSG="Efetuar o reprocessamento do estoque desde o per¡odo informado!"
          Mensagem(MSG)
  EndIf   
  
  COR_MENSAGEM=""
  Mensagem("Processo realizado com sucesso!")
       

  If IsAssigned(AUX_SDESTQ)  And IsTable(AUX_SDESTQ)  Then Delete AUX_SDESTQ  EndIf
  If IsAssigned(AUX_SDESTQ2) And IsTable(AUX_SDESTQ2) Then Delete AUX_SDESTQ2 EndIf  
  If IsAssigned(SDESTQ)      And IsTable(SDESTQ)      Then Delete SDESTQ      EndIf
  If IsAssigned(RQITEM)      And IsTable(RQITEM)      Then Delete RQITEM      EndIf
EndWhile
ClearAll
Release Vars All
Release Procs All