;** IMP_SITE *******************************************************************
;*  Importacao de pedidos do site DIVINA PANELA p/ o sistema VISE              *
;*******************************************************************************
;Autor           : Vise Informatica (VISERP)
;Desenvolvido    : 22/10/2018 por Bruno Carvalho                  
;Ultima Alteracao: 16/03/2019 por Anivel Augusto Rodrigues                           
;Motivo Alteracao: Ajustes Numero_Lancamento("Interno","Locked_Down")
;Ultima Alteracao: 26/06/2019 por Bruno Carvalho                           
;Motivo Alteracao: Ajustes no nome caminho do arquivo ARQ_TEMP
;Ultima Alteracao: 10/11/2020 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes IsRegimeSimplesNacional, IsRegimeSimplesNacionalESRB

;*******************************************************************************
;* Rotina para gravar tabela do site                                           *
;*******************************************************************************
Proc Criar_Tabela()

If IsAssigned(Tabela_Site) 
   Then If IsTable(Tabela_Site)
           Then Delete Tabela_Site
        EndIf
EndIf           

Tabela_Site=Cria_Temp(PrivDir())

CRIAR_TABELA = True
Adiciona_Campo(Tabela_Site,"Pedido de Origem(A20),"+
                           "Data do Pedido(D),"+
                           "Hora do Pedido(A5),"+
                           "Status do pedido(A30),"+
                           "Pedido feito em(A30),"+
                           "Metodo de pagamento(A30),"+
                           "Tipo de cartÆo de pagto(A30),"+
                           "Tipo de entrega do pedido(A100),"+
                           "Subtotal do Pedido(N),"+
                           "Taxa do pedido(N),"+
                           "Valor de entrega(N),"+
                           "Desconto de pedido(N),"+
                           "Tot Geral pedido(N),"+
                           "Tot Geral Base de Pedidos(N),"+
                           "Encomenda paga(N),"+
                           "Encomenda Reembolsada(N),"+
                           "Valor ate vencimento(N),"+
                           "Qtd de itens encomendados(N),"+
                           "Nome do Cliente(A30),"+
                           "CPF(A30),"+
                           "Email do Cliente(A40),"+
                           "Nome do destinatario(A30),"+
                           "Empresa do destinatario(A30),"+
                           "Rua do destinatario(A50),"+
                           "Cep do destinatario(A30),"+
                           "Cidade do destinatario(A30),"+
                           "UF do destinatario(A5),"+
                           "Estado do destinatario(A30),"+
                           "Sigla do destinatario(A30),"+
                           "Pais do destinatario(A30),"+
                           "Telefone do destinatario(A30),"+
                           "Nome do comprador(A30),"+
                           "Empresa do comprador(A30),"+
                           "Rua do comprador(A50),"+
                           "Cep do comprador(A30),"+
                           "Cidade do comprador(A30),"+
                           "UF do comprador(A5),"+
                           "Estado do comprador(A30),"+
                           "Sigla do comprador(A30),"+
                           "Pais do comprador(A30),"+
                           "Telefone do comprador(A30),"+
                           "Incremento do item pedido(N),"+
                           "Nome do item(A40),"+
                           "Status do item(A30),"+
                           "Codigo_SKU do item(N),"+                            ;AlteraÆo neste campo
                           "Opcoes do item(A30),"+
                           "Preco original do item(N),"+
                           "Preco do item(N),"+
                           "Qtd do item pedido(N),"+
                           "Faturamedo item pedido(N),"+
                           "Quantidade item enviado(N),"+
                           "Quantidade item cancelado(N),"+
                           "Quantidade item devolvido(N),"+
                           "Taxa do item(N),"+
                           "Desconto do item(N),"+
                           "Total do item(N)")
                           
EndProc ;Criar_Tabela()

;*******************************************************************************
;* Rotina grava erros                                                          *
;*******************************************************************************
Proc Grava_Erro(erro)
Private erro

If Not ENCONTRADO_INCONSISTENCIA
   Then FileWrite        ARQ_ERRO From  "\027x0\015"+
                                        "** Relatorio ConciliaÆo CartÆo/AtualizaÆo/Baixas, arquivo: "+
                                        ARQUIVO+" **\n\n"
EndIf   
FileWrite Append ARQ_ERRO From  erro+"\n"

ENCONTRADO_INCONSISTENCIA=True
EndProc

;*******************************************************************************
;* Rotina para verificar campos numericos e atribuir valor zerado              *
;*******************************************************************************
Proc Verifica_Campo_Numerico(VR,CAMPO)
Private VR,CAMPO

If CAMPO="Subtotal do Pedido" Or                            
   CAMPO="Taxa do pedido" Or                                  
   CAMPO="Valor de entrega" Or                                
   CAMPO="Desconto de pedido" Or                            
   CAMPO="Tot Geral pedido" Or                                
   CAMPO="Tot Geral Base de Pedidos" Or              
   CAMPO="Encomenda paga" Or                        
   CAMPO="Encomenda Reembolsada" Or           
   CAMPO="Valor ate vencimento" Or             
   CAMPO="Qtd de itens encomendados" Or   
   CAMPO="Incremento do item pedido" Or      
   CAMPO="Codigo_SKU do item" Or           
   CAMPO="Preco original do item" Or
   CAMPO="Preco do item" Or
   CAMPO="Qtd do item pedido" Or                 
   CAMPO="Faturamedo item pedido" Or
   CAMPO="Quantidade item enviado" Or
   CAMPO="Quantidade item cancelado" Or
   CAMPO="Quantidade item devolvido" Or
   CAMPO="Taxa do item" Or
   CAMPO="Desconto do item" Or
   CAMPO="Total do item"
   Then VR=0 
   Else VR=""
EndIf          

Return VR

EndProc ;Verifica_Campo_Numerico    

;*******************************************************************************
;* Rotina para ajustar o delimitador                                           *
;*******************************************************************************
Proc Ajusta_Delimitador(LINHA)

;Altera "," por "|" ou ";" por "|" 
;H  casos em que a v¡rgula  de um n£mero decimal, no entanto, o valor est  dentro de ""

;LINHA = Tira_CharEspecial(Lower(LINHA))
;LINHA = Upper(LINHA)

If Search(";",LINHA)>0
   Then DELIMITADOR = ";" 
   Else DELIMITADOR = ","
EndIf   
PosI1=1
While True
  PosI1=Search(DELIMITADOR,LINHA)
  If PosI1=0
     Then If DELIMITADOR = ";"
            Then ;Ultimo Campo (Valor Numerico)
                 PosI4 = Search("R$",Upper(LINHA))
                 If PosI4>0
                    Then If SubStr(LINHA,PosI4+2,1)=" " 
                            Then LINHA = SubStr(LINHA,1,PosI4-1)+SubStr(LINHA,PosI4+3,Len(LINHA))
                            Else LINHA = SubStr(LINHA,1,PosI4-1)+SubStr(LINHA,PosI4+2,Len(LINHA))
                         EndIf
                         CARACTER = "*" ;Decimal 
                         PosI5 = Search(",",Upper(LINHA))
                         If PosI5>0                      
                            Then LINHA = SubStr(LINHA,1,PosI5-1)+CARACTER+SubStr(LINHA,PosI5+1,Len(LINHA))    
                         EndIf   
                 EndIf
          EndIf                
          QuitLoop
          
  EndIf
    
  PosI1=Search(DELIMITADOR,LINHA)
  PosI_Virgula=Search(",",LINHA)
  If DELIMITADOR = ";" And PosI_Virgula>0
     Then PosI2=Search(DELIMITADOR,SubStr(LINHA,PosI1+1,Len(LINHA)))  ;Achando o Intervalo                                 
          If PosI2>0
             Then LINHA = SubStr(LINHA,1,PosI1-1)+"|"+SubStr(LINHA,PosI1+1,Len(LINHA))
                  INTERVALO = SubStr(LINHA,PosI1+1,PosI2-1)
                  
                  INTERVALO = Tira_CharEspecial(Lower(INTERVALO))
                  INTERVALO = Upper(INTERVALO)
                  ESPACO_NUMERO = False
  
                  PosI3 = Search(",",INTERVALO)
                  PosI4 = 0
                  PosI5 = 0
                  If PosI3>0 
                     Then While PosI3>0
                            If Search("ADM",Upper(INTERVALO))>0
                               Then CARACTER = "&" ;String
                               Else CARACTER = "*" ;Decimal 
                            EndIf
                            INTERVALO = SubStr(INTERVALO,1,PosI3-1)+CARACTER+SubStr(INTERVALO,PosI3+1,Len(INTERVALO))
                            PosI3 = Search(",",INTERVALO)
                          EndWhile
                          ;Campo Negativo
                          PosI5 = Search("-",Upper(INTERVALO))
                          If PosI5>0 And CARACTER = "*"
                             Then INTERVALO = SubStr(INTERVALO,1,PosI5-1)+SubStr(INTERVALO,PosI5+1,Len(INTERVALO))  
                          EndIf
                          PosI4 = Search("R$",Upper(INTERVALO))
                          If PosI4>0
                             Then If SubStr(INTERVALO,3,PosI4)=" " 
                                     Then ESPACO_NUMERO=True
                                          INTERVALO = SubStr(INTERVALO,1,PosI4-2)+SubStr(INTERVALO,PosI4+3,Len(INTERVALO))
                                     Else INTERVALO = SubStr(INTERVALO,1,PosI4-2)+SubStr(INTERVALO,PosI4+2,Len(INTERVALO)) 
                                  EndIf     
                          EndIf
                  EndIf
                  Pos = Len(SubStr(LINHA,1,PosI1)+INTERVALO)
                  If PosI4>0 Then If ESPACO_NUMERO Then Pos = Pos+3 Else Pos = Pos+2 EndIf EndIf
                  If PosI5>0 Then Pos = Pos+1 EndIf 
                  LINHA = SubStr(LINHA,1,PosI1)+INTERVALO+SubStr(LINHA,Pos+1,Len(LINHA))       
             Else LINHA = SubStr(LINHA,1,PosI1-1)+"|"+SubStr(LINHA,PosI1+1,Len(LINHA))
           EndIf
     Else ;Quando utilizado 
          ;Verifica intervalo entre "", seria um intervalo de uma string, podendo ser valor decimal,
          ;os unicos campos que diferem  Pedido de Origem e CPF que nÆo possuem este intervalo entre ""  
          If SubStr(LINHA,PosI1+1,1)=Chr(34)
             Then LINHA = SubStr(LINHA,1,PosI1-1)+"|"+SubStr(LINHA,PosI1+1,Len(LINHA))
                  PosI2 = Search(Chr(34),SubStr(LINHA,PosI1+2,len(LINHA)))
                  If PosI2>0
                     Then INTERVALO = SubStr(LINHA,PosI1+2,PosI2-1)
                          
                          INTERVALO = Tira_CharEspecial(Lower(INTERVALO))
                          INTERVALO = Upper(INTERVALO)
        
                          PosI3 = Search(",",INTERVALO)
                          PosI4 = 0
                          PosI5 = 0
                          If PosI3>0 
                             Then While PosI3>0
                                    If Search("ADM",Upper(INTERVALO))>0
                                       Then CARACTER = ";" ;String
                                       Else CARACTER = "*" ;Decimal 
                                    EndIf
                                    INTERVALO = SubStr(INTERVALO,1,PosI3-1)+CARACTER+SubStr(INTERVALO,PosI3+1,Len(INTERVALO))
                                    PosI3 = Search(",",INTERVALO)
                                  EndWhile
                                  ;Campo Negativo
                                  PosI5 = Search("-",Upper(INTERVALO))
                                  If PosI5>0 And CARACTER = "*"
                                     Then INTERVALO = SubStr(INTERVALO,1,PosI5-1)+SubStr(INTERVALO,PosI5+1,Len(INTERVALO))  
                                  EndIf
                                  PosI4 = Search("R$",Upper(INTERVALO))
                                  If PosI4>0
                                     Then INTERVALO = SubStr(INTERVALO,1,PosI4-2)+SubStr(INTERVALO,PosI4+2,Len(INTERVALO))  
                                  EndIf
                          EndIf
                          Pos = Len(SubStr(LINHA,1,PosI1)+INTERVALO)
                          If PosI4>0 Then Pos = Pos+2 EndIf
                          If PosI5>0 Then Pos = Pos+1 EndIf 
                          LINHA = SubStr(LINHA,1,PosI1)+INTERVALO+SubStr(LINHA,Pos+3,Len(LINHA))
                  EndIf
             Else LINHA = SubStr(LINHA,1,PosI1-1)+"|"+SubStr(LINHA,PosI1+1,Len(LINHA)) 
          EndIf 
  EndIf
