;** AC_NCM *********************************************************************
;*  Ajustes para alterar NCM antigos de acordo com o arquivo em XLS            *
;*******************************************************************************
;Autor           : Vise Informatica (VISERP)
;Desenvolvido    : 07/01/2016 por Bruno Carvalho
;Ultima Alteracao:   /  /     por 
;Motivo Alteracao: 

;*******************************************************************************
;* Rotina p/ funcionamento da aplica‡„o                                        *
;*******************************************************************************
;Para realizar este processo, ser  preciso adicionar duas colunas no excel, sendo
;a primeira coluna com o numero do NCM antigo e a segunda coluna com o numero do
;NCM novo, isto ‚, na primeira posi‡Æo da coluna estar  o NCM utilizado at‚ o mo-
;mento deste acerto, e na segunda coluna estar  o NCM que ser  alterado por este
;que nÆo ser  mais ultilizado.

;** Mais informa‡äes a baixo, no inicio da aplica‡„o !!!

;** Converter este arquivo de EXCEL (.XLS) para .DB (Paradox 4) no ACCESS.
;   Renomeie o arquivo com o nome temp_ncm e mantenha esta tabela no diretorio 
;   cadastro.

;*******************************************************************************
;* Rotina                                                                      *
;*******************************************************************************
Proc Processa()
Private NCM,NCM1,NCM2,CONT_ITEM,REG_NCM,i,CONT_LINHA

SetDir "\\Sistemas\\Estoque"

{Ask} {\\Sistemas\\Cadastro\\Temp_NCM}
Moveto [Campo2] Check
Do_it!
ClearAll

NR = NRecords("Answer")

View "\\Sistemas\\Cadastro\\Temp_NCM"
View "NCM"
Coedit "Answer"
Scan
  Barra(NR, RecNo())
  Aguarde("Aguarde, Alterando NCM antigos "+BARRA_STRING)

  NCM = AlinhM(Ltrim(Rtrim([Campo2])),8)
  
  Getrecord "NCM" NCM To REG_NCM
  If Not RetVal
     Then Moveto "\\Sistemas\\Cadastro\\Temp_NCM"
          Moveto [Campo2]
          Locate [Answer->Campo2]
          If RetVal
             Then OBS = "NCM ANTIGO -> " + AlinhM(StrVal([Campo1]),8)
             Else OBS = ""
          EnDIf   
          Moveto "NCM"
          End Down
          [NCM] = NCM
          If OBS <> ""
             Then If [Descricao NCM]<>"" 
                     Then [Descricao NCM] = [Descricao NCM] + "\n" + OBS
                     Else [Descricao NCM] = OBS
                  EndIf
          EndIf
          UnLockRecord
  EndIf
  Moveto "Answer"
EndScan
Do_it!
CleaRall

CONT_ITEM = 0
DynArray ITEM[]

NR = NRecords("\\Sistemas\\Cadastro\\Temp_NCM")

View "\\Sistemas\\Estoque\\Itens"
Coedit "\\Sistemas\\Cadastro\\Temp_NCM"
Scan
  Barra(NR, RecNo())
  Aguarde("Aguarde, Alterando NCM antigos "+BARRA_STRING)

  NCM1 = AlinhM(Ltrim(Rtrim([Campo1])),8)
  NCM2 = AlinhM(Ltrim(Rtrim([Campo2])),8)

  Moveto "\\Sistemas\\Estoque\\Itens"
  Moveto [NCM]
  Locate NCM1
  If RetVal
     Then While True
            If NCM1 = [NCM]
               Then CONT_ITEM = CONT_ITEM + 1
                    ITEM[CONT_ITEM] = Format("W10",[Codigo do Item])+" "+Format("W30",[Descricao do Item])+" "+
                                      Format("W8",NCM1)+" "+Format("W8",NCM2)
                    [NCM] = NCM2
                    UnlockRecord
            EndIf
            Skip
            If Eot() Then QuitLoop EndIf
            Locate Next NCM1
            If Not RetVal  
               Then QuitLoop
            EndIf
          EndWhile               
  EndIf   
  Moveto "\\Sistemas\\Cadastro\\Temp_NCM"
EndScan
Do_It!
ClearAll  
  
