;** Rm_0051 ********************************************************************
;*  Explosao de Materiais II                                                     *
;*******************************************************************************
;Autor           : Vise Informatica (VISERP)
;Desenvolvido    : 24/09/2007 por Anivel Augusto Rodrigues
;Ultima Alteracao: 15/04/2010 por Cleber Alves
;Motivo Alteracao: Explosao por Corte
;Ultima Alteracao: 06/12/2010 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes de criterios
;Ultima Alteracao: 22/06/2012 por Bruno Carvalho
;Motivo Alteracao: Adicionado filtro por referˆncia
;Ultima Alteracao: 28/06/2012 por Bruno Carvalho
;Motivo Alteracao: Adicionado filtro por Cor_Tecido
;Ultima Alteracao: 26/03/2015 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes calculo formula
;Ultima Alteracao: 14/04/2015 por Luis Gustavo
;Motivo Alteracao: Implementado a Proc Ajusta_Dados para gerar em EXCEL na op‡Æo SINTETICO
;Ultima Alteracao: 25/04/2016 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes ShowDialog     
;Ultima Alteracao: 17/05/2016 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes ExplosÆo Op‡„o Itens da Formula      
;Ultima Alteracao: 21/09/2016 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes showdialog.                  
;Ultima Alteracao: 29/12/2016 por Anivel Augusto Rodrigues
;Ultima Alteracao: 27/01/2017 por Anivel Augusto Rodrigues 
;Motivo Alteracao: Ajustes TG_REFERENCIA
;Ultima Alteracao: 09/03/2018 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes Filtro situacaodopedido 
;Ultima Alteracao: 24/03/2020 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes showdialog   
;Ultima Alteracao: 08/07/2020 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes modelo 02a e logica mais rapido
;Ultima Alteracao: 08/07/2020 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes agrupado RM_0050, RM_0051A           
;Ultima Alteracao: 26/04/2021 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes proje‡Æo, produ‡Æo de corte pendente, filtro marca, consistencia de erros, itens a explodir

;*******************************************************************************
;* Rotina p/ Selecionar e Order Registros                                      *
;*******************************************************************************
Proc Seleciona_Itens()
ClearAll

LimpaRodape(0)
ExibeRodape(1,"Aguarde, processando ITENS")      

{Ask} {\\Sistemas\\Estoque\\Itens}
Moveto [Codigo do Item         ] Check TypeIn   "~VSDGITEM.."
Moveto [Descricao do Item      ] Check
Moveto [Tipo do Item           ] Check TypeIn "P Or S Or T"
Moveto [Descricao Tipo do Item ] Check
Moveto [Unidade Interna        ] Check
Moveto [Codigo da Familia      ] Check 
Moveto [Descricao da Familia   ] Check
Moveto [Codigo do Grupo        ] Check 
Moveto [Descricao do Grupo     ] Check
Moveto [Codigo da Marca        ] Check TypeIn "~VSDGMARCA.."
Moveto [Descricao da Marca     ] Check
Moveto [Codigo da Cor_Tecido   ] Check TyPein "~VSDGCORTECIDO.."
Moveto [Descricao da Cor_Tecido] Check
Moveto [Referencia             ] Check TypeIn "~VSDGREFERENCIA.."
Do_It!
ClearAll
TabelaRItens=Adiciona_Indice_Temp("Codigo do Item")  ; Tabela rela‡Æo de Itens

endproc

;*******************************************************************************
;* Rotina p/ Selecionar e Order Registros                                      *
;*******************************************************************************
Proc Pedidos()

{Ask} typein TabelaRItens Enter
Moveto [Codigo do Item      ] Example "citem" 
{Ask} typein TabelaRPedidos Enter
Moveto [Numero do Pedido      ]       Example "nped"
Moveto [Codigo da Empresa     ] Check 
{Ask} {\\Sistemas\\Vendas\\Pedidoi}
Moveto [Numero do Pedido      ] Check Example "nped"                     
Moveto [Item do Pedido        ] Check                              
Moveto [Codigo do Item        ] Check Example "citem" 
Moveto [Quantidade            ] Check 
Moveto [Quantidade Faturada   ] Check 
Do_It!
ClearAll

{Ask} {Answer} check
Moveto [Quantidade            ] TypeIn "_qtd"
Moveto [Quantidade Faturada   ] TypeIn "_qtdF, calc (_qtd-_qtdF) as Saldo"
Do_It!
ClearAll

{Ask} {Answer} typein "Fast delete"
Moveto [Saldo                 ] TypeIn "<0"
Do_It!
ClearAll

{Ask} {Answer}  
Moveto [Codigo da Empresa     ] Check 
Moveto [Codigo do Item        ] Check 
Moveto [Saldo                 ] typein "Calc Sum as Quantidade"
Do_It!
ClearAll

endproc

;*******************************************************************************
;* Rotina p/ Selecionar e Order Registros                                      *
;*******************************************************************************
Proc Projecao()

;-- Pedidos --------------------------------------------------------------------
ClearAll
LimpaRodape(0)
ExibeRodape(1,"Aguarde, processando PEDIDOS PROJE€¶O DE VENDAS 1/3")

{Ask} typein TabelaRItens Enter
Moveto [Codigo do Item         ]       Example "citem" 
{Ask} typein TabelaRPedidos enter
Moveto [Numero do Pedido       ]       Example "Pedido"
Moveto [Codigo da Empresa      ] Check 
{Ask} {\\Sistemas\\Vendas\\PedidoI}
Moveto [Numero do Pedido       ] Check Example "Pedido"
Moveto [Item do Pedido         ] Check                              
Moveto [Codigo do Item         ] Check Example "citem" 
Moveto [Quantidade             ] Check     
Moveto [Quantidade Faturada    ] Check
Do_It!
ClearAll

{Ask} {Answer} check
Moveto [Quantidade            ] TypeIn "_qtd"
Moveto [Quantidade Faturada   ] TypeIn "_qtdF, calc (_qtd-_qtdF) as Saldo"
Do_It!
ClearAll

{Ask} {Answer} typein "Fast"
Moveto [Quantidade            ] TypeIn "_qtd"
Moveto [Quantidade Faturada   ] TypeIn "changeto _qtd"
Moveto [Saldo                 ] TypeIn "<0"
Do_It!
ClearAll

{Ask} {Answer}  
Moveto [Codigo da Empresa      ] Check 
Moveto [Codigo do Item         ] Check 
Moveto [Quantidade             ] TypeIn "Calc Sum as \"Pedidos_Todos\""     
Moveto [Quantidade Faturada    ] TypeIn "Calc Sum as \"Pedidos_Faturados\""
Do_It!
ClearAll
Adiciona_Campo("Answer","Pedidos_Total(N),Pedidos_Projecao(N),Pedidos_TaxaProporcional(N),Pedidos(N)")
TabelaP=Adiciona_Indice_Temp("Codigo da Empresa,Codigo do Item")  

;-- Pedidos_Total --------------------------------------------------------------
ClearAll
LimpaRodape(0)
ExibeRodape(1,"Aguarde, processando PEDIDOS PROJE€¶O DE VENDAS 2/3")

