;* Imp_Id **********************************************************************
;* Importa ID de produtos de SITE - TrayCorp                                   *
;*******************************************************************************
;Autor           : Vise Informatica (VISERP)
;Desenvolvido    : 10/07/2020 por Bruno Carvalho
;Ultima Alteracao: 18/08/2020 por Bruno Carvalho                   
;Motivo Alteracao: Ajustes no showdialog p/ identificar o nome do arquivo com a extensÆo .CSV  

;SISTEMA DE SITE: TrayCorp
;Funcional para a planilha do ESTOQUE e do PREO do site TrayCorp
; necess rio que o arquivo seja salvo em .CSV (Onde  realizado no site o download do arquivo .XLS)

;*******************************************************************************
;*                                                                             *
;*******************************************************************************
Proc Importa_ID()
Private Varinner,Contador,Pos,Posf,Lnha,NR,ID,SKU,ARRAY_ERRO,ARQIMP,TITULO,TIT 

DynArray ARRAY_ERRO[]

Empty "\\Sistemas\\Vendas\\Imp_Temp"

Aguarde("Aguarde, importando dados")
Contador=0
FileRead ARQUIVO to Varinner
Edit "\\Sistemas\\Vendas\\Imp_Temp"
Pos=1
While True
  Contador = Contador + 1
  Posf=SearchFrom("\n",Varinner,Pos)
  If Posf=0 Then QuitLoop EndIf
  If Contador>1
     Then [Field-1]=Substr(Varinner,Pos,(Posf-Pos))
          Down
  EndIf
  Pos=Posf+1
EndWhile
Do_It!
ClearAll            

Contador=0
View "\\Sistemas\\Estoque\\Itens"
View "\\Sistemas\\Estoque\\Iten_Eco"
Coedit "\\Sistemas\\Vendas\\Imp_Temp"         SetHighLight Current Record 23 Field 31
NR=NRecords("\\Sistemas\\Vendas\\Imp_Temp")
While True
  Linha =[Field-1]
  PosF  = Search(Chr(59),Linha) 
  ID    = Substr(Linha,1,PosF-1)
   
  Linha = SubStr([Field-1],PosF+1,Len(Linha))
  PosF  = Search(Chr(59),Linha)             
  SKU   = Substr(Linha,1,PosF-1) 
  
  Moveto "\\Sistemas\\Estoque\\Iten_Eco"
  Moveto [Codigo do Item]
  Locate SKU
  If Not RetVal
     Then Moveto "\\Sistemas\\Estoque\\Itens"
          Moveto [Codigo do Item]
          Locate SKU
          If ReTval
             Then Moveto "\\Sistemas\\Estoque\\Iten_Eco"
                  End Down
                  [Codigo do Item] = SKU
                  [Largura       ] = 20 
                  [Altura        ] = 20
                  [Comprimento   ] = 40
                  [IdSite        ] = NumVal(ID)
                  UnLockRecord
             Else Contador = Contador + 1
                  ARRAY_ERRO[Contador] = Format("W10","ERRO_ITEM") + Format("W10",SKU) + StrVal(ID)
          EndIf        
     Else If Not IsBlank([IdSite]) And [IdSite]<>NumVal(ID)
             Then Contador = Contador + 1
                  ARRAY_ERRO[Contador] = Format("W10","ERRO_ID") + Format("W10",SKU) + StrVal(ID)
             Else [IdSite] = NumVal(ID)
                  UnLockRecord
          EndIf
  EndIf
  Moveto "\\Sistemas\\Vendas\\Imp_Temp"
  Skip 
  If Eot() Then QuitLoop EndIf
EndWhile
Do_It!
ClearAll

