;** PSE10   ********************************************************************
;*  Exportacao de dados p/ PlugSales                                           *
;*******************************************************************************
;Desenvolvido  em: 09/05/2019 por Anivel Augusto Rodrigues
;Ultima Alteracao:   /  /     por 
;Motivo Alteracao: 

;*******************************************************************************
;* Gera Operacao                                                               *
;*******************************************************************************
Proc Operacao()
private s, arquivo, arqnew

limparodape(0)
netapas=netapas+1
ExibeRodape(1,"Aguarde, Exportando Operacäes "+strval(netapas)+"/"+strval(tetapas))

ClearAll

arquivo=VSDGPASTA +"tmpoper.csv"
Deleta_Arquivo(arquivo)

NR=NRecords("\\Sistemas\\Vendas\\ps_op")
inicio=true

View "\\Sistemas\\Vendas\\ps_op" 
Scan
  Barra(NR, RecNo())
  AGUARDE(BARRA_STRING)

  If [Inativo]="S" 
     Then loop   
  EndIf

  s=  monta_string([ID                     ])+","
  s=s+monta_string([Nome                   ])+"\n"

  if inicio
     then FileWrite        arquivo from "ID,OPERACAO\n"    
          inicio=false
  endif
  FileWrite append arquivo from s    
  
EndScan
Do_It!
ClearAll

arqneqw="operacao.csv"
Deleta_Arquivo(VSDGPASTA +""+arqneqw)
Renomeia_Arquivo(arquivo+" "+arqneqw)

LimpAguarde()

EndProc ;Usuarios()

;*******************************************************************************
;* Gera Financeiro                                                             *
;*******************************************************************************
Proc Financeiro()
private s, arquivo, arqnew, wi, dtref, c

dtref=today()

limparodape(0)
netapas=netapas+1
ExibeRodape(1,"Aguarde, Exportando Posi‡Æo Financeira "+strval(netapas)+"/"+strval(tetapas))

ClearAll

arquivo=VSDGPASTA +"tmpfin.csv"
Deleta_Arquivo(arquivo)

  inicio=true
       c=0

;for wi from 1 to 2

for wi from 1 to 1 ; s¢ vencidos

  switch
    case wi=1:
      {ask}{ps_us}
      moveto [Codigo do Representante] typein "_codrep"
      moveto [Inativo                ] typein "not S"
      {ask}{\\sistemas\\ctarec\\duplic}
      moveto [Codigo do Representante]       typein "_codrep"
      moveto [Numero do Lancamento   ] check
      moveto [Codigo do Destinatario ] check
      moveto [Data de Vencimento     ] check typein "<~dtref"
      moveto [Saldo do Documento     ] check typein ">0.01, as Valor"
      moveto [Tipo do Pagamento      ] check
      do_it!
      clearAll
      
    case wi=2:
      {ask}{ps_us}
      moveto [Codigo do Representante] typein "_codrep"
      moveto [Inativo                ] typein "not S"
      {ask}{\\sistemas\\ctarec\\duplic}
      moveto [Codigo do Representante]       typein "_codrep"
      moveto [Numero do Lancamento   ] check
      moveto [Codigo do Destinatario ] check
      moveto [Data de Vencimento     ] check typein ">=~dtref"
      moveto [Saldo do Documento     ] check typein ">0.01, as Valor"
      moveto [Tipo do Pagamento      ] check
      do_it!
      clearAll
  
  endswitch
  
  NR=NRecords("Answer")
  
  View "Answer" 
  Scan
    Barra(NR, RecNo())
    AGUARDE(strval(wi)+"/2 "+BARRA_STRING)

    c=c+1
  
    s=strval(c)                                +","
    s=s+monta_string([Codigo do Destinatario ])+","
    s=s+      strval([Valor                  ])+","
    s=s+ AlinhM(strval( year([Data de Vencimento])),4)+"-"+
         AlinhM(strval(month([Data de Vencimento])),2)+"-"+
         AlinhM(strval(  day([Data de Vencimento])),2)+","
    switch     
      case [Tipo do Pagamento]="BO": s=s+"1"+"," ; a definir  
      case [Tipo do Pagamento]="CH": s=s+"3"+"," ; a definir   
      case [Tipo do Pagamento]="CP": s=s+"3"+"," ; a definir
      otherwise                    : s=s+"1"+"," ; a definir  
    endswitch     
    
    switch
      case wi=1: s=s+"\"VENCIDO\"" +"\n"
      case wi=2: s=s+"\"A VENCER\""+"\n"
    endswitch
  
    if inicio
       then FileWrite        arquivo from "ID,CLIENTE,VALOR,DATA_VENCIMENTO,FORMA_PAGAMENTO,SITUACAO\n"

            inicio=false
    endif
    FileWrite append arquivo from s    
    
  EndScan
  Do_It!
  ClearAll