{Ask} typein TabelaP Enter
Moveto [Codigo da Empresa] Check
Moveto [Pedidos_Todos    ] TypeIn "Calc Sum as Quantidade"
Do_It!

If not IsEmpty("Answer")
   Then
        tit_titprojecao="* SIMULADO PROJECAO DE VENDAS "+Ltrim(Format("W12,EIC",VSDGNPPROJECAO))+"/"+
                        "PEDIDOS "+Ltrim(Format("W12,EIC",[Quantidade]))+" PECAS *"          
   
        ClearAll
        {Ask} {Answer}
        Moveto [Codigo da Empresa      ] TypeIn "_cdemp"
        Moveto [Quantidade             ] TypeIn "_novaqtde"
        {Ask} TypeIn TabelaP Enter TypeIn "Fast"
        Moveto [Codigo da Empresa      ] TypeIn "_cdemp"
        Moveto [Pedidos_Total          ] TypeIn "changeto _novaqtde"
        Do_It!
EndIf
ClearAll

;-- Proje‡Æo -------------------------------------------------------------------
ClearAll
LimpaRodape(0)
ExibeRodape(1,"Aguarde, processando PEDIDOS PROJE€¶O DE VENDAS 3/3")

NR = NRecords(TabelaP)

Edit TabelaP
Scan
  Barra(NR, RecNo())
  ExibeRodape(2,"Aguarde, ajustando dados POSI€¶O "+BARRA_STRING)

  txproporcional            =([Pedidos_Todos]/[Pedidos_Total])*100
  projecao                  =Round((VSDGNPPROJECAO*txproporcional)/100,0)
  
  if projecao<[Pedidos_Todos]
     then projecao=[Pedidos_Todos]
  endif
      
  resultado                 =projecao-[Pedidos_Faturados]
  [Pedidos                 ]=resultado
  [Pedidos_Projecao        ]=projecao
  [Pedidos_TaxaProporcional]=txproporcional
  
  if [Pedidos]=0
     then [Pedidos]=blanknum()
  endif   

EndScan
Do_It!
ClearAll

{Ask} typein TabelaP Enter
Moveto [Codigo da Empresa     ] Check 
Moveto [Codigo do Item        ] Check 
Moveto [Pedidos               ] typein "Calc Sum as Quantidade"
Do_It!
ClearAll

Delete TabelaP

endproc

;*******************************************************************************
;* Rotina p/ Selecionar e Order Registros                                      *
;*******************************************************************************
Proc SelecionaCorte()

Switch
  Case not CheckTG_OPSEPC[1]:  
    exibeRodape(1,"Aguarde, selecionando programa‡Æo de corte")
    titulo = "Explosao de Materiais da Programacao de Corte "+VSDGCORTE+" - "+VSDGNOMOPSEMI

    {Ask} typein TabelaRItens Enter
    Moveto [Codigo do Item        ] Example "citem" 
    {Ask} {\\Sistemas\\Faccao\\Cfacc}  
    Moveto [Numero_Corte          ]       Example "ncort" TypeIn ", ~VSDGCORTE.."
    Moveto [Codigo da Empresa     ] Check                 TypeIn "~VSDGEMPRESA.."
    {Ask} {\\Sistemas\\Faccao\\Cfacri}
    Moveto [Numero_Corte          ]       Example "ncort"
    Moveto [Codigo do Item        ] Check Example "citem" 
    Moveto [Quantidade Programada ] typein "Calc Sum as Quantidade"           
    Do_It!
    ClearAll  

  Case CheckTG_OPSEPC[1]    :
    exibeRodape(1,"Aguarde, selecionando produ‡Æo de corte pendente")
    titulo = "Explosao de Materiais da Produ‡Æo de Corte Pendente "+VSDGCORTE+" - "+VSDGNOMOPSEMI

    {Ask} typein TabelaRItens Enter
    Moveto [Codigo do Item        ] Example "citem" 
    {Ask} {\\Sistemas\\Faccao\\Cfacc}  
    Moveto [Numero_Corte          ] Check Example "ncort" TypeIn ", ~VSDGCORTE.."
    Moveto [Codigo da Empresa     ] Check                 TypeIn "~VSDGEMPRESA.."
    Moveto [Situacao_Programacao  ]                       TypeIn "Not FINALIZADA"
    {Ask} {\\Sistemas\\Faccao\\Cfacri}
    Moveto [Numero_Corte          ]       Example "ncort"
    Moveto [Codigo do Item        ] Check Example "citem"
    Moveto [Quantidade Programada ] typein "Calc Sum as \"Quantidade Programada\""           
    Do_It!
    ClearAll  
  
    TabelaPC=Cria_Temp(PrivDir())
    Rename "Answer" TabelaPC
    
    Adiciona_Campo(TabelaPC,"Quantidade Produzida(N),Quantidade Perda(N),Saldo(N)")
    
    {Ask} TypeIn TabelaPC Enter
    Moveto [Numero_Corte            ] Check
    Do_it!
    ClearAll
    
    TabelaRC=Adiciona_Indice_Temp("Numero_Corte")

    ;-- Produ‡Æo -------------------------------------------------------------------
    AGUARDE("Aguarde, Processando Produ‡Æo Corte")
    
    {Ask} typein TabelaRItens Enter
    Moveto [Codigo do Item          ] Example "citem" 
    {Ask} {\\Sistemas\\Faccao\\Cfacc}  
    {Ask} TypeIn TabelaRC Enter
    Moveto [Numero_Corte            ]       Example "num"
    {Ask} {\\Sistemas\\Faccao\\PcfaCC}
    Moveto [Numero_Producao_Corte   ]       Example "numprod"
    Moveto [Codigo da Empresa       ] Check               TypeIn "~VSDGEMPRESA.."
    Moveto [Numero_Programacao_Corte] Check Example "num" typeIn ", as \"Numero_Corte\""
    {Ask} {\\Sistemas\\Faccao\\PcfacRI}      
    Moveto [Numero_Producao_Corte   ]       Example "numprod"
    Moveto [Codigo do Item          ] Check Example "citem" 
    Moveto [Quantidade Produzida    ]       TypeIn "Calc Sum as \"Quantidade Produzida\""
    Do_It! 
    ClearAll 
    
    {Ask} {Answer}
    Moveto [Codigo da Empresa       ] Example "cemp"
    Moveto [Numero_Corte            ] Example "num"
    Moveto [Codigo do Item          ] Example "item"
    Moveto [Quantidade Produzida    ] Example "qtde"
    {Ask} TypeIn TabelaPC Enter TypeIn "Fast Insert"
    Moveto [Codigo da Empresa       ] Example "cemp"
    Moveto [Numero_Corte            ] Example "num"
    Moveto [Codigo do Item          ] Example "item"
    Moveto [Quantidade Produzida    ] Example "qtde"
    Do_It! 
    ClearAll

    ;-- Problemas ------------------------------------------------------------------
    AGUARDE("Aguarde, Processando Problemas Corte")
    
    {Ask} TypeIn TabelaRC Enter
    Moveto [Numero_Corte              ]       Example "num"
    {Ask} {\\Sistemas\\Faccao\\Pcfacc}
    Moveto [Numero_Producao_Corte     ]       Example "nprod"
    Moveto [Numero_Programacao_Corte  ] Check Example "num" typeIn ", as \"Numero_Corte\""
    {Ask} {\\Sistemas\\Faccao\\Cprobc}
    Moveto [Numero do Lancamento      ] Check
    Moveto [Codigo da Empresa         ] Check               TypeIn "~VSDGEMPRESA.."
    Moveto [Numero_ProducaoCorte      ] Example "nprod"
    Do_It!
    ClearAll
    
    Adiciona_Indice("Answer","Numero do Lancamento")
    
    {Ask} typein TabelaRItens Enter
    Moveto [Codigo do Item            ]       Example "citem" 
    {Ask} {Answer}
    Moveto [Numero do Lancamento      ]       Example "nlanc"
    Moveto [Numero_Corte              ] Check
    Moveto [Codigo da Empresa         ] Check
    {Ask} {\\Sistemas\\Faccao\\Cprobi}
    Moveto [Numero do Lancamento      ]       Example "nlanc"
    Moveto [Codigo do Item            ] Check Example "citem" 
    Moveto [Quantidade                ] TypeIn "Calc Sum as Quantidade" 
    Moveto [Tipo_Ocorrencia           ] TypeIn "PERDA"
    Do_It!
    ClearAll
    
    {Ask} {Answer}
    Moveto [Codigo da Empresa       ] Example "cemp"
    Moveto [Numero_Corte            ] Example "num"
    Moveto [Codigo do Item          ] Example "coditem"
    Moveto [Quantidade              ] Example "qtde"
    {Ask} TypeIn TabelaPC Enter typein "Fast Insert"
    Moveto [Codigo da Empresa       ] Example "cemp"
    Moveto [Numero_Corte            ] Example "num"
    Moveto [Codigo do Item          ] Example "coditem"
    Moveto [Quantidade Perda        ] Example "qtde"
    Do_It!
    ClearAll

   ;-- Totalizando ----------------------------------------------------------------
    {Ask} TypeIn TabelaPC Enter 
    Moveto [Codigo da Empresa     ] Check
    Moveto [Codigo do Item        ] Check
    Moveto [Quantidade Programada ]       TypeIn "Calc Sum as \"Quantidade Programada\""
    Moveto [Quantidade Produzida  ]       TypeIn "Calc Sum as \"Quantidade Produzida\""
    Moveto [Quantidade Perda      ]       TypeIn "Calc Sum as \"Quantidade Perda\""
    Moveto [Saldo                 ]       TypeIn "Calc Sum as \"Saldo\""
    Do_It!
    ClearAll

    {Ask} {Answer} typein "Fast"
    Moveto [Quantidade Programada] TypeIn "_qprog"
    Moveto [Quantidade Produzida ] TypeIn "_qprod"
    Moveto [Quantidade Perda     ] TypeIn "_qperd"
    Moveto [Saldo                ] TypeIn "changeto (_qprog - (_qprod + _qperd))"
    Do_It!
    ClearAll

    {Ask} {Answer} TypeIn "Fast Delete"
    Moveto [Quantidade Programada] Example "qtd"
    Moveto [Quantidade Produzida ] TypeIn ">=" Example "qtd"
    Do_It!
    ClearAll

    {Ask} {Answer} 
    Moveto [Codigo da Empresa     ] Check
    Moveto [Codigo do Item        ] Check
    Moveto [Saldo                 ]       TypeIn "Calc Sum as \"Quantidade\""
    Do_It!
    ClearAll

    Delete TabelaPC
    Delete TabelaRC
