;** Et_Z425 ********************************************************************
;* Monta Etiqueta p/ Impressora Termica - Eltron                  * Modelo 117 *
;*******************************************************************************
;Autor           : Vise Informatica (VISERP)
;Desenvolvido    : 15/10/2018 por Bruno Carvalho
;Ultima Alteracao: 16/10/2018 por Bruno Carvalho
;Motivo Alteracao: Adicionado vari vel de controle de posiÆo da linha inicial "POSI" 
;Ultima Alteracao: 16/10/2018 por Bruno Carvalho
;Motivo Alteracao: Alterado VR_PRECO p/ buscar da prąpria tabela RE_0010 e nÆo diretamente da tabela de preo
;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()

Moveto "Answer"
Print File Arquivo "O\n"
Print File Arquivo "N\n"
Print File Arquivo "q760\n"
Print File Arquivo "Q600,24+\n"
Print File Arquivo "S8\n"
Print File Arquivo "D12\n"
Print File Arquivo "ZB\n"

POSI = 60  

If Not IsBlank(LINHA6[1])
   Then Print File Arquivo "A015,"+StrVal(POSI+000)+",0,4,1,1,N,\""+LINHA1[1]+"\"\n"     ;060    
        Print File Arquivo "A015,"+StrVal(POSI+040)+",0,4,1,1,N,\""+LINHA2[1]+"\"\n"     ;100
        Print File Arquivo "A015,"+StrVal(POSI+070)+",0,4,1,1,N,\""+LINHA3[1]+"\"\n"     ;130
        Print File Arquivo "A015,"+StrVal(POSI+110)+",0,3,1,1,N,\""+LINHA4[1]+"\"\n"     ;170
        Print File Arquivo "A015,"+StrVal(POSI+130)+",0,3,1,1,N,\""+LINHA5[1]+"\"\n"     ;190
        Print File Arquivo "A015,"+StrVal(POSI+150)+",0,3,1,1,N,\""+LINHA7[1]+"\"\n"     ;210

        ;**** 1§ Cądigo de Barras **********************************************
        Switch
          Case Search("EAN13",TPBARRA[1])>0 : Print File Arquivo "B055,"+StrVal(POSI+200)+",0,E30,2,1,50,B,\""+LINHA6[1]+"\"\n" 
          Case Search("EAN8",TPBARRA[1])>0  : Print File Arquivo "B055,"+StrVal(POSI+200)+",0,E80,2,1,50,B,\""+LINHA6[1]+"\"\n" 
          OtherWise                         : Print File Arquivo "B055,"+StrVal(POSI+205)+",0,1,2,1,40,B,\""+LINHA6[1]+"\"\n"   
        EndSwitch  
        
        ;**** 2§ Cądigo de Barras **********************************************
        Switch
          Case Search("EAN13",TPBARRA[1])>0 : Print File Arquivo "B055,"+StrVal(POSI+320)+",0,E30,2,1,50,B,\""+LINHA6[1]+"\"\n"
          Case Search("EAN8",TPBARRA[1])>0  : Print File Arquivo "B055,"+StrVal(POSI+320)+",0,E80,2,1,50,B,\""+LINHA6[1]+"\"\n" 
          OtherWise                         : Print File Arquivo "B055,"+StrVal(POSI+315)+",0,1,2,1,40,B,\""+LINHA6[1]+"\"\n" 
        EndSwitch
        Print File Arquivo "A225,"+StrVal(POSI+390)+",0,2,1,1,N,\""+PRECO[1]+"\"\n"            
        
        ;**** 3§ Cądigo de Barras **********************************************
        Switch
          Case Search("EAN13",TPBARRA[1])>0 : Print File Arquivo "B055,"+StrVal(POSI+430)+",0,E30,2,1,50,B,\""+LINHA6[1]+"\"\n"
          Case Search("EAN8",TPBARRA[1])>0  : Print File Arquivo "B055,"+StrVal(POSI+430)+",0,E80,2,1,50,B,\""+LINHA6[1]+"\"\n"
          OtherWise                         : Print File Arquivo "B055,"+StrVal(POSI+425)+",0,1,2,1,40,B,\""+LINHA6[1]+"\"\n"
        EndSwitch
        Print File Arquivo "A225,"+StrVal(POSI+510)+",0,2,1,1,N,\""+PRECO[1]+"\"\n"                      
EndIf

