;** InfCarg  *******************************************************************
;*  Informa Numero_Carregamento p/ Notas Emitidas                              *
;*******************************************************************************
;Autor           : Vise Informatica (VISERP)
;Desenvolvido    : 30/01/2006 por Anivel Augusto Rodrigues
;Ultima Alteracao: 14/12/2016 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes showdialog                   
;Alterado em     : 17/08/2018 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes dupnf codigo do documento,Tipo do Documento

;*******************************************************************************
;* Rotina p/ selecao de registros                                              *
;*******************************************************************************
Proc Seleciona()
AGUARDE("Aguarde, Selecionado Duplicatas")
ClearAll

{Ask} {NotaC} Check
Moveto [Codigo da Empresa      ] TypeIn "~VSDGEMPRESA.."
Moveto [Data de Emissao        ] TypeIn ">=~VSDGDTINI,<=~VSDGDTFIM"
Moveto [Situacao               ] TypeIn "Not C"
Moveto [Codigo do Representante] TypeIn "~VSDGREPRESEN.."
Do_It!
ClearAll

If Not IsEmpty("Answer")
   Then {Tools} {Copy} {JustFamily} TypeIn "\\BASE\\Sistemas\\Vendas\\NotaC" Enter TypeIn "Answer" Enter {Replace}
EndIf

EndProc

;*******************************************************************************
;* Seleciona Registros para Atualizacao                                        *
;*******************************************************************************
Proc SELECIONAI()
Edit "Answer"
SetHighLight Current Record 23 Field 31
{Image} {KeepSet}
Do_It!

View "NotaC"
CoEdit "Answer"
PickForm "8"
While True
  CHAVE()
  If CHAVEC=9
     Then QuitLoop
  EndIf
EndWhile
Do_It!
ClearAll
EndProc

;*******************************************************************************
;* Rotina para Controlar Chave da Nota Fiscal                                  *
;*******************************************************************************
Proc CHAVE()

While True
  Moveto "Answer"
  End
  Moveto [Codigo da Empresa]
  Down

  While True

    Prompt " Esc=Sair  F7=Paginar  F8=Atualizar"

    Wait Field
         Until "ESC","ENTER","F7","HOME","UP","PGUP","F8"

    Switch
    Case RetVal="F8":
         CONFGERAL("Confirma atualizar Numero Carregamento "+VSDGNCARREG+" p/ estas Notas ?")
         If OK="S"
            Then AtualizaCarreg()
                 CHAVEC=9
                 Do_It!
                 ClearAll
                 Return
         Endif
    Case RetVal="F7" Or RetVal="UP" Or RetVal="PGUP" Or RetVal="HOME" And Field()="Codigo da Empresa":
         While True
           PAGINA("Answer","MR")
           If EDITAR="S"
              Then CHAVEC=0
                   QuitLoop
              Else If EXCLUIR="S"
                      Then CONFIRMA()
                           If OK="S"
                              Then DEL
                              Else UnLockRecord
                           EndIf
                      Else QuitLoop
                   EndIf
           EndIf
         EndWhile
         CHAVEC=5
         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]
                       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
                       Moveto [Codigo da Empresa]
                       Locate EMPRESA,NUMDOC,SERIE
                       If Retval
                          Then CHAVEC=0
                               Echo Normal
                               Echo Off
                               Mensagem("Nota j  relacionada !")
                          Else CHAVEC=0

                               FormKey
                               Moveto "NotaC"
                               Moveto [Codigo da Empresa]
                               Locate EMPRESA,NUMDOC,SERIE
                               If Not RetVal
                                  Then Mensagem("Nota n„o encontrada !")
                                  Else CopyToArray REGNOTA
                                       CHAVEC=1
                               EndIf
                               Moveto "Answer"
                               FormKey
                               If CHAVEC=1
                                  Then End Down
                                       CopyFromArray REGNOTA
                                       UnLockRecord
                               EndIf
                       EndIf
                       QuitLoop
             EndSwitch
        EndSwitch
  EndWhile
EndWhile
EndProc   ; (ChaveC)

;*******************************************************************************
;* Rotina p/ Atualizacao de duplicatas emitidas                                *
;*******************************************************************************
Proc AtualizaCarreg()
AGUARDE("Aguarde, Atualizando Notas Emitidas")
Do_It!
ClearAll