EndWhile

;Ajustando campos decimais
PosI1=1
While True
  PosI1=Search("*",LINHA)
  If PosI1=0
     Then QuitLoop
  EndIf
  LINHA = SubStr(LINHA,1,PosI1-1)+"."+SubStr(LINHA,PosI1+1,Len(LINHA))
EndWhile

PosI1=1
While True
  PosI1=Search("&",LINHA)
  If PosI1=0
     Then QuitLoop
  EndIf
  LINHA = SubStr(LINHA,1,PosI1-1)+","+SubStr(LINHA,PosI1+1,Len(LINHA))
EndWhile

Return LINHA

EndProc

;*******************************************************************************
;* Rotina para Pegar Valor                                                     *
;*******************************************************************************
Proc PegaValor(numcampo)

Campo=Field()

posi=1
For i From 1 To numcampo
  Pos=SearchFrom("|",[\Sistemas\Vendas\Imp_Temp->Field-1],posi)
  If pos=0 then pos=500 EndIf
  Valor=UPPER(RTrim(SubStr([\Sistemas\Vendas\Imp_Temp->Field-1],posi,(pos-posi))))
  Switch
    Case i=2 : Switch
                 Case  Campo="Data do Pedido" : 
                       PEDIDO_DATA = SubStr(Rtrim(Valor),1,10)
                       PosI = Search("/",PEDIDO_DATA)
                       If PosI>0
                          Then While PosI>0
                                 PEDIDO_DATA = SubStr(PEDIDO_DATA,1,PosI-1)+"."+SubStr(PEDIDO_DATA,PosI+1,Len(PEDIDO_DATA)) 
                                 PosI = Search("/",PEDIDO_DATA)
                                 If PosI=0 Then QuitLoop EndIf
                               EndWhile
                       EndIf
                       Valor = DateVal(PEDIDO_DATA)
                       If Type(Valor)<>"D" Then Return BlankDate() EndIf
                  Case Campo="Hora do Pedido" :   
                       PEDIDO_HORA = SubStr(Rtrim(Valor),12,5)
                       Valor = PEDIDO_HORA
                Endswitch        
    OtherWise : If IsBlank(Ltrim(Rtrim(Valor)))
                   Then Valor=Verifica_Campo_Numerico(Valor,Campo) 
               EndIf
  EndSwitch
  posi=pos+1
EndFor

Return Valor
EndProc

;*******************************************************************************
;* ROTINA Importa                                                              *
;*******************************************************************************
Proc Importa()

Aguardes("Aguarde, preparando dados para importaÆo")

FileWrite PrivDir()+"funcop.txt" From "COP|"+ARQUIVO+"|"+ARQ_TEMP+"\n" 
ExecVisecf(PrivDir()+"funcop.txt","")
Sleep 1000

If Not IsFile(ARQ_TEMP)
  Then MSG="No foi pos¡vel criar arquivo tempor rio para a tarefa" 
       Mensagem(MSG)
       Return False
EndIf

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

If IsAssigned(Varinner) Then Release Vars Varinner  EndIf
                            
FileRead ARQ_TEMP to Varinner
Edit "\\Sistemas\\Vendas\\Imp_Temp"
Pos=1
While True
  Posf=SearchFrom("\n",Varinner,Pos)
  If Posf=0 Then QuitLoop EndIf
  [Field-1]=Substr(Varinner,Pos,(Posf-Pos))
  Down
  Pos=Posf+1
EndWhile
Do_It!
ClearAll            

NR=NRecords("\\Sistemas\\Vendas\\Imp_Temp")
          
View Tabela_Site          
Coedit "\\Sistemas\\Vendas\\Imp_Temp"                SetHighLight Current Record 23 Field 31
Scan
  Barra(NR, RecNo())
  Aguarde("Aguarde, importando dados "+BARRA_STRING)
  
  [Field-1] = Ajusta_Delimitador([Field-1])
  If SubStr(Upper([Field-1]),1,3)="PED" Then Loop EndIf    ;Linha de T¡tulo
  
  Moveto Tabela_Site
  End Down
  Moveto [Pedido de Origem         ] [] = PegaValor(1)                     
  Moveto [Data do Pedido           ] [] = PegaValor(2)
  Moveto [Hora do Pedido           ] [] = PegaValor(2)                        
  Moveto [Status do pedido         ] [] = PegaValor(3)                       
  Moveto [Pedido feito em          ] [] = PegaValor(4)                       
  Moveto [Metodo de pagamento      ] [] = PegaValor(5)                   
  Moveto [Tipo de cartÆo de pagto  ] [] = PegaValor(6)                                  
  Moveto [Tipo de entrega do pedido] [] = PegaValor(7)                               
  Moveto [Subtotal do Pedido       ] [] = NumVal(PegaValor(8))                                         
  Moveto [Taxa do pedido           ] [] = NumVal(PegaValor(9))                                            
  Moveto [Valor de entrega         ] [] = NumVal(PegaValor(10))                                           
  Moveto [Desconto de pedido       ] [] = NumVal(PegaValor(11))                                         
  Moveto [Tot Geral pedido         ] [] = NumVal(PegaValor(12))                                           
  Moveto [Tot Geral Base de Pedidos] [] = NumVal(PegaValor(13))                                  
  Moveto [Encomenda paga           ] [] = NumVal(PegaValor(14))                                 
  Moveto [Encomenda Reembolsada    ] [] = NumVal(PegaValor(15))                           
  Moveto [Valor ate vencimento     ] [] = NumVal(PegaValor(16))                            
  Moveto [Qtd de itens encomendados] [] = NumVal(PegaValor(17))                       
  Moveto [Nome do Cliente          ] [] = PegaValor(18)                              
  Moveto [CPF                      ] [] = PegaValor(19)                                          
  Moveto [Email do Cliente         ] [] = PegaValor(20)                              
  Moveto [Nome do destinatario     ] [] = PegaValor(21)                          
  Moveto [Empresa do destinatario  ] [] = PegaValor(22)                       
  Moveto [Rua do destinatario      ] [] = PegaValor(23)                           
  Moveto [Cep do destinatario      ] [] = PegaValor(24)                           
  Moveto [Cidade do destinatario   ] [] = PegaValor(25)                        
  Moveto [UF do destinatario       ] [] = PegaValor(26)                             
  Moveto [Estado do destinatario   ] [] = PegaValor(27)                        
  Moveto [Sigla do destinatario    ] [] = PegaValor(28)                         
  Moveto [Pais do destinatario     ] [] = PegaValor(29)                          
  Moveto [Telefone do destinatario ] [] = PegaValor(30)                      
  Moveto [Nome do comprador        ] [] = PegaValor(31)                             
  Moveto [Empresa do comprador     ] [] = PegaValor(32)                          
  Moveto [Rua do comprador         ] [] = PegaValor(33)                              
  Moveto [Cep do comprador         ] [] = PegaValor(34)                              
  Moveto [Cidade do comprador      ] [] = PegaValor(35)                           
  Moveto [UF do comprador          ] [] = PegaValor(36)                                
  Moveto [Estado do comprador      ] [] = PegaValor(37)                           
  Moveto [Sigla do comprador       ] [] = PegaValor(38)                            
  Moveto [Pais do comprador        ] [] = PegaValor(39)                             
  Moveto [Telefone do comprador    ] [] = PegaValor(40)                         
  Moveto [Incremento do item pedido] [] = NumVal(PegaValor(41))                       
  Moveto [Nome do item             ] [] = PegaValor(42)                                
  Moveto [Status do item           ] [] = PegaValor(43)
  Moveto [Codigo_SKU do item       ] [] = NumVal(PegaValor(44))                             
  Moveto [Opcoes do item           ] [] = PegaValor(45)                                
  Moveto [Preco original do item   ] [] = NumVal(PegaValor(46))                          
  Moveto [Preco do item            ] [] = NumVal(PegaValor(47))                                   
  Moveto [Qtd do item pedido       ] [] = NumVal(PegaValor(48))                              
  Moveto [Faturamedo item pedido   ] [] = NumVal(PegaValor(49))                          
  Moveto [Quantidade item enviado  ] [] = NumVal(PegaValor(50))                         
  Moveto [Quantidade item cancelado] [] = NumVal(PegaValor(51))                       
  Moveto [Quantidade item devolvido] [] = NumVal(PegaValor(52))                       
  Moveto [Taxa do item             ] [] = NumVal(PegaValor(53))                                    
  Moveto [Desconto do item         ] [] = NumVal(PegaValor(54))                                
  Moveto [Total do item            ] [] = NumVal(PegaValor(55))        
  UnLockRecord
  
  Moveto "\\Sistemas\\Vendas\\Imp_Temp" 
EndScan
Do_it!
ClearAll

