;** IMP_TRAY *******************************************************************
;*  Importa Pedidos do Site TrayCorpo                                          *
;*******************************************************************************
;Autor           : Vise Informatica (VISERP)
;Desenvolvido    : 26/08/2020 por  Bruno Carvalho
;Ultima Alteracao: 31/08/2020 por  Bruno Carvalho
;Motivo Alteracao: Adicionado cliente gen‚rico p/ quando h  um CGC incorreto no arquivo de importa‡Æo 

;Formato do arquivo com a extensÆo .CSV 
;Arquivo a ser importado no sistema da vise deve come‡ar com PEDIDO*.csv

;Cadastrar um cliente gen‚rico e atribuir o codigo aqui conforme empresa 

;*******************************************************************************
;* Ajusta Pre‡o                                                                *
;*******************************************************************************
Proc Ajusta_Data(DATA)
Private DATA,ii

If DATA=""
   Then DATA = BlankDate()
   Else For ii From 1 To 2
          PosI = Search("/",DATA)
          If PosI>0
             Then DATA = SubStr(DATA,1,PosI-1)+"."+SubStr(DATA,PosI+1,Len(DATA))
          EndIf
        EndFor
        If Type(DateVal(DATA))="D" 
           Then DATA = DateVal(DATA) 
        EndIf         
EndIf

Return DATA          

EndProc ;Ajusta_DATA

;*******************************************************************************
;* Ajusta Pre‡o                                                                *
;*******************************************************************************
Proc Ajusta_Preco(PRECO)
Private PRECO,PosI

PosI=Search("R$",Upper(PRECO))
If PosI>0
   Then PRECO = Rtrim(Ltrim(SubStr(PRECO,1,PosI-1)+SubStr(PRECO,PosI+2,Len(PRECO))))
EndIf   

If PRECO=""
   Then PRECO = BlankNum()
   Else PosI = Search(".",PRECO)
        If PosI>0
           Then PRECO = SubStr(PRECO,1,PosI-1)+SubStr(PRECO,PosI+1,Len(PRECO))
        EndIf
        PosI = Search(",",PRECO)
        If PosI>0
           Then PRECO = SubStr(PRECO,1,PosI-1)+"."+SubStr(PRECO,PosI+1,Len(PRECO))
        EndIf
        PRECO = NumVal(PRECO)
EndIf

Return PRECO

EndProc ;Ajusta_Preco()

;*******************************************************************************
;* Rotina Importa Clientes                                                     *
;*******************************************************************************
Proc CriaCliente()

Moveto "\\Sistemas\\Cadastro\\Destinat"
Moveto [Codigo]
If Not Proximo_Codigo("C")
   Then Return False
   Else Return True 
EndIf

EndProc ;CriaCliente()

;*******************************************************************************
;* Rotina para Gerar Proximo Codigo no Intervalo                               *
;*******************************************************************************
Proc Proximo_Codigo(Tipo)
Private codreg, newreg,cod,vr
                    
If PARAM_REUTILIZA<>"S"
   Then While True
          End
          CODCLI=[Codigo]
          If IsBlank(CODCLI)
             Then CODCLI="0"
          EndIf
          vr=SubStr(CODCLI,1,1)
          If vr>"9" or CODCLI="9999"
             Then If SubStr(CODCLI,2,3)="999"
          	         Then Switch
  					        Case vr="9" : CODCLI="A000"
  					        Case vr="Z" : CODCLI=""
  					        OtherWise   : CODCLI=Chr(asc(vr)+1)+"000"
  					      EndSwitch
  				 	 Else CODCLI=AlinhE(vr+StrVal(NumVal(SubStr(CODCLI,2,3))+1))     
  				  EndIf	      
             Else CODCLI=AlinhE(StrVal(NumVal(CODCLI)+1))
          EndIf
          Down
          [Codigo]=CODCLI
          If IsLockRecord()
             Then Del
             Else Locate CODCLI
                  Return True
          EndIf
        EndWhile
EndIf

CODCLI=""
Home
CodLivre=AlinhE(PARAM_INICIAL)
Moveto [Codigo]
Locate IndexOrder by "Codigo" BestMatch AlinhE(PARAM_INICIAL)
While True
   If CodLivre<=AlinhE(PARAM_FINAL) and CodLivre>=AlinhE(PARAM_INICIAL)
      Then If CodLivre=[Codigo]
              Then CodLivre=Novo_Codigo()
                   Skip
              Else CODCLI=CodLivre
                   QuitLoop
           EndIf
           If EOT() Then Loop EndIf
      Else Mensagem("Fim dos c¢digos livres!!")
           CODCLI=""
           QuitLoop
   EndIf
EndWhile

If CODCLI<>""
   Then End Down
        [Codigo]=CODCLI
        If IsLockRecord()
           Then Del
           Else Locate CODCLI
                Return True
        EndIf
EndIf

EndProc

;*******************************************************************************
;* Rotina para Criar Novo C¢digo                                               *
;*******************************************************************************
proc Novo_Codigo()
Private cod,vr

cod=[Codigo]
If IsBlank(cod)
   Then cod="0"
EndIf  
vr=SubStr(cod,1,1)
If vr>"9" or cod="9999"
   Then If SubStr(cod,2,3)="999"
	         Then Switch
					        Case vr="9" : cod="A000"
					        Case vr="Z" : Mensagem("Fim de codigo disponivel !")
									              cod=""
					        OtherWise   : cod=Chr(asc(vr)+1)+"000"
					      EndSwitch
					 Else cod=AlinhE(vr+StrVal(NumVal(SubStr(cod,2,3))+1))     
				EndIf	      
   Else cod=AlinhE(StrVal(NumVal(cod)+1))
EndIf

Return cod 
EndProc

;*******************************************************************************
;* Rotina Carrega_Parametros Cadastro                                          *
;*******************************************************************************
Proc Carrega_ParametrosC()
View NoWindow "\\Sistemas\\Cadastro\\P_Dest"
If IsEmpty("\\Sistemas\\Cadastro\\P_Dest")
   Then CoEditKey
        [Utiliza_CGC_Cliente]="N"
        Do_It!
