;** ET_Z318E *******************************************************************
;* Etiqueta para Impressao dos Itens de Expedi‡Æo - MODO 2        * Modelo 107 *
;*******************************************************************************
;Autor           : Vise Informatica (VISERP)
;Desenvolvido    : 05/07/2018 por Bruno Carvalho
;Ultima Alteracao: 07/11/2018 por Bruno Carvalho
;Motivo Alteracao: Ajustes padrÆo p/ codigo de barras EAN8, EAN13 ou COD128 

;*******************************************************************************
;Monta Etiqueta                                                                *
;*******************************************************************************
Proc Monta_Etiqueta()                             

;Bobina:  4 x 10,5

Print File Arquivo "O\n"
Print File Arquivo "N\n"
Print File Arquivo "q840\n"         
Print File Arquivo "Q320,24\n"  
Print File Arquivo "S2\n"
Print File Arquivo "D15\n" 
Print File Arquivo "ZB\n"            
                          
Print File Arquivo "A040,005,0,2,2,2,N,\""+DESCRI_ITEM+"\"\n"

Print File Arquivo "A040,050,0,3,2,1,N,\""+"ORDEM..: "+"\"\n"
Print File Arquivo "A260,050,0,2,2,1,N,\""+Format("W10",CODIGO_ITEM)+"\"\n"

Print File Arquivo "A040,085,0,3,2,1,N,\""+"COMP...: "+"\"\n"
Print File Arquivo "A260,085,0,2,2,1,N,\""+Format("W22",Ltrim(DESCRI_COMPL))+"\"\n"
Print File Arquivo "A260,115,0,2,2,1,N,\""+Format("W22",Ltrim(DESCRI_COMPL2))+"\"\n"

Print File Arquivo "A040,150,0,3,2,1,N,\""+"LARGURA: "+"\"\n"
Print File Arquivo "A260,150,0,2,2,1,N,\""+Format("W10",CODIGO_CONCE)+"\"\n"

Print File Arquivo "A040,185,0,3,2,1,N,\""+"PE€A...: "+"\"\n"
Print File Arquivo "A260,185,0,2,2,1,N,\""+Format("W9",UN_EMBALAGEM)+"\"\n"

Print File Arquivo "A040,220,0,3,2,1,N,\""+"ORIGEM.: "+"\"\n"
Print File Arquivo "A260,220,0,2,2,1,N,\""+PAIS+"\"\n"

Print File Arquivo "A040,255,0,3,2,1,N,\""+"REF....: "+"\"\n"
Print File Arquivo "A260,255,0,2,2,1,N,\""+Format("W19",REF_VALOR)+"\"\n"

Switch
  Case Search("EAN13",TPBARRA)>0 : Print File Arquivo "B480,150,0,E30,3,30,80,B,\""+COD_BARRA+"\"\n" 
  Case Search("EAN8",TPBARRA)>0  : Print File Arquivo "B480,150,0,E80,3,30,80,B,\""+COD_BARRA+"\"\n" 
  OtherWise                      : Print File Arquivo "B480,150,0,1,3,30,80,B,\""+COD_BARRA+"\"\n"
EndSwitch  

Print File Arquivo "P1\n"

EndProc

;*******************************************************************************
;* Monta Comandos p/ Impressora Termica                                        *
;*******************************************************************************
Proc Monta_Comandos()
If IsAssigned(DITEA) Or IsAssigned(DITEA1) 
   Then Release Vars DITEA, DITEB, CITEM, NEMPR, DITEA1, DITEA2, TPBARRA
EndIf

Arquivo=PrivDir()+"ET_Z318E.Ext"
Deleta_Arquivo(Arquivo)

COD_ITEM = ""

