;** AltCCust *******************************************************************
;* Alteracao de Lancamentos no Centro de Custo                                 *
;*******************************************************************************
;Autor           : Vise Informatica (VISERP)
;Desenvolvido    : 09/06/2008 por Anivel Augusto Rodrigues
;Ultima Alteracao: 18/09/2016 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes showdialog                   
;Ultima Alteracao: 28/12/2016 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes showdialog     
;Ultima Alteracao: 29/12/2016 por Rafael Matos
;Motivo Alteracao: Ajustes MensagemCheckBoxes()              
;Ultima Alteracao: 14/05/2020 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes TG_CCUSTO            

;*******************************************************************************
;* Rotina p/ Selecionar Registros                                              *
;*******************************************************************************
Proc Entradas()
ClearAll

;****** Compras - Estoque ***************************************************
If IsTable("\\Sistemas\\Estoque\\"+Dir_Trab+"NotaEC") And
   IsTable("\\Sistemas\\Estoque\\"+Dir_Trab+"NotaEI")
   Then
        NR = NRecords("\\Sistemas\\Estoque\\"+Dir_Trab+"NotaEC")
        View   "\\Sistemas\\Estoque\\"+Dir_Trab+"NotaEI"
        CoEdit "\\Sistemas\\Estoque\\"+Dir_Trab+"NotaEC"
        Scan
           Barra(NR, RecNo())
           Aguarde("Aguarde, Processando Notas "+Dir_Trab+" "+BARRA_STRING)

           If Not IsBlank(VSDGEMPRESA)
              Then If [Codigo da Empresa]<>VSDGEMPRESA
                      Then Loop
                   Endif
           EndIf

           If [Data de Entrada]>VSDGDTFIM
              Then Loop
              Else If Not IsBlank(VSDGDTINI) And
                      [Data de Entrada]<VSDGDTINI
                      Then Loop
                   EndIf
           EndIf

           CopyToArray RegCab

           Moveto "\\Sistemas\\Estoque\\"+Dir_Trab+"NotaEI"
           Moveto [Numero do Lancamento]
           Locate RegCab["Numero do Lancamento"]
           If RetVal
              Then  While [Numero do Lancamento]=RegCab["Numero do Lancamento"]

                      itemok=True
                      If Not IsBlank(VSDGITEM)
                         Then If [Codigo do Item]<>VSDGITEM
                                 Then Itemok=False
                              Endif
                      EndIf
                      If [Codigo CCusto]<>VSDGCCUSTO
                         Then Itemok=False
                      EndIf

                      If Itemok
                         Then [Codigo CCusto]=VSDGCCUSTO2
                              UnLockRecord
                      EndIf

                      Skip
                      If EOT() Then QuitLoop Endif
                    EndWhile
           EndIf

           Moveto "\\Sistemas\\Estoque\\"+Dir_Trab+"NotaEC"
        EndScan
        Do_It!
        ClearAll
        LimpAguarde()

EndIf

EndProc   ; (Seleciona)

;*******************************************************************************
;* Rotina p/ Selecionar Registros                                              *
;*******************************************************************************
Proc Requisicoes()
ClearAll