EndProc ;Importa()

;*******************************************************************************
;* Dados da Entrega                                                            *
;*******************************************************************************
Proc Dados_Entrega()  
  
DESTINATARIO_NOME     = REG_TABELA_SITE["Nome do destinatario"]
DESTINATARIO_EMPRESA  = REG_TABELA_SITE["Empresa do destinatario"]
DESTINATARIO_PAIS     = REG_TABELA_SITE["Pais do destinatario"]
DESTINATARIO_TELEFONE = REG_TABELA_SITE["Telefone do destinatario"]

DESTINATARIO_ENDERECO = Rtrim(REG_TABELA_SITE["Rua do destinatario"])
DESTINATARIO_CEP      = Rtrim(Tira_CharNum(REG_TABELA_SITE["Cep do destinatario"]))
DESTINATARIO_CIDADE   = Upper(Rtrim(REG_TABELA_SITE["Cidade do destinatario"]))
DESTINATARIO_UF       = Upper(Rtrim(REG_TABELA_SITE["UF do destinatario"]))

OBS_PEDIDO = OBS_PEDIDO + "DESTINATARIO ->    NOME: " + DESTINATARIO_NOME     + "\n"
;OBS_PEDIDO = OBS_PEDIDO + "                EMPRESA: " + DESTINATARIO_EMPRESA  + "\n"
;OBS_PEDIDO = OBS_PEDIDO + "                   PAIS: " + DESTINATARIO_PAIS     + "\n"
OBS_PEDIDO = OBS_PEDIDO + "               TELEFONE: " + DESTINATARIO_TELEFONE + "\n"

OBS_PEDIDO = OBS_PEDIDO + "               ENDERECO: " + DESTINATARIO_ENDERECO + "\n"
OBS_PEDIDO = OBS_PEDIDO + "                    CEP: " + DESTINATARIO_CEP + "\n"
OBS_PEDIDO = OBS_PEDIDO + "              CIDADE/UF: " + DESTINATARIO_CIDADE+"/"+DESTINATARIO_UF + "\n"


If Not IsBlank(DESTINATARIO_CEP)
   Then DESTINATARIO_CEP = SubStr(DESTINATARIO_CEP,1,2)+"."+
                           SubStr(DESTINATARIO_CEP,3,3)+"-"+
                           SubStr(DESTINATARIO_CEP,6,3)
EndIf

If DESTINATARIO_UF<>""
   Then GetRecord "\\Sistemas\\Vendas\\Estados" DESTINATARIO_UF To REG_UF
        If Not RetVal Then DESTINATARIO_UF = "" EndIf 
EndIf

Switch
  Case Search("DIVIN",DESTINATARIO_CIDADE)>0 And Search("POLIS",DESTINATARIO_CIDADE)>0 : DESTINATARIO_CIDADE = "DIVINOPOLIS"
  Case Search("MACEI",DESTINATARIO_CIDADE)>0                                           : DESTINATARIO_CIDADE = "MACEIO"
EndSwitch
          
GetRecord "\\Sistemas\\Cadastro\\Cidades" DESTINATARIO_CIDADE,DESTINATARIO_UF To REG_CIDADE
If Not RetVal
   Then Mensagem("Pedido de Origem "+Rtrim(REG_TABELA_SITE["Pedido de Origem"])+" -> Cliente "+
                 Rtrim(REG_TABELA_SITE["Nome do Cliente"])+": Cidade de Entrega "+DESTINATARIO_CIDADE+"/"+DESTINATARIO_UF+" inv lida!")
        DESTINATARIO_CIDADE = ""
EndIf
     
EndProc ;Dados_Entrega()

;*******************************************************************************
;* Dados do Transportador                                                      *
;*******************************************************************************
Proc Dados_Transportador()  

TRANSPORTADOR = "0001"

TRASNPORTADOR_COD       = ""     
TRASNPORTADOR_FANTASIA  = ""     
TRASNPORTADOR_RAZAO     = ""     
TRASNPORTADOR_ENDERECO  = ""     
TRASNPORTADOR_BAIRRO    = ""     
TRASNPORTADOR_CEP       = ""     
TRASNPORTADOR_CIDADE    = ""     
TRASNPORTADOR_UF        = ""     
TRASNPORTADOR_CGC       = ""     
TRASNPORTADOR_IE        = ""     
TRASNPORTADOR_VEICULO   = ""     
TRASNPORTADOR_PLACA     = ""     
TRASNPORTADOR_PLACA_UF  = ""     
TRASNPORTADOR_FRETE_POR = ""
                                    
GetRecord "\\Sistemas\\Vendas\\Transpor" TRANSPORTADOR To REG_TRANSPOR
If Not RetVal
   Then Return
EndIf  
TRASNPORTADOR_COD       = REG_TRANSPOR["Codigo da Transportadora"]
TRASNPORTADOR_FANTASIA  = REG_TRANSPOR["Nome Fantasia Transport" ]
TRASNPORTADOR_RAZAO     = REG_TRANSPOR["Razao Social Transport"  ]
TRASNPORTADOR_ENDERECO  = REG_TRANSPOR["Endereco Transport"      ]
TRASNPORTADOR_BAIRRO    = REG_TRANSPOR["Bairro Transport"        ]
TRASNPORTADOR_CEP       = REG_TRANSPOR["CEP Transport"           ]
TRASNPORTADOR_CIDADE    = REG_TRANSPOR["Cidade Transport"        ]
TRASNPORTADOR_UF        = REG_TRANSPOR["UF Transport"            ]
TRASNPORTADOR_CGC       = REG_TRANSPOR["CGC Transport"           ]
TRASNPORTADOR_IE        = REG_TRANSPOR["IE Transport"            ]
TRASNPORTADOR_VEICULO   = REG_TRANSPOR["Codigo do Veiculo"       ]
TRASNPORTADOR_PLACA     = REG_TRANSPOR["Placa do Veiculo"        ]
TRASNPORTADOR_PLACA_UF  = REG_TRANSPOR["UF Veiculo"              ]
TRASNPORTADOR_FRETE_POR = REG_TRANSPOR["Frete por Conta"         ]

EndProc

;*******************************************************************************
;* Rotina para processar dados                                                 *
;*******************************************************************************
Proc Processa()

NUMPED = "***"
SEQIT  = 0

AGUARDE("Aguarde, Restaurando Pedido")
SetDir "\\Sistemas\\Vendas"
       LidoPed  = 0
SyncPed   = 0
ImpoPed   = 0
LidoCli   = 0
NregPed   = 0
NPedImp   = 0

;Verifica Duplicidade
SITE_PED     = "***"
SITE_DATA    = BlankDate()
SITE_HORA    = "***"
SITE_CLIENTE = "***"

Ok      = "N"
NR      = NRecords(Tabela_Site)
NregPed = NR

