;** ExpPda01 *******************************************************************
;* Exportacao de Dados PDA Sistemas Edmar                                      *
;*******************************************************************************
;Autor           : Vise Informatica (VISERP)
;Desenvolvido    : 19/09/2005 por Anivel Augusto Rodrigues
;Ultima Alteracao: 11/04/2006 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes
;Ultima Alteracao: 10/07/2006 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes
;Ultima Alteracao: 14/08/2007 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes Deleta_Arquivo
;Ultima Alteracao: 21/08/2013 por Bruno Carvalho
;Motivo Alteracao: Ajustes "Situacao do Cliente" p/ permitir situa‡Æo como OTIMO

;*******************************************************************************
;* Rotina p/ Selecionar e Ordernar Registros                                   *
;*******************************************************************************
Proc SelecionaVend()
ClearAll

{Ask} {\\Sistemas\\Cadastro\\Represen} Check
Moveto [Codigo do Representante] TypeIn "~VSDGREPRESEN"
Do_It!
ClearAll

View "PDA_VEND"
CoEdit "Answer"
NR = NRecords("Answer")
Scan

  Barra(NR, RecNo())
  Aguarde("Aguarde, Processando Vendedor "+BARRA_STRING)

  Moveto "PDA_VEND"
  End
  Down

  [COD_VEND  ]=AlinhM([Answer->Codigo do Representante],5)
  [NOM_VEND  ]=[Answer->Nome Fantasia Represent  ]
  [NUM_VEND  ]=NumVal([Answer->Codigo do Representante  ])
 ;[CHAV_VEND ]=[Answer->                         ]

  Moveto "Answer"
EndScan
Do_It!
ClearAll

EndProc   ; (Seleciona)

;*******************************************************************************
;* Rotina p/ Selecionar e Ordernar Registros                                   *
;*******************************************************************************
Proc SelecionaClie()
ClearAll

{Ask} {\\Sistemas\\Cadastro\\Destinat} Check
Moveto [Tipo             ] TypeIn "C"
Moveto [Inativo          ] TypeIn "Not S"
Moveto [Codigo do Representante] TypeIn "~VSDGREPRESEN"
Do_It!
ClearAll