If DynArraySize(ARRAY_ERRO)>0
   Then If ConfGeral("Deseja visualizar o relat¢rio de erros?")
           Then DISPOSITIVO()
                If OK="" 
                   Then COR_MENSAGEM="ALERTA"
                        Mensagem("Relat¢rio de erros cancelado!")
                        Return  
                EndIf
                
                ARQIMP=PrivDir()+"ERRO.Txt"
                If IsFile(ARQIMP)
                   Then Deleta_Arquivo(ARQIMP)
                EndIf   
                
                TITULO = ""
                TIT    = ""
                LINHA  = 0
                For ii From 1 To DynArraySize(ARRAY_ERRO)
                  If LINHA = 0
                     Then ;Cabecalho 
                          Print File ARQIMP CI_15CPP
                          Print File ARQIMP "\n"
                          Print File ARQIMP Spaces(2)+Fill("-",135) + "\n"
                          Print File ARQIMP Spaces(2)+Format("W135,AC","Erros Localizados na ImportaÆo")+ "\n"
                          Print File ARQIMP Spaces(2)+Fill("-",135)+ "\n"
                          Print File ARQIMP Spaces(2)+"SKU            ID                "+ "\n"
                          Print File ARQIMP Spaces(2)+"----------     ------------------"+ "\n" 
                          If TITULO<>""
                             Then Print File ARQIMP Spaces(2)+TITULO+"\n\n"
                                  LINHA = 8
                             Else LINHA = 6
                          EndIf
                  EndIf
                  
                  DADOS = ARRAY_ERRO[ii]
                  SKU   = SubStr(DADOS,11,10) 
                  ID    = Rtrim(SubStr(DADOS,21,Len(DADOS))) 
                  If TIT<>Rtrim(SubStr(DADOS,1,10))
                     Then TIT = Rtrim(SubStr(DADOS,1,10)) 
                          Switch 
                            Case TIT="ERRO_ITEM" : TITULO = "SKU nÆo foi localizado no cadastro de itens do e-commerce [ITEN_ECO]"
                            Case TIT="ERRO_ID"   : TITULO = "ID CADASTRADO NO ERP DIFERE DO ID CADASTRADO NO SITE"
                          EndSwitch
                          If LINHA <> 8
                             Then Print File ARQIMP "\n"
                                  LINHA = LINHA + 1
                          EndIf   
                          Print File ARQIMP Spaces(2)+TITULO+"\n\n"
                          LINHA = LINHA + 2                                  
                  EndIf
                  LINHA = LINHA + 1       
                  Print File ARQIMP Spaces(2)+Format("W10",SKU)+Spaces(5)+ID+"\n"
                  If LINHA >= 66
                     Then Print File ARQIMP "\f"
                          LINHA = 0
                  EndIf
                EndFor
                ImpriArq(ARQIMP)
                Deleta_Arquivo(ARQIMP)
        EndIf      
   Else Mensagem("IDs dos produtos do site adicionados com sucesso!")       
EndIf

EndProc ;Importa_ID()

;*******************************************************************************
;* 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_FINALIDADE"    : Campo="NO"                          
            Case Campo="YES" Or Campo="NO": Campo="TG_FINALIDADE"
          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_FINALIDADE"  : Campo="YES"
                  EndSwitch
          EndIf
          RefreshDialog
   EndSwitch
EndIf

Switch
 Case Campo="TG_FINALIDADE" : MensagemRadioButtons()
EndSwitch
Monta_Prompt(MSG_CAMPO,TECLA)
Return Temp

EndProc ;SD_Dialog()                                                         
 
;*******************************************************************************
;* Rotina Principal                                                            *
;*******************************************************************************
AutoLib="\\Sistemas\\Cadastro\\Bibliot,\\Sistemas\\Cadastro\\Bib_Show,\\Sistemas\\Cadastro\\Bib_Proc"

DIR_SITE =  SubStr(Directory(),1,2) + "\\Sistemas\\Exporta\\Dados\\TRAYCORP\\IMP_ERP"

If DirExists(DIR_SITE)=0
   Then Mensagem("NÆo foi poss¡vel realizar a importaÆo do ID do produto para o sistema!//"+ 
                 "Diret¢rio \\Sistemas\\Exporta\\Dados\\TRAYCORP\\IMP_ERP nÆo foi localizado!")
        Return
EndIf

While True
 ShowDialog "ImportaÆo de IDs dos produtos do SITE [TRAYCORP]" Proc "SD_Dialog"
   Trigger "OPEN","ARRIVE"
    Key "TAB","ReverseTab","ENTER","ESC","F1",
      -104, -105, -106, -107, -108, -109, -110, -111, -112, -113, -139, -140    
     @ 05,12 Height 08 Width 72
    
    RadioButtons @ 01,00 Height 2 Width 68
      "~1~ IDs dos produtos da planilha Estoque -> \\IMP_ERP\\ESTOQUE.CSV",
      "~2~ IDs dos produtos da planilha Preo   -> \\IMP_ERP\\PRECO.CSV"
        Tag "TG_FINALIDADE"
        To VSDGFINAL       
            
    Pushbutton @ 04,22 width 13 "~O~k"      OK     Default Value "Ok" Tag "YES" To BottonValue
    Pushbutton @ 04,36 width 13 "~C~ancela" CANCEL                    Tag "NO"  To BottonValue

  EndDialog
  If Not RetVal Then QuitLoop EndIf
                 
  Switch
    Case VSDGFINAL=1 : ARQUIVO = "ESTOQUE.CSV"
    Case VSDGFINAL=2 : ARQUIVO = "PRECO.CSV"
  EndSwitch
  
  DIRETORIO_ATUAL=Directory() 
  SetDir "\\Sistemas\\Exporta\\Dados\\TRAYCORP\\IMP_ERP"
  If Not IsFile(ARQUIVO)
     Then SetDir DIRETORIO_ATUAL
          Mensagem("NÆo foi localizado o arquivo "+ARQUIVO+" para realizar a importaÆo!")
          Loop 
  EndIf
  Importa_ID()
  SetDir DIRETORIO_ATUAL   
EndWhile
Release Vars All
Release Procs All