;** BxEntreg *******************************************************************
;*  Digitacao de Nota Fiscal                                                   *
;*******************************************************************************
;Autor           : Vise Informatica (VISERP)
;Desenvolvido  em: 27/01/2003 por Douglas Rodrigues
;Alterado      em: 11/04/2003 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes
;Ultima Alteracao: 30/12/2010 por Bruno Carvalho
;Motivo Alteracao: Ajustes Novo Layout de Teclas
;Ultima Alteracao: 09/12/2016 por Anivel Augusto Rodrigues
;Motivo Alteracao: Inclusao GetP_Balcao()

;*******************************************************************************
;* Rotina para Controlar Chave da Nota Fiscal                                  *
;*******************************************************************************
Proc CHAVEC()
While True
  Moveto "Notac"
  End
  Moveto [Codigo da Empresa]
  
  If OPCAO_FORM="F"
     Then Down
     Else PgDn
  EndIf
  Moveto [Codigo da Empresa]
  [Codigo da Empresa       ]=PARAM_EMPRESA
  While True

  MSGCAMPO=Field()

  If Field()="Codigo do Documento" Or
     Field()="Codigo da Empresa"
     Then TECLA="F1=Tabelas"
     Else TECLA=""
  Endif

  AguardaTeclasPadrao()

  Switch
        Case RetVal=-33 : SemFuncoes()
        Case RetVal=-94 : MsgTeclasPadrao()
        Case RetVal="F1":
             If Field()="Codigo do Documento" Or
                Field()="Codigo da Empresa"
                Then CONSULTAF1()
             Endif
        Case RetVal="F3":
             If OPCAO_FORM="F"
                Then OPCAO_FORM="7"
                Else OPCAO_FORM="F"
             EndIf
             Del
             CHAVEC=5
             Return

        Case RetVal="F7" Or RetVal="UP" Or RetVal="PGUP" Or RetVal="HOME":
           While True
             If OPCAO_FORM="F"
                Then PAGINA("NotaC","MR")
                Else PAGINA("NotaC","MT")
             EndIf
             CHAVEC=0
             EMPRESA=[Codigo da Empresa  ]
             NUMDOC =[Numero do Documento]
             SERIE  =[Serie do Documento ]
             If EDITAR="S"
                Then EMPRESA=[Codigo da Empresa]
                     If Not Carrega_Parametros()
                        Then Loop
                     EndIf
                     If PARAM_ENTREGA="N"
                        Then Mensagem("Parametro no Balcao n„o Configurado p/ Entrega de Mercadoria !")
                             Loop
                     EndIf
                     If OPCAO_FORM="F"
                        Then PickForm "7"
                     EndIf
                     Return
                Else If EXCLUIR="S"
                        Then Mensagem("Opera‡„o Invalida !")
                        Else QuitLoop
                     EndIf
             EndIf
          EndWhile
          QuitLoop
        Case Retval="ESC":
             If Field()="Codigo da Empresa"
                Then CHAVEC=9
                     Del
                     Return
                Else Left
             EndIf
        Case Retval="ENTER":
             If IsBlank([]) Then Loop EndIf
             Switch
                  Case Field()="Codigo da Empresa":
                       EMPRESA=[Codigo da Empresa]
                       If Not Carrega_Parametros()
                          Then Loop
                       EndIf
                       If PARAM_ENTREGA="N"
                          Then Mensagem("Parametro no Balcao n„o Configurado p/ Entrega de Mercadoria !")
                               Loop
                       EndIf
                       Moveto [Numero do Documento]
                  Case Field()="Numero do Documento":
                       []=ALINH()
                       NUMDOC=[Numero do Documento]
                       Moveto [Codigo do Documento]
                  Case Field()="Codigo do Documento":
                       SERIE =[Serie do Documento]
                       CODDOC=[Codigo do Documento]
                       Del
                       If OPCAO_FORM="F"
                          Then PickForm "7"
                       EndIf
                       Moveto [Codigo da Empresa]
                       Locate EMPRESA,NUMDOC,SERIE
                       If Retval
                          Then CHAVEC=0
                          Else Mensagem("Nota n„o Encontrada !")
                       EndIf
                       If IsLockRecord()
                          Then If OPCAO_FORM="F"
                                  Then PickForm "F"
                               EndIf
                               QuitLoop
                       EndIf
                       Return
             EndSwitch
        EndSwitch
  EndWhile
