;** Rm_0070  *******************************************************************
;* Relacao de Itens em Estoque Minimo/Maximo/Ponto de Reposicao                *
;*******************************************************************************
;Autor           : Vise Informatica (VISERP)
;Desenvolvido    : 05/12/1995 por Anivel Augusto Rodrigues
;Ultima Alteracao: 17/01/2006 por Nikolas M. Mateus
;Motivo Alteracao: Correcao ortografica
;Ultima Alteracao: 12/06/2007 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes Familia/Grupo Modelo Relatorio+Compras+Cotacao
;Ultima Alteracao: 08/09/2007 por Nikolas
;Motivo Alteracao: Inclusao marca
;Ultima Alteracao: 23/09/2013 por Bruno/Andrey
;Motivo Alteracao: Add filtro por Ordem e ajustes layout do report
;Ultima Alteracao: 15/10/2013 por Andrey Fillipe
;Motivo Alteracao: Ajustes para gera‡Æo de arquivo em excel
;Ultima Alteracao: 20/03/2014 por Kamila
;Motivo Alteracao: InclusÆo de valores de pedidos e compras
;Ultima Alteracao: 02/03/2016 por Kamila Gomes
;Motivo Alteracao: Ajustes para pegar fator de conversÆo do compras e calcular quantidades
;Ultima Alteracao: 29/04/2016 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes fator conversao Itens compra
;Ultima Alteracao: 14/06/2016 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes TG_LOCAL                          
;Ultima Alteracao: 01/09/2016 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes Maior que o minimo                
;Ultima Alteracao: 18/09/2016 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes showdialog                   
;Ultima Alteracao: 18/11/2016 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes TG_LOCAL
;Ultima Alteracao: 14/12/2016 por Rafael Matos
;Motivo Alteracao: Ajustes Quantidade Referente
;Ultima Alteracao: 20/12/2016 por Rafael Matos
;Motivo Alteracao: Incluso VSDGOPCAO=5
;Ultima Alteracao: 28/09/2016 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes showdialog     
;Ultima Alteracao: 03/01/2017 por Rafael Matos
;Motivo Alteracao: Ajustes showdialog MensagemRadioButtons()               
;Ultima Alteracao: 15/07/2017 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes op‡äes de relatorios      
;Ultima Alteracao: 07/08/2017 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes modelo 04                 
;Ultima Alteracao: 27/10/2017 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes RM_0060 estrutura de dados
;Ultima Alteracao: 29/05/2018 por Anivel Augusto Rodrigues
;Motivo Alteracao: Adicionado ValidarModelosRelatorios()
;Ultima Alteracao: 26/08/2018 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes ignorar pedidos ou orden de compras
;Ultima Alteracao: 25/10/2019 por Bruno Carvalho
;Motivo Alteracao: Adicionado processo p/ gera‡Æo da ordem de compra conforme op‡Æo de estoque m¡nimo e checkbox -> RM_0070A
;Ultima Alteracao: 24/03/2020 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes showdialog   

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

{Ask} TypeIn "\\Sistemas\\Estoque\\Itens" Enter
Moveto [Codigo do Item          ] Example "ite"
if search("..",VSDGLOCAL)>0
   then Moveto [Localizacao         ] TypeIn VSDGLOCAL
   else Moveto [Codigo_Localizacao  ] TypeIn "~VSDGLOCAL.."
endif   
Moveto [Inativo                 ] TypeIn "Not S"
Moveto [Tipo do Item            ]
Switch
   Case VSDGTIPOEST = "1"       : TypeIn "E or M or O or A or S"
   Case VSDGTIPOEST = "2"       : TypeIn "P or T"
   Case Not IsBlank(VSDGTIPOEST): TypeIn "~VSDGTIPOEST"
   OtherWise                    : TypeIn "Not C, Not D, Not F, Not G, Not H, Not I"
