;** FT_INSIT *******************************************************************
;*  Insere Especial: Insere itens a partir de um filtro                        *
;*******************************************************************************
;Autor           : Vise Informatica (VISERP)
;Desenvolvido    : 26/07/2019 por Bruno Carvalho
;Ultima Alteracao:   /  /     por
;Motivo Alteracao: 


;*******************************************************************************
;* ROTINA TROCA DADDOS                                                         *
;*******************************************************************************
Proc Relacao_InsereFiltro()

{Ask} {Itens} Check
Moveto [Codigo da Familia] TypeIn "~VSDGFAMI.."
Moveto [Codigo do Grupo  ] TypeIn "~VSDGGRP.."
Moveto [Codigo da Marca  ] TypeIn "~VSDGMARCA.."
Do_it!
ClearAll

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

TabelaItem=Cria_Temp(PrivDir())
Create TabelaItem Like "\\Base\\Sistemas\\Estoque\\Itens"
Add "Answer" TabelaItem
CopyForm "\\Base\\Sistemas\\Estoque\\Itens" "10" TabelaItem "10"
ClearAll

CoEdit TabelaItem
Editar_InsereFiltro()

If Not ABORTA_PROCESSO
   Then MSG =       Completa("INSERE ESPECIAL ",70," ")+"////"
        MSG = MSG + Completa("Os itens desta rela‡Æo serÆo inseridos no cadastro do item a partir do",70," ")+"//"
        MSG = MSG + Completa("ultimo c¢digo sequencial.",70," ")+"////"
        
        If (Not Isblank(VSDGFAMI)  And Not Isblank(VSDGFAMI2))  Or
           (Not Isblank(VSDGGRP)   And Not Isblank(VSDGGRP2))   Or
           (Not Isblank(VSDGMARCA) And Not Isblank(VSDGMARCA2)) Or Not IsBlank(VSDGADDDESC)
           Then MSG = MSG + Completa("AJUSTES QUE SERÇO APLICADOS NESTES ITENS A SEREM INCLUIDOS: ",70," ")+"//"
        EndIf
        
        If Not IsBlank(VSDGADDDESC) 
           Then If Rtrim(VSDGADDDESC)="RL" And SYS_CODIGO_CLIENTE="0377" 
                   Then MSG = MSG + Completa("- Descri‡Æo do item, ap¢s a palavra DISCO ser  adicionado o texto "+VSDGADDDESC,70," ")+"//"
                   Else MSG = MSG + Completa("- Descri‡Æo do item ser  adicionado o texto "+VSDGADDDESC,70," ")+"//"
                EndIf   
        EndIf
        
        If Not Isblank(VSDGFAMI)  And Not Isblank(VSDGFAMI2)  Then MSG = MSG + Completa("- Substitui‡Æo da fam¡lia atual "+VSDGFAMI+" -> "+VSDGFAMI2,70," ")+"//" EndIf 
        If Not Isblank(VSDGGRP)   And Not Isblank(VSDGGRP2)   Then MSG = MSG + Completa("- Substitui‡Æo do grupo atual "+VSDGGRP+" -> "+VSDGGRP2,70," ")+"//"     EndIf
        If Not Isblank(VSDGMARCA) And Not Isblank(VSDGMARCA2) Then MSG = MSG + Completa("- Substitui‡Æo da marca atual "+VSDGMARCA+" -> "+VSDGMARCA2,70," ")+"//" EndIf
        If Isblank(VSDGFAMI)  And Not Isblank(VSDGFAMI2)      Then MSG = MSG + Completa("- Adi‡Æo da fam¡lia "+VSDGFAMI2,70," ")+"//" EndIf 
        If Isblank(VSDGGRP)   And Not Isblank(VSDGGRP2)       Then MSG = MSG + Completa("- Adi‡Æo do grupo "+VSDGGRP2,70," ")+"//"    EndIf 
        If Isblank(VSDGMARCA) And Not Isblank(VSDGMARCA2)     Then MSG = MSG + Completa("- Adi‡Æo da marca "+VSDGMARCA2,70," ")+"//"  EndIf 
         
        MSG = MSG + Completa("Deseja continuar com a inclusÆo deste itens?",70," ")
        CONFGERAL(MSG)
        If OK="S"
           Then Atualizar_InsereEspecial()
        EndIf