endfor

arqneqw="financ.csv"
Deleta_Arquivo(VSDGPASTA +""+arqneqw)
Renomeia_Arquivo(arquivo+" "+arqneqw)

LimpAguarde()

EndProc ;Usuarios()


;*******************************************************************************
;* Gera Usuarios                                                               *
;*******************************************************************************
Proc Usuarios()
private s, arquivo, arqnew 

limparodape(0)
netapas=netapas+1
ExibeRodape(1,"Aguarde, Exportando Usu rios "+strval(netapas)+"/"+strval(tetapas))

ClearAll

arquivo=VSDGPASTA +"tmpusua.csv"
Deleta_Arquivo(arquivo)
         
NR=NRecords("\\Sistemas\\Vendas\\ps_us")
inicio=true

View "\\Sistemas\\Vendas\\ps_us" 
Scan
  Barra(NR, RecNo())
  AGUARDE(BARRA_STRING)

  If [Inativo]="S" 
     Then loop   
  EndIf

  s=  monta_string([ID                     ])+","
  s=s+monta_string([Nome                   ])+","
  s=s+monta_string([Senha                  ])+","
  s=s+"0\n"

  if inicio
     then FileWrite        arquivo from "ID,NOME,SENHA,MAXIMO_DESCONTO\n"    
          inicio=false
  endif
  FileWrite append arquivo from s    
  
EndScan
Do_It!
ClearAll

arqneqw="usuarios.csv"
Deleta_Arquivo(VSDGPASTA +""+arqneqw)
Renomeia_Arquivo(arquivo+" "+arqneqw)

LimpAguarde()

EndProc ;Usuarios()

;*******************************************************************************
;* Gera Arquivo Texto -- Clientes                                              *
;*******************************************************************************
Proc Clientes()
private s, arqtemp, arquivo, arqnew, inicio,
        tbpreco, arraytabelas, wc, wc2, reprant

limparodape(0)
netapas=netapas+1
ExibeRodape(1,"Aguarde, Exportando Clientes "+strval(netapas)+"/"+strval(tetapas))

ClearAll

DynArray arraytabelas[]

{Ask} TypeIn ItemPrecoV Enter    
Moveto [Codigo da Tabela] check
Do_it!
Clearall     

wc=0
View "Answer"
scan
  if not isblank([Codigo da Tabela]) 
     then 
          wc=wc+1
          arraytabelas[wc]=[Codigo da Tabela ]  
  endif
endscan
Clearall     


arquivo=VSDGPASTA +"tmpclie.csv"
Deleta_Arquivo(arquivo)

{ask}{ps_us}
moveto [ID                     ] check
moveto [Codigo do Representante] typein "_codrep"
moveto [Inativo                ] typein "not S"
{ask}{\\sistemas\\cadastro\\destinat}
moveto [Codigo                 ] check
moveto [Razao Social           ] check
moveto [Nome Fantasia EmitDest ] check
moveto [CGC                    ] check
moveto [Endereco               ] check
moveto [Telefone               ] check
moveto [Endereco_Eletronico    ] check
moveto [Cidade                 ] check
moveto [UF                     ] check
moveto [Situacao do Cliente    ] check
moveto [Codigo do Representante] check typein "_codrep"
moveto [Tipo                   ] typein "C"
moveto [Inativo                ] typein "not S"
do_it!
clearAll

Adiciona_Campo("Answer","TABELA_PRECO(A5)")
    
Sort "Answer" on "Codigo do Representante","Codigo"
clearAll 
         
NR=NRecords("Answer")
inicio =true
reprant="****"
wc2    =0

View "Answer" 
Scan
  Barra(NR, RecNo())
  AGUARDE(BARRA_STRING)

  if [Codigo do Representante]<>reprant
     then wc2=0
          reprant=[Codigo do Representante]
  endif
  wc2=wc2+1 
     
  tbpreco=""
  switch
    case wc=1  : tbpreco=Arraytabelas[1]
    case wc>1  :    
      if wc2<=wc
         then tbpreco=Arraytabelas[wc2] 
      endif   
  endswitch

  s=  monta_string([Codigo                 ])+","
  s=s+monta_string([Razao Social           ])+","
  s=s+monta_string("["+[Codigo]+"] "+[Nome Fantasia EmitDest ])+","
  s=s+monta_string([CGC                    ])+","
  s=s+monta_string([Endereco               ])+","
  s=s+monta_string([Telefone               ])+","
  s=s+monta_string([Endereco_Eletronico    ])+","
  s=s+monta_string([Cidade                 ])+","
  s=s+monta_string([UF                     ])+","
  s=s+monta_string([Situacao do Cliente    ])+","
  s=s+monta_string([ID                     ])+","
  s=s+monta_string(tbpreco)+"\n"

  if inicio
     then FileWrite        arquivo from "ID,RAZAO,FANTASIA,CNPJ,ENDERECO,TELEFONE,EMAIL,CIDADE,UF,SITUACAO,USUARIO,TABELA_PRECO\n"    
          inicio=false
  endif
  FileWrite append arquivo from s    
  