EndIf
PARAM_CGC_CLIENTE   =[Utiliza_CGC_Cliente]
PARAM_CGC_FORNECEDOR=[Utiliza_CGC_Fornecedor]
PARAM_REUTILIZA     =[Reutiliza_Cod      ]
If sys_codigo_Cliente="0428"
   Then PARAM_REUTILIZA     ="S"  
EndIf
PARAM_INICIAL       =[Cliente_Inicial    ]
PARAM_FINAL         =[Cliente_Final      ]
PARAM_AUT           =[Utiliza_Autorizacao]
ClearImage                           

Return True
EndProc ; (Carrega_ParametrosC)

;*******************************************************************************
;* Rotina Monta Aray Grade                                                     *
;*******************************************************************************
Proc Verifica_Array_Grade()
Private i,wsite,CODANTERIOR

WSREF =[Codigo do Item]
COLUNA=0

GetRecord "\\Sistemas\\Estoque\\Itens" WSREF To REG_BUSCA_LOOKUP                 
If Not RetVal
   Then Mensagem("Item "+WSREF+" n„o cadastrado !")
        Return    
EndIf

WSREF  = REG_BUSCA_LOOKUP["Referencia"]
WGRADE = REG_BUSCA_LOOKUP["Codigo da Grade"]

GetRecord "\\Sistemas\\Estoque\\TpGrade" WGRADE To REG_BUSCA_LOOKUP
If Not RetVal
   Then Mensagem("Item "+[PedidoI->Codigo do Item]+" sem grade definida !")
        Return
EndIf

Moveto "PedidoI"
Array_TM[1] =LTrim(RTrim(REG_BUSCA_LOOKUP["Codigo Item1"]))
Array_TM[2] =LTrim(RTrim(REG_BUSCA_LOOKUP["Codigo Item2"]))
Array_TM[3] =LTrim(RTrim(REG_BUSCA_LOOKUP["Codigo Item3"]))
Array_TM[4] =LTrim(RTrim(REG_BUSCA_LOOKUP["Codigo Item4"]))
Array_TM[5] =LTrim(RTrim(REG_BUSCA_LOOKUP["Codigo Item5"]))
Array_TM[6] =LTrim(RTrim(REG_BUSCA_LOOKUP["Codigo Item6"]))
Array_TM[7] =LTrim(RTrim(REG_BUSCA_LOOKUP["Codigo Item7"]))
Array_TM[8] =LTrim(RTrim(REG_BUSCA_LOOKUP["Codigo Item8"]))
Array_TM[9] =LTrim(RTrim(REG_BUSCA_LOOKUP["Codigo Item9"]))
Array_TM[10]=LTrim(RTrim(REG_BUSCA_LOOKUP["Codigo Item10"]))
Array_TM[11]=LTrim(RTrim(REG_BUSCA_LOOKUP["Codigo Item11"]))
Array_TM[12]=LTrim(RTrim(REG_BUSCA_LOOKUP["Codigo Item12"]))

For i from 1 to 12
  If Not IsBlank(WSREF) Then QuitLoop EndIf
  If LTrim(RTrim(SubStr(Array_TM[i],1,2)))<>""
     Then If Len(Array_TM[i])=1
             Then CODANTERIOR=SubStr([Codigo do Item],1,7)+"00"+Array_TM[i]
             Else CODANTERIOR=SubStr([Codigo do Item],1,6)+"00"+Array_TM[i]
          EndIf
          GetRecord "\\Sistemas\\Estoque\\Itens" CODANTERIOR To REG_BUSCA_LOOKUP                 
          If RetVal
             Then WSREF=REG_BUSCA_LOOKUP["Referencia"]
          EndIf
  EndIf
EndFor       

For i from 1 to 12
  If Len(RTrim(SubStr(Array_TM[i],1,2)))=1
     Then If SubStr([Codigo do Item],10,1)=SubStr(Array_TM[i],1,1)
             Then Coluna=i
                  QuitLoop
          EndIf
     Else If SubStr([Codigo do Item],9,2)=SubStr(Array_TM[i],1,2)
             Then Coluna=i
                  QuitLoop
          EndIf
  EndIf
EndFor

EndProc

;*******************************************************************************
;* Rotina para Gerar Pedido de Grade - PedidoG                                 *
;*******************************************************************************
Proc Gera_PedidoG()   

