;** Sw_ped *********************************************************************
;*  Consulta/pedidos                                                           *
;*******************************************************************************
;Autor           : Vise Informatica (VISERP)
;Desenvolvido    : 03/04/2013 por Anivel Augusto Rodrigues
;Ultima Alteracao: 21/05/2013 por Anivel Augusto Rodrigues                           
;Motivo Alteracao: Ajustes Faturar pedidos/orcamentos
;Ultima Alteracao: 22/05/2013 por Anivel Augusto Rodrigues                           
;Motivo Alteracao: Ajustes dt emissao/saida do momento
;Ultima Alteracao: 28/08/2013 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes table buffer                                              
;Ultima Alteracao: 30/08/2013 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes procs como mesmo nome em outros scripts abertos no principal
;Ultima Alteracao: 30/08/2013 por Anivel Augusto Rodrigues
;Motivo Alteracao: Revisado table buffer ocorrido pelo sw_Cons                    
;Ultima Alteracao: 20/01/2014 por Bruno Carvalho
;Motivo Alteracao: Ajustado c\ VERIFICA_CONSULTA quando for BALCAO e adaptado para o FATURA  
;Ultima Alteracao: 18/02/2014 por Bruno Carvalho
;Motivo Alteracao: Ajustes #0334# onde foi alterado pelo VERIFICA_CONSULTA 
;Ultima Alteracao: 02/06/2014 por Bruno Carvalho
;Motivo Alteracao: Ajsutes #0334# onde foi adicionado VERIFICA_CONSULTA="BALCAO"  no Evento["KeyCode"] = -82
;Ultima Alteracao: 01/03/2016 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajuste Janela sem sombra
;Ultima Alteracao: 22/07/2016 por Bruno Carvalho
;Motivo Alteracao: Alterado na proc Mostra_Itens() -> [FaturaC->Numero Pedido_Orcamento] Sintaxe Incorreta
;Ultima Alteracao: 28/12/2016 por Rafael Matos
;Motivo Alteracao: Ajustes ShowDialog TG_DESTINAT

;*******************************************************************************
;* Rotina para Selecionar registros                                            *
;*******************************************************************************
Proc Seleciona3()
Private wc, primeira_tentativa, pedok

LimpaRodape(1)
Aguarde("Aguarde, verificando pedidos")

If IsAssigned(Array_Registro)
   Then Release Vars Array_Registro
EndIf
DynArray Array_Registro[]

If IsAssigned(Array_Registroit)
   Then Release Vars Array_Registroit
EndIf
DynArray Array_Registroit[]

wc=0
WCSW_NLANC=wc
WCSW_NITEN=0 

Moveto "FaturaC"
Moveto [Numero do Pedido]
Ativa_Lookup()
Moveto [Codigo]
OrderTable {indped01}
Home
Locate IndexOrder by "indped01" Pattern [FaturaC->Codigo]
If RetVal
   Then 
        primeira_tentativa=Recno()
        While True

          pedok=false
          Switch 
            Case VSDGTP="A" And [Situacao do Pedido]="ABERTO"    : pedok=true 
            Case VSDGTP="F" And [Situacao do Pedido]="FATURADO"  : pedok=true 
            Case VSDGTP="C" And [Situacao do Pedido]="CANCELADO" : pedok=true 
            Case VSDGTP="S" And [Situacao do Pedido]="SUSPENSO"  : pedok=true 
            Case VSDGTP="T"                                      : pedok=true 
          EndSwitch 
          If pedok
             Then wc=wc+1
                  Array_Registro[wc]=AlinhM(StrVal(wc),4)+" "+
                                         [Codigo da Empresa]+" "+
                                         [Numero do Pedido]+" "+
                                         Format("D13",[Data de Emissao])+" "+
                                         Format("D13",[Data de Entrega])+" "+
                                         Completa([Situacao do Pedido],11," ")+
                                         [Descricao da Destinacao]
          EndIf
          Skip
          If EOT()
             Then Home
          EndIf
          Locate IndexOrder by "indped01" Next Pattern [FaturaC->Codigo]
          If Not RetVal Then QuitLoop EndIf
          If Recno()=Primeira_tentativa Then QuitLoop Endif
          If wc=1000
             Then MSG = "Sr. USUARIO. // //"
                  MSG = MSG +"MEMORIA INSUFICIENTE. (DOS/EMS)//"
                  MSG = MSG +"Somente parte da Pesquisa ser  mostrado.//"
                  MSG = MSG +"Caso queira continuar com a pesquisa,   //"
                  MSG = MSG +"preencha com mais informa‡”es o campo   //"
                  MSG = MSG +"para diminuir o numero de itens.          "
                  Mensagem(MSG)
                  QuitLoop
          EndIf
        EndWhile
        WCSW_NLANC=wc