EndScan
Do_It!
ClearAll

arqneqw="clientes.csv"
Deleta_Arquivo(VSDGPASTA +""+arqneqw)
Renomeia_Arquivo(arquivo+" "+arqneqw)

LimpAguarde()

EndProc ;Clientes()

;*******************************************************************************
;* Gera Arquivo Texto -- Cond.Pagamento                                        *
;*******************************************************************************
Proc CondPagtos()
private s, arquivo, arqnew

limparodape(0)
netapas=netapas+1
ExibeRodape(1,"Aguarde, Exportando Formas/Condi‡äes Pagamento "+strval(netapas)+"/"+strval(tetapas))

ClearAll

arquivo=VSDGPASTA +"tmpfpag.csv"
Deleta_Arquivo(arquivo)

NR=NRecords("\\Sistemas\\Vendas\\ps_pg")
inicio=true

View "\\Sistemas\\Vendas\\ps_pg" 
Scan
  Barra(NR, RecNo())
  AGUARDE(BARRA_STRING)

  If [Inativo]="S" 
     Then loop   
  EndIf

  s=  monta_string([ID                     ])+","
  s=s+monta_string([Descricao Tipo Pagamento]+"/"+[Descricao CondPagto])+"\n"

  if inicio
     then FileWrite        arquivo from "ID,NOME\n"    
          inicio=false
  endif
  FileWrite append arquivo from s    
  
EndScan
Do_It!
ClearAll

arqneqw="fpagto.csv"
Deleta_Arquivo(VSDGPASTA +""+arqneqw)
Renomeia_Arquivo(arquivo+" "+arqneqw)

LimpAguarde()

EndProc ; CondPagtos()


;*******************************************************************************
;* Gera Arquivo Texto p/ Produtos                                              *
;*******************************************************************************
Proc Produtos()
private s, arquivo, arqnew, inicio, s2

limparodape(0)
netapas=netapas+1
ExibeRodape(1,"Aguarde, Exportando Produtos "+strval(netapas)+"/"+strval(tetapas))

ClearAll

arquivo=VSDGPASTA +"tmpprod.csv"
Deleta_Arquivo(arquivo)
                      
NR=NRecords(TabelaREF)
inicio=true

CoEdit TabelaREF                                                   
Scan
  Barra(NR, RecNo())
  AGUARDE(BARRA_STRING)

  s=  monta_string([Codigo do Item        ])+","
  
  switch
    case sys_Codigo_Cliente="0388":
      s=s+monta_string([Descricao do Item])+","

      s2=[Referencia]+" "+[Codigo da Cor_Tecido]+"-"+[Descricao da Cor_Tecido]
      switch
        case [Inativo ]="S" : s2=s2+" | INATIVADO |" 
        case [Esgotado]="S" : s2=s2+" | ESGOTADO| "
        Otherwise           : s2=s2+" | ATIVO |"
      endswitch
      s2=s2+" | Un: "+[Unidade Fiscal        ]
      s=s+monta_string(s2)+","

    otherwise:
      s=s+monta_string([Descricao do Item     ])+","
      s=s+monta_string([Descricao Complementar])+","
     
  endswitch
  
  switch
    case not isblank([Descricao da Familia  ]) : s=s+monta_string([Descricao da Familia  ])+","
    otherwise                                  : s=s+"1"+","
  endswitch
  s=s+strval([Saldo Atual    ])+","
  s=s+"0,"          ;preco de venda
  s=s+"0,"          ;desconto
  s=s+","          ;imagem
  s=s+monta_string([Referencia            ])
  s=s+""+"\n"       ;imagem

  if inicio
     then FileWrite        arquivo from "ID,NOME,DESCRICAO,CATEGORIA,ESTOQUE,PRECO,MAXIMO_DESCONTO,IMAGEM,REFERENCIA\n"    
          inicio=false
  endif
  FileWrite append arquivo from s    
  
EndScan
Do_it!
ClearAll

