;** Et_Z001 ********************************************************************
;* Monta Etiqueta p/ Impressora Termica - Zebra - Mala Direta                  *
;*******************************************************************************
;Autor           : Vise Informatica (VISERP)
;Desenvolvido    : 17/01/2012 por Karina Andrade
;Ultima Alteracao: 20/01/2012 por Karina Andrade
;Motivo Alteracao: Ajustes impressÆo
;Ultima Alteracao: 15/06/2012 por Karina Andrade
;Motivo Alteracao: Ajustes impressÆo 
;Ultima Alteracao: 27/03/2014 por Bruno Carvalho
;Motivo Alteracao: Ajustes de Alinhamento na impressÆo das linhas

;*******************************************************************************
Proc Monta_Etiqueta()
Moveto "Answer"

Print File Arquivo "O\n"
Print File Arquivo "N\n"
Print File Arquivo "q732\n"
Print File Arquivo "Q440,16+\n"
Print File Arquivo "S2\n"
Print File Arquivo "D8\n"
Print File Arquivo "ZT\n"

;**** Em 27.03.2014 j  nÆo utilizavam estas configura‡äes ****
;Print File Arquivo "A010,40,0,3,2,2,N,\""+"DESTINATARIO:"+"\"\n"
;Print File Arquivo "A010,40,0,3,2,2,N,\""+NOME1+"\"\n"
;Print File Arquivo "A010,90,0,3,2,2,N,\""+NOME2+"\"\n"
;Print File Arquivo "A600,90,0,,3,2,N,\""+COD+"\"\n"
;Print File Arquivo "A010,140,0,3,2,2,N,\""+"AT.:"+CONT+"\"\n"

Print File Arquivo "A010,40,0,3,2,2,N,\""+NOME1+"\"\n"
Print File Arquivo "A010,90,0,3,2,2,N,\""+NOME2+"\"\n"
Print File Arquivo "A010,140,0,3,2,2,N,\""+"AT.:"+CONT+"\"\n"

Print File Arquivo "A010,190,0,2,2,2,N,\""+ENDE1+"\"\n"
If ENDE2<>""
  Then Print File Arquivo "A010,240,0,2,2,2,N,\""+ENDE2+"\"\n"
       Print File Arquivo "A010,290,0,2,2,2,N,\""+CEP+"  "+BAI+"\"\n"
       Print File Arquivo "A010,340,0,2,2,2,N,\""+CID+"-"+UF+"\"\n"

  Else Print File Arquivo "A010,240,0,2,2,2,N,\""+CEP+"  "+BAI+"\"\n"
       Print File Arquivo "A010,290,0,2,2,2,N,\""+CID+"-"+UF+"\"\n"
EndIf
Print File Arquivo "P1\n"

EndProc

;*******************************************************************************
;* Alinha Linha a ser Impressa de acordo coma posi‡Æo informada                *
;*******************************************************************************
Proc Alinha(NOME,POSICAO)
Private NOME,POSICAO,AUX,PosI

DynArray NOMES[]

If Len(NOME) <= POSICAO
   Then NOMES[1] = NOME
        Return
EndIf

PosI = Search(" ",NOME) 
While True
  If PosI=0 Then QuitLoop EndIf
  AUX  = SubStr(NOME,1,PosI-1)
  NOME = SubStr(NOME,PosI+1,Len(NOME)) 
  If Len(AUX) > POSICAO 
     Then NOME     = Substr(AUX,1,26)
          NOMES[2] = Substr(AUX,27,26)
          QuitLoop 
  EndIf
  
  If Len(AUX) < POSICAO
     Then If IsAssigned(NOMES[1])
             Then If Len(NOMES[1]+AUX)<=26
                     Then NOMES[1] = NOMES[1]+AUX+" " 
                     Else If IsAssigned(NOMES[2])
                             Then NOMES[2] = NOMES[2]+AUX+" "
                             Else NOMES[2] = AUX+" "
                          EndIf    
                  EndIf
             Else NOMES[1] = AUX+" " 
          EndIf        
  EndIf
  PosI = Search(" ",NOME) 
EndWhile

If Len(NOME)>0 And Len(NOME)<=POSICAO
   Then If IsAssigned(NOMES[1])
           Then If Len(NOMES[1]+NOME)<=26 
                   Then NOMES[1] = NOMES[1]+NOME
                        NOME = ""
                EndIf    
           Else NOMES[1] = NOME
                NOME = ""      
        EndIf        
        If NOME <> ""
           Then If IsAssigned(NOMES[2])
                   Then If Len(NOMES[2]+NOME)<=26 
                           Then NOMES[2] = NOMES[2]+NOME
                                NOME = ""
                        EndIf
                   Else NOMES[2] = NOME
                        NOME = ""
                EndIf
        EndIf           
   
EndIf   

EndProc ;Alinha()

;*******************************************************************************
;* Monta Comandos p/ Impressora Termica                                        *
;*******************************************************************************
Proc Monta_Comandos()
If IsAssigned(DITEM)
   Then Release Vars DITEM, CITEM, PRECO
EndIf

Arquivo="ETIQ.ejf"
Deleta_Arquivo(Arquivo)

Coedit "Answer"
Scan
  qtde=[Quantidade    ]
  NOME=[Razao Social  ]
  COD =[Codigo        ]
  CONT=[Contato       ]
  ENDE=[Endereco      ]
  BAI =[Bairro        ]
  CEP =[CEP           ]
  CID =[Cidade        ]
  UF  =[UF            ]

  en=""
  For wi From 1 To Len(ENDE)
    If Substr(ENDE,wi,1)="\""
      Then If wi=26
            Then en=en+" "
           EndIf  
           en=en+"\\"
    EndIf
    en=en+Substr(ENDE,wi,1)  
  EndFor   
     
  Alinha(NOME,26)
  If IsAssigned(NOMES[1])
     Then NOME1 = NOMES[1]
     Else NOME1 = "" 
  EndIf
  If IsAssigned(NOMES[2])
     Then NOME2 = NOMES[2]
     Else NOME2 = "" 
  EndIf
      
  Alinha(en,26)    
  If IsAssigned(NOMES[1])
     Then ENDE1 = NOMES[1]
     Else ENDE1 = "" 
  EndIf
  
  If IsAssigned(NOMES[2])
     Then ENDE2 = NOMES[2]
     Else ENDE2 = "" 
  EndIf

  ce=0
  While True
    ce=ce+1
    Monta_Etiqueta()
    If ce>=qtde Then QuitLoop         EndIf
  EndWhile
EndScan
Do_It!
ClearAll

ImpriArq(Arquivo)

Sleep 700
Deleta_Arquivo(Arquivo)
ClearAll
EndProc

Monta_Comandos()
Release Procs Monta_Etiqueta,Monta_Comandos