View NoWindow "\\Sistemas\\Vendas\\P_PedWin"
View NoWindow "\\Sistemas\\Vendas\\Estados"
View NoWindow "\\Sistemas\\Vendas\\Destin"
View NoWindow "\\Sistemas\\Estoque\\Itens"
View NoWindow "\\Sistemas\\Estoque\\Iten_Cor"
View NoWindow "\\Sistemas\\Estoque\\TabMVA"
View NoWindow "\\Sistemas\\Estoque\\TpGrade"
View NoWindow "\\Sistemas\\Cadastro\\Destinat"
View NoWindow "\\Sistemas\\Cadastro\\DestObs"
View NoWindow "\\Sistemas\\Cadastro\\DestInfo"
View NoWindow "\\Sistemas\\Cadastro\\Empresas"
View NoWindow "\\Sistemas\\Cadastro\\Represen"
View NoWindow "PedidoC"
View NoWindow "PedidoI"
View NoWindow "PedidoG"
View NoWindow "PedidoV"
Coedit Tabela_Site
Scan
  CopyToArray REG_TABELA_SITE
  
  Barra(NR, RecNo())
  Aguarde("Aguarde, processando arquivo de importaÆo "+REG_TABELA_SITE["Pedido de Origem"]+" "+BARRA_STRING)
  
  ;**** Nome_Cliente/Data/Hora do Pedido ****
  NOME_PESSOA = Rtrim(REG_TABELA_SITE["Nome do Cliente"])
  PEDIDO_DATA = REG_TABELA_SITE["Data do Pedido"]
  PEDIDO_HORA = REG_TABELA_SITE["Hora do Pedido"] 
  If SITE_PED <> REG_TABELA_SITE["Pedido de Origem"] Or SITE_DATA<>PEDIDO_DATA Or SITE_HORA<>PEDIDO_HORA Or SITE_CLIENTE<>NOME_PESSOA
     Then FAZ_SOMENTE_ITEM_PEDIDO=False
          SITE_PED     = REG_TABELA_SITE["Pedido de Origem"]
          SITE_DATA    = PEDIDO_DATA
          SITE_HORA    = PEDIDO_HORA
          SITE_CLIENTE = NOME_PESSOA
          
          TOT_PEDIDO = TOT_PEDIDO + 1              
          PR_TOTAL   = 0
          QTD_TOTAL  = 0
          OBS_PEDIDO = ""
        
          ;**** CPF/CNPJ ****
          Docto = Tira_CharNum(LTrim(Rtrim(REG_TABELA_SITE["CPF"])))
          Switch
            Case Len(Docto)=14 : Docto=SubStr(Docto,01,2)+"."+
                                       SubStr(Docto,03,3)+"."+
                                       SubStr(Docto,06,3)+"/"+
                                       SubStr(Docto,09,4)+"-"+
                                       SubStr(Docto,13,2)          
            Case Len(Docto)=11 : Docto=SubStr(Docto,01,3)+"."+
                                       SubStr(Docto,04,3)+"."+
                                       SubStr(Docto,07,3)+"-"+
                                       SubStr(Docto,10,2)
            OtherWise          : Mensagem("Pedido de Origem "+Rtrim(REG_TABELA_SITE["Pedido de Origem"])+" -> Cliente "+
                                          Rtrim(REG_TABELA_SITE["Nome do Cliente"])+": Sem CPF/CNPJ informado!")
                                 Moveto Tabela_Site
                                 Loop                    
          EndSwitch
          
          ;**** CEP ****
          CEP = Rtrim(Tira_CharNum(REG_TABELA_SITE["Cep do comprador"]))
          If Not IsBlank(CEP)
             Then CEP=SubStr(CEP,1,2)+"."+
                      SubStr(CEP,3,3)+"-"+
                      SubStr(CEP,6,3)
          EndIf
          
          If IsAssigned(CIDADE_PADRAO) And IsAssigned(UF_PADRAO)
             Then UF          = UF_PADRAO 
                  CIDADE      = CIDADE_PADRAO
             Else UF          = Upper(Rtrim(REG_TABELA_SITE["UF do comprador"]))
                  CIDADE      = Upper(Rtrim(REG_TABELA_SITE["Cidade do comprador"]))
                  
                  Switch
                    Case Search("DIVIN",CIDADE)>0 And Search("POLIS",CIDADE)>0 : CIDADE = "DIVINOPOLIS"
                    Case Search("MACEI",CIDADE)>0                              : CIDADE = "MACEIO"
                  EndSwitch
                  
                  If UF<>""
                     Then GetRecord "\\Sistemas\\Vendas\\Estados" UF To REG_UF
                          If Not RetVal Then UF = "" EndIf 
                  EndIf
                  
                  GetRecord "\\Sistemas\\Cadastro\\Cidades" CIDADE,UF To REG_CIDADE
                  If Not RetVal
                     Then Mensagem("Pedido de Origem "+Rtrim(REG_TABELA_SITE["Pedido de Origem"])+" -> Cliente "+
                                   Rtrim(REG_TABELA_SITE["Nome do Cliente"])+": Cidade "+CIDADE+" inv lida")
                          CIDADE = ""
                  EndIf 
          EndIf
          
          ClienteOk=True
          LidoCli=LidoCli+1
          Moveto "\\Sistemas\\Cadastro\\Destinat"
          Moveto [CGC]
          Locate Docto
          If RetVal                 
             Then CODCLI=[Codigo]
                  CopyToArray REG_CLIENTE
             Else If Not CriaCliente()
                     Then CODCLI=""
                          Mensagem("Pedido de Origem "+Rtrim(REG_TABELA_SITE["Pedido de Origem"])+" -> Cliente "+
                                    Rtrim(REG_TABELA_SITE["Nome do Cliente"])+": No foi poss¡vel cadastrar este cliente!")
                          Moveto Tabela_Site
                          Loop         
                  EndIf
          EndIf
                  
          ;VERIFICAR
          
          ;Qual DestinaÆo a ser utilizada?
          ;Ser  somente A Vista ou ter  A Prazo, como ir  funcionar?
          ;Qual o cartÆo utilizado se compra for realizada por este meio de pagamento
          ;Ter  opxäes de aplicar desconto apenas em itens ou no total final do pedido? 
          ;Qual Transportador FIXO a ser definido?
          ;Formas de Pagamento: CD, CT e BO, apenas?
          
          ;NÆo ha bairro no cadastro?
          
          ;Criar um Transportador FIXO
          ;Pedido de Origem: STXXXXXXXX (Ter  a sigla ST antes do numero do pedido de origem)
          ;Status: ABERTO
          ;Forma de pagamento: CD
          ;                    CT
          ;                    BO
          ;Valor de Entrega ser  o valor do frete
          ;SubTotal: Mercadoria
          ;Taxa
          ;Desconto
          ;Liquido
          ;Verificar Taxa e Desconto do Item
          
          ;SERµ ADICIONADO NAS OBSERVACOES
          ;- Nome do Destinatario
          ;- Telefone do Destinatario
          
          ;DADOS DO CADASTRO (Informaäes do Comprador)
          ;Nome do Cliente
          
          ;LOCAL DE ENTREGA
          ;Est  localizado ap¢s os dados do destinatario da tabela importada 
        
          ;---- Dados do Site ---------------------------------------------------------- 
          STATUS_PEDIDO = REG_TABELA_SITE["Status do pedido"]
          Switch
            Case STATUS_PEDIDO = "AGUARDANDO_PAGAMENTO_PS" : STATUS_PEDIDO = ""
            Case STATUS_PEDIDO = "CANCELADA_PS"            : STATUS_PEDIDO = ""
            Case STATUS_PEDIDO = "CANCELED"                : STATUS_PEDIDO = ""
            Case STATUS_PEDIDO = "PENDING"                 : STATUS_PEDIDO = ""
            OtherWise                                      : STATUS_PEDIDO = ""
          EndSwitch  
          
          MODO_PAGTO = REG_TABELA_SITE["Metodo de pagamento"]
          Switch
            Case MODO_PAGTO = "CHECKMO"                : MODO_PAGTO = "BO" 
            Case MODO_PAGTO = "PAGSEGURO_BOLETO"       : MODO_PAGTO = "BO"
            Case MODO_PAGTO = "PAGSEGURO_CREDIT_CARD"  : MODO_PAGTO = "CT"
            Case MODO_PAGTO = "PAGSEGURO_ONLINE_DEBIT" : MODO_PAGTO = "CD"
            OtherWise                                  : MODO_PAGTO = ""
          EndSwitch
          
          ;VERIFICAR O QUE SERIA CHECKMO ???
          ;VERIFICAR TODOS OS DADOS CONFORME TIPO DO MODO DE PAGAMENTO
          ;[Condicao de Pagamento    ] 
          ;[Descricao CondPagto      ] 
          ;[Numero de Parcelas       ]
          ;[Tipo de Pagamento        ]
          ;[Composicao de Dias       ]
          ;[Forma de Pagamento       ]    
                    
          ;VERIFICAR DESTINACAO e CFOP        
          
          STATUS_ITEM = REG_TABELA_SITE["Status do item"]
          Switch
            Case STATUS_ITEM = "CANCELADO"  : STATUS_ITEM = ""
            Case STATUS_ITEM = "FATURADO"   : STATUS_ITEM = ""
            Case STATUS_ITEM = "SOLICITADO" : STATUS_ITEM = ""
          EndSwitch
            
          TIPO_ENTREGA = Rtrim(Ltrim(Upper(REG_TABELA_SITE["Tipo de entrega do pedido"])))   
          Switch
            Case Search("CORREIOS",TIPO_ENTREGA)>0 : TIPO_ENTREGA = ""
            Case Search("ENTREGA",TIPO_ENTREGA)>0  : TIPO_ENTREGA = ""
            Case Search("RETIRADA",TIPO_ENTREGA)>0 : TIPO_ENTREGA = "" 
          EndSwitch
          
          VALOR_PEDIDO        = REG_TABELA_SITE["Subtotal do Pedido"]
          VALOR_ENTREGA       = REG_TABELA_SITE["Valor de entrega"]  
          DESCONTO_PED        = REG_TABELA_SITE["Desconto de pedido"]
          VALOR_TOTAL_PED     = REG_TABELA_SITE["Tot Geral pedido"]
          VALOR_ATE_VENCTO    = REG_TABELA_SITE["Valor ate vencimento"]
          
          PEDIDO_TAXA               = BlankNum()
          PEDIDO_MERCADORIA         = VALOR_PEDIDO
          PEDIDO_DESCONTO           = DESCONTO_PED
          PEDIDO_MERCADORIA_LIQUIDO = VALOR_PEDIDO
          PEDIDO_VALOR_NF           = VALOR_TOTAL_PED
          If VALOR_ENTREGA>0
             Then PEDIDO_FRETE_INCLUSO_NOTA = "+"
             Else PEDIDO_FRETE_INCLUSO_NOTA = "N"
          EndIf    
          PEDIDO_VALOR_FRETE        = VALOR_ENTREGA   
          
          ;---- Dados de Entrega -------------------------------------------------------
          Dados_Entrega()  
          
     Else FAZ_SOMENTE_ITEM_PEDIDO = True
  EndIf
  
  ITEM_DESCONTO       = REG_TABELA_SITE["Desconto do item"]
  ITEM_QTD            = REG_TABELA_SITE["Qtd de itens encomendados"]
  ITEM_QTD_INCREMENTO = REG_TABELA_SITE["Incremento do item pedido"]
  ITEM_NOME           = REG_TABELA_SITE["Nome do item"]
  ITEM_CODIGO         = AlinhM(Ltrim(REG_TABELA_SITE["Codigo_SKU do item"]),10)
  ITEM_PRECO_ORIGINAL = REG_TABELA_SITE["Preco original do item"]
  ITEM_PRECO          = REG_TABELA_SITE["Preco do item"]
  ITEM_QTD            = REG_TABELA_SITE["Qtd do item pedido"]
  ITEM_FATURADO       = REG_TABELA_SITE["Faturamedo item pedido"]
  ITEM_ENVIADO        = REG_TABELA_SITE["Quantidade item enviado"]
  ITEM_CANCELADO      = REG_TABELA_SITE["Quantidade item cancelado"]
  ITEM_QTD_DEVOLVIDO  = REG_TABELA_SITE["Quantidade item devolvido"]
  ITEM_TAXA           = REG_TABELA_SITE["Taxa do item"]  
  ITEM_TOTAL          = REG_TABELA_SITE["Total do item"]
  
  If FAZ_SOMENTE_ITEM_PEDIDO
     Then If Not PED_OK And DUPLICIDADE <> 1 
             Then If DUPLICIDADE = 2 
                     Then ;Caso tenha alguma peculariedade futuramente
                     Else DUPLICIDADE = 3
                  EndIf    
                  Moveto Tabela_Site
                  Loop            
          EndIf 
          Moveto "PedidoC"
          Checa_Impostos()
          Gera_PedidoI()
          Release Vars REG_TABELA_SITE
          Moveto Tabela_Site  
          Loop
  EndIf    
  
  ;**** Pedidos Original ****
  LidoPed=LidoPed+1

  Seq=0
  grdant="***"

  DynArray AUX_PEDIDO[]
  CONT_PEDIDO = 0
  
  DUPLICIDADE = 0
  PEDORIG     = "ST"+Rtrim(REG_TABELA_SITE["Pedido de Origem"])
  PED_OK      = True
  
  Moveto "PedidoC"
  Moveto [Numero Pedido Origem]
  Locate IndexOrder By "Pedido Origem" PEDORIG,VENDEDOR_COD,CODCLI,PEDIDO_DATA
  If RetVal
     Then PED_OK=False    
          While True
            SyncPed=SyncPed+1
            CONT_PEDIDO = CONT_PEDIDO + 1
            AUX_PEDIDO[CONT_PEDIDO] = [Numero do Pedido] 
            Skip
            If Eot() Then QuitLoop EndIf
            Locate Next IndexOrder By "Pedido Origem" PEDORIG,"",CODCLI,PEDIDO_DATA
            If Not RetVal Then QuitLoop EndIf
          EndWhile
          
          If GERA_DUPLICADO
            Then If Not PED_OK
                    Then MSG = "" 
                         For wi From 1 To DynArraySize(AUX_PEDIDO)
                           MSG = MSG + Completa("PED: "+Format("W6",AUX_PEDIDO[wi])+" ORIGEM: "+
                                                        Format("W6",SubStr(PEDORIG,6,6))+" REP: "+Format("W4",[Codigo do Representante])+" CLIENTE: "+
                                                        Format("W4",CODCLI)+" EMISSAO: "+Format("D13",[Data de Emissao]),76," ")+"//"
                           MSG = MSG + Completa("SITUACAO: "+[Situacao do Pedido],76," ")+"//"                          
                         EndFor
                         CONFGERAL_N(Completa("Pedido Original j  existe no Sistema !",76," ")+"//"+MSG+
                                     Completa("Deseja Importar o Pedido ?",76," "))
                         If Ok="S" 
                            Then DUPLICIDADE = 1
                                 PED_OK=True
                            Else DUPLICIDADE = 2    
                         EndIf  
                  EndIf      
          EndIF
  EndIf
  
  If Not PED_OK And DUPLICIDADE <> 1 
     Then If DUPLICIDADE = 2 
             Then ;Caso tenha alguma peculariedade futuramente
             Else DUPLICIDADE = 3
          EndIf    
          Linha_Erro_Duplicidade(DUPLICIDADE)
          TOT_ERRO = TOT_ERRO + 1
          Moveto Tabela_Site
          Loop            
  EndIf        
  
  ;**** Pedidos ****
  Moveto "PedidoC"
  While True
    End
    Moveto [Numero do Pedido]
    If Numero_Lancamento("Interno","Locked_Down")
       Then NPED = PROXLANCTO_NLANC
            Release Vars PROXLANCTO_NLANC
            quitloop
    EndIf    
  EndWhile

 ;Moveto [Numero do Pedido]
 ;While True
 ;  End
 ;  If Numero_Lancamento("Interno","")
 ;     Then NPED = PROXLANCTO_NLANC
 ;          Release Vars PROXLANCTO_NLANC
 ;  EndIf
 ;  Down
 ;  [Numero do Pedido]=NPED
 ;  If IsLockRecord()
 ;     Then Del
 ;     Else QuitLoop
 ;  EndIf
 ;EndWhile
  
  If DUPLICIDADE = 1
     Then Linha_Erro_Duplicidade(DUPLICIDADE)
          TOT_ERRO = TOT_ERRO + 1
  EndIf             

  TOT_PEDIDO_IMPORTADO = TOT_PEDIDO_IMPORTADO + 1
  If NUM_PEDIDO <> ""
     Then NUM_PEDIDO = NUM_PEDIDO + ", " + NPED
     Else NUM_PEDIDO = NPED
  EndIf
         
  ;---- Dados da Transportadora --------------------------------------------------------       
  Dados_Transportador()        
         
  ImpoPed=ImpoPed+1
  
  If PEDIDO_DESCONTO<=0.00 Then PEDIDO_DESCONTO=BlankNum() EndIf
  NPedImp = NPedImp + 1
  
  [Numero do Pedido         ] = NPED 
  [Codigo da Empresa        ] = VSDGEMPRESA
  [Nome Fantasia Empresa    ] = VSDGNOMEMP 
  [Data de Emissao          ] = PEDIDO_DATA 
  [Data de Entrega          ] = PEDIDO_DATA  
  [Tipo                     ] = REG_CLIENTE["Tipo"] 
  [Codigo                   ] = REG_CLIENTE["Codigo"]  
  [Nome Fantasia EmitDest   ] = REG_CLIENTE["Nome Fantasia EmitDest"] 
  [Tipo Pessoa              ] = REG_CLIENTE["Tipo Pessoa"] 
  If SubStr(REG_CLIENTE["Tipo Pessoa"],1,1)="F"
     Then [Consumidor Final ] = "S"
     Else [Consumidor Final ] = "N"
  EndIf      
  [Razao Social             ] = REG_CLIENTE["Razao Social"]
  [Endereco                 ] = REG_CLIENTE["Endereco"]            
  [Bairro                   ] = REG_CLIENTE["Bairro"] 
  [CEP                      ] = REG_CLIENTE["CEP"] 
  [Cidade                   ] = REG_CLIENTE["Cidade"] 
  [UF                       ] = REG_CLIENTE["UF"] 
  [CGC                      ] = REG_CLIENTE["CGC"] 
  [IE                       ] = REG_CLIENTE["IE"] 
  [Telefone                 ] = REG_CLIENTE["Telefone"] 
  
  [Endereco de Entrega      ] = DESTINATARIO_ENDERECO 
  [CEP de Entrega           ] = DESTINATARIO_CEP 
  [Cidade de Entrega        ] = DESTINATARIO_CIDADE
  [UF de Entrega            ] = DESTINATARIO_UF  
  
  [Endereco de Cobranca     ] = "O MESMO" 
 ;[Bairro de Cobranca       ] = 
 ;[CEP de Cobranca          ] = 
 ;[Cidade de Cobranca       ] = 
 ;[UF de Cobranca           ] = 
  
 [Codigo do Representante   ] = VENDEDOR_COD 
 [Nome Fantasia Represent   ] = VENDEDOR_NOME
 [Comissao do Representante ] = VENDEDOR_COMISSAO
 
  Switch
    Case MODO_PAGTO = "CT" : [Condicao de Pagamento    ] = "01" 
                             [Descricao CondPagto      ] = "A VISTA" 
                             [Numero de Parcelas       ] = 1
                             [Tipo de Pagamento        ] = "V"
                             [Composicao de Dias       ] = "1"
                             [Forma de Pagamento       ] = "CT"
    Case MODO_PAGTO = "CD" : [Condicao de Pagamento    ] = "01" 
                             [Descricao CondPagto      ] = "A VISTA" 
                             [Numero de Parcelas       ] = 1
                             [Tipo de Pagamento        ] = "V"
                             [Composicao de Dias       ] = "1"
                             [Forma de Pagamento       ] = "CD"
    Case MODO_PAGTO = "BO" : [Condicao de Pagamento    ] = "01" 
                             [Descricao CondPagto      ] = "A VISTA" 
                             [Numero de Parcelas       ] = 1
                             [Tipo de Pagamento        ] = "V"
                             [Composicao de Dias       ] = "1"
                             [Forma de Pagamento       ] = "BO"                                                 
  EndSwitch 
  [Codigo da Destinacao     ] = DESTINACAO_COD 
  [Descricao da Destinacao  ] = DESTINACAO_DES  
  [CFO                      ] = CFOP
  [Codigo da Transportadora ] = TRASNPORTADOR_COD
  [Nome Fantasia Transport  ] = TRASNPORTADOR_FANTASIA    
  [Razao Social Transport   ] = TRASNPORTADOR_RAZAO       
  [Endereco Transport       ] = TRASNPORTADOR_ENDERECO    
  [Bairro Transport         ] = TRASNPORTADOR_BAIRRO      
  [CEP Transport            ] = TRASNPORTADOR_CEP         
  [Cidade Transport         ] = TRASNPORTADOR_CIDADE      
  [UF Transport             ] = TRASNPORTADOR_UF          
  [CGC Transport            ] = TRASNPORTADOR_CGC         
  [IE Transport             ] = TRASNPORTADOR_IE          
  [Codigo do Veiculo        ] = TRASNPORTADOR_VEICULO     
  [Placa do Veiculo         ] = TRASNPORTADOR_PLACA       
  [UF Veiculo               ] = TRASNPORTADOR_PLACA_UF    
  [Frete por Conta          ] = TRASNPORTADOR_FRETE_POR
  [Taxa de Desconto         ] = PEDIDO_TAXA  
  [Valor do Desconto        ] = PEDIDO_DESCONTO
  [Valor Mercadoria         ] = PEDIDO_MERCADORIA   
  [Valor Desconto           ] = PEDIDO_DESCONTO  
  [Valor Mercadoria Liquido ] = PEDIDO_MERCADORIA_LIQUIDO 
 ;[Valor BCICMS             ] =  
 ;[Valor ICMS               ] = 
 ;[Valor IPI                ] = 
  [Valor Nota Fiscal        ] = PEDIDO_VALOR_NF 
 ;[Valor Despesas Acessorias] = 
 ;[Valor BCSubstituicao ICMS] = 
 ;[Valor Substituicao ICMS  ] = 
  [Frete Incluso na Nota    ] = PEDIDO_FRETE_INCLUSO_NOTA 
 ;[Aliquota BCFrete Nota    ] = 
  [Valor do Frete           ] = PEDIDO_VALOR_FRETE 
 ;[Aliquota BCICMS Frete    ] = 
 ;[Aliquota de ICMS Frete   ] = 
 ;[Cfo Frete                ] = 
 ;[Valor do Seguro          ] = 
 ;[Marca dos Volumes        ] = 
 ;[Numero de Volumes        ] = 
 ;[Especie de Volumes       ] = 
 ;[Especie de Volumes       ] = 
 ;[Peso Bruto               ] = 
 ;[Peso Liquido             ] = 
 ;[Observacao na Nota Fiscal] =  
  [Observacao do Pedido     ] = OBS_PEDIDO 
 ;[Codigo_Entrega_Cobranca  ] = 
  [Situacao do Pedido       ] = "ABERTO" 
 ;[Situacao do Cliente      ] = 
 ;[Numero Nota Gerada_Ultima] = 
 ;[Codigo da Tabela         ] = 
  [Sistema Gerador          ] = "ST" 
 ;[Livre                    ] = 
 ;[Origem do Pedido         ] = 
 ;[Lookup_Tabela_Frete      ] = 
 ;[Lookup_TabPreco_CondPagto] = 
 ;[Numero_Carregamento      ] = 
 ;[Codigo_Usuario           ] = 
  [Data_Inclusao            ] = PEDIDO_DATA 
  [Hora_Inclusao            ] = PEDIDO_HORA 
 ;[Numero_Controle_Dia      ] = 
  [Numero Pedido Origem     ] = PEDORIG 
 ;[Lookup_Destmsg           ] = 
 ;[Pedido Impresso          ] = 
  [Valor Servico            ] = BlankNum()  
 ;[Valor BCISSQN            ] = 
 ;[Valor ISSQN              ] =
 ;[Valor PIS                ] =
 ;[Valor COFINS             ] =
 [Hora de Saida            ] = PEDIDO_HORA
 Controle_Dia()
  
  If Not ClienteOk 
     Then
    ;[Codigo                  ]=""
    ;[Codigo do Representante ]=""
    ;[Codigo da Transportadora]=""
    ;[Frete por Conta         ]=""
    ;[Codigo                  ]=REG_TABELA_SITE["Codigo"]
    ;[Codigo do Representante ]=REG_TABELA_SITE["Codigo do Representante"]
    ;[Codigo da Transportadora]=REG_TABELA_SITE["Codigo da Transportadora"]
    ;[Frete por Conta         ]=REG_TABELA_SITE["Frete por Conta"]
  EndIf
  UnLockRecord    

  Checa_Impostos()
  Gera_PedidoI()
  
  Release Vars REG_TABELA_SITE
  Moveto Tabela_Site