EndIf
Return True   

EndProc ;Relacao_InsereFiltro()

;*******************************************************************************
;* Rotina para Atualizar Dados                                                 *
;*******************************************************************************
Proc Atualizar_InsereEspecial()
Private COD_ITEM

View "Iten_Com"
View "Iten_Eco"
View "Iten_Tec"
View "Itens"
End
COD_ITEM = [Codigo do Item]

Coedit TabelaItem
Scan
   Barra(NRecords(TabelaItem), RecNo())
   Aguarde("Aguarde, atualizando "+BARRA_STRING)

   COD_ITEM_ORIGINAL = [Codigo do Item] 
   COD_ITEM          = NumVal(COD_ITEM) + 1
   CopyToArray REG_ITEM
   
   REG_ITEM["Codigo do Item"] = AlinhM(StrVal(COD_ITEM),10)
   If Not IsBlank(VSDGADDDESC) 
      Then If Rtrim(VSDGADDDESC)="RL" And SYS_CODIGO_CLIENTE="0377"
              Then PosI=Search("DISCO",REG_ITEM["Descricao do Item"])
                   If PosI>0
                      Then REG_ITEM["Descricao do Item"] = SubStr(REG_ITEM["Descricao do Item"],1,PosI+5) + VSDGADDDESC +
                                                           SubStr(REG_ITEM["Descricao do Item"],PosI+5,Len(REG_ITEM["Descricao do Item"]))
                   EndIf
              Else REG_ITEM["Descricao do Item"] = REG_ITEM["Descricao do Item"] + " " + VSDGADDDESC
           EndIf 
   EndIf 
   If Not Isblank(VSDGFAMI2)   Then REG_ITEM["Codigo da Familia"] = VSDGFAMI2 EndIf 
   If Not Isblank(VSDGGRP2)    Then REG_ITEM["Codigo do Grupo"] = VSDGGRP2    EndIf  
   If Not Isblank(VSDGMARCA2)  Then REG_ITEM["Codigo da Marca"] = VSDGMARCA2  EndIf
   
   
   ACHOU_ITENCOM = False
   ACHOU_ITENECO = False
   ACHOU_ITENTEC = False
   
   GetRecord "Iten_Com" COD_ITEM_ORIGINAL To REG_ITENCOM
   If RetVal Then ACHOU_ITENCOM=True REG_ITENCOM["Codigo do Item"] = REG_ITEM["Codigo do Item"] EndIf
   
   GetRecord "Iten_Eco" COD_ITEM_ORIGINAL To REG_ITENECO
   If RetVal Then ACHOU_ITENECO=True REG_ITENECO["Codigo do Item"] = REG_ITEM["Codigo do Item"] EndIf
   
   GetRecord "Iten_Tec" COD_ITEM_ORIGINAL To REG_ITENTEC
   If RetVal Then ACHOU_ITENTEC=True REG_ITENTEC["Codigo do Item"] = REG_ITEM["Codigo do Item"] EndIf
   
   While True
     Moveto "Itens"
     End Down
     [Codigo do Item   ]=REG_ITEM["Codigo do Item"]
     If IsLockRecord() 
        Then Del
             Loop 
        Else CopyFromArray REG_ITEM
             UnLockRecord
             
             If ACHOU_ITENCOM 
                Then Moveto "Iten_Com"
                     End Down
                     CopyFromArray REG_ITENCOM
                     UnLockRecord
             EndIf   
             If ACHOU_ITENECO 
                Then Moveto "Iten_Eco"
                     End Down
                     CopyFromArray REG_ITENECO
                     UnLockRecord
             EndIf   
             If ACHOU_ITENTEC 
                Then Moveto "Iten_Tec"
                     End Down
                     CopyFromArray REG_ITENTEC
                     UnLockRecord
             EndIf
             QuitLoop
     EndIf
   EndWhile
   Moveto TabelaItem
EndScan
Do_It!
ClearAll

Mensagem("Itens inseridos !")

Endproc ;Atualizar_InsereEspecial()

