;** Exp_Bal  ********************************************************************
;*  Exportacao de dados p/ programa MGV5 - Balan‡a                                             *
;*******************************************************************************
;Autor           : Vise Informatica (VISERP)
;Desenvolvido    : 10/08/2004 por Davi Pereira Carrano
;Ultima Alteracao: 13/08/2007 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes Deleta_Arquivo
;Ultima Alteracao: 19/09/2012 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes Substitui‡Ćo Editor novo arquivo por FileWrite
;Ultima Alteracao: 03/01/2017 por Rafael Matos
;Motivo Alteracao: Ajustes showdialog MensagemRadioButtons()  

;*******************************************************************************
;* Gera Arquivo Texto p/ Produtos                                              *
;*******************************************************************************
Proc EXPORTA()
ClearAll
Empty("exp_bal1")
CC=0
   If VSDGOPCAO[1]= True
      Then
           ;===================================
           ;=============PRODUTOS==============
           ;===================================

           ;============================================================================
           ;Preencher a tabela Exp_bal1 com os itens do programa Vise
           ;============================================================================
           If IsEmpty("exp_bal1")
              Then
                   NR=NRecords("\\Sistemas\\Estoque\\Itens")

                   View   "\\Sistemas\\Vendas\\Tbprite"
                   View   "exp_bal1"
                   Coedit "\\Sistemas\\Estoque\\Itens"
                   Scan
                     Barra(NR, RecNo())
                     AGUARDE("Aguarde, Exportando Produtos "+BARRA_STRING)

                     REG_OK=True
                     If VSDGEXPORT=1
                        Then If Not (([Data da Manutencao]>= VSDGDTINI) And ([Data da Manutencao]<= VSDGDTFIM))
                                Then REG_OK=False
                             EndIf
                     EndIf

                     CODITEM=[Codigo do Item]
                     Moveto "\\Sistemas\\Vendas\\Tbprite"
                     Moveto [Codigo da Tabela]
                     Locate VSDGTABELA, CODITEM
                     If Not RetVal
                        Then REG_OK=False
                        Else If ((VSDGEXPORT=1) AND (REG_OK=False))
                                Then If Not (([Data Ultimo Reajuste]>= VSDGDTINI) And ([Data Ultimo Reajuste]<= VSDGDTFIM))
                                        Then REG_OK=False
                                        Else REG_OK=True
                                     EndIf
                             EndIf
                             PRECO=[Preco Unitario]
                             If PRECO<=0
                                Then REG_OK=False
                             EndIf
                     EndIf


                     Moveto "\\Sistemas\\Estoque\\Itens"

                     If [Inativo]="S"
                        Then REG_OK=False
                     EndIf

                     If ([Tipo do Item]<>"P") And ([Tipo do Item]<>"T")
                        Then REG_OK=False
                     EndIf

                     If Not REG_OK
                        Then Loop
                     EndIf

                     Moveto "exp_bal1"
                     End Down
                     [Codigo do Departamento ]=SubStr([\Sistemas\Estoque\Itens->Codigo do Departamento],2,2)
                     If [\Sistemas\Estoque\Itens->Unidade Interna]="UN"
                        Then [Tipo de Produto]="1"
                        Else [Tipo de Produto]="0"
                     EndIf

                     [Codigo do Item         ]=SubStr([\Sistemas\Estoque\Itens->Codigo do Item],5,6)
                     [Preco                  ]=StrVal(PRECO)
                     [Dias de Validade       ]="000"
                     [D1                     ]=Completa(SubStr([\Sistemas\Estoque\Itens->Descricao do Item], 1,25),25," ")
                     [D2                     ]=Completa(SubStr([\Sistemas\Estoque\Itens->Descricao do Item],26,05),25," ")


                     If VSDGARQUIVO = 1
                        Then
                             [Codigo Informacao Extra]="000000"
                             [Codigo Imagem Item     ]="000"