View "PedidoG" 
CoEdit "PedidoI" 
For ii From 1 To DynArraySize(ARRAY_PEDIDO)
  NPED = ARRAY_PEDIDO[ii]
  
  CFOP = ""
  GetRecord "\\Sistemas\\Vendas\\PedidoC" NPED To REG_PEDIDOC
  If RetVal
     Then CFOP = REG_PEDIDOC["CFO"] 
  EndIf   
  
  SEQG = 0
  Moveto "PedidoI"
  Moveto [Numero do Pedido]
  Locate NPED
  If RetVal
     Then While [Numero do Pedido]=NPED
            Verifica_Array_Grade()
            Moveto "PedidoI"

            WSCOR =[Codigo da Cor_Tecido]
            WSPRU =[Preco Unitario      ]
            
            FAZ_PROCESSO = True
            Moveto [Codigo do Item]
            Ativa_Lookup() 
            Moveto [Referencia]
            Locate IndexOrder by "refcor_01" WSREF, "P", WSCOR
            If Not Retval
               Then Locate IndexOrder by "refcor_01" WSREF, "T", WSCOR
                    If Not Retval
                       Then FAZ_PROCESSO = False
                            KeyPress "ESC"    
                    EndIf    
            EnDIf
            
            If FAZ_PROCESSO 
               Then CopyToArray REG_BUSCA_LOOKUP
                    KeyPress "ESC"
                    
                    ItemNovo=True
                    Moveto "PedidoG"
                    Scan
                      If [Referencia]=WSREF And [Codigo da Cor_Tecido]=WSCOR
                         Then ItemNovo=False
                              QuitLoop
                      EndIf        
                    EndScan
                    If ItemNovo
                       Then SEQG = SEQG + 1
                            End Down
                            [Numero do Pedido       ]=[PedidoI->Numero do Pedido       ]
                            [Item do Pedido         ]=SEQG
                            [Referencia             ]=WSREF
                            [Codigo do Item         ]=REG_BUSCA_LOOKUP["Codigo do Item"]
                            [Codigo da Cor_Tecido   ]=[PedidoI->Codigo da Cor_Tecido   ]
                            [Preco Unitario         ]=[PedidoI->Preco Unitario         ]
                            [Descricao do Item      ]=Substr([PedidoI->Descricao do Item],1,23)
                            [Descricao da Cor_Tecido]=[PedidoI->Descricao da Cor_Tecido]
                            [Unidade Fiscal         ]=[PedidoI->Unidade Fiscal         ]
                            [NCM                    ]=[PedidoI->NCM                    ]
                            [CFO                    ]=CFOP                   
                    EndIf
                    Switch
                      Case Coluna=0 : [Qtd1  ]=[Qtd1  ]+[PedidoI->Quantidade]
                      Case Coluna=1 : [Qtd1  ]=[Qtd1  ]+[PedidoI->Quantidade]
                      Case Coluna=2 : [Qtd2  ]=[Qtd2  ]+[PedidoI->Quantidade]
                      Case Coluna=3 : [Qtd3  ]=[Qtd3  ]+[PedidoI->Quantidade]
                      Case Coluna=4 : [Qtd4  ]=[Qtd4  ]+[PedidoI->Quantidade]
                      Case Coluna=5 : [Qtd5  ]=[Qtd5  ]+[PedidoI->Quantidade]
                      Case Coluna=6 : [Qtd6  ]=[Qtd6  ]+[PedidoI->Quantidade]
                      Case Coluna=7 : [Qtd7  ]=[Qtd7  ]+[PedidoI->Quantidade]
                      Case Coluna=8 : [Qtd8  ]=[Qtd8  ]+[PedidoI->Quantidade]
                      Case Coluna=9 : [Qtd9  ]=[Qtd9  ]+[PedidoI->Quantidade]
                      Case Coluna=10: [Qtd10 ]=[Qtd10 ]+[PedidoI->Quantidade]
                      Case Coluna=11: [Qtd11 ]=[Qtd11 ]+[PedidoI->Quantidade]
                      Otherwise     : [Qtd12 ]=[Qtd12 ]+[PedidoI->Quantidade]
                    EndSwitch
                    [Preco Total]=[Preco Unitario]*([Qtd1]+[Qtd2]+[Qtd3]+[Qtd4]+[Qtd5]+[Qtd6]+
                                                    [Qtd7]+[Qtd8]+[Qtd9]+[Qtd10]+[Qtd11]+[Qtd12])
                    UnLockRecord
            EndIf
            Moveto "PedidoI"
            Skip
            If Eot() Then QuitLoop EndIf
     EndWhile      
  EndIf
EndFor
Do_It!
ClearAll
 
EndProc ;Gera_PedidoG()                

;*******************************************************************************
;* Rotina para Importar Corre‡äes                                              *
;*******************************************************************************
Proc Importa_Pedido()

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

Aguarde("Aguarde, importando pedido")

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

CONTA_ARRAY = 0
DynArray ARRAY_PEDIDO[]

SetDir "\\Sistemas\\Vendas"             

PED_SITE = "" 
LidoCli  = 0
Contador = 0

NR=NRecords("\\Sistemas\\Vendas\\Imp_Temp")