EndScan
Do_It!
ClearAll

Return True

EndProc ;Processa()
   
;*******************************************************************************
;* Rotina de ImpressÆo do Relatorio de Ocorrncia de Erro                      *
;*******************************************************************************
Proc Relatorio_Erro(PARAM)
Private PARAM
          
If IsFile(ARQIMP)
   Then MSG = "Ser  visualizado as ocorrncias de erros!"
        
        If PARAM = "ERRO"
           Then MSG = "O  RELATORIO DE OCORRENCIA DE ERROS REFERENTE A IMPORTACAO ANTERIOR//"+
                      "NAO  FOI GERADO DEVIDO A UMA FALHA NO SISTEMA.                     ////"+
                      "** Ser  visualizado estas ocorrncias de erros!                    "
                TOTAL_LINHA_ERRO = 5
                Linha_Erro("\n"+
                          "  ** ESTE RELATORIO DE OCORRENCIA DE ERROS  REFERENTE A IMPORTAO ANTERIOR, O QUAL "+
                          "NAO HAVIA SIDO FINALIZADO DEVIDO A UMA FALHA NO SISTEMA.")
        EndIf
        Mensagem(MSG)
        Impressao_Orientacao="Paisagem"
        PDFZEBRA=False
        DISPOSITIVO_OPCAO="V"
        ImpriArq(ARQIMP)
        Return