EndIf

KeyPress "ESC"

If DynArraySize(Array_Registro)=0
   Then If Not INICIO_DIALOG2
           Then Mensagem("Pesquisa sem Registro !")
        EndIf   
        Return False
EndIf
Message("")
LimpAguarde()
Return True
EndProc ; (Seleciona3)

;*******************************************************************************
;* Rotina para Digitacao Item                                                  *
;*******************************************************************************
Proc Mostra_Itens()
Private wc,qtdp

ArrayElement=ControlValue("TG_Registro")

If IsAssigned(Array_Registroit)
   Then Release Vars Array_Registroit
EndIf
DynArray Array_Registroit[]

wc=0
If DynArraySize(Array_Registro)>0  
   Then [Numero Pedido_Orcamento]=SubStr(Array_Registro[ControlValue("TG_Registro")],11,06)
        
        Moveto "PedidoI"
        If RecordStatus("New")=False
           Then Scan
                  wc=wc+1
                  qtdp=0
                  If (IsBlank([Quantidade Faturada]) Or [Quantidade Faturada]>=0) And
                     [Quantidade]>[Quantidade Faturada]
                     Then qtdp=[Quantidade]-[Quantidade Faturada]
                  EndIf
        
                  Array_Registroit[wc]=AlinhM(StrVal([Item do Pedido]),3)+" "+
                                         Format("W10,AL",[Codigo do Item])+" "+
                                         Format("W30,AL",[Descricao do Item])+" "+
                                         Format("W13.3,EIC",[Quantidade])+" "+
                                         Format("W13.3,EIC",qtdp)
                EndScan
        EndIf
EndIf   
WCSW_NITEN=wc

Moveto "FaturaC"
[FaturaC->Numero Pedido_Orcamento]=""
EndProc    ; (Mostra_Itens)

;*******************************************************************************
;* Rotina                                                                      *
;*******************************************************************************
Proc SD_Consulta3(Disparo,Campo,Evento,Elemento)
Private Disparo,Campo,Evento,Elemento 

Temp=True
TECLA    =""
MSG_CAMPO=""
If INICIO_DIALOG2
   Then Campo="TG_Registro"
        Mostra_Itens()
        INICIO_DIALOG2=False
EndIf

If Disparo="OPEN"
   Then AoCriarShowDialog()
        TiraSombraShowDialog()
EndIf

If Disparo="CLOSE"
   Then CancelDialog
EndIf

If Disparo="UPDATE" And Campo="TG_Registro"
   Then Mostra_Itens()
EndIf
If Disparo="UPDATE" And Campo="TG_Registroit"
   Then ArrayElementit=ControlValue("TG_Registroit")
EndIf