arqneqw="produtos.csv"
Deleta_Arquivo(VSDGPASTA +""+arqneqw)
Renomeia_Arquivo(arquivo+" "+arqneqw)

LimpAguarde()

EndProc ;Produtos()

;*******************************************************************************
;* Gera Arquivo Texto p/ Produtos                                              *
;*******************************************************************************
Proc TabPreco()
private s, arquivo, arqnew, inicio, c

limparodape(0)
netapas=netapas+1
ExibeRodape(1,"Aguarde, Exportando Tabelas de Pre‡o "+strval(netapas)+"/"+strval(tetapas))

ClearAll

arquivo=VSDGPASTA +"tmptbpr.csv"
Deleta_Arquivo(arquivo)
                      
NR=NRecords(ItemPrecoV)
inicio=true

c=0
View ItemPrecoV                                                   
Scan
  Barra(NR, RecNo())
  AGUARDE(BARRA_STRING)

  c=c+1
  s=  strval(c) +","
  s=s+monta_string([Codigo da Tabela      ])+","
  s=s+monta_string([Codigo do Item        ])+","
  s=s+strval([Preco Unitario])+"\n"

  if inicio
     then FileWrite        arquivo from "ID,TABELA_PRECO,PRODUTO,PRECO\n"    
          inicio=false
  endif
  FileWrite append arquivo from s    
  
EndScan
Do_it!
ClearAll

arqneqw="tbpreco.csv"
Deleta_Arquivo(VSDGPASTA +""+arqneqw)
Renomeia_Arquivo(arquivo+" "+arqneqw)

LimpAguarde()

EndProc ;Produtos()

;*******************************************************************************
;* Rotina                                                                      *
;*******************************************************************************
Proc Gera_Tabela()
Private ii1,AUX_DATA,regref, itempai

