;** Rm_1601A *******************************************************************
;* Posi‡Æo do Mostruario                                                       *
;*******************************************************************************
;Autor           : Vise Informatica (VISERP)
;Desenvolvido    : 12/03/2018 por Anivel Augusto Rodrigues
;Ultima Alteracao:   /  /     por  
;Motivo Alteracao: 
                                                                               
;*******************************************************************************
;* Rotina p/ Ajustar Registros                                                 *
;*******************************************************************************
Proc Processa()

ClearAll

{Ask} TypeIn "\\Sistemas\\Cadastro\\Represen" Enter
Moveto [Codigo do Representante] typein "_crep"
Moveto [Codigo_Pessoa          ] typein "_pes"
{Ask} TypeIn "\\Sistemas\\Vendas\\NotaC" Enter
Moveto [Codigo da Empresa      ] Check TypeIn "~VSDGEMPRESA.."
Moveto [Numero do Documento    ] Check
Moveto [Serie do Documento     ] Check
Moveto [Nome Fantasia Empresa  ] Check
Moveto [Tipo do Documento      ] Check
Moveto [Data de Emissao        ] Check TypeIn "<=~VSDGDTREF"
Moveto [Razao Social           ] Check
Moveto [Codigo                 ] Check TypeIn "_cpes, ~VSDGDESTINAT.."
Moveto [Codigo do Representante] Check TypeIn "_crep"
Moveto [Nome Fantasia Represent] Check
Moveto [Descricao da Destinacao] Check TypeIn "..MOSTRU.."
Moveto [Tipo Movimento Estoque ] Check
Moveto [Placa do Veiculo       ] Check
Moveto [Valor Nota Fiscal      ] Check
Moveto [UF Veiculo             ] Check
Moveto [Codigo da Tabela       ] Check
Moveto [Situacao               ] Check TypeIn "Not C"
Moveto [Tipo de Pagamento      ] Check
Moveto [Data de Acerto         ] Check TypeIn "Blank"
Do_It!
ClearAll

If IsEmpty("Answer")
   Then return false
endif

Tabela=Adiciona_Indice_Temp("Codigo da Empresa,Numero do Documento,Serie do Documento")

return true
EndProc ; Processa()
 
;*******************************************************************************
;* Rotina p/ Selecionar Registros                                              *
;*******************************************************************************
Proc Seleciona()

Tabela2=Cria_Temp(PrivDir())
Copy "\\Base\\Sistemas\\Vendas\\RM_1601" Tabela2
Empty(Tabela2)

AGUARDE("Aguarde, selecionando dados")
{Ask} TypeIn Tabela Enter
Moveto [Codigo da Empresa      ] Check Example "cemp" 
Moveto [Numero do Documento    ] Check Example "ndoc"
Moveto [Serie do Documento     ] Check Example "sdoc"
Moveto [Tipo do Documento      ] Check
Moveto [Codigo                 ] Check 
Moveto [Descricao da Destinacao] TypeIn "MOSTRU.."
Moveto [Tipo Movimento Estoque ] TypeIn "S"
{Ask} TypeIn "\\Sistemas\\Vendas\\NotaI" Enter
Moveto [Codigo da Empresa      ] Example "cemp"
Moveto [Numero do Documento    ] Example "ndoc"
Moveto [Serie do Documento     ] Example "sdoc"
Moveto [Item do Documento      ] Check
Moveto [Codigo do Item         ] Check TypeIn "~VSDGITEM.." 
Moveto [Descricao do Item      ] Check
Moveto [Quantidade             ] Check
Moveto [Unidade Fiscal         ] Check
Moveto [Preco Unitario         ] Check
Moveto [Preco Total            ] Check
Moveto [Valor Desconto Total   ] Check    
Moveto [Situacao_Item          ] TypeIn "Not C"
Do_It!
ClearAll

Adiciona_Dados2("MOSTRUARIO")