View "\\Sistemas\\Cadastro\\Cidades"
View "\\Sistemas\\Cadastro\\Destinat"
View "\\Sistemas\\Cadastro\\DestObs"
View "PedidoC"                                                                  ;NoWindow
View "PedidoI"
View "PedidoG"
View "PedidoV"                   
Coedit "\\Sistemas\\Vendas\\Imp_Temp"    SetHighLight Current Record 23 Field 31
While True
  Contador = Contador + 1

  Linha = [Field-1]
  For ii From 1 To 34
    PosF     = Search(Chr(59),Linha)    
    REGISTRO = Substr(Linha,1,PosF-1)
    Switch
      Case ii=1  : PEDIDO_DATA         = Ajusta_Data(REGISTRO)   ;Data Pedido            19/08/2020	
      Case ii=2  : PEDIDO_NUMERO       = REGISTRO ;N£mero Pedido          164
      Case ii=3  : VR_TOTAL            = Ajusta_Preco(REGISTRO) ;Valor Total            R$134,88
      Case ii=4  : VR_SUBTOTAL         = Ajusta_Preco(REGISTRO) ;Subtotal               R$
      Case ii=5  : VR_CONTACORRENTE    = Ajusta_Preco(REGISTRO) ;Conta Corrente         R$
      Case ii=6  : VR_FRETE            = Ajusta_Preco(REGISTRO) ;Valor Frete            R$
      Case ii=7  : VR_DESCONTO         = Ajusta_Preco(REGISTRO) ;Valor Desconto         R$
      Case ii=8  : CANAL_PARCEIRO      = REGISTRO ;Canal/Parceiro         Minha Loja
      Case ii=9  : DATA_PAGAMENTO      = Ajusta_Data(REGISTRO)  ;Data Pagamento         
      Case ii=10 : DATA_CANCELAMENTO   = Ajusta_Data(REGISTRO)  ;Data Cancelamento      EM BRANCO
      Case ii=11 : PEDIDO_SITUACAO     = Tira_charEspecial(REGISTRO)  ;Situa‡Æo do Pedido:   
                                                                      ;- Pedido Enviado (Enviado)   
                                                                      ;- Aguardando Pagamento (Aguardando Libera‡Æo)  
                                                                      ;- Retirar na Loja (Dispon¡vel para Retirar na Loja) 
      Case ii=12 : FORMA_PAGAMENTO     = REGISTRO ;Forma de Pagamento     EM BRANCO
      Case ii=13 : NUMERO_PARCELA      = Ajusta_Preco(REGISTRO) ;Nø Parcelas            0
      Case ii=14 : VR_PARCELA          = Ajusta_Preco(REGISTRO) ;Valor Parcela          0
      Case ii=15 : SKU                 = REGISTRO ;SKU Produto            235742016 -> Alinhar a 10
      Case ii=16 : NOME_PRODUTO        = Tira_charEspecial(REGISTRO)   ;Nome Produto
      Case ii=17 : PRECO_VENDA         = Ajusta_Preco(REGISTRO)        ;Pre‡o Venda            NÆo tem o R$
      Case ii=18 : QUANTIDADE          = Ajusta_Preco(REGISTRO)        ;Quantidade
      Case ii=19 : CLIENTE_NOME        = Ltrim(Rtrim(Tira_charEspecial(REGISTRO))) ;Nome Cliente
      Case ii=20 : CLIENTE_CPF         = Ltrim(Rtrim(Tira_CharNum(REGISTRO))) ;CPF
      Case ii=21 : CLIENTE_CNPJ        = Ltrim(Rtrim(Tira_CharNum(REGISTRO))) ;CNPJ
      Case ii=22 : CLIENTE_EMAIL       = REGISTRO ;E-Mail
      Case ii=23 : CLIENTE_TELEFONE    = REGISTRO ;Telefone Residencial
      Case ii=24 : CLIENTE_CELULAR     = REGISTRO ;Telefone Celular
      Case ii=25 : CLIENTE_ENDERECO    = REGISTRO ;Endere‡o
      Case ii=26 : CLIENTE_NUMERO      = REGISTRO ;N£mero
      Case ii=27 : CLIENTE_COMPLEMENTO = REGISTRO ;Complemento            Ignorar quando "casa"
      Case ii=28 : CLIENTE_CEP         = Tira_CharNum(REGISTRO) ;CEP
      Case ii=29 : CLIENTE_BAIRRO      = REGISTRO ;Bairro
      Case ii=30 : CLIENTE_CIDADE      = Upper(Tira_charEspecial(REGISTRO)) ;Cidade     
      Case ii=31 : CLIENTE_ESTADO      = Upper(REGISTRO) ;Estado
      Case ii=32 : REFERENCIA          = REGISTRO ;Referˆncia
      Case ii=33 : TIPO_TRANSPORTE     = Upper(Tira_charEspecial(REGISTRO)) ;Transportadora         Frete   /   PAX   /   SEDEX
      Case ii=34 : TRANSACAO           = REGISTRO ;Transa‡Æo              0
    EndSwitch
    Linha = SubStr(Linha,PosF+1,Len(Linha))
  EndFor
  
  While True 
    If PED_SITE<>PEDIDO_NUMERO
       Then REPRESENTANTE = ""
            If SYS_CODIGO_CLIENTE="0227"
               Then REPRESENTANTE = "0007"
            EndIf
            PEDORIG = REPRESENTANTE+"."+PEDIDO_NUMERO
             
            Moveto "PedidoC"
            Moveto [Numero Pedido Origem]
            Locate PEDORIG
            If RetVal
               Then PED_ADD = False 
                    QuitLoop
               Else PED_ADD = True         
            EndIf
       
            N_Pedido = N_Pedido + 1
            SEQ      = 0
            PED_SITE = PEDIDO_NUMERO
            
            REP_NOME=""
            GetRecord "\\Sistemas\\Cadastro\\Represen" REPRESENTANTE To REG_REPRESEN 
            If RetVal
               Then REP_NOME = REG_REPRESEN["Nome Fantasia Represent"] 
            EndIf
            
            If Upper(CLIENTE_ESTADO)<>"MG"
               Then DESTIN = "004"
               Else DESTIN = "003" 
            EndIf   
              
            ;---- Cidade --------------------------------------------------------- 
            GetRecord "\\Sistemas\\Cadastro\\Cidades" CLIENTE_CIDADE,CLIENTE_ESTADO To REG_CIDADE
            If Not RetVal
               Then Moveto "\\Sistemas\\Cadastro\\Cidades"
                    End Down
                    [Cidade     ] = CLIENTE_CIDADE
                    [UF         ] = CLIENTE_ESTADO      
                    [PAIS       ] = "BRASIL"
                    [Codigo_Pais] = 1058
                    UnLockRecord
            EndIf          
              
            ;---- Peculariedades por Empresa -----------------------------------
            TABELA        = ""
            TRANSPORTADOR = ""
            If SYS_CODIGO_CLIENTE="0227"
               Then TABELA  = "00010"
                    Switch
                      Case TIPO_TRANSPORTE="Frete"     : TRANSPORTADOR = "0001"
                      Case TIPO_TRANSPORTE="BRASPRESS" : TRANSPORTADOR = "0009"
                      Case TIPO_TRANSPORTE="PAC" Or
                           TIPO_TRANSPORTE="SEDEX"     : TRANSPORTADOR = "0029"
                    EndSwitch
            EndIf
            
            Adiciona_Transportador=False
            GetRecord "\\Sistemas\\Vendas\\Transpor" TRANSPORTADOR To REG_TRANSP
            If RetVal
               Then Adiciona_Transportador=True
            EndIf     
            
            ;---- CGC ----------------------------------------------------------
            GENERICO=False
            CLIENTE_GENERICO = ""
            If SYS_CODIGO_CLIENTE="0227" Then CLIENTE_GENERICO ="G554" EndIf
            CGC         = ""
            TIPO_PESSOA = ""
            Switch
              Case CLIENTE_CPF<>""  : CGC = CLIENTE_CPF
              Case CLIENTE_CNPJ<>"" : CGC = CLIENTE_CNPJ 
            EndSwitch
          
            If CGC="" Then CGC="000.000.000-00" EndIf
            
            Switch
              Case Len(CGC)>14 :
              Case Len(CGC)=14 :
                   CGC=SubStr(CGC,01,2)+"."+
                       SubStr(CGC,03,3)+"."+
                       SubStr(CGC,06,3)+"/"+
                       SubStr(CGC,09,4)+"-"+
                       SubStr(CGC,13,2)    
                   TIPO_PESSOA="J"            
              Case Len(CGC)=11 :
                   CGC=SubStr(CGC,01,3)+"."+
                       SubStr(CGC,04,3)+"."+
                       SubStr(CGC,07,3)+"-"+
                       SubStr(CGC,10,2)
                   TIPO_PESSOA="F"       
              OtherWise  : CGC="000.000.000-00"
                           TIPO_PESSOA="F"   
            EndSwitch  
        
            ;---- ENDERECO -----------------------------------------------------
            If CLIENTE_NUMERO <> "" And CLIENTE_ENDERECO <> ""
               Then CLIENTE_ENDERECO = CLIENTE_ENDERECO+", "+ CLIENTE_NUMERO
            EndIf
            
            If Upper(CLIENTE_COMPLEMENTO)="CASA" Then CLIENTE_COMPLEMENTO="" EndIf
            If Upper(CLIENTE_COMPLEMENTO)="LOJA" Then CLIENTE_COMPLEMENTO="" EndIf
            If CLIENTE_COMPLEMENTO <> "" And CLIENTE_ENDERECO <> ""
               Then CLIENTE_ENDERECO = CLIENTE_ENDERECO + " - " + CLIENTE_COMPLEMENTO
            EndIf  
            
            If Not IsBlank(CLIENTE_CEP)
               Then CLIENTE_CEP = SubStr(CLIENTE_CEP,1,2)+"."+
                                  SubStr(CLIENTE_CEP,3,3)+"-"+
                                  SubStr(CLIENTE_CEP,6,3)
            EndIf  
        
            ;---- CLIENTE ------------------------------------------------------  
            ClienteOk=False
            Moveto "\\Sistemas\\Cadastro\\Destinat"
            Moveto [CGC]
            Locate CGC
            If RetVal
               Then If CLIENTE_GENERICO<>"" And CGC="000.000.000-00"
                      Then GENERICO = True
                           CODCLI=CLIENTE_GENERICO
                      Else CODCLI=[Codigo]
                    EndIf   
                    ClienteOk=True
            EndIf
            If Not ClienteOK
               Then OBS     = ""
                    LidoCli = LidoCli+1
                    If Not CriaCliente()
                       Then CODCLI = ""
                            OBS    = "** CLIENTE NAO CADASTRADO ** "
                       Else OBS    = "** CLIENTE NOVO ** "
                            [Tipo                   ]="C"
                            [Nome Fantasia EmitDest ]=CLIENTE_NOME 
                            [Razao Social           ]=CLIENTE_NOME                     
                            [Endereco               ]=CLIENTE_ENDERECO
                            [Endereco_Eletronico    ]=CLIENTE_EMAIL
                            [Cidade                 ]=CLIENTE_CIDADE 
                            [UF                     ]=CLIENTE_ESTADO
                            [Bairro                 ]=CLIENTE_BAIRRO
                            [CEP                    ]=CLIENTE_CEP
                            [Telefone               ]=CLIENTE_TELEFONE
                            [Celular                ]=CLIENTE_CELULAR
                            [Contato                ]=""
                            [Fax                    ]=""
                            [CGC                    ]=CGC
                            [RG                     ]=""
                            [IE                     ]="ISENTO"
                            [Data_Cadastro          ]=PEDIDO_DATA
                            [Inativo                ]="N"
                            [Situacao do Cliente    ]="OTIMO"
                            [Tipo Pessoa            ]=TIPO_PESSOA
                            [Regime_Tributario      ]="DEBITO E CREDITO"  
                            [Pais                   ]="BRASIL"
                            [Codigo do Representante]=REPRESENTANTE
                            [Nome Fantasia Represent]=REP_NOME
                            UnLockRecord
                            
                            Moveto "\\Sistemas\\Cadastro\\DestObs"
                            End Down
                            [Codigo                 ] = CODCLI
                            [Observacoes            ] = OBS
                            UnLockRecord
                    EndIf   
            EndIf
            
            Adiciona_Cliente=False
            GetRecord "\\Sistemas\\Cadastro\\Destinat" CODCLI To REG_DESTINAT
            If RetVal
               Then Adiciona_Cliente=True
            EndIf   
                                                       
            ;---- Pedidos ------------------------------------------------------
            Moveto "PedidoC"
            Moveto [Numero Pedido Origem]
            Locate PEDORIG
            If Not RetVal
               Then While True
                      End
                      Moveto [Numero do Pedido]
                      If Numero_Lancamento("Interno","Locked_Down")
                         Then NPED = PROXLANCTO_NLANC
                              Release Vars PROXLANCTO_NLANC
                              Quitloop
                      EndIf    
                    EndWhile 
                    [Numero do Pedido     ]=NPED
                    [Codigo da Empresa    ]=VSDGEMPRESA
                    [Situacao do Pedido   ]="SUSPENSO"
                    [Data de Emissao      ]=PEDIDO_DATA
                    [Data de Entrega      ]=PEDIDO_DATA
                    [Numero Pedido Origem ]=PEDORIG
                    If Adiciona_Cliente
                       Then [Tipo                      ]="C"
                            If GENERICO
                               Then [Codigo                    ]=CLIENTE_GENERICO
                                    [Nome Fantasia EmitDest    ]=CLIENTE_NOME 
                                    [Tipo Pessoa               ]="F"
                                    [Consumidor Final          ]="S"
                                    [Razao Social              ]=CLIENTE_NOME
                                    [Endereco                  ]=CLIENTE_ENDERECO
                                    [Bairro                    ]=CLIENTE_BAIRRO
                                    [CEP                       ]=CLIENTE_CEP
                                    [Cidade                    ]=CLIENTE_CIDADE
                                    [UF                        ]=CLIENTE_ESTADO
                                    [CGC                       ]=CGC
                                    [IE                        ]="ISENTO"
                                    [Telefone                  ]=CLIENTE_TELEFONE  
                               Else [Codigo                    ]=REG_DESTINAT["Codigo"]
                                    [Nome Fantasia EmitDest    ]=REG_DESTINAT["Nome Fantasia EmitDest"] 
                                    [Tipo Pessoa               ]=REG_DESTINAT["Tipo Pessoa"]
                                    [Consumidor Final          ]="S"
                                    [Razao Social              ]=REG_DESTINAT["Razao Social"]
                                    [Endereco                  ]=REG_DESTINAT["Endereco"]
                                    [Bairro                    ]=REG_DESTINAT["Bairro"]
                                    [CEP                       ]=REG_DESTINAT["CEP"] 
                                    [Cidade                    ]=REG_DESTINAT["Cidade"]
                                    [UF                        ]=REG_DESTINAT["UF"]
                                    [CGC                       ]=REG_DESTINAT["CGC"]
                                    [IE                        ]=REG_DESTINAT["IE"]
                                    [Telefone                  ]=REG_DESTINAT["Telefone"] 
                            EndIf
                            [Endereco de Entrega       ]="O MESMO"
                            [Endereco de Cobranca      ]="O MESMO"
                    EndIf
                    [Codigo do Representante   ]=REPRESENTANTE
                    [Nome Fantasia Represent   ]=REP_NOME
                    [Condicao de Pagamento     ]=""
                    [Descricao CondPagto       ]=""
                    [Numero de Parcelas        ]=NUMERO_PARCELA                   ;VR_PARCELA
                    [Tipo de Pagamento         ]=""
                    [Composicao de Dias        ]=""
                    [Forma de Pagamento        ]=""
                    [Codigo da Destinacao      ]=DESTIN
                    If Adiciona_Transportador
                       Then [Codigo da Transportadora  ]=REG_TRANSP["Codigo da Transportadora"]
                            [Nome Fantasia Transport   ]=REG_TRANSP["Nome Fantasia Transport"]
                            [Razao Social Transport    ]=REG_TRANSP["Razao Social Transport"]
                            [Endereco Transport        ]=REG_TRANSP["Endereco Transport"]
                            [Bairro Transport          ]=REG_TRANSP["Bairro Transport"]
                            [CEP Transport             ]=REG_TRANSP["CEP Transport"]
                            [Cidade Transport          ]=REG_TRANSP["Cidade Transport"]
                            [UF Transport              ]=REG_TRANSP["UF Transport"]
                            [CGC Transport             ]=REG_TRANSP["CGC Transport"]
                            [IE Transport              ]=REG_TRANSP["IE Transport"]
                            [Codigo do Veiculo         ]=REG_TRANSP["Codigo do Veiculo"]
                            [Placa do Veiculo          ]=REG_TRANSP["Placa do Veiculo"]
                            [UF Veiculo                ]=REG_TRANSP["UF Veiculo"]
                            [Frete por Conta           ]=REG_TRANSP["Frete por Conta"]
                    EndIf
                    
                   ;[Taxa de Desconto          ]
                   ;[Valor do Desconto         ]
                    [Valor Mercadoria          ]=VR_SUBTOTAL
                    [Valor Desconto            ]=VR_DESCONTO
                    [Valor Mercadoria Liquido  ]=VR_SUBTOTAL
                   ;[Valor BCICMS              ]
                   ;[Valor ICMS                ]
                   ;[Valor IPI                 ]
                    [Valor Nota Fiscal         ]=VR_TOTAL
                   ;[Valor Despesas Acessorias ]
                   ;[Valor BCSubstituicao ICMS ]
                   ;[Valor Substituicao ICMS   ]
                    [Frete Incluso na Nota     ]="+"
                   ;[Aliquota BCFrete Nota     ]
                    [Valor do Frete            ]=VR_FRETE
                   ;[Aliquota BCICMS Frete     ]
                   ;[Aliquota de ICMS Frete    ]
                   ;[CFO Frete                 ]
                   ;[Valor do Seguro           ]
                   ;[Marca dos Volumes         ]
                   ;[Numero de Volumes         ]
                   ;[Especie de Volumes        ]
                   ;[Peso Bruto                ]
                   ;[Peso Liquido              ]
                    [Codigo da Tabela          ]=TABELA
                    [Sistema Gerador           ]="IE"
                    [Data_Inclusao             ]=Today()
                    [Hora_Inclusao             ]=SubStr(StrVal(Time()),1,5)
            EndIf   
            CONTA_ARRAY = CONTA_ARRAY + 1
            ARRAY_PEDIDO[CONTA_ARRAY] = NPED
    EndIf        
    
    ;---- Codigo do Item ---------------------------------------------------------
    If PED_ADD
       Then TM = Len(SKU)
            If TM<10
               Then For ii From TM+1 To 10
                      SKU = "0"+SKU
                    EndFor
            EndIf
          
            GetRecord "\\Sistemas\\Estoque\\Itens" SKU To REG_ITEM
            If Not RetVal
               Then Mensagem("Codigo do Item "+SKU+" referente ao pedido "+NPED+" nÆo foi localizado no cadastro de itens!")
               Else SEQ = SEQ + 1 
            
                    Moveto "PedidoI"
                    End Down
                    [Numero do Pedido       ]=NPED           
                    [Item do Pedido         ]=SEQ             
                    [Tipo do Item           ]=REG_ITEM["Tipo do Item"]        
                    [Codigo do Item         ]=REG_ITEM["Codigo do Item"]    
                    [Descricao do Item      ]=REG_ITEM["Descricao do Item"]    
                    [Referencia             ]=REG_ITEM["Referencia"]    
                    [Codigo da Cor_Tecido   ]=REG_ITEM["Codigo da Cor_Tecido"]    
                    [Descricao da Cor_Tecido]=REG_ITEM["Descricao da Cor_Tecido"]    
                    [Tamanho                ]=REG_ITEM["DTamanho"]
                    [Quantidade             ]=QUANTIDADE                 
                    [Unidade Fiscal         ]=REG_ITEM["Unidade Fiscal"]             
                    [Preco Unitario         ]=PRECO_VENDA             
                    [Preco Total            ]=[Quantidade]*[Preco Unitario]      
                    [NCM                    ]=REG_ITEM["NCM"]  
                    [Peso Liquido           ]=REG_ITEM["Peso Liquido"]               
                    [Peso Embalagem         ]=REG_ITEM["Peso Embalagem"]             
                    [Volumes                ]=REG_ITEM["Volumes"]
                    UnLockRecord
                    
                   ;Observacao_Item
                    
                   ;Tipo Tributacao            
                   ;CSOSN                      
                   ;Tributacao de ICMS         
                   ;Aliquota Reduzida BCICMS   
                   ;ICMS_BC                    
                   ;Aliquota de ICMS
                   ;Valor do ICMS              
                   ;Codigo MVA                 
                   ;MVA                        
                   ;ICMS_ST_Aliquota Reduzida  
                   ;ICMS_ST_BC                 
                   ;ICMS_ST_Aliquota           
                   ;ICMS_ST_Valor              
                   ;IPI_CST                    
                   ;Tributacao de IPI          
                   ;IPI_BC                     
                   ;Aliquota de IPI            
                   ;Valor do IPI               
                   ;Tributacao de ISSQN        
                   ;Aliquota de ISSQN          
                   ;PIS_CST                    
                   ;PIS_Aliquota               
                   ;COFINS_CST                 
                   ;COFINS_Aliquota
            EndIf
    EndIf
    QuitLoop
  EndWhile          
  Moveto "\\Sistemas\\Vendas\\Imp_Temp"
  Skip 
  If Eot() Then QuitLoop EndIf