;                             [Opcao Cabecalho        ]=
;                             [Codigo Imagem Cabecalho]=
;                             [Opcao Rodape           ]=
;                             [Codigo Imagem Rodape   ]=
                     EndIf

                     If VSDGARQUIVO = 2
                        Then
                             [Codigo Informacao Extra]="000000"
                             [Codigo Imagem Item     ]="000"
                             [Codigo Nutricional     ]="0000"
                             [Data de Validade       ]="1"
                             [Data de Embalagem      ]="1"
                             [Codigo do Fornecedor   ]=SubStr([\Sistemas\Estoque\Itens->Codigo Fornecedor],12,4)
         ;                    [Lote                   ]=[\Sistemas\Estoque\Itens->]
         ;                    [Codigo Especial        ]=[\Sistemas\Estoque\Itens->]
         ;                    [Versao Preco        ]=[\Sistemas\Estoque\Itens->]
         ;                    [Bytes Reservados       ]=[\Sistemas\Estoque\Itens->]
                     EndIf

                     If VSDGARQUIVO=3
                        Then [Etiqueta Departamento]="00"
                     EndIf


                     Moveto "\\Sistemas\\Estoque\\Itens"

                   EndScan
                   Do_It!
                   ClearAll

           EndIf

           ;============================================================================
           ;Criar o arquivo TXT correspondente com os itens de acordo com sua classificacao
           ;============================================================================
           Switch
              Case VSDGARQUIVO=1:ARQ="C:\\Windows\\Desktop\\CADASTRO.TXT"
              Case VSDGARQUIVO=2:ARQ="C:\\Windows\\Desktop\\ITENSMGV.TXT"
              Case VSDGARQUIVO=3:ARQ="C:\\Windows\\Desktop\\TXITENS.TXT"
           EndSwitch

           Deleta_Arquivo(ARQ)
           Deleta_Arquivo("C:\\Windows\\Desktop\\CADASTRO.BAK")
           Deleta_Arquivo("C:\\Windows\\Desktop\\ITENSMGV.BAK")
           Deleta_Arquivo("C:\\Windows\\Desktop\\TXITENS.BAK")


           NR=NRecords("Exp_bal1")
           View "exp_bal1"
           Scan
             Barra(NR, RecNo())
             AGUARDE("Aguarde, Criando Arquivo de Dados "+BARRA_STRING)

             CC=CC+1
             Print File ARQ AlinhM([Codigo do Departamento],2)

             If VSDGARQUIVO=3
                Then Print File ARQ ""+[Etiqueta Departamento]
             EndIf

             Print File ARQ ""+[Tipo de Produto]
             Print File ARQ AlinhM([Codigo do Item],6)
             Print File ARQ AlinhM(Valor_Str([Preco],Len([Preco]),2),6)
             Print File ARQ ""+[Dias de Validade]
             Print File ARQ ""+[D1]
             Print File ARQ ""+[D2]

             If VSDGARQUIVO=1
                Then
                     Print File ARQ ""+[Codigo Informacao Extra]
                     Print File ARQ ""+[Codigo Imagem Item     ]
                     Print File ARQ AlinhM([Opcao Cabecalho        ],1)
                     Print File ARQ AlinhM([Codigo Imagem Cabecalho],2)
                     Print File ARQ AlinhM([Opcao Rodape           ],1)
                     Print File ARQ AlinhM([Codigo Imagem Rodape   ],2)

             EndIf



             If VSDGARQUIVO=2
                Then
                     Print File ARQ ""+[Codigo Informacao Extra]
                     Print File ARQ ""+[Codigo Imagem Item     ]
                     Print File ARQ ""+[Codigo Nutricional     ]
                     Print File ARQ ""+[Data de Validade       ]
                     Print File ARQ ""+[Data de Embalagem      ]
                     Print File ARQ AlinhM([Codigo do Fornecedor   ],4)
                     Print File ARQ AlinhM([Lote                   ],12)
                     Print File ARQ AlinhM([Codigo Especial        ],11)
                     Print File ARQ AlinhM([Versao Preco           ],1)
                     Print File ARQ Completa([Bytes Reservados     ],2," ")
             EndIf

             If VSDGARQUIVO=3
                Then For i from 1 to 5
                         Print File ARQ Fill(" ",50)
                     EndFor
             EndIf

             Print FIle ARQ "\n"

           EndScan
           ClearAll
   EndIf