For ii1 From 1 To 5
  Switch
    Case ii1 = 1 : ;---- Itens ---------------------------------------------------
      limparodape(0)
      netapas=netapas+1
      ExibeRodape(1,"Aguarde, preparando itens "+strval(netapas)+"/"+strval(tetapas))

      ;**** Itens ***************************************************** 
      {Ask} {\\Sistemas\\Estoque\\Itens} 
      Moveto [Codigo do Item          ] Check  


      Moveto [Codigo do Item          ] typein ">0226780000"  


      Moveto [Descricao do Item       ] Check
      Moveto [Descricao Complementar  ] Check  
      Moveto [Tipo do Item            ] Check TypeIn "P Or T" 
      Moveto [Unidade Fiscal          ] Check
      Moveto [Descricao da Familia    ] Check
      Moveto [Codigo da Cor_Tecido    ] Check
      Moveto [Descricao da Cor_Tecido ] Check
      Moveto [Referencia              ] Check  
      Moveto [Inativo                 ] Check  
      Do_It!
      ClearAll
                             
      CRIAR_TABELA = False
      Adiciona_Campo("Answer","Codigo da Empresa(A4),"
                             +"Esgotado(A1),"
                             +"Custo Total Atual($),"
                             +"Saldo Atual(N),"
                             +"Valor Unitario($),"
                             +"Preco de Venda($)")

      {Ask}{Answer} typein "Fast"
      Moveto [Codigo da Empresa] TypeIn "changeto ~VSDGEMPRESA" 
      Do_It!
      ClearAll
      
      TabelaREF=Adiciona_Indice_Temp("Codigo da Empresa,Codigo do Item")

      ;----- Itens esgotado ----------------------------------------------------------
      {Ask} {\\sistemas\\estoque\\iten_com} Enter 
      Moveto [Codigo do Item   ] typein "_Ite"
      Moveto [Producao Esgotada] typein "_s"
      {Ask} TypeIn TabelaRef Enter TypeIn "Fast" Enter
      Moveto [Codigo do Item   ] typein "_Ite"
      Moveto [Esgotado         ] typein "changeto _s"         
      Do_it!
      Clearall
      
    Case ii1 = 2 : ;---- Itens Inativos por mais de 60 Dias ----------------------
      limparodape(0)
      netapas=netapas+1
      ExibeRodape(1,"Aguarde, preparando itens inativos "+strval(netapas)+"/"+strval(tetapas))

      {Ask} {\\Sistemas\\Estoque\\Itens} 
      Moveto [Codigo do Item          ] Check TypeIn "_CodI"
      Moveto [Tipo do Item            ]       TypeIn "P Or T"
      Moveto [Inativo                 ]       TypeIn "S"
      {Ask} {\\Sistemas\\Estoque\\EstqPrm}
      Moveto [Codigo da Empresa       ] TypeIn "~VSDGEMPRESA"
      Moveto [Codigo do Item          ] TypeIn "_CodI"

      Moveto [Codigo do Item          ] typein ", >0226780000"  

      Moveto [Data de Inatividade     ] Check TyPein "Not Blank"
      Do_it!
      ClearAll
       
      If Not IsEmpty("Answer")
         Then AUX_DATA = Today()-60
              {Ask} {Answer}
              Moveto [Codigo do Item     ] Check
              Moveto [Data de Inatividade] TyPein "<=~AUX_DATA"
              Do_it!
              CleaRall
      EndIf                            
       
      ItemInativo = Adiciona_Indice_Temp("Codigo do Item")

      ;----- Excluindo Itens Inativos do cadastro ------------------------------------
      {Ask} TypeIn ItemInativo Enter 
      Moveto [Codigo do Item] Example "Ite"
      {Ask} TypeIn TabelaRef Enter TypeIn "Fast Delete" Enter
      Moveto [Codigo do Item] Example "Ite"
      Do_it!
      Clearall
      
    Case ii1 = 3 : ;---- tabela de Pre‡o -----------------------------------------
      limparodape(0)
      netapas=netapas+1
      ExibeRodape(1,"Aguarde, preparando tabela de pre‡o "+strval(netapas)+"/"+strval(tetapas))

      {Ask} {\\Sistemas\\Vendas\\TbPrCab}
      Moveto [Codigo da Tabela    ]       TypeIn "_ctab" 
      Moveto [Ativa               ]       TypeIn "S" 
      moveto [Usa_TLMK            ]       typein "S" 
      {Ask} {\\Sistemas\\Vendas\\TbPrIte}
      Moveto [Codigo da Tabela    ] Check TypeIn "_ctab" 
      Moveto [Codigo do Item      ] Check 

      Moveto [Codigo do Item          ] typein ">0226780000"  

      Moveto [Tipo do Item        ] Check 
      Moveto [Unidade Fiscal      ] Check 
      Moveto [Preco Unitario      ] Check
      if not isblank(VSDGTABELA) 
         then Moveto [Codigo da Tabela    ]       TypeIn ", ~VSDGTABELA"
      endif     
      Do_It!
      ClearAll

      ItemPrecoV   = Adiciona_Indice_Temp("Codigo do Item,Codigo da Tabela")

      View ItemPrecoV
      Edit TabelaRef
      scan
        copytoarray regref
        
        moveto ItemPrecoV     
        moveto [Codigo do Item]
        locate regref["Codigo do Item"]
        if retval
           then 
                while [Codigo do Item]=regref["Codigo do Item"]
                  [Unidade Fiscal  ]="WW" ; ok!
                
                  skip
                  if eot() then quitloop endif
                endwhile
           else
                itempai=pegacodigoraiz(regref["Codigo do Item"])
                locate itempai
                if retval
                   then 
                        while [Codigo do Item]=itempai and [Tipo do Item  ]="D"
                          copytoarray regprv

                          end
                          down
                          [Codigo da Tabela]=regprv["Codigo da Tabela"]
                          [Preco Unitario  ]=regprv["Preco Unitario"  ]

                          [Codigo do Item  ]=regref["Codigo do Item"  ]
                          [Tipo do Item    ]=regref["Tipo do Item"    ]
                          [Unidade Fiscal  ]="WW" ; ok!
                          
                          locate regprv["Codigo do Item"],regprv["Codigo da Tabela"]
                          if not retval
                             then quitloop
                          endif   
                          skip
                          if eot() then quitloop endif
                        endwhile
                endif
        endif   
        
        moveto TabelaRef
      endscan
      do_it!
      ClearAll     

      {Ask} TypeIn ItemPrecoV Enter TypeIn "Fast Delete" Enter   
      Moveto [Tipo do Item  ] typein "D"
      Do_it!
      Clearall     

      {Ask} TypeIn ItemPrecoV Enter TypeIn "Fast Delete" Enter
      Moveto [Unidade Fiscal      ] typein "not WW"
      Do_it!
      Clearall     

      {Ask} TypeIn ItemPrecoV Enter Check
      Do_it!
      Clearall     

      Delete ItemPrecoV 
    
      ItemPrecoV = Adiciona_Indice_Temp("Codigo da Tabela,Codigo do Item")

   Case ii1 = 4 : ;---- Estoque Atual -------------------------------------------
     If Not VSDGOPCAO[8] Then Loop EndIf

     limparodape(0)
     netapas=netapas+1
     ExibeRodape(1,"Aguarde, preparando estoque atual "+strval(netapas)+"/"+strval(tetapas))

     {Ask} {\\Sistemas\\Estoque\\SdEstq}
     Moveto [Codigo da Empresa] Check TypeIn "~VSDGEMPRESA" 
     Moveto [Codigo do Item   ] Check 

      Moveto [Codigo do Item          ] typein ">0226780000"  


     Moveto [Ano Referencia   ] TypeIn "~VSDGANO"
     Moveto [Mes Referencia   ] TypeIn "~VSDGMES"
     Moveto [Saldo Atual      ] Check
     Do_It!
     ClearAll
       
     ItemEstoqueAtual = Adiciona_Indice_Temp("Codigo da Empresa,Codigo do Item")

     {Ask} TypeIn ItemEstoqueAtual Enter
     Moveto [Codigo da Empresa] Example "Cemp" 
     Moveto [Codigo do Item   ] Example "CodI"
     Moveto [Saldo Atual      ] Example "Sald" 
     {Ask} TypeIn TabelaREF Enter TypeIn "Fast"
     Moveto [Codigo da Empresa] Example "Cemp" 
     Moveto [Codigo do Item   ] Example "CodI"
     Moveto [Saldo Atual      ] TypeIn "Changeto _Sald"
     Do_It!
     ClearAll

     delete ItemEstoqueAtual

   Case ii1 = 5 : ;---- Estoque Inventario --------------------------------------
     If Not VSDGOPCAO[4] Then Loop EndIf

     limparodape(0)
     netapas=netapas+1
     ExibeRodape(1,"Aguarde, preparando invent rio "+strval(netapas)+"/"+strval(tetapas))
       
     SetDir "\\Sistemas\\Estoque"
     Play "RM_0011C"
     SetDir "\\Sistemas\\Vendas"

  EndSwitch     