;****** Consumo - Estoque ***************************************************
If IsTable("\\Sistemas\\Estoque\\"+Dir_Trab+"RqCabeca") And
   IsTable("\\Sistemas\\Estoque\\"+Dir_Trab+"RqItem")   And
   IsTable("\\Sistemas\\Estoque\\"+Dir_Trab+"RqMatPri")
   Then
        NR = NRecords("\\Sistemas\\Estoque\\"+Dir_Trab+"RqCabeca")
        View   "\\Sistemas\\Estoque\\"+Dir_Trab+"RqMatPri"
        View   "\\Sistemas\\Estoque\\"+Dir_Trab+"RqItem"
        CoEdit "\\Sistemas\\Estoque\\"+Dir_Trab+"RqCabeca"
        Scan
           Barra(NR, RecNo())
           Aguarde("Aguarde, Processando Notas "+Dir_Trab+" "+BARRA_STRING)

           If Not IsBlank(VSDGEMPRESA)
              Then If [Codigo da Empresa]<>VSDGEMPRESA
                      Then Loop
                   Endif
           EndIf

           If [Data de Ocorrencia]>VSDGDTFIM
              Then Loop
              Else If Not IsBlank(VSDGDTINI) And
                      [Data de Ocorrencia]<VSDGDTINI
                      Then Loop
                   EndIf
           EndIf

           CopyToArray RegCab

           Moveto "\\Sistemas\\Estoque\\"+Dir_Trab+"RqItem"
           Moveto [Numero do Lancamento]
           Locate RegCab["Numero do Lancamento"]
           If RetVal
              Then  While [Numero do Lancamento]=RegCab["Numero do Lancamento"]

                      itemok=True
                      If Not IsBlank(VSDGITEM)
                         Then If [Codigo do Item]<>VSDGITEM
                                 Then Itemok=False
                              Endif
                      EndIf
                      If [Codigo CCusto]<>VSDGCCUSTO
                         Then Itemok=False
                      EndIf

                      If Itemok
                         Then [Codigo CCusto]=VSDGCCUSTO2
                              UnLockRecord
                      EndIf

                      Skip
                      If EOT() Then QuitLoop Endif
                    EndWhile
           EndIf

           Moveto "\\Sistemas\\Estoque\\"+Dir_Trab+"RqMatPri"
           Moveto [Numero do Lancamento]
           Locate RegCab["Numero do Lancamento"]
           If RetVal
              Then  While [Numero do Lancamento]=RegCab["Numero do Lancamento"]

                      itemok=True
                      If Not IsBlank(VSDGITEM)
                         Then If [Codigo do Item]<>VSDGITEM
                                 Then Itemok=False
                              Endif
                      EndIf
                      If [Codigo CCusto]<>VSDGCCUSTO
                         Then Itemok=False
                      EndIf

                      If Itemok
                         Then [Codigo CCusto]=VSDGCCUSTO2
                              UnLockRecord
                      EndIf

                      Skip
                      If EOT() Then QuitLoop Endif
                    EndWhile
           EndIf

           Moveto "\\Sistemas\\Estoque\\"+Dir_Trab+"NotaEC"
        EndScan
        Do_It!
        ClearAll
        LimpAguarde()

EndIf

EndProc   ; (Seleciona)

;*******************************************************************************
;* 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_CCUSTO"        : Campo="TG_EMPRESA"
            Case Campo="TG_CCUSTO2"       : Campo="TG_CCUSTO"
            Case Campo="TG_ITEM"          : Campo="TG_CCUSTO2"
            Case Campo="TG_DTINI"         : Campo="TG_ITEM"
            Case Campo="TG_DTFIM"         : Campo="TG_DTINI"
            Case Campo="TG_OPCOES"        : Campo="TG_DTFIM"
            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_CCUSTO"
                    Case Campo="TG_CCUSTO"      :Campo="TG_CCUSTO2"
                    Case Campo="TG_CCUSTO2"     :Campo="TG_ITEM"
                    Case Campo="TG_ITEM"        :Campo="TG_DTINI"
                    Case Campo="TG_DTINI"       :Campo="TG_DTFIM"
                    Case Campo="TG_DTFIM"      : Campo="TG_OPCOES"
                    Case Campo="TG_OPCOES"     : Campo="YES"
                  EndSwitch
          EndIf
          RefreshDialog
   EndSwitch
EndIf
Switch
  Case Campo="TG_DTINI":
     MSG_CAMPO="Informe a Data Inicial"
  Case Campo="TG_DTFIM":
     MSG_CAMPO="Informe a Data Final"
  Case Campo="TG_OPCOES":
     MensagemCheckBoxes()
Endswitch
Monta_Prompt(MSG_CAMPO,TECLA)
Return Temp
EndProc
;*******************************************************************************
;* ROTINA PRINCIPAL                                                            *
;*******************************************************************************
AutoLib="\\Sistemas\\Cadastro\\Bib_Show,\\Sistemas\\Cadastro\\Bibliot"
LimpAguarde()