EndWhile
Do_It!
ClearAll

If DynArraySize(ARRAY_PEDIDO)>0
   Then Gera_PedidoG() 
EndIf

SetDir "\\Sistemas\\Vendas"  

EndProc ;Importa_Correcao()

;*******************************************************************************
;* ROTINA PARA Ler/Gravacao Opcao                                              *
;*******************************************************************************
Proc ConfOpcoes(Opcao)
Private Opcao
  
Switch
  Case Opcao="Ler":
       If IsFile("IR_SITE.SC")
           Then Play "IR_SITE"
       EndIf
       If Not IsAssigned(VSDGPASTA) Then VSDGPASTA = VSDGDRIVE + "\\Note\\Importa" EndIf
  Case Opcao="Gravar":
       FileWrite        "IR_SITE.sc" From ";****** Variaveis de Configura‡„o Caminho Vise Informatica"+"\n"
       FileWrite Append "IR_SITE.sc" From "VSDGPASTA="+Chr(34)+AjustaPasta(VSDGPASTA)+Chr(34)+"\n"
EndSwitch
  
EndProc ;

;*******************************************************************************
;* Carregar Lista                                                              *
;*******************************************************************************
Proc AjustaPasta(s)
Private s,ns,i
  
ns=""
For i From 1 to Len(s)
 If SubStr(s,i,1)=Chr(92)
    Then ns=ns+Chr(92)
 EndIf
 ns=ns+SubStr(s,i,1)