If Not IsBlank(LINHA6[2])
   Then Print File Arquivo "A405,"+StrVal(POSI+000)+",0,4,1,1,N,\""+LINHA1[2]+"\"\n"    
        Print File Arquivo "A405,"+StrVal(POSI+040)+",0,4,1,1,N,\""+LINHA2[2]+"\"\n"
        Print File Arquivo "A405,"+StrVal(POSI+070)+",0,4,1,1,N,\""+LINHA3[2]+"\"\n"
        Print File Arquivo "A405,"+StrVal(POSI+110)+",0,3,1,1,N,\""+LINHA4[2]+"\"\n"
        Print File Arquivo "A405,"+StrVal(POSI+130)+",0,3,1,1,N,\""+LINHA5[2]+"\"\n"
        Print File Arquivo "A405,"+StrVal(POSI+150)+",0,3,1,1,N,\""+LINHA7[2]+"\"\n"

        ;**** 1§ Cądigo de Barras **********************************************
        Switch
          Case Search("EAN13",TPBARRA[2])>0 : Print File Arquivo "B435,"+StrVal(POSI+200)+",0,E30,2,1,50,B,\""+LINHA6[2]+"\"\n"  
          Case Search("EAN8",TPBARRA[2])>0  : Print File Arquivo "B435,"+StrVal(POSI+200)+",0,E80,2,1,50,B,\""+LINHA6[2]+"\"\n" 
          OtherWise                         : Print File Arquivo "B455,"+StrVal(POSI+205)+",0,1,2,1,40,B,\""+LINHA6[2]+"\"\n"
        EndSwitch  
        
        ;**** 2§ Cądigo de Barras **********************************************
        Switch
          Case Search("EAN13",TPBARRA[2])>0 : Print File Arquivo "B435,"+StrVal(POSI+320)+",0,E30,2,1,50,B,\""+LINHA6[2]+"\"\n" 
          Case Search("EAN8",TPBARRA[2])>0  : Print File Arquivo "B435,"+StrVal(POSI+320)+",0,E80,2,1,50,B,\""+LINHA6[2]+"\"\n"
          OtherWise                         : Print File Arquivo "B455,"+StrVal(POSI+315)+",0,1,2,1,40,B,\""+LINHA6[2]+"\"\n" 
        EndSwitch  
        Print File Arquivo "A615,"+StrVal(POSI+390)+",0,2,1,1,N,\""+PRECO[2]+"\"\n"            
        
        ;**** 3§ Cądigo de Barras **********************************************
        Switch
          Case Search("EAN13",TPBARRA[2])>0 : Print File Arquivo "B435,"+StrVal(POSI+430)+",0,E30,2,1,50,B,\""+LINHA6[2]+"\"\n" 
          Case Search("EAN8",TPBARRA[2])>0  : Print File Arquivo "B435,"+StrVal(POSI+430)+",0,E80,2,1,50,B,\""+LINHA6[2]+"\"\n" 
          OtherWise                         : Print File Arquivo "B455,"+StrVal(POSI+425)+",0,1,2,1,40,B,\""+LINHA6[2]+"\"\n"
        EndSwitch  
        Print File Arquivo "A615,"+StrVal(POSI+510)+",0,2,1,1,N,\""+PRECO[2]+"\"\n"         
EndIf
 
If LINHA6[1]=LINHA6[2]
   Then Print File Arquivo "P"+StrVal(CR)+"\n"
        ce=ce+((CR-1)*3)
   Else Print File Arquivo "P1\n"
EndIf
ne=2
EndProc

;*******************************************************************************
;* Monta Comandos p/ Impressora Termica                                        *
;*******************************************************************************
Proc Monta_Comandos()
 
If IsAssigned(LINHA1)
   Then Release Vars LINHA1,LINHA2,LINHA3,LINHA4,LINHA5,LINHA6,LINHA7,TPBARRA,PRECO,REG_ITEM,REG_PRECO,TPBARRA
EndIf

Array  LINHA1[2]
Array  LINHA2[2]
Array  LINHA3[2]
Array  LINHA4[2]
Array  LINHA5[2]
Array  LINHA6[2]
Array  LINHA7[2]
Array TPBARRA[2]
Array   PRECO[2]

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

ne=2
Coedit "Answer"
Scan
  REFERENCIA   = ""
  VR_PRECO     = ""
  DEPARTAMENTO = ""
  DESC_COR     = ""
  TAMANHO      = ""
  COLECAO      = ""  
  GetRecord "\\Sistemas\\Estoque\\Itens" [Codigo do Item] To REG_ITEM 
  If RetVal
     Then DEPARTAMENTO = REG_ITEM["Descricao do Departamento"]
          DESC_COR     = REG_ITEM["Descricao da Cor_Tecido"]
          TAMANHO      = StrVal(REG_ITEM["DTamanho"])
          REFERENCIA   = REG_ITEM["Referencia"]
          COLECAO      = REG_ITEM["Descricao da Marca"]
  EndIf
  
  If TAMANHO<>""
     Then For ii From 1 To Len(TAMANHO)
            If SubStr(TAMANHO,ii,1)="0"
               Then If ii>1
                       Then TAMANHO = " "+SubStr(TAMANHO,ii+1,Len(TAMANHO))
                       Else TAMANHO = SubStr(TAMANHO,ii-1,Len(TAMANHO))+" "+SubStr(TAMANHO,ii+1,Len(TAMANHO))
                    EndIf   
               Else QuitLoop
            EndIF    
          EndFor
          TAMANHO = Rtrim(Ltrim(TAMANHO)) 
  EndIf   

  te      = [Quantidade]
  CodItem = PegaCodigoRaiz([Codigo do Item])
  
  GetRecord "\\Sistemas\\Vendas\\Tbprite" VSDGTABELA,CodItem To REG_PRECO 
  If RetVal 
     Then VR_PRECO = "R$ "+Strval(REG_PRECO["Preco Unitario"])
  EndIf
  
  ;VR_PRECO = [Preco Unitario]
  
  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
               LINHA1[i]=""
               LINHA2[i]=""
               LINHA3[i]=""
               LINHA4[i]=""
               LINHA5[i]=""
               LINHA6[i]=""
               LINHA7[i]=""
              TPBARRA[i]=""
                PRECO[i]=""
            EndFor
            ne=1
    EndIf
    LINHA1[ne] = Format("W20,AC",Rtrim(Ltrim(DEPARTAMENTO))) 
    LINHA2[ne] = Format("W20",Ltrim(SubStr([Descricao do Item],01,20)))
    LINHA3[ne] = Format("W20",Ltrim(SubStr([Descricao do Item],21,20)))
    LINHA4[ne] = Format("W15","COR: "+DESC_COR)+" "+Format("W8","TAM: "+TAMANHO)
    LINHA5[ne] = Format("W20","REF: "+REFERENCIA)
    LINHA6[ne] = [Codigo de Barras]
    LINHA7[ne] = Format("W20","COL: "+COLECAO) 
   TPBARRA[ne] = Upper([Tipo Codigo_Barras])
     PRECO[ne] = VR_PRECO
    
    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