If Disparo="EVENT" And Evento["Type"]="KEY" Then
   Switch
     Case Evento["KeyCode"] = 9 Or
          Evento["KeyCode"] = -15:
          Temp=False
     Case Evento["KeyCode"] = -59: 
     Case Evento["KeyCode"] =  27:
          Temp=False
          Switch
            Case Campo="I_TP"        : CancelDialog
                 VSDGTP      =""
                 VSDGDESTINAT=""
                 VSDGRAZDEST =""
                 VSDGCONTATO =""
            Case Campo="TG_Registro"   : Campo="I_TP"
                 WCSW_NLANC      =BlankNum()
                 Release Vars Array_Registro
                 DynArray Array_Registro[]

                 WCSW_NITEN      =BlankNum()
                 Release Vars Array_Registroit
                 DynArray Array_Registroit[]

            Case Campo="TG_Registroit" : Campo="TG_Registro"
          EndSwitch
     Case Evento["KeyCode"] =  -63 And Campo="TG_Registro":
          Campo="TG_Registroit"
     Case (Evento["KeyCode"] = -82 Or Evento["KeyCode"] = 13) And Campo="TG_Registro":
          If SYS_CODIGO_CLIENTE="0334" And VERIFICA_CONSULTA="BALCAO"
             Then MENSAGEM("Permiss„o apenas para visualiza‡„o.//Se desejar faturar um pedido, v  para a rotina 03. Nota Fiscal/Romaneio!")
             Else Moveto "FaturaI" 
                  Moveto [Item da Of]
                  If RecordStatus("New")=False
                     Then MENSAGEM("A Ordem de Faturamento j  tem itens, nÆo pode incluir este pedido !")
                          Moveto "FaturaC"
                     Else Moveto "FaturaC"
                          [FaturaC->Numero do Pedido   ]=SubStr(Array_Registro[ControlValue("TG_Registro")],11,06)
                          [FaturaC->Numero do Orcamento]=""
                         If Carrega_Parametros()
                            Then 
                                 V_COD=[CODIGO]
                                 [Codigo]=""
                                 [CODIGO]=V_COD
                                 ENDERECOS()
                               ;;If [Situacao do Cliente]="RECADASTRO"
                               ;;   Then Mensagem("Verificar a Situa‡„o do Cliente !//Status="+[Situacao do Cliente])
                               ;;        Loop
                               ;;EndIf
                               ;;If [Situacao do Cliente]="PESSIMO"
                               ;;   Then Mensagem("Verificar a Situa‡„o do Cliente com a Gerencia !")
                               ;;EndIf
                
                                 V_PEDIDO=[Numero do Pedido]
                                 [Numero do Pedido]=""
                                 [Numero do Pedido]=V_PEDIDO
                
                                 V_DESTIN2=[Codigo da Destinacao]
                                 [Codigo da Destinacao]=""
                                 [Codigo da Destinacao]=V_DESTIN2
                
                                 V_REPRES =[Codigo do Representante]
                                 [Codigo do Representante]=""
                                 [Codigo do Representante]=V_REPRES
                
                                 V_CONDPG =[Condicao de Pagamento]
                                 [Condicao de Pagamento]=""
                                 [Condicao de Pagamento]=V_CONDPG
                
                                 V_TRANSP =[Codigo da Transportadora]
                                 [Codigo da Transportadora]=""
                                 [Codigo da Transportadora]=V_TRANSP
                
                                 If [Nome Fantasia Transport]="O PROPRIO"
                                    Then [Razao Social Transport ]=[Razao Social  ]
                                         [Endereco Transport     ]=[Endereco      ]
                                         [Bairro Transport       ]=[Bairro        ]
                                         [CEP Transport          ]=[CEP           ]
                                         [Cidade Transport       ]=[Cidade        ]
                                         [UF Transport           ]=[UF            ]
                                         [CGC Transport          ]=[CGC           ]
                                         [IE Transport           ]=[IE            ]
                                 EndIf
                
                                 V_PEDIDO=[Numero do Pedido]
                                 [Numero do Pedido]=""
                                 [Numero do Pedido]=V_PEDIDO
                
                                 V_VEICU  =[Codigo do Veiculo]
                                 [Codigo do Veiculo]=""
                                 [Codigo do Veiculo]=V_VEICU
                
                                 [Data de Emissao]=Today()
                                 [Data de Saida  ]=Today()
                                 [Hora de Saida  ]=Time()
                
                               ;;PED_VECTOS()
                               ;;
                               ;;If CD_EMPRESA<>[Codigo da Empresa]
                               ;;  Then If SYS_CODIGO_CLIENTE="0232"
                               ;;        Then CD_EMPRESA=[Codigo da Empresa]  
                               ;;       EndIf 
                               ;;       [Codigo da Empresa]=CD_EMPRESA
                               ;;       If Not Carrega_Parametros()
                               ;;          Then Moveto [Codigo da Empresa]
                               ;;               Loop
                               ;;       EndIf
                               ;;EndIf       
                               ;;
                               ;;Moveto [Numero_Carregamento]
                               ;;If Search("VEND",[Descricao da Destinacao])>0
                               ;;   Then Mensagem_Venda()
                               ;;        
                               ;;EndIf
        
                                 PARAM_PEDIDO   ="S"
                                 PARAM_ORCAMENTO="N"
        
                                 AcceptDialog
                         EndIf
                  EndIf
          EndIf  
          
     Case Evento["KeyCode"] =  13:
          Temp=False
          Switch
            Case Campo="I_TP"      : 
                 VSDGTP=ControlValue("I_TP")
                 If IsBlank(VSDGTP)
                    Then VSDGTP="A" 
                 EndIf
                 Switch
                   Case VSDGTP<>"T" And VSDGTP<>"A" And VSDGTP<>"F" And VSDGTP<>"C" And VSDGTP<>"S":
                     FastMsg("Tipo de lan‡amento inv lido !")
                   OtherWise:
                     RefreshDialog
                     If Seleciona3()
                        Then RefreshDialog
                             Campo="TG_Registro"
                             Mostra_Itens()
                     EndIf
                 EndSwitch
            Case Campo="TG_Registro" And DynArraySize(Array_Registro)>0:
          EndSwitch
   EndSwitch
EndIf

