;** ET_0359  *******************************************************************
;** Impressao de Etiqueta c/ Pre‡o - Laser           ** TECIDOS TOTAL **       *
;** Etiqueta Pimaco Com 2 Colunas e 5 Linhas de Etiqueta (10cm x 5cm)
;*******************************************************************************
;Autor           : Vise Informatica (VISERP)
;Desenvolvido em : 17/09/2015 por Andrey Fillipe
;Ultima Alteracao: 14/12/2015 por Bruno Carvalho  
;Motivo Alteracao: Ajustado Pais de Origem p/ ser verificado na tabela de itens
;Ultima Alteracao: 09/08/2016 por Bruno Carvalho  
;Motivo Alteracao: Ajsutes p/ exibir o campo CONCENTRADOR -> Iten_Com
;Ultima Alteracao: 09/08/2016 por Bruno Carvalho  
;Motivo Alteracao: Adicionado Codigo de Barra e removido o mostru rio da etiqueta 
;Ultima Alteracao: 02/04/2018 por Bruno Carvalho  
;Motivo Alteracao: Ajustes p/ imprimir corretamente o c¢digo livre COD128 -> Pela Referˆncia

;*******************************************************************************
;* Rotina de Impressao das Etiquetas                                           *
;*******************************************************************************
Proc MONTA_ETIQUETA()

If QUEBRA_PAGINA > 10
   Then QUEBRA_PAGINA = 2
        Print File ARQIMP "\f"
        Print File ARQIMP "\n\n\n"
EndIf

Print File ARQIMP CI_INEG
Print File ARQIMP CI_IEXP
Print File ARQIMP Spaces(01)
For I From 1 to K
  Print File ARQIMP Format("W31",DESCRI_ITEM[I])+Spaces(05)
EndFor
Print File ARQIMP CI_FEXP
Print File ARQIMP CI_FNEG
Print File ARQIMP "\n"
 
Print File ARQIMP CI_INEG
Print File ARQIMP CI_IEXP
Print File ARQIMP Spaces(01)
For I From 1 to K
  Print File ARQIMP "ORDEM..: "+Format("W10",CODIGO_ITEM[I])+Spaces(17)
EndFor
Print File ARQIMP CI_FEXP
Print File ARQIMP CI_FNEG
Print File ARQIMP "\n"


Print File ARQIMP CI_INEG
Print File ARQIMP CI_IEXP
Print File ARQIMP Spaces(01)
For I From 1 to K
  Print File ARQIMP "COMP...: "+Format("W22",DESCRI_COMPL[I])+Spaces(05)
EndFor
Print File ARQIMP CI_FEXP
Print File ARQIMP CI_FNEG
Print File ARQIMP "\n"


Print File ARQIMP CI_INEG
Print File ARQIMP CI_IEXP
Print File ARQIMP Spaces(01)
For I From 1 to K
  Print File ARQIMP Spaces(09)+Format("W22",DESCRI_COMPL2[I])+Spaces(05)
EndFor
Print File ARQIMP CI_FEXP
Print File ARQIMP CI_FNEG
Print File ARQIMP "\n"


Print File ARQIMP CI_INEG
Print File ARQIMP CI_IEXP
Print File ARQIMP Spaces(01)
For I From 1 to K              
  Print File ARQIMP "LARGURA: "+Format("W10",CODIGO_CONCE[I])+Spaces(17)
EndFor
Print File ARQIMP CI_FEXP
Print File ARQIMP CI_FNEG
Print File ARQIMP "\n"
 
Print File ARQIMP CI_INEG
Print File ARQIMP CI_IEXP
Print File ARQIMP Spaces(01)
For I From 1 to K              
  If COD_BARRA[I]="" 
     Then Print File ARQIMP "PE€A...: "+Format("W9",UN_EMBALAGEM[I]) + Spaces(18)
     Else Print File ARQIMP "PE€A...: "+Format("W9",UN_EMBALAGEM[I]) + Format("W23",COD_BARRA[I])+ESPACO_BARRA[I]
  EndIf   
EndFor
Print File ARQIMP CI_FEXP
Print File ARQIMP CI_FNEG
Print File ARQIMP "\n"

Print File ARQIMP CI_INEG
Print File ARQIMP CI_IEXP
Print File ARQIMP Spaces(01)
For I From 1 to K              
  Print File ARQIMP "ORIGEM.: "+PAIS[I]+Spaces(21)
EndFor
Print File ARQIMP CI_FEXP
Print File ARQIMP CI_FNEG
Print File ARQIMP "\n"


Print File ARQIMP CI_INEG
Print File ARQIMP CI_IEXP
Print File ARQIMP Spaces(01)
For I From 1 to K              
  Print File ARQIMP "REF....: "+Format("W19",REF_VALOR[I]) +Spaces(08) ;Retirado o  Mostru rio
EndFor
Print File ARQIMP CI_FEXP
Print File ARQIMP CI_FNEG
Print File ARQIMP "\n\n\n\n\n"

EndProc

;*******************************************************************************
;* Rotina                                                                      *
;*******************************************************************************
Proc SD_Dialog_Most(Disparo,Campo,Evento,Elemento)
Temp=True
MSG_CAMPO=""
TECLA=""
If Disparo="OPEN"  Then AoCriarShowDialog() EndIf
If Disparo="EVENT" And Evento["Type"]="KEY" Then
   Switch
     Case Evento["KeyCode"] = 9: Temp=False
     Case Evento["KeyCode"] = -59: Dialog_F1()
     Case Evento["KeyCode"] =  27:
          Temp=False
          Switch
            Case Campo="YES" : Campo="TG_NMOSTRUARIO"
          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_NMOSTRUARIO" : 
                         VSDGNMOSTRUARIO=ControlValue("TG_NMOSTRUARIO")
                         If IsBlank(VSDGNMOSTRUARIO) Or Len(VSDGNMOSTRUARIO)<>2
                            Then Mensagem("O n£mero do mostru rio deve conter 2 digitos !")
                            Else Campo="YES"
                         EndIf   
                  EndSwitch
          EndIf
          RefreshDialog
   EndSwitch
EndIf
Switch
  Case Campo="":
     MSG_CAMPO=""
Endswitch
Monta_Prompt(MSG_CAMPO,TECLA)
Return Temp

EndProc

;*******************************************************************************
;* ROTINA PRINCIPAL                                                            *
;*******************************************************************************
Proc NUMERO_MOSTRUARIO()

VSDGNMOSTRUARIO = ""

While True
  ShowDialog "Digite o n£mero do mostru rio" Proc "SD_Dialog_Most"
  Trigger "OPEN","ARRIVE"
  Key "F1","ENTER","ESC","TAB",
      -104, -105, -106, -107, -108, -109, -110, -111, -112, -113, -139, -140  
   @ 05,12   Height 07 Width 39

    Label  @ 01,00 "N£mero do mostru rio:"  For "TG_NMOSTRUARIO"
    Accept @ 01,23 Width 05 "A2"  Picture "[#*#]" Tag "TG_NMOSTRUARIO" To VSDGNMOSTRUARIO

    Pushbutton @ 03,13 width 11 "~O~k"      OK     Default Value "Ok" Tag "YES" To BottonValue

  EndDialog
  If Not RetVal Then QuitLoop EndIf

  If IsBlank(VSDGNMOSTRUARIO)
     Then Mensagem("N£mero Inv lido !")
          Loop
  EndIf
  
  If Len(VSDGNMOSTRUARIO)<>2
     Then Mensagem("O n£mero do mostru rio deve conter 2 digitos !")
          Loop
  EndIf
  QuitLoop 
EndWhile

EndProc

;*******************************************************************************
;* Rotina Principal                                                            *
;*******************************************************************************
If Not IsAssigned(SYS_NOMEMP_DEFAULT) Then SYS_NOMEMP_DEFAULT="" EndIf

;NUMERO_MOSTRUARIO()

View "Answer"

ArqImp=PrivDir()+"Et_0359.Txt"
If IsFile(ArqImp)
   Then Deleta_Arquivo(ARQIMP)
EndIf

Array ESPACO_BARRA[2]
Array COD_BARRA[2]
Array DESCRI_ITEM[2]
Array CODIGO_ITEM[2]
Array DESCRI_COMPL[2]
Array DESCRI_COMPL2[2]
Array CODIGO_CONCE[2]
Array UN_EMBALAGEM[2]
Array REF_VALOR[2]
Array PAIS[2]

COD_ITEM = "***"

K=0
CONTADOR = 0
QUEBRA_PAGINA = 0                                         

Print File ARQIMP CI_15CPP
Print File ARQIMP "\n\n\n"

While [Quantidade] > CONTADOR      
      CONTADOR = CONTADOR + 1  
      QUEBRA_PAGINA = QUEBRA_PAGINA + 1

      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                

      K=K+1
      If REG_ITEM["Referencia"] <> ""             
         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[K] = Chr(27)+"(B" + Chr(6+TM)+SEQ_BARRA+REG_ITEM["Referencia"]
                      ESPACO_BARRA[K]=Spaces(6+TM)
                 Else Mensagem(MSG)
                      COD_BARRA[K]=""
                      ESPACO_BARRA[K]=Spaces(6)
              EndIf
         Else COD_BARRA[K] = ""
              ESPACO_BARRA[K]=Spaces(6) 
      EndIf
      DESCRI_ITEM[K]   = [Descricao do Item  ]
      CODIGO_ITEM[K]   = [Codigo do Item     ]
      DESCRI_COMPL[K]  = Substr([Descricao Complementar],1,22)
      DESCRI_COMPL2[K] = Substr([Descricao Complementar],23,22)
      CODIGO_CONCE[K]  = CONCENTRADOR
      UN_EMBALAGEM[K]  = StrVal([Fator Conversao Embalagem])+" "+[Unidade Embalagem]
      PAIS[K]          = Rtrim(AUX_PAIS)
      PRECO_REF        = Tira_CharNum([Preco Unitario])
      If Len(PRECO_REF)<5 And Not IsBlank(PRECO_REF)
         Then REF_VALOR[K] = "30"+AlinhM(PRECO_REF,5)
         Else REF_VALOR[K] = "30"+PRECO_REF
      EndIf   
      
      If K=2                    
         Then MONTA_ETIQUETA()
              K=0
      EndIf
      If [Quantidade] = CONTADOR
         Then CONTADOR = 0
              Skip                      
              If EOT() Then QuitLoop EndIf
      EndIf
EndWhile
                                                                                                           
If K>0
   Then MONTA_ETIQUETA()
EndIf

Print File ARQIMP "\n"

LIMPAGUARDE()

;---- Imprime Arquivo Impressao ------------------------------------------------
ImpriArq(ARQIMP)

Release Procs MONTA_ETIQUETA,NUMERO_MOSTRUARIO,SD_Dialog_Most