;*******************************************************************************
;* Rotina para Digitacao dos Precos                                            *
;*******************************************************************************
Proc Editar_InsereFiltro()

ABORTA_PROCESSO=True

PickForm "10"
Moveto [Codigo do Item]
SetaCorRegistro("Editar")

While True
  ImageRights ReadOnly
  
  TECLA=" Esc=Retornar  Del=Excluir  Ctrl+Z=Pesquisar  Alt+Z=PesqPr¢ximo  F3=Atualizar"
  MSGCAMPO=Field()

  Prompt TECLA

  Wait Field
       Message MSGCAMPO
       Until "ESC","ENTER","DEL","FIELDVIEW","F35","UP","DOWN",
             "PGUP","PGDN","HOME","END","DEL","RIGHT","LEFT",
             "ZOOM","ZOOMNEXT",-61,"F3"

  Switch
  Case Retval="ZOOM":
       PESQUISA()
  Case Retval="ZOOMNEXT":
       PESQUISACON()
  Case Retval="F3" Or Retval=-61 :
       ABORTA_PROCESSO=False
       CHAVEI=9
       QuitLoop
  Case Retval="ESC":
       If CONFGERAL("Deseja abortar este processo?")
          Then CHAVEI=9
               QuitLoop
       EndIf        
  Case Retval="FIELDVIEW" or Retval="F35":
       EDITFIELD()
  Case Retval="DEL":
       If QuerExcluir("do item desta rela‡„o")
          Then ImageRights
               DEL
       EndIf
  OtherWise:
       TECLAPRESS=RetVal   
       If TECLAPRESS="ENTER"
         Then Down
              Moveto [Codigo do Item]
         Else KeyPress TECLAPRESS
       EndIf
       If RecordStatus("New")
          Then Del
       EndIf
  EndSwitch
EndWhile
Do_It!
ClearAll

EndProc ; (Editar_InsereFiltro)

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

If Disparo="OPEN"  
   Then AoCriarShowDialog()
        TiraSombraShowDialog()
