;** ExpCtPag *******************************************************************
;*  Exportacao de Notas de Entrada p/ o Contas a Pagar                         *
;*******************************************************************************
;Autor           : Vise Informatica (VISERP)
;Desenvolvido    : 15/07/1998 por Anivel Augusto Rodrigues
;Ultima Alteracao: 27/05/2003 por Karen Lauar Nery
;Motivo Alteracao: Mudanca - Barra
;Ultima Alteracao: 05/04/2009 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes Conta<>Empresa     
;Ultima Alteracao: 27/05/2016 por Bruno Carvalho 
;Motivo Alteracao: Adaptado processo para gera‡Ćo do [Numero do Lancamento] "Interno"
;Ultima Alteracao: 16/03/2019 por Anivel Augusto Rodrigues                           
;Motivo Alteracao: Ajustes Numero_Lancamento("Interno","Locked_Down")

;*******************************************************************************
;* Rotina de Impressao de Duplicatas                                           *
;*******************************************************************************
Proc AtuaPag()
AGUARDE("Aguarde, Atualizando Notas")
ClearAll

{Ask} {NotaC} Check
Moveto [Codigo da Empresa     ] Example "emp" TypeIn ", ~VSDGEMPRESA.."
Moveto [Numero do Documento   ] Example "doc"
Moveto [Serie do Documento    ] Example "ser"
Moveto [Data de Emissao       ] TypeIn ">=~VSDGDTINI, <=~VSDGDTFIM"
Moveto [Tipo Movimento Estoque] TypeIn "E"
Moveto [Tipo de Pagamento     ] TypeIn "P"
Moveto [Situacao              ] TypeIn "Not C"
{Ask} {NotaV}
Moveto [Codigo da Empresa  ] Example "emp"
Moveto [Numero do Documento] Example "doc"
Moveto [Serie do Documento ] Example "ser"
Moveto [Data               ] Check
Moveto [Valor              ] Check
Do_It!
ClearAll
If IsEmpty("Answer")
   Then Return
EndIf

View "\\Sistemas\\Cadastro\\Feriados"
View "\\Sistemas\\CtaPag\\Titulos"
NR = NRecords("Answer")

CoEdit "Answer"
WC=0
WE=0
Scan

  Barra(NR, RecNo())
  Aguarde("Aguarde, Atualizando "+BARRA_STRING)

  Moveto "\\Sistemas\\CtaPag\\Titulos"
  CHV_EMPRESA     =[Answer->Codigo da Empresa]
  CHV_TPDOCTO     =[Answer->Tipo do Documento]
  CHV_NUMERO_ORDEM=[Answer->Numero do Documento]

  Moveto [Codigo da Empresa]
  Locate IndexOrder by "IndTit1" CHV_EMPRESA,CHV_TPDOCTO,CHV_NUMERO_ORDEM
  If RetVal
     Then MENSAGEM("Nota j  Exportada, N§ Nota "+[Answer->Codigo da Empresa]+"/"+[Answer->Numero do Documento])
          Moveto "Answer"
          Loop
  EndIf

  While True
    End
    Moveto [Numero do Lancamento]
    If Numero_Lancamento("Interno","Locked_Down")
       Then NLANC = PROXLANCTO_NLANC
            Release Vars PROXLANCTO_NLANC
            quitloop
    EndIf    
  EndWhile


 ;While True
 ;  End    
 ;  Moveto [Numero do Lancamento]
 ;  If Numero_Lancamento("Interno","")
 ;     Then NLANC = PROXLANCTO_NLANC
 ;          Release Vars PROXLANCTO_NLANC
 ;  EndIf
 ;  Locate NLANC
 ;  If Retval
 ;     Then Loop
 ;     Else End Down
 ;          [Numero do Lancamento ]=NLANC
 ;          LockRecord
 ;          If Not RetVal
 ;             Then Loop
 ;          EndIf
 ;  EndIf
 ;  QuitLoop
 ;EndWhile

  [Nome Fantasia Empresa   ]=[Answer->Nome Fantasia Empresa   ]
  [Codigo do Documento     ]=[Answer->Codigo do Documento     ]
  [Numero do Documento     ]=[Answer->Numero do Documento     ]
  [Tipo do Lancamento      ]="N"

  [Codigo do Emitente      ]=[Answer->Codigo                  ]
  [Data de Entrada         ]=[Answer->Data de Emissao         ]
  [Data de Emissao         ]=[Answer->Data de Emissao         ]
  [Data de Vencimento      ]=[Answer->Data                    ]
  [Data a Pagar            ]=[Answer->Data                    ]
  While True
        NDIAS=0
        If Dow([Data a Pagar])="Sat"
           Then NDIAS=2
           Else If Dow([Data a Pagar])="Sun"
                   Then NDIAS=1
                EndIf
        EndIf
        DIA = [Data a Pagar]
        Moveto "\\Sistemas\\Cadastro\\Feriados"
        Moveto [Data do Feriado]
        Locate DIA
        If Retval
           Then If [Dias a Receber]>0
                   Then NDIAS=[Dias a Receber]
                EndIf
                UnLockRecord
        EndIf
        Moveto "\\Sistemas\\CtaPag\\Titulos"
        [Data a Pagar]=[Data a Pagar]+NDIAS
        If NDIAS=0
           Then QuitLoop
        EndIf
  EndWhile
  [Valor do Documento      ]=[Answer->Valor Nota Fiscal     ]
  [Saldo do Documento      ]=[Answer->Valor Nota Fiscal     ]
  [Tipo do Pagamento       ]="DN"
  [Codigo da Conta         ]=VSDGCONTA
  [Codigo da Empresa       ]=[Answer->Codigo da Empresa     ]

  UnLockRecord
  Moveto "Answer"