View "PDA_CLIE"
View   "\\Sistemas\\Cadastro\\DestObs"
View   "\\Sistemas\\Cadastro\\End_Cob"
View   "\\Sistemas\\Cadastro\\FichaCli"
View   "\\Sistemas\\CtaRec\\Duplic"
CoEdit "Answer"
NR = NRecords("Answer")
Scan

  Barra(NR, RecNo())
  Aguarde("Aguarde, Processando Clientes "+BARRA_STRING)

  ;; Titulos a Vencer e Vencidos
  CREDITO_TOTAV=0
  CREDITO_TOTV =0
  DIAS_ATRASO  =0

  Moveto "\\Sistemas\\CtaRec\\Duplic"
  Moveto [Codigo do Destinatario]
  Locate IndexOrder by "IndDup22" [Answer->Codigo]
  If RetVal
     Then While [Codigo do Destinatario]=[Answer->Codigo]
            If [Saldo do Documento]>0.01
               Then If [Data de Vencimento]>=Today()
                       Then CREDITO_TOTAV=CREDITO_TOTAV+[Saldo do Documento]
                       Else CREDITO_TOTV =CREDITO_TOTV +[Saldo do Documento]
                            If (Today()-[Data de Vencimento])>DIAS_ATRASO
                               Then DIAS_ATRASO=(Today()-[Data de Vencimento])
                            EndIf
                    EndIf
            EndIf
            Locate IndexOrder by "IndDup22" Next [Answer->Codigo]
            If Not RetVal Then QuitLoop EndIf
          EndWhile
  EndIf

  Moveto "PDA_CLIE"
  End
  Down

  [CODIGO_CLI]="0"+[Answer->Codigo]
  [NOME_CLI  ]=[Answer->Razao Social              ]                ;A40
  [FANT_CLI  ]=[Answer->Nome Fantasia EmitDest    ]                ;A40
  [END_CLI   ]=[Answer->Endereco                  ]                ;A40
  [BAIRRO_CLI]=[Answer->Bairro                    ]                ;A26
  [CEP_CLI   ]=SubStr([Answer->CEP],1,2)+
               SubStr([Answer->CEP],4,7)
  [CIDADE_CLI]=[Answer->Cidade                    ]                ;A26
  [ESTADO_CLI]=[Answer->UF                        ]                ;A2

  [FONE_CLI  ]=MONTA_STRING([Answer->Telefone],"N","",20)           ;A15
  If [Answer->Tipo Pessoa]="JURIDICA"
     Then [CGC_CLI   ]=MONTA_STRING([Answer->Cgc],"N","A",14)      ;A14
  EndIf
  If [Answer->Tipo Pessoa]="FISICA"
     Then [CPF_CLI   ]=MONTA_STRING([Answer->Cgc],"N","A",11)      ;A11
  EndIf
  [INSEST_CLI]=MONTA_STRING([Answer->IE],"N","",15)                ;A16
  [VENDEDOR  ]=AlinhM([Answer->Codigo do Representante   ],5)      ;A5
  [EMAIL     ]=[Answer->Endereco_Eletronico       ]                ;A40
  If Not IsBlank([Answer->Data_Cadastro])
     Then [DT_CAD_CLI]=[Answer->Data_Cadastro]
         ;[DT_CAD_CLI]=AlinhM(StrVal(Day([Answer->Data_Cadastro])),2)+
         ;             AlinhM(StrVal(Month([Answer->Data_Cadastro])),2)+
         ;             SubStr(StrVal(Year([Answer->Data_Cadastro])),3,2)
  EndIf
 ;[CELULAR   ]=[Answer->                          ]                ;A14
 ;[CLI_NOVO  ]=[Answer->                          ]                ;A1
  [DESCONTO  ]=[Answer->Taxa_Desconto Permitido   ]                ;N
 ;[COD_PG_CLI]=[Answer->                          ]                ;A5
  [TBPR_CLI  ]=VSDGTABELA
  [LIM_CRED  ]=0
  [BLO_VENC  ]=0


  Moveto "\\Sistemas\\Cadastro\\End_Cob"
  Moveto [Codigo]
  Locate [Answer->Codigo]
  If RetVal
     Then Moveto "PDA_CLIE"
          [PRACA_CLI ]=[\Sistemas\Cadastro\End_Cob->Endereco de Cobranca]
          [CEP_COB   ]=SubStr([\Sistemas\Cadastro\End_Cob->CEP de Cobranca],1,2)+
                       SubStr([\Sistemas\Cadastro\End_Cob->CEP de Cobranca],4,7)
          [CID_COB   ]=[\Sistemas\Cadastro\End_Cob->Cidade de Cobranca  ]
          [UF_COB    ]=[\Sistemas\Cadastro\End_Cob->UF de Cobranca      ]
         ;[FONE_COB  ]=""
  EndIf

  Moveto "\\Sistemas\\Cadastro\\DestObs"
  Moveto [Codigo]
  Locate [Answer->Codigo]
  If RetVal
     Then Moveto "PDA_CLIE"
          [OBS_CLI   ]=SubStr([\Sistemas\Cadastro\DestObs->Observacoes],1,250)
  EndIf

  Moveto "\\Sistemas\\Cadastro\\FichaCli"
  Moveto [Codigo]
  Locate [Answer->Codigo]
  If RetVal
     Then Moveto "PDA_CLIE"
          [LIM_CRED  ]=[\Sistemas\Cadastro\FichaCli->Limite de Credito ]
          If Not IsBlank([\Sistemas\Cadastro\FichaCli->Data da Ultima Compra])
             Then [UTCOMP_CLI ]=[\Sistemas\Cadastro\FichaCli->Data da Ultima Compra]
                  ;[UTCOMP_CLI]=AlinhM(StrVal(Day([\Sistemas\Cadastro\FichaCli->Data da Ultima Compra])),2)+
                  ;            AlinhM(StrVal(Month([\Sistemas\Cadastro\FichaCli->Data da Ultima Compra])),2)+
                  ;            SubStr(StrVal(Year([\Sistemas\Cadastro\FichaCli->Data da Ultima Compra])),3,2)
          EndIf
          [BLO_VENC  ]=[\Sistemas\Cadastro\FichaCli->Maximo Dias Atraso]
          If IsBlank([BLO_VENC])
             Then [BLO_VENC]=0
          EndIf
  EndIf

  Moveto "PDA_CLIE"
  [VVNCE_CLI]=CREDITO_TOTAV
  [VVNCI_CLI]=CREDITO_TOTV
  Switch
    Case [Answer->Situacao do Cliente]="OTIMO"       : [CONCE_CLI]="OT"
    Case [Answer->Situacao do Cliente]="BOM"         : [CONCE_CLI]="BM"
    Case [Answer->Situacao do Cliente]="REGULAR"     : [CONCE_CLI]="RG"
    Case [Answer->Situacao do Cliente]="PESSIMO"     : [CONCE_CLI]="PS"
    Case [Answer->Situacao do Cliente]="RECADASTRO"  : [CONCE_CLI]="RC"
  EndSwitch

  If DIAS_ATRASO>[BLO_VENC  ]
     Then [CONCE_CLI]="RC"
  EndIf

  Moveto "Answer"