EndFor
Return ns
EndProc

;*******************************************************************************
;* Excluir arquivo da Lista                                                    *
;*******************************************************************************
Proc ExcluirArquivoLista()
private i, c, Array_RegistroI

FileWrite        PrivDir()+"funcao1.txt"  From  "DELT|"+VSDGPASTA+ARQUIVO+"\n"
ExecVise(PrivDir()+"funcao1.txt")

Array_Registro[nlinha]=""

DynArray Array_RegistroI[]
c=0
For i From 1 To DynArraySize(Array_Registro)
  If IsBlank(Array_Registro[i]) Then Loop EndIf
  c=c+1
  Array_RegistroI[c]=Array_Registro[i]
EndFor

Release Vars Array_Registro
DynArray Array_Registro[]

For i From 1 To DynArraySize(Array_RegistroI)
  Array_Registro[i]=Array_RegistroI[i]
EndFor
Release Vars Array_RegistroI

if nlinha>DynArraySize(Array_Registro)
   then ArrayElement=DynArraySize(Array_Registro)
   else ArrayElement=nlinha
endif   

EndProc

;*******************************************************************************
;* Carregar Lista                                                              *
;*******************************************************************************
Proc PegaNomeArquivo(indice)
Private indice
  
Return Rtrim(SubStr(Array_Registro[Indice],025,100))
  