;****** Trocas *****************************************************************
{Ask} TypeIn Tabela Enter
Moveto [Codigo da Empresa      ] Check Example "cemp" 
Moveto [Numero do Documento    ] Check Example "ndoc"
Moveto [Serie do Documento     ] Check Example "sdoc"
Moveto [Tipo do Documento      ] Check           
Moveto [Codigo                 ] Check 
Moveto [Descricao da Destinacao] TypeIn "..TROCA.. ..MOSTRU.."
Moveto [Tipo Movimento Estoque ] TypeIn "S"
{Ask} TypeIn "\\Sistemas\\Vendas\\NotaI" Enter
Moveto [Codigo da Empresa      ] Example "cemp"
Moveto [Numero do Documento    ] Example "ndoc"
Moveto [Serie do Documento     ] Example "sdoc"
Moveto [Item do Documento      ] Check
Moveto [Codigo do Item         ] Check TypeIn "~VSDGITEM.."
Moveto [Descricao do Item      ] Check
Moveto [Quantidade             ] Check
Moveto [Unidade Fiscal         ] Check
Moveto [Preco Unitario         ] Check
Moveto [Preco Total            ] Check
Moveto [Valor Desconto Total   ] Check    
Moveto [Situacao_Item          ] TypeIn "Not C"
Do_It!
ClearAll

Adiciona_Dados2("TROCAS")

;****** Vendas *****************************************************************
{Ask} TypeIn Tabela Enter
Moveto [Codigo da Empresa        ] Check Example "cemp" 
Moveto [Numero do Documento      ] Check Example "ndoc"
Moveto [Serie do Documento       ] Check Example "sdoc"
Moveto [Tipo do Documento        ] Check
Moveto [Codigo                   ] Check
Moveto [Descricao da Destinacao  ] TypeIn "..VENDA.. ..MOSTRU.."
Moveto [Tipo Movimento Estoque   ] TypeIn "S"
Moveto [Tipo de Pagamento        ] Check
{Ask} TypeIn "\\Sistemas\\Vendas\\NotaI" Enter
Moveto [Codigo da Empresa        ] Example "cemp"
Moveto [Numero do Documento      ] Example "ndoc"
Moveto [Serie do Documento       ] Example "sdoc"
Moveto [Item do Documento        ] Check
Moveto [Codigo do Item           ] Check TypeIn "~VSDGITEM.."
Moveto [Descricao do Item        ] Check
Moveto [Quantidade               ] Check
Moveto [Unidade Fiscal           ] Check
Moveto [Preco Unitario           ] Check
Moveto [Preco Total              ] Check
Moveto [Valor Desconto Total     ] Check  
Moveto [Situacao_Item            ] TypeIn "Not C"
Do_It!
ClearAll

Adiciona_Dados2("VENDAS")

;****** Retornos - Mostruario ***************************************************
{Ask} TypeIn Tabela Enter
Moveto [Codigo da Empresa      ] Check Example "cemp"
Moveto [Numero do Documento    ] Check Example "ndoc"
Moveto [Serie do Documento     ] Check Example "sdoc"
Moveto [Tipo do Documento      ] Check
Moveto [Codigo                 ] Check
Moveto [Descricao da Destinacao] TypeIn "..RET.. ..MOSTRU.."  
Moveto [Tipo Movimento Estoque ] TypeIn "E"
{Ask} TypeIn "\\Sistemas\\Vendas\\NotaI" Enter
Moveto [Codigo da Empresa      ] Example "cemp"
Moveto [Numero do Documento    ] Example "ndoc"
Moveto [Serie do Documento     ] Example "sdoc"
Moveto [Item do Documento      ] Check
Moveto [Codigo do Item         ] Check TypeIn "~VSDGITEM.."
Moveto [Descricao do Item      ] Check
Moveto [Quantidade             ] Check
Moveto [Unidade Fiscal         ] Check
Moveto [Preco Unitario         ] Check
Moveto [Preco Total            ] Check
Moveto [Valor Desconto Total   ] Check   
Moveto [Situacao_Item          ] TypeIn "Not C"
Do_It!
ClearAll

Adiciona_Dados2("RETORNOS")