EndScan
Do_It!
ClearAll

;;Sort "PDA_CLIE" On "CIDADE_CLI","NOME_CLI"

EndProc   ; (Seleciona)


;*******************************************************************************
;* Rotina p/ Selecionar e Ordernar Registros                                   *
;*******************************************************************************
Proc SelecionaItem()
ClearAll

{Ask} {\\Sistemas\\Estoque\\Itens}
Moveto [Codigo do Item   ] Example "codit"
Moveto [Inativo          ] TypeIn "Not S"
{Ask} {\\Sistemas\\Vendas\\TbPrIte} Check
Moveto [Codigo da Tabela ] TypeIn "~VSDGTABELA"
Moveto [Codigo do Item   ] Example "codit"
Do_It!
ClearAll


View "PDA_ITEM"
CoEdit "Answer"
NR = NRecords("Answer")
Scan

  Barra(NR, RecNo())
  Aguarde("Aguarde, Processando Itens/TbPre‡o "+BARRA_STRING)

  Moveto "PDA_ITEM"
  End
  Down

  [CODITEM  ]=AlinhM([Answer->Codigo do Item],13)
  [DESCRICAO]=[Answer->Descricao do Item ]
  [UNIDADE  ]=[Answer->Unidade Fiscal    ]
  [VENDANORM]=[Answer->Preco Unitario    ]

  Moveto "Answer"
EndScan
Do_It!
ClearAll



{Ask} {\\Sistemas\\Estoque\\Itens}
Moveto [Codigo do Item   ] Example "codit"
Moveto [Inativo          ] TypeIn "Not S"
{Ask} {\\Sistemas\\Vendas\\TbPrRIt} Check
Moveto [Codigo da Tabela       ] TypeIn "~VSDGTABELA"
Moveto [Codigo do Representante] TypeIn "~VSDGREPRESEN"
Moveto [Codigo do Item         ] Example "codit"
Do_It!
ClearAll

If Not IsEmpty("Answer")
   Then
        View "PDA_ITEM"
        CoEdit "Answer"
        NR = NRecords("Answer")
        Scan

          Barra(NR, RecNo())
          Aguarde("Aguarde, Processando Itens/TbPre‡o Representante "+BARRA_STRING)

          Moveto "PDA_ITEM"
          Moveto [CODITEM]
          Locate AlinhM([Answer->Codigo do Item],13)
          If Not RetVal
             Then End
                  Down

                  [CODITEM  ]=AlinhM([Answer->Codigo do Item],13)
                  [DESCRICAO]=[Answer->Descricao do Item ]
                  [UNIDADE  ]=[Answer->Unidade Fiscal    ]
          EndIf
          [VENDANORM]=[Answer->Preco Unitario    ]

          Moveto "Answer"
        EndScan
        Do_It!
        ClearAll