EndFor  

EndProc ;Gera_Tabela()         

;*******************************************************************************
;* Rotina Converte caracter especial e passa para numero                       *
;*******************************************************************************
Proc monta_string(s)
private s, sn, i, ch

sn=""
For i from 1 to Len(s)
  ch=SubStr(s,i,1)
  Switch 
   Case Asc(ch)=34  : ch="'" ; ""
  EndSwitch

  sn=sn+ch
EndFor
Return Upper("\""+sn+"\"")
EndProc

;*******************************************************************************
;*  Rotina para mostrar as horas                                               *
;*******************************************************************************
Proc Tempohrs(tini)
private tini,hrs,seg,h,m,s, tfim

tfim=ticks()
if tfim<tini
   then seg=(86400000-tini)
        seg=(seg+tfim)/1000
   else seg=(tfim-tini)/1000
endif

h=seg/3600
m=(h-int(h))*60
s=(m-int(m))*60

hrs=AlinhM(StrVal(int(h)),2)+":"+
    AlinhM(StrVal(int(m)),2)+":"+
    AlinhM(StrVal(Round(s,0)),2)
return hrs

Endproc ; (Tempohrs)

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

;************************************
;* ROTINA PARA Ler/Gravacao Opcao   *
;************************************
Proc ConfOpcoes(Opcao)
Private Opcao

Switch
  Case Opcao="Ler":
       If IsFile("PSE10.ini")
          Then LeiaINI("PSE10.ini","VSDGPASTA.S.c:\\psales\\")
       EndIf
       If Not IsAssigned(VSDGPASTA)    Then VSDGPASTA="c:\\psales\\" endif
  Case Opcao="Gravar":
       FileWrite "PSE10.ini" From GravaExpressao("VSDGPASTA","S",AjustaPasta(VSDGPASTA))
EndSwitch
EndProc ;

;*******************************************************************************
;* Rotina                                                                      *
;*******************************************************************************
Proc SD_Dialog(Disparo,Campo,Evento,Elemento)
Temp=True
TECLA=""
MSG_CAMPO=""
If Disparo="OPEN"
   Then AoCriarShowDialog()
        TiraSombraShowDialog()
        
        Campo="TG_EMPRESAS"
EndIf

If Disparo="UPDATE"
   Then Switch
          Case Campo="TG_CONFIG" : 
                                   Play "\\sistemas\\ctarec\\setpasta"
                                   Campo="TG_EMPRESAS"
          
          OtherWise              : Return Temp
        EndSwitch  
EndIf


