;** RPedidos *******************************************************************
;*  Alteracao e Inclusao de Pedidos p/ Producao                                *
;*******************************************************************************
;Autor           : Vise Informatica (VISERP)
;Desenvolvido    : 25/05/2012 por Bruno Carvalho
;Ultima Alteracao: 04/02/2013 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes LimpaRodape()                  
;Ultima Alteracao: 07/11/2016 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes showdialog sele‡Æo
;Ultima Alteracao: 14/12/2016 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes showdialog                   
;Ultima Alteracao: 27/12/2016 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes showdialog                   
;Ultima Alteracao: 14/01/2017 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes filtros               
;Ultima Alteracao: 19/01/2018 por Bruno Carvalho
;Motivo Alteracao: Ajustes Seleciona2()
;Ultima Alteracao: 31/10/2018 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes filtro representante

;*******************************************************************************
;* Rotina para Localizar Registro                                              *
;*******************************************************************************
Proc CHAVE()
While True
  Moveto [Sequencia]
  End
  CODIGO=[Sequencia]
  Down
  CODIGO=CODIGO+1
  [Sequencia]=CODIGO

  While true

      If Field()="Sequencia"
         Then Prompt " Esc=Sair  F3=Limpar  F4=Impress„o  F5=Ordenar  F6=Selecao  F7=Paginar"
         Else Prompt " Esc=Retornar  F1=Tabelas"
      EndIf

      Wait Field
           Until "ESC","ENTER","F7","HOME","UP","PGUP","F3","F4","F5","F1","F6",
            -104, -105, -106, -107, -108, -109, -110, -111, -112, -113, -139, -140
            
      If SubStr(RetVal,1,2)="-1"      
         Then SYS_TECLA_ACIONADA=RetVal 
              Seta_Tecla_Acionada()     
              RetVal="ESC"            
      EndIf                             

      Switch
      Case RetVal="F1"And Field()="Numero do Pedido":
           CONSULTAF1()
      Case RetVal="F3"And Field()="Sequencia":
           CONFIRMA()
           If OK="S"
              Then EXCLUSAO()
                   QuitLoop
           EndIf
      Case RetVal="F4":
           If Field()="Sequencia"
              Then ShowPopup " Impress„o " @04 ,28
                      "~1~- Resumo Itens   " :" Resumo dos itens  ":"CARREG1",
                      "~2~- Rela‡„o Pedidos ":" Rela‡„o de Pedidos":"CARREG2",
                      "~C~ancelar"           :" Cancelar Opera‡„o"                   :"CANCELAR"
                   EndMenu
                    To MenuVar
                    If Not Retval or (MenuVar="Cancelar") or (MenuVar="Esc")
                       Then Loop
                    EndIf

              Switch
                    Case MenuVar="CARREG1"  :
                         Del
                         OPREL=1
                         IMPRIME()
                         QuitLoop
                    Case MenuVar="CARREG2"  :
                         Del
                         OPREL=2
                         IMPRIME()
                         QuitLoop
                   Case MenuVar="CANCELAR" :Loop
              EndSwitch
           EndIf
       Case RetVal="F5": 
            Del
            Ordenar()
            QuitLoop          
       Case RetVal="F6":
            Del
            Selecao()
            QuitLoop
      Case RetVal="F7" Or RetVal="UP" Or RetVal="PGUP" Or RetVal="HOME" And Field()="Sequencia":
           PAGINA("RPedidos","MR")
           If EDITAR="S"
              Then QuitLoop
              Else If EXCLUIR="S"
                      Then CONFIRMA()
                           If OK="S"
                              Then DEL
                           EndIf
                   EndIf
           EndIf
           QuitLoop
      Case Retval="ESC":
           If Field()="Numero do Pedido"
              Then If CHAVE=1
                      Then Del
                   EndIf
                   QuitLoop
           EndIf
           CHAVE=9
           Del
           Return
      Case Retval="ENTER":
           If Field()="Sequencia"
              Then If IsBlank([])
                      Then Loop
                   EndIf
                   CODIGO=[]
                   Del
                   Locate CODIGO
                   If Retval
                      Then CHAVE=0
                           Moveto [Numero do Pedido]
                           Loop
                      Else CHAVE=1
                           End Down
                           [Sequencia]=CODIGO
                   EndIf
                   If IsLockRecord()
                      Then End Down
                           Moveto [Sequencia]
                           Loop
                   EndIf
             Else Switch
                    Case Field()="Numero do Pedido" :
                         If IsBlank([])
                             Then Loop
                         Endif
                         QuitLoop
                  EndSwitch
        EndIf
        Right
      EndSwitch
  EndWhile