;****** Devolucoes - Mostruario  ***********************************************
{Ask} TypeIn Tabela Enter
Moveto [Codigo da Empresa      ] Check Example "cemp" 
Moveto [Numero do Documento    ] Check Example "ndoc"
Moveto [Serie do Documento     ] Check Example "sdoc"
Moveto [Tipo do Documento      ] Check
Moveto [Codigo                 ] Check     
Moveto [Descricao da Destinacao] TypeIn "..DEVOL.. ..MOSTRU.."
Moveto [Tipo Movimento Estoque ] TypeIn "E"
{Ask} TypeIn "\\Sistemas\\Vendas\\NotaI" Enter
Moveto [Codigo da Empresa      ] Example "cemp"
Moveto [Numero do Documento    ] Example "ndoc"
Moveto [Serie do Documento     ] Example "sdoc"
Moveto [Item do Documento      ] Check
Moveto [Codigo do Item         ] Check TypeIn "~VSDGITEM.."
Moveto [Descricao do Item      ] Check
Moveto [Quantidade             ] Check
Moveto [Unidade Fiscal         ] Check
Moveto [Preco Unitario         ] Check
Moveto [Preco Total            ] Check
Moveto [Valor Desconto Total   ] Check
Moveto [Situacao_Item          ] TypeIn "Not C"
Do_It!
ClearAll

Adiciona_Dados2("DEVOLUCOES")

return true
EndProc

;*******************************************************************************
;* Rotina adicionar dados na Db temporaria                                     *
;*******************************************************************************
Proc Adiciona_Dados2(Tipo)

If IsEmpty("Answer")
   Then Return
EndIf

If VSDGREFERENCIA<>"" And Not IsEmpty("Answer")
   Then {Ask} {Answer} Check
        Moveto [Codigo do Item] TypeIn "_Ite"
        {Ask} {\\Sistemas\\Estoque\\Itens}
        Moveto [Codigo do Item] TypeIn "_Ite"
        Moveto [Referencia    ] TypeIn "~VSDGREFERENCIA.."
        Do_it!
        ClearAll
EndIf   

If IsEmpty("Answer")
   Then Return
EndIf

View Tabela2
CoEdit "Answer"
Scan
  Moveto Tabela2       
  Moveto [Codigo da Empresa]
  Locate [Answer->Codigo da Empresa],[Answer->Codigo],[Answer->Codigo do Item],[Answer->Preco Unitario]
  If Not RetVal
     Then End
          Down
          [Codigo da Empresa]=[Answer->Codigo da Empresa]
          [Codigo           ]=[Answer->Codigo           ]
          [Codigo do Item   ]=[Answer->Codigo do Item   ]
          [Preco Unitario   ]=[Answer->Preco Unitario   ]
  EndIf  
  Switch
    Case Tipo="MOSTRUARIO":
         [Saida_Qtd      ]=[Saida_Qtd     ]+[Answer->Quantidade    ]
         [Saida_VrTotal  ]=[Saida_VrTotal ]+[Answer->Preco Total   ]    
         [Saida_Vr       ]=[Saida_VrTotal ]/[Saida_Qtd      ]       

    Case Tipo="TROCAS":
         [Saida_Qtd      ]=[Saida_Qtd    ]+[Answer->Quantidade   ]
         [Saida_VrTotal  ]=[Saida_VrTotal]+[Answer->Preco Total  ]
         [Saida_Vr       ]=[Saida_VrTotal]/[Saida_Qtd      ]

    Case Tipo="RETORNOS"  Or Tipo="DEVOLUCOES":
         [Retorno_Qtd    ]=[Retorno_Qtd    ]+ [Answer->Quantidade]
         If [Saida_Qtd]>0
            Then 
                 [Retorno_VrTotal]=[Retorno_VrTotal]+([Answer->Quantidade]*[Saida_vr])
            Else 
                 [Retorno_VrTotal]=[Retorno_VrTotal]+ [Answer->Preco Total]
         EndIf
         [Retorno_Vr       ]=[Retorno_VrTotal ]/[Retorno_Qtd      ]       

    Case Tipo="VENDAS":
         [Venda_Qtd      ]=[Venda_Qtd      ]+[Answer->Quantidade ]
         [Venda_VrTotal  ]=[Venda_VrTotal  ]+[Answer->Preco Total]
         [Venda_DescTotal]=[Venda_DescTotal]+[Answer->Valor Desconto Total]
         [Venda_Vr       ]=[Venda_VrTotal  ]/[Venda_Qtd     ]      
                
  EndSwitch                 

  ;---- Mostra os Documentos Envolvidos ---------------------------------------- 