EndIf
If Disparo="EVENT" And Evento["Type"]="KEY" Then
   Switch
     Case Evento["KeyCode"] = 9  : Temp=False
     Case Evento["KeyCode"] = -59: 
          If Campo="TG_FAMI2" Or Campo="TG_GRP2" Or Campo="TG_MARCA2"  
             Then Dynarray WinArray5[]
                  Window Handle Dialog To JANELA_DIALOG
                  Window GetAttributes JANELA_DIALOG To WinArray5
                 
                  If Campo="TG_FAMI2"  Then View "\\Sistemas\\Estoque\\Familia"   executarF1=True EndIf
                  If Campo="TG_GRP2"   Then View "\\Sistemas\\Estoque\\Grupos"    executarF1=True EndIf
                  If Campo="TG_MARCA2" Then View "\\Sistemas\\Estoque\\Marcas"    executarF1=True EndIf
     
                  If executarF1
                     Then
                     WinArray5["FLOATING"]=False
                     Window SetAttributes JANELA_DIALOG From WinArray5

                     If Consulta_Sem_F1()
                        Then Switch
                               Case Campo="TG_FAMI2":
                                    VSDGFAMI2    = [Codigo da Familia]
                                    VSDGNOMFAMI2 = [Descricao da Familia]
                               Case Campo="TG_GRP2":
                                    VSDGGRP2     = [Codigo do Grupo]
                                    VSDGNOMGRP2  = [Descricao do Grupo]
                               Case Campo="TG_MARCA2":
                                    VSDGMARCA2   = [Codigo da Marca]
                                    VSDGNOMMARCA2= [Descricao da Marca]
                       EndSwitch
                    EndIf
                   
                     Window Select JANELA_DIALOG
                     WinArray5["FLOATING"]=True
                     Window SetAttributes JANELA_DIALOG From WinArray5

                     ClearImage
                     Echo Normal
                     Echo Off                  
                  EndIf      
             Else Dialog_F1()
          EndIf     
     Case Evento["KeyCode"] =  27:
          Temp=False
          Switch
            Case Campo="TG_ADD_DESC"       : Campo="NO"
            Case Campo="TG_FAMI"           : Campo="TG_ADD_DESC"
            Case Campo="TG_FAMI2"          : Campo="TG_FAMI"
            Case Campo="TG_GRP"            : Campo="TG_FAMI2"
            Case Campo="TG_GRP2"           : Campo="TG_GRP"
            Case Campo="TG_MARCA"          : Campo="TG_GRP2"
            Case Campo="TG_MARCA2"         : Campo="TG_MARCA"
            Case Campo="YES" Or Campo="NO" : Campo="TG_ADD_DESC"
          EndSwitch
     Case Evento["KeyCode"] = 13:
          Temp=False
          If Checa_TAG()
             Then Switch
                    Case Campo="TG_ADD_DESC" : Campo="TG_FAMI"
                         VSDGADDDESC=ControlValue("TG_ADD_DESC")                    
                    Case Campo="TG_FAMI"     : Campo="TG_FAMI2" 
                    Case Campo="TG_FAMI2"    : Campo="TG_GRP"
                         VSDGFAMI2=ControlValue("TG_FAMI2")
                         If Not IsBlank(VSDGFAMI2)
                            Then VSDGFAMI2=ALINHM(VSDGFAMI2,3)
                                 GetRecord "\\Sistemas\\Estoque\\Familia" VSDGFAMI2 To FAM
                                 If RetVal
                                    Then VSDGNOMFAMI2 = FAM["Descricao da Familia"]
                                    Else MENSAGEM("Familia n„o Cadastrada !")
                                         Campo="TG_FAMI2"
                                 EndIf   
                            Else VSDGNOMFAMI2=""
                         EndIf
                    Case Campo="TG_GRP"      : Campo="TG_GRP2"
                    Case Campo="TG_GRP2"     : Campo="TG_MARCA"
                         VSDGGRP2=ControlValue("TG_GRP2")
                         If Not IsBlank(VSDGGRP2)
                           Then VSDGGRP2=ALINHM(VSDGGRP2,3)
                                GetRecord "\\Sistemas\\Estoque\\Grupos" VSDGGRP2 To GRP
                                 If RetVal
                                    Then VSDGNOMGRP2 = GRP["Descricao do Grupo"]
                                    Else MENSAGEM("Grupo n„o Cadastrado !")
                                         Campo="TG_GRP2"
                                 EndIf
                           Else VSDGNOMGRP2=""
                         EndIf     
                    Case Campo="TG_MARCA"    : Campo="TG_MARCA2"
                    Case Campo="TG_MARCA2"   : Campo="YES"
                         VSDGMARCA2=ControlValue("TG_MARCA2")
                         If Not IsBlank(VSDGMARCA2)
                           Then VSDGMARCA2=ALINHM(VSDGMARCA2,3)
                                GetRecord "\\Sistemas\\Estoque\\Marcas" VSDGMARCA2 To MAR
                                 If RetVal
                                    Then VSDGNOMMARCA2 = MAR["Descricao da Marca"]
                                    Else MENSAGEM("Marca n„o Cadastrada !")
                                         Campo="TG_MARCA2"
                                 EndIf
                           Else VSDGNOMMARCA2=""
                         EndIf                              
                  EndSwitch
          EndIf
          RefreshDialog
   EndSwitch
EndIf

If Campo="TG_FAMI2" Or Campo="TG_GRP2" Or Campo="TG_MARCA2"
   Then MSGCAMPO=MSGCAMPO+", [F1]Consultar tabela"
EndIf

Switch
 Case Campo="TG_FAMI2"  : MSG_CAMPO="Informe a nova Familia"
 Case Campo="TG_GRP2"   : MSG_CAMPO="Informe o novo Grupo"
 Case Campo="TG_MARCA2" : MSG_CAMPO="Informe a nova Marca"
EndSwitch
Monta_Prompt(MSG_CAMPO,TECLA)
Return Temp

EndProc ;SD_Dialog_InsereFiltro()

;*******************************************************************************
;* ROTINA PARA INSERIR ITENS A PARTIR DE FILTRO                                *
;*******************************************************************************
Proc InsereFiltro()