EndProc        

;*******************************************************************************
;* Carregar Lista                                                              *
;*******************************************************************************
Proc CarregarLista(arqtemp)
private arqtemp

ARQUIVO  =""
DynArray Array_Registro[]

Wcs=0
Lista_DiretorioD(VSDGPASTA,arqtemp,"C") 

For i from 1 to 7
  If Not IsFile(PrivDir()+"Dir.Txt")
     Then Sleep(1000)
          Loop
     Else Editor Open PrivDir()+"Dir.Txt"
          If ErrorCode()=27
             Then Sleep 1000
                  Loop
          EndIf
          
          While True
            Extrair_Linha()
            If IsBlank(ELinha) Then QuitLoop EndIf
            wcs=wcs+1
            Array_Registro[wcs]=SubStr(ELINHA,1,Len(ELINHA)-1)
          EndWhile
          CancelEdit
                                        
          QuitLoop
  EndIf
EndFor
ArrayElement=1
EndProc

;*******************************************************************************
;* Rotina ShowDialog para Imprimir em arquivo                                  *
;*******************************************************************************
Proc SD_Arquivo(Disparo,Campo,Evento,Elemento)
Private Disparo,Campo,Evento,Elemento

Temp=True
TECLA    =""
MSG_CAMPO=""

If Disparo="OPEN"
   Then AoCriarShowDialog()
        Campo="TG_EMPRESA"
        ArrayElement=nlinha
EndIf

If Disparo="UPDATE"
   Then Switch
          Case Campo="TG_CONFIG" : Play "\\Sistemas\\Ctarec\\SETPASTA"
                                   CarregarLista(TIPO_ARQ)
                                   Campo="TG_ARQUIVOS"
          OtherWise              : Return Temp
        EndSwitch  
EndIf

If Disparo="EVENT" And Evento["Type"]="KEY" Then
   Temp=False
   Switch  
     Case Evento["KeyCode"] = -59: Dialog_F1()
     Case Evento["KeyCode"] =  27:
          Temp=False
          Switch
            Case Campo="TG_EMPRESA"            : Campo="NO"
            Case Campo="TG_ARQUIVOS"           : Campo="TG_EMPRESA"
            Case Campo="TG_CONFIG"             : Campo="TG_ARQUIVOS"
            Case Campo="YES" Or Campo="ARQ_NO" : Campo="TG_ARQUIVOS"
          EndSwitch
     Case Evento["KeyCode"] = -83 And Campo="TG_ARQUIVOS":
              nlinha=ControlValue("TG_ARQUIVOS")
          ARQUIVO=PegaNomeArquivo(nlinha)

          ConfGeral("Confirma a exclus„o do arquivo "+ARQUIVO+" ?")
          If Ok="S"
             Then ExcluirArquivoLista()
          EndIf
     Case Evento["KeyCode"] = 13:
          Temp=False
          If Checa_TAG()
             Then Switch
                    Case Campo="TG_EMPRESA"     : Campo="TG_ARQUIVOS"
                         If VSDGEMPRESA=""
                            Then Mensagem("Informe a empresa para prosseguir!")
                                 VSDGNOMEMP=""
                                 Campo="TG_EMPRESA"
                         EndIf        
                    Case Campo="TG_ARQUIVOS"    : Campo="YES"
                         ARQUIVO=ControlValue("TG_ARQUIVOS")
                    Case Campo="TG_CONFIG"      : 
                         Play "\\Sistemas\\Ctarec\\SETPASTA"
                         CarregarLista(TIPO_ARQ)
                         Campo="TG_ARQUIVOS"
                  EndSwitch
          EndIf
   EndSwitch