EndWhile
EndProc

;*******************************************************************************
;* Rotina De Exclusao                                                          *
;***************************************************+***************************
Proc EXCLUSAO()
Home
While RecordStatus("New")=False
  Del
EndWhile
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_MARCA"         : Campo="TG_DESTINAT"
            Case Campo="TG_ESTADO"        : Campo="TG_MARCA"
            Case Campo="TG_CIDADE"        : Campo="TG_ESTADO"
            Case Campo="TG_NCARREG"       : Campo="TG_CIDADE"
            Case Campo="TG_REPRESEN"      : Campo="TG_NCARREG"
            Case Campo="TG_DESTIN"        : Campo="TG_REPRESEN"
						Case Campo="TG_OPDT"          : Campo="TG_DESTIN"
						Case Campo="TG_DTINI"         : Campo="TG_OPDT"
						Case Campo="TG_HRINI"         : Campo="TG_DTINI"
						Case Campo="TG_DTFIM"         : Campo="TG_HRINI"
						Case Campo="TG_HRFIM"         : Campo="TG_DTFIM"
            Case Campo="TG_SITUACAOPEDIDO"     : Campo="TG_HRFIM"
            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_MARCA"
                    Case Campo="TG_MARCA"   : Campo="TG_ESTADO"
                    Case Campo="TG_ESTADO"  : Campo="TG_CIDADE" 
                    Case Campo="TG_CIDADE"  : Campo="TG_NCARREG"
                    Case Campo="TG_NCARREG" : Campo="TG_REPRESEN"
                    Case Campo="TG_REPRESEN": Campo="TG_DESTIN"
                    Case Campo="TG_DESTIN"  : Campo="TG_OPDT"
                    Case Campo="TG_OPDT"    : Campo="TG_DTINI"
                         VSDGOPDT=ControlValue("TG_OPDT")
                         Switch
                           Case VSDGOPDT="E": VSDGDESCOPDT="DATA DE EMISSAO"
                           Case VSDGOPDT="I": VSDGDESCOPDT="DATA DE INCLUSAO"
                           Case VSDGOPDT="N": VSDGDESCOPDT="DATA DE ENTREGA"
                           OtherWise: Campo="TG_OPDT"
                         EndSwitch
                    Case Campo="TG_DTINI"   : Campo="TG_HRINI"
                    Case Campo="TG_HRINI"   : Campo="TG_DTFIM"
                    Case Campo="TG_DTFIM"   : Campo="TG_HRFIM"
										Case Campo="TG_HRFIM"   : Campo="TG_SITUACAOPEDIDO"
                    Case Campo="TG_SITUACAOPEDIDO" : Campo="YES"
									  
                  EndSwitch
          EndIf
          RefreshDialog
   EndSwitch
EndIf
Switch
	Case Campo="":
		 MSG_CAMPO=""
  Case Campo="TG_OPDT":
     MSG_CAMPO="Op‡„o: Emiss„o/Inclus„o/eNtrega "
  Case Campo="TG_OPCOES":
     MensagemCheckBoxes()   
Endswitch
Monta_Prompt(MSG_CAMPO,TECLA)
Return Temp
EndProc

;*******************************************************************************
;* Rotina Filtrar Registros                                                    *
;*******************************************************************************
Proc Selecao()
LimpAguarde()
Do_It!
ClearAll
Echo Normal
Echo Off

OP_SHOW="S"