EndIf



{Ask} {\\Sistemas\\Cadastro\\Destinat}
Moveto [Codigo           ] Example "codcli"
Moveto [Inativo          ] TypeIn "Not S"
Moveto [Codigo do Representante] TypeIn "~VSDGREPRESEN"
{Ask} {\\Sistemas\\Estoque\\Itens}
Moveto [Codigo do Item   ] Example "codit"
Moveto [Inativo          ] TypeIn "Not S"
{Ask} {\\Sistemas\\Vendas\\TbPrCIt} Check
Moveto [Codigo da Tabela ] TypeIn "~VSDGTABELA"
Moveto [Codigo           ] Example "codcli"
Moveto [Codigo do Item   ] Example "codit"
Do_It!
ClearAll

If Not IsEmpty("Answer")
   Then
        View "PDA_EXC"
        CoEdit "Answer"
        NR = NRecords("Answer")
        Scan

          Barra(NR, RecNo())
          Aguarde("Aguarde, Processando Itens/TbPre‡o Cliente "+BARRA_STRING)

          Moveto "PDA_EXC"
          End
          Down

          [CODITEM  ]=AlinhM([Answer->Codigo do Item],13)
          [COD_CLI  ]="0"+[Answer->Codigo        ]
          [VENDANORM]=[Answer->Preco Unitario    ]

          Moveto "Answer"
        EndScan
        Do_It!
        ClearAll
EndIf


;;Sort "PDA_ITEM" On "DESCRICAO"
;;Sort "PDA_EXC"  On "CODITEM","COD_CLI"

EndProc   ; (Seleciona)

;*******************************************************************************
;* Rotina p/ Selecionar e Ordernar Registros                                   *
;*******************************************************************************
Proc SelecionaCdPgto()
ClearAll

{Ask} {\\Sistemas\\Vendas\\Condpgto} Check
;Moveto [Inativo          ] TypeIn "Not S"
Moveto [Utiliza em PDA   ] TypeIn "S"
Do_It!
ClearAll

View "PDA_CDPG"
CoEdit "Answer"
NR = NRecords("Answer")
Scan

  Barra(NR, RecNo())
  Aguarde("Aguarde, Processando Cond.Pagto "+BARRA_STRING)

  Moveto "PDA_CDPG"
  End
  Down

  [CODIG_COND]=NumVal([Answer->Condicao de Pagamento])
  [NOME_COND ]=[Answer->Descricao CondPagto      ]
  [DESC_COND ]=[Answer->Taxa Desconto            ]

  Moveto "Answer"
EndScan
Do_It!
ClearAll


EndProc   ; (Seleciona)

;*******************************************************************************
;* Rotina p/ Selecionar e Ordernar Registros                                   *
;*******************************************************************************
Proc SelecionaFPgto()
ClearAll

{Ask} {\\Sistemas\\Cadastro\\Tppagto} Check
Moveto [Utiliza_ECF   ] TypeIn "S"
Do_It!
ClearAll

View "PDA_FPG"
CoEdit "Answer"
NR = NRecords("Answer")
Scan

  Barra(NR, RecNo())
  Aguarde("Aguarde, Processando Forma Pagto "+BARRA_STRING)

  Moveto "PDA_FPG"
  End
  Down

  [COD_FPG   ]=NumVal([Answer->Codigo_Avanco])
  [NOME_FPG  ]=[Answer->Descricao Tipo Pagamento]

  Moveto "Answer"
EndScan
Do_It!
ClearAll

EndProc   ; (Seleciona)

;*******************************************************************************
;* Rotina Converte DBF                                                         *
;*******************************************************************************
Proc GravaDBF()
ClearAll