EndWhile
EndProc   ; (ChaveC)

;*******************************************************************************
;* Rotina para Localizar Item                                                  *
;*******************************************************************************
Proc CHAVEI()
Moveto "NotaI"

While True

  Moveto [Item do Documento]
  End
  NITEM = [Item do Documento]
  Down
  Moveto [Item do Documento]

  While True

    TECLA= " Esc=Retornar  F7=Paginar  F4=Baixa Automatica  PgDn=Finalizar"

    Prompt TECLA

    Wait Field
         Until "ESC","ENTER","F3","F7","HOME","UP","PGDN","F4"

    Switch
    Case Retval="PGDN":
         Del
         CHAVEI=9
         Return
    Case Retval="PGUP" Or RetVal="ESC":
         Del
         CHAVEI=9
         Return
    Case RetVal="F4":
         Baixa()
         QuitLoop
    Case RetVal="F7" Or RetVal="UP" Or RetVal="PGUP" Or RetVal="HOME":
         PAGINA("NotaI","MR")
         If EDITAR="S"
            Then CHAVEI=0
                 SEQIT=[Item do Documento]
                 Return
            Else If EXCLUIR="S"
                    Then Mensagem("Opera‡„o Invalida !")
                          Loop
                 EndIf
                 QuitLoop
         EndIf
    Case Retval="ENTER":
         If IsBlank([]) Then Loop EndIf
         SEQIT=[]
         Del
         Locate EMPRESA,NUMDOC,SERIE,SEQIT
         If Retval
            Then CHAVEI=0
                 SEQIT=[]
                 Else Mensagem("Item n„o Encontrado !")
                      Loop
         EndIf
         Return
    EndSwitch
  EndWhile
EndWhile
EndProc   ; (ChaveI)

;*******************************************************************************
;* Rotina para Digitacao das Informacoes                                       *
;*******************************************************************************
Proc DIGITAI()

Moveto [Data de Entrega]
While True

      TECLA=" Esc=Retornar  "


      Prompt TECLA

      Wait Field
           Until "F1","ESC","ENTER","DEL","FIELDVIEW","F35"

      Switch
      Case Retval="FIELDVIEW" or Retval="F35":
           EDITFIELD()
      Case Retval="ESC":
           Switch
           Case Field()="Data de Entrega":
                CHAVE=9
           OtherWise:
                Left
           EndSwitch
      Case Retval="ENTER":
           Switch
           Case Field()="Data de Entrega":
                If IsBlank([])
                   Then [Entrega]="N"
                        QuitLoop
                EndIf
                If [Data de Entrega]<[Data a Entregar] Or
                   [Data de Entrega]<[NotaC->Data de Emissao]
                   Then MSG="SR.USUARIO////"
                        MSG=MSG+"Data de Entrega Menor que Data a Entregar !//"
                        MSG=MSG+"Data a Entregar: "+StrVal([Data a Entregar])
                        Mensagem(MSG)
                EndIf
                [Entrega]="S"
                QuitLoop
           OtherWise:
               Right
           EndSwitch
      Case Retval="DEL":
           Mensagem("Op‡„o Invalida !")
      EndSwitch
EndWhile
EndProc ; (DigitaI)

;*******************************************************************************
;* 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_DTREF"         : Campo="NO"
            Case Campo="YES" Or Campo="NO": Campo="TG_DTREF"
          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_DTREF" :
                         If VSDGDTREF<[NotaC->Data de Emissao]
                            Then Mensagem("Data Informada menor que a Data de Emiss„o")
                            Else Campo="YES"
                         EndIf
                  EndSwitch
          EndIf
          RefreshDialog
   EndSwitch