ShowDialog "Relacao de Pedidos p/ Produ‡„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,12	 Height 19 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 "Marca"  For "TG_MARCA"
  Accept @ 05,02 Width 06 "A3"  Picture "#*#" Tag "TG_MARCA"    To VSDGMARCA
  Accept @ 05,09 Width 25 "A30" Picture "!*!" Tag "TG_NOMMARCA" To VSDGNOMMARCA

  Label  @ 06,02 "Estado"  For "TG_ESTADO"
  Accept @ 07,03 Width 05 "A2"  Picture "!*!" Tag "TG_ESTADO" To VSDGESTADO
  Accept @ 07,09 Width 25 "A20" Picture "!*!" Tag "TG_NOMESTADO"  To VSDGNOMESTADO

  Label  @ 08,00 "Cidade"  For "TG_CIDADE"
  Accept @ 09,01 Width 33 "A20" Picture "!*!" Tag "TG_CIDADE"  To VSDGCIDADE

	Label  @ 10,00 "Carregamento" For "TG_NCARREG"
	Accept @ 11,01 Width 9	"A6"  Picture "[&,#][#*#]" Tag "TG_NCARREG"    To VSDGNCARREG
	Accept @ 11,09 Width 25 "A20" Picture "!*!" Tag "TG_NOMNCARREG" To VSDGNOMNCARREG

  Label  @ 12,00 "Representante"  For "TG_REPRESEN"
  Accept @ 13,01 Width 07 "A4"  Picture "[&,#][#*#]" Tag "TG_REPRESEN"    To VSDGREPRESEN
  Accept @ 13,09 Width 25 "A30" Picture "!*!" Tag "TG_NOMREPR"     To VSDGNOMREPR

  Label  @ 00,35 "Destinacao"  For "TG_DESTIN"
  Accept @ 01,37 Width 06 "A3"  Picture "#*#" Tag "TG_DESTIN"    To VSDGDESTIN
  Accept @ 01,44 Width 25 "A30" Picture "!*!" Tag "TG_NOMDESTIN" To VSDGNOMDESTIN

	Label  @ 02,35 "Op‡äes de Datas" For "TG_OPDT"
	Accept @ 03,39 Width 04 "A1"  Picture "E,I,N" Tag "TG_OPDT" To VSDGOPDT
	Accept @ 03,44 Width 25 "A20"  Picture "!*!" Tag "TG_DESCOPDT" To VSDGDESCOPDT

  Label  @ 04,35 "Per¡odo Referente" For "TG_DTINI"
  Label  @ 05,39 " de" For "TG_DTINI"
  Accept @ 05,44 Width 13 "D"  Picture "#[#];.##;.##[##]" Tag "TG_DTINI" To VSDGDTINI
  Label  @ 05,57 "as" For "TG_DTINI"
  Accept @ 05,61 Width 08 "A5"  Picture "##:##" Tag "TG_HRINI" To VSDGHRINI
  Label  @ 06,39 "at‚" For "TG_DTFIM"
  Accept @ 06,44 Width 13 "D"  Picture "#[#];.##;.##[##]" Tag "TG_DTFIM" To VSDGDTFIM
  Label  @ 06,57 "as" For "TG_DTFIM"
  Accept @ 06,61 Width 08 "A5"  Picture "##:##" Tag "TG_HRFIM" To VSDGHRFIM

  Label  @ 10,35 "Situacao do Pedido"  For "TG_SITUACAOPEDIDO"
  Accept @ 11,36 Width 33 "A30"  Picture "ABERTO,SUSPENSO,CANCELADO,FATURADO,TODAS,!*!" Tag "TG_SITUACAOPEDIDO"  To VSDGSITUACAOPEDIDO

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

EndDialog