VSDGPASTA="C:\\SEPDA"
Tipo_Ext =".DBF"

While True
  If DirExists(VSDGPASTA)=0
     Then Cria_Pasta(VSDGPASTA)
          Sleep 5000
          Loop
     Else QuitLoop
  EndIf
EndWhile
VSDGPASTA=VSDGPASTA+"\\"

For i from 1 to 6
  Switch
    Case i=1:
         ARQPDOX="PDA_CLIE"
         ARQ    ="CLI"+Alinhm(VSDGREPRESEN,5)
    Case i=2:
         ARQPDOX="PDA_ITEM"
         ARQ    ="ITM"+Alinhm(VSDGREPRESEN,5)
    Case i=3:
         ARQPDOX="PDA_EXC"
         ARQ    ="IEX"+Alinhm(VSDGREPRESEN,5)
    Case i=4:
         ARQPDOX="PDA_CDPG"
         ARQ    ="CONDPGTO"
    Case i=5:
         ARQPDOX="PDA_FPG"
         ARQ    ="FORMPG"
    Case i=6:
         ARQPDOX="PDA_VEND"
         ARQ    ="VENDEDOR"
  EndSwitch
  ARQ=VSDGPASTA+ARQ+Tipo_Ext

  Barra(6, i)
  Aguarde("Convertendo ->DBF "+ARQ+" "+BARRA_STRING)
  sleep(2000)
  Deleta_Arquivo(ARQ)

  {Tools} {ExportImport} {Export} {dBASE} {2) dBASE III}
  TypeIn ARQPDOX Enter
  TypeIn ARQ Enter
  ClearAll
EndFor

EndProc

;******************************************************************************
;*Procedimento responsavel pela montagem do cgc/cpf
;******************************************************************************
Proc MONTA_STRING(MSTRING,NUMALF,OP,TM)
M_NOVO = ""
Switch
   Case NUMALF = "N":
        For I From 1 to Len(MSTRING)
            If (Asc(SubStr(MSTRING,I,1)) >= 48) And
               (Asc(SubStr(MSTRING,I,1)) <= 57)
               Then M_NOVO = M_NOVO + SubStr(MSTRING,I,1)
            EndIf
        EndFor
   Case NUMALF = "A":
        For I From 1 to Len(MSTRING)
            If (Asc(SubStr(MSTRING,I,1)) >= 065) And
               (Asc(SubStr(MSTRING,I,1)) <= 122)
               Then M_NOVO = M_NOVO + SubStr(MSTRING,I,1)
            EndIf
        EndFor
   Case NUMALF = "AN":
        For I From 1 to Len(MSTRING)
            If (Asc(SubStr(MSTRING,I,1)) >= 065) And
               (Asc(SubStr(MSTRING,I,1)) <= 122) Or
               (Asc(SubStr(MSTRING,I,1)) >= 48) And
               (Asc(SubStr(MSTRING,I,1)) <= 57)
               Then M_NOVO = M_NOVO + SubStr(MSTRING,I,1)
            EndIf
        EndFor
EndSwitch
If Len(M_NOVO)>TM
   Then M_NOVO=""
EndIf
IF OP="A"
   Then M_NOVO=ALINHM(M_NOVO,14)
EndIf

Return(M_NOVO)
EndProc ; (Monta_String)

;*******************************************************************************
;* Rotina                                                                      *
;*******************************************************************************
Proc SD_Dialog(Disparo,Campo,Evento,Elemento)
Temp=True
MSG_CAMPO=""
TECLA=""
If Disparo="OPEN"  Then AoCriarShowDialog() EndIf
If Disparo="EVENT" And Evento["Type"]="KEY" Then
   Switch
     Case Evento["KeyCode"] = 9: Temp=False
     Case Evento["KeyCode"] = -59: Dialog_F1()
     Case Evento["KeyCode"] =  27:
          Temp=False
          Switch
            Case Campo="TG_TABELA"        : Campo="NO"
            Case Campo="TG_REPRESEN"      : Campo="TG_TABELA"
            Case Campo="YES" Or Campo="NO": Campo="TG_TABELA"
          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_TABELA"   : Campo="TG_REPRESEN"
                    Case Campo="TG_REPRESEN" : Campo="YES"
                  EndSwitch
          EndIf
          RefreshDialog
   EndSwitch