If Disparo="EVENT" And Evento["Type"]="KEY" Then
   Switch
     Case Evento["KeyCode"] = -59: 
          If Campo="TG_NECF"
              Then If Not SDCarrega_F1()
                      Then MENSAGEM(MSG)
                      Else Seleciona_Opcoes("ECF","F1_Temp")
                   EndIf
              Else Dialog_F1()    
          EndIf        
     Case Evento["KeyCode"] =  27:
          Temp=False
          Switch
            Case Campo="TG_EMPRESAS"      : Campo="NO"
            Case Campo="TG_TABELA"        : Campo="TG_EMPRESAS"
            Case Campo="TG_OPCOES"        : Campo="TG_TABELA"
            Case Campo="TG_CONFIG"        : Campo="TG_EMPRESAS"
            Case Campo="YES" Or Campo="NO": Campo="TG_OPCOES"
          EndSwitch
     Case (Evento["KeyCode"] <= -104 And Evento["KeyCode"] >= -113) Or 
           Evento["KeyCode"]  = -139 Or  Evento["KeyCode"]  = -140:
           SYS_TECLA_ACIONADA=Evento["KeyCode"]
           Seta_Tecla_Acionada()
           CancelDialog
     Case Evento["KeyCode"] = 13:
          Temp=False
          If Checa_TAG()
             Then Switch
                    Case Campo="TG_EMPRESAS"   : Campo="TG_TABELA"
                    Case Campo="TG_TABELA"     : Campo="TG_OPCOES"

                   Case Campo="TG_OPCOES"      : Campo="YES"  

                    Case Campo="TG_CONFIG"      : 
                         Play "\\sistemas\\ctarec\\setpasta"
                         Campo="TG_EMPRESAS"

                  EndSwitch
          EndIf
          RefreshDialog
   EndSwitch
EndIf
Switch
 Case Campo="TG_EMPRESAS": MSG_CAMPO="Informe a Empresa"
 Case Campo="TG_TABELA"  : MSG_CAMPO="Em Branco=Todas ativas"
  Case Campo="TG_CONFIG"  : MSG_CAMPO="Configurar caminho PlugSales"
 Case Campo="TG_OPCOES"  : MensagemCheckBoxes()
EndSwitch
Monta_Prompt(MSG_CAMPO,TECLA)
Return Temp

EndProc ;SD_Dialog()

;*******************************************************************************
;* ROTINA PRINCIPAL                                                            *
;*******************************************************************************
AutoLib="\\Sistemas\\Cadastro\\Bib_Show,\\Sistemas\\Cadastro\\Bibliot"
If Not IsAssigned(SYS_CODIGO_CLIENTE)  Then SYS_CODIGO_CLIENTE=""  EndIf

sys_valor()

LimpAguarde()

ConfOpcoes("Ler")
VSDGEMPRESA=""

VSDGDIA    = AlinhM(StrVal(Day(Today())),2)
VSDGMES    = AlinhM(StrVal(Month(Today())),2)
VSDGANO    = AlinhM(StrVal( Year(Today())),4)
HORA       = Substr(Time(),1,2)+Substr(Time(),4,2)+Substr(Time(),7,2)
If VSDGDIA = "01"
   Then VSDGMESREF = AlinhM(StrVal(Month(Today()-1)),2)
   Else VSDGMESREF = VSDGMES
EndIf

DTFIMREF  = Today()-1
VSDGDTINI = Primeiro_Dia(VSDGMES+VSDGANO)
VSDGDTFIM = DTFIMREF 

Array VSDGOPCAO[9]
VSDGOPCAO[1]=True
VSDGOPCAO[2]=True
VSDGOPCAO[6]=true

VSDGOPCAO[3]=False
VSDGOPCAO[4]=False 
VSDGOPCAO[5]=False
VSDGOPCAO[7]=False
VSDGOPCAO[8]=False
VSDGOPCAO[9]=False

DATAR=Format("D13",StrVal(DTFIMREF))