endSwitch

endproc

;*******************************************************************************
;* Rotina p/ Selecionar e Order Registros                                      *
;*******************************************************************************
Proc SELECIONA()
private wicont

LimpaRodape(0)
Switch
  Case not Isblank(VSDGCORTE): SelecionaCorte()
  Case CheckTG_OPSEPC[1]     : SelecionaCorte()

  Case Not Isblank(VSDGREQUISICAO) :
    exibeRodape(1,"Aguarde, selecionando requisi‡Æo")
    titulo = "Explosao de Materiais da Requisicao "+VSDGREQUISICAO+" - "+VSDGNOMOPSEMI
    
    {Ask} typein TabelaRItens Enter
    Moveto [Codigo do Item            ] Example "citem" 
    {Ask} {\\Sistemas\\Estoque\\RqCabeca}
    Moveto [Numero do Lancamento ]           Example "nlan" TypeIn", ~VSDGREQUISICAO.."    
    Moveto [Codigo da Empresa    ] Check                    TypeIn "~VSDGEMPRESA.."
    Moveto [Tipo de Movimento    ] TypeIn "E" 
    Moveto [Tipo de Operacao     ] TypeIn "P Or I"
    {Ask} {\\Sistemas\\Estoque\\RqItem}
    Moveto [Numero do Lancamento ]       Example "nlan"                     
    Moveto [Codigo do Item       ] Check Example "citem" 
    Moveto [Quantidade           ] typein "Calc Sum as Quantidade"
    Do_It!
    ClearAll

  otherwise:
    exibeRodape(1,"Aguarde, selecionando pedidos")

    switch
      case VSDGOPDTPEEIR="4" and isblank(VSDGPEDIDO):
        titulo = "Explosao de Materiais - "+VSDGNOMOPDTPEEIR+" - "+VSDGNOMOPSEMI 
        
        {Ask} {\\sistemas\\estoque\\rpedidos}
        Moveto [Numero do Pedido       ] Check
        do_it!
        ClearAll
        TabelaRPedidos=Adiciona_Indice_Temp("Numero do Pedido")
    
        {Ask} typein TabelaRP Enter
        Moveto [Numero do Pedido      ]       Example "nped"
        {Ask} {\\Sistemas\\Vendas\\PedidoC}
        Moveto [Numero do Pedido      ] Check Example "nped"
        Moveto [Codigo da Empresa     ] Check 
        do_it!
        ClearAll
        Delete TabelaRPedidos

      otherwise:

        {Ask} {\\Sistemas\\Vendas\\Destin}
        Moveto [Codigo da Destinacao  ] Example "cd"
        Moveto [Tipo Movimento Estoque] TypeIn "S"
        
        {Ask} {\\Sistemas\\Vendas\\PedidoC}
        Moveto [Numero do Pedido      ] Check 
        Moveto [Codigo da Empresa     ] Check TypeIn "~VSDGEMPRESA.."
        Moveto [Codigo da Destinacao  ]       Example "cd"
        switch
          case not isblank(VSDGPEDIDO):
            titulo = "Explosao de Materiais do Pedido - "+VSDGPEDIDO+" - "+VSDGNOMOPSEMI 
            Moveto [Numero do Pedido      ] TypeIn "~VSDGPEDIDO.."  

          otherwise:
            titulo = "Explosao de Materiais de Pedidos - "+VSDGNOMOPDTPEEIR+" de "+STRVAL(VSDGDTINI)+" ate "+STRVAL(VSDGDTFIM)+" - "+VSDGNOMOPSEMI 

            if VSDGOPDTPEEIR="1" Then Moveto [Data de Entrega ] TypeIn ">=~VSDGDTINI,<=~VSDGDTFIM" endif
            If VSDGOPDTPEEIR="2" Then Moveto [Data de Emissao ] TypeIn ">=~VSDGDTINI,<=~VSDGDTFIM" endif
            if VSDGOPDTPEEIR="3" Then Moveto [Data_Inclusao   ] TypeIn ">=~VSDGDTINI,<=~VSDGDTFIM" endif
        
            Moveto [Situacao do Pedido    ]
            switch
             case VSDGSITUACAOPEDIDO="JUNTAR ABERTO+SUSPENSO"     : TypeIn "ABERTO or SUSPENSO"
             otherwise                                            : TypeIn "~VSDGSITUACAOPEDIDO.."
            endswitch
        endswitch
        do_it!
        ClearAll

    Endswitch

    TabelaRPedidos=Adiciona_Indice_Temp("Numero do Pedido")

    if VSDGNPPROJECAO<=0
       then pedidos()
       else projecao()
    endif   

    Delete TabelaRPedidos