EndIf                 

If IsFile(ARQREL) And Not IsFile(ARQIMP)
   Then If PARAM="ERRO"
           Then MSG = "O RELATORIO DA RELACAO DOS PEDIDOS IMPORTADOS REFERENTE A IMPORTACAO //"+
                      "ANTERIOR NAO FOI GERADO DEVIDO A UMA FALHA NO SISTEMA.               ////"+
                      "Deseja visualizar a relao destes pedidos importados anteriormente ?"
                      TOTAL_LINHA_ERRO_REL = 5
                      Imprime_Relacao("\n"+
                                      "  ** ESTE RELATORIO DA RELACAO DOS PEDIDOS IMPORTADOS  REFERENTE A IMPORTAO ANTERIOR, O QUAL "+
                                      "NAO HAVIA SIDO FINALIZADO DEVIDO A UMA FALHA NO SISTEMA.")
           Else MSG = "Deseja visualizar a relao dos pedidos importados ?"                       
        EndIf
        ConfGeral(MSG)
        If Ok="S"
           Then Impressao_Orientacao="Paisagem"
                PDFZEBRA=False
                DISPOSITIVO_OPCAO="V"
                ImpriArq(ARQREL)
        EndIf
EndIf

EndProc ;Relatorio_Erro()

;*******************************************************************************
;* Rotina Gera Tabela PedidoI                                                  *
;*******************************************************************************
Proc Gera_PedidoI()
Private i,tm, item, ItemNovo

Qtd  = ITEM_QTD
;QtdF = ITEM_FATURADO
QtdF = 0
Item = ITEM_CODIGO

;H  desconto no item, vari vel de controle ITEM_DESCONTO, no entanto nÆo vi alteraÆo no preo total,
;apenas para teste, o desconto est  sendo blanknum()
ITEM_DESCONTO=BlaNknum()

If ITEM_TAXA=0 Then ITEM_TAXA = BlankNum() EndIf

GetRecord "\\Sistemas\\Estoque\\Itens" Item to REGITEM
If Not RetVal 
   Then Mensagem("Item "+Item+" do pedido no foi localizado no cadastro de itens !")
        Return         
EndIf 
          
Moveto "PedidoI"          
End Down

;ITEM_DESCONTO       = REG_TABELA_SITE["Desconto do item"]
;ITEM_QTD_INCREMENTO = REG_TABELA_SITE["Incremento do item pedido"]
;ITEM_NOME           = REG_TABELA_SITE["Nome do item"]
  
;ITEM_PRECO_ORIGINAL = REG_TABELA_SITE["Preco original do item"]
;ITEM_PRECO          = REG_TABELA_SITE["Preco do item"]

;ITEM_ENVIADO        = REG_TABELA_SITE["Quantidade item enviado"]
;ITEM_CANCELADO      = REG_TABELA_SITE["Quantidade item cancelado"]
;ITEM_QTD_DEVOLVIDO  = REG_TABELA_SITE["Quantidade item devolvido"]
;ITEM_TAXA           = REG_TABELA_SITE["Taxa do item"]  
;ITEM_TOTAL          = REG_TABELA_SITE["Total do item"]

Seq=Seq+1
[Numero do Pedido         ]=[PedidoC->Numero do Pedido]
[Item do Pedido           ]=Seq
[Codigo do Item           ]=Item
[Tamanho                  ]=""
[Quantidade               ]=Qtd
[Quantidade Faturada      ]=QtdF
[Preco Unitario           ]=ITEM_PRECO_ORIGINAL
[Taxa Desconto Unitario   ]=ITEM_TAXA
[Valor Desconto Unitario  ]=ITEM_DESCONTO
[Preco Total              ]=[Quantidade]*([Preco Unitario]-[Valor Desconto Unitario])
[Preco Unitario Tabela    ]=BlankNum()
[Taxa Desconto Total      ]=BlankNum()
[Valor Desconto Total     ]=BlankNum()
[Codigo da Tabela         ]=""
[CFO                      ]=""
[Observacao_Item          ]=""
                
If [Taxa Desconto Unitario]>0
   Then [Valor Desconto Unitario]=NDecimal(([Preco Unitario]*[Taxa Desconto Unitario])/100,2)
EndIf
If [Quantidade]>0
   Then [Preco Total]=[Quantidade]*([Preco Unitario]-[Valor Desconto Unitario])
   Else If [Preco Unitario]>0
           Then [Preco Total]=[Preco Unitario]-[Valor Desconto Unitario]
        EndIf
EndIf
  
Calc_Impostos()
UnLockRecord

EndProc ;Gera_PedidoI()

;*******************************************************************************
;* Rotina para Localizar Aliquota_ICMS                                         *
;*******************************************************************************
Proc Checa_Impostos()           
Private OBS

If (PARAM_IMPOSTOS="N" or PARAM_CALCIMPOSTOS="N") And Not IsBlank([PedidoC->Codigo da Destinacao]) 
  Then Return
EndIf  

;*** Pega UF Empresa Controle ***
Moveto [Codigo da Empresa]

GetRecord "\\Sistemas\\Cadastro\\Empresas" [PedidoC->Codigo da Empresa] to REG_BUSCA_LOOKUP
If RetVal
   Then UF_EMPRESA=REG_BUSCA_LOOKUP["UF Empresa"]
        TPEMPR    =REG_BUSCA_LOOKUP["Tipo da Empresa"]
        ATIVEMPR  =REG_BUSCA_LOOKUP["Atividade"]
   Else UF_EMPRESA="??"
        TPEMPR    ="??"
        ATIVEMPR  ="??"
EndIf

;*** Aliquota do Estado ***
Moveto [UF]

GetRecord "\\Sistemas\\Vendas\\Estados" [PedidoC->UF] to REG_BUSCA_LOOKUP
If RetVal
   Then UF_ALIQUOTA_ICMS         =REG_BUSCA_LOOKUP["Aliquota de ICMS"]
        UF_ALIQUOTA_ICMS_INTERNA =REG_BUSCA_LOOKUP["Aliquota de ICMS_INTERNA"]
   Else UF_ALIQUOTA_ICMS         =BlankNum()
        UF_ALIQUOTA_ICMS_INTERNA =BlankNum()
EndIf

GetRecord "\\Sistemas\\Vendas\\Estados" UF_EMPRESA to REG_BUSCA_LOOKUP
If RetVal
   Then UFEMPRESA_ALIQUOTA_ICMS=REG_BUSCA_LOOKUP["Aliquota de ICMS"]
   Else UFEMPRESA_ALIQUOTA_ICMS=BlankNum()
EndIf

;*** Aliquota/Tributacao/Observacao da Destinacao ***
OBS=""
ALIQUOTA_CREDITO_ICMS_NOSN =BlankNum()
TRIB_ICMS=""
TRIB_IPI =""
DESTIN_ATUALIZA_PEDIDOS=""
OPCAO_RED_BCICMS="1"

TP_MOV_ESTOQUE="S"

Moveto [Codigo da Destinacao]
GetRecord "\\Sistemas\\Vendas\\Destin" [PedidoC->Codigo da Destinacao] to REG_BUSCA_LOOKUP
If RetVal
   Then ALIQUOTA_CREDITO_ICMS_NOSN =REG_BUSCA_LOOKUP["Aliquota CredICMS NOSN"]
        
        If REG_BUSCA_LOOKUP["ICMS Aliquota do Estado"]<>"S"
           Then UF_ALIQUOTA_ICMS=REG_BUSCA_LOOKUP["Aliquota de ICMS"]
        EndIf
        
        TRIB_ICMS=REG_BUSCA_LOOKUP["Tributacao de ICMS"]
        TRIB_IPI =REG_BUSCA_LOOKUP["Tributacao de IPI"]      
        DESTIN_ATUALIZA_PEDIDOS=REG_BUSCA_LOOKUP["Atualiza Pedidos"]
        TP_MOV_ESTOQUE=REG_BUSCA_LOOKUP["Tipo Movimento Estoque"]

        If Not IsBlank(REG_BUSCA_LOOKUP["Conta Caixa Padrao"])
           Then PARAM_CONTA_CAIXA=REG_BUSCA_LOOKUP["Conta Caixa Padrao"]
        EndIf
        OPCAO_RED_BCICMS=REG_BUSCA_LOOKUP["Sem Reducao BCICMS"] 
EndIf

EndProc ;Checa_Impostos()

;*******************************************************************************
;* Rotina para Calcular Impostos                                               *
;*******************************************************************************
Proc Calc_Impostos()           

If (PARAM_IMPOSTOS="N" or PARAM_CALCIMPOSTOS="N") And Not IsBlank([PedidoC->Codigo da Destinacao])
 Then Return
EndIf 

If [Tributacao de ICMS]="D"
  Then If TRIB_ICMS="D"
          Then [Aliquota de ICMS  ]=UF_ALIQUOTA_ICMS
          Else [Tributacao de Icms]=TRIB_ICMS
               If Not IsBlank([Tipo Tributacao])
                  Then [Aliquota de ICMS]=BlankNum()
                       Switch
                        Case [Tributacao de Icms]="O": [Tipo Tributacao]=SubStr([Tipo Tributacao],1,1)+"90"                
                        Case [Tributacao de Icms]="I": [Tipo Tributacao]=SubStr([Tipo Tributacao],1,1)+"40"                                
                        Case [Tributacao de Icms]="N": [Tipo Tributacao]=SubStr([Tipo Tributacao],1,1)+"41"                                
							 				 EndSwitch
							 EndIf
       EndIf 