While True
 ShowDialog "Exportador de dados p/ PlugSales - VersÆo 1.0" Proc "SD_Dialog"
   Trigger "OPEN","ARRIVE","UPDATE"
    Key "TAB","ReverseTab","ENTER","ESC","F1",
                      -152,-31,-32,-25,-20,-49,-83,
      -104, -105, -106, -107, -108, -109, -110, -111, -112, -113, -139, -140    

     @ 01,00   Height 22 Width 80

    Label  @ 00,00 "Empresa"  For "TG_EMPRESAS"
    Accept @ 01,01 Width 07 "A4"  Picture "[&,#][#*#]" Tag "TG_EMPRESAS" To VSDGEMPRESA
    Accept @ 01,09 Width 25 "A20" Picture "!*!" Tag "TG_NOMEMP" To VSDGNOMEMP

    @ 02,01 ?? "Caminho PlugSales"
    @ 03,02 ?? VSDGPASTA
    PaintCanvas Attribute 121 03,01,03,33

    Label  @ 04,00 "Tabela"  For "TG_TABELA"
    Accept @ 05,01 Width 08 "A5"  Picture "#*#" Tag "TG_TABELA" To VSDGTABELA
    Accept @ 05,09 Width 25 "A30" Picture "!*!" Tag "TG_NOMTAB" To VSDGNOMTAB

    Label  @ 00,35 "Op‡äes a sincronizar" For "TG_OPCOES"
    CheckBoxes @1,36 Height 9 Width 33 Tag "TG_OPCOES"
    "Clientes         "          to VSDGOPCAO[1],
    "Produtos         "          to VSDGOPCAO[2],
    "Posi‡Æo Financeira"         to VSDGOPCAO[6],

    "Tabelas de Pre‡o "          to VSDGOPCAO[3],
    "Invent rio "+DATAR          to VSDGOPCAO[4],
    "Estoque Atual    "          to VSDGOPCAO[8],                       

    "Usu rios         "          to VSDGOPCAO[5],
    "Formas/Condi‡äes Pagamento" to VSDGOPCAO[7],
    "Opera‡äes        "          to VSDGOPCAO[9]


    @ 14,01 ?? "** Aten‡Æo **" 
    @ 15,01 ?? " - Verifique se o INTEGRADOR do PlugBot esta carregado;" 
    @ 16,01 ?? " - Ao exportar estoque/invent rio, lembre de reprocessar estoque primeiro."

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

  EndDialog
  If Not RetVal Then QuitLoop EndIf
  
  If IsBlank(VSDGEMPRESA)
     Then fastmsg("Empresa inv lida !")
          Loop
  EndIf                                                            

  If Direxists(VSDGPASTA)=0
     Then fastmsg("Caminho especificado n„o existe !")
          Loop
  EndIf

  If (VSDGOPCAO[1]=False) And
     (VSDGOPCAO[2]=False) And
     (VSDGOPCAO[3]=False) And
     (VSDGOPCAO[4]=False) And
     (VSDGOPCAO[5]=False) And
     (VSDGOPCAO[6]=False) And
     (VSDGOPCAO[7]=False) And
     (VSDGOPCAO[8]=False) And
     (VSDGOPCAO[9]=False)
     Then fastmsg("Sem op‡Æo selecionada !")
          loop
     Else 
  EndIf

  If (VSDGOPCAO[4]=True)  And
     (VSDGOPCAO[8]=True)
     Then fastmsg("Op‡Æo estoque inv lida !")
          loop
     Else 
  EndIf

  tini=ticks()  
  
  View "\\Sistemas\\Cadastro\\Empresas"
  Moveto [Codigo da Empresa]
  Locate VSDGEMPRESA
  If RetVal
     Then CNPJ_Empr=[CGC Empresa    ]
            UF_Empr=[UF Empresa     ]
            TP_Empr=[Tipo da Empresa]
     Else CNPJ_Empr=""
            UF_Empr=""
            TP_Empr=""
  EndIf
  ClearAll
  
  {Tools} {Net} {AutoRefresh} {60}
  
  netapas=0
  tetapas=11
               
  Aguarde("Processando dados") 

  ItemInativo = ""
  ItemPrecoV  = ""
  TabelaREF   = ""

  If VSDGOPCAO[1] Or
     VSDGOPCAO[2] Or
     VSDGOPCAO[3] Or
     VSDGOPCAO[4] Or
     VSDGOPCAO[8] 
     Then Gera_Tabela()
  EndIf   

  If VSDGOPCAO[5]=True Then Usuarios()    EndIf    
  If VSDGOPCAO[9]=True Then Operacao()    EndIf               
  If VSDGOPCAO[7]=True Then CondPagtos()  EndIf               

  If VSDGOPCAO[2]=True Or ;Produtos                         
     VSDGOPCAO[4]=True Or ;Produtos - Invent rio             
     VSDGOPCAO[8]=True    ;Produtos - Estoque Atual         
     Then Produtos()
  EndIf
  If VSDGOPCAO[3]=True Then TabPreco()    Endif    
  If VSDGOPCAO[1]=True Then Clientes()    Endif    
  If VSDGOPCAO[6]=True Then Financeiro()  Endif    
               
  ConfOpcoes("Gravar")

  If IsTable(ItemInativo)              Then Delete ItemInativo              EndIf               
  If IsTable(ItemPrecoV)               Then Delete ItemPrecoV               EndIf               
  If IsTable(TabelaREF)                Then Delete TabelaREF                EndIf
  
  LimpAguarde()
  LimpAguardes()
  
  Mensagem("Fim do processo !")
  quitloop
     
EndWhile

ClearAll
Release Vars All
Release Procs All