EndSwitch

switch
  case VSDGCODMODELO="04":
    {Ask} {Answer}  
    Moveto [Codigo da Empresa     ] TypeIn "_cemp" 
    Moveto [Codigo do Item        ] TypeIn "_citem"
    Moveto [Quantidade            ] TypeIn "_qp" 
    {Ask} TypeIn Tabela Enter TypeIn "Insert"
    Moveto [Codigo da Empresa     ] TypeIn "_cemp"
    Moveto [Codigo do Item        ] TypeIn "_citem"
    Moveto [Quantidade do Item    ] TypeIn "_qp" 
    Do_It! 
    ClearAll  

    Delete TabelaRItens
  
  otherwise              : Explodir()
  
endswitch

EndProc


;*******************************************************************************
; Explodir formulas                                                            *
;*******************************************************************************
Proc Explodir()

switch
  case VSDGOPSEMI="S" : wicont=1
  case VSDGOPSEMI="C" : wicont=2
endswitch
For i from 1 to wicont
 
  switch
    case i=1 : ;** Produto da formula **** 
               ; j  foi filtrada na primeira vez !, anteriormente!

      TabelaPItens=Adiciona_Indice_Temp("Codigo da Empresa,Codigo do Item")

    case i=2 : ;** Material da formula - SemiAcabado/Outros ****

      {Ask} TypeIn Tabela Enter
      Moveto [Codigo da Empresa     ] Check 
      Moveto [Codigo do Item        ] Check             
      Moveto [MaterialCodigo        ] Check typeIn          "as SemiCodigo" 
      Moveto [MaterialQuantidade    ]       typeIn "Calc Sum as Quantidade"
      Do_It!
      ClearAll
      TabelaPItens=Adiciona_Indice_Temp("Codigo da Empresa,Codigo do Item,SemiCodigo")

  endswitch

  ;-- checa formulas -------------------------------------------------------------
  {Ask} {FormulaI}
  Moveto [Codigo do Produto     ]       Example "citem" 
  Moveto [Codigo do Material    ] Check                                            
  {Ask} TypeIn TabelaPItens Enter Check
  switch
    case i=1 : ;** Produto da formula ****
      Moveto [Codigo do Item        ] Example "citem" typein "!"

    case i=2 : ;** Material da formula - SemiAcabado/Outros ****
      Moveto [Codigo do Item        ] check
      Moveto [SemiCodigo            ] Example "citem" typein "!, as \"Codigo do Item\""

  endswitch
  Do_It!
  ClearAll

  {Ask} {Answer} typein "Fast Delete"
  Moveto [Codigo do Material    ] typein "Not Blank"                                            
  Do_It!
  ClearAll

  {Ask} typein TabelaRItens Enter
  Moveto [Codigo do Item        ]       Example "citem" 
  Moveto [Descricao do Item     ] Check                                            
  {Ask} {Answer} check
  Moveto [Codigo do Item        ]       Example "citem" typein "!"
  Do_It!
  ClearAll

  {Ask} {Answer} typein "Fast Delete"
  Moveto [Descricao do Item     ] typein "Blank"                                            
  Do_It!
  ClearAll

  if not isempty("Answer")
     then
          view "Answer"
          scan
            Grava_Erro("0-3 "+[Answer->Codigo do Item]+" "+[Descricao do Item])
          endscan
          do_it!
          ClearAll  
  endif    
  ;-------------------------------------------------------------------------------

  {Ask} {FormulaC}
  Moveto [Codigo do Produto     ] Example "citem"
  Moveto [Quantidade Produzida  ] Check
  {Ask} {FormulaI}
  Moveto [Codigo do Produto     ] Example "citem"
  Moveto [Sequencia             ] Check                                            
  Moveto [Codigo do Material    ] Check                                            
  Moveto [Quantidade            ] Check Typein "As QuantidadeMat"                  
  Moveto [Valor Unitario        ] Check                                          
  {Ask} TypeIn TabelaPItens Enter Check
  switch
    case i=1 : ;** Produto da formula ****
      Moveto [Codigo do Item        ] Example "citem"

    case i=2 : ;** Material da formula - SemiAcabado/Outros ****
      Moveto [SemiCodigo            ] Example "citem"

  endswitch
  Do_It!
  ClearAll

  Delete TabelaPItens
  
  {Ask} {Answer}  
  Moveto [Codigo da Empresa     ] TypeIn "_cemp" 
  Moveto [Codigo do Item        ] TypeIn "_citem"
  Moveto [Quantidade            ] TypeIn "_qp" 
  Moveto [Quantidade Produzida  ] TypeIn "_qprod"
  Moveto [Codigo do Material    ] TypeIn "_cmat"
  Moveto [QuantidadeMat         ] TypeIn "_qfor"
  Moveto [Valor Unitario        ] TypeIn "_vrmat"
  
  {Ask} TypeIn Tabela Enter TypeIn "Insert"
  Moveto [Codigo da Empresa     ] TypeIn "_cemp"
  Moveto [Codigo do Item        ] TypeIn "_citem"
  Moveto [Quantidade do Item    ] TypeIn "_qp" 
  
  Moveto [MaterialCodigo        ] TypeIn "_cmat"
  Moveto [MaterialQuantidade    ] TypeIn  "(_qfor*_qp)/_qprod"
  Moveto [MaterialCustoTotal    ] TypeIn "((_qfor*_vrmat)*_qp)/_qprod"          
  Do_It! 
  ClearAll  

  switch
    case i=1 : ;** Produto da formula **** 
               ; j  foi filtrada na primeira vez !, anteriormente!

 
    case i=2 : ;** Material da formula - SemiAcabado/Outros ****

      {Ask} {Answer}  
      Moveto [SemiCodigo            ] Check
      Do_It!
      ClearAll
      TabelaSItens=Adiciona_Indice_Temp("SemiCodigo")
      
      {Ask} TypeIn TabelaSItens Enter 
      Moveto [SemiCodigo            ] TypeIn "_citem"
      {Ask} TypeIn Tabela Enter TypeIn "Fast Delete"
      Moveto [MaterialCodigo        ] TypeIn "_citem"
      Do_It!
      ClearAll

      Delete TabelaSItens

  endswitch

  Switch
    Case VSDGOPFORMULA="2": 
        {Ask} TypeIn Tabela Enter TypeIn "Fast Delete"
        Moveto [MaterialTipo  ] TypeIn "Not C"
        Do_It! 
        ClearAll 
        
    Case VSDGOPFORMULA="3": 
        {Ask} TypeIn Tabela Enter TypeIn "Fast Delete"
        Moveto [MaterialTipo  ] TypeIn "C"
        Do_It! 
        ClearAll 
  EndSwitch  