;;Switch
;;  Case Tipo="MOSTRUARIO"  : If Search(REFDOCTO,RELDOCTO_SAIDA)=0 Then RELDOCTO_SAIDA=RELDOCTO_SAIDA+REFDOCTO EndIf
;;  Case Tipo="RETORNOS"    : If Search(REFDOCTO,RELDOCTO_RETOR)=0 Then RELDOCTO_RETOR=RELDOCTO_RETOR+REFDOCTO EndIf
;;  Case Tipo="VENDAS"      : If Search(REFDOCTO,RELDOCTO_VENDA)=0 Then RELDOCTO_VENDA=RELDOCTO_VENDA+REFDOCTO EndIf
;;  Case Tipo="TROCAS"      : If Search(REFDOCTO,RELDOCTO_TROCA)=0 Then RELDOCTO_TROCA=RELDOCTO_TROCA+REFDOCTO EndIf
;;  Case Tipo="DEVOLUCOES"  : If Search(REFDOCTO,RELDOCTO_DEVOL)=0 Then RELDOCTO_DEVOL=RELDOCTO_DEVOL+REFDOCTO EndIf
;;EndSwitch
                 
  Moveto "Answer"
EndScan
Do_It!
ClearAll

EndProc

;*******************************************************************************
;* Rotina p/ Ajusta Dados                                                      *
;*******************************************************************************
Proc Ajusta_Dados()

ClearAll

Seleciona()

AGUARDE("Aguarde, processando dados")

{Ask} TypeIn Tabela2 Enter Check     ; tabela indexada, processar answer sem o indice
Do_it!
ClearAll   

If VSDGCODMODELO="02B"
   Then {Ask} {\\Sistemas\\Estoque\\Itens}
        Moveto [Codigo do Item         ] TypeIn "_Ite"
        Moveto [Descricao do Item      ] TypeIn "_DesC"
        Moveto [Codigo da Cor_Tecido   ] TypeIn "_Cor"
        Moveto [Descricao da Cor_Tecido] TypeIn "_DCor"
        {Ask} {Answer} 
        Moveto [Codigo do Item         ] TypeIn "_Ite"
        Moveto [Descricao do Item      ] TypeIn "Changeto _DesC"
        Moveto [Codigo da Cor_Tecido   ] TypeIn "Changeto _Cor"
        Moveto [Descricao da Cor_Tecido] TypeIn "Changeto _DCor"
        Do_It!
        ClearAll
        
        Edit "Answer"
        Scan
          Barra(NRecords("Answer"), RecNo())
          Aguarde("Aguarde, ajustando a descricao do item "+BARRA_STRING)
          [Descricao do Item] = Rtrim(TiraTamanhoDescricaoItem([Descricao do Item]))
          ;---- Remo‡Æo de um ponto na Descri‡ao do Item -> #0391# ------------- 
          If SubStr([Descricao do Item],Len([Descricao do Item]),1)="."
             Then [Descricao do Item]=Rtrim(SubStr([Descricao do Item],1,Len([Descricao do Item])-1))
          EndIf
        EndScan
        Do_It!
        ClearAll
EndIf   

If VSDGCODMODELO="03" Or VSDGCODMODELO="03B" Or VSDGCODMODELO="04"
   Then {Ask} {Answer}
        moveto [Codigo         ] typein "changeto blank"
        moveto [Preco Unitario ] typein "changeto blank"
        moveto [Saida_Vr       ] typein "changeto blank"
        moveto [Venda_Vr       ] typein "changeto blank"
        moveto [Retorno_Vr     ] typein "changeto blank"
        Do_it!
        ClearAll
endif

{Ask} {Answer} check
Moveto [Saida_Qtd        ] Check TypeIn "Calc Sum as \"Saida_Qtd\""
Moveto [Saida_VrTotal    ] Check TypeIn "Calc Sum as \"Saida_VrTotal\""
Moveto [Venda_Qtd        ] Check TypeIn "Calc Sum as \"Venda_Qtd\""
Moveto [Venda_VrTotal    ] Check TypeIn "Calc Sum as \"Venda_VrTotal\""
Moveto [Venda_DescTotal  ] Check TypeIn "Calc Sum as \"Venda_DescTotal\""
Moveto [Retorno_Qtd      ] Check TypeIn "Calc Sum as \"Retorno_Qtd\""
Moveto [Retorno_VrTotal  ] Check TypeIn "Calc Sum as \"Retorno_VrTotal\""
Do_it!
ClearAll   