If RetVal
   Then LimpaRodape(0)
        Aguarde("Aguarde, Selecionando registros")
        ClearAll
        Seleciona2()

        If IsEmpty("Answer")
           Then Mensagem("N„o existem registros conforme sele‡„o !")
           Else View "RPedidos"
                Coedit "Answer"
                Scan
                Moveto "RPedidos"
                End
                SEQ=[Sequencia]
                Down
                [Sequencia        ]=SEQ+1
                [Codigo da Empresa]=[Answer->Codigo da Empresa]
                [Numero do Pedido ]=[Answer->Numero do Pedido ]
                [Data de Emissao  ]=[Answer->Data de Emissao  ]
                [Codigo           ]=[Answer->Codigo           ]
                SEQ                =[Sequencia                ]
                UnLockRecord
                Moveto "Answer"
                EndScan
                Do_It!
                ClearAll
        EndIf
EndIf
ClearAll
If IsTable("Answer")
   Then Delete "Answer"
EndIf
CoEdit "RPedidos"
PickForm "F"

EndProc

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

If Upper(VSDGCIDADE)="TODAS"
   Then VSDGCIDADE2=".."
   Else VSDGCIDADE2=VSDGCIDADE
EndIf

{Ask} {\\Sistemas\\Vendas\\PedidoC} Check
Moveto [Codigo da Empresa   ] TypeIn "~VSDGEMPRESA.."
Switch
  Case VSDGOPDT="E": Moveto [Data de Emissao    ] TypeIn ">=~VSDGDTINI,<=~VSDGDTFIM"
  Case VSDGOPDT="I": Moveto [Data_Inclusao      ] TypeIn ">=~VSDGDTINI,<=~VSDGDTFIM"
  Case VSDGOPDT="N": Moveto [Data de Entrega    ] TypeIn ">=~VSDGDTINI,<=~VSDGDTFIM"
EndSwitch
If IsAssigned(VSDGDESTINAT)
   Then Moveto [Codigo      ] TypeIn "~VSDGDESTINAT.."
EndIf   
Moveto [Codigo da Destinacao] TypeIn "~VSDGDESTIN.."
Moveto [Cidade              ] TypeIn VSDGCIDADE2
If IsAssigned(VSDGESTADO)
   Then Moveto [UF          ] TypeIn "~VSDGESTADO.."
EnDIF
Moveto [Numero_Carregamento ] TypeIn "~VSDGNCARREG.."
Moveto [Codigo do Representante] TypeIn "~VSDGREPRESEN.."

Moveto [Situacao do Pedido  ] 
switch
  case VSDGSITUACAOPEDIDO="JUNTAR ABERTO+SUSPENSO"     : TypeIn "ABERTO or SUSPENSO"
  case VSDGSITUACAOPEDIDO="IGNORAR CANCELADO+SUSPENSO" : TypeIn "not CANCELADO, not SUSPENSO"
  case VSDGSITUACAOPEDIDO="IGNORAR CANCELADO"          : TypeIn "not CANCELADO"
  case VSDGSITUACAOPEDIDO<>"TODAS"                     : TypeIn "~VSDGSITUACAOPEDIDO.."
endswitch
If Isassigned(VSDGMARCA) And Not IsBlank(VSDGMARCA)
   Then Moveto [Numero do Pedido] Example "NPed"
        {Ask} {\\Sistemas\\Vendas\\PedidoI}
        Moveto [Numero do Pedido] Example "NPed"
        Moveto [Codigo da Marca ] TypeIn "~VSDGMARCA"
EndIf        
Do_It!
ClearAll

If VSDGOPDT="E"
   Then Return
EndIf

For i From 1 To 2
  {Ask} {Answer} TypeIn "Fast Delete"
  If i=1
     Then Moveto [Data_Inclusao          ] TypeIn "~VSDGDTINI"
          Moveto [Hora_Inclusao          ] TypeIn "<~VSDGHRINI"
     Else Moveto [Data_Inclusao          ] TypeIn "~VSDGDTFIM"
          Moveto [Hora_Inclusao          ] TypeIn ">~VSDGHRFIM"
  EndIf
  Do_It!
  ClearAll
EndFor

EndProc    ; (Seleciona)

;*******************************************************************************
;* Rotina para Ordena‡Æo                                                       *
;*******************************************************************************
Proc Ordenar()
Private SEQ