endfor

{Ask} TypeIn Tabela Enter
Moveto [Codigo da Empresa      ] Check
Moveto [Codigo do Item         ] Check
Moveto [Quantidade do Item     ] TypeIn "Calc Sum as \"Quantidade do Item\"" 
Moveto [MaterialCodigo         ] Check
Moveto [MaterialQuantidade     ] TypeIn "Calc Sum as MaterialQuantidade"
Moveto [MaterialCustoTotal     ] TypeIn "Calc Sum as MaterialCustoTotal"
Do_It!
ClearAll

Rename "Answer" Tabela
ClearAll
MudaEstruturaDaTabelaPara(Tabela,"\\base\\sistemas\\producao\\rm_0051b")

If VSDGOPCUST="S"
  Then 
      {Ask} TypeIn Tabela Enter TypeIn "Fast"
      Moveto [MaterialCustoUnitario  ] TypeIn "Changeto blank"
      Moveto [MaterialCustoTotal     ] TypeIn "Changeto blank"
      Do_It! 
      ClearAll
  else
      {Ask} TypeIn Tabela Enter TypeIn "Fast"
      Moveto [MaterialQuantidade     ] TypeIn "_qtd"
      Moveto [MaterialCustoUnitario  ] TypeIn "Changeto _ct/_qtd"
      Moveto [MaterialCustoTotal     ] TypeIn "_ct"
      Do_It! 
      ClearAll 
EndIf

Delete TabelaRItens

endproc

;*******************************************************************************
; Ajustar os dados para exporta‡Æo para EXCEL                                  *
;*******************************************************************************
Proc Ajusta_DadosItem()

{Ask} TypeIn Tabela Enter
Moveto [Codigo do Item     ] Check
Do_It!
ClearAll

TabelaRItens=Adiciona_Indice_Temp("Codigo do Item")

{Ask} {\\sistemas\\estoque\\itens}
Moveto [Codigo do Item         ] Check typein "_cite"
Moveto [Descricao do Item      ] Check
Moveto [Tipo do Item           ] Check
Moveto [Descricao Tipo do Item ] Check
Moveto [Unidade Fiscal         ] Check
Moveto [Referencia             ] Check
Moveto [Codigo da Cor_Tecido   ] Check
Moveto [Descricao da Cor_Tecido] Check
Moveto [Codigo da Marca        ] Check
Moveto [Descricao da Marca     ] Check
{Ask} TypeIn TabelaRItens Enter 
Moveto [Codigo do Item         ] typein "_cite"
Do_It!
ClearAll

Delete TabelaRItens

TabelaItens=Adiciona_Indice_Temp("Codigo do Item")

{Ask} TypeIn TabelaItens Enter 
Moveto [Codigo do Item         ] typein "_cite"
Moveto [Descricao do Item      ] typein "_dite"
Moveto [Tipo do Item           ] typein "_ctpi"
Moveto [Descricao Tipo do Item ] typein "_dtpi"
Moveto [Unidade Fiscal         ] typein "_uint"
Moveto [Referencia             ] typein "_ref" 
Moveto [Codigo da Cor_Tecido   ] typein "_ccor"
Moveto [Descricao da Cor_Tecido] typein "_dcor"
Moveto [Codigo da Marca        ] typein "_cmar"
Moveto [Descricao da Marca     ] typein "_dmar"
{Ask} TypeIn Tabela Enter TypeIn "Fast"          
Moveto [Codigo do Item         ] typein "_cite"
Moveto [Descricao do Item      ] typein "changeto _dite"
Moveto [Tipo do Item           ] typein "changeto _ctpi"
Moveto [Descricao Tipo do Item ] typein "changeto _dtpi"
Moveto [Unidade Fiscal         ] typein "changeto _uint"
Moveto [Referencia             ] typein "changeto _ref" 
Moveto [Codigo da Cor_Tecido   ] typein "changeto _ccor"
Moveto [Descricao da Cor_Tecido] typein "changeto _dcor"
Do_It!
ClearAll

Delete TabelaItens

Ajusta_DadosMaterial()

EndProc   ;Ajusta_Dados()

;*******************************************************************************
; Ajustar os dados para exporta‡Æo para EXCEL                                  *
;*******************************************************************************
Proc Soma_DadosMaterial()

{Ask} TypeIn Tabela Enter
Moveto [Codigo da Empresa      ] Check
Moveto [MaterialCodigo         ] Check
Moveto [MaterialQuantidade     ] TypeIn "Calc Sum as MaterialQuantidade"
Moveto [MaterialCustoTotal     ] TypeIn "Calc Sum as MaterialCustoTotal"
Do_It!
ClearAll

Rename "Answer" Tabela
ClearAll

MudaEstruturaDaTabelaPara(Tabela,"\\base\\sistemas\\producao\\rm_0051b")


If VSDGOPCUST="S"
  Then 
      {Ask} TypeIn Tabela Enter TypeIn "Fast"
      Moveto [MaterialCustoUnitario  ] TypeIn "Changeto blank"
      Moveto [MaterialCustoTotal     ] TypeIn "Changeto blank"
      Do_It! 
      ClearAll
  else
      {Ask} TypeIn Tabela Enter TypeIn "Fast"
      Moveto [MaterialQuantidade     ] TypeIn "_qtd"
      Moveto [MaterialCustoUnitario  ] TypeIn "Changeto _ct/_qtd"
      Moveto [MaterialCustoTotal     ] TypeIn "_ct"
      Do_It! 
      ClearAll 
      
Endif

Ajusta_DadosMaterial()

EndProc

;*******************************************************************************
; Ajustar os dados para exporta‡Æo para EXCEL                                  *
;*******************************************************************************
Proc Ajusta_DadosMaterial()

{Ask} TypeIn Tabela Enter
Moveto [MaterialCodigo     ] Check
Do_It!
ClearAll

TabelaRItens=Adiciona_Indice_Temp("MaterialCodigo")

{Ask} {\\sistemas\\estoque\\itens}
Moveto [Codigo do Item         ] Check typein "_cite"
Moveto [Descricao do Item      ] Check
Moveto [Tipo do Item           ] Check
Moveto [Descricao Tipo do Item ] Check
Moveto [Unidade Interna        ] Check
Moveto [Referencia             ] Check
Moveto [Codigo da Familia      ] Check
Moveto [Descricao da Familia   ] Check
Moveto [Codigo da Cor_Tecido   ] Check
Moveto [Descricao da Cor_Tecido] Check
Moveto [Codigo da Marca        ] Check
Moveto [Descricao da Marca     ] Check
{Ask} TypeIn TabelaRItens Enter 
Moveto [MaterialCodigo         ] typein "_cite"
Do_It!
ClearAll

Delete TabelaRItens

TabelaItens=Adiciona_Indice_Temp("Codigo do Item")