Coedit "Answer"
Scan
  te=[Quantidade]

  If COD_ITEM<>[Codigo do Item]
     Then COD_ITEM = [Codigo do Item]
          
          AUX_PAIS = ""
          Getrecord "\\Sistemas\\Estoque\\Itens" COD_ITEM To REG_ITEM
          If RetVal
             Then AUX_PAIS = REG_ITEM["Pais"]
          EndIf
          If AUX_PAIS = "" Then AUX_PAIS = "BRASIL" EndIf
          
          GetRecord "\\Sistemas\\Estoque\\Iten_Com" COD_ITEM To REG_ITEMCOMP     
          If RetVal
             Then CONCENTRADOR = REG_ITEMCOMP["Codigo Concentrador"]
             Else CONCENTRADOR = ""
          EndIf
  EndIf
  
  GetRecord "\\Sistemas\\Estoque\\Iten_tec" COD_ITEM To REG_TECIDO
  If RetVal
     Then LARGURA = REG_TECIDO["Largura"]
     Else LARGURA = ""          
  EndIf   
  
  If REG_ITEM["Referencia"] <> "" And SYS_CODIGO_CLIENTE = "0318"             
     Then ;1 Caracteres -> Chr(7)
          ;2 Caracteres -> Chr(8)
          ;3 Caracteres -> chr(9)
          ;4 Caracteres -> chr(????????) *chr(10) ->Imprime Incorreto
          ;5 Caracteres -> chr(11)
          ;6 Caracteres -> chr(12)
          ;7 Caracteres -> chr(13)
          ;8 Caracteres -> chr(14)
          ;9 Caracteres -> chr(15)
          
          SEQ_BARRA = "0620251"
          MSG       = ""
          ;TODO TM ser  somado por 6 -> Exemplo: Chr(6+5) - chr(11) o que representa 5 caracteres
          TM        = Len(REG_ITEM["Referencia"])
          Switch
            Case TM=4  : ;N o tem chr() para 4 caratres, se usado o chr(10) ‚ impresso algo divergente
                         ;logo, ‚ usado o chr(11) correspondenten … 5 caracres
                         TM = 5
            Case TM>12 : ;H  um limite de 12 caracteres para este c¢digo de barras
                         MSG = "C¢digo de barras "+REG_ITEM["Referencia"]+" ‚ inv lido!//Mais de 12 caracteres!"  
            Case TM=0  : MSG = "C¢digo de barras "+REG_ITEM["Referencia"]+" ‚ inv lido!"
          EndSwitch
          
          If MSG=""
             Then COD_BARRA = REG_ITEM["Referencia"]
             Else Mensagem(MSG)
                  COD_BARRA=""
          EndIf
     Else COD_BARRA = "" 
  EndIf
  
  If SYS_CODIGO_CLIENTE <> "0318"
     Then TPBARRA = Upper([Tipo Codigo_Barras])
          If Search("EAN13",TPBARRA)>0 Or Search("EAN8",TPBARRA)>0
             Then COD_BARRA = [Codigo de Barras]
          EndIf
     Else TPBARRA = ""     
  EndIf
  
  DESCRI_ITEM   = [Descricao do Item  ]
  CODIGO_ITEM   = [Codigo do Item     ]
  DESCRI_COMPL  = Substr([Descricao Complementar],1,22)
  DESCRI_COMPL2 = Substr([Descricao Complementar],23,22)
  If SYS_CODIGO_CLIENTE="0318"
     Then CODIGO_CONCE  = CONCENTRADOR 
     Else CODIGO_CONCE  = LARGURA
  EndIf
  UN_EMBALAGEM  = StrVal([Fator Conversao Embalagem])+" "+[Unidade Embalagem]
  PAIS          = Rtrim(AUX_PAIS)
  PRECO_REF        = Tira_CharNum([Preco Unitario])
  If Len(PRECO_REF)<5 And Not IsBlank(PRECO_REF)
     Then REF_VALOR = "30"+AlinhM(PRECO_REF,5)
     Else REF_VALOR = "30"+PRECO_REF
  EndIf  
  
  While True    
    Monta_Etiqueta()
    te = te - 1
    If te <=0 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