EndIf
Monta_Prompt(MSG_CAMPO,TECLA)
Return Temp
EndProc ; (SD_Dialog)

;*******************************************************************************
;* Rotina para conferir entrega dos itens                                      *
;*******************************************************************************
Proc Baixa()
VSDGDTREF=BlankDate()

ShowDialog "Baixa Automatica" Proc "SD_Dialog"
Trigger "OPEN","ARRIVE"
Key "F1","ENTER","ESC","TAB",
    -104, -105, -106, -107, -108, -109, -110, -111, -112, -113, -139, -140
 @ 06,12   Height 08 Width 27

  Label  @ 01,05 "Data da Baixa" For "TG_DTREF"
  Accept @ 02,06 Width 13 "D"  Picture "#[#];.##;.##[##]" Tag "TG_DTREF" To VSDGDTREF

  Pushbutton @ 04,01 width 11 "~O~k"      OK     Default Value "Ok" Tag "YES" To BottonValue
  Pushbutton @ 04,13 width 11 "~C~ancela" CANCEL                    Tag "NO"  To BottonValue

EndDialog
If Not RetVal
   Then Return False
   Else If IsBlank(VSDGDTREF)
           Then Mensagem("Data da Baixa Invalida!")
                Return False
        EndIf
        Scan
          If [Entrega]="S"
             Then Loop
          EndIf
          If [Data de Entrega]<[Data a Entregar]
             Then MSG="SR.USUARIO////"
                  MSG=MSG+"Data de Entrega Menor que Data a Entregar !//"
                  MSG=MSG+"Data a Entregar: "+StrVal([Data a Entregar])
                  Mensagem(MSG)
          EndIf
          [Entrega        ]="S"
          [Data de Entrega]=VSDGDTREF
        EndScan
        Return True
EndIf
EndProc ; (Baixa)

;*******************************************************************************
;* Rotina para conferir entrega dos itens                                      *
;*******************************************************************************
Proc Checa_Entrega()
Moveto "NotaI"
Scan
  If [Entrega]="N"
     Then Return False
  EndIf
EndScan
Return True
EndProc ; (Checa_Entrega)

;*******************************************************************************
;* Rotina para Carregar Parametros                                             *
;*******************************************************************************
Proc Carrega_Parametros()

If not GetP_Balcao([NotaC->Codigo da Empresa])
   then Return False
EndIf

return true
EndProc ; (Carrega_Parametros)

;*******************************************************************************
;* Rotina Principal Nota Fiscal                                                *
;*******************************************************************************
AutoLib="\\Sistemas\\Cadastro\\Bibliot,"+
        "\\Sistemas\\Cadastro\\Bib_Show,"+
        "\\Sistemas\\Cadastro\\Bib_Parm"

sys_valor()

If Not IsAssigned(SYS_EMPRESA_DEFAULT) Then SYS_EMPRESA_DEFAULT="" EndIf

PARAM_EMPRESA=SYS_EMPRESA_DEFAULT
PARAM_CONSIGNACAO="N"

CoEdit "NotaI","NotaC"
PickForm "F"
OPCAO_FORM="F"

While True
  CHAVEC()
  If CHAVEC=9 Then QuitLoop EndIf
  If CHAVEC=5
     Then If OPCAO_FORM="F"
             Then PickForm "F"
             Else PickForm "7"
          EndIf
          Loop
  EndIf
  While True
    CHAVEI()
    If CHAVEI=9 Then QuitLoop EndIf
    DIGITAI()
    If Checa_Entrega()
       Then Moveto "NotaC"
            [Entrega]="S"
            Moveto "NotaI"
    EndIf
  EndWhile
  Moveto "Notac"
  If OPCAO_FORM="F"
     Then PickForm "F"
  EndIf
EndWhile
Do_It!
ClearAll
Release Vars All
Release Procs All