{Ask} TypeIn TabelaItens Enter 
Moveto [Codigo do Item         ] typein "_cite"
Moveto [Descricao do Item      ] typein "_dite"
Moveto [Tipo do Item           ] typein "_ctpi"
Moveto [Descricao Tipo do Item ] typein "_dtpi"
Moveto [Unidade Interna        ] typein "_uint"
Moveto [Referencia             ] typein "_ref" 
Moveto [Codigo da Familia      ] typein "_cfam" 
Moveto [Descricao da Familia   ] typein "_dfam"
Moveto [Codigo da Cor_Tecido   ] typein "_ccor"
Moveto [Descricao da Cor_Tecido] typein "_dcor"
Moveto [Codigo da Marca        ] typein "_cmar"
Moveto [Descricao da Marca     ] typein "_dmar"
{Ask} TypeIn Tabela Enter TypeIn "Fast"          
Moveto [MaterialCodigo          ] typein "_cite"
Moveto [MaterialDescricao       ] typein "changeto _dite"
Moveto [MaterialReferencia      ] typein "changeto _ref" 
Moveto [MaterialTipo            ] typein "changeto _ctpi"
Moveto [MaterialDescricaoTipo   ] typein "changeto _dtpi"
Moveto [MaterialUnidade         ] typein "changeto _uint"
Moveto [MaterialCodigoFamilia   ] typein "changeto _cfam" 
Moveto [MaterialDescricaoFamilia] typein "changeto _dfam"
Moveto [MaterialCodigoCor       ] typein "changeto _ccor"
Moveto [MaterialDescricaoCor    ] typein "changeto _dcor"
Do_It!
ClearAll

Delete TabelaItens

{Ask} {\\Sistemas\\Cadastro\\Empresas}
Moveto [Codigo da Empresa      ] Example "cemp"
Moveto [Nome Fantasia Empresa  ] Example "nemp"
{Ask} TypeIn Tabela Enter TypeIn "Fast"
Moveto [Codigo da Empresa      ] Example "cemp"
Moveto [Nome Fantasia Empresa  ] TypeIn "changeto _nemp"
Do_It!
ClearAll

EndProc   ;Ajusta_Dados()

;*******************************************************************************
;* Rotina                                                                      *
;*******************************************************************************
proc RM_0051_limpacampos()
VSDGOPDTPEEIR   ="1"
VSDGNOMOPDTPEEIR=""
VSDGDTINI       = BlankDate()
VSDGDTFIM       = BlankDate()
VSDGSITUACAOPEDIDO=""
endproc


;*******************************************************************************
;* Rotina grava registro conciliacao c/ erro                                   *
;*******************************************************************************
Proc Grava_Erro(erro)
Private erro,s

if Not TEVE_ERRO
   then FileWrite        ARQ_ERRO From "\""+"0-1 ** Ocorrencias de erros, itens sem formulas cadastradas**"+"\""+"\n"
        FileWrite Append ARQ_ERRO From "\""+"0-2"+"\""+"\n"
        ;;FileWrite Append ARQ_ERRO From "\""+"0-3 "+"\""+"\n"
        ;;FileWrite Append ARQ_ERRO From "\""+"0-4"+"\""+"\n"
endif   

s="\""+erro+"\""+"\n"
FileWrite Append ARQ_ERRO From s

CONT_ERRO=CONT_ERRO+1
TEVE_ERRO=True
EndProc

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

If Disparo="OPEN"  
   Then AoCriarShowDialog()
        TiraSombraShowDialog()
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_MARCA"            : Campo="TG_EMPRESA"       
            Case Campo="TG_COR_TECIDO"       : Campo="TG_MARCA" 
            Case Campo="TG_ITEM"             : Campo="TG_COR_TECIDO"
            Case Campo="TG_REFERENCIA"       : Campo="TG_ITEM"
            Case Campo="TG_CORTE"            : Campo="TG_REFERENCIA" 
            Case Campo="TG_OPSEPC"           : Campo="TG_CORTE"
            Case Campo="TG_REQUISICAO"       : Campo="TG_OPSEPC"
            Case Campo="TG_PEDIDO"           : Campo="TG_REQUISICAO" 
            Case Campo="TG_OPDTPEEIR"        : Campo="TG_PEDIDO" 
            Case Campo="TG_DTINI"            : Campo="TG_OPDTPEEIR"
            Case Campo="TG_DTFIM"            : Campo="TG_DTINI"
            Case Campo="TG_SITUACAOPEDIDOAS" : Campo="TG_DTFIM"
            Case Campo="TG_NPPROJECAO"       : Campo="TG_SITUACAOPEDIDOAS"

            Case Campo="TG_OPFORMULA"        : Campo="TG_CORTE"
            Case Campo="TG_OPCUST"           : Campo="TG_OPFORMULA"
            Case Campo="TG_OPSEMI"           : Campo="TG_OPCUST"
            Case Campo="TG_CODMODELO"        : Campo="TG_OPSEMI"
            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"    : Campo="TG_MARCA"
                    Case Campo="TG_MARCA"      : Campo="TG_COR_TECIDO"       
                    Case Campo="TG_COR_TECIDO" : Campo="TG_ITEM"
                    Case Campo="TG_ITEM"       : Campo="TG_REFERENCIA"
                    Case Campo="TG_REFERENCIA" : Campo="TG_CORTE" 
                    Case Campo="TG_CORTE"      : Campo="TG_OPSEPC"
                    Case Campo="TG_OPSEPC"     : Campo="TG_REQUISICAO"
                         If CheckTG_OPSEPC[1] or not IsBlank (VSDGCORTE)
                            Then VSDGREQUISICAO=""
                                 VSDGPEDIDO    =""
                                 RM_0051_limpacampos()
                                 
                                 Campo="TG_OPFORMULA"
                            else Campo="TG_REQUISICAO"
                         EndIf                         
                    Case Campo="TG_REQUISICAO" : 
                         If IsBlank(VSDGREQUISICAO)
                            Then Campo="TG_PEDIDO"
                            Else 
                                 VSDGPEDIDO    =""
                                 RM_0051_limpacampos()
                                 Campo="TG_OPFORMULA"
                         EndIf   
                    Case Campo="TG_PEDIDO"         : 
                         If IsBlank (VSDGPEDIDO)
                            Then Campo="TG_OPDTPEEIR"
                            Else 
                                 RM_0051_limpacampos()
                                 Campo="TG_OPFORMULA"
                         EndIf                         
                     
                    Case Campo="TG_OPDTPEEIR"      : Campo="TG_DTINI" 

                    Case Campo="TG_DTINI"    :
                         If Not VSDGDTINI=BlankDate()
                            Then Campo="TG_DTFIM"
                         EndIf
                    Case Campo="TG_DTFIM"    :
                         If Not VSDGDTFIM=BlankDate()
                            Then Campo="TG_SITUACAOPEDIDOAS"
                         EndIf
                    Case Campo="TG_SITUACAOPEDIDOAS" : Campo="TG_NPPROJECAO"

                    Case Campo="TG_NPPROJECAO"       : Campo="TG_OPFORMULA"
                         VSDGNPPROJECAO=ControlValue("TG_NPPROJECAO")
                         
                    Case Campo="TG_OPFORMULA"      : Campo="TG_OPCUST"
                         VSDGOPFORMULA=ControlValue("TG_OPFORMULA")
                         Switch
                           Case VSDGOPFORMULA="2": VSDGNOMOPFORMULA="SO SERVICOS"
                           Case VSDGOPFORMULA="3": VSDGNOMOPFORMULA="SEM SERVICOS"
                           OtherWise             : VSDGNOMOPFORMULA="TODOS"
                                                   VSDGOPFORMULA="1"
                         EndSwitch
                         
                    Case Campo="TG_OPCUST"      : Campo="TG_OPSEMI"
                         VSDGOPCUST=ControlValue("TG_OPCUST")
                         Switch
                           Case VSDGOPCUST="C": VSDGNOMOPCUST="COM CUSTO"
                           OtherWise          : VSDGNOMOPCUST="SEM CUSTO"
                                                VSDGOPCUST   ="S"
                         EndSwitch
                    Case Campo="TG_OPSEMI"      : Campo="TG_CODMODELO"
                         VSDGOPSEMI=ControlValue("TG_OPSEMI")
                         Switch
                           Case VSDGOPSEMI="C": VSDGNOMOPSEMI="COM EXPLOS¶O SEMIACABADO"
                           OtherWise          : VSDGNOMOPSEMI="SEM EXPLOS¶O SEMIACABADO"
                                                VSDGOPSEMI   ="S"
                         EndSwitch
                    Case Campo="TG_CODMODELO": Campo="YES"
                  EndSwitch
          EndIf
          RefreshDialog
   EndSwitch
