;** Itens **********************************************************************
;*  Manutencao Cadastro de Item de Estoque                                    *
;*******************************************************************************
;Autor           : Vise Informatica (VISERP)
;Desenvolvido    : 05/12/1995 por Anivel Augusto Rodrigues
;Ultima Alteracao: 05/06/2006 por Davi Pereira Carrano
;Motivo Alteracao: Tipo de Grade...
;Ultima Alteracao: 24/08/2006 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes Insert..
;Ultima Alteracao: 28/11/2007 por Anivel Augusto Rodrigues
;Motivo Alteracao: Inclusao Iten_Cor - Criar Grade
;Ultima Alteracao: 10/03/2008 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes Venus Criar Grade/Navegacao
;Ultima Alteracao: 26/03/2008 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes
;Ultima Alteracao: 08/04/2008 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes Cria_Grade Codigo de Barras
;Ultima Alteracao: 21/05/2008 por Anivel Augusto Rodrigues
;Motivo Alteracao: Inclusao Contrala_Edicao()
;Ultima Alteracao: 31/07/2008 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes Clientes 0003,0200
;Ultima Alteracao: 06/08/2008 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes Criar Grades/Cores
;Ultima Alteracao: 08/10/2008 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes Codigo de Barras UZZE BUZZE
;Ultima Alteracao: 13/02/2009 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes Codigo de Barras Lupus
;Ultima Alteracao: 18/02/2009 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes Criar_Grade sem Grade so Cor
;Ultima Alteracao: 25/03/2009 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes Editar()
;Ultima Alteracao: 30/03/2009 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes Iten_Cor
;Ultima Alteracao: 13/05/2009 por Anivel Augusto Rodrigues
;Motivo Alteracao: Inclusao Campos Tipo_Codificacao/Tamanho/Tipo Codigo_Barras
;Ultima Alteracao: 03/06/2009 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes DTamanho
;Ultima Alteracao: 31/10/2009 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes Campos MVAÝs + Codigo MVA                                             
;Ultima Alteracao: 18/11/2009 por Bruno Carvalho
;Motivo Alteracao: Adicionado Campos Codigo e Descricao da Simbologia  
;Ultima Alteracao: 25/03/2009 por Cleber Alves
;Motivo Alteracao: Adicionado Campos C.Servico
;Ultima Alteracao: 08/04/2010 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes Cria Grade/Cor TpCdBarr/CdBarr regerar                        
;Ultima Alteracao: 01/07/2010 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes CdBarr J_EAN13 = 78+Codigo do Item
;Ultima Alteracao: 17/07/2010 por Anivel Augusto Rodrigues
;Motivo Alteracao: Inclusao novos Campos e Ajustes Layout
;Ultima Alteracao: 10/09/2010 por Anivel Augusto Rodrigues
;Motivo Alteracao: Inclusao novo Campo CSOSN e Ajustes Layout
;Ultima Alteracao: 15/09/2010 por Karina Andrade
;Motivo Alteracao: Ajustes SYS_CLIENTE_CONFEC
;Ultima Alteracao: 14/10/2010 por Bruno Carvalho
;Motivo Alteracao: Ajustes Edita_Memo
;Ultima Alteracao: 11/11/2010 por Bruno Carvalho
;Motivo Alteracao: Adicionado Peso Variavel
;Ultima Alteracao: 21/12/2010 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes tributacao ISSQN                    
;Ultima Alteracao: 22/12/2010 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes Grade Isabela Garcia
;Ultima Alteracao: 03/01/2011 por Bruno Carvalho
;Motivo Alteracao: Ajustes Novo Layout de Teclas   
;Ultima Alteracao: 14/03/2011 por Bruno Carvalho
;Motivo Alteracao: Ajustes Tributacao de ISSQN  
;Ultima Alteracao: 29/03/2011 por Bruno Carvalho
;Motivo Alteracao: Add Op‡Æo para Bloqueio de Itens no Pedido ** 0222 **

;*******************************************************************************
;* Rotina para Localizar Registro                                              *
;*******************************************************************************
Proc CHAVE()
Private CodLivre,Opcaoc

INSERT_ESPECIAL=False
While True
  Moveto [Codigo do Item]
  End
  SEQ=[Codigo do Item]
  If OP_FORM="4"
     Then Down
     Else PgDn
  Endif

  SetaCorRegistro("Editar")
  While True

  TECLA=""
  AguardaTeclasPadrao()                            

      If Retval=-33
         Then
           ShowPopup " Fun‡”es " CENTERED
            "Editar Classi~f~ica‡„o"       : " Altera‡„o Descri‡„o\\Unidades\\Tipo Item\\Familia\\Grupo\\Cor/Tecido" : "CLASSIFICACAO",
            "Editar C.~B~arras/Referlncia" : " Altera‡„o\\Inclus„o de C¢digo de Barras"                              : "CDBARRAS",
            "Editar Locali~z~a‡Æo"         : " Altera‡„o\\Inclus„o de Localiza‡Æo "                                  : "LOCAL",
            "C¢digo de ~L~ivre"            : " Novo C¢digo livre"                                                    : "CDLIVRE",
            "~T~roca de Dados "            : " Troca de Dados"                                                       : "TROCA",
            "~I~nsere Especial"            : " Insere Especial"                                                      : "IESPECIAL",
            "~C~ancelar"                   : " Cancelar a Opera‡„o"                                                  : "CANCELAR"
           EndMenu
            To MenuVar
           echo off

           If MenuVar="CANCELAR" or MenuVar="Esc"
               Then Del
                    QuitLoop
           EndIf

           If MenuVar="CLASSIFICACAO" OR MenuVar="CDBARRAS" OR MenuVar ="LOCAL"
             Then Del
                  Editar(MenuVar)
                  CHAVE=5
                  Return
           EndIf
           If MenuVar="CDLIVRE"
              Then Retval="F4"
           EndIf
           If MenuVar="IESPECIAL"
              Then Del
                   INICIO_INSERT  =True
                   INSERT_ESPECIAL=True
                   CHAVE=4
                   Return
           EndIf
           If MenuVar="TROCA"
             Then If Checa_Supervisor()
                     Then Del
                          TrocaDados()
                          CHAVE=5
                          Return
                  EndIf
           EndIf
      EndIf

      If Retval="F4"
         Then Del
              Home
              CodLivre=NumVal([Codigo do Item])
              While True
                 If CodLivre=NumVal([Codigo do Item])
                    Then CodLivre=NumVal([Codigo do Item])+1
                         Skip
                    Else echo normal
                         ins
                         [Codigo do Item]=Alinhm(StrVal(CodLivre),10)

                         ShowPopup " C¢digo Livre " CENTERED
                          "~A~ceitar"  : " Aceitar o c¢digo: "+[Codigo do Item] : "ACEITAR",
                          "~P~r¢ximo"  : " Pr¢ximo c¢digo dispon¡vel"           : "PROXIMO",
                          "~C~ancelar" : " Cancelar a Opera‡„o      "           : "CANCELAR"
                         EndMenu
                          To MenuVar

                         echo off
                         If MenuVar="CANCELAR" or MenuVar="Esc"
                             Then Del
                                  RetVal="F4"
                                  QuitLoop
                         EndIf

                         If MenuVar="ACEITAR"
                            Then RetVal="ENTER"
                                 QuitLoop
                            Else Del
                                 CodLivre=CodLivre+1
                         EndIf
                 EndIf
                 If EOT()
                    Then Mensagem("Fim dos codigos livres!!")
                         RetVal="F4"
                         QuitLoop
                 EndIf
              EndWhile
              If RetVal="F4"
                 Then QuitLoop
              EndIf

      EndIf

   Switch
      Case RetVal=-94 : MsgTeclasPadrao()
      Case RetVal="F3":
           If OP_FORM="4"
              Then OP_FORM="F"
              Else OP_FORM="4"
           Endif
           Del
           CHAVE=5
           Return
      Case RetVal="F7" Or RetVal="UP" Or RetVal="PGUP" Or RetVal="HOME":
           While True
            If OP_FORM="4"
               Then PAGINA("Itens","MR")
               Else PAGINA("Itens","MT")
            EndIf
            If EDITAR="S"
               Then If OP_FORM="4"
                       Then PickForm "F"
                    Endif
                    CODIGO=[Codigo do Item]
                    CHAVE=0
                    Controla_EdicaoC()
               Else If EXCLUIR="S"
                       Then EXCLUSAO(True)
                       Else QuitLoop     
                    EndIf
            EndIf
            SetaPosForm()
           EndWhile
           QuitLoop
      Case Retval="ESC":
           CHAVE=9
           If RecordStatus("New")
              Then Del
           Endif
           Return

           If OP_FORM="4"
              Then PAGINA("Itens","MR")
              Else PAGINA("Itens","MT")
           Endif
      Case Retval="ENTER":
            If IsBlank([])
               Then If IsBlank(SEQ)
                       Then SEQ="1"
                       Else SEQ=StrVal(NumVal(SEQ)+1)
                    EndIf
                    []=SEQ
            EndIf
            []=ALINH()
            CODIGO=[]
            Del
            If OP_FORM="4"
               Then PickForm "F"
            Endif
            Locate CODIGO
            If Retval
               Then CHAVE=0
               Else CHAVE=1
                    End
                    PgDn
                    [Codigo do Item]=CODIGO
            EndIf
            If IsLockRecord()
               Then If OP_FORM="4"
                       Then PickForm "4"
                    Endif
                    QuitLoop
            EndIf
            Return
      EndSwitch
  EndWhile
EndWhile
EndProc     ; (Chave)

;*******************************************************************************
;* Rotina para Localizar Registro 2                                            *
;*******************************************************************************
Proc CHAVE2()
INSERT_ESPECIAL=True

If INICIO_INSERT
   Then INICIO_INSERT=False
   Else If Item_Localizado
           Then Moveto [Codigo do Item]
                Locate CODIGOINSERT
                If RetVal
                   Then Down
                EndIf
        EndIf

        Moveto Field Campo_Cursor
EndIf
While True
   ImageRights ReadOnly

   Prompt " F3=Retornar  Ins=Incluir  Enter=Editar  Del=Excluir  "

   Wait Table
     Until "F3","F1","F2","F9","F35","ENTER","DEL","Down","Up","FIELDVIEW","ZOOM","ZOOMNEXT","INS"

     If RetVal = "F1"
        Then Loop
     EndIf

     If RetVal = "ZOOM"
        Then PESQUISA()
             Loop
     EndIf
     If RetVal = "ZOOMNEXT"
        Then PESQUISACON()
             Loop
     EndIf
     If Retval = "F3"
        Then INSERT_ESPECIAL=False
             CHAVE=4
             QuitLoop

     EndIf
     If Retval = "Down"
        Then If AtLast()
                Then ImageRights
             EndIf
             Down
             ImageRights ReadOnly
     EndIf
     If Retval = "Up"
        Then Up
     EndIf
     If Retval = "F9" Or Retval = "F2" Or Retval = "ENTER"
        Then If Not IsLockRecord()
                Then ImageRights
                     Campo_Cursor=Field()
                     Item_Localizado=False
                     If OP_FORM="4"
                        Then PickForm "F"
                     Endif
                     CHAVE=0
                     CODIGO=[Codigo do Item]
                     Return
             EndIf
     EndIf

     If Retval = "INS"
        Then Campo_Cursor=Field()
             Up
             CopytoDynarray Registro
             ImageRights
             Down
             Ins

             Moveto [Codigo do Item]

             Prompt " Esc=Cancelar "

             Wait Field
                  Until "ESC","ENTER"

             Switch
             Case Retval="ESC":
                  Item_Localizado=False
                  Del
             Case Retval="ENTER":
                  If IsBlank([])
                     Then If IsBlank(SEQ)
                             Then SEQ="1"
                             Else SEQ=StrVal(NumVal(SEQ)+1)
                          EndIf
                  EndIf
                  []=ALINH()
                  CODIGO=[]
                  Item_Localizado=True
                  Del
                  If OP_FORM="4"
                     Then PickForm "F"
                  Endif
                  Locate CODIGO
                  If Retval
                     Then CHAVE=0
                     Else CHAVE=1
                          End
                          PgDn
                          [Codigo do Item]=CODIGO
                  EndIf
                  If IsLockRecord()
                     Then If OP_FORM="4"
                             Then PickForm "4"
                          Endif
                          QuitLoop
                  EndIf
                  CODIGOINSERT=CODIGO
                  Return
             EndSwitch
     EndIf
     If Retval = "DEL"
        Then If Not IsLockRecord()
                Then If QuerExcluir("")
                        Then ImageRights
                             EXCLUSAO(True)
                     EndIf
             EndIf
     EndIf
EndWhile
ImageRights
EndProc

;*******************************************************************************
;* Rotina para Digitacao das Informacoes                                       *
;*******************************************************************************
Proc DIGITA()

NBM =[NBM]
Moveto [Tipo do Item]
While True
  TECLA= " Esc=Retornar  Alt+F=Fun‡”es  "

  If Field()="Tipo do Item"           Or
     Field()="Codigo da Familia"      Or
     Field()="Codigo do Grupo"        Or
     Field()="Codigo da Simbologia"   Or
     Field()="Codigo da Marca"        Or
     Field()="Codigo do Departamento" Or
     Field()="Codigo da Cor_Tecido"   Or
     Field()="Tipo Tributacao"        Or
     Field()="Unidade Fiscal"         Or
     Field()="Unidade Interna"        Or
     Field()="Unidade Entrada"        Or
     Field()="Unidade Embalagem"      Or
     Field()="Codigo da Grade"        Or
     Field()="NCM"                    Or
     Field()="Tipo Codigo_Barras"     Or
     Field()="Pais"                   Or
     Field()="Codigo MVA"             Or
     Field()="Codigo_Servico"         Or
     Field()="IPI_CST"                Or
     Field()="PIS_CST"                Or
     Field()="COFINS_CST"             Or
     Field()="CSOSN"
     Then TECLA=TECLA+"F1=Tabelas  "
     Else TECLA=TECLA+"            "
  EndIf

  If CHAVE=0
     Then TECLA=TECLA+"Del=Excluir  "
     Else TECLA=TECLA+"             "
  EndIf

  If Field()="Codigo de Barras" And
     ([Tipo Codigo_Barras]="A-EAN13" or
      [Tipo Codigo_Barras]="B-EAN8")
     Then TECLA=TECLA+"INS=Pr¢x.CB  "
     Else TECLA=TECLA+"             "
  EndIf

  TECLA=TECLA+"PgDn=Finalizar  "

  MSGCAMPO=Field()

  If Field()="Inativo"
     Then STATUS_INATIVO=[Inativo]
  EndIf

  Switch
    Case Field()="Edita Descricao do Item"   : MSGCAMPO="Editar descri‡„o do item no pedido/NF? (S/N)"
    Case Field()="NBM"                       : MSGCAMPO="Classifica‡„o fiscal (Normas brasileiras de mercadorias)"
    Case Field()="NCM"                       : MSGCAMPO="Codifica‡„o da nomenclatura comum do mercosul"
    Case Field()="Codigo_Servico"            : MSGCAMPO="Informe c¢digo conforme lista LC 116/03"
    Case Field()="Peso Variavel"             : MSGCAMPO="Produto Vari vel? Sim ou N„o"
    Case Field()="Producao Esgotada"         : MSGCAMPO="Produ‡„o Esgotada? Sim ou N„o (Travamento de novos pedidos)"
    Case Field()="Indice Preco de Venda"     : MSGCAMPO="Indice sobre custo de entrada para c lculo do pre‡o de venda"
    Case Field()="Unidade Fiscal"            : MSGCAMPO="Unidade fiscal/venda"
    Case Field()="Unidade Embalagem"         : MSGCAMPO="Unidade da embalagem/estocagem"
    Case Field()="Unidade Interna"           : MSGCAMPO="Unidade p/ controle de estoque"
    Case Field()="Unidade Entrada"           : MSGCAMPO="Unidade padr„o para compra"
    Case Field()="Fator de Conversao"        : MSGCAMPO="Fator de convers„o padr„o para Compra"
    Case Field()="Fator de Conversao Saida"  : MSGCAMPO="Fator de convers„o fiscal/venda"
    Case Field()="Fator Conversao Embalagem" : MSGCAMPO="Fator de convers„o embalagem/estocagem"
    Case Field()="Codigo da Simbologia"      : MSGCAMPO="Codigo da s¡mbologia"
    Case Field()="Codigo Fornecedor"         : MSGCAMPO="Codigo do fornecedor"
    Case Field()="Codigo Concentrador"       : MSGCAMPO="Codigo do produto concentrador"
    Case Field()="Vendagem"                  : MSGCAMPO="Bom, Regular, Pessimo"
    Case Field()="Inativo"                   : MSGCAMPO="Sim, N„o"
    Case Field()="Situacao"                  : MSGCAMPO="E=Em Linha, F=Fora de Linha"
    Case Field()="Fracionado"                : MSGCAMPO="Sim, N„o"
    Case Field()="Composto"                  : MSGCAMPO="Sim, N„o"
    Case Field()="Desconto Maximo"           : MSGCAMPO="Desconto m ximo do item"
    Case Field()="Quantidade Maxima Venda"   : MSGCAMPO="Quantidade m xima que pode ser vendida"
    Case Field()="Referencia"                : MSGCAMPO="C¢digo de referˆncia do produto"
    Case Field()="Codigo da Grade"           : MSGCAMPO="C¢digo de grade do produto"
    Case Field()="Tipo Codigo_Barras"        : MSGCAMPO="Tipo de c¢digo de barras a utilizar"
    Case Field()="Tipo_Codificao"            : MSGCAMPO="Define a estrutura de c¢digo p/ uso da grade"
    Case Field()="Pais"                      : MSGCAMPO="Informe o pais  de origem"
    Case Field()="Codigo MVA"                : MSGCAMPO="C¢digo do grupo de produtos c/ %MVA p/ c lculo Subst.Tribut ria"

    Case Field()="Tributacao de ICMS"        : MSGCAMPO="Debitado, Isento, Outros, N„o_Tributado, Substitui‡Æo"
    Case Field()="Tributacao de IPI"         : MSGCAMPO="Debitado, Isento, Outros, N„o_Tributado"
    Case Field()="Tributacao de ISSQN"       : MSGCAMPO="Debitado, N„o_Tributado, Isenta, Substituta, Retida"

    Case Field()="Tipo Tributacao"           : MSGCAMPO="Codigo da situa‡„o tribut ria/ICMS"
    Case Field()="IPI_CST"                   : MSGCAMPO="Codigo da situa‡„o tribut ria/IPI"
    Case Field()="PIS_CST"                   : MSGCAMPO="Codigo da situa‡„o tribut ria/PIS"
    Case Field()="COFINS_CST"                : MSGCAMPO="Codigo da situa‡„o tribut ria/COFINS"
    Case Field()="Genero"                    : MSGCAMPO="Gˆnero do Produto ou Servi‡o (NCM)"
    Case Field()="EX_TIPI"                   : MSGCAMPO="C¢digo EX da TIPI"

    Case Field()="Aliquota Reduzida BCICMS"  : MSGCAMPO="Aliquota de redu‡„o p/ base de c lculo ICMS"
    Case Field()="PIS_Aliquota"              : MSGCAMPO="Aliquota de PIS"
    Case Field()="COFINS_Aliquota"           : MSGCAMPO="Aliquota de COFINS"
    Case Field()="CSOSN"                     : MSGCAMPO="C¢digo de situa‡Æo da opera‡Æo no Simples Nacional - ICMS"
  EndSwitch

  Prompt TECLA

  Wait Field
       Message(MSGCAMPO)
       Until "F1","ESC","ENTER","DEL","FIELDVIEW","F35","F5",-33,"PGDN","INS"

    If Retval=-33
      Then
       If CHAVE=1 And INSERT_ESPECIAL
          Then ShowPopup " Fun‡”es " CENTERED
                "~O~bserva‡„o          " : " Observa‡Æo                                       "  : "F5"    ,
                "~C~opiar Registro     " : " Copiar do Registro Anterior                      "  : "COPIAR",
                "Co~r~es               " : " Rela‡„o de Cores                                 "  : "CORES",
                "~G~era Grade/Cor [P/S]" : " Gera Itens com Grade/Cor - Acabado e Semi-Acabado"  : "GRADE/COR",
                "~G~era Grade/Cor [M]  " : " Gera Itens com Grade/Cor - Materia Prima         "  : "GRADE/CORM",
                "~G~era Cor       [T]  " : " Gera Itens com Cor       - Iten de Terceiros     "  : "CORT",
                "~C~ancelar            " : " Cancelar a Opera‡„o                              "  : "CANCELAR"
               EndMenu
                To MenuVar
          Else ShowPopup " Fun‡”es " CENTERED
                "~O~bserva‡„o          " : " Observa‡Æo                                       "  : "F5"    ,
                "Co~r~es               " : " Rela‡„o de Cores                                 "  : "CORES",
                "~G~era Grade/Cor [P/S]" : " Gera Itens com Grade/Cor - Acabado e Semi-Acabado"  : "GRADE/COR",
                "~G~era Grade/Cor [M]  " : " Gera Itens com Grade/Cor - Materia Prima         "  : "GRADE/CORM",
                "~G~era Cor       [T]  " : " Gera Itens com Cor       - Iten de Terceiros     "  : "CORT",
                "~C~ancelar            " : " Cancelar a Opera‡„o                              "  : "CANCELAR"
               EndMenu
                To MenuVar
       EndIf
       echo off

       If MenuVar="CANCELAR" or MenuVar="Esc"
           Then Loop
       EndIf

       If MenuVar="CORES"
          Then If [Tipo do Item]<>"D"
                  Then Mensagem("Tipo do item inv lido para esta Fun‡„o !")
                       Loop
               EndIf
               Cores()
               Loop
       EndIf        

       If MenuVar="GRADE/COR"
          Then If [Tipo do Item]<>"D"
                  Then Mensagem("Tipo do item inv lido para esta Fun‡„o !")
                       Loop
               EndIf
               If Grade_Cor("P")
                  Then CHAVE=9
                       Return
                  Else Loop
               EndIf
       EndIf        
       If MenuVar="GRADE/CORM"
          Then If [Tipo do Item]<>"D"
                  Then Mensagem("Tipo do item inv lido para esta Fun‡„o !")
                       Loop
               EndIf
               If Grade_Cor("M")
                  Then CHAVE=9
                       Return
                  Else Loop
               EndIf
       EndIf        
       If MenuVar="CORT"
          Then If [Tipo do Item]<>"D"
                  Then Mensagem("Tipo do item inv lido para esta Fun‡„o !")
                       Loop
               EndIf
               If Cor("T")
                  Then CHAVE=9
                       Return
                  Else Loop
               EndIf
       EndIf        

       If MenuVar="COPIAR"
         Then Registro["Codigo do Item"]=CODIGO
              CopyfromDynarray Registro
              Loop
         Else RetVal=MenuVar
       EndIf
  EndIf

  Switch

  Case RetVal="INS":
       If Field()="Codigo de Barras" And
          ([Tipo Codigo_Barras]="A-EAN13" or
           [Tipo Codigo_Barras]="B-EAN8")
          Then Pega_CDBarras(RTrim(SubStr([Tipo Codigo_Barras],3,5)))
       EndIf

  Case RetVal="F1":
       If Field()="Tipo do Item"           Or
          Field()="Codigo da Familia"      Or
          Field()="Codigo do Grupo"        Or
          Field()="Codigo da Simbologia"   Or          
          Field()="Codigo da Marca"        Or
          Field()="Codigo do Departamento" Or
          Field()="Codigo da Cor_Tecido"   Or
          Field()="Unidade Fiscal"         Or
          Field()="Unidade Interna"        Or
          Field()="Unidade Entrada"        Or
          Field()="Unidade Embalagem"      Or
          Field()="NCM"                    Or
          Field()="Codigo da Grade"        Or
          Field()="Tipo_Codificacao"       Or
          Field()="Pais"                   Or
          Field()="Codigo MVA"             Or
          Field()="Codigo_Servico"
          Then CONSULTAF1()
       EndIf
       If Field()="Tipo Codigo_Barras"
          Then Checa_CdBarras("F1")
       EndIf
       If Field()="Tipo Tributacao"
          Then TribCST=Checa_CST("ICMS","","")
               If Not IsBlank(TribCST)
                  Then [Tipo Tributacao]=TribCST
               EndIf
       EndIf            
       If Field()="IPI_CST"
          Then TribCST=Checa_CST("IPI","S","")
               If Not IsBlank(TribCST)
                  Then [IPI_CST]=TribCST
               EndIf
       EndIf            
       If Field()="PIS_CST"
          Then TribCST=Checa_CST("PIS","","")
               If Not IsBlank(TribCST)
                  Then [PIS_CST]=TribCST
               EndIf
       EndIf            
       If Field()="COFINS_CST"
          Then TribCST=Checa_CST("COFINS","","")
               If Not IsBlank(TribCST)
                  Then [COFINS_CST]=TribCST
               EndIf
       EndIf            
       If Field()="CSOSN"
          Then TribCST=Checa_CSOSN([Tipo Tributacao],"")
               If Not IsBlank(TribCST)
                  Then [CSOSN]=TribCST
               EndIf
       EndIf            

  Case Retval="FIELDVIEW" or Retval="F35":
       EDITFIELD()
  Case Retval="DEL":
       If CHAVE=0
          Then EXCLUSAO(True)
               QuitLoop
       EndIf
  Case Retval="F5":
       Edita_Memo("Observacao",08,01,15,76,"Observa‡”es")
  Case Retval="PGDN":
       If Checagem_Pagina()
          Then Atualiza()
               Return
       EndIf
  Case Retval="ESC":
       Switch
       Case Field()="Tipo do Item":
            If QuerDesfazer("")
               Then If CHAVE=1
                       Then EXCLUSAO(False)
                       Else Undo
                            Atualiza()
                    EndIf
                    CHAVE=9
                    QuitLoop
            EndIf
       Case Field()="Codigo da Grade"        : Moveto [Tipo do Item]
       Case Field()="Tipo_Codificao"         : Moveto [Codigo da Grade]
       Case Field()="Referencia"             : Moveto [Codigo da Grade]
       Case Field()="Descricao do Item"      : Moveto [Referencia]
       Case Field()="Tipo Codigo_Barras"     : Moveto [Edita Descricao do Item]
       Case Field()="Codigo de Barras"       : Moveto [Tipo Codigo_Barras]
       Case Field()="Unidade Entrada"        : Moveto [Tipo Codigo_Barras]
       Case Field()="Unidade Interna"        : Moveto [Unidade Entrada]
       Case Field()="Unidade Embalagem"      : Moveto [Unidade Interna]
       Case Field()="Unidade Fiscal"         : Moveto [Unidade Embalagem]
       Case Field()="Descricao Complementar" : Moveto [Unidade Fiscal]
       Case Field()="Codigo da Familia"      : Moveto [Descricao Complementar]
       Case Field()="Codigo do Grupo"        : Moveto [Codigo da Familia]
       Case Field()="Codigo da Simbologia"   : Moveto [Codigo do Grupo]       
       Case Field()="Codigo da Cor_Tecido"   : Moveto [Codigo da Simbologia]
       Case Field()="Codigo da Marca"        : Moveto [Codigo da Cor_Tecido]
       Case Field()="Codigo do Departamento" : Moveto [Codigo da Marca]
       Case Field()="Localizacao"            : Moveto [Codigo do Departamento]
       Case Field()="Pais"                   : Moveto [Localizacao]
       Case Field()="Vendagem"               : Moveto [Pais]
       Case Field()="Situacao"               : Moveto [Vendagem]
       Case Field()="Codigo Fornecedor"      : Moveto [Situacao]
       Case Field()="Codigo Concentrador"    : Moveto [Codigo Fornecedor]
       Case Field()="Peso Liquido"           : Moveto [Codigo Concentrador]
       Case Field()="Peso Embalagem"         : Moveto [Peso Liquido]
       Case Field()="Volumes"                : Moveto [Peso Embalagem]
       Case Field()="NBM"                    : Moveto [Volumes]
       Case Field()="NCM"                    : Moveto [NBM]
       Case Field()="Genero"                 : Moveto [NCM]
       Case Field()="EX_TIPI"                : Moveto [Genero]
       Case Field()="Codigo_Servico"         : Moveto [EX_TIPI]
       Case Field()="Peso Variavel"          : Moveto [Codigo_Servico]
       Case Field()="Producao Esgotada"      : Moveto [Peso Variavel]
       Case Field()="Tributacao de ICMS"     : Moveto [Producao Esgotada]
       Case Field()="CSOSN"                  : Moveto [Tributacao de ICMS]
       Case Field()="Tributacao de IPI"      : Moveto [CSOSN]
       Case Field()="Tributacao de ISSQN"    : Moveto [Tributacao de IPI]
       Case Field()="PIS_CST"                : Moveto [Tributacao de ISSQN]
       Case Field()="COFINS_CST"             : Moveto [PIS_CST]
       Case Field()="Codigo MVA"             : Moveto [COFINS_CST]       
       Case Field()="Comissao do Item"       : Moveto [Codigo MVA]
       Case Field()="Indice Preco de Venda"  : Moveto [Desconto Maximo]
       OtherWise:
            Left
       EndSwitch

  Case Retval="ENTER": 
       If Field()="Descricao do Item"   Or
          Field()="Unidade Fiscal"      Or
          Field()="Unidade Interna"     Or
          Field()="Unidade Entrada"     Or
          Field()="Unidade Embalagem"   Or
          Field()="Tipo do Item"        Or
          Field()="Tributacao de ICMS"  Or
          Field()="Tributacao de IPI"   Or
          Field()="Tributacao de IR"    Or
          Field()="Tributacao de ISSQN" Or
          Field()="Tipo Tributacao"     Or
          Field()="IPI_CST"             Or
          Field()="PIS_CST"             Or
          Field()="COFINS_CST"          
          Then If IsBlank([])
                  Then Loop
               EndIf
       EndIf

       Switch
       Case Field()="Tipo do Item"           :  Moveto [Codigo da Grade]
       Case Field()="Codigo da Grade"        :
            If IsBlank([Codigo da Grade])
               Then [DTamanho        ]=""
                    [Tipo_Codificacao]=""
            EndIf
            Moveto [Referencia]
       Case Field()="Tipo_Codificacao"       :
            If Not IsBlank([Codigo da Grade])
               Then Moveto [Referencia]
            EndIf
       Case Field()="Referencia"             :
            If IsBlank([Codigo da Grade])
               Then Moveto [DTamanho          ]
               Else Moveto [Descricao do Item ]
            EndIf
       Case Field()="DTamanho"               :  Moveto [Descricao do Item ]
       Case Field()="Edita Descricao do Item":  Moveto [Tipo Codigo_Barras]
            If IsBlank([Edita Descricao do Item])
               Then [Edita Descricao do Item]="N"
            EndIf
       Case Field()="Tipo Codigo_Barras"     :
            If Checa_CdBarras("TipoCodigo")
               Then If [Tipo Codigo_Barras]="G-EAN13" Or
                       [Tipo Codigo_Barras]="J-EAN13" Or               
                       [Tipo Codigo_Barras]="H-EAN8"  Or
                       [Tipo Codigo_Barras]="I-COD128"
                       Then Moveto [Unidade Entrada ]
                       Else Moveto [Codigo de Barras]
                    EndIf
            EndIf
       Case Field()="Codigo de Barras"       :
            If Checa_CdBarras("Codigo")
               Then Moveto [Unidade Entrada]
            EndIf
       Case Field()="Unidade Entrada"        :  Moveto [Fator de Conversao]
       Case Field()="Fator de Conversao":
            If IsBlank([]) Then []=1 EndIf
            Moveto [Unidade Interna]
       Case Field()="Unidade Interna"        :  Moveto [Unidade Embalagem ]
       Case Field()="Unidade Embalagem"      :  Moveto [Fator Conversao Embalagem]
       Case Field()="Fator Conversao Embalagem":
            If IsBlank([]) Then []=1 EndIf
            Moveto [Unidade Fiscal]
       Case Field()="Unidade Fiscal"         :  Moveto [Descricao Complementar]


       Case Field()="Codigo da Familia":
            If IsBlank([])
               Then [Descricao da Familia]=""
            EndIf
            Moveto [Codigo do Grupo]
       Case Field()="Codigo do Grupo":
            If IsBlank([])
               Then [Descricao do Grupo]=""
            EndIf
            Moveto [Codigo da Simbologia]
       Case Field()="Codigo da Simbologia":
            If IsBlank([])
               Then [Descricao da Simbologia]=""
            EndIf
            Moveto [Codigo da Cor_Tecido]  
       Case Field()="Codigo da Cor_Tecido":
            If IsBlank([])
               Then [Descricao da Cor_Tecido]=""
            EndIf
            Moveto [Codigo da Marca]
       Case Field()="Codigo da Marca":
            If IsBlank([])
               Then [Descricao da Marca]=""
            EndIf
            Moveto [Codigo do Departamento]
       Case Field()="Codigo do Departamento":
            If IsBlank([])
               Then [Descricao do Departamento]=""
            EndIf
            Moveto [Localizacao]
       Case Field()="Localizacao":
            Moveto [Pais]           
       Case Field()="Pais":
            If IsBlank([])
               Then [Pais]=""
            EndIf
            Moveto [Vendagem]
       Case Field()="Vendagem":
            If IsBlank([]) Then []="BOM" EndIf
            Moveto [Situacao]
       Case Field()="Situacao":
            If IsBlank([]) Then []="L"   EndIf
            Moveto [Codigo Fornecedor]
       Case Field()="Codigo Fornecedor":
            Moveto [Codigo Concentrador]
       Case Field()="Codigo Concentrador" : Moveto [Peso Liquido]         
       Case Field()="Peso Liquido"        : Moveto [Peso Embalagem]
       Case Field()="Peso Embalagem"      : Moveto [Volumes]
       Case Field()="Volumes"             :
            AliqIPI=[Aliquota de IPI]
            Moveto [NBM]
       Case Field()="NBM"                 : Moveto [NCM]
       Case Field()="NCM"                 : Moveto [Genero]
       Case Field()="Genero"              : Moveto [EX_TIPI]
       Case Field()="EX_TIPI"             : Moveto [Codigo_Servico]
       Case Field()="Codigo_Servico"      : Moveto [Peso Variavel]
       Case Field()="Peso Variavel"       :
            If IsBlank([])
               Then []="N"
            EndIf   
            Moveto [Producao Esgotada]
       Case Field()="Producao Esgotada"   :
            If IsBlank([])
               Then []="N"
            EndIf   
            Moveto [Tributacao de ICMS]
       Case Field()="Tributacao de ICMS"  : Moveto [Tipo Tributacao]
       Case Field()="Tipo Tributacao"     :
             TribCST=Checa_CST("ICMS","",[Tipo Tributacao])
             If TribCST<>""
                Then CSTOk  =False
										 TribCST=SubStr([Tipo Tributacao],2,2)
										 Switch
                      Case [Tributacao de ICMS]="D" and (TribCST="00" Or TribCST="20")                                : CSTOk=True
                      Case [Tributacao de ICMS]="O" and (TribCST="90" Or TribCST="50" Or TribCST="51")                : CSTOk=True
                      Case [Tributacao de ICMS]="I" and (TribCST="40" Or TribCST="30")                                : CSTOk=True
                      Case [Tributacao de ICMS]="N" and (TribCST="41" Or TribCST="30")                                : CSTOk=True
                      Case [Tributacao de ICMS]="S" and (TribCST="10" Or TribCST="60" Or TribCST="70" Or TribCST="30"): CSTOk=True
										 EndSwitch
										 If CSTOk
										    Then If [Tributacao de ICMS]<>"D" And [Tributacao de ICMS]<>"O"
                                Then [Aliquota de ICMS        ]=0
                                     [Aliquota Reduzida BCICMS]=0
                                     Moveto [CSOSN]
                                Else Moveto [Aliquota de ICMS ]     
                            EndIf
										    Else Mensagem("CST inv lido para tipo de tributa‡„o de ICMS !")
										         Loop
										 EndIF   
                Else Mensagem("CST ICMS inv lido, use F1 para consultar !")
                     Loop   
             EndIf
       Case Field()="Aliquota de ICMS"        : Moveto [Aliquota Reduzida BCICMS]
       Case Field()="Aliquota Reduzida BCICMS": Moveto [CSOSN]
       Case Field()="CSOSN"             :                      
             TribCST=Checa_CSOSN([Tipo Tributacao],[CSOSN])
             If TribCST<>""
                Then Moveto [Tributacao de IPI]
                Else Mensagem("CSOSN inv lido, use F1 para consultar !")
                     Loop   
             EndIf
       Case Field()="Tributacao de IPI"       : Moveto [IPI_CST]
       Case Field()="IPI_CST"                 :
             TribCST=Checa_CST("IPI","S",[IPI_CST])
             If TribCST<>""
                Then CSTOk  =False
  									 TribCST=[IPI_CST]
                     Switch
                      Case [Tributacao de IPI]="D" and (TribCST="50" Or TribCST="51" Or TribCST="99")                : CSTOk=True
                      Case [Tributacao de IPI]="O" and (TribCST="54" Or TribCST="55" Or TribCST="99")                : CSTOk=True
                      Case [Tributacao de IPI]="I" and (TribCST="52")                                                : CSTOk=True
                      Case [Tributacao de IPI]="N" and (TribCST="53")                                                : CSTOk=True
				  	  			 EndSwitch
                     If CSTOk
  									    Then If [Tributacao de IPI]<>"D" And [Tributacao de IPI]<>"O"
                                Then [Aliquota de IPI]=0
                                     Moveto [Tributacao de ISSQN]
                                Else Moveto [Aliquota de IPI]     
                            EndIf
  									    Else Mensagem("CST inv lido para tipo de tributa‡„o de IPI !")
  									         Loop
  									 EndIF
                Else Mensagem("CST IPI inv lido, use F1 para consultar !")
                     Loop   
             EndIf
       Case Field()="Aliquota de IPI"    : Moveto [Tributacao de ISSQN]
       Case Field()="Tributacao de ISSQN":
            If Not IsBlank([])
               Then If []="D"
                       Then Moveto [Aliquota de ISSQN]
                       Else Moveto [PIS_CST]
                            [Aliquota de ISSQN]=0
                    EndIf
            EndIf
       Case Field()="Aliquota de ISSQN"  : Moveto [PIS_CST]
       Case Field()="PIS_CST"         :                      
             TribCST=Checa_CST("PIS","",[PIS_CST])
             If TribCST<>""
                Then If TribCST="N"
                        Then [PIS_Aliquota]=0
                             Moveto [COFINS_CST]
                        Else Moveto [PIS_Aliquota]
                    EndIf
                Else Mensagem("CST PIS inv lido, use F1 para consultar !")
                     Loop   
             EndIf
       Case Field()="PIS_Aliquota"       : Moveto [COFINS_CST]                     
       Case Field()="COFINS_CST"         :                      
             TribCST=Checa_CST("COFINS","",[COFINS_CST])
             If TribCST<>""
                Then If TribCST="N"
                        Then [COFINS_Aliquota]=0
                             Moveto [Codigo MVA]
                        Else Moveto [COFINS_Aliquota]
                    EndIf
                Else Mensagem("CST COFINS inv lido, use F1 para consultar !")
                     Loop   
             EndIf
       Case Field()="COFINS_Aliquota"    : Moveto [Codigo MVA]                     
       Case Field()="Codigo MVA":
            If IsBlank([])
               Then [MVA_1]=BlankNum()
                    [MVA_2]=BlankNum()
            EndIf
            Moveto [Comissao do Item] 
       Case Field()="Comissao do Item"      : Moveto [Desconto Maximo]
       Case Field()="Desconto Maximo"       : Moveto [Indice Preco de Venda]
       Case Field()="Indice Preco de Venda" : Moveto [Inativo]
       Case Field()="Inativo":
            If IsBlank([]) Then []="N"   EndIf
            If []="S" And STATUS_INATIVO<>"S"
               Then MSG=    "Ao tornar este Item INATIVO observe:// //"
                    MSG=MSG+"- Os valores no Invent rio dever„o estar zerados,        //"
                    MSG=MSG+"- Informar a data de inatividade na FICHA DE ESTOQUE,    //"
                    MSG=MSG+"- Excluir seus lan‡amentos nas tabelas de pre‡os,        //"
                    MSG=MSG+"- Novos movimentos de entrada/saida n„o ser„o permitidos."
                    Mensagem(MSG)
            EndIf
            Moveto [Flag]


;      Case Field()="Fracionado":
;           If IsBlank([]) Then []="N"   EndIf
;           Moveto [Composto]
;      Case Field()="Composto":
;           If IsBlank([]) Then []="N"   EndIf
;           Moveto [Peso Variavel]
;      Case Field()="Peso Variavel":
;           If IsBlank([]) Then []="N"   EndIf
;           Moveto [Desconto Maximo]


       Case Field()="Flag":          
            Moveto [Codigo MVA]  
            Atualiza()
            QuitLoop
       OtherWise:
            Right
       EndSwitch
  EndSwitch
EndWhile
EndProc   ;(Digita)

;*******************************************************************************
;* Checagem de dados da pagina                                                 *
;*******************************************************************************
Proc Checagem_Pagina()
NCAMPO=Field()

If IsBlank([Edita Descricao do Item])   Then [Edita Descricao do Item  ]="N" EndIf
If IsBlank([Codigo da Marca])           Then [Descricao da Marca       ]=""  EndIf
If IsBlank([Codigo do Departamento])    Then [Descricao do Departamento]=""  EndIf
If IsBlank([Codigo da Cor_Tecido])      Then [Descricao da Cor_Tecido  ]=""  EndIf
If IsBlank([Codigo do Grupo])           Then [Descricao do Grupo       ]=""  EndIf
If IsBlank([Codigo da Simbologia])      Then [Descricao da Simbologia  ]=""  EndIf
If IsBlank([Codigo da Familia])         Then [Descricao da Familia     ]=""  EndIf
If IsBlank([Fator de Conversao])        Then [Fator de Conversao       ]=1   EndIf
If IsBlank([Fator de Conversao Saida])  Then [Fator de Conversao Saida ]=1   EndIf
If IsBlank([Fator Conversao Embalagem]) Then [Fator Conversao Embalagem]=1   EndIf
If IsBlank([Situacao])                  Then [Situacao]="L"                  EndIf
If IsBlank([Inativo ])                  Then [Inativo ]="N"                  EndIf
If IsBlank([Vendagem])                  Then [Vendagem]="BOM"                EndIf

;*** Checagem de Campos ***
CAMPOS_OK=False
Switch
  Case IsBlank([Tributacao de ICMS ]):    Mensagem("Tributa‡„o ICMS Invalida !")
  Case IsBlank([Tributacao de IPI  ]):    Mensagem("Tributa‡„o IPI Invalida !")
;  Case IsBlank([Tributacao de IR   ]):    Mensagem("Tributa‡„o IR Invalida !")
;  Case IsBlank([Tributacao de ISSQN]):    Mensagem("Tributa‡„o ISSQN Invalida !")
;  Case IsBlank([Tributacao de INSS ]):    Mensagem("Tributa‡„o INSS Invalida !")
  OtherWise: CAMPOS_OK=True
EndSwitch

Return CAMPOS_OK
EndProc   ;  (Checagem_Pagina)

;*******************************************************************************
;* Rotina para Localizar Registro Item                                         *
;*******************************************************************************
Proc CHAVE_CORES()
While True
  Moveto [Sequencia da Cor_Tecido]
  End
  ITEM = [Sequencia da Cor_Tecido]
  Down
  Moveto [Sequencia da Cor_Tecido]
  Seta_Sequencia(ITEM,False)
  If IsLockRecord()
     Then Del
          Loop
  EndIf

  SetaCorRegistro("Editar")
  While true

    Prompt " Esc=Retornar  F7=Paginar  "

    Wait Field
      Message "Informe a sequencia para a Cor"
         Until "ESC","ENTER","F7","HOME","UP","PGUP"

    Switch
    Case RetVal="F7" Or RetVal="UP" Or RetVal="PGUP" Or RetVal="HOME":
         del
         While True
           Moveto [Sequencia da Cor_Tecido]

           PAGINA("Iten_Cor","MR")
           ITEM = [Sequencia da Cor_Tecido]
           If EDITAR="S"
              Then CHAVE_COR=0
                   Controla_EdicaoCor()
              Else If EXCLUIR="S"
                      Then If QuerExcluir("")
                              Then Del
                              Else UnLockRecord
                           EndIf
                      Else QuitLoop
                   EndIf
           EndIf
           SetaPosForm()
         EndWhile
         QuitLoop
    Case Retval="ESC":
         CHAVE_COR=9
         Del
         Return
    Case Retval="ENTER":
         If Not Seta_Sequencia(ITEM,True)
            Then Del
                 QuitLoop
         EndIf
         ITEM=[]
         Del
         If ITEM>99
            Then Mensagem("Sequencia >99 !")
                 QuitLoop
         EndIf
         Locate CODIGO,ITEM
         If Retval
            Then CHAVE_COR=0
            Else CHAVE_COR=1
                 End Down
                 [Codigo do Item         ] = CODIGO
                 [Sequencia da Cor_Tecido] = ITEM
                 Locate CODIGO,ITEM
         EndIf
         Return
    EndSwitch
  EndWhile
EndWhile
EndProc    ; (ChaveI)

;*******************************************************************************
;* Rotina para Digitacao das Cores                                             *
;*******************************************************************************
Proc Digita_Cor()
Moveto [Codigo da Cor_Tecido]
While True
  TECLA=" Esc=Retornar  "

  If Field()="Codigo da Cor_Tecido"
     Then TECLA=TECLA + "F1=Tabelas  "
  EndIf

  Prompt TECLA

  Wait Field
       Message Field()
       Until "ESC","ENTER","F1"

  Switch
  Case RetVal="F1":
       If Field()="Codigo da Cor_Tecido"
          Then CONSULTAF1()
       EndIf
  Case Retval="ESC":
       If CHAVE_COR=1
          Then Del
          Else Undo
       EndIf
       QuitLoop
  Case Retval="ENTER":
       If IsBlank([])
          Then Loop
       EndIf
       QuitLoop
  EndSwitch
EndWhile
EndProc

;*******************************************************************************
;* Rotina para Digitacao das Cores                                             *
;*******************************************************************************
Proc Cores()
Private Campo_Anterior

Campo_Anterior=Field()

UnLockRecord
PickForm "7"
IsLockRecord()

Moveto "Iten_Cor"
While True
  CHAVE_CORES()
  If CHAVE_COR=9
     Then QuitLoop
  EndIf
  Controla_EdicaoCor()
EndWhile

Moveto "Itens"
UnLockRecord
PickForm "F"
IsLockRecord()
Moveto Field Campo_Anterior

EndProc

;*******************************************************************************
;* Rotina para geracao das grades/cores                                        *
;*******************************************************************************
Proc Grade_Cor(Tipo)
Private Tipo,Campo_Anterior,i,CODANTERIOR
;Alterado Karina
If IsBlank(SYS_CLIENTE_CONFEC) 
   Then Return False
EndIf   

MSG=    "Vc definiu corretamente:          //"
MSG=MSG+" - Tipo da Grade;                 //"
MSG=MSG+" - As cores;                      //"
MSG=MSG+" - Os demais dados est„o corretos.// //"
MSG=MSG+"Deseja gerar itens com Grade/Cor ?"
ConfGeral(MSG)
If OK<>"S"
   Then Return False
EndIf

If Not Monta_Array_Grade()
   Then Return False
EndIf 

Aguarde("Gerando Grades")

CopyToArray RegItem
CODITEM=[Codigo do Item]
UnLockRecord
FormKey

Moveto "Iten_Cor"
Moveto [Codigo do Item]
Locate CODITEM
If RetVal
   Then While [Codigo do Item]=CODITEM
          Switch ; Alterado Karina
            Case SYS_CLIENTE_CONFEC="0185"  Or
                 SYS_CLIENTE_CONFEC="0195"  Or
                 SYS_CLIENTE_CONFEC="0196"  Or
                 SYS_CLIENTE_CONFEC="0222"  Or
                 SYS_CODIGO_CLIENTE="0003" :
                 Cria_Grade(AlinhM(StrVal([Sequencia da Cor_Tecido]),2),[Codigo da Cor_Tecido],Completa([Sigla Cor_Tecido],4," "),Tipo)
          EndSwitch
           
          Moveto "Iten_Cor" 
          Skip
          If Eot()
             Then QuitLoop
          EndIf
        EndWhile
   Else Switch
          OtherWise: Cria_Grade("","","",Tipo)
        EndSwitch  
EndIf

Moveto "Itens"
UnLockRecord
FormKey

Moveto [Codigo do Item]
Locate CODITEM

LimpAguarde()
Return True
EndProc


;*******************************************************************************
;* Rotina Cria Grade                                                           *
;*******************************************************************************
Proc Cria_Grade(Cor,CodCor,SiglaCor,TipoItem)
Private CODNOVO,wi,i,cont,tpitem

If TipoItem="M"
   Then cont=1
   Else cont=2
EndIf
tpitem=TipoItem

Moveto "Itens"
Moveto [Codigo do Item]
For i From 1 to 12
    If LTrim(RTrim(SubStr(Array_TM[i],4,2)))<>""
       Then tm=LTrim(RTrim(SuBstr(Array_TM[i],4,2)))

            For wi From 1 to cont
              CODNOVO=CODITEM

              Switch
                Case wi=2:
                  TpItem="S"
                  Switch ; Alterado karina
                    Case SYS_CLIENTE_CONFEC="0185" Or
                         SYS_CLIENTE_CONFEC="0195" Or
                         SYS_CLIENTE_CONFEC="0196" Or
                         SYS_CODIGO_CLIENTE="0003" Or
                         SYS_CLIENTE_CONFEC="0222" Or
                         SYS_CLIENTE_CONFEC="0200" Or
                         SYS_CLIENTE_CONFEC="0204":
                         CODNOVO="03"+SubStr(CODNOVO,3,8)
                    Case SYS_CLIENTE_CONFEC="0171":
                         CODNOVO="2"+SubStr(CODNOVO,2,9)
                    Case SYS_CLIENTE_CONFEC="0079":
                         If substr(CODNOVO,1,3)="022"
                            Then CODNOVO="033"+SubStr(CODNOVO,4,7)
                            Else CODNOVO="003"+SubStr(CODNOVO,4,7)
                         Endif
                    OtherWise: QuitLoop
                  EndSwitch
              EndSwitch
                      
              CODNOVO=SubStr(CODNOVO,1,(10-Len(Cor+Tm)))+Cor+tm

              tpbar=RegItem["Tipo Codigo_Barras"]
              cdbar=RegItem["Codigo de Barras"]
              Moveto [Codigo do Item]
              Locate CODNOVO
              If Not RetVal
                 Then End
                      Down
                 Else tpbar=[Tipo Codigo_Barras]
                      cdbar=[Codigo de Barras  ]
              EndIf
              CopyFromArray regitem
              [Codigo do item   ]=CODNOVO
              If Len(SiglaCor)>0
                 Then [Descricao do item]=Completa(SubStr([Descricao do Item],1,23),23," ")+SiglaCor
                      If tm<>"0" And tm<>"00"
                         Then [Descricao do item]=[Descricao do item]
                                          +"/"+
                                          LTrim(RTrim(SuBstr(Array_TM[i],2,2)))
                      EndIf
                      [Codigo da Cor_Tecido]=CodCor
                 Else Switch
                        Case SYS_CLIENTE_CONFEC="0079":
                           [Descricao do item]=Format("W2,AL",RTrim(Ltrim(SuBstr(Array_TM[i],2,2))))+"/"+[Descricao do item]
                        OtherWise :
                           [Descricao do item]=Completa(SubStr([Descricao do Item],1,27),27," ")+
                                               "/"+LTrim(RTrim(SuBstr(Array_TM[i],2,2)))
                      EndSwitch                         
              EndIf
              [Tipo do Item      ]=TpItem
		          [Tipo Codigo_Barras]=tpbar
		          [Codigo de Barras  ]=cdbar
              [DTamanho          ]=LTrim(RTrim(SuBstr(Array_TM[i],2,2)))

              Switch
                Case [Tipo Codigo_Barras]="G-EAN13"      : [Codigo de Barras]=Mod11_CalcEAN13("CALC",[Codigo do Item])
                Case [Tipo Codigo_Barras]="J-EAN13"      : [Codigo de Barras]=Mod11_CalcEAN13("CALC","78"+[Codigo do Item])
                Case [Tipo Codigo_Barras]="H-EAN8"       : [Codigo de Barras]=Mod11_CalcEAN8("CALC",SubStr([Codigo do Item],04,07))
                Case [Tipo Codigo_Barras]="I-COD128"     : [Codigo de Barras]=[Codigo do Item]
              EndSwitch
              unLockrecord

              If wi=2
                 Then tpitem=TipoItem
              Endif

            EndFor
    EndIf
EndFor

EndProc

;*******************************************************************************
;* Rotina Monta Aray Grade                                                     *
;*******************************************************************************
Proc Monta_Array_Grade()
Private ii

DynArray Array_TM[]
If Not IsBlank([Codigo da Grade])
   Then Moveto [Codigo da Grade]
        If Not Busca_Lookup("Codigo da Grade",[Codigo da Grade],"")
           Then Return False
        EndIf
EndIf

Array_TM[1] ="F"+Completa(REG_BUSCA_LOOKUP["Titulo Grade1"] ,2," ") +LTrim(RTrim(REG_BUSCA_LOOKUP["Codigo Item1"]))
Array_TM[2] ="F"+Completa(REG_BUSCA_LOOKUP["Titulo Grade2"] ,2," ") +LTrim(RTrim(REG_BUSCA_LOOKUP["Codigo Item2"]))
Array_TM[3] ="F"+Completa(REG_BUSCA_LOOKUP["Titulo Grade3"] ,2," ") +LTrim(RTrim(REG_BUSCA_LOOKUP["Codigo Item3"]))
Array_TM[4] ="F"+Completa(REG_BUSCA_LOOKUP["Titulo Grade4"] ,2," ") +LTrim(RTrim(REG_BUSCA_LOOKUP["Codigo Item4"]))
Array_TM[5] ="F"+Completa(REG_BUSCA_LOOKUP["Titulo Grade5"] ,2," ") +LTrim(RTrim(REG_BUSCA_LOOKUP["Codigo Item5"]))
Array_TM[6] ="F"+Completa(REG_BUSCA_LOOKUP["Titulo Grade6"] ,2," ") +LTrim(RTrim(REG_BUSCA_LOOKUP["Codigo Item6"]))
Array_TM[7] ="F"+Completa(REG_BUSCA_LOOKUP["Titulo Grade7"] ,2," ") +LTrim(RTrim(REG_BUSCA_LOOKUP["Codigo Item7"]))
Array_TM[8] ="F"+Completa(REG_BUSCA_LOOKUP["Titulo Grade8"] ,2," ") +LTrim(RTrim(REG_BUSCA_LOOKUP["Codigo Item8"]))
Array_TM[9] ="F"+Completa(REG_BUSCA_LOOKUP["Titulo Grade9"] ,2," ") +LTrim(RTrim(REG_BUSCA_LOOKUP["Codigo Item9"]))
Array_TM[10]="F"+Completa(REG_BUSCA_LOOKUP["Titulo Grade10"],2," ") +LTrim(RTrim(REG_BUSCA_LOOKUP["Codigo Item10"]))
Array_TM[11]="F"+Completa(REG_BUSCA_LOOKUP["Titulo Grade11"],2," ") +LTrim(RTrim(REG_BUSCA_LOOKUP["Codigo Item11"]))
Array_TM[12]="F"+Completa(REG_BUSCA_LOOKUP["Titulo Grade12"],2," ") +LTrim(RTrim(REG_BUSCA_LOOKUP["Codigo Item12"]))

Return True
EndProc


;*******************************************************************************
;* Rotina Cria Grade de Cores Item de Terceiros                                *
;*******************************************************************************
Proc Cor(TipoItem)
Private CODNOVO,tpitem

MSG=    "Vc definiu corretamente:          //"
MSG=MSG+" - As cores;                      //"
MSG=MSG+" - Os demais dados est„o corretos.// //"
MSG=MSG+"Deseja gerar itens com as Cores ?"
ConfGeral(MSG)
If OK<>"S"
   Then Return False
EndIf

Aguarde("Gerando Grades")

tpitem=TipoItem
CopyToArray RegItem
CODITEM=[Codigo do Item]
UnLockRecord
FormKey

Moveto "Iten_Cor"
Moveto [Codigo do Item]
Locate CODITEM
If RetVal
   Then While [Codigo do Item]=CODITEM
          CodCor  =[Codigo da Cor_Tecido]
          SiglaCor=Completa([Sigla Cor_Tecido],4," ")
           
          CODNOVO=SubStr(CODITEM,1,6)+CodCor

          tpbar=RegItem["Tipo Codigo_Barras"]
          cdbar=RegItem["Codigo de Barras"]

          Moveto "Itens"
          Moveto [Codigo do Item]
          Locate CODNOVO
          If Not RetVal
             Then End
                  Down
             Else tpbar=[Tipo Codigo_Barras]
						      cdbar=[Codigo de Barras  ]
          EndIf
          CopyFromArray regitem
          [Codigo do item      ]=CODNOVO
          [Descricao do item   ]=Completa(SubStr([Descricao do Item],1,25),25," ")+"/"+SiglaCor
          [Codigo da Cor_Tecido]=CodCor
          [Tipo do Item        ]=TpItem
          [Tipo Codigo_Barras  ]=tpbar
          [Codigo de Barras    ]=cdbar

          Switch
            Case [Tipo Codigo_Barras]="G-EAN13"      : [Codigo de Barras]=Mod11_CalcEAN13("CALC",[Codigo do Item])
            Case [Tipo Codigo_Barras]="J-EAN13"      : [Codigo de Barras]=Mod11_CalcEAN13("CALC","78"+[Codigo do Item])
            Case [Tipo Codigo_Barras]="H-EAN8"       : [Codigo de Barras]=Mod11_CalcEAN8("CALC",SubStr([Codigo do Item],04,07))
            Case [Tipo Codigo_Barras]="I-COD128"     : [Codigo de Barras]=[Codigo do Item]
          EndSwitch
          UnLockrecord

          Moveto "Iten_Cor" 
          Skip
          If Eot()
             Then QuitLoop
          EndIf
        EndWhile
   Else Mensagem("N„o existe cor definida !")
EndIf

Moveto "Itens"
UnLockRecord
FormKey

Moveto [Codigo do Item]
Locate CODITEM

LimpAguarde()
Return True
EndProc


;*******************************************************************************
;* Exclusao de Itens                                                           *
;*******************************************************************************
Proc EXCLUSAO(MostraMensagem)
Private MostraMensagem

If MostraMensagem
   Then MSG=    "Antes de excluir um ITEM observe:                      //"
        MSG=MSG+"  - N„o deve haver lan‡amentos de Entrada ou Saida,    //"
        MSG=MSG+"  - Os valores no Invent rio dever„o estar zerados,    //"
        MSG=MSG+"  - Informar a data de inatividade na FICHA DE ESTOQUE;//"
        MSG=MSG+"Automaticamente ser  excluido:                         //"
        MSG=MSG+"  - da consulta [ F1=Tabelas ],                        //"
        MSG=MSG+"  - das cota‡”es,                                      //"
        MSG=MSG+"  - seus lan‡amentos nas tabelas de pre‡os;            // //"
        MSG=MSG+"Excluir um Item se for extremamente necess rio !!      // //"
        MSG=MSG+"Tem certeza que deseja excluir este item ?"
        ConfGeral(MSG)
        If OK<>"S"
           Then Return
        EndIf
EndIf

Moveto "Itens"
UnLockRecord
FormKey

Moveto "Cotacao"
Moveto [Codigo do Item]
Locate [Itens->Codigo do Item]
If RetVal
   Then While True
          Del
          If Eot()
             Then QuitLoop
          EndIf
          Locate Next [Itens->Codigo do Item]
          If Not RetVal
             Then QuitLoop
          Endif
        EndWhile
EndIf

Moveto "\\Sistemas\\Vendas\\TbPrIte"
Moveto [Codigo do Item]
Locate [Itens->Codigo do Item]
If RetVal
   Then While True
          Del
          If Eot()
             Then QuitLoop
          EndIf
          Locate Next [Itens->Codigo do Item]
          If Not RetVal
             Then QuitLoop
          Endif
        EndWhile
EndIf

Moveto "Iten_Cor"
Moveto [Codigo do Item]
Locate [Itens->Codigo do Item]
If RetVal
   Then While True
          Del
          If Eot()
             Then QuitLoop
          EndIf
          Locate Next [Itens->Codigo do Item]
          If Not RetVal
             Then QuitLoop
          Endif
        EndWhile
EndIf



Moveto "Itens_CB"
Moveto [Codigo do Item]
Locate [Itens->Codigo do Item]
If RetVal
   Then While True
          [Codigo do Item   ]=""
          [Descricao do Item]=""
          UnLockRecord
          Skip
          If Eot()
             Then QuitLoop
          EndIf
          Locate Next [Itens->Codigo do Item]
          If Not RetVal
             Then QuitLoop
          Endif
        EndWhile
EndIf

Moveto "Itens"
FormKey
Del
EndProc

;*******************************************************************************
;* Atualiza Dados na Tabela de Preco                                           *
;*******************************************************************************
Proc Atualiza()
Moveto "Itens"
If IsBlank([Codigo da Marca])           Then [Descricao da Marca       ]=""  EndIf
If IsBlank([Codigo do Departamento])    Then [Descricao do Departamento]=""  EndIf
If IsBlank([Codigo da Cor_Tecido])      Then [Descricao da Cor_Tecido  ]=""  EndIf
If IsBlank([Codigo do Grupo])           Then [Descricao do Grupo       ]=""  EndIf
If IsBlank([Codigo da Simbologia])      Then [Descricao da Simbologia  ]=""  EndIf
If IsBlank([Codigo da Familia])         Then [Descricao da Familia     ]=""  EndIf
[Data da Manutencao ] =  Today()
[Hora da Manutencao ] =  Time()
[Chapa              ] =  SYS_CHAPA_USUARIO

UnLockRecord
FormKey

Moveto "Cotacao"
Moveto [Codigo do Item]
Locate [Itens->Codigo do Item]
If RetVal
   Then While True
          [Codigo do Item]=""
          [Codigo do Item]=[Itens->Codigo do Item]
          UnLockRecord
          Skip
          If Eot()
             Then QuitLoop
          EndIf
          Locate Next [Itens->Codigo do Item]
          If Not RetVal
             Then QuitLoop
          Endif
        EndWhile
EndIf

Moveto "\\Sistemas\\Vendas\\TbPrIte"
Moveto [Codigo do Item]
Locate [Itens->Codigo do Item]
If RetVal
   Then While True
          [Codigo do Item]=""
          [Codigo do Item]=[Itens->Codigo do Item]
          [Lookup_Item   ]=[Itens->Codigo do Item]
          UnLockRecord
          Skip
          If Eot()
             Then QuitLoop
          EndIf
          Locate Next [Itens->Codigo do Item]
          If Not RetVal
             Then QuitLoop
          Endif
        EndWhile
EndIf

Moveto "\\Sistemas\\Vendas\\TbPrcit"
Moveto [Codigo do Item]
Locate [Itens->Codigo do Item]
If RetVal
   Then While True
          [Codigo do Item]=""
          [Codigo do Item]=[Itens->Codigo do Item]
          [Lookup_Item   ]=[Itens->Codigo do Item]
          UnLockRecord
          Skip
          If Eot()
             Then QuitLoop
          EndIf
          Locate Next [Itens->Codigo do Item]
          If Not RetVal
             Then QuitLoop
          Endif
        EndWhile
EndIf

Moveto "\\Sistemas\\Producao\\FormulaC"
Moveto [Codigo do Produto]
Locate [Itens->Codigo do Item]
If RetVal
   Then While True
          [Codigo do Produto]=""
          [Codigo do Produto]=[Itens->Codigo do Item]
          [Lookup_Produto   ]=[Itens->Codigo do Item]
          UnLockRecord
          Skip
          If Eot()
             Then QuitLoop
          EndIf
          Locate Next [Itens->Codigo do Item]
          If Not RetVal
             Then QuitLoop
          Endif
        EndWhile
EndIf

Moveto "\\Sistemas\\Producao\\FormulaI"
Moveto [Codigo do Material]
Locate [Itens->Codigo do Item]
If RetVal
   Then While True
          [Codigo do Material]=""
          [Codigo do Material]=[Itens->Codigo do Item]
          [Lookup_Material   ]=[Itens->Codigo do Item]
          UnLockRecord
          Skip
          If Eot()
             Then QuitLoop
          EndIf
          Locate Next [Itens->Codigo do Item]
          If Not RetVal
             Then QuitLoop
          Endif
        EndWhile
EndIf



Moveto "\\Sistemas\\Estoque\\Itens_CB"
Moveto [Codigo do Item]
Locate [Itens->Codigo do Item]
If RetVal
   Then While True
          [Codigo do Item   ]=""
          [Descricao do Item]=""
          UnLockRecord
          Skip
          If Eot()
             Then QuitLoop
          EndIf
          Locate Next [Itens->Codigo do Item]
          If Not RetVal
             Then QuitLoop
          Endif
        EndWhile
EndIf

If Not IsBlank([Itens->Codigo de Barras]) And
   ([Itens->Tipo Codigo_Barras]="A-EAN13" Or
    [Itens->Tipo Codigo_Barras]="B-EAN8")
   Then Moveto "\\Sistemas\\Estoque\\Itens_CB"
        Moveto [Tipo CdBarras]
        Locate RTrim(SubStr([Itens->Tipo Codigo_Barras],3,5)),[Itens->Codigo de Barras]
        If RetVal
           Then [Codigo do Item   ]=[Itens->Codigo do Item]
                UnLockRecord
        EndIf
EndIf

Moveto "Itens"
FormKey
EndProc

;*******************************************************************************
;* Rotina para Digitacao dos Precos                                            *
;*******************************************************************************
Proc Editar(Opcao)
Private Opcao, ncampoedit

If Opcao="CLASSIFICACAO" Then PickForm "4" EndIf
If Opcao="CDBARRAS"      Then PickForm "5" EndIf
If Opcao="LOCAL"         Then PickForm "6" EndIf

Home
Moveto [Descricao do Item]

While True

      PegaPosForm()
      If Field()="Codigo do Item"
         Then ImageRights ReadOnly
         Else ImageRights
      EndIf

      TECLA=" F3=Retornar  "

      If Field()="Unidade Fiscal"         Or
         Field()="Unidade Interna"        Or
         Field()="Tipo do Item"           Or
         Field()="Codigo da Familia"      Or
         Field()="Codigo do Grupo"        Or
         Field()="Codigo da Simbologia"   Or         
         Field()="Codigo da Marca"        Or
         Field()="Codigo do Departamento" Or
         Field()="Codigo da Cor_Tecido"   Or
         Field()="Codigo da Grade"        Or
         Field()="Tipo Codigo_Barras"
         Then TECLA=TECLA + "F1=Tabelas  "
      EndIf
      TECLA=TECLA+"Del=Excluir  "

      If Field()="Codigo de Barras" And
         ([Tipo Codigo_Barras]="A-EAN13" or
          [Tipo Codigo_Barras]="B-EAN8")
         Then TECLA=TECLA+"INS=Pr¢x.C¢digo  "
      EndIf


      Prompt TECLA

      Wait Field
           Message Field()
           Until "ENTER","DEL","FIELDVIEW","F35","ZOOM","ZOOMNEXT","UP","DOWN","PGUP","PGDN",
                 "HOME","END","DEL","RIGHT","LEFT","F1","F3","INS"

      Switch
      Case RetVal="F1":
           If Field()="Unidade Fiscal"         Or
              Field()="Unidade Interna"        Or
              Field()="Tipo do Item"           Or
              Field()="Codigo da Familia"      Or
              Field()="Codigo do Grupo"        Or
              Field()="Codigo da Simbologia"   Or              
              Field()="Codigo da Marca"        Or
              Field()="Codigo do Departamento" Or
              Field()="Codigo da Cor_Tecido"   Or
              Field()="Codigo da Grade"
              Then CONSULTAF1()
           EndIf

           If Field()="Tipo Codigo_Barras"
              Then If Checa_CdBarras("F1")
                      Then Checa_CdBarras("TipoCodigo")
                           Moveto [Tipo Codigo_Barras]
                   EndIf
           EndIf
      Case RetVal="ZOOM":
           PESQUISA()
      Case RetVal="ZOOMNEXT":
           PESQUISACON()
      Case Retval="FIELDVIEW" or Retval="F35":
           EDITFIELD()
      Case Retval="DEL":
           PickForm "F"
           EXCLUSAO(True)
           If Opcao="CLASSIFICACAO" Then PickForm "4"  Endif
           If Opcao="CDBARRAS"      Then PickForm "5"  Endif
           If Opcao="LOCAL"         Then PickForm "6"  Endif
           If RecordStatus("New")
              Then QuitLoop
           EndIf
           SetaPosForm()
      Case RetVal="INS":
           If Field()="Codigo de Barras" And
              ([Tipo Codigo_Barras]="A-EAN13" or
               [Tipo Codigo_Barras]="B-EAN8")
              Then Pega_CDBarras(RTrim(SubStr([Tipo Codigo_Barras],3,5)))
           EndIf
      Case Retval="LEFT":
         ;;If Field()="Descricao do Item"
         ;;   Then
         ;;        Switch
         ;;          Case Opcao="CLASSIFICACAO": Moveto [Codigo da Cor_Tecido]
         ;;          Case Opcao="CDBARRAS"     : Moveto [Codigo de Barras    ]
         ;;          Case Opcao="LOCAL"        : Moveto [Localizacao         ]
         ;;        EndSwitch
         ;;        Loop
         ;;EndIf
           Left
      Case Retval="ENTER" Or RetVal="RIGHT":
           If Field()="Fator de Conversao" And
              IsBlank([])
              Then []=1
           EndIf
         ;;If Field()="Codigo da Cor_Tecido" Or
         ;;   Field()="Codigo da Grade" Or
         ;;   Field()="Localizacao"
         ;;   Then Moveto [Descricao do Item   ]
         ;;        Loop
         ;;EndIf

           Right
      OtherWise:
           Tecla_Press=RetVal
           ncampoedit=Field()
           If Retval="F3"
              Then If RecordStatus("Modified")
                      Then If Checa_CdBarras("TipoCodigo") And
                              Checa_CdBarras("Codigo")
                              Then Moveto Field ncampoedit
                                   Atualiza()
                              Else Moveto [Tipo Codigo_Barras]
                                   Loop
                           EndIf
                   EndIf
                   QuitLoop
              Else If RecordStatus("Modified")
                      Then If Checa_CdBarras("TipoCodigo") And
                              Checa_CdBarras("Codigo")
                              Then Moveto Field ncampoedit
                                   Atualiza()
                              Else Moveto [Tipo Codigo_Barras]
                                   Loop
                           EndIf
                   EndIf
           EndIf
           KeyPress Tecla_Press
           If RecordStatus("New")
              Then Del
                   QuitLoop
           EndIf
      EndSwitch
EndWhile
ImageRights
EndProc

;*******************************************************************************
;* Rotina Substitui                                                            *
;*******************************************************************************
Proc Substitui()
Private NR

CoEdit "Itens"
NR=NRecords("Itens")
Scan
   Barra(NR, RecNo())
   Aguarde("Aguarde, Alterando "+BARRA_STRING)

   If Not IsBlank(VSDGFAMI) And
      [Codigo da Familia]<>VSDGFAMI
      Then Loop
   EndIf
   If Not IsBlank(VSDGGRP) And
      [Codigo do Grupo]<>VSDGGRP
      Then Loop
   EndIf
   If Not IsBlank(VSDGMARCA) And
      [Codigo da Marca]<>VSDGMARCA
      Then Loop
   EndIf

   If VSDGOPCAO=1
      Then [Comissao do Item      ]=VSDGVALORA
      Else [Indice Preco de Venda ]=VSDGVALORA
   EndIf
   UnLockRecord
EndScan
Do_It!
ClearAll
LimpAguarde()
Mensagem("Opera‡„o Finalizada !")
EndProc ; (Substitui)

;*******************************************************************************
;* Rotina                                                                      *
;*******************************************************************************
Proc SD_Dialog(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="TG_FAMI"        : Campo="NO"
            Case Campo="TG_GRP"         : Campo="TG_FAMI"
            Case Campo="TG_MARCA"       : Campo="TG_GRP"
            Case Campo="TG_OPCOES"      : Campo="TG_MARCA"
            Case Campo="TG_VALORA"      : Campo="TG_OPCOES"
            Case Campo="YES" Or Campo="NO" : Campo="TG_FAMI"
          EndSwitch
     Case Evento["KeyCode"] = 13:
          Temp=False
          If Checa_TAG()
             Then Switch
                    Case Campo="TG_FAMI"     : Campo="TG_GRP"
                    Case Campo="TG_GRP"      : Campo="TG_MARCA"
                    Case Campo="TG_MARCA"    : Campo="TG_OPCOES"
                    Case Campo="TG_OPCOES"   : Campo="TG_VALORA"
                    Case Campo="TG_VALORA"   :
                         VSDGVALORA = ControlValue("TG_VALORA")
                         If IsBlank(VSDGVALORA)
                           Then Mensagem("Valor inv lido ! ")
                           Else Campo ="YES"
                         EndIf
                  EndSwitch
          EndIf
          RefreshDialog
   EndSwitch
EndIf

Switch
 Case Campo="TG_OPCOES": MSG_CAMPO="Comis„o do Item / Indice p/ C lculo Pre‡o de Venda"
 Case Campo="TG_VALORA": MSG_CAMPO="Informe a porcentagem (%)"
EndSwitch
Monta_Prompt(MSG_CAMPO,TECLA)

Return Temp
EndProc

;*******************************************************************************
;* ROTINA TROCA DADDOS                                                         *
;*******************************************************************************
Proc TrocaDados()
Do_It!
ClearAll

VSDGFAMI    =""
VSDGMARCA   =""
VSDGGRP     =""
VSDGNOMFAMI =""
VSDGNOMGRP  =""
VSDGNOMMARCA=""
VSDGOPCAO   =""
VSDGVALORA  =""

ShowDialog "Substitui‡„o de Dados" Proc "SD_Dialog"
Trigger "OPEN","ARRIVE"
Key "F1","ENTER","ESC","TAB"
@ 05,05   Height 15 Width 50

  Label  @ 00,00 "Familia"  For "TG_FAMI"
  Accept @ 01,01 Width 07 "A3"  Picture "#*#" Tag "TG_FAMI" To VSDGFAMI
  Accept @ 01,09 Width 28 "A25" Picture "!*!" Tag "TG_NOMFAMI" To VSDGNOMFAMI

  Label  @ 02,00 "Grupo"  For "TG_GRP"
  Accept @ 03,01 Width 07 "A3"  Picture "#*#" Tag "TG_GRP" To VSDGGRP
  Accept @ 03,09 Width 28 "A25" Picture "!*!" Tag "TG_NOMGRP" To VSDGNOMGRP

  Label  @ 04,00 "Marca"  For "TG_MARCA"
  Accept @ 05,01 Width 07 "A3"  Picture "#*#" Tag "TG_MARCA"    To VSDGMARCA
  Accept @ 05,09 Width 28 "A25" Picture "!*!" Tag "TG_NOMMARCA" To VSDGNOMMARCA

  Label @ 06,00 "Tipo de Opc”es"For "TG_OPCOES"
  RadioButtons @ 07,01 Height 2 Width 41
    "~C~omiss„o ",
    "~P~r. Venda"
    Tag "TG_OPCOES"
    To VSDGOPCAO

  Label  @ 09,00 "Porcentagem:"  For "TG_VALORA"
  Accept @ 09,14 Width 8 "N"  Tag "TG_VALORA"  To VSDGVALORA

  Pushbutton @ 11,06 width 11 "~O~k"      OK     Default Value "Ok" Tag "YES" To BottonValue
  Pushbutton @ 11,20 width 11 "~C~ancela" CANCEL                    Tag "NO"  To BottonValue
EndDialog
If RetVal
   Then Substitui()
EndIf
AbreTabelas()
EndProc  ; (TrocaDados)

;*******************************************************************************
;* Rotina checagem Codigo de Barras                                            *
;*******************************************************************************
Proc Checa_CdBarras(Tipo)
Private Tipo, Result

Result=True
Switch
  Case Tipo="F1":
       ShowPopup " Tipos " CENTERED
        "~A~-EAN13     " : " EAN13                                      " : "A-EAN13",
        "~B~-EAN8      " : " EAN8                                       " : "B-EAN8",
        "~D~-COD128    " : " COD128 Livre                               " : "D-COD128",
        Separator,
        "~G~-EAN13 II  " : " EAN13 = 00+C¢digo do Item                  " : "G-EAN13",
        "~J~-EAN13 III " : " EAN13 = 78+C¢digo do Item                  " : "J-EAN13",
        "~H~-EAN8 II   " : " EAN8 = £ltimos 7 d¡gitos do C¢digo do Item " : "H-EAN8",
        "~I~-COD128 II " : " COD128 = C¢digo do Item                    " : "I-COD128",
        Separator,
        "~C~ancelar    " : " Cancelar a Opera‡„o "  : "CANCELAR"
       EndMenu
        To MenuVar

        echo off

       If MenuVar<>"CANCELAR" And MenuVar<>"Esc"
           Then [Tipo Codigo_Barras]=MenuVar
           Else Return False
       EndIf

  Case Tipo="TipoCodigo":
       Switch
         Case [Tipo Codigo_Barras]=""             : Result=True
         Case [Tipo Codigo_Barras]="A-EAN13"      : Result=True
         Case [Tipo Codigo_Barras]="B-EAN8"       : Result=True
         Case [Tipo Codigo_Barras]="D-COD128"     : Result=True
         Case [Tipo Codigo_Barras]="G-EAN13"      : Result=True
              [Codigo de Barras]=Mod11_CalcEAN13("CALC",[Codigo do Item])
         Case [Tipo Codigo_Barras]="J-EAN13"      : Result=True
              [Codigo de Barras]=Mod11_CalcEAN13("CALC","78"+[Codigo do Item])
         Case [Tipo Codigo_Barras]="H-EAN8"       : Result=True
              [Codigo de Barras]=Mod11_CalcEAN8("CALC",SubStr([Codigo do Item],04,07))
         Case [Tipo Codigo_Barras]="I-COD128"     : Result=True
              [Codigo de Barras]=[Codigo do Item]
         OtherWise                                : Mensagem("Tipo de C¢digo de Barras inv lido !")
                                                    Result=False
       EndSwitch
  Case Tipo="Codigo":
       CDBAROk=True
       Switch
         Case [Tipo Codigo_Barras]="A-EAN13"      :
           Switch
             Case Len([Codigo de Barras])>13:
               CDBAROK=False
               Mensagem("C¢digo de Barras EAN13 >13 digitos !")
             Case Len([Codigo de Barras])<12:
               CDBAROK=False
               Mensagem("C¢digo de Barras EAN13 <13 digitos !")
             Case Mod11_CalcEAN13("CHEC",SubStr([Codigo de Barras],1,12))="":
               CDBAROK=False
               Mensagem("C¢digo de Barras EAN13 inv lido !")
             Case Mod11_CalcEAN13("CHEC",SubStr([Codigo de Barras],1,12))<>numVal(SubStr([Codigo de Barras],13,1)):
               CDBAROK=False
               Mensagem("Digito verificador inv lido !")
           EndSwitch

         Case [Tipo Codigo_Barras]="B-EAN8"       :
           Switch
             Case Len([Codigo de Barras])>8:
               CDBAROK=False
               Mensagem("C¢digo de Barras EAN8 >8 digitos !")
             Case Len([Codigo de Barras])<8:
               CDBAROK=False
               Mensagem("C¢digo de Barras EAN8 <8 digitos !")
             Case Mod11_CalcEAN8("CHEC",SubStr([Codigo de Barras],1,7))="":
               CDBAROK=False
               Mensagem("C¢digo de Barras EAN8 inv lido !")
             Case Mod11_CalcEAN13("CHEC",SubStr([Codigo de Barras],1,7))<>numVal(SubStr([Codigo de Barras],8,1)):
               CDBAROK=False
               Mensagem("Digito verificador inv lido !")
           EndSwitch

       EndSwitch

       If CDBAROK
          Then
               Moveto "Itens_CB"
               Moveto [Tipo CdBarras]
               Locate RTrim(SubStr([Itens->Tipo Codigo_Barras],3,5)),
                      [Itens->Codigo de Barras]
               If RetVal
                  Then If Not IsBlank([Codigo do Item]) And
                          [Codigo do Item]<>[Itens->Codigo do Item]
                          Then CDBAROK=False
                               MSG="J  existe o Item "+[Codigo do Item]+" com "+
                                   [Tipo CdBarras]+"="+[Codigo_Barras]
                               Mensagem(MSG)
                        Endif
               Endif

               Moveto "Itens"
       EndIf
       Result=CDBAROK
EndSwitch

Return Result
Endproc


;*******************************************************************************
;* Rotina Pega Codigo de Barras                                                *
;*******************************************************************************
Proc Pega_CdBarras(Tipo)
Private Tipo, CODBAR

Moveto "Itens_CB"
Moveto [Tipo CdBarras]
Locate Tipo
If Not RetVal
   Then Mensagem("N„o existe intervalo de c¢digo na tabela para "+Tipo)
        Moveto "Itens"
   Else CODBAR=""
        While [Tipo CdBarras]=Tipo
          If IsBlank([Codigo do Item])
             Then If Not IsLockRecord()
                     Then CODBAR          =[Codigo_Barras]

                          If Not ConfGeral("Confirma "+Tipo+"="+CODBAR+" para este Item ?")
                             Then UnLockRecord
                                  Moveto "Itens"
                                  Return
                          EndIf

                          [Codigo do Item]=[Itens->Codigo do Item]
                          UnLockRecord
                          QuitLoop
                     Else Loop
                  EndIf
          Endif

          Skip
          If EOT() Then QuitLoop EndIf

        EndWhile

        If IsBlank(CODBAR)
           Then Mensagem("N„o existe intervalo dispon¡vel na tabela para "+Tipo)
                Moveto "Itens"
           Else Moveto [Codigo do Item]
                Locate [Itens->Codigo do Item]
                If RetVal
                   Then While [Codigo do Item]=[Itens->Codigo do Item]
                          If [Codigo_Barras ]<>CODBAR
                             Then [Codigo do Item   ]=""
                                  [Descricao do Item]=""
                                  UnLockRecord
                          EndIf
                          Skip
                          If Eot()
                            Then QuitLoop
                          EndIf
                          Locate Next [Itens->Codigo do Item]
                          If Not RetVal
                             Then QuitLoop
                          Endif
                        EndWhile
                EndIf

                Moveto "Itens"
                [Codigo de Barras]=CODBAR

        EndIf

Endif

EndProc

;*******************************************************************************
;* Implementa Tabelas                                                          *
;*******************************************************************************
Proc AbreTabelas()
CoEdit "Itens"
;************** Rotina para tratar o erro de tabela locada ********************
If ErrorCode()=4
   Then Return False
EndIf

{TableAdd} {Cotacao}
{TableAdd} {Iten_Cor}
{TableAdd} {Itens_CB}
{TableAdd} {\\Sistemas\\Vendas\\TbPrite}
{TableAdd} {\\Sistemas\\Vendas\\Tbprcit}
{TableAdd} {\\Sistemas\\Producao\\FormulaC}
{TableAdd} {\\Sistemas\\Producao\\FormulaI}
Moveto "Itens"
Return True
EndProc

;*******************************************************************************
;* Rotina para controlar Edicao do registro                                    *
;*******************************************************************************
Proc Controla_EdicaoCor()
DIGITA_COR()
If RecordStatus("Locked") Then UnLockRecord EndIf         
EndProc

;*******************************************************************************
;* Rotina para controlar Edicao do registro                                    *
;*******************************************************************************
Proc Controla_EdicaoC()
STATUS_INATIVO=[Inativo]
DIGITA()
If RecordStatus("Locked") Then UnLockRecord EndIf         
If OP_FORM="4"
   Then PickForm "4"
EndIf
EndProc

;*******************************************************************************
;* Rotina Principal                                                            *
;*******************************************************************************
AutoLib="\\Sistemas\\Cadastro\\Bibliot,\\Sistemas\\Cadastro\\Bib_Show,\\Sistemas\\Estoque\\Bib_Estq"
If Not IsAssigned(SYS_CHAPA_USUARIO)   Then SYS_CHAPA_USUARIO="9999" EndIf
If Not IsAssigned(SYS_NIVEL_USUARIO)   Then SYS_NIVEL_USUARIO="S"    EndIf
If Not IsAssigned(SYS_NOME_USUARIO)    Then SYS_NOME_USUARIO=""      EndIf
If Not IsAssigned(SYS_CODIGO_CLIENTE)  Then SYS_CODIGO_CLIENTE=""    EndIf
If Not IsAssigned(SYS_CLIENTE_CONFEC)  Then SYS_CLIENTE_CONFEC="0185"    EndIf

If not AbreTabelas()
   Then Do_It!
        ClearAll
        Release Vars All
        Release Procs All
        return
EndIf

DynArray Registro[]

PickForm "4"
INSERT_ESPECIAL=False
OP_FORM="4"
While True
  If INSERT_ESPECIAL
     Then CHAVE2()
     Else CHAVE()
  EndIf
  If CHAVE=9
     Then QuitLoop
  EndIf
  If CHAVE=4
     Then Loop
  EndIf
  If CHAVE=5
     Then If OP_FORM="4"
             Then PickForm "4"
             Else PickForm "F"
          EndIf
          Loop
  EndIf
  Controla_EdicaoC()
EndWhile
Do_It!
ClearAll
Release Vars All
Release Procs All