If VSDGCODMODELO="03B"
   then Delete Tabela2
        
        Tabela2=Cria_Temp(PrivDir())
        Rename "Answer" Tabela2
        ClearAll   

        PegaEstoque()
       
        {Ask} TypeIn Tabela2 Enter Check     
        Do_it!
        ClearAll   
endif   

If VSDGCODMODELO="02" Or VSDGCODMODELO="02B" Or VSDGCODMODELO="04"
   Then Edit "Answer"
        Scan
          Barra(NRecords("Answer"), RecNo())
          Aguarde("Aguarde, verificando registros "+BARRA_STRING)
          [Codigo do Item   ]=PegaCodigoRaiz([Codigo do Item])   
        EndScan
        Do_it!
        Clearall
               
        {Ask} {Answer} check
        Moveto [Saida_Qtd        ] Check TypeIn "Calc Sum as \"Saida_Qtd\""
        Moveto [Saida_VrTotal    ] Check TypeIn "Calc Sum as \"Saida_VrTotal\""
        Moveto [Venda_Qtd        ] Check TypeIn "Calc Sum as \"Venda_Qtd\""
        Moveto [Venda_VrTotal    ] Check TypeIn "Calc Sum as \"Venda_VrTotal\""
        Moveto [Venda_DescTotal  ] Check TypeIn "Calc Sum as \"Venda_DescTotal\""
        Moveto [Retorno_Qtd      ] Check TypeIn "Calc Sum as \"Retorno_Qtd\""
        Moveto [Retorno_VrTotal  ] Check TypeIn "Calc Sum as \"Retorno_VrTotal\""
        Moveto [Saldo do Estoque ] Check TypeIn "Calc Sum as \"Saldo do Estoque\""
        Do_it!
        ClearAll   
EndIf

If VSDGCODMODELO="03" Or VSDGCODMODELO="04"
   Then 
        {Ask} {Answer}
        Moveto [Saida_Qtd        ] TypeIn "_q"
        Moveto [Saida_VrTotal    ] TypeIn "_v"
        moveto [Saida_Vr         ] typein "changeto _v/_q"
        Do_it!
        ClearAll   

        {Ask} {Answer}
        Moveto [Venda_Qtd        ] TypeIn "_q"
        Moveto [Venda_VrTotal    ] TypeIn "_v"
        moveto [Venda_Vr         ] typein "changeto _v/_q"
        Do_it!
        ClearAll   

        {Ask} {Answer}
        Moveto [Retorno_Qtd      ] TypeIn "_q"
        Moveto [Retorno_VrTotal  ] TypeIn "_v"
        moveto [Retorno_Vr       ] typein "changeto _v/_q"
        Do_it!
        ClearAll   
endif

;---- Ajusta Item --------------------------------------------------------------
{Ask} {\\Sistemas\\Estoque\\Itens}
Moveto [Codigo do Item         ] Example "cite"
Moveto [Descricao do Item      ] Example "dite"
Moveto [Unidade Fiscal         ] Example "unf"
{Ask} {Answer}
Moveto [Codigo do Item         ] Example "cite"
Moveto [Descricao do Item      ] TypeIn "changeto _dite"   
Moveto [Unidade Fiscal         ] TypeIn "changeto _unf"
Do_It!
ClearAll

If VSDGCODMODELO="02" Or VSDGCODMODELO="02B" Or VSDGCODMODELO="04"
   Then ;---- Atualizando o Codigo do Item p/ Referencia e ajustando Unidade ---
        {Ask} {\\Sistemas\\Estoque\\Itens}
        Moveto [Codigo do Item] TypeIn "_CodI"
        Moveto [Referencia    ] Typein "_Ref"
        {Ask} {Answer}
        Moveto [Codigo do Item] TypeIn "_CodI, Changeto _Ref"
        Do_it!        
        ClearAll    
EndIf

;---- Ajusta Pessoa ------------------------------------------------------------
If VSDGCODMODELO="01" Or VSDGCODMODELO="02" Or VSDGCODMODELO="02B"
   Then {Ask} {\\Sistemas\\Cadastro\\Destinat}
        Moveto [Codigo      ] Example "Cod"
        Moveto [Razao Social] Example "Raz"
        {Ask} {Answer}
        Moveto [Codigo      ] Example "Cod"
        Moveto [Razao Social] TypeIn "Changeto _Raz"
        Do_It!
        ClearAll