EndIf
Switch
  Case Campo="":
     MSG_CAMPO=""
  Case Campo="TG_TABELA":
     MSG_CAMPO="Informe uma tabela"
  Case Campo="TG_REPRESEN":
     MSG_CAMPO="Informe um representante"
Endswitch
Monta_Prompt(MSG_CAMPO,TECLA)
Return Temp
EndProc

;*******************************************************************************
;* ROTINA PRINCIPAL                                                            *
;*******************************************************************************
AutoLib="\\Sistemas\\Cadastro\\Bib_Show,\\Sistemas\\Cadastro\\Bibliot"
LimpAguarde()

VSDGTABELA  =""
VSDGREPRESEN=""

While True

  ShowDialog "Exporta‡„o PDA - Sistemas Edmar" Proc "SD_Dialog"
  Trigger "OPEN","ARRIVE"
  Key "F1","ENTER","ESC","TAB",
      -104, -105, -106, -107, -108, -109, -110, -111, -112, -113, -139, -140  
   @ 05,12   Height 09 Width 56

    Label  @ 00,00 "Tabela"  For "TG_TABELA"
    Accept @ 01,01 Width 08 "A5"  Picture "#*#" Tag "TG_TABELA" To VSDGTABELA
    Accept @ 01,10 Width 33 "A30" Picture "!*!" Tag "TG_NOMTAB" To VSDGNOMTAB

    Label  @ 02,01 "Representante"  For "TG_REPRESEN"
    Accept @ 03,02 Width 07 "A4"  Picture "[&,#][#*#]" Tag "TG_REPRESEN"   To VSDGREPRESEN
    Accept @ 03,10 Width 23 "A20" Picture "!*!" Tag "TG_NOMREPR"    To VSDGNOMREPR

    Pushbutton @ 05,14 width 11 "~O~k"      OK     Default Value "Ok" Tag "YES" To BottonValue
    Pushbutton @ 05,28 width 11 "~C~ancela" CANCEL                    Tag "NO"  To BottonValue

  EndDialog
  If Not RetVal Then QuitLoop EndIf

  If IsBlank(VSDGTABELA)
     Then Mensagem("Informe uma Tabela !")
          Loop
  EndIf
  If IsBlank(VSDGREPRESEN)
     Then Mensagem("Informe um Representante !")
          Loop
  EndIf

  TabOk=False
  View "\\Sistemas\\Vendas\\TbPrCab"
  Moveto [Codigo da Tabela]
  Locate VSDGTABELA
  If RetVal
     Then If [\Sistemas\Vendas\TbPrCab->Ativa]<>"N"
             Then TabOk=True
          EndIf
  EndIf
  ClearAll
  If Not TabOk
     Then Mensagem("Tabela informada esta inativa !")
          Loop
  EndIf

  Empty("PDA_VEND")
  Empty("PDA_CLIE")
  Empty("PDA_ITEM")
  Empty("PDA_EXC")
  Empty("PDA_CDPG")
  Empty("PDA_FPG")

  SelecionaVend()
  SelecionaClie()
  SelecionaItem()
  SelecionaCdPgto()
  SelecionaFPgto()
  If IsEmpty("PDA_CLIE")
     Then MENSAGEM("N„o existem clientes a processar")
          Loop
  EndIf
  If IsEmpty("PDA_ITEM")
     Then MENSAGEM("N„o existem itens a processar")
          Loop
  EndIf

  AGUARDE("Aguarde, Exportando dados")
  GravaDBF()

  Mensagem("Arquivos gerados em C:\\SEPDA\\*.DBF")

EndWhile
ClearAll
Release Vars All
Release Procs All