EndIf
Switch
  Case Campo="TG_DTINI":
       MSG_CAMPO="Informe a Data Inicial"
  Case Campo="TG_NPPROJECAO":
       MSG_CAMPO="Informe o total da cole‡Æo, caso queira simular uma proje‡Æo de vendas!"
  Case Campo="TG_OPFORMULA":
       MSG_CAMPO="1=Todos  2=So Servi‡os  3=Sem Servi‡os"
  Case Campo="TG_OPCUST":
       MSG_CAMPO="C=Com Custo  S=Sem Custo"
  Case Campo="TG_OPSEMI":
       MSG_CAMPO="C=Com ExplosÆo  S=Sem ExplosÆo"
  Case Campo="TG_OPSEPC" :
     MensagemCheckBoxes()
       
EndSwitch
Monta_Prompt(MSG_CAMPO,TECLA)
Return Temp
EndProc

;************************************
;* ROTINA PARA Ler/Gravacao Opcao   *
;************************************
Proc ModeloRelatoriosCarregaLista()

VSDGCODMODELO     = ""
VSDGMODELO        = ""

;ModeloRelatoriosAdd("XXX XX maximo 70 XX")

ModeloRelatoriosAdd("Criar") ; linha obrigatoria inicial
ModeloRelatoriosAdd("01   Anal¡tico por TipoItem/ItemProduto/ItemMaterial")
ModeloRelatoriosAdd("02   Sint‚tico por TipoMaterial/ItemMaterial")
ModeloRelatoriosAdd("02A  Sint‚tico por Familia/TipoMaterial/ItemMaterial")
ModeloRelatoriosAdd("Separator")
ModeloRelatoriosAdd("04   Itens a explodir")
ModeloRelatoriosAdd("Fim")
                           
EndProc ;ModeloRelatoriosCarregaLista

;*******************************************************************************
;* ROTINA PRINCIPAL                                                            *
;*******************************************************************************
AutoLib="\\Sistemas\\Cadastro\\Bib_Show,\\Sistemas\\Cadastro\\Bibliot"
If Not IsAssigned(SYS_CODIGO_CLIENTE) Then SYS_CODIGO_CLIENTE="" EndIf 
LimpAguarde()

VSDGEMPRESA      = ""
VSDGMARCA        =""
VSDGCORTECIDO    = "" 
VSDGITEM         = ""
VSDGREFERENCIA   = ""

VSDGCORTE        = ""
VSDGREQUISICAO   = ""

VSDGPEDIDO       =""
VSDGOPDTPEEIR      = ""
VSDGDTINI        = BlankDate()
VSDGDTFIM        = BlankDate()
VSDGSITUACAOPEDIDO=""
VSDGNPPROJECAO   =BlankNum()

VSDGOPFORMULA    = ""
VSDGOPCUST       = ""
VSDGOPSEMI       = ""

Array CheckTG_OPSEPC[1]   CheckTG_OPSEPC[1]  =False

ModeloRelatoriosCarregaLista()