EndProc ;(ExportaP)


  ;********************************************************************************
  ;* CONVERTE VALOR PARA STRING                                                  *
  ;********************************************************************************
  Proc Valor_Str(Valor,Tam,Dec)
  Private VrTit,Valor,Tam,Dec,Part1,Part2

  VrTit=StrVal(Valor)
  If SearchFrom(".",VrTit,1)>0
     Then Part1=SubStr(VrTit,1,SearchFrom(".",VrTit,1)-1)
          Part2=SubStr(VRTit,SearchFrom(".",VrTit,1)+1,Dec)
          Part2=PART2+Fill(0,DEC-Len(Part2))
     Else Part1=VrTit
          Part2=Fill(0,Dec)
  EndIf
  Vrtit=Part1+Part2
  If Len(Vrtit)>=6
     Then Vrtit=SubStr(Vrtit,1,5)
     Else VrTit=Fill("0",Tam-Len(VrTit))+VrTit
EndIf

Return VrTit
EndProc  ; (Valor_Str)

;*******************************************************************************
;* Rotina                                                                      *
;*******************************************************************************
Proc SD_Dialog(Disparo,Campo,Evento,Elemento)
Temp=True
TECLA=""
MSG_CAMPO=""
If Disparo="OPEN"  Then AoCriarShowDialog() campo="TG_Tabela" EndIf
If Disparo="EVENT" And Evento["Type"]="KEY" Then
   Switch
     Case Evento["KeyCode"] = -59: Dialog_F1()
     Case Evento["KeyCode"] =  27:
          Temp=False
          Switch
     ;      Case Campo="TG_OPCOES"        : Campo="NO"
     ;      Case Campo="TG_ARQUIVO"       : Campo="TG_OPCOES"
     ;      Case Campo="TG_TABELA"        : Campo="TG_ARQUIVO"
            Case Campo="TG_TABELA"        : Campo="NO"
            Case Campo="TG_EXPORT"        : Campo="TG_TABELA"
            Case Campo="TG_DTINI"         : Campo="TG_EXPORT"
            Case Campo="TG_DTFIM"         : Campo="TG_DTINI"
     ;      Case Campo="YES" Or Campo="NO": Campo="TG_OPCOES"
            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_OPCOES":
                         If (VSDGOPCAO[1]=False) And
                            (VSDGOPCAO[2]=False)
                           Then Campo="TG_OPCOES"
                           Else Campo="TG_ARQUIVO"
                         EndIf

                         If VSDGOPCAO[2]=False
                            Then VSDGTABELA  =""
                                 VSDGNOMTAB  =""
                         EndIf
                         If VSDGOPCAO[1]=False
                            Then VSDGTIPOE   =""
                                 VSDGNOMTIPOE=""
                         EndIf
                    Case Campo="TG_ARQUIVO":
                            Campo="TG_TABELA"

                    Case Campo="TG_TABELA"     :
                        If Not IsBlank(VSDGTABELA)
                           Then Campo="TG_EXPORT"
                        EndIf

                    Case Campo="TG_EXPORT"      :
                        VSDGEXPORT=ControlValue("TG_EXPORT")
                        If VSDGEXPORT=1
                           Then Campo="TG_DTINI"
                           Else Campo="YES"
                                VSGDDTINI=BlankDate()
                                VSGDDTFIM=BlankDate()
                        EndIf
                    Case Campo="TG_DTINI"      :
                         If Not IsBlank(VSDGDTINI)
                            Then Campo="TG_DTFIM"
                         EndIf
                    Case Campo="TG_DTFIM"      : Campo="YES"
                  EndSwitch
          EndIf
          RefreshDialog
   EndSwitch
EndIf
Switch
 Case Campo="TG_TIPOE"   : MSG_CAMPO="Tipo de Exporta‡„o (P=Parcial  T=Total)"
 Case Campo="TG_ARQUIVO" : MensagemRadioButtons()
 Case Campo="TG_EXPORT"  : MensagemRadioButtons()
 Case Campo="TG_TABELA"  : MSG_CAMPO="Tabela de Pre‡o"