If Disparo="ARRIVE" And 
   (Campo="I_TP") and
   DynArraySize(Array_Registro)>0
   Then WCSW_NLANC      =BlankNum()
        Release Vars Array_Registro
        DynArray Array_Registro[]

        WCSW_NITEN      =BlankNum()
        Release Vars Array_Registroit
        DynArray Array_Registroit[]
        
EndIf

Switch
  Case Campo="I_TP"          : MSG_CAMPO="Pedidos: T=Todos  A=Em Aberto  F=Faturado  C=Cancelado  S=Suspenso"
  Case Campo="TG_Registro"   : If VERIFICA_CONSULTA="BALCAO"
                                  Then TECLA="// Esc=Retornar                     F5=Itens  "+Chr(31)+Chr(30)+"=Navegar "
                                  Else TECLA="// Esc=Retornar  Ins/Enter=Incluir  F5=Itens  "+Chr(31)+Chr(30)+"=Navegar " 
                               EndIf   
  Case Campo="TG_Registroit" : TECLA="// Esc=Retornar                               "+Chr(31)+Chr(30)+"=Navegar "
EndSwitch
SelectControl Campo
RefreshDialog
Monta_Prompt(MSG_CAMPO,TECLA)
ResyncControl Campo
Return Temp
EndProc  ; (Sd_Dialog)

;*******************************************************************************
;* Rotina verpedidos                                                           *
;*******************************************************************************
Proc verpedidos()

VSDGDESTINAT=[FaturaC->Codigo]
VSDGRAZDEST =[FaturaC->Razao Social]
VSDGCONTATO =[FaturaC->Telefone]

 LinhaCab1="Seq  Empr Pedido  EmissÆo    Entrega   Situacao   Destinacao"
;LinhaCab1="9999 9999 999999 99/99/9999 99/99/9999 1234567890 "
            
 LinhaCab2="Seq Item                                         Qtd Pedida  Qtd Pendente"
;LinhaCab2="999 1234567890 123456789012345678901234567890 9.999.999,999 9.999.999,999"

ShowDialog "Consulta pedidos" Proc "SD_Consulta3"
 Trigger "OPEN","ARRIVE","UPDATE","CLOSE","SELECT"
 Mouse "ALL"
  Key "F1","ENTER","ESC","ClearArea","INS","F5","TAB","ReverseTab",
      -104, -105, -106, -107, -108, -109, -110, -111, -112, -113, -139, -140,
      -71,-80,-79,-72,-132,-118

  @ 01,00   Height 22 Width 80

  Label  @ 00,00 "Pessoa" For "TG_DESTINAT"
  Accept @ 01,01 Width 07 "A4"  Picture "[&,#][#*#]" Tag "TG_DESTINAT" To VSDGDESTINAT

  Label  @ 00,08 "Nome"  For "I_NOMCLI"
  Accept @ 01,09 Width 43 "A40" Picture "!*!" Tag "I_NOMCLI" To VSDGRAZDEST

  Label  @ 00,52 "TL"  For "I_TP"
  Accept @ 01,53 Width 04 "A1"  Picture "T,A,F,C,S" Tag "I_TP" To VSDGTP

  Label @ 03,00 LinhaCab1  For "TG_Registro"
  PickDynArray @ 04,00 Height 06 width 77
   Columns 1
    Array_Registro
     Tag "TG_Registro"          
      To ArrayElement
  @ 10,62 ?? Format("W5,EIC",WCSW_NLANC)+" Pedido(s)"

  Label @ 12,00 LinhaCab2  For "TG_Registroit"
  PickDynArray @ 13,00 Height 06 width 77
   Columns 1
    Array_Registroit
     Tag "TG_Registroit"          
      To ArrayElementit
  @ 19,64 ?? Format("W5,EIC",WCSW_NITEN)+" Item(s)"

EndDialog

Mouse Show

EndProc


;*******************************************************************************
;* Rotina Principal                                                            *
;*******************************************************************************
; Chamado pelo Balcao.sc
VSDGTP        ="A"
INICIO_DIALOG2=True
WCSW_NLANC    =BlankNum()
WCSW_NITEN    =BlankNum()

If Seleciona3()
   Then Mensagem("Existem pedidos em aberto para esta pessoa !")
        Verpedidos()
Endif        
Moveto "FaturaC"
Moveto [Codigo]

Release Procs SD_Consulta3, Seleciona3, verpedidos, Mostra_Itens
Release Vars Array_Registro, WCSW_NLANC, VSDGDESTINAT, VSDGRAZDEST, VSDGTP, WCSW_NLANC, 
             LinhaCab1, INICIO_DIALOG2,
             Array_Registroit, WCSW_NITEN
               