VSDGEMPRESA =""
VSDGCCUSTO  =""
VSDGCCUSTO2 =""
VSDGITEM    =""
VSDGDTINI   =BlankDate()
VSDGDTFIM   =BlankDate()

Array VSDGOPCAO[3]
VSDGOPCAO[3]=True

COR_MENSAGEM="1"
MSG="- Antes de efetuar esta opera‡„o de altera‡„o de dados,     //"
MSG=MSG+"  recomendamos que seja feito um backup do sistema.         //"
MSG=MSG+"- Caso a altera‡„o de dados fique errada ‚ poss¡vel retornar//"
MSG=MSG+"  aos valores anteriores com a restaura‡„o do backup.       //"
MSG=MSG+"- Recomendamos tamb‚m que durante este processo ningu‚m     //"
MSG=MSG+"  esteja usando o sistema.                                  //"
Mensagem(MSG)

While True

  ShowDialog "Altera‡„o de lan‡amentos no Centro de Custo" 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 15 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 "Atual CentroDeCusto" For "TG_CCUSTO"
    Accept @ 03,01 Width 33 "A7"  Picture "###.###" Tag "TG_CCUSTO" To VSDGCCUSTO
    Accept @ 04,01 Width 33 "A20" Picture "!*!" Tag "TG_NOMCUST"  To VSDGNOMCUST

    Label  @ 02,35 "Novo CentroDeCusto" For "TG_CCUSTO2"
    Accept @ 03,36 Width 33 "A7"  Picture "###.###" Tag "TG_CCUSTO2" To VSDGCCUSTO2
    Accept @ 04,36 Width 33 "A20" Picture "!*!" Tag "TG_NOMCUST2"  To VSDGNOMCUST2

    Label  @ 05,00 "Item"  For "TG_ITEM"
    Accept @ 06,01 Width 33 "A10" Picture "#*#" Tag "TG_ITEM"     To VSDGITEM
    Accept @ 07,01 Width 33 "A35" Picture "!*!" Tag "TG_NOMITEM" To VSDGNOMITEM

    Label  @ 08,00 "Per¡odo Referente de" For "TG_DTINI"
    Accept @ 09,03 Width 13 "D"  Picture "#[#];.##;.##[##]" Tag "TG_DTINI" To VSDGDTINI
    Label  @ 09,16 "at‚" For "TG_DTFIM"
    Accept @ 09,21 Width 13 "D"  Picture "#[#];.##;.##[##]" Tag "TG_DTFIM" To VSDGDTFIM

    Label @ 05,35 "Op‡”es de Movimentos " For "TG_OPCOES"
    CheckBoxes @ 06,35 Height 3 Width 26 Tag "TG_OPCOES"
    "Notas de Entrada    " to VSDGOPCAO[1],
    "Requisi‡”es         " to VSDGOPCAO[2],
    "Ambos               " to VSDGOPCAO[3]

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

  EndDialog
  If Not RetVal Then QuitLoop EndIf

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

  If IsBlank(VSDGCCUSTO)
     Then Mensagem("Centro de Custo Atual Invalido !")
          Loop
  EndIf
  If IsBlank(VSDGCCUSTO2)
     Then Mensagem("Centro de Custo Novo Invalido !")
          Loop
  EndIf

  AGUARDE("Aguarde, processando dados")

  Monta_Dir_Trab(VSDGDTINI,VSDGDTFIM)
  While Novo_Dir_Trab()
    If VSDGOPCAO[1]=True or VSDGOPCAO[3]=True
       Then ENTRADAS()
    EndIf
    If VSDGOPCAO[2]=True or VSDGOPCAO[3]=True
       Then REQUISICOES()
    EndIf
  EndWhile
  LimpAguarde()

  Mensagem("Fim do processo!")
EndWhile
ClearAll
Release Vars All
Release Procs All