EndIf
Switch
  Case Campo="TG_ARQUIVOS":
       MSG_CAMPO="Selecione o arquivo se desejado !"
       TECLA=""+"=Selecionar  Del=Excluir  "
EndSwitch

Monta_Prompt(MSG_CAMPO,TECLA)
Return Temp
EndProc                    
                         
;*******************************************************************************
;* Rotina Principal                                                            *
;*******************************************************************************
If Not IsAssigned(SYS_CODIGO_CLIENTE)  Then SYS_CODIGO_CLIENTE=""  EndIf
If Not IsAssigned(SYS_CHAPA_USUARIO)   Then SYS_CHAPA_USUARIO=""   EndIf
If Not IsAssigned(SYS_CONTROLE_DIA)    Then SYS_CONTROLE_DIA=""    EndIf

If SYS_CODIGO_CLIENTE="0227" Or SYS_CHAPA_USUARIO ="9999" 
   Then ROTINA_LIBERADA = True
   Else ROTINA_LIBERADA = False       
EndIf

If Not ROTINA_LIBERADA
   Then Mensagem("Rotina indispon¡vel !//Verificar com o Suporte VISE !")
        Return
EndIf

If Not Carrega_ParametrosC()
   Then Mensagem("Parametros n„o Cadastrado para esta Empresa ! [P_Dest]")
        Return
EndIf    

VSDGDRIVE   = SubStr(Directory(),1,2)
ConfOpcoes("Ler")

If DirExists(VSDGPASTA)=0
   Then Cria_Pasta(VSDGPASTA)
        Sleep 2000
EndIf

If DirExists(VSDGPASTA)=0
   Then Cria_Pasta(VSDGPASTA)
        Sleep 2000
EndIf                         

TIPO_ARQ = "PEDIDO*.csv"
ARQUIVO  = ""
Tipo_Ext = ".CSV"
nlinha   = 1

While True
 N_Pedido=0
 limparodape(0)
 ExibeRodape(1,"Aguarde, carregando arquivo(s) para importa‡Æo .csv")
 CarregarLista(TIPO_ARQ)
 ShowDialog "Importa‡Æo Site->Vise" Proc "SD_Arquivo"
   Trigger "OPEN","ARRIVE","UPDATE","CLOSE","SELECT"
   Key "F1","ENTER","ESC",
     -75, -77, -104, -105, -106, -107, -108, -109, -110, -111, -112, -113, -139, -140, -147      
    @ 03,12   Height 20 Width 78

    Label  @ 00,00 "Selecione a 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_NOMEMP" To VSDGNOMEMP

    @ 02,01 ?? "Caminho padrÆo para arquivos do site: "
    @ 03,02 ?? VSDGPASTA
    PaintCanvas Attribute 121 03,01,03,73

    Label  @ 05,00 "~L~ista de arquivos"  For "TG_ARQUIVOS"
    PickDynArray @06,01 Height 9 width 73
     Columns 1
      Array_Registro
       Tag "TG_ARQUIVOS"
        To ArrayElement

    Pushbutton @ 16,25 width 11 "~O~k"         OK     Default Value "Ok" Tag "YES"        To BottonValue
    Pushbutton @ 16,38 width 11 "~C~ancela"    CANCEL                    Tag "NO"         To BottonValue
    Pushbutton @ 16,61 width 14 "Con~f~igurar"                           Tag "TG_CONFIG"  To BottonValue

 EndDialog
 If Not Retval Then QuitLoop EndIf
                
 If VSDGEMPRESA=""
    Then Mensagem("Informe a empresa para prosseguir!")
         VSDGNOMEMP=""
         Loop 
  EndIf
  
  If DynArraySize(Array_Registro)=0
     Then Mensagem("NÆo existe arquivo selecionado !")
          Loop
  EndIf
 
  Array Array_TM[12]
 
  ARQUIVO=PegaNomeArquivo(ArrayElement)
  nlinha    =ArrayElement
 
  If IsBlank(ARQUIVO)
     Then Mensagem("Nome do arquivo a ler inv lido !")
          Loop
  EndIf      
 
  If Not IsAssigned(Array_Registro[ArrayElement]) 
     Then Mensagem("Impossivel localizar o arquivo!// //Verifique se adicionou o arquivo no local correto!")
          Loop
  EndIf
  
  If DirExists(VSDGPASTA)=0
     Then Mensagem("Pasta '"+VSDGDRIVE+VSDGPASTA+"' n„o existe !// //Impossivel importa‡„o !")
          Loop
  EndIf       

  NOM_ARQ   = ARQUIVO
  ARQ_TEMP2 = "IMPORTADO_"+NOM_ARQ
  ARQUIVO   = VSDGDRIVE+"\\NOTE\\IMPORTA\\PED_TEMP.CSV"
  
  If IsFile(ARQUIVO) 
     Then Deleta_Arquivo(ARQUIVO)
  EndIf
  
  Copia_Arquivo(VSDGDRIVE+"\\NOTE\\IMPORTA\\"+NOM_ARQ+" "+ARQUIVO)
  
  Importa_Pedido()
    
  If N_Pedido=0
     Then Mensagem("N„o foi localizado pedidos a ser importado!")
     Else If ARQ_TEMP2<>""
             Then cmd="REN "+VSDGDRIVE+"\\NOTE\\IMPORTA\\"+NOM_ARQ+" "+VSDGDRIVE+"\\NOTE\\IMPORTA\\"+ARQ_TEMP2
                  ExecVise(cmd)
                  Sleep (1000)    
                  Deleta_Arquivo(VSDGDRIVE+"\\NOTE\\IMPORTA\\PED_TEMP.CSV")                  
          EndIf
          Mensagem("Processo Conclu¡do!")
  EndIf       
EndWhile