VSDGADDDESC   = "" 
VSDGFAMI2     = ""
VSDGNOMFAMI2  = ""
VSDGGRP2      = ""
VSDGNOMGRP2   = ""
VSDGNOMMARCA2 = ""
VSDGMARCA2    = ""

ShowDialog "Insere Itens, substituindo dados" Proc "SD_Dialog_InsereFiltro"
Trigger "OPEN","ARRIVE"
Key "F1","ENTER","ESC","TAB"
@ 05,05   Height 14 Width 80

    Label  @ 00,00 "Adicionar Texto na Descri‡ao do Item"  For "TG_ADD_DESC"
    Accept @ 01,01 Width 36 "A20" Picture "!*!" Tag "TG_ADD_DESC" To VSDGADDDESC
  
    Label  @ 03,00 "Familia - Atual"  For "TG_FAMI"
    Accept @ 04,01 Width 06 "A3"  Picture "#*#" Tag "TG_FAMI" To VSDGFAMI
    Accept @ 04,08 Width 25 "A25" Picture "!*!" Tag "TG_NOMFAMI" To VSDGNOMFAMI
  
    Label  @ 05,00 "Grupo - Atual"  For "TG_GRP"
    Accept @ 06,01 Width 06 "A3"  Picture "#*#" Tag "TG_GRP" To VSDGGRP
    Accept @ 06,08 Width 25 "A25" Picture "!*!" Tag "TG_NOMGRP" To VSDGNOMGRP
  
    Label  @ 07,00 "Marca - Atual"  For "TG_MARCA"
    Accept @ 08,01 Width 06 "A3"  Picture "#*#" Tag "TG_MARCA"    To VSDGMARCA
    Accept @ 08,08 Width 25 "A25" Picture "!*!" Tag "TG_NOMMARCA" To VSDGNOMMARCA
  
    Label  @ 03,35 "Familia - Novo"  For "TG_FAMI2"
    Accept @ 04,36 Width 06 "A3"  Picture "#*#" Tag "TG_FAMI2" To VSDGFAMI2
    Accept @ 04,43 Width 25 "A25" Picture "!*!" Tag "TG_NOMFAMI2" To VSDGNOMFAMI2
    
    Label  @ 05,35 "Grupo - Novo"  For "TG_GRP2"
    Accept @ 06,36 Width 06 "A3"  Picture "#*#" Tag "TG_GRP2" To VSDGGRP2
    Accept @ 06,43 Width 25 "A25" Picture "!*!" Tag "TG_NOMGRP2" To VSDGNOMGRP2
                                               
    Label  @ 07,35 "Marca - Novo"  For "TG_MARCA2"
    Accept @ 08,36 Width 06 "A3"  Picture "#*#" Tag "TG_MARCA2"    To VSDGMARCA2
    Accept @ 08,43 Width 25 "A25" Picture "!*!" Tag "TG_NOMMARCA2" To VSDGNOMMARCA2

  Pushbutton @ 10,25 width 11 "~O~k"      OK     Default Value "Ok" Tag "YES" To BottonValue
  Pushbutton @ 10,39 width 11 "~C~ancela" CANCEL                    Tag "NO"  To BottonValue
  
EndDialog

If RetVal
   Then Relacao_InsereFiltro()
EndIf

EndProc ;InsereFiltro()

;*******************************************************************************
;* ROTINA PRINCIPAL                                                            *
;*******************************************************************************
InsereFiltro()

Release vars VSDGFAMI,VSDGNOMFAMI,VSDGGRP,VSDGNOMGRP,VSDGMARCA,VSDGNOMMARCA,VSDGADDDESC,
             VSDGFAMI2,VSDGNOMFAMI2,VSDGGRP2,VSDGNOMGRP2,VSDGMARCA2,VSDGNOMMARCA2,
             ACHOU_ITENCOM,ACHOU_ITENECO,CHOU_ITENTEC,REG_ITENCOM,REG_ITENECO,REG_ITENTEC,
             TabelaItem,COD_ITEM,COD_ITEM_ORIGINAL,REG_ITEM,ABORTA_PROCESSO             
Release procs InsereFiltro,Relacao_InsereFiltro,Atualizar_InsereEspecial,Editar_InsereFiltro,SD_Dialog_InsereFiltro