View "\\Sistemas\\Ctarec\\Duplic"
View "DupI"
View "DupNF"
View "NotaC"
Coedit "Answer"
Scan
  Moveto "NotaC"
  Moveto [Codigo da Empresa]
  Locate [Answer->Codigo da Empresa],
         [Answer->Numero do Documento],
         [Answer->Serie do Documento]
  If RetVal
     Then [Numero_Carregamento]=VSDGNCARREG
          UnLockRecord

          If SubStr([NotaC->Codigo do Documento],1,2)="NF"
             Then DP_CDDOCTO="DUP"
                  DP_SRDOCTO=""
             Else DP_CDDOCTO=[NotaC->Codigo do Documento]
                  DP_SRDOCTO=[NotaC->Serie do Documento ]
          EndIf


          NF_EXISTE=False
          Moveto "DupNF"
          Moveto [Numero da Nota]
          Locate IndexOrder by "idupnf10" [NotaC->Numero do Documento],[NotaC->Serie do Documento],[NotaC->Codigo da Empresa],[NotaC->Codigo do Documento]
          If RetVal
             Then NF_EXISTE=True
                  DP_NUMDOCTO=[Numero do Documento]
                  DP_SRDOCTO =[Serie do Documento ]
          EndIf

          If NF_EXISTE
             Then Moveto "DupI"
                  Moveto [Codigo da Empresa]
                  Locate [NotaC->Codigo da Empresa], DP_NUMDOCTO, DP_SRDOCTO
                  If RetVal
                     Then While [Codigo da Empresa  ]=[NotaC->Codigo da Empresa  ] and
                                [Numero do Documento]=DP_NUMDOCTO and
                                [Serie do Documento ]=DP_SRDOCTO

                            CHV_EMPRESA=[DupI->Codigo da Empresa]
                            CHV_TPDOCTO=DP_CDDOCTO
                            If [DupI->Ordem do Documento]<>""
                               Then CHV_NUMERO_ORDEM=[DupI->Numero do Documento]+"/"+[DupI->Ordem do Documento]
                               Else CHV_NUMERO_ORDEM=[DupI->Numero do Documento]
                            EndIf

                            Moveto "\\Sistemas\\CtaRec\\Duplic"
                            Moveto [Codigo da Empresa]
                            Locate IndexOrder by "IndDup1" CHV_EMPRESA,CHV_TPDOCTO,CHV_NUMERO_ORDEM
                            If RetVal
                               Then [Numero_Carregamento_Orig]=VSDGNCARREG
                                    UnLockRecord
                            EndIf

                            Moveto "DupI"
                            Skip
                            If EOT() Then QuitLoop EndIf
                          EndWhile
                  EndIf
          EndIf
  EndIf

  Moveto "Answer"
EndScan
Do_It!
ClearAll

Mensagem("Atualiza‡„o concluida !")
LIMPAGUARDE()
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_REPRESEN"      : Campo="TG_EMPRESA"
            Case Campo="TG_NCARREG"       : Campo="TG_REPRESEN"
            Case Campo="TG_DTINI"         : Campo="TG_NCARREG"
            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 IsBlank(VSDGEMPRESA)
                            Then VSDGNOMEMP=""
                            Else Campo="TG_REPRESEN"
                         EndIf
                    Case Campo="TG_REPRESEN": Campo="TG_NCARREG"
                    Case Campo="TG_NCARREG" : Campo="TG_DTINI"
                    Case Campo="TG_DTINI"   :
                         If Not IsBlank(VSDGDTINI)
                            Then Campo="TG_DTFIM"
                         EndIf
                    Case Campo="TG_DTFIM"   :Campo="YES"
                  EndSwitch
          EndIf
          RefreshDialog
   EndSwitch
EndIf
Switch
  Case Campo="TG_EMPRESA":
     MSG_CAMPO="Informe uma Empresa"
  Case Campo="TG_DTINI":
     MSG_CAMPO="Informe a Data Inicial"
Endswitch
Monta_Prompt(MSG_CAMPO,TECLA)
Return Temp
EndProc

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

VSDGEMPRESA =""
VSDGREPRESEN=""
VSDGDTINI   =BlankDate()
VSDGDTFIM   =BlankDate()
VSDGNCARREG =""

While True

  ShowDialog "Rela‡Æo de Notas para Carregamento" 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 13 Width 56

    Label  @ 00,02 "Empresa"  For "TG_EMPRESA"
    Accept @ 01,03 Width 07 "A4"  Picture "[&,#][#*#]" Tag "TG_EMPRESA"    To VSDGEMPRESA
    Accept @ 01,11 Width 23 "A20" Picture "!*!" Tag "TG_NOMEMPRESA" To VSDGNOMEMP

    Label  @ 02,00 "Representante"  For "TG_REPRESEN"
    Accept @ 3,03 Width 07 "A4"  Picture "[&,#][#*#]" Tag "TG_REPRESEN" To VSDGREPRESEN
    Accept @ 3,12 Width 23 "A20" Picture "!*!" Tag "TG_NOMREPR"  To VSDGNOMREPR

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

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

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

  EndDialog
  If Not RetVal Then QuitLoop EndIf

  If IsBlank(VSDGEMPRESA)
     Then Mensagem("Empresa Invalida !")
          Loop
  EndIf
  If IsBlank(VSDGDTINI)
     Then Mensagem("Data Inicial Invalida !")
          Loop
  EndIf
  If IsBlank(VSDGDTFIM)
     Then Mensagem("Data Final Invalida !")
          Loop
  EndIf
  If IsBlank(VSDGNCARREG)
     Then Mensagem("Numero Carregamento Invalido !")
          Loop
  EndIf

  Seleciona()
  If IsEmpty("Answer")
     Then MENSAGEM("N„o Existem Notas Emitidas !")
          Loop
  EndIf
  SelecionaI()
  Echo Normal
  Echo Off

  ClearAll
  Delete "Answer"

EndWhile
ClearAll
Release Vars All
Release Procs All