EndIf

;---- Ajusta Empresa -----------------------------------------------------------
{Ask} {\\Sistemas\\Cadastro\\Empresas}
Moveto [Codigo da Empresa    ] Example "Emp"
Moveto [Nome Fantasia Empresa] Example "EmpF"
{Ask} {Answer}
Moveto [Codigo da Empresa    ] Example "Emp"
Moveto [Nome Fantasia Empresa] TypeIn "Changeto _EmpF"
Do_It!
ClearAll

Coedit "Answer"
Scan
  Barra(NRecords("Answer"), RecNo())
  Aguarde("Aguarde, Ajustando o Saldo "+BARRA_STRING)
  
  PR_UNIT   = [Preco Unitario ]
  
  SAIDA_QTD = [Saida_Qtd      ]
  SAIDA_VR  = [Saida_Vr       ]
  SAIDA_VrT = [Saida_VrTotal  ]
  
  RET_QTD   = [Retorno_Qtd    ]
  RET_VR    = [Retorno_Vr     ]
  RET_VrT   = [Retorno_VrTotal]
  
  VEND_QTD  = [Venda_Qtd      ]
  VEND_VR   = [Venda_Vr       ] 
  VEND_VrT  = [Venda_VrTotal  ]
  VEND_DESC = [Venda_DescTotal]
  
  [Saldo_Qtd    ] = SAIDA_QTD - RET_QTD - VEND_QTD 
  [Saldo_VrTotal] = SAIDA_VrT - RET_VrT - (VEND_VrT - VEND_DESC) 
EndScan
Do_It!
ClearAll
    
EndProc ;Ajusta_Dados()

;*******************************************************************************
;* Rotina                                                                      *
;*******************************************************************************
Proc PegaEstoque()

;-- Parametros para usar RM_Estq -----------------------------------------------
EstoqueDiaVSDGEMPRESA = VSDGEMPRESA
EstoqueDiaVSDGDTINI   = Primeiro_Dia_Data(Today())
EstoqueDiaVSDGDTFIM   = Today()
EstoqueDiaVSDGTIPOEST = "2" ;->P or T or S

Play "\\sistemas\\estoque\\rm_estq"
;-------------------------------------------------------------------------------

if not isempty(TabelaEstoqueDia)
   then
        {ask} typein TabelaEstoqueDia enter
        moveto [Codigo da Empresa ] typein "_e"
        moveto [Codigo do Item    ] typein "_i"
        moveto [Saldo             ] typein "_s"
        {Ask} TypeIn Tabela2 Enter  typein "Fast"
        moveto [Codigo da Empresa ] typein "_e"
        moveto [Codigo do Item    ] typein "_i"
        moveto [Saldo do Estoque  ] typein "changeto _s"
        Do_It!
        ClearAll
endif

Delete TabelaEstoqueDia ; nÆo esquecer de deletar a tabela TabelaEstoqueDia

endproc

;*******************************************************************************
;* Rotina                                                                      *
;*******************************************************************************
Proc SD_Dialog(Disparo,Campo,Evento,Elemento)
Temp=True
MSG_CAMPO=""                                       TECLA=""
If Disparo="OPEN"  Then AoCriarShowDialog() 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_DESTINAT"      : Campo="TG_EMPRESA"
            Case Campo="TG_ITEM"          : Campo="TG_DESTINAT"
            Case Campo="TG_REFERENCIA"    : Campo="TG_ITEM"
            Case Campo="TG_DTREF"         : Campo="TG_REFERENCIA"
            Case Campo="TG_CODMODELO"     : Campo="TG_DTREF"    
            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_DESTINAT"   
                    Case Campo="TG_DESTINAT"      : Campo="TG_ITEM"
                    Case Campo="TG_ITEM"          : Campo="TG_REFERENCIA"
                    Case Campo="TG_REFERENCIA"    : Campo="TG_DTREF"
                    Case Campo="TG_DTREF"         : Campo="TG_CODMODELO"
                    Case Campo="TG_CODMODELO"     : 
                         If IsBlank(VSDGCODMODELO)
                            Then FastMsg("Modelo inv lido!")
                            Else Campo="YES"
                         EndIf   
                  EndSwitch
          EndIf
          RefreshDialog
   EndSwitch