EndIf    

;* Seta Variaveis PegaCFOP
Checa_CFOP      ="S"
CFO_C           =[PedidoC->CFO      ]
CFOP_TPITEM     =[Tipo do Item      ]
CFOP_TRIBICMS   =[Tributacao de ICMS]
CFOP_TPTRIB     =[Tipo Tributacao   ]
CFOP_EMPRESA    =[PedidoC->Codigo da Empresa ]
CFOP_ATIVEMPRESA=ATIVEMPR
Play "\\Sistemas\\Exporta\\PegaCFOP"
[CFO            ]=CFO_C
[Tipo Tributacao]=CFOP_TPTRIB

If IsRegimeSimplesNacional(TPEMPR) 
  Then If ALIQUOTA_CREDITO_ICMS_NOSN>0
          Then Switch
                 Case [CSOSN]="102": [CSOSN]="101" 
                 Case [CSOSN]="202": [CSOSN]="201" 
               EndSwitch
          Else Switch
                 Case [CSOSN]="101": [CSOSN]="102" 
                 Case [CSOSN]="201": [CSOSN]="202" 
               EndSwitch
       EndIf                                               
EndIf
Preco_Total=[Quantidade]*[Preco Unitario]

If [Tributacao de ICMS] <>"D"
    Then If Not IsBlank([Tributacao de ICMS])
           Then [Aliquota Reduzida BCICMS  ]=BlankNum()
                [Aliquota de ICMS          ]=BlankNum()
                [Valor do ICMS             ]=BlankNum()                       
         EndIf
    Else If Not IsBlank([Aliquota de ICMS])
            Then If [Aliquota Reduzida BCICMS]>0 And
                    [Aliquota de ICMS]>0
                    Then [Valor do ICMS]=Round(((Preco_Total-((Preco_Total*[Aliquota Reduzida BCICMS])/100))*[Aliquota de ICMS])/100,2)
                    Else [Valor do ICMS]=Round((Preco_Total*[Aliquota de ICMS])/100,2)
                 EndIf
         EndIf
EndIf
 
If [Tributacao de IPI]<>"D"
  Then If Not IsBlank([Tributacao de IPI])
          Then [Aliquota de IPI        ]=BlankNum()
               [Valor do IPI           ]=BlankNum()
       EndIf
  Else If Not IsBlank([Aliquota de IPI])
          Then [Valor do IPI ]=Round((Preco_Total*[Aliquota de IPI])/100,2)
       EndIf
EndIf

EndProc    
   
;*******************************************************************************
;* Rotina Importa Clientes                                                     *
;*******************************************************************************
Proc CriaCliente()
private regrepresen

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

;NAO UTILIZADOS
;REG_TABELA_SITE["Nome do comprador"]
;REG_TABELA_SITE["Empresa do comprador"]
;REG_TABELA_SITE["Estado do comprador"]
;REG_TABELA_SITE["Sigla do comprador"]
                    
[Tipo                    ]="C"
[Nome Fantasia EmitDest  ]=NOME_PESSOA  
[Razao Social            ]=NOME_PESSOA   
[Endereco                ]=Rtrim(REG_TABELA_SITE["Rua do comprador"])
;[Bairro                 ]=      
[UF                      ]=UF
[CEP                     ]=CEP
[Cidade                  ]=CIDADE      
[CGC                     ]=Docto
[IE                      ]="NAOCONTRIBUINTE"
[Telefone                ]=Rtrim(REG_TABELA_SITE["Telefone do comprador"])
[Situacao do Cliente     ]="OTIMO"  
[Tipo Pessoa             ]="FISICA"
[Tipo Assistencia        ]="EVENTUAL"
[Consumidor Final        ]="N"
[Endereco_Eletronico     ]=Rtrim(REG_TABELA_SITE["Email do Cliente"])   
[Data_Cadastro           ]=PEDIDO_DATA
[Inativo                 ]="N"
[Pais                    ]=Rtrim(REG_TABELA_SITE["Pais do comprador"])  
[Data da Manutencao      ]=PEDIDO_DATA   
[Hora da Manutencao      ]=PEDIDO_HORA     
[Regime_Tributario       ]="OUTROS"
UnLockRecord

Moveto "\\Sistemas\\Cadastro\\DestObs"
If [Codigo]=""
   Then End 
   Else End Down
Endif   
[Codigo                  ] = CODCLI   
[Nome Fantasia EmitDest  ] = NOME_PESSOA    
[Observacoes             ] = "** CLIENTE NOVO ** "
UnLockRecord

Moveto "\\Sistemas\\Cadastro\\Destinat"
Moveto [Codigo]
Locate CODCLI
CopyToArray REG_CLIENTE

Return True
EndProc

;*******************************************************************************
;* 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

Home
CodLivre=NumVal(PARAM_INICIAL)
Moveto [Codigo]
Locate IndexOrder by "Codigo" BestMatch AlinhM(PARAM_INICIAL,4)
While True
   If CodLivre<=NumVal(PARAM_FINAL) and CodLivre>=NumVal(PARAM_INICIAL)
      Then If CodLivre=NumVal([Codigo])
              Then CodLivre=NumVal([Codigo])+1
                   Skip
              Else Ins
                   CODCLI=Alinhm(StrVal(CodLivre),4)
                   [Codigo]=CODCLI
                   If IsLockRecord()
                      Then Del
                           Skip
                      Else Locate CODCLI
                           Return True
                   EndIf
           EndIf
           If EOT()
              Then Loop
           EndIf
      Else Mensagem("Fim dos codigos livres!!")
           Return False
   EndIf
EndWhile

EndProc                             

;*******************************************************************************
;* Rotina p/ Criar INI                                                         *
;*******************************************************************************
Proc Linha_Erro(PARAM)
Private PARAM,AUX_TEMP

If Rtrim(PARAM)=""
   Then Return
EndIf

If Not IsAssigned(IMP_CABECALHO) Then IMP_CABECALHO=False EndIf

If Not IsFile(ARQIMP)
   Then PAG_ERRO = 1
        TOTAL_LINHA_ERRO = 1
        FileWrite ARQIMP From ""
   Else If IsAssigned(TOTAL_LINHA_ERRO) Then TOTAL_LINHA_ERRO = TOTAL_LINHA_ERRO + 1 Else TOTAL_LINHA_ERRO = 1 EndIf
EndIf
     
If IMPRIMIR_RELACAO = "1"
   Then IMPRIMIR_RELACAO = "2"
        If (TOTAL_LINHA_ERRO + 9) >=45
           Then If IsAssigned(PAG_ERRO) Then PAG_ERRO = PAG_ERRO + 1 Else PAG_ERRO = 1 EndIf
                Print File ARQIMP "\f"
                TOTAL_LINHA_ERRO = 0
                IMPRIMIR_RELACAO = "3"
        EndIf
EndIf        
                
If TOTAL_LINHA_ERRO=1 Or IMP_CABECALHO
   Then IMP_CABECALHO = False
        If IMPRIMIR_RELACAO = "3" Or TOTAL_LINHA_ERRO=1 
           Then Print File ARQIMP Chr(27)+Chr(120)+Chr(48)+Chr(15)
                Print File ARQIMP Chr(27)+Chr(50)
                Print File ARQIMP "\n\n"
                Print File ARQIMP Spaces(2)+Fill("-",196)+"\n"  
                TOTAL_LINHA_ERRO = TOTAL_LINHA_ERRO + 3
        EndIf   
        
        If IMPRIMIR_RELACAO = "2" Or IMPRIMIR_RELACAO = "3"
           Then If IMPRIMIR_RELACAO = "2" 
                   Then Print File ARQIMP "\n\n\n"
                        TOTAL_LINHA_ERRO = TOTAL_LINHA_ERRO + 3
                        IMPRIMIR_RELACAO = "3"
                EndIf
                Print File ARQIMP Spaces(2)+Format("W196,AC","IMPORTACAO DE PEDIDOS")+"\n"
                Print File ARQIMP Spaces(2)+Fill("-",196)+"\n\n"
                Print File ARQIMP "                               __________________ TOTAL DO PACOTE ___________________  "+
                                  "                                               "+"\n"     
                Print File ARQIMP "  Pacote Importado             Pedidos       Peas                Preco  Erros         "+
                                  "Numero dos Pedidos Importados p/ Consulta      "+"\n"
                Print File ARQIMP "  ---------------------------  ------------  ------------  ------------  ------------  "+
                                  "--------------------------------------------------------------------------------"+"\n"
                TOTAL_LINHA_ERRO = TOTAL_LINHA_ERRO + 6
                
           Else Print File ARQIMP Spaces(2)+Spaces(76)+"IMPORTACAO DE PEDIDOS - OCORRENCIA DE ERROS"+Format("W77,AR","Emissao: "+ 
                                  Format("D13",Today())+"-"+Time())+"\n"
                Print File ARQIMP Spaces(2)+Fill("-",196)+"\n\n"
                Print File ARQIMP Spaces(2)+"Pacote Importado             Ped. Origem  Pedido  Cliente                              "+
                                            "Pecas         Preco Total   Ocorrencia de Erros                    "+"\n"
                Print File ARQIMP Spaces(2)+"---------------------------  -----------  ------  -----------------------------------  "+
                                            "------------  ------------  -------------------------------------------------------"+"\n"
                TOTAL_LINHA_ERRO = TOTAL_LINHA_ERRO + 5                            
        EndIf   
EndIf

FileWrite Append ARQIMP From PARAM+"\n"

If TOTAL_LINHA_ERRO >=45
   Then If IsAssigned(PAG_ERRO) Then PAG_ERRO = PAG_ERRO + 1 Else PAG_ERRO = 1 EndIf
        Print File ARQIMP "\f"
        TOTAL_LINHA_ERRO = 0
EndIf

EndProc ;Linha_Erro()

;*******************************************************************************
;* Rotina p/ Criar INI                                                         *
;*******************************************************************************
Proc Imprime_Relacao(PARAM)
Private PARAM,AUX_TEMP

If Rtrim(PARAM)=""
   Then Return
EndIf

If Not IsFile(ARQREL)
   Then PAG_ERRO_REL = 1
        TOTAL_LINHA_ERRO_REL = 1
        FileWrite ARQREL From ""
   Else If IsAssigned(TOTAL_LINHA_ERRO_REL) Then TOTAL_LINHA_ERRO_REL = TOTAL_LINHA_ERRO_REL + 1 Else TOTAL_LINHA_ERRO_REL = 1 EndIf