EndScan
Do_It!
ClearAll

EndProc

;*******************************************************************************
;* Rotina                                                                      *
;*******************************************************************************
Proc SD_Dialog(Disparo,Campo,Evento,Elemento)
Temp=True
TECLA    =""
MSG_CAMPO=""

If Disparo="OPEN"  Then AoCriarShowDialog() EndIf
If Disparo="EVENT" And Evento["Type"]="KEY" Then
   Switch
     Case Evento["KeyCode"] = -59: Dialog_F1()
     Case Evento["KeyCode"] =  27:
          Temp=False
          Switch
            Case Campo="TG_EMPRESA"       : Campo="NO"
            Case Campo="TG_CONTA"         : Campo="TG_EMPRESA"
            Case Campo="TG_DTINI"         : Campo="TG_CONTA"
            Case Campo="TG_DTFIM"         : Campo="TG_DTINI"
            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"    :
                         If Not IsBlank(VSDGEMPRESA)
                            Then Campo="TG_CONTA"
                            Else VSDGNOMEMP=""
                         EndIf
                    Case Campo="TG_CONTA"      :
                         If Not IsBlank(VSDGCONTA)
                            Then Campo="TG_DTINI"
                            Else VSDGNOMCONTA=""
                         EndIf
                    Case Campo="TG_DTINI"      :
                         If Not IsBlank(VSDGDTINI)
                            Then Campo="TG_DTFIM"
                         EndIf
                    Case Campo="TG_DTFIM"      :
                         If Not IsBlank(VSDGDTFIM)
                            Then Campo= "YES"
                         EndIf
                  EndSwitch
          EndIf
          RefreshDialog
   EndSwitch
EndIf
Switch
  Case Campo="TG_EMPRESA":
       MSG_CAMPO="Informe o C˘digo da Empresa"
  Case Campo="TG_CONTA":
       MSG_CAMPO="Informe o C˘digo da Conta"
  Case Campo="TG_DTINI":
       MSG_CAMPO="Informe a Data Inicial"
  Case Campo="TG_DTFIM":
       MSG_CAMPO="Informe a Data Final"
EndSwitch
Monta_Prompt(MSG_CAMPO,TECLA)
Return Temp
EndProc

;*******************************************************************************
;* ROTINA PRINCIPAL                                                            *
;*******************************************************************************
AutoLib="\\Sistemas\\Cadastro\\Bib_Show,\\Sistemas\\Cadastro\\Bibliot"
LimpAguarde()

VSDGEMPRESA  = ""
VSDGNOMEMP   = ""
VSDGCONTA    = ""
VSDGNOMCONTA = ""
VSDGDTINI    = BlankDate()
VSDGDTFIM    = BlankDate()

While True
  ShowDialog "Exporta‡„o de NE's p/ o Contas a Pagar" Proc "SD_Dialog"
  Trigger "OPEN","ARRIVE"
  Key "F1","ENTER","ESC",
      -104, -105, -106, -107, -108, -109, -110, -111, -112, -113, -139, -140  
   @ 05,12   Height 11 Width 56
    Label  @ 00,00 "Empresa"  For "TG_EMPRESA"
    Accept @ 1,01 Width 07 "A4"  Picture "[&,#][#*#]" Tag "TG_EMPRESA" To VSDGEMPRESA
    Accept @ 1,09 Width 23 "A20" Picture "!*!" Tag "TG_NOMEMP" To VSDGNOMEMP

    Label  @ 02,00 "Conta"  For "TG_CONTA"
    Accept @ 03,01 Width 07 "A4"  Picture "#*#" Tag "TG_CONTA" To VSDGCONTA
    Accept @ 03,09 Width 33 "A30" Picture "!*!" Tag "TG_NOMCONT" To VSDGNOMCONTA

    Label  @ 04,00 "Perˇodo Referente" For "TG_DTINI"
    Label  @ 05,00 "de" For "TG_DTINI"
    Accept @ 05,04 Width 13 "D"  Picture "#[#];.##;.##[##]" Tag "TG_DTINI" To VSDGDTINI
    Label  @ 05,17 "at‚" For "TG_DTFIM"
    Accept @ 05,22 Width 13 "D"  Picture "#[#];.##;.##[##]" Tag "TG_DTFIM" To VSDGDTFIM

    Pushbutton @ 07,14 width 11 "~O~k"      OK     Default Value "Ok" Tag "YES" To BottonValue
    Pushbutton @ 07,28 width 11 "~C~ancela" CANCEL                    Tag "NO"  To BottonValue

  EndDialog
  If Not RetVal Then QuitLoop EndIf

  If VSDGDTINI=BlankDate()
     Then Mensagem("Data Inicial Invalida !")
          Loop
  EndIf
  If VSDGDTFIM=BlankDate()
     Then Mensagem("Data Final Invalida !")
          Loop
  EndIf

  Confirma()
  If OK="N" Then Loop EndIf

  AtuaPag()

  LimpAguarde()

  If IsEmpty("Answer")
     Then MENSAGEM("N„o existem registros a processar !")
          Loop
  EndIf

  Mensagem("Fim de Opera‡„o !")

  If IsTable("Answer")
     Then Delete "Answer"
  EndIf

EndWhile
ClearAll
Release Vars All
Release Procs All