EndIf
Switch
  Case Campo="TG_DESTINAT":
       MSG_CAMPO="Informe o c¢digo da pessoa"
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 pessoa/c¢digo do item")
ModeloRelatoriosAdd("02  Anal¡tico por pessoa/referˆncia")
ModeloRelatoriosAdd("02B Anal¡tico por pessoa/referˆncia/cor")
ModeloRelatoriosAdd("Separator")
ModeloRelatoriosAdd("03  Sint‚tico por c¢digo do item")
ModeloRelatoriosAdd("03B Sint‚tico por c¢digo do item com estoque atual")
ModeloRelatoriosAdd("04  Sint‚tico por referˆncia")
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()
SYS_VALOR()

VSDGEMPRESA          = ""
VSDGNOMEMP           = ""
VSDGDESTINAT         = ""
VSDGNOMDEST          = ""
VSDGDTREF            = BlankDate()

ModeloRelatoriosCarregaLista()

While True
  ShowDialog "Posi‡„o do Mostru rio" 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 16 Width 72

    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 "Pessoa"  For "TG_DESTINAT"
    Accept @ 03,01 Width 07 "A4"  Picture "[&,#][#*#]" Tag "TG_DESTINAT" To VSDGDESTINAT
    Accept @ 03,09 Width 25 "A20" Picture "!*!" Tag "TG_NOMCLI" To VSDGNOMDEST     

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

    Label  @ 07,00 "Referˆncia"  For "TG_REFERENCIA"
    Accept @ 08,01 Width 33 "A20" Picture "!*!" Tag "TG_REFERENCIA"     To VSDGREFERENCIA

    Label  @ 07,35 "Per¡odo"  For "TG_DTREF"
    Label  @ 08,35 "at‚ "  For "TG_DTREF"
    Accept @ 08,40 Width 13 "D"  Picture "#[#];.##;.##[##]" Tag "TG_DTREF" To VSDGDTREF
    
    Label  @ 09,00  "Modelo de ~R~elat¢rio"  For "TG_CODMODELO"
    Accept @ 10,01  Width 06 "A3"  Picture "!*!" Tag "TG_CODMODELO" To VSDGCODMODELO
    Accept @ 10,06  Width 63 "A60"  Picture "!*!" Tag "TG_MODELO" To VSDGMODELO        
    
    Pushbutton @ 12,22 width 11 "~O~k"      OK     Default Value "Ok" Tag "YES" To BottonValue
    Pushbutton @ 12,36 width 11 "~C~ancela" CANCEL                    Tag "NO"  To BottonValue

  EndDialog                    
  If Not RetVal Then QuitLoop EndIf
  if not ValidarModelosRelatorios() then loop endif         

  If IsBlank(VSDGDTREF)
     Then Mensagem("O per¡odo deve ser informado!")
          Loop
  EndIf
  
  If IsBlank(VSDGCODMODELO)
     Then FastMsg("Informe o Modelo do Relat¢rio!")
          Loop
  EndIf
  
  DISPOSITIVO()
  If OK="" Then Loop EndIf                           

  AGUARDE("Aguarde, selecionando dados")
  if not Processa()
     Then MENSAGEM("N„o existem registros a processar")
          Loop
  EndIf   

  Ajusta_Dados()
  
  Impressao_Orientacao="Paisagem"
  Switch
    Case VSDGCODMODELO="01" Or
         VSDGCODMODELO="02"  : CopyReport "\\Base\\Sistemas\\Vendas\\RM_1601" "R" "Answer" "R"
    Case VSDGCODMODELO="02B" : CopyReport "\\Base\\Sistemas\\Vendas\\RM_1601" "3" "Answer" "R"     
    Case VSDGCODMODELO="03" Or
         VSDGCODMODELO="04"  : CopyReport "\\Base\\Sistemas\\Vendas\\RM_1601" "1" "Answer" "R"
    Case VSDGCODMODELO="03B" : CopyReport "\\Base\\Sistemas\\Vendas\\RM_1601" "2" "Answer" "R"
  EndSwitch
  IMPRIREL("Answer","R")
  
  Delete Tabela
  Delete Tabela2
  Delete "Answer"
  
EndWhile
ClearAll
Release Vars All
Release Procs All
