;** ET_Z0403 *******************************************************************
;* Monta Etiqueta p/ Impressora Termica - Zebra - COD128          * Modelo 102 *
;*******************************************************************************
;Autor           : Vise Informatica (VISERP)
;Desenvolvido    : 11/01/2018 por Bruno Carvalho
;Ultima Alteracao: 11/01/2018 por Bruno Carvalho
;Motivo Alteracao: Drive da impressora nÆo foi instalado na empresa, utilizando GENERIC TEXT ONLY
;                  Feito ajustes p/ tal processo, e comentado processo j  testado e funcionando
;                  com o drive correto da impressora 
;Ultima Alteracao: 07/11/2018 por Bruno Carvalho
;Motivo Alteracao: Ajustes padrÆo p/ codigo de barras EAN8, EAN13 ou COD128
;Ultima Alteracao: 07/11/2018 por Bruno Carvalho
;Motivo Alteracao: Adicionado Array CITEM[] p/ um melhor controle de impressÆo ao montar -> "P"+StrVal(CR)

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

Print File Arquivo "I8,A,001\n"
Print File Arquivo "Q184,016\n"
Print File Arquivo "q720\n"
Print File Arquivo "rN\n"
Print File Arquivo "S3\n"
Print File Arquivo "D7\n"
Print File Arquivo "ZT\n"
Print File Arquivo "JF\n"
Print File Arquivo "O\n"
Print File Arquivo "R72,0\n"
Print File Arquivo "f100\n"
Print File Arquivo "N\n"

If Not IsBlank(CITEM[1])
   Then ;---- Processo TESTADO com o Drive da Impressora -----------------------
        ;Print File Arquivo "A10,02,0,3,1,1,N,\""+DITEA[1]+"\"\n"
        ;Print File Arquivo "A10,28,0,3,1,1,N,\""+DITEB[1]+"\"\n"
        ;Print File Arquivo "B70,57,0,1,2,30,50,B,\""+CDBAR[1]+"\"\n" 
        ;Print File Arquivo "A10,148,0,4,1,1,N,\""+"REF "+REF[1]+"\"\n"
        
        ;---- Processo utilizando a impressora GENERIC TEXT ONLY
        Print File Arquivo "A30,02,0,3,1,1,N,\""+DITEA[1]+"\"\n"
        Print File Arquivo "A30,28,0,3,1,1,N,\""+DITEB[1]+"\"\n"
        Switch
          Case Search("EAN13",TPBARRA[1])>0 : Print File Arquivo "B90,57,0,E30,2,30,50,B,\""+CDBAR[1]+"\"\n" 
          Case Search("EAN8",TPBARRA[1])>0  : Print File Arquivo "B90,57,0,E80,2,30,50,B,\""+CDBAR[1]+"\"\n"
          OtherWise                         : Print File Arquivo "B90,57,0,1,2,30,50,B,\""+CDBAR[1]+"\"\n"
        EndSwitch   
        Print File Arquivo "A30,148,0,4,1,1,N,\""+"REF "+REF[1]+"\"\n"
EndIf                                           

If Not IsBlank(CITEM[2])
   Then ;---- Processo TESTADO com o Drive da Impressora -----------------------
        ;Print File Arquivo "A358,02,0,3,1,1,N,\""+DITEA[2]+"\"\n"
        ;Print File Arquivo "A358,28,0,3,1,1,N,\""+DITEB[2]+"\"\n"
        ;Print File Arquivo "B420,57,0,1,2,30,50,B,\""+CDBAR[2]+"\"\n" 
        ;Print File Arquivo "A358,148,0,4,1,1,N,\""+"REF "+REF[2]+"\"\n"
        
        ;---- Processo utilizando a impressora GENERIC TEXT ONLY
        Print File Arquivo "A378,02,0,3,1,1,N,\""+DITEA[2]+"\"\n"
        Print File Arquivo "A378,28,0,3,1,1,N,\""+DITEB[2]+"\"\n"
        Switch
          Case Search("EAN13",TPBARRA[2])>0 : Print File Arquivo "B440,57,0,E30,2,30,50,B,\""+CDBAR[2]+"\"\n" 
          Case Search("EAN8",TPBARRA[2])>0  : Print File Arquivo "B440,57,0,E80,2,30,50,B,\""+CDBAR[2]+"\"\n"
          OtherWise                         : Print File Arquivo "B440,57,0,1,2,30,50,B,\""+CDBAR[2]+"\"\n"
        EndSwitch   
        Print File Arquivo "A378,148,0,4,1,1,N,\""+"REF "+REF[2]+"\"\n"
EndIf       

If CITEM[1]=CITEM[2]
   Then Print File Arquivo "P"+StrVal(CR)+"\n"
        ce=ce+((CR-1)*2)
   Else Print File Arquivo "P1\n"
EndIf
ne=2
                 
EndProc

;*******************************************************************************
;* Monta Comandos p/ Impressora Termica                                        *
;*******************************************************************************
Proc Monta_Comandos()
If IsAssigned(CITEM)
   Then Release Vars CITEM, DITEA, DITEB,CDBAR,REF,TPBARRA
EndIf
Array   CITEM[2]
Array   DITEA[2]
Array   DITEB[2]
Array   CDBAR[2]
Array TPBARRA[2] 
Array     REF[2]

Arquivo=PrivDir()+"ET_Z0403.ejf"
Deleta_Arquivo(Arquivo)

Item = ""
ne   = 2

Coedit "Answer"
Scan
  If Item<>[Codigo do Item]
     Then Item=[Codigo do Item] 
          GetRecord "\\Sistemas\\Estoque\\Itens" Item To REG_ITEM
          If RetVal
             Then DESC_COR   = REG_ITEM["Descricao da Cor_Tecido"]
                  REFERENCIA = REG_ITEM["Referencia"] 
             Else DESC_COR   = ""
                  REFERENCIA = ""
          EndIf
  EnDIf        

  te=[Quantidade]
  If (te-(2-ne))>2
     Then CR=Int((te-(2-ne))/2)
     Else CR=1
  EndIf
  ce=0
  While True
    ce=ce+1
    ne=ne+1
    If ne=3
       Then For i From 1 To 2
              CITEM[i]=""
              DITEA[i]=""
              DITEB[i]=""
              CDBAR[i]=""
            TPBARRA[i]=""  
                REF[i]=""
            EndFor
            ne=1
    EndIf
    CITEM[ne]  = [Codigo do Item] 
    DITEA[ne]  = Format("W23",Rtrim(SubStr([Descricao do Item],01,23)))
    DITEB[ne]  = Format("W14,AL",DESC_COR)+" TAM."+SubStr([Descricao do Item],29,2)
  TPBARRA[ne]  = Upper([Tipo Codigo_Barras])    
    CDBAR[ne]  = [Codigo de Barras]
    REF[ne]    = REFERENCIA
    If ne=2   Then Monta_Etiqueta() EndIf
    If ce>=te Then QuitLoop         EndIf
  EndWhile
EndScan
If ne<2 Then Monta_Etiqueta() EndIf
Do_It!
ClearAll

ImpriArq(Arquivo)

Sleep 700
Deleta_Arquivo(Arquivo)
ClearAll
EndProc

Monta_Comandos()
Release Procs Monta_Etiqueta,Monta_Comandos