EndIf

If TOTAL_LINHA_ERRO_REL = 1 
   Then Print File ARQREL Chr(27)+Chr(120)+Chr(48)+Chr(15)
        Print File ARQREL Chr(27)+Chr(50)
        Print File ARQREL "\n\n"
        Print File ARQREL Spaces(2)+Fill("-",196)+"\n"
        Print File ARQREL Spaces(2)+Spaces(87)+"IMPORTACAO DE PEDIDOS"+Format("W88,AR","Emissao: "+ 
                          Format("D13",Today())+"-"+Time())+"\n"
        Print File ARQREL Spaces(2)+Fill("-",196)+"\n\n"
        Print File ARQREL "                               __________________ TOTAL DO PACOTE ___________________                                                 "+"\n"     
        Print File ARQREL "  Pacote Importado             Pedidos       Peas                Preco  Erros         Numero dos Pedidos Importados p/ Consulta      "+"\n"
        Print File ARQREL "  ---------------------------  ------------  ------------  ------------  ------------  -----------------------------------------------"+
                          "---------------------------------"+"\n"
EndIf
FileWrite Append ARQREL From PARAM+"\n"

If TOTAL_LINHA_ERRO_REL >=45
   Then If IsAssigned(PAG_ERRO_REL) Then PAG_ERRO_REL = PAG_ERRO_REL + 1 Else PAG_ERRO_REL = 1 EndIf
        Print File ARQREL "\f"
        TOTAL_LINHA_ERRO_REL = 0
EndIf

EndProc ;Imprime_Relacao()

;*******************************************************************************
;* Rotina p/ Criar INI                                                         *
;*******************************************************************************
Proc Linha_Erro_Duplicidade(PARAM)
Private PARAM,NOMCLI,AUXTOT

If DynArraySize(AUX_PEDIDO) = 0
   Then Return
EndIf   

NOMCLI = REG_CLIENTE["Razao Social"]
AUXTOT = PEDIDO_MERCADORIA

ARQ_AUX = Spaces(2)+
          Format("W27",NOM_ARQ)+Spaces(2)+
          Format("W11",PEDORIG)+Spaces(2)+
          Format("W6",Format("W6",""))+Spaces(2)+
          Format("W35",CODCLI+" "+NOMCLI)+Spaces(2)+
          Format("W12.3",BlankNum())+Spaces(2)+
          Format("W12.2,EIC",AUXTOT)+Spaces(2) 
                                                                       
Switch
  Case PARAM = 1 : Linha_Erro(ARQ_AUX + Format("W55","PEDIDO COM DUPLICIDADE GERADO NO NUMERO "+NPED)) 
  Case PARAM = 2 : Linha_Erro(ARQ_AUX + Format("W55","PEDIDO COM DUPLICIDADE NAO FOI GERADO PELO USUARIO"))         
  Case PARAM = 3 : Linha_Erro(ARQ_AUX + Format("W55","PEDIDO COM DUPLICIDADE NAO FOI GERADO PELO SISTEMA"))
EndSwitch         
  
EndProc ;Linha_Erro_Duplicidade()
   
;*******************************************************************************
;* 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 = "\\Note\\Importa" EndIf
  Case Opcao="Gravar":
       FileWrite        "IR_SITE.sc" From ";****** Variaveis de Configurao Caminho Vise Informatica"+"\n"
       FileWrite Append "IR_SITE.sc" From "VSDGPASTA="+Chr(34)+AjustaPasta(VSDGPASTA)+Chr(34)+"\n"
EndSwitch
  
EndProc ;
  
;*******************************************************************************
;* Carregar Lista                                                              *
;*******************************************************************************
Proc PegaNomeArquivo(indice)
Private indice
  
Return Rtrim(SubStr(Array_Registro[Indice],025,100))
  
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

;*******************************************************************************
;* 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     ="N"
PARAM_INICIAL       =[Cliente_Inicial    ]
PARAM_FINAL         =[Cliente_Final      ]
PARAM_AUT           =[Utiliza_Autorizacao]
ClearImage                           

Return True
EndProc ; (Carrega_ParametrosC()

;*******************************************************************************
;* Rotina Carrega_Parametros Vendas                                            *
;*******************************************************************************
Proc Carrega_ParametrosV()
Private REGEMP

GetRecord "\\Sistemas\\Vendas\\P_PedWin" VSDGEMPRESA to REGEMP
If RetVal 
   Then PARAM_SUBSTICMS    =REGEMP["Substituicao ICMS"        ]
        PARAM_IMPOSTOS     =REGEMP["Impostos"                 ]
        PARAM_CALCIMPOSTOS =REGEMP["Utiliza_Calculo_Impostos" ]  
        PARAM_IMPORTAVENCTO=REGEMP["Importa Vencto PedWin"    ] 
        PARAM_FORMA_SINC   =REGEMP["Forma_de_Sincronia"       ] 
        Return True
   Else Return False
EndIf

EndProc ;Carrega_ParametrosV()

;*******************************************************************************
;* 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 excluso 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                    

;*******************************************************************************
;* 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 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

;CIDADE DEFINIDA COMO PADRA ------------------------------
CIDADE_PADRAO = "DIVINOPOLIS"
UF_PADRAO     = "MG"

;DEFINIR A DESTINACAO DO PEDIDO REALIZADO NO SITE --------
DESTINACAO_COD = "001"
GetRecord "\\Sistemas\\Vendas\\Destin" DESTINACAO_COD To REG_DESTIN 
If RetVal
   Then DESTINACAO_DES = REG_DESTIN["Descricao da Destinacao"]
        CFOP           = REG_DESTIN["CFO"]
   Else Mensagem("DestinaÆo "+DESTINACAO_COD+" no foi licalizada no sistema!")
        Return
EndIf

;DEFINIR O VENDEDOR --------------------------------------
VENDEDOR_COD = "0001"
GetRecord "\\Sistemas\\Cadastro\\Represen" VENDEDOR_COD To REG_REPRESEN
If RetVal
   Then VENDEDOR_NOME     = REG_REPRESEN["Nome Fantasia Represent"]
        VENDEDOR_COMISSAO = REG_REPRESEN["Comissao do Representante"]
   Else Mensagem("Vendedor padrÆo "+VENDEDOR+" no foi localizado no sistema!")
        Return
EndIf                           
                           
;NAO ESQUECER DE VERIFICAR TAMBEM O TRANSPORTADOR, o qual foi definido para TRANSPORTADOR = "0001"                           
;---------------------------------------------------------

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

ARQREL = PrivDir()+"REL.INI"
ARQIMP = PrivDir()+"ERRO.INI"

GERA_DUPLICADO   = False
IMPRIMIR_RELACAO = "0"
GEROU_LOG        = False

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

TIPO_ARQ = "order*.csv"
ARQUIVO  = ""
Tipo_Ext = ".CSV"
nlinha   = 1
      
limparodape(0)
ExibeRodape(1,"Aguarde, carregando arquivo(s) para importaÆo .csv")
CarregarLista(TIPO_ARQ)

Switch                                                                                      
  Case SYS_CODIGO_CLIENTE="0294" : ROTINA_LIBERADA = True
  OtherWise                      : ROTINA_LIBERADA = False
EndSwitch

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

If Not Carrega_ParametrosC()
   Then Mensagem("Parametros no Cadastrado para esta Empresa ! [P_Dest]")
        Return
EndIf          
            
limparodape(0)
While True
 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 Not Carrega_ParametrosV()
     Then Mensagem("Parametros no Cadastrado para esta Empresa ! [P_PedWin]")
          Return  
  EndIf

 If DynArraySize(Array_Registro)=0
    Then Mensagem("NÆo existe arquivo selecionado !")
         Loop
 EndIf
 
 ARQUIVO=PegaNomeArquivo(ArrayElement)
 nlinha    =ArrayElement
 
 If IsBlank(ARQUIVO)
    Then Mensagem("Nome do arquivo a ler inv lido !")
         Loop
 EndIf        

 If SYS_CONTROLE_DIA="??????"
    Then MSG=    "No existe um controle ativo no momento !// //"
         MSG=MSG+"Verificar situao de controles !"
         Mensagem(MSG)
         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+"' no existe !// //Impossivel importao !")
         Loop
 EndIf
                 
 TOT_PEDIDO_IMPORTADO = 0
 TOT_ERRO   = 0  
 TOT_PEDIDO = 0   
 TOT_PECAS  = 0
 TOT_VALOR  = 0
 NUM_PEDIDO = ""             
                 
 NOM_ARQ   = ARQUIVO 
 ARQUIVO   = VSDGDRIVE+"\\NOTE\\IMPORTA\\"+ARQUIVO
 ARQ_TEMP  = VSDGDRIVE+VSDGPASTA+"\\PD_TEMP.txt"
 
 PASTAREPR = RTrim(SubStr(Array_Registro[nlinha],6,4))
 
 ENCONTRADO_INCONSISTENCIA=False
 ARQ_ERRO= Privdir()+"ERRO.TXT"
 Deleta_Arquivo(ARQ_ERRO)

 LimpAguarde()
 LimpAguardes()

 Criar_Tabela()
 Importa()
 Sort Tabela_Site On "Pedido de Origem","Data do Pedido"
 ClearAll  
 
 If Processa()
    Then ARQ_IMP = VSDGDRIVE+"\\NOTE\\IMPORTA\\"+"IMPORTADO_"+NOM_ARQ
         Aguarde("Aguarde, renomeando arquivo importado")
         FileWrite        PrivDir()+"funcao1.txt" From "REN|"+ARQUIVO+"|"+ARQ_IMP+"\n"
         ExecVisecf(PrivDir()+"funcao1.txt","")
         Sleep 1000
         
         limparodape(0)
         ExibeRodape(1,"Aguarde, carregando arquivo(s) para importaÆo .csv")
         CarregarLista(TIPO_ARQ)
 
         If NPedImp>0
            Then Mensagem("Processo importado com sucesso!")
            Else Mensagem("No foi localizado pedidos a ser importado!") 
         EndIF   
 EndIf     
 
 If IsFile(VSDGPASTA+"PD_TEMP.txt")
    Then Deleta_Arquivo(VSDGPASTA+"PD_TEMP.txt")
 EndIf            
 
 Relatorio_Erro("")
 Release Vars IMP_TOT_PACOTES, IMP_TOT_PEDIDO, IMP_TOT_PECAS, IMP_TOT_VALOR, IMP_TOT_ERRO, IMP_TOT_PEDIDO_IMPORTADO,
              TOT_ERRO, TOT_PEDIDO, TOT_PECAS, TOT_VALOR, NUM_PEDIDO
                           
 LimpAguarde()
 LimpAguardes()
EndWhile
ClearAll