EndSwitch
Moveto [Codigo da Familia      ] TypeIn "~VSDGFAMI.."
Moveto [Codigo do Grupo        ] TypeIn "~VSDGGRP.."
Moveto [Codigo da Marca        ] TypeIn "~VSDGMARCA.."
{Ask} TypeIn "\\Sistemas\\Estoque\\EstqPrm" Enter Check
Moveto [Codigo da Empresa      ] TypeIn "~VSDGEMPRESA.."
Moveto [Codigo do Item         ] Example "ite"
Do_It!
ClearAll

{Ask} {Answer} Check
Moveto [Codigo da Empresa       ] Example "emp" TypeIn "!"
Moveto [Codigo do Item          ] Example "ite" TypeIn "!"
{Ask} {SdEstq}
Moveto [Codigo da Empresa       ] Example "emp"
Moveto [Codigo do Item          ] Example "ite"
Moveto [Ano Referencia          ] TypeIn "~ANO"
Moveto [Mes Referencia          ] TypeIn "~MES"
Moveto [Saldo Atual             ] Check
Moveto [Custo Total Atual       ] Check
Do_It!
ClearAll

{Ask} {Answer} Check
Switch
   Case VSDGOPCAO=1:
        Moveto [Estoque Minimo    ] Example "EMIM" TypeIn ", Not Blank"
   Case VSDGOPCAO=2:
        Moveto [Estoque Maximo    ] Example "EMAX" TypeIn ", Not Blank"
   Case VSDGOPCAO=3:
        Moveto [Ponto de Reposicao] Example "EREP" TypeIn ", Not Blank"
   Case VSDGOPCAO=4:
        Moveto [Estoque Minimo    ] Example "EMIM" TypeIn ", Not Blank"
   Case VSDGOPCAO=5:
        Moveto [Estoque Minimo    ] Example "EMIM" TypeIn ", Not Blank"        
EndSwitch
Switch
   Case VSDGOPCAO=1:
        Moveto [Saldo Atual       ] TypeIn "<=" Example "EMIM"
   Case VSDGOPCAO=2:
        Moveto [Saldo Atual       ] TypeIn ">=" Example "EMAX"
   Case VSDGOPCAO=3:
        Moveto [Saldo Atual       ] TypeIn "<=" Example "EREP"
   Case VSDGOPCAO=4:
        Moveto [Saldo Atual       ] TypeIn ">"  Example "EMIM"
   Case VSDGOPCAO=1:
        Moveto [Saldo Atual       ] TypeIn "<=" Example "EMIM"        
EndSwitch
Do_It!
ClearAll

TabelaP=Adiciona_Indice_Temp("Codigo da Empresa,Codigo do Item")
Adiciona_Campo(TabelaP,"Compras(N),Pedidos(N),Disponivel(N),Sugestao(N)")

EndProc   ;  (Seleciona)

;*******************************************************************************
;* Pedidos                                                                     *
;*******************************************************************************
Proc Pedidos()

If VSDGOPMOV[1]=True 
   then return
endif

AGUARDE("Aguarde, selecionando pedidos de venda")
ClearAll

{Ask} TypeIn TabelaP ENTER
Moveto [Codigo da Empresa      ] Example "cemp"
Moveto [Codigo do Item         ] Example "cite"
{Ask} {\\Sistemas\\Vendas\\PedidoC}
Moveto [Numero do Pedido       ]       Example "Pedido"
Moveto [Codigo da Empresa      ] check Example "cemp"
Moveto [Situacao do Pedido     ] TypeIn "ABERTO"

{Ask} {\\Sistemas\\Vendas\\PedidoI}
Moveto [Numero do Pedido       ] Check Example "Pedido"
Moveto [Item do Pedido         ] Check
Moveto [Codigo do Item         ] Check Example "cite" 
Moveto [Quantidade             ] Check TypeIn ">" Example "qf"
Moveto [Quantidade Faturada    ] Check Example "qf"
Do_It!
ClearAll

If IsEmpty("Answer")
   Then Return
EndIf

{Ask} {Answer} Check
Moveto [Quantidade             ] Example "q"
Moveto [Quantidade Faturada    ] Example "qf" TypeIn ", Calc _q-_qf as Saldo"
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

CoEdit TabelaP,"Answer"

Scan
  Moveto TabelaP
  Moveto [Codigo da Empresa]
  Locate [Answer->Codigo da Empresa],[Answer->Codigo do Item]
  If Retval
     Then [Pedidos]=[Pedidos]+[Answer->Quantidade]
  EndIf
  UnLockRecord
  
  Moveto "Answer"
EndScan
Do_It!
ClearAll


EndProc   ;  (Pedidos)

;*******************************************************************************
;* Compras                                                                     *
;*******************************************************************************
Proc Compras()

If VSDGOPMOV[2]=True 
   then return
endif

AGUARDE("Aguarde, selecionando ordens de compra")
ClearAll

{Ask} TypeIn TabelaP ENTER
Moveto [Codigo da Empresa      ] Example "cemp"
Moveto [Codigo do Item         ] Example "cite"

{Ask} {\\Sistemas\\Compras\\OCC}
Moveto [Numero da OC           ]       Example "Pedido"
Moveto [Codigo da Empresa      ] check Example "cemp"
Moveto [Situacao da OC         ] TypeIn "ABERTO"
{Ask} {\\Sistemas\\Compras\\OCI}
Moveto [Numero da OC           ] Check Example "Pedido"
Moveto [Item da OC             ] Check
Moveto [Codigo do Item         ] Check Example "cite" 
Moveto [Quantidade             ] Check TypeIn ">" Example "qf"
Moveto [Quantidade Entregue    ] Check Example "qf"
Moveto [Fator de Conversao     ] Check
Do_It!
ClearAll

If IsEmpty("Answer")
   Then Return
EndIf

{Ask} {Answer}
Moveto [Fator de Conversao     ] Example "f"
Moveto [Quantidade             ] Example "q"  TypeIn ", changeto _q*_f"
Moveto [Quantidade Entregue    ] Example "qf" TypeIn ", changeto _qf*_f"
Do_It!
ClearAll

{Ask} {Answer} Check
Moveto [Quantidade             ] Example "q"
Moveto [Quantidade Entregue    ] Example "qf" TypeIn ", Calc _q-_qf as Saldo"
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

CoEdit TabelaP,"Answer"

Scan
  Moveto TabelaP
  Moveto [Codigo da Empresa]
  Locate [Answer->Codigo da Empresa],[Answer->Codigo do Item]
  If Retval
     Then [Compras]=[Compras]+[Answer->Quantidade]
  EndIf
  UnLockRecord
  
  Moveto "Answer"
EndScan
Do_It!
ClearAll


EndProc   ;  (Compras)

;*******************************************************************************
;* Ajustando dados                                                                     *
;*******************************************************************************
Proc Ajusta_Dados()
OPCAO1 = ""
OPCAO2 = ""
OPCAO3 = ""

AGUARDE("Aguarde, selecionando ordens de compra")
ClearAll

{Ask} TypeIn TabelaP ENTER
Moveto [Codigo da Empresa      ] Check
Moveto [Codigo do Item         ] Check 
Moveto [Saldo Atual            ] Example "s"
Moveto [Pedidos                ] Example "p"
Moveto [Compras                ] Example "c"
Moveto [Disponivel             ] TypeIn "Calc _s-_p+_c as Saldo"
Do_It!
ClearAll

CoEdit TabelaP,"Answer"
Scan
  Moveto TabelaP
  Moveto [Codigo da Empresa]
  Locate [Answer->Codigo da Empresa],[Answer->Codigo do Item]
  If Retval
     Then [Disponivel             ]=[Answer->Saldo]
  EndIf
  UnLockRecord
  
  Moveto "Answer"
EndScan
Do_It!
ClearAll


{Ask} TypeIn TabelaP ENTER
Switch
   Case VSDGOPCAO=1:
        OPCAO1 = "[E]"
        Moveto [Estoque Minimo         ] Example "vr"  
   Case VSDGOPCAO=2:
        OPCAO2 = "[E]"
        Moveto [Estoque Maximo         ] Example "vr"
   Case VSDGOPCAO=3:
        OPCAO3 = "[E]"
        Moveto [Ponto de Reposicao     ] Example "vr" 
   Case VSDGOPCAO=4:
        OPCAO1 = "[E]"
        Moveto [Estoque Minimo         ] Example "vr"
   Case VSDGOPCAO=5:
        OPCAO2 = "[E]"
        Moveto [Estoque Maximo         ] Example "vr"       
EndSwitch
Moveto [Disponivel          ] Example "sd" 
Moveto [Sugestao            ] TypeIn "Changeto _vr-_sd" 
Do_It!
ClearAll

If Not IsEmpty(TabelaP)
   then {Ask} {\\Sistemas\\Estoque\\Itens}
        Moveto [Codigo do Item        ] Example "Cod"
        Moveto [Descricao do Item     ] Check
        Moveto [Unidade Interna       ] Check
        Moveto [Descricao Complementar] 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
        Moveto [Descricao da Marca    ] Check
        Moveto [Localizacao           ] Check
        {Ask} TypeIn TabelaP ENTER Check
        Moveto [Codigo do Item] Example "Cod"
        Do_It!
        ClearAll

        delete TabelaP
        
        Rename "Answer" TabelaP
        ClearAll
EndIf

EndProc   ;  (Ajusta_Dados)

;*******************************************************************************
;* Cota‡Æo                                                                     *
;*******************************************************************************
Proc Cotacao()
AGUARDE("Aguarde, selecionando cota‡äes")
ClearAll

Tabela=Cria_Temp(PrivDir())
Copy "\\Base\\Sistemas\\Estoque\\RM_0070" Tabela

;*** Cotacao ********************************************************************
{Ask} TypeIn TabelaP ENTER Check
Moveto [Codigo do Item          ] Example "ite" TypeIn "!"
{Ask} {Cotacao} Check
Moveto [Codigo do Item          ] Example "ite"
Moveto [Codigo                  ] TypeIn "Not Blank"
Do_It!
ClearAll

CoEdit Tabela,"Answer"
Scan

 Moveto Tabela

 [Codigo da Empresa      ]=[Answer->Codigo da Empresa      ]
 [Codigo do Item         ]=[Answer->Codigo do Item         ]

 Switch
    Case VSDGOPCAO=1: [Quantidade Comparacao]=[Answer->Estoque Minimo    ]
    Case VSDGOPCAO=2: [Quantidade Comparacao]=[Answer->Estoque Maximo    ]
    Case VSDGOPCAO=3: [Quantidade Comparacao]=[Answer->Ponto de Reposicao]
    Case VSDGOPCAO=4: [Quantidade Comparacao]=[Answer->Estoque Minimo    ]
    Case VSDGOPCAO=5: [Quantidade Comparacao]=[Answer->Estoque Minimo    ]
 EndSwitch

 [Saldo Atual            ]=[Answer->Saldo Atual            ]
 [Codigo                 ]=[Answer->Codigo                 ]
 [Razao Social           ]=[Answer->Razao Social           ]
 [Data de Compra         ]=[Answer->Data de Compra         ]
 [Numero do Documento    ]=[Answer->Numero do Documento    ]
 [Tipo do Documento      ]=[Answer->Tipo do Documento      ]
 [Quantidade             ]=[Answer->Quantidade             ]
 [Unidade Entrada        ]=[Answer->Unidade Entrada        ]
 [Valor Unitario         ]=[Answer->Valor Unitario         ]
 [Custo Medio Unitario   ]=[Answer->Custo Medio Unitario   ]
 [Vr_Unit_Ult_Cotacao    ]=[Answer->Vr_Unit_Ult_Cotacao    ]
 [Data_Ult_Cotacao       ]=[Answer->Data_Ult_Cotacao       ]

 If [Data_Ult_Cotacao]>=[Data de Compra] and
    [Vr_Unit_Ult_Cotacao]>0
    Then [Data de Compra ]=[Answer->Data_Ult_Cotacao       ]
         [Valor Unitario ]=[Answer->Vr_Unit_Ult_Cotacao    ]
         [Tipo Compra_Cotacao]="COTACAO"
    Else [Tipo Compra_Cotacao]="COMPRA"
 EndIf
 UnLockRecord
 Down

 Moveto "Answer"
EndScan
Do_It!
ClearAll

;*** Compras ********************************************************************
{Ask} {\\Sistemas\\Compras\\OcC}
Moveto [Numero da OC          ] Example "Oc"
Moveto [Codigo da Empresa     ] Check  TypeIn "~VSDGEMPRESA.."
Moveto [Situacao da OC        ] TypeIn "ABERTO"
{Ask} {\\Sistemas\\Compras\\OcI}
Moveto [Numero da OC           ] Example "Oc"
Moveto [Item da OC             ] Check
Moveto [Codigo do Item         ] Check
Moveto [Quantidade             ] Check TypeIn ">" Example "qf"
Moveto [Quantidade Entregue    ] Check  Example "qf"
Moveto [Fator de Conversao     ] Check
Do_It!
ClearAll

{Ask} {Answer}
Moveto [Fator de Conversao     ] Example "f"
Moveto [Quantidade             ] Example "q"  TypeIn ", changeto _q*_f"
Moveto [Quantidade Entregue    ] Example "qf" TypeIn ", changeto _qf*_f"
Do_It!
ClearAll

{Ask} {Answer}
Moveto [Quantidade             ] Example "q" TypeIn ", changeto _q-_qf"
Moveto [Quantidade Entregue    ] Example "qf"
Do_It!
ClearAll

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

{Ask} {Answer}
Moveto [Codigo da Empresa       ] Example "cemp"
Moveto [Codigo do Item          ] Example "cite"
Moveto [Quantidade Comprada     ] Example "qtdc"
{Ask} TypeIn Tabela Enter TypeIn "Fast"
Moveto [Codigo da Empresa       ] Example "cemp"
Moveto [Codigo do Item          ] Example "cite"
Moveto [Quantidade Comprada     ] TypeIn "Changeto _qtdc"
Do_It!
ClearAll

{Ask} TypeIn "\\Sistemas\\Cadastro\\Empresas" Enter
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

{Ask} TypeIn "\\Sistemas\\Estoque\\Itens" Enter
Moveto [Codigo do Item          ] Example "ite"
Moveto [Tipo do Item            ] Example "tite"
Moveto [Descricao do Item       ] Example "dite"
Moveto [Codigo da Familia       ] Example "cfam"
Moveto [Descricao da Familia    ] Example "nfam"
Moveto [Codigo do Grupo         ] Example "cgru"
Moveto [Descricao do Grupo      ] Example "ngru"
Moveto [Codigo da Marca         ] Example "cmar"
Moveto [Descricao da Marca      ] Example "nmar"
Moveto [Unidade Interna         ] Example "uint"
{Ask} TypeIn Tabela Enter TypeIn "Fast"
Moveto [Codigo do Item          ] Example "ite"
Moveto [Tipo do Item            ] TypeIn "Changeto _tite"
Moveto [Descricao do Item       ] TypeIn "Changeto _dite"
Moveto [Codigo da Familia       ] TypeIn "Changeto _cfam"
Moveto [Descricao da Familia    ] TypeIn "Changeto _nfam"
Moveto [Codigo do Grupo         ] TypeIn "Changeto _cgru"
Moveto [Descricao do Grupo      ] TypeIn "Changeto _ngru"
;Moveto [Codigo da Marca         ] TypeIn "Changeto _cmar"
;Moveto [Descricao da Marca      ] TypeIn "Changeto _nmar"
Moveto [Unidade Interna         ] TypeIn "Changeto _uint"
Do_It!
ClearAll

EndProc   ;  (Cota‡Æo)

;*******************************************************************************
;* 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_MESANO"         : Campo="TG_EMPRESA" 
            Case Campo="TG_TIPOEST"        : Campo="TG_MESANO"
            Case Campo="TG_FAMI"           : Campo="TG_TIPOEST"
            Case Campo="TG_GRP"            : Campo="TG_FAMI"
            Case Campo="TG_MARCA"          : Campo="TG_GRP"
            Case Campo="TG_LOCAL"          : Campo="TG_MARCA"
            Case Campo="TG_OPCOES"         : Campo="TG_LOCAL"
            Case Campo="TG_OPMOV"          : Campo="TG_OPCOES"
            Case Campo="TG_OPRELCODALF"    : Campo="TG_OPMOV"
            Case Campo="TG_CODMODELO"      : Campo="TG_OPRELCODALF"
            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_MESANO"
                    Case Campo="TG_MESANO"       : Campo="TG_TIPOEST" 
                    Case Campo="TG_TIPOEST"      : Campo="TG_FAMI"
                    Case Campo="TG_FAMI"         : Campo="TG_GRP"
                    Case Campo="TG_GRP"          : Campo="TG_MARCA"
                    Case Campo="TG_MARCA"        : Campo="TG_LOCAL"
                    Case Campo="TG_LOCAL"        : Campo="TG_OPCOES" 
                    Case Campo="TG_OPCOES"       : Campo="TG_OPMOV"
                    Case Campo="TG_OPMOV"        : If VSDGOPMOV[3] And VSDGOPCAO=1
                                                      Then Campo="YES"
                                                      Else Campo="TG_OPRELCODALF"
                                                   EndIf
                    Case Campo="TG_OPRELCODALF"  : Campo="TG_CODMODELO"                                
                    Case Campo="TG_CODMODELO"    : Campo="YES"
                  EndSwitch
          EndIf
          RefreshDialog
   EndSwitch
EndIf
Switch
	Case Campo="TG_MESANO" :
       MSG_CAMPO="Informe a Ficha como Base p/ os Saldos"
  Case Campo="TG_OPCOES" :
       MensagemRadioButtons()
  Case Campo="TG_OPMOV"  :
       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  Familia/Grupo/Marca")
ModeloRelatoriosAdd("03  Familia/Grupo/Marca com descri‡Æo complementar")
ModeloRelatoriosAdd("Separator")
ModeloRelatoriosAdd("02  Familia/Grupo com Cota‡Æo")
ModeloRelatoriosAdd("04  Familia/Marca sem SugestÆo, sem Disponibilidade")

ModeloRelatoriosAdd("Fim")
                           
EndProc ;ModeloRelatoriosCarregaLista

;*******************************************************************************
;* ROTINA PRINCIPAL                                                            *
;*******************************************************************************
AutoLib="\\Sistemas\\Cadastro\\Bib_Show,\\Sistemas\\Cadastro\\Bibliot"
LimpAguarde()
                       
VSDGEMPRESA = ""
VSDGMARCA = ""
VSDGTIPOEST = ""
VSDGFAMI    =""
VSDGGRUP    =""
VSDGMESANO  = AlinhM(StrVal(Month(Today())),2)+"."+AlinhM(StrVal(Year(Today())),4)

Array VSDGOPMOV[3]
VSDGOPMOV[1]= False
VSDGOPMOV[2]= False
VSDGOPMOV[3]= False

ModeloRelatoriosCarregaLista()
  
While True

  ShowDialog "Itens em Estoque M¡nimo/M ximo/Reposi‡„o" Proc "SD_Dialog"
  Trigger "OPEN","ARRIVE"
  Key "F1","ENTER","ESC","TAB",
      -104, -105, -106, -107, -108, -109, -110, -111, -112, -113, -139, -140  
   @ 05,07   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_NOMEMPRESA" To VSDGNOMEMP

   Label  @ 02,00 "Mˆs/Ano Ficha Estoque"  For "TG_MESANO"
   Accept @ 03,01 Width 10 "A7"  Picture "##.####" Tag "TG_MESANO"        To VSDGMESANO

   Label  @ 04,00 "Tipo do Estoque"  For "TG_TIPOEST"
   Accept @ 05,04 Width 04 "A1"  Picture "!" Tag "TG_TIPOEST" To VSDGTIPOEST
   Accept @ 05,09 Width 25 "A30"  Picture "!*!" Tag "TG_DESCTIPOEST" To VSDGDESCTIPOEST

   Label  @ 06,00 "Familia"  For "TG_FAMI"
   Accept @ 07,02 Width 06 "A3"  Picture "#*#" Tag "TG_FAMI"    To VSDGFAMI
   Accept @ 07,09 Width 25 "A30" Picture "!*!" Tag "TG_NOMFAMI" To VSDGNOMFAMI

   Label  @ 08,00 "Grupo"  For "TG_GRP"
   Accept @ 09,02 Width 06 "A3"  Picture "#*#" Tag "TG_GRP"    To VSDGGRP
   Accept @ 09,09 Width 25 "A30" Picture "!*!" Tag "TG_NOMGRP" To VSDGNOMGRP
   
   Label  @ 10,00 "Marca"  For "TG_MARCA"
   Accept @ 11,02 Width 06 "A3"  Picture "#*#" Tag "TG_MARCA"    To VSDGMARCA
   Accept @ 11,09 Width 25 "A20" Picture "!*!" Tag "TG_NOMMARCA" To VSDGNOMMARCA   
   
   Label  @ 12,00 "Localiza‡„o"  For "TG_LOCAL"
   Accept @ 13,01 Width 33 "A12"  Picture "!*!" Tag "TG_LOCAL" To VSDGLOCAL
   Accept @ 14,01 Width 33 "A25" Picture "!*!" Tag "TG_LOCALNOM" To VSDGNOMLOCAL

   Label @ 00,35 "Op‡”es de Relat¢rio" For "TG_OPCOES"
   RadioButtons @ 01,35 Height 5 Width 43
     "~1~ Menor/Igual ao M¡nimo            ",
     "~2~ Maior/Igual ao M ximo            ",
     "~3~ Menor/Igual ao Ponto Reposi‡„o",
     "~4~ Maior que o M¡nimo               ",
     "~5~ Menor/Igual ao M¡nimo(M ximo-Saldo)" 
     Tag "TG_OPCOES"
     To VSDGOPCAO

    CheckBoxes @8,35 Height 3 Width 30 Tag "TG_OPMOV"
    "Ignorar Pedidos de Vendas " to VSDGOPMOV[1],
    "Ignorar Ordens de Compras " to VSDGOPMOV[2],
    "Gera Ordem de Compra " to VSDGOPMOV[3]

   Label  @ 12,35 "Ordem" For "TG_OPRELCODALF"
   Accept @ 13,39 Width 04 "A1"  Picture "1,2" Tag "TG_OPRELCODALF" To VSDGOPRELCODALF
   Accept @ 13,44 Width 25 "A22" Picture "!*!" Tag "TG_NOMOPRELCODALF" To VSDGNOMOPRELCODALF                 
   
   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
  
  Switch
    Case VSDGOPMOV[3] And VSDGOPCAO<>1 :
         FastMsg("Gera‡Æo da ordem de compra somente pela op‡Æo (1)")
         VSDGOPMOV[3] = False
    Case VSDGOPMOV[3] And VSDGOPCAO=1  :     
         If IsBlank(VSDGEMPRESA)
            Then FastMsg("Informe a Empresa!")
                 Loop
         EndIf   
         VSDGCODMODELO="01"      
  EndSwitch 
  If Not RetVal Then QuitLoop EndIf
  If Not Valida_ShowDialog("") Then Loop EndIf
  if not ValidarModelosRelatorios() then loop endif             

  If VSDGOPMOV[3] And VSDGOPCAO=1  
     Then VSDGCODMODELO="" 
     Else DISPOSITIVO()
          If OK="" Then Loop EndIf
  EndIf  

  ANO = SubStr(VSDGMESANO,4,4)
  MES = SubStr(VSDGMESANO,1,2)
  If (NumVal(MES)<1 Or NumVal(MES)>12)
     Then Mensagem("Mˆs inv lido !")
	      Loop
  EndIf

  SR_TITULO =""
  SR_TITULO2=""
  Switch
    Case VSDGOPCAO=1:
         SR_TITULO ="Itens c/ saldo menor/Igual ao estoque minimo"
         SR_TITULO2="Minimo"
    Case VSDGOPCAO=2:
         SR_TITULO ="Itens c/ saldo maior/igual ao estoque maximo"
         SR_TITULO2="Maximo"
    Case VSDGOPCAO=3:
         SR_TITULO ="Itens c/ saldo menor/igual ao ponto de reposicao"
         SR_TITULO2="Reposicao"
    Case VSDGOPCAO=4:
         SR_TITULO ="Itens c/ saldo maior que o estoque m¡nimo"
         SR_TITULO2="Minimo"
    Case VSDGOPCAO=5:
         SR_TITULO ="Itens c/ saldo menor/Igual ao estoque minimo com sugestÆo M ximo - Saldo"         
         SR_TITULO2="Minimo"
  EndSwitch

  AGUARDE("Aguarde, Gerando Relat¢rio")
  
  Seleciona()
  
  If IsEmpty(TabelaP)
     Then MENSAGEM("N„o existem registros a processar")
          Delete TabelaP
          Loop
  EndIf

  switch
    case VSDGCODMODELO="02":
      Cotacao()
    otherwise              :
      Pedidos()
      Compras()
      Ajusta_Dados()
  endswitch
  
  switch
    Case VSDGOPCAO=1 And VSDGOPMOV[3] : 
         Play "RM_0070A"
         Delete TabelaP
         
    case VSDGCODMODELO="01":
          Impressao_Orientacao="Paisagem"
          CopyReport "\\Base\\Sistemas\\Estoque\\Rm_0060" "4" TabelaP "R"
          If VSDGOPRELCODALF="2"
             Then Seta_Ordem_Report(TabelaP,"R","Codigo do Item","Descricao do Item","")
          EndIf
          IMPRIREL(TabelaP,"R")
          Delete TabelaP

    case VSDGCODMODELO="02":
          Impressao_Orientacao="Retrato"
          IMPRIREL(Tabela,"R")
          Delete Tabela
          Delete TabelaP

    case VSDGCODMODELO="03":
          Impressao_Orientacao="Paisagem"
          CopyReport "\\Base\\Sistemas\\Estoque\\Rm_0060" "3" TabelaP "R"
          If VSDGOPRELCODALF="2"
             Then Seta_Ordem_Report(TabelaP,"R","Codigo do Item","Descricao do Item","")
          EndIf
          IMPRIREL(TabelaP,"R")
          Delete TabelaP

    case VSDGCODMODELO="04":
          Impressao_Orientacao="Paisagem"
          CopyReport "\\Base\\Sistemas\\Estoque\\Rm_0060" "5" TabelaP "R"
          If VSDGOPRELCODALF="2"
             Then Seta_Ordem_Report(TabelaP,"R","Codigo do Item","Descricao do Item","")
          EndIf
          IMPRIREL(TabelaP,"R")
          Delete TabelaP

  endswitch
  
EndWhile
ClearAll
Release Vars All
Release Procs All