ShowPopup " Ordenar por " CENTERED                       
 "~N~£mero dos Pedidos " : " Ordena por N£mero dos Pedidos " : "O_NP",
 "~D~ata de Emiss„o    " : " Ordena por Data de Emiss„o    " : "O_DE",
 "~D~ata de Entrega    " : " Ordena por Data de Entrega    " : "O_DR",
 Separator,
 "~C~ancelar           " : " Cancelar a Opera‡„o          " : "CANCELAR"
EndMenu
 To MenuVar

echo off
If MenuVar="CANCELAR" or MenuVar="Esc"
    Then Return
EndIf

Do_It!
ClearAll

AGUARDE("Aguarde, Ordenando Registros ")

{Ask} {RPedidos} Check
Do_It!
ClearAll

Switch
  Case MenuVar="O_NP" : Sort "Answer" On "Numero do Pedido"  
  Case MenuVar="O_DE" : Sort "Answer" On "Data de Emissao","Numero do Pedido"
  Case MenuVar="O_DR" : Sort "Answer" On "Data de Entrega","Numero do Pedido"
EndSwitch       
ClearAll

Coedit "Answer"
Scan
 [Sequencia]=Recno()
EndScan
Do_It!
ClearAll

Empty "RPedidos"
Add "Answer" "RPedidos"
ClearAll

CoEdit "RPedidos"
PickForm "F"
Return

EndProc ;Ordenar()

;*******************************************************************************
;* Rotina De Impressao                                                         *
;*******************************************************************************
Proc IMPRIME()
Do_It!
ClearAll

DISPOSITIVO()
If OK=""
   Then CoEdit "RPedidos"
        PickForm "F"
        Return
EndIf
AGUARDE("Aguarde, Gerando o Relat¢rio")

Switch
  Case OPREL=2 : SELECIONA2()
  OTherWise    : SELECIONA()
EndSwitch

If IsEmpty("Answer")
   Then MENSAGEM("N„o existem registros a processar")
   Else
        If OPREL=1 Then CopyReport  "\\Base\\Sistemas\\Vendas\\RM_0300"   "4" "Answer" "R"
                        IMPRIREL("Answer","R")
        EndIf
        If OPREL=2 Then CopyReport  "\\Base\\Sistemas\\Vendas\\RM_1100"   "3" "Answer" "R"
                        IMPRIREL("Answer","R")
        EndIf

EndIf

Delete "Answer"

CoEdit "RPedidos"
PickForm "F"
EndProc

;*******************************************************************************
;* Seleciona Pedidos para impressao                                            *
;*******************************************************************************
Proc SELECIONA()
{Ask} {RPedidos}
Moveto [Sequencia       ] Check
Moveto [Numero do Pedido] Example "NUM"
{Ask} {\\Sistemas\\Vendas\\PedidoI} Check
Moveto [Numero do Pedido] Example "NUM"
Do_It!
ClearAll
EndProc

;*******************************************************************************
;* Seleciona Pedidos para impressao
;*******************************************************************************
Proc SELECIONA2()
{Ask} {RPedidos}
Moveto [Numero do Pedido] Example "NUM"
{Ask} {\\Sistemas\\Vendas\\PedidoC} Check
Moveto [Numero do Pedido] Example "NUM"
Do_It!
ClearAll
EndProc

;*******************************************************************************
;* Rotina Principal                                                            *
;*******************************************************************************
AutoLib="\\Sistemas\\Cadastro\\Bibliot,\\Sistemas\\Cadastro\\Bib_Show"

VSDGEMPRESA =""
VSDGCIDADE  =""
VSDGNCARREG =""
VSDGREPRESEN  = ""
VSDGOPDT    =""
VSDGDTINI   =BlankDate()
VSDGDTFIM   =BlankDate()
VSDGHRINI  =""
VSDGHRFIM  =""
VSDGSITUACAOPEDIDO=""
VSDGDESTIN =""

CoEdit "RPedidos"
PickForm "F"
While True
  CHAVE()
  If CHAVE=9
     Then QuitLoop
  EndIf
EndWhile
Do_It!
ClearAll
Release Vars All
Release Procs All