While True

  ShowDialog "Explos„o de Materiais" Proc "SD_Dialog"
  Trigger "OPEN","ARRIVE"
  Key "F1","ENTER","ESC","TAB",
      -104, -105, -106, -107, -108, -109, -110, -111, -112, -113, -139, -140  
  @ 06,10   Height 22 Width 80

    Label  @ 00,00 "Empresa"  For "TG_EMPRESA"
    Accept @ 01,01 Width 07 "A4"  Picture "#*#" Tag "TG_EMPRESA" To VSDGEMPRESA
    Accept @ 01,09 Width 25 "A20" Picture "!*!" Tag "TG_NOMEMP" To VSDGNOMEMP

    Label  @ 02,00 "Marca"  For "TG_MARCA"
    Accept @ 03,02 Width 06 "A3"  Picture "#*#" Tag "TG_MARCA"    To VSDGMARCA
    Accept @ 03,09 Width 25 "A30" Picture "!*!" Tag "TG_NOMMARCA" To VSDGNOMMARCA

    Label  @ 04,00 "Cor" For "TG_COR_TECIDO"
    Accept @ 05,01 Width 07 "A4"  Picture "#*#" Tag "TG_COR_TECIDO"    To VSDGCORTECIDO
    Accept @ 05,09 Width 25 "A25" Picture "!*!" Tag "TG_NOMCOR_TECIDO" To VSDGNOMCORTECIDO

    Label  @ 06,00 "Item"  For "TG_ITEM"
    Accept @ 07,01 Width 13 "A10" Picture "#*#" Tag "TG_ITEM"     To VSDGITEM
    Accept @ 08,01 Width 33 "A35" Picture "!*!" Tag "TG_NOMITEM" To VSDGNOMITEM

    Label  @ 06,13 "Referˆncia"  For "TG_REFERENCIA"
    Accept @ 07,13 Width 21 "A20" Picture "!*!" Tag "TG_REFERENCIA" To VSDGREFERENCIA
    
    Label  @ 12,00 "Corte"  For "TG_CORTE"
    Accept @ 13,01 Width 09 "A6"  Picture "[&,#][#*#]" Tag "TG_CORTE"    To VSDGCORTE
    Accept @ 13,09 Width 25 "A25" Picture "!*!"        Tag "TG_NOMCORTE" To VSDGNOMCORTE
    CheckBoxes @ 12,09 Height 1 Width 43 Tag "TG_OPSEPC"  "S¢ Produ‡Æo Pendente" to CheckTG_OPSEPC[1]

    Label  @ 14,00 "Requisi‡Æo"  For "TG_REQUISICAO"
    Accept @ 15,01 Width 09 "A6"  Picture "#*#" Tag "TG_REQUISICAO"     To VSDGREQUISICAO
    Accept @ 15,09 Width 25 "A25" Picture "!*!" Tag "TG_NOMREQUISICAO"  To VSDGNOMREQUISICAO

    Label  @ 00,35 "Pedido"  For "TG_PEDIDO"
    Accept @ 01,36 Width 09 "A6"  Picture "[&,#][#*#]" Tag "TG_PEDIDO" To VSDGPEDIDO
    Accept @ 01,44 Width 25 "A24"  Picture "!*!" Tag "TG_NOMPEDIDO" To VSDGNOMPEDIDO    

    Label  @ 02,35 "Op‡äes de Datas" For "TG_OPDTPEEIR"
    Accept @ 03,39 Width 04 "A1"  Picture "1,2,3,4"  Tag "TG_OPDTPEEIR"    To VSDGOPDTPEEIR
    Accept @ 03,44 Width 25 "A20" Picture "!*!"      Tag "TG_NOMOPDTPEEIR" To VSDGNOMOPDTPEEIR
 
    Label  @ 04,35 "Per¡odo Referente de" For "TG_DTINI"
    Accept @ 05,38 Width 13 "D"  Picture "#[#];.##;.##[##]" Tag "TG_DTINI" To VSDGDTINI
    Label  @ 05,51 "at‚" For "TG_DTFIM"
    Accept @ 05,56 Width 13 "D"  Picture "#[#];.##;.##[##]" Tag "TG_DTFIM" To VSDGDTFIM
 
    Label  @ 06,35 "Situacao do Pedido"  For "TG_SITUACAOPEDIDOAS"
    Accept @ 07,36 Width 33 "A30"  Picture "ABERTO,SUSPENSO,TODAS,!*!" Tag "TG_SITUACAOPEDIDOAS"  To VSDGSITUACAOPEDIDO

    Label  @ 08,35 "Proje‡Æo N.Pe‡as (Simular)"  For "TG_NPPROJECAO"
    Accept @ 09,36 Width 13 "N" Picture "#*#" Tag "TG_NPPROJECAO"     To VSDGNPPROJECAO

    Label  @ 10,35 "Op‡„o Itens da Formula" For "TG_OPFORMULA"
    Accept @ 11,39 Width 04 "A1"  Picture "1,2,3" Tag "TG_OPFORMULA" To VSDGOPFORMULA
    Accept @ 11,44 Width 25 "A25"  Picture "!*!" Tag "TG_NOMOPFORMULA" To VSDGNOMOPFORMULA

    Label  @ 12,35 "Op‡„o Custo" For "TG_OPCUST"
    Accept @ 13,39 Width 04 "A1"  Picture "S,C" Tag "TG_OPCUST" To VSDGOPCUST
    Accept @ 13,44 Width 25 "A25"  Picture "!*!" Tag "TG_NOMOPCUST" To VSDGNOMOPCUST

    Label  @ 14,35 "Op‡„o SemiAcabado" For "TG_OPSEMI"
    Accept @ 15,39 Width 04 "A1"  Picture "S,C" Tag "TG_OPSEMI" To VSDGOPSEMI
    Accept @ 15,44 Width 25 "A25"  Picture "!*!" Tag "TG_NOMOPSEMI" To VSDGNOMOPSEMI

    Label  @ 17,00  "Modelo de ~R~elat¢rio"  For "TG_CODMODELO"
    Accept @ 18,01  Width 06 "A3"  Picture "!*!" Tag "TG_CODMODELO" To VSDGCODMODELO
    Accept @ 18,06  Width 47 "A60"  Picture "!*!" Tag "TG_MODELO" To VSDGMODELO        

    Pushbutton @ 18,54 width 11 "~O~k"      OK     Default Value "Ok" Tag "YES" To BottonValue
    Pushbutton @ 18,66 width 11 "~C~ancela" CANCEL                    Tag "NO"  To BottonValue

  EndDialog
  If Not RetVal Then QuitLoop EndIf
  If Not Valida_ShowDialog("") Then Loop EndIf

  If IsBlank(VSDGEMPRESA)
     Then Mensagem("Informe uma Empresa !")
          Loop
  EndIf

  DISPOSITIVO()
  If OK="" Then Loop EndIf

  AGUARDE("Aguarde, Gerando Relat¢rio")
  Tabela=Cria_Temp(PrivDir())
  Copy "\\Base\\Sistemas\\Producao\\Rm_0051b" Tabela
  Empty(Tabela) 

  tit_titprojecao=""

  ARQ_ERRO= PrivDir()+"ATUADUP.ERR"
  Deleta_Arquivo(ARQ_ERRO)
  TEVE_ERRO=False
  CONT_ERRO=0
  
  Seleciona_Itens()
  SELECIONA()

  If IsEmpty(Tabela)
     Then MENSAGEM("N„o existem registros a processar!")
          Delete Tabela
          Loop
  EndIf

  Switch
    Case VSDGCODMODELO="01" : Ajusta_DadosItem()
    Case VSDGCODMODELO="02" : Soma_DadosMaterial() 
    Case VSDGCODMODELO="02A": Soma_DadosMaterial() 
    case VSDGCODMODELO="04" : Ajusta_DadosItem()   
  EndSwitch
  
  Switch
    Case VSDGCODMODELO="01" : copyreport "\\base\\sistemas\\producao\\rm_0051b" "1" Tabela "R"
    Case VSDGCODMODELO="02" : copyreport "\\base\\sistemas\\producao\\rm_0051b" "3" Tabela "R"
    Case VSDGCODMODELO="02A": copyreport "\\base\\sistemas\\producao\\rm_0051b" "4" Tabela "R"
    case VSDGCODMODELO="04" : CopyReport "\\Base\\Sistemas\\Producao\\rm_0051b" "R" Tabela "R"  
  EndSwitch
  IMPRIREL(Tabela,"R")

  Delete Tabela

  If TEVE_ERRO
     Then MSG=""
          MSG=MSG+"O Sistema detectou inconsistˆncia de dados !// //"
          MSG=MSG+"Itens sem formulas cadastradas// //"
          MSG=MSG+"Corrija o problema para obter o MELHOR controle !// //"
          MSG=MSG+"Verificar relatorios de erros !           "
          Mensagem(MSG)

          DISPOSITIVO()
          If OK<>"" 
             Then
                  FileWrite Append ARQ_ERRO From "9-1"+"\""+"\n"
                  FileWrite Append ARQ_ERRO From "9-2"+Format("W10,EIC",CONT_ERRO)+" Iten(s) "+"\""+"\n"
  
                  Tabela_ERRO=Cria_Temp(PrivDir())
                  Copy "\\Base\\Sistemas\\Estoque\\RM_tx250" Tabela_ERRO
          
                  {Tools} {ExportImport} {Import} {ASCII} {AppendDelimited} TypeIn ARQ_ERRO Enter
                  TypeIn Tabela_ERRO Enter ClearAll
                  
                  Sort Tabela_ERRO on "Text"
                  ClearAll
                  
                  OPCAOPAG="Todas"
                  IMPRIREL(Tabela_ERRO,"2")
          
                  Delete Tabela_ERRO
          EndIf   
  EndIf   

EndWhile
ClearAll
Release Vars All
Release Procs All