EndSwitch
Monta_Prompt(MSG_CAMPO,TECLA)
Return Temp

EndProc




;************************************
;* ROTINA PARA Ler/Gravacao Opcao   *
;************************************
Proc ConfOpcoes(Opcao)
Private Opcao
Switch
  Case Opcao="Ler":
       If IsFile("EX_0002.sc")
           Then Play "EX_0002"
           Else VSDGARQUIVO=""
       EndIf
  Case Opcao="Gravar":
       FileWrite        "EX_0002.sc" From ";****** Variaveis de Configura‡„o Portas de Comunica‡Ćo"+"\n"
       FileWrite Append "EX_0002.sc" From "VSDGARQUIVO= "+StrVal(VSDGARQUIVO)+"\n"
EndSwitch
EndProc ;

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

MOUSE HIDE

Array VSDGOPCAO[2]
VSDGOPCAO[1]=True
VSDGOPCAO[2]=False
VSDGDTINI=BlankDate()
VSDGDTFIM=BlankDate()
VSDGEXPORT=False
;ConfOpcoes("Ler")
VSDGARQUIVO=2

While True
 ShowDialog "Exporta‡„o de dados p/ MGV5 - Balan‡a" Proc "SD_Dialog"
   Trigger "OPEN","ARRIVE"
    Key "TAB","ReverseTab","ENTER","ESC","F1",
      -104, -105, -106, -107, -108, -109, -110, -111, -112, -113, -139, -140    
     @ 05,12 Height 18 Width 47

    Label  @ 01,00 "Op‡oes " For "TG_OPCOES"
    CheckBoxes @2,00 Height 2 Width 25 Tag "TG_OPCOES"
    "Produtos      "       to VSDGOPCAO[1]
;    "Departamentos "       to VSDGOPCAO[2]

    Label  @ 01,22 "Gerar Arquivo:" For "TG_ARQUIVO"
    RadioButtons @ 2,22 Height 4 Width 20
     "~C~adastro.txt",
     "~I~tensmgv.txt",
     "~T~xitens.txt"
;     "I~t~ens.cad"
     Tag "TG_ARQUIVO"
     To VSDGARQUIVO



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

   Label  @ 07,00 "Exportar Registros:"  For "TG_EXPORT"
   RadioButtons @ 08,02 Height 02 Width 20
     "~N~ovos/Alterados",
     "~T~odos"
     Tag "TG_EXPORT"
     To VSDGEXPORT 


    Label  @ 11,00 "Periodo da Inclus„o/Altera‡„o" For "TG_DTINI"
    Label  @ 12,00 "de" For "TG_DTINI"
    Accept @ 12,04 Width 13 "D"  Picture "#[#];.##;.##[##]" Tag "TG_DTINI" To VSDGDTINI
    Label  @ 12,17 "at‚" For "TG_DTFIM"
    Accept @ 12,22 Width 13 "D"  Picture "#[#];.##;.##[##]" Tag "TG_DTFIM" To VSDGDTFIM


    Pushbutton @ 14,08 width 13 "~O~k"      OK     Default Value "Ok" Tag "YES" To BottonValue
    Pushbutton @ 14,24 width 13 "~C~ancela" CANCEL                    Tag "NO"  To BottonValue

  EndDialog
  If Not RetVal Then QuitLoop EndIf

  Driver=SubStr(Directory(),1,2)

  If VSDGOPCAO[1]=True
     Then If IsEmpty("\\Sistemas\\Estoque\\Itens")
             Then Mensagem("N„o Existem Registros a Processar [Produtos] !")
          EndIf
          Exporta()
          If Not CC>0
             Then MENSAGEM("N„o Ocorreu Exporta‡„o [Produtos] !")
          EndIf
  EndIf


 ; ConfOpcoes("Gravar")
  Mensagem("Exporta‡„o Concluida !")

EndWhile
MOUSE SHOW
ClearAll
Release Vars All
Release Procs All