If DynArraySize(ITEM)>0
   Then CONT_LINHA = 0  
        For i From 1 To DynArraySize(ITEM) 
          If i = 1
             Then ARQIMP=PrivDir()+"TEMP_ARQ.Txt"
                  If IsFile(ARQIMP)
                     Then Deleta_Arquivo(ARQIMP)                                                 
                  EndIf
          EndIf
          If CONT_LINHA = 0
             Then Print File ARQIMP Chr(27)+Chr(120)+Chr(48)+Chr(15)
                  Print File ARQIMP "\n\n"
                  Print File ARQIMP Spaces(2)+Fill("-",132) + "\n"
                  Print File ARQIMP Spaces(2)+Format("W132,AC","ALTERACAO DOS NCMS ANTIGOS PARA OS NCMS NOVOS A PARTIR DE "+
                                              StrVal(TODAY())) + "\n"
                  Print File ARQIMP Spaces(2)+Fill("-",132) + "\n\n"
                  Print File ARQIMP Spaces(2)+"                                          ______ NCM ______"+"\n"
                  Print File ARQIMP Spaces(2)+"Item                                      Antigo   Novo    "+"\n"
                  Print File ARQIMP Spaces(2)+"---------- ------------------------------ -------- --------"+"\n"
                  CONT_LINHA = CONT_LINHA + 9
          EndIf
          CONT_LINHA = CONT_LINHA + 1
          Print File ARQIMP Spaces(2)+ITEM[i] + "\n"
          If CONT_LINHA >=60
             Then CONT_LINHA = 0
          EndIf    
        EnDFor 
        PDFZEBRA=False
        DISPOSITIVO_OPCAO="V"
        ImpriArq(ARQIMP)
EndIf         

EndProc ;Processa()

;*******************************************************************************
;* Rotina Dialog                                                               *
;*******************************************************************************
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"] <= -104 And Evento["KeyCode"] >= -113) Or 
           Evento["KeyCode"]  = -139 Or  Evento["KeyCode"]  = -140:
           SYS_TECLA_ACIONADA=Evento["KeyCode"]
           Seta_Tecla_Acionada()
           CancelDialog
   EndSwitch
EndIf

Monta_Prompt(MSG_CAMPO,TECLA)
Return Temp

EndProc ;SD_Dialog()

;*******************************************************************************
;* Rotina Principal                                                            *
;*******************************************************************************
AutoLib="\\Sistemas\\Cadastro\\Bibliot,\\Sistemas\\Cadastro\\Bib_Show"
LimpAguarde()

While True
  ShowDialog "Altera‡„o NCM Antigo -> NCM Novo" 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 05 Width 46

    Pushbutton @ 01,11 width 8 "~S~IM"  OK     Default Value "Ok" Tag "YES" To BottonValue
    Pushbutton @ 01,22 width 8 "~N~AO"  CANCEL                    Tag "NO"  To BottonValue

  EndDialog
  If Not RetVal Then QuitLoop EndIf
  
  MSG = "Para realizar o processo de altera‡„o do NCM antigo (antes utilizado)//"+
        "para o NCM novo, ser  preciso adicionar 2 Colunas no Excel, sendo:   //"+
        "- 1¦ Coluna com o numero do NCM antigo                               //"+
        "- 2¦ Coluna com o numero do NCM novo                                 ////"+
        "A  primeira coluna estar  o NCM utilizado at‚ o momento desta atuali-//"+
        "za‡„o, e a segunda coluna estar  o novo NCM que ser  alterado.       ////"+   
        "** Converter o arquivo em EXCEL (.XLS) p/ .DB (Paradox 4) no ACCESS. //"+
        "   -> NAO  adicione  TITULO ou qualquer tipo de STRING na primeira ou//"+
        "      qualquer outra linha, apenas informe o numero do NCM.          //"+
        "   -> Na  importa‡„o do XLS no ACCESS, n„o se esque‡a de marcar op‡„o//"+
        "      [ ] SEM CHAVE PRIMARIA, caso esteja desmarcada.                //"+
        "   -> Renomeie  o  arquivo com o nome TEMP_NCM e mantenha esta tabela//"+
        "      no diretorio cadastro.                                         //"+  
        "Deseja continuar com este processo de altera‡„o de dados ?           "
  ConfGeral(MSG)
  If Ok<>"S"
     Then Loop
  EndIf      
  
  If Not IsTable("\\Sistemas\\Cadastro\\TEMP_NCM")             
     Then Mensagem("Tabela TEMP_NCM n„o localizada no diret¢rio CADASTRO!")
          QuitLoop
  EndIf

  ClearAll
  Ok = False
  {Tools} {Info} {Structure} {Temp_Ncm}
  Moveto [Field Name]
  Locate "Campo1"
  If RetVal
     Then Home 
          Locate "Campo2"
          If RetVal
             Then Ok = True
          EndIf
  EndIf
  ClearAll
  If Not Ok           
     Then Mensagem("A tabela TEMP_NCM est  com a estrutura incorreta, verifique a coners„o//"+
                   "realizada, fa‡a como ‚ indicado na mensagem de inicio desta aplica‡„o!")
          Loop
  EndIf   
  Processa()

  SetDir "\\Sistemas\\Cadastro"
  If DynArraySize(ITEM)=0
     Then Mensagem("N„o Existem Registros a Processar!")
     Else Mensagem("Fim do Processo!")
  EndIf
  Quitloop
EndWhile
ClearAll
Release Vars All
Release Procs All  