;** Itens **********************************************************************
;*  Manutencao Cadastro de Item de Estoque                                    *
;*******************************************************************************
;Autor           : Vise Informatica (VISERP)      
;Desenvolvido    : 05/12/1995 por Anivel Augusto Rodrigues
;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 codigo cliente confec‡Æo
;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 **
;Ultima Alteracao: 27/04/2011 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes Cria_Grade Isabela Garcia
;Ultima Alteracao: 30/04/2011 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes Isabela Garcia Nova Codifica‡Æo
;Ultima Alteracao: 05/05/2011 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes Inativo/Grades da Referencia            
;Ultima Alteracao: 12/05/2011 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes novas fun‡äes para confec‡äes  
;Ultima Alteracao: 13/05/2011 por Bruno Carvalho
;Motivo Alteracao: Ajustes Campo CSOSN
;Ultima Alteracao: 15/09/2011 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes CHAVE=0 Editar Classifica‡Æo..     
;Ultima Alteracao: 25/10/2011 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes Checa_CST() PIS/Cofins p/ Saida    
;Ultima Alteracao: 20/01/2012 por Karina Andrade
;Motivo Alteracao: Ajustes F3 e ESC edi‡Æo especial
;Ultima Alteracao: 02/02/2012 por Karina Andrade
;Motivo Alteracao: Ajustes F3 e ESC edi‡Æo especial
;Ultima Alteracao: 02/02/2012 por Anivel Augusto Rodrigues
;Motivo Alteracao: InclusÆo Tipo do Item substituir dados     
;Ultima Alteracao: 26/03/2012 por Karina Andrade
;Motivo Alteracao: Ajustes digita‡Æo itens com tribcst 20 e 70  
;Ultima Alteracao: 29/05/2012 por Bruno Carvalho
;Motivo Alteracao: Ajustes na rotina de codigo de barras, add verifica‡Æo do mesmo.  
;Ultima Alteracao: 27/06/2012 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes Checa_CSOSN2(), PegaTipoTributacao()     
;Ultima Alteracao: 15/08/2012 por Bruno Carvalho
;Motivo Alteracao: Ajustes CODIGO_CLIENTE "0243"     
;Ultima Alteracao: 30/08/2012 por Bruno Carvalho
;Motivo Alteracao: Altera‡Æo do Layout do "Cadastro de Itens"
;Ultima Alteracao: 03/10/2012 por Bruno Carvalho
;Motivo Alteracao: Ajustes no campo "Tipo Tributacao" 
;Ultima Alteracao: 07/01/2013 por Anivel Augusto Rodrigues
;Motivo Alteracao: InclusÆo Gera_gradeCor para item de terceiros
;Ultima Alteracao: 14/01/2013 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes controle de campos, exclusao campo NBM
;Ultima Alteracao: 08/02/2013 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes travar sequencia cor = codigo cor SYS_CODIGO_CLIENTE=0342,0338
;Ultima Alteracao: 11/02/2013 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes Itens propriedade de terceiros 
;Ultima Alteracao: 16/02/2013 por Karina Andrade
;Motivo Alteracao: Ajustes Enter campo=Codigo de Barras
;Ultima Alteracao: 18/02/2013 por Kamila Gomes
;Motivo Alteracao: Ajustes SetaCorRegistro("Editando")                 
;Ultima Alteracao: 20/02/2013 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes, Item pai referencia limpa codigo cor_tecido
;Ultima Alteracao: 28/02/2013 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes, Item pai referencia travar se estrutura errada
;Ultima Alteracao: 19/03/2013 por Bruno Carvalho
;Motivo Alteracao: Add na rotina de gera‡Æo de cores o campo LOCALIZACAO
;Ultima Alteracao: 05/04/2013 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes, Item pai referencia travar se estrutura errada
;Ultima Alteracao: 08/06/2013 por Anivel Augusto Rodrigues
;Motivo Alteracao: inclusao TIBPT               
;Ultima Alteracao: 10/02/2013 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes IBPT 0.0.6         
;Ultima Alteracao: 16/07/2013 por Karina Andrade
;Motivo Alteracao: Adicionado FornProd na proc ATUALIZA() e EXCLUSAO()
;Ultima Alteracao: 08/10/2013 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes tecla INS proximo codigo de barras
;Ultima Alteracao: 24/10/2013 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes inclusao FCI
;Ultima Alteracao: 05/11/2013 por Bruno Carvalho
;Motivo Alteracao: Adicionado "ANP_Codigo_Combustivel" e "ANP_UF_Consumo"
;Ultima Alteracao: 11/12/2013 por Bruno Carvalho
;Motivo Alteracao: Adicionado "Tipo Codigo de Barras" EAN14 
;Ultima Alteracao: 11/12/2013 por Andrey Fillipe
;Motivo Alteracao: Ajustes Alt+F/Troca de Dados
;Ultima Alteracao: 13/12/2013 por Bruno Carvalho
;Motivo Alteracao: Ajustes p/ informar sobre o cadastro de cor na sequencia 9 e "EAN14" Variante Logistica
;Ultima Alteracao: 28/01/2014 por Bruno Carvalho
;Motivo Alteracao: Altera‡Æo na MSGCAMPO quando field "Edita Descricao do Item"
;Ultima Alteracao: 16/05/2014 por Andrey Fillipe
;Motivo Alteracao: Criado proc Checa_CST_CSOSN()
;Ultima Alteracao: 05/09/2014 por Bruno Carvalho
;Motivo Alteracao: Adicionado rotina p/ #0227# na rotina do Cria_Grade() [ SEMI-ACABADO "PAI" ]
;Ultima Alteracao: 02/12/2014 por Luis Gustavo
;Motivo Alteracao: Implementado na Proc Pega_AliqIBPT(), para buscar o estado da empresa padrao do sistema
;Ultima Alteracao: 09/02/2015 por Luis Gustavo
;Motivo Alteracao: Ajustes no INSERT_ESPECIAL
;Ultima Alteracao: 24/02/2015 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes, rotina p/ #0227# na rotina Grade_Cor() [ SEMI-ACABADO "PAI" ] NAVALHADA
;Ultima Alteracao: 06/03/2015 por Luis Gustavo
;Motivo Alteracao: Ajustes no INSERT_ESPECIAL, nao encontrava a PROC PESQUISA()
;Ultima Alteracao: 25/03/2015 por Kamila Gomes
;Motivo Alteracao: INSERT_ESPECIAL recebia False na proc Controla_EdicaoC() 
;                  e sa¡a do insere especial indevidamente. Isso foi removido.
;Ultima Alteracao: 26/03/2015 por Bruno Carvalho
;Motivo Alteracao: Incluido retorno boleano na proc Localiza_CdBar()
;Ultima Alteracao: 27/03/2015 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes Mensagem excluir item
;Ultima Alteracao: 30/03/2015 por Andrey Fillipe
;Motivo Alteracao: - Verificado se o item ja foi cadastrado alguma vez e esta na tabela de exclusao "Iten_Exc"
;                  - Ajustes na verificacao do tamanha do codigo de barras EAN13 e EAN8
;                  - Inclusao do campo Fracionado
;Ultima Alteracao: 02/04/2015 por Andrey Fillipe
;Motivo Alteracao: Corrigido retorno boleano na proc Localiza_CdBar()
;Ultima Alteracao: 11/06/2015 por Kamila Gomes
;Motivo Alteracao: Ajustes Siri (0227) grava cod de barras no cod fornecedor e 
;                  descr. complementar com cor e tamanho nos itens da grade
;Ultima Alteracao: 29/06/2015 por Kamila Gomes
;Motivo Alteracao: Ajustes campos PIS e COFINS conforme NCM 
;Ultima Alteracao: 20/07/2015 por Kamila Gomes
;Motivo Alteracao: Ajustes parametro ITENS_EDIT
;Ultima Alteracao: 26/08/2015 por Bruno Carvalho
;Motivo Alteracao: Adicionado MARCA na tabela "Iten_Cor" 
;Ultima Alteracao: 29/10/2015 por Andrey Fillipe
;Motivo Alteracao: Ajustes para nao deixar finalizar o item com IPI, PIS e COFINS em branco
;Ultima Alteracao: 18/11/2015 por Kamila Gomes
;Motivo Alteracao: Implementa‡Æo do campo CEST
;Ultima Alteracao: 20/11/2015 por Bruno Carvalho
;Motivo Alteracao: Ajustado Cria_Grade() onde a variavel CodMar estava sendo verificada por qualquer tipo de empresa
;Ultima Alteracao: 07/12/2015 por Anivel Augusto Rodrigues
;Motivo Alteracao: exclusao referencia ao campo INSS e IR
;Ultima Alteracao: 05/01/2016 por Kamila Gomes
;Motivo Alteracao: Implementa‡Æo do campo Enq_IPI
;Ultima Alteracao: 12/01/2016 por Bruno Carvalho
;Motivo Alteracao: CodMar recebendo valor "" caso nÆo seja setada em nenhum momento
;Ultima Alteracao: 18/01/2016 por Kamila Gomes
;Motivo Alteracao: Ajustes campo Enq_IPI em branco recebe 999
;Ultima Alteracao: 05/05/2016 por Bruno Carvalho
;Motivo Alteracao: Ajustes quando tecla -115 ou -116 no campo [Codigo Enq_IPI] e ESC na Tela de Tributa‡Æo p/ Tela de Faturamento
;Ultima Alteracao: 18/05/2016 por Bruno Carvalho
;Motivo Alteracao: Adicionado a ABA [Complemento] e ajustes no layout do FORM "F"
;Ultima Alteracao: 19/05/2016 por Kamila Gomes
;Motivo Alteracao: Ajustes Ask com nome do campo Descricao da Familia errado
;Ultima Alteracao: 21/05/2016 por Kamila Gomes
;Motivo Alteracao: Ajustes GetRecord "Iten_Com" -> [Desconto Maximo]
;Ultima Alteracao: 24/05/2016 por Bruno Carvalho
;Motivo Alteracao: Adicionado [Informacoes_Adicionais] 
;Ultima Alteracao: 07/06/2016 por Kamila Gomes
;Motivo Alteracao: Ajustes gera‡Æo de grade
;Ultima Alteracao: 10/06/2016 por Bruno Carvalho
;Motivo Alteracao: Ajustes no Form da Localiza‡Æo "F6"
;Ultima Alteracao: 14/06/2016 por Bruno Carvalho
;Motivo Alteracao: Ajustes Editar() p/ Opcao="LOCAL"
;Ultima Alteracao: 17/06/2016 por Bruno Carvalho
;Motivo Alteracao: Ajustes ao chamar a Observa‡Æo quando cursor estiver em COMPLEMENTOS 
;Ultima Alteracao: 20/06/2016 por Bruno Carvalho
;Motivo Alteracao: Ajustes no CST quando "1", "2', "6" ou "7" e PAIS = "BRASIL"
;Ultima Alteracao: 27/06/2013 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes Titulo Informa‡äes Adicionais
;Ultima Alteracao: 01/07/2013 por Kamila Gomes
;Motivo Alteracao: Ajustes Popup para gerar grade/cor, moveto "Itens" 
;Ultima Alteracao: 21/07/2016 por Bruno Carvalho
;Motivo Alteracao: Adicionado LOCALIZACAO -> Troca de Dados (Quando ocorrer a necessidade de alterar a localizacao)
;Ultima Alteracao: 02/08/2016 por Bruno Carvalho
;Motivo Alteracao: Ajustes Grade_Cor() p/ quando for gerar semi-acabado #0227# -> "Item_Com"
;Ultima Alteracao: 19/08/2016 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes Rodape Ctrl+Z editar()
;Ultima Alteracao: 01/09/2016 por Kamila Gomes
;Motivo Alteracao: Ajustes REG_ITCOMPLEMENTO na proc Cor()
;Ultima Alteracao: 19/10/2016 por Bruno Carvalho
;Motivo Alteracao: Adicionado aba [Tecido]
;Ultima Alteracao: 03/11/2016 por Bruno Carvalho
;Motivo Alteracao: Ajustes ao Inserir Especial, "Iten_Com" nÆo estava sendo copiada
;Ultima Alteracao: 04/11/2016 por Kamila Gomes
;Motivo Alteracao: Ajustes proc Monta_Array_Grade(), mensagem de grade nÆo definida
;Ultima Alteracao: 30/11/2016 por Bruno Carvalho
;Motivo Alteracao: Ativado PARAM_ABA_TECIDO p/ "0388" e "0390" 
;Ultima Alteracao: 03/12/2016 por Bruno Carvalho
;Motivo Alteracao: Ajustes Cor() #0390# -> Ao gerar Cor, o c¢digo dever  ser sequencial
;Ultima Alteracao: 16/12/2016 por Bruno Carvalho
;Motivo Alteracao: Alterado o processo de ajustes de Cor() para #0390# -> Mesmo processo de #0388# 
;Ultima Alteracao: 23/12/2016 por Bruno Carvalho
;Motivo Alteracao: Adicionado [Simbologia_Impressao] no "Iten_Tec"
;Ultima Alteracao: 29/12/2016 por Rafael Matos
;Motivo Alteracao: Ajustes MensagemCheckBoxes()
;Ultima Alteracao: 26/01/2017 por Heverton Amaral
;Motivo Alteracao: Adicionado Sys_Codigo 0391 PARAM_ABA_TECIDO 
;Ultima Alteracao: 07/02/2017 por Bruno Carvalho
;Motivo Alteracao: Adicionado bloqueio de exlusÆo de itens se modo ‚ edi‡Æo na proc EXCLUSAO()
;Ultima Alteracao: 16/02/2017 por Bruno Carvalho
;Motivo Alteracao: #0185# Se [Fracionado]="", por padrÆo preencher com "S" 
;Ultima Alteracao: 07/03/2017 por Bruno Carvalho
;Motivo Alteracao: Liberado PARAM_ABA_TECIDO para todos que tenham SYS_CLIENTE_CONFEC 
;Ultima Alteracao: 13/03/2017 por Bruno Carvalho
;Motivo Alteracao: Adicionado gera‡Æo de itens "LD" com o in¡cio "04" para cliente #0227# 
;Ultima Alteracao: 20/03/2017 por Bruno Carvalho
;Motivo Alteracao: Ativado PARAM_ABA_TECIDO p/ "0382"
;Ultima Alteracao: 29/03/2017 por Bruno Carvalho
;Motivo Alteracao: Alterado Tipo/Codigo de Barras quando for "LD" para ser COD128
;Ultima Alteracao: 07/04/2017 por Bruno Carvalho
;Motivo Alteracao: PermissÆo da aba TECIDO para #0396#
;Ultima Alteracao: 03/05/2017 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes Iten_Cor permitir sequencia >99 no nÆo for confeccao
;Ultima Alteracao: 04/05/2017 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes clientes usam aba tecidos                                
;Ultima Alteracao: 17/05/2017 por Bruno Carvalho
;Motivo Alteracao: PermissÆo da aba TECIDO para #0318#
;Ultima Alteracao: 18/05/2017 por Bruno Carvalho
;Motivo Alteracao: Adicionado processo para inserir c¢digo de barras "ALT+F"
;Ultima Alteracao: 30/05/2017 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes CORP() criar itens com cor para produto acabado  
;Ultima Alteracao: 17/05/2017 por Bruno Carvalho
;Motivo Alteracao: PermissÆo da aba TECIDO para #0397#        
;Ultima Alteracao: 04/07/2017 por Bruno Carvalho
;Motivo Alteracao: Adicionado Tabela de Pre‡o e ajustes na proc IBPT() [Iten_Com->EX_TIPI] -> Ausˆncia do Iten_Com
;Ultima Alteracao: 05/07/2017 por Bruno Carvalho
;Motivo Alteracao: Adicionado vari vel de control p/ acionar a tabela de pre‡o por item -> PARAM_ACESSA_TBPRECO
;Ultima Alteracao: 12/07/2017 por Bruno Carvalho
;Motivo Alteracao: Adicionado [Referencia] atualizar dados no FORMULAC -> Atualiza()
;Ultima Alteracao: 14/07/2017 por Nikolas
;Motivo Alteracao: Correcao erro de portugues (Adiicionais)
;Ultima Alteracao: 09/08/2017 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes CORM() criar itens com cor para materia prima    
;Ultima Alteracao: 04/09/2017 por Bruno Carvalho
;Motivo Alteracao: Ajustes ao executar "ADD_PRECO" 
;Ultima Alteracao: 06/09/2017 por Bruno Carvalho
;Motivo Alteracao: Adicionado PARAM_ABA_TECIDO #0361# 
;Ultima Alteracao: 15/09/2017 por Bruno Carvalho
;Motivo Alteracao: Adicionado Escala Relevante, CNPJ do Fabricante e C¢digo de Benf¡cio Fiscal
;Ultima Alteracao: 15/09/2017 por Bruno Carvalho
;Motivo Alteracao: Ajustes ao chamar fun‡Æo que ‚ espec¡fica da tabela de itens estando na aba tecidos ou complementos
;Ultima Alteracao: 21/10/2017 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes Pega_AliqIBPT             
;Ultima Alteracao: 26/10/2017 por Bruno Carvalho
;Motivo Alteracao: Adicionado "Usuarios" na proc AbreTabelas() -> saindo da rotina de itens se tabela nÆo ‚ inicializada
;Ultima Alteracao: 27/11/2017 por Bruno Carvalho
;Motivo Alteracao: PermissÆo da aba TECIDO para #0370#
;Ultima Alteracao: 27/11/2017 por Bruno Carvalho
;Motivo Alteracao: Ao add item, ‚ mantido a [Producao Esgotada] caso o item j  exista -> Cria_Grade()
;Ultima Alteracao: 06/02/2018 por Bruno Carvalho
;Motivo Alteracao: Adicionado 4 campos relacionados ao [Codigo Nacional do Produto] na tabela Iten_Com 
;Ultima Alteracao: 26/02/2018 por Nikolas
;Motivo Alteracao: Adicionado 0408 (Real Textil) para acessar aba tecidos
;Ultima Alteracao: 02/03/2018 por Bruno Carvalho
;Motivo Alteracao: Ajustes para verificar se a cor j  foi digitada -> Digita_Cor()
;Ultima Alteracao: 05/03/2018 por Bruno Carvalho
;Motivo Alteracao: Adicionado "Iten_Eco"
;Ultima Alteracao: 12/03/2018 por Bruno Carvalho
;Motivo Alteracao: Verifica‡Æo com IsAssigned se existe valor p/ "Registro_Complemento" e/ou "Registro_eCommerce" 
;Ultima Alteracao: 13/03/2018 por Kamila Gomes
;Motivo Alteracao: Carregar Imagens do produto -> E-Commerce Divina Panela
;Ultima Alteracao: 15/03/2018 por Bruno Carvalho
;Motivo Alteracao: Add vari vel controle de caminho da imagem ECOMMERC_CAMINHO e ajustes p/ inser‡Æo automatica no item #0294#
;Ultima Alteracao: 20/03/2018 por Bruno Carvalho
;Motivo Alteracao: Ajuste ECOMMERC_CAMINHO
;Ultima Alteracao: 27/03/2018 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes TrocaDados()              
;Ultima Alteracao: 28/03/2018 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes Substitui()              
;Ultima Alteracao: 05/04/2018 por Anivel Augusto Rodrigues
;Motivo Alteracao: Adicionado Form Classifi‡Æo II 
;Ultima Alteracao: 23/04/2018 por Bruno Carvalho
;Motivo Alteracao: Add proc Seta_Aba_Tecidos() e movido todos os SYS_CODIGO_CLIENTE que utilizam a aba tecidos p/ a proc
;                  PermissÆo da aba TECIDO para #0392# 
;Ultima Alteracao: 02/05/2018 por Bruno Carvalho
;Motivo Alteracao: Adicionado 0374 (Real Textil) para acessar aba tecidos
;Ultima Alteracao: 07/06/2018 por Bruno Carvalho
;Motivo Alteracao: Adicionado/ajustado Grava_LogEx() p/ gravar log de erros ao excluir registros
;Ultima Alteracao: 22/06/2018 por Nikolas
;Motivo Alteracao: PermissÆo da aba TECIDO para #0404# Almeida Tecidos
;Ultima Alteracao: 23/06/2018 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes mensagem qtde fracionada
;Ultima Alteracao: 28/06/2018 por Bruno Carvalho
;Motivo Alteracao: Adicionado Ajusta_Controle() p/ ajustar [Data da Manutencao] apenas quando ocorrer altera‡Æo    
;Ultima Alteracao: 28/06/2018 por Bruno Carvalho
;Motivo Alteracao: Adicionado no form iten_com a variavel IC_UNIDADE p/ mostrar a [Unidade Interna] na frente do fracionado
;Ultima Alteracao: 04/07/2018 por Bruno Carvalho
;Motivo Alteracao: Ajustes ao chamar a fun‡Æo CODIGO DE BARRAS em qualquer ABA do cadastro dos itens
;Ultima Alteracao: 17/07/2018 por Bruno Carvalho
;Motivo Alteracao: Adicionado [Largura Util] no "Iten_Tec" *Sol.: 366674 
;Ultima Alteracao: 18/07/2018 por Bruno Carvalho
;Motivo Alteracao: PermissÆo da aba TECIDO para #0419#
;Ultima Alteracao: 08/07/2018 por Bruno Carvalho
;Motivo Alteracao: Ajustes ao chamar as fun‡äes independete da ABA que estiver posicionado
;Ultima Alteracao: 23/04/2019 por Bruno Carvalho
;Motivo Alteracao: Ativado PARAM_ABA_TECIDO p/ "0429"
;Ultima Alteracao: 30/04/2019 por Bruno Carvalho
;Motivo Alteracao: Removido do FORM "Itens" o Codigo da Simbologia 
;Ultima Alteracao: 29/05/2019 por Bruno Carvalho
;Motivo Alteracao: Adicionado "Capacidade" e "Dimensäes" na Iten_Com e ajustado no layout do FORM
;Ultima Alteracao: 05/06/2019 por Bruno Carvalho
;Motivo Alteracao: Ativado PARAM_ABA_TECIDO p/ "0418"
;Ultima Alteracao: 12/06/2019 por Bruno Carvalho
;Motivo Alteracao: Ajustes Editar() -> Onde o campo livre de digita‡Æo est  sendo marcado com o ("Editar_Campo"), os demais campos com o ("Paginar")
;Ultima Alteracao: 14/06/2019 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ativado PARAM_ABA_ECOMMERC p/ "0232"
;Ultima Alteracao: 14/06/2019 por Bruno Carvalho
;Motivo Alteracao: Adicionado proc ITEM_Localizacao() e ajustes p/ "Iten_Loc" #0388#  

;*******************************************************************************
;* 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 CtrlPgDn  
  Endif

  SetaCorRegistro("Editar")
  While True

  MSGCAMPO=""
  TECLA=""
  AguardaTeclasPadrao()                            
                                                         
      If Retval=-33
         Then
           msgcampo=""
           echo Normal
           echo Off
         
           ShowPopup " Fun‡”es " CENTERED
            "Editar Classi~f~ica‡„o"       : " Altera‡„o Descri‡„o\\Unidades\\Tipo Item\\Familia\\Grupo\\Cor       " : "CLASSIFICACAO",
            "Editar Classifica‡„o II"      : " Altera‡„o Descri‡„o\\Unidades\\Tipo Item\\Familia\\Grupo\\Cor\\Departamento" : "CLASSIFICACAO2",
            "Editar C.~B~arras/Referˆncia" : " 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",
            Separator,
            "~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="CLASSIFICACAO2" OR 
              MenuVar="CDBARRAS"       OR 
              MenuVar ="LOCAL"
             Then Del
                  CHAVE=0
                  Editar(MenuVar)
                  CHAVE=5
                  Return
           EndIf
           If MenuVar="CDLIVRE"
              Then Retval="F4"
           EndIf
           If MenuVar="IESPECIAL"
              Then If ITENS_EDIT
                      Then FastMsg("Inclus„o n„o permitida !")
                           Loop
                      Else Del
                           INICIO_INSERT  =True
                           INSERT_ESPECIAL=True
                           CHAVE=4
                           Return
                   EndIf
           EndIf
           If MenuVar="TROCA"
             Then If ITENS_EDIT
                     Then FastMsg("Troca de Dados n„o permitida !")
                          Loop
                     Else If Checa_Supervisor()
                             Then Del
                                  TrocaDados()
                                  CHAVE=5
                                  Return
                          EndIf
                 EndIf
           EndIf
      EndIf

      If Retval="F4"
             Then If ITENS_EDIT
                     Then FastMsg("Inclus„o n„o permitida !")
                          Loop
                     Else 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)
            
                                     msgcampo=""
                                     echo Normal
                                     echo Off
                                     
                                     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
      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
                    CopyToArray ARRAY_ITEM
                    CODIGO=[Codigo do Item]
                    CHAVE=0
                    Controla_EdicaoC()
               Else If EXCLUIR="S"
                       Then If ITENS_EDIT
                               Then FastMsg("Exclus„o n„o permitida !")
                                    UnLockRecord
                               Else  EXCLUSAO(True)
                            EndIf
                       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 ITENS_EDIT
              Then FastMsg("Inclus„o n„o permitida !")
                   Loop
           EndIf
           If IsBlank([])
               Then If IsBlank(SEQ)
                       Then SEQ="1"
                       Else SEQ=StrVal(NumVal(SEQ)+1)
                    EndIf
                    []=SEQ
            EndIf
            []=ALINH()
            CODIGO=[]
            ;----- Verificar se o item j  foi cadastrado alguma vez e est  na tabela de exclusÆo -----
            If IsTable("\\Sistemas\\Estoque\\Iten_Exc")
               Then GetRecord "\\Sistemas\\Estoque\\Iten_Exc" CODIGO To ITEN_EXC
                    If RetVal
                       Then Mensagem("Item j  cadastrado e deletado,//Verificar com o suporte a possibilidade de restaurar o item !") 
                            Release Vars ITEN_EXC
                            Loop
                       Else Release Vars ITEN_EXC
                    EndIf
            EndIf        
            Del
            If OP_FORM="4"
               Then PickForm "F"
            Endif
            Locate CODIGO
            If Retval
               Then CHAVE=0
               Else CHAVE=1
                    End
                    CtrlPgDn
                    [Codigo do Item]=CODIGO                 
            EndIf
            If IsLockRecord()
               Then If OP_FORM="4"
                       Then PickForm "4"
                    Endif
                    QuitLoop
            EndIf
            ;---- Caminho da Imagem do Produto ---------------------------------
            If PARAM_ABA_eCOMMERCE And ECOMMERC_CAMINHO<>"" And IsTable("Iten_eco") 
               Then Moveto "Iten_eco" 
                    If [Link_Imagem]=""
                       Then [Codigo do Item] = CODIGO
                            [Link_Imagem   ] = ECOMMERC_CAMINHO+StrVal(CODIGO)+"\\"
                    EndIf
                    Moveto "Itens"
            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","ESC"

     If RetVal = "ESC"
        Then Mensagem("Para finalizar utilize a tecla F3!")
     EndIf

     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
             GetRecord "\\Sistemas\\Estoque\\Iten_Com" Registro["Codigo do Item"] To Registro_Complemento
             If Not RetVal
                Then Release Vars Registro_Complemento
             EndIf
             GetRecord "\\Sistemas\\Estoque\\Iten_Eco" Registro["Codigo do Item"] To Registro_eCommerce
             If Not RetVal
                Then Release Vars Registro_eCommerce
             EndIf
             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
                          CtrlPgDn
                          [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 Localizar Codigo de Barras J  Existente                         *
;*******************************************************************************
Proc Localiza_CdBar(TIPO)
Private TIPO, COD_ANT, COD_IT_CB,COD_LOC, Result

NAO_INCLUI_CB=False
Result = True

If IsBlank([Tipo Codigo_Barras]) Or IsBlank([Codigo de Barras])
   Then Return True
EndIf              
                         
Switch
  Case TIPO="ATUALIZA"  : [Tipo Codigo_Barras] = TIP_COD
                          [Codigo de Barras  ] = COD_BAR
  Case TIPO="VERIFICAR" : COD_LOC=[Codigo de Barras]
                          [Codigo de Barras]=""
                          UnLockRecord
                          Do_It!
                          COD_IT_CB=""
                          COD_ANT=[Codigo do Item] 
                          
                          Moveto [Codigo de Barras]
                          Locate COD_LOC
                          If RetVal And [Codigo do Item]<>COD_ANT
                             Then COD_IT_CB=[Codigo do Item]
                                  NAO_INCLUI_CB=True
                          EndIF                     
                          
                          Moveto [Codigo do Item]
                          Locate COD_ANT
                          
                          CoeditKey
                          UnLockRecord
                          
                          If NAO_INCLUI_CB
                             Then Moveto [Codigo de Barras]
                                  If COD_BAR=""
                                     Then [Codigo de Barras  ]=""
                                     Else [Tipo Codigo_Barras]=TIP_COD
                                          [Codigo de Barras  ]=COD_BAR
                                  EndIf
                             Else [Codigo de Barras]=COD_LOC          
                          EndIf        
                          
                          If NAO_INCLUI_CB
                             Then Mensagem("C¢digo de Barras j  existente! //C¢digo do Item "+
                                          COD_IT_CB+" est  utilizando este c¢digo de barras!")
                                          Moveto [Codigo de Barras]
                                          Result = False
                          EndIf
                          
                          If Not NAO_INCLUI_CB
                             Then If Not IsAssigned(Opcao) Then Opcao="" EndIf
                                  If Checa_CdBarras("Codigo")
                                     Then If Opcao="CDBARRAS"
                                             Then Moveto [Referencia]
                                             Else Moveto [Inativo]
                                          EndIf
                                     Else If Opcao="CDBARRAS" 
                                             Then Moveto [Tipo Codigo_Barras]
                                             Else Moveto [Codigo de Barras]
                                          EndIf
                                          Result = False
                                  EndIf        
                          EndIf        
                          Release Vars COD_ANT, COD_IT_CB, COD_LOC
    EndSwitch
Return Result

EndProc ;Localiza_CdBar() 

;*******************************************************************************
;* Rotina Mensagem Teclas Padrao                                               *
;*******************************************************************************
Proc MsgTeclasPadrao()
MSG=    "    Esc= Voltar Menu                      //"
MSG=MSG+"  Alt+F= Fun‡”es                          //"
MSG=MSG+"     Ctrl+"+Chr(26)+"= Avan‡ar p gina "+Chr(16)+">                   //"
MSG=MSG+"     Ctrl+"+Chr(27)+"= Voltar p gina  <"+Chr(17)+"                   //"
MSG=MSG+"  Page Down= Finalizar      ["+Chr(16)+"]   *Confirma/Gravar//"
MSG=MSG+"  Ctrl+F1= Ajuda/Teclas   [?]                 "
MsgHelp("Teclas/Fun‡”es",MSG)
Endproc

;*******************************************************************************
;* Rotina p/ Controle da Tela de Complemento                                   *
;*******************************************************************************
Proc Tela_Complemento(PARAM)
Private PARAM

Switch  
  Case PARAM="Avancar" : SetaCorRegistro("Padrao")
                         Moveto "Iten_com"
                         SetaCorRegistro("Editar")
  Case PARAM="Voltar"  : SetaCorRegistro("Padrao")
                         Moveto "Itens"
                         SetaCorRegistro("Editar")
Endswitch  

EndProc ;Tela_Complemento()        

;*******************************************************************************
;* Rotina p/ Controle da Tela de Complemento                                   *
;*******************************************************************************
Proc Tela_eCommerce(PARAM)
Private PARAM

Switch  
  Case PARAM="Avancar" : SetaCorRegistro("Padrao")
                         Moveto "Iten_Eco"
                         SetaCorRegistro("Editar")
  Case PARAM="Voltar"  : SetaCorRegistro("Padrao")
                         Moveto "Itens"
                         SetaCorRegistro("Editar")
Endswitch  

EndProc ;Tela_eCommerce()

;*******************************************************************************
;* Rotina p/ Controle da Tela de Complemento                                   *
;*******************************************************************************
Proc Tela_Tecido(PARAM)
Private PARAM

Switch  
  Case PARAM="Avancar" : SetaCorRegistro("Padrao")
                         Moveto "Iten_tec"
                         SetaCorRegistro("Editar")
  Case PARAM="Voltar"  : SetaCorRegistro("Padrao")
                         Moveto "Itens"
                         SetaCorRegistro("Editar")
Endswitch  

EndProc ;Tela_Tecido()

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

;Campo [MVA_1] est  sendo utilizando para controle da aba TECIDO
;Campo [MVA_2] est  sendo utilizando para controle da aba eCommece

If TELA <> "TELA_COMP" And TELA <> "TELA_TECIDO" And TELA <> "TELA_ECO"
   Then If CHAVE=0 
           Then CopyToArray DIGITA_ITEM  
        EndIf
        
        TIP_COD   =[Tipo Codigo_Barras]
        COD_BAR   =[Codigo de Barras]
        CST_Pis   =[PIS_CST]
        ALQ_Pis   =[PIS_Aliquota]
        CST_Cofins=[COFINS_CST]
        ALQ_Cofins=[COFINS_Aliquota]
        NCM_ant   =[NCM]
EndIf

If CHAVE=0 
   Then IC_UNIDADE=[Itens->Unidade Interna]
EndIf   

If Tecla_Funcao=""
   Then Moveto Field CAMPO
   Else Moveto [Tipo do Item]
        Verifica_Tela(Field())
EndIf   

SpeedBar "~Fun‡”es~"      :-33,
         Chr(060)+Chr(17) :-115,
         Chr(16)+Chr(062) :-116,
         "~?~"            :-94,
         "["+Chr(16)+"]"  :"PGDN"

While True
  TECLA=" PgDn=Finalizar  "

  MSGCAMPO=Field()
  If Field()="Inativo"
     Then STATUS_INATIVO=[Inativo]
  EndIf
                         
  Switch
    Case Field()="NCM"                       : MSGCAMPO="Codifica‡„o da nomenclatura comum do mercosul"
    Case Field()="CEST"                      : MSGCAMPO="Codigo Especificador da Substitui‡„o Tributaria"
    Case Field()="Codigo Enq_IPI"            : MSGCAMPO="Codigo Enquadramento do IPI"
    Case Field()="ANP_Codigo_Combustivel"    : MSGCAMPO="Produto da ANP (Combust¡veis e Lubrificantes)"
    Case Field()="ANP_UF_Consumo"            : MSGCAMPO="UF de Consumo - ANP (Combust¡veis e Lubrificantes)"
    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 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 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, Otimo, Regular, Pessimo"
    Case Field()="Inativo"                   : MSGCAMPO="Sim, N„o"
    Case Field()="Situacao"                  : MSGCAMPO="L=Em Linha, F=Fora de Linha"
    Case Field()="Fracionado"                : MSGCAMPO="A quantidade pode ser fracionada? 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 Grupo de Produtos c/ %MVA p/ calc Subst.Tribut ria"
    Case Field()="Propriedade_Terceiro"      : MSGCAMPO="Propriedade de Terceiro? S/N [Informe a Marca p/ o Terceiro]"
    Case Field()="Edita Descricao do Item"   : MSGCAMPO="Editar descri‡„o do item no pedido/NF/F¢rmula? (S/N)"

    Case Field()="IndEscala"                 : MSGCAMPO="Escala Relevante? Sim ou N„o"
    Case Field()="CNPJFab"                   : MSGCAMPO="CNPJ do fabricante deste item"
    Case Field()="CBenef"                    : MSGCAMPO="C¢digo de Benef¡cio Fiscal utilizado pela UF aplicado no item"

    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()="Informacoes_Adicionais"    : MSGCAMPO="Informa‡”es Adicionais"

    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"
    Case Field()="FCI"                       : MSGCAMPO="C¢digo (GUID) da Ficha de Conte£do de Importa‡Æo"
    
    Case Field()="CNP_SEGMENTO"              : MSGCAMPO="Cadastro nacional de produto [GTIN] SEGMENTO"
    Case Field()="CNP_FAMILIA"               : MSGCAMPO="Cadastro nacional de produto [GTIN] FAMILIA"
    Case Field()="CNP_CLASSE"                : MSGCAMPO="Cadastro nacional de produto [GTIN] CLASSE"
    Case Field()="CNP_SUBCLASSE"             : MSGCAMPO="Cadastro nacional de produto [GTIN] SUBCLASSE"
    
    Case Field()="Capacidade"                : MSGCAMPO="Capacidade do Item"
    Case Field()="Dimensoes"                 : MSGCAMPO="Dimensäes do Item"
           
    Case Field()="Flag1"                     : MSGCAMPO="IR PARA [COMPLEMENTO]"
    Case Field()="Flag2"                     : MSGCAMPO="IR PARA [FATURAMENTO]"
    Case Field()="Flag3"                     : MSGCAMPO="IR PARA [TRIBUTOS PADRAO PARA VENDA]"
    Case Field()="Flag"                      : If PARAM_ABA_eCOMMERCE
                                                  Then MSGCAMPO="IR PARA [E-COMMERCE]"
                                                  Else If PARAM_ABA_TECIDO
                                                          Then MSGCAMPO="IR PARA [TECIDO]"
                                                          Else MSGCAMPO="IR PARA [CLASSIFICACAO]"
                                                       EndIf   
                                               EndIf
    Case Field()="MVA_2"                     : If PARAM_ABA_TECIDO
                                                  Then MSGCAMPO="IR PARA [TECIDO]"
                                                  Else MSGCAMPO="IR PARA [CLASSIFICACAO]"
                                               EndIf        
    Case Field()="Artigo"                    : MSGCAMPO="Artigo  [F8]=Codigo do Item"
    Case Field()="Composicao"                : MSGCAMPO="Composi‡„o"
    Case Field()="Peca"                      : MSGCAMPO="Pe‡a"
    Case Field()="Largura"                   : MSGCAMPO="Largura"
    Case Field()="Largura Util"              : MSGCAMPO="Largura Util"
    Case Field()="Gramatura"                 : MSGCAMPO="Gramatura"
    Case Field()="Rendimento"                : MSGCAMPO="Rendimento"
    Case Field()="Simbologia_Impressao"      : MSGCAMPO="Informe o C¢digo da Simbologia:  [###-###-###-###-###-###-###-###]"                                           
    Case Field()="MVA_1"                     : MSGCAMPO="IR PARA [CLASSIFICACAO]"
  EndSwitch
  
  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_Localizacao"     Or
     Field()="Codigo do Departamento" Or
     Field()="Codigo da Cor_Tecido"   Or
     Field()="Tipo Tributacao"        Or
     Field()="Unidade Interna"        Or
     Field()="Unidade Entrada"        Or
     Field()="Unidade Embalagem"      Or
     Field()="Codigo da Grade"        Or
     Field()="NCM"                    Or
     Field()="CEST"                   Or
     Field()="Codigo Enq_IPI"         Or
     Field()="ANP_Codigo_Combustivel" Or
     Field()="ANP_UF_Consumo"         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 MSGCAMPO=MSGCAMPO+", [F1]Consultar tabela"
  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  

  Prompt TECLA
  Wait Field
  Until "ESC","ENTER","PGDN","INS",
        -94,-33,-115,-116,-133,-134,-66,
        "F1","F2","F3","F4","F5","F6","F7","F8","F9","F10","F11","F12"

    If Retval=-33
      Then If Field()="Flag" Or Field()="Flag1" Or Field()="Flag2" Or Field()="Flag3" Or Field()="MVA_1" Or Field()="MVA_2"
              Then Loop
           EndIf
           
           Tab_Ant = Table()
           Fie_Ant = Field()
           msgcampo=""
           echo Normal
           echo Off
             
           ShowPopup " Fun‡”es " CENTERED
            "[F5] ~O~bserva‡„o              " : " Observa‡äes gerais                               "  : "F5",
            "[F6] ~I~nforma‡”es Adicionais  " : " Informa‡äes Adicionais NF-e                      "  : "F6",
            Separator,
            "~C~arregar Imagem              " : " Carrega a Imagem do Produto                      "  : "IMAGEM",
            "~C~opiar Registro              " : " Copiar do Registro Anterior                      "  : "COPIAR",
            "Co~r~es                        " : " Rela‡„o de Cores                                 "  : "CORES",
            "C¢digo de ~B~arras             " : " Adicionar C¢digo de Barras                       "  : "ADD_CODBAR",
            "~L~ocaliza‡Æo                  " : " Adicionar Localiza‡Æo                            "  : "ADD_LOCALIZACAO",
            "~T~abela de Pre‡o              " : " Adicionar Pre‡o                                  "  : "ADD_PRECO",
            "Carga tribut ria               " : " Consultar carga tribut ria IBPT                  "  : "IBPT",
            Separator,
            "Gerar Grade Itens/Tamanho/Cor [P/S] Produto Acabado/Semi-Acabado" : " Gera Itens com Grade/Tamanho/Cor - Tipo Acabado e Semi-Acabado"  : "GRADE/COR",
            "Gerar Grade Itens/Tamanho/Cor [M]   Materia Prima               " : " Gera Itens com Grade/Tamanho/Cor - Tipo Materia Prima         "  : "GRADE/CORM",
            "Gerar Grade Itens/Tamanho/Cor [T]   Terceiro                    " : " Gera Itens com Grade/Tamanho/Cor - Tipo Iten de Terceiros     "  : "GRADE/CORT",
            Separator,
            "Gerar Grade Itens/Cor         [T]   Terceiros       " : " Gera Itens com Cor - Tipo Terceiros        "  : "CORT",
            "Gerar Grade Itens/Cor         [P]   Produto Acabado " : " Gera Itens com Cor - Tipo Produto Acabado  "  : "CORP",
            "Gerar Grade Itens/Cor         [M]   Materia Prima   " : " Gera Itens com Cor - Tipo Materia Prima    "  : "CORM",
            Separator,
            "~C~ancelar                " : " Cancelar a Opera‡„o                              "  : "CANCELAR"
           EndMenu
           To MenuVar
           Echo Off
    
           If MenuVar="CANCELAR" or MenuVar="Esc"
               Then Loop
           EndIf

           If MenuVar="COPIAR" 
              then if CHAVE=1 And INSERT_ESPECIAL
                      then ; ok fun‡Æo habilitada
                      else 
                           fastmsg("Fun‡Æo nÆo dispon¡vel !")
                           loop
                   endif  
           endif 
                      
           If MenuVar="IMAGEM"
              Then If Not PARAM_ABA_eCOMMERCE
                      Then Mensagem("Acesso ao carregamento de imagem bloqueado.//"+
                                    "Para maiores informa‡”es, verificar com o suporte Vise!")
                           Loop
                   EndIf    
                   ANT_TAB   = Table()
                   ANT_FIELD = Field()
                   Moveto "Iten_Eco"
                   If [Iten_Eco->Link_Imagem] = ""
                     Then MSG = "Caminho da imagem ‚ inv lido !"
                     Else MSG = ""
                          IMAGEPATH = [Iten_Eco->Link_Imagem] ;;"c:\\Imagens\\ECOMMERC\\"+[Itens->Codigo do Item]+"\\"
                          ExecVise("EXE c:\\vise\\ImageGlass\\ImageGlass.exe "+IMAGEPATH)   
                  EndIf
                  Moveto ANT_TAB
                  Moveto Field ANT_FIELD
                  If MSG <> ""  
                     Then Mensagem(MSG)
                          Loop 
                  EndIf
           EndIf
           If MenuVar="CORES"
              Then Moveto "Itens"
                   If [Tipo do Item]<>"D"
                      Then Mensagem("Tipo do item inv lido para esta Fun‡„o !")
                           Moveto Tab_Ant   Moveto Field Fie_Ant  Release Vars Tab_Ant,Fie_Ant
                           Loop
                   EndIf
                   Cores()
                   Moveto Tab_Ant   Moveto Field Fie_Ant  Release Vars Tab_Ant,Fie_Ant
                   Loop
           EndIf        
           If MenuVar="GRADE/COR"
              Then Moveto "Itens"
                   If [Tipo do Item]<>"D"
                      Then Mensagem("Tipo do item inv lido para esta Fun‡„o !")
                           Moveto Tab_Ant   Moveto Field Fie_Ant  Release Vars Tab_Ant,Fie_Ant
                           Loop
                   EndIf
                   Release Vars GERA_ITEM_LD
                   If Grade_Cor("P")
                      Then CHAVE=9
                           Return
                      Else Moveto Tab_Ant   Moveto Field Fie_Ant  Release Vars Tab_Ant,Fie_Ant
                           Loop
                   EndIf
           EndIf        
           If MenuVar="GRADE/CORM"
              Then Moveto "Itens"
                   If [Tipo do Item]<>"D"
                      Then Mensagem("Tipo do item inv lido para esta Fun‡„o !")
                           Moveto Tab_Ant   Moveto Field Fie_Ant  Release Vars Tab_Ant,Fie_Ant
                           Loop
                   EndIf
                   If Grade_Cor("M")
                      Then CHAVE=9
                           Return
                      Else Moveto Tab_Ant   Moveto Field Fie_Ant  Release Vars Tab_Ant,Fie_Ant
                           Loop
                   EndIf
           EndIf  
           If MenuVar="GRADE/CORT"
              Then Moveto "Itens"
                   If [Tipo do Item]<>"D"
                      Then Mensagem("Tipo do item inv lido para esta Fun‡„o !")
                           Moveto Tab_Ant   Moveto Field Fie_Ant  Release Vars Tab_Ant,Fie_Ant
                           Loop
                   EndIf
                   If Grade_Cor("T")
                      Then CHAVE=9
                           Return
                      Else Moveto Tab_Ant   Moveto Field Fie_Ant  Release Vars Tab_Ant,Fie_Ant
                           Loop
                   EndIf
           EndIf        
           If MenuVar="CORT"
              Then Moveto "Itens"
                   If [Tipo do Item]<>"D"
                      Then Mensagem("Tipo do item inv lido para esta Fun‡„o !")
                           Moveto Tab_Ant   Moveto Field Fie_Ant  Release Vars Tab_Ant,Fie_Ant
                           Loop
                   EndIf
                   If Cor("T")
                      Then CHAVE=9
                           Return
                      Else Moveto Tab_Ant   Moveto Field Fie_Ant  Release Vars Tab_Ant,Fie_Ant
                           Loop
                   EndIf
           EndIf
           If MenuVar="CORP"
              Then Moveto "Itens"
                   If [Tipo do Item]<>"D"
                      Then Mensagem("Tipo do item inv lido para esta Fun‡„o !")
                           Moveto Tab_Ant   Moveto Field Fie_Ant  Release Vars Tab_Ant,Fie_Ant
                           Loop
                   EndIf
                   If Cor("P")
                      Then CHAVE=9
                           Return
                      Else Moveto Tab_Ant   Moveto Field Fie_Ant  Release Vars Tab_Ant,Fie_Ant
                           Loop
                   EndIf
           EndIf        
           If MenuVar="CORM"
              Then Moveto "Itens"
                   If [Tipo do Item]<>"D"
                      Then Mensagem("Tipo do item inv lido para esta Fun‡„o !")
                           Moveto Tab_Ant   Moveto Field Fie_Ant  Release Vars Tab_Ant,Fie_Ant
                           Loop
                   EndIf
                   If Cor("M")
                      Then CHAVE=9
                           Return
                      Else Moveto Tab_Ant   Moveto Field Fie_Ant  Release Vars Tab_Ant,Fie_Ant
                           Loop
                   EndIf
           EndIf        
                          
           If MenuVar="COPIAR"
             Then Moveto "Itens"
                  Registro["Codigo do Item"]=CODIGO
                  CopyfromDynarray Registro
                  If IsAssigned(Registro_Complemento)
                     Then Registro_Complemento["Codigo do Item"]=CODIGO
                          Moveto "Iten_Com"
                          CopyFromArray Registro_Complemento
                  EndIf   
                  If IsAssigned(Registro_eCommerce)
                     Then Registro_eCommerce["Codigo do Item"]=CODIGO
                          Moveto "Iten_Eco"
                          CopyFromArray Registro_eCommerce
                  EndIf
                  ;---- Complemento dos Itens ----------------------
                  Moveto "Itens"
                  Moveto Tab_Ant   Moveto Field Fie_Ant  Release Vars Tab_Ant,Fie_Ant
                  Loop
             Else RetVal=MenuVar
           EndIf
           
           If MenuVar="ADD_CODBAR"
             Then Moveto "Itens"
                  GetRecord "\\Sistemas\\Estoque\\TpItem" [Itens->Tipo do Item] To REG_TPITEM
                  If RetVal
                     Then If SubStr(REG_TPITEM["Controla Estoque"],1,1)="N" Or [Itens->Tipo do Item]="S"
                             Then FastMsg("Fun‡„o n„o habilitada para este tipo de item!")
                                  Moveto Tab_Ant   Moveto Field Fie_Ant  Release Vars Tab_Ant,Fie_Ant
                                  Loop
                          EndIf   
                  EndIf
                  Play "ADD_CBAR"
                  Moveto Tab_Ant   Moveto Field Fie_Ant  Release Vars Tab_Ant,Fie_Ant
           EndIf 
           
           If MenuVar="ADD_LOCALIZACAO"
             Then Moveto "Itens"
                  If SYS_CODIGO_CLIENTE<>"0388"
                     Then GetRecord "\\Sistemas\\Estoque\\TpItem" [Itens->Tipo do Item] To REG_TPITEM
                          If RetVal
                             Then If SubStr(REG_TPITEM["Controla Estoque"],1,1)="N" Or [Itens->Tipo do Item]="S"
                                     Then FastMsg("Fun‡„o n„o habilitada para este tipo de item!")
                                          Moveto Tab_Ant   Moveto Field Fie_Ant  Release Vars Tab_Ant,Fie_Ant
                                          Loop
                                  EndIf   
                          EndIf
                  EndIf
                  Play "ADD_LOC"
                  Moveto "Itens" Moveto Field Fie_Ant  Release Vars Tab_Ant,Fie_Ant
           EndIf 
           
           If MenuVar="ADD_PRECO"
             Then Moveto "Itens"
                  AUX_TEC_ITEM   = False 
                  AUX_GRADE_ITEM = [Itens->Codigo da Grade]
                  AUX_TIPO_ITEM  = [Itens->Tipo do Item   ]
                  GetRecord "\\Sistemas\\Estoque\\Iten_Tec" [Itens->Codigo do Item] To REG_TECIDO
                  If RetVal
                     Then AUX_TEC_ITEM = True
                  EndIf
                  
                  If Not PARAM_ACESSA_TBPRECO
                     Then If Not Checa_Supervisor()
                             Then FastMsg("Fun‡„o n„o habilitada para este usu rio!")
                                  Moveto Tab_Ant   Moveto Field Fie_Ant  Release Vars Tab_Ant,Fie_Ant
                                  Loop
                          EndIf         
                  EndIf
                  
                  If (AUX_GRADE_ITEM<>"" And AUX_TIPO_ITEM="D") Or
                     (AUX_TEC_ITEM And AUX_GRADE_ITEM="" And AUX_TIPO_ITEM="D") Or
                     AUX_TIPO_ITEM="P" Or AUX_TIPO_ITEM="T"
                     Then ANT_FIELD = Field()
                          Play "ADD_PRIT"
                          Moveto "Itens"         
                          Moveto Tab_Ant   Moveto Field Fie_Ant  Release Vars Tab_Ant,Fie_Ant 
                     Else Moveto Tab_Ant   Moveto Field Fie_Ant  Release Vars Tab_Ant,Fie_Ant
                          FastMsg("Fun‡„o n„o habilitada para este tipo de item!")
                          Loop           
                  EndIf   
           EndIf 
           
           If MenuVar="IBPT"
             Then Moveto "Itens" 
                  IBPT()
                  Moveto Tab_Ant   Moveto Field Fie_Ant  Release Vars Tab_Ant,Fie_Ant
                  Loop
             Else RetVal=MenuVar
           EndIf
    EndIf
      
  Switch
   Case RetVal=-94 : MsgTeclasPadrao()
   Case RetVal=-115 Or RetVal=-116 : 
        If ((Field()<>"Codigo do Item"            And
             Field()<>"Descricao do Item"         And
             Field()<>"Tipo do Item"              And
             Field()<>"Referencia"                And
             Field()<>"Tipo Codigo_Barras"        And
             Field()<>"Codigo de Barras"          And
             Field()<>"Codigo da Grade"           And
             Field()<>"DTamanho"                  And
             Field()<>"Inativo"                   And
             Field()<>"Descricao Complementar")   And
             CHAVE=1)                              Or
             CHAVE=0
             Then CampoAnt=Field()
                  Tecla_Funcao=RetVal
                  Return
       EndIf
       
  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=-66 Or RetVal="F8" : 
       If Field()="Artigo"
          Then []=[Codigo do Item]
       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()="Codigo_Localizacao"     Or  
          Field()="Unidade Interna"        Or
          Field()="Unidade Entrada"        Or
          Field()="Unidade Embalagem"      Or
          Field()="NCM"                    Or
          Field()="CEST"                   Or
          Field()="Codigo Enq_IPI"         Or
          Field()="ANP_Codigo_Combustivel" Or
          Field()="ANP_UF_Consumo"         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","S","")
               If Not IsBlank(TribCST)
                  Then [PIS_CST]=TribCST
               EndIf
       EndIf            
       If Field()="COFINS_CST"
          Then TribCST=Checa_CST("COFINS","S","")
               If Not IsBlank(TribCST)
                  Then [COFINS_CST]=TribCST
               EndIf
       EndIf            
       If Field()="CSOSN"
          Then TribCST=Checa_CSOSN2("","")
               If Not IsBlank(TribCST)
                  Then [CSOSN]=SubStr(TribCST,2,3)
               EndIf
       EndIf            

  Case Retval="FIELDVIEW" or Retval="F35":
       EDITFIELD()
  Case Retval="DEL":
       If CHAVE=0
          Then EXCLUSAO(True)
               DIGITA=False
               QuitLoop
       EndIf      
  Case Retval="F5":
       TAB_ANT   = Table()
       FIELD_ANT = Field()
       Tela_Complemento("Voltar")
       Edita_Memo("Observacao",08,01,15,76,"Observa‡”es")
       Moveto TAB_ANT
       Moveto Field FIELD_ANT
       Release Vars TAB_ANT,FIELD_ANT
  Case Retval="F6":
       TAB_ANT   = Table()
       FIELD_ANT = Field()
       Tela_Complemento("Avancar")
       Edita_Memo("Informacoes_Adicionais",08,01,15,76,"Informa‡”es Adicionais NF-e")
       Moveto TAB_ANT
       Moveto Field FIELD_ANT
       Release Vars TAB_ANT,FIELD_ANT
  Case Retval="PGDN":  
       Tela_Complemento("Voltar")   
       If Valida_Campo("TODAS")
          Then Atualiza()
               Tecla_Funcao=""
               DIGITA=False
               Return
       EndIf
  Case Retval="ESC": 
       Switch
       ;************** CLASSIFICACAO *******************************************
       Case Field()="Tipo do Item": 
            If QuerDesfazer("")
               Then If CHAVE=1
                       Then EXCLUSAO(False)
                       Else If CHAVE=0
                               Then CopyFromArray DIGITA_ITEM
                               Else Undo
                            EndIf   
                            Atualiza()
                    EndIf
                    DIGITA=False
                    Tecla_Funcao=""
                    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 [Descricao do Item]
       Case Field()="Codigo de Barras"       : Moveto [Tipo Codigo_Barras]
       Case Field()="Inativo"                : Moveto [Tipo Codigo_Barras]
       Case Field()="Descricao Complementar" : Moveto [Inativo]                                         
       Case Field()="Codigo da Familia"      : Moveto [Descricao Complementar]
       Case Field()="Codigo do Grupo"        : Moveto [Codigo da Familia]
       Case Field()="Codigo da Marca"        : Moveto [Codigo do Grupo]
       Case Field()="Codigo da Cor_Tecido"   : Moveto [Codigo da Marca]
       Case Field()="Codigo do Departamento" : Moveto [Codigo da Cor_Tecido]
       Case Field()="Codigo_Localizacao"     : Moveto [Codigo do Departamento]
       Case Field()="Propriedade_Terceiro"   : Moveto [Codigo_Localizacao]
       Case Field()="Codigo Fornecedor"      : Moveto [Propriedade_Terceiro]
       Case Field()="Unidade Entrada"        : Moveto [Codigo Fornecedor]
       Case Field()="Unidade Embalagem"      : Moveto [Unidade Entrada]
       Case Field()="Unidade Interna"        : Moveto [Unidade Embalagem]
       Case Field()="Peso Embalagem"         : Moveto [Peso Liquido]
                                               Verifica_Tela(Field())
       
       Case Field()="Fator de Conversao"        : Moveto [Unidade Entrada]
       Case Field()="Fator Conversao Embalagem" : Moveto [Unidade Embalagem]
       Case Field()="Flag1"                     : Moveto [Unidade Interna]
       
       ;************** COMPLEMENTO *********************************************                                         
       Case Field()="Situacao"               : Tela_Complemento("Voltar")
                                               Moveto [Unidade Interna]                                        
                                               Verifica_Tela(Field())
       Case Field()="Vendagem"               : Moveto [Situacao]
       Case Field()="Fracionado"             : Moveto [Vendagem]
       Case Field()="Peso Variavel"          : Moveto [Fracionado]
       Case Field()="Composto"               : Moveto [Peso Variavel]                     
       Case Field()="Producao Esgotada"      : Moveto [Composto]                          
       Case Field()="Edita Descricao do Item": Moveto [Producao Esgotada]
       Case Field()="Capacidade"             : Moveto [Edita Descricao do Item]
       Case Field()="Dimensoes"              : Moveto [Capacidade]
       Case Field()="FCI"                    : Moveto [Dimensoes]
       
       Case Field()="CEST"                   : Moveto [FCI]
       Case Field()="Codigo Concentrador"    : Moveto [CEST]
       Case Field()="ANP_Codigo_Combustivel" : Moveto [Codigo Concentrador]                               
       Case Field()="ANP_UF_Consumo"         : Moveto [ANP_Codigo_Combustivel]            
       Case Field()="Genero"                 : Moveto [ANP_UF_Consumo]                    
       Case Field()="EX_TIPI"                : Moveto [Genero]                            
       Case Field()="Codigo Enq_IPI"         : Moveto [EX_TIPI]
       
       Case Field()="CNP_SEGMENTO"           : Moveto [Codigo Enq_IPI]
       Case Field()="CNP_FAMILIA"            : Moveto [CNP_SEGMENTO]
       Case Field()="CNP_CLASSE"             : Moveto [CNP_FAMILIA]
       Case Field()="CNP_SUBCLASSE"          : Moveto [CNP_CLASSE]
       
       Case Field()="Quantidade Maxima Venda": Moveto [CNP_SUBCLASSE]                    
       Case Field()="Desconto Maximo"        : Moveto [Quantidade Maxima Venda]           
       Case Field()="Indice Preco de Venda"  : Moveto [Desconto Maximo]
       
       Case Field()="Flag2"                  : Tela_Complemento("Avancar")
                                               Moveto [Indice Preco de Venda]                                        
                                               Verifica_Tela(Field())
              
       ;************** FATURAMENTO *********************************************
       Case Field()="Peso Liquido"           : Tela_Complemento("Avancar") 
                                               Moveto [Indice Preco de Venda]
                                               Verifica_Tela(Field())
       Case Field()="Volumes"                : Moveto [Peso Embalagem]
       Case Field()="NCM"                    : Moveto [Volumes]
       Case Field()="Codigo_Servico"         : Moveto [NCM]
       Case Field()="Comissao do Item"       : Moveto [Codigo_Servico]
       Case Field()="Flag3"                  : Moveto [Comissao do Item]
       
       ;************** TRIBUTACAO ********************************************** 
       Case Field()="Tipo Tributacao"        : Moveto [Comissao do Item]
                                               Verifica_Tela(Field()) 
       Case Field()="CSOSN"                  : Moveto [Tipo Tributacao]
       Case Field()="IPI_CST"                : Moveto [CSOSN]
       Case Field()="Tributacao de ISSQN"    : Moveto [IPI_CST]
       Case Field()="PIS_CST"                : 
            If [Tipo do Item]="C"
               Then Moveto [Tributacao de ISSQN]
               Else Moveto [IPI_CST]
            EndIf   
       Case Field()="COFINS_CST"             : Moveto [PIS_CST]
       Case Field()="Codigo MVA"             : Moveto [COFINS_CST]   
       Case Field()="IndEscala"              : Moveto [Codigo MVA]
       Case Field()="CNPJFab"                : Moveto [IndEscala]
       Case Field()="CBenef"                 : If [IndEscala]="N"
                                                  Then Moveto [CNPJFab]
                                                  Else Moveto [IndEscala]
                                               EndIf     
       Case Field()="Flag"                   : Moveto [CBenef]
       
       ;************** eCommerce ***********************************************
       Case Field()="Descricao_Item"         : Tela_eCommerce("Voltar")
                                               Moveto [CBenef]                                        
                                               Verifica_Tela(Field())
       Case Field()="Largura" And Table()="Iten_eco" 
                                             : Moveto [Descricao_Item]
       Case Field()="Altura"                 : Moveto [Largura]
       Case Field()="Comprimento"            : Moveto [Altura]
       Case Field()="Link_Imagem"            : Moveto [Comprimento] 
       Case Field()="MVA_2"                  : Tela_eCommerce("Avancar")
                                               Moveto [Link_Imagem]                                        
                                               Verifica_Tela(Field())
                                               
       ;************** TECIDOS **************************************************
       Case Field()="Artigo"                 : Tela_Tecido("Voltar")
                                               If PARAM_ABA_eCOMMERCE
                                                  Then Moveto [MVA_2]                                        
                                                       Verifica_Tela(Field())
                                                  Else Moveto [CBenef]                                        
                                                       Verifica_Tela(Field())
                                               EndIf   
       Case Field()="Composicao"             : Moveto [Artigo]
       Case Field()="Peca"                   : Moveto [Composicao]
       Case Field()="Largura" And Table()="Iten_tec"             
                                             : Moveto [Peca]
       Case Field()="Largura Util"           : Moveto [Largura]
       Case Field()="Gramatura"              : Moveto [Largura Util]
       Case Field()="Rendimento"             : Moveto [Gramatura]
       Case Field()="Simbologia_Impressao"   : Moveto [Rendimento]
       Case Field()="MVA_1"                  : Tela_Tecido("Avancar")
                                               Moveto [Simbologia_Impressao]                                        
                                               Verifica_Tela(Field())
       OtherWise:
            Left
       EndSwitch
       
  Case Retval="ENTER": 
       If Field()="Descricao do Item"   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 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
       ;************** CLASSIFICACAO ******************************************* 
       Case Field()="Tipo do Item"           :
            If CHAVE=0 
               Then If [Tipo do Item]<>DIGITA_ITEM["Tipo do Item"]
                       Then Atencao("Tipo")
                    EndIf   
            EndIf
            Moveto [Codigo da Grade]
       Case Field()="Codigo da Grade"        :
            If CHAVE=0 
               Then If [Codigo da Grade]<>DIGITA_ITEM["Codigo da Grade"]
                       Then Atencao("Grade")
                    EndIf   
            EndIf       
            Valida_Campo("")
            Moveto [Referencia]
       Case Field()="Tipo_Codificacao"       :
            If Not IsBlank([Codigo da Grade])
               Then Moveto [Referencia]
            EndIf
       Case Field()="Referencia"             : Moveto [Descricao do Item ]
       Case Field()="DTamanho"               : Moveto [Descricao do Item ]
       
       Case Field()="Descricao do Item"      : Moveto [Tipo Codigo_Barras]
       Case Field()="Tipo Codigo_Barras"     :
            If IsBlank([]) 
              Then [Codigo de Barras]=""
                   Moveto [Inativo] 
              Else 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 [Inativo]         
                             Else Moveto [Codigo de Barras]
                          EndIf
                   EndIf       
            EndIf                 
       Case Field()="Codigo de Barras"       :     
            If IsBlank([]) Then Loop EndIf   
            If Not Localiza_CdBar("VERIFICAR") Then Loop EndIf
       Case Field()="Inativo":
            Valida_Campo("")
            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 [Descricao Complementar]     
       Case Field()="Codigo da Familia":
            Valida_Campo("")
            Moveto [Codigo do Grupo]
       Case Field()="Codigo do Grupo":
            Valida_Campo("")
            Moveto [Codigo da Marca]
       Case Field()="Codigo da Marca":
            Valida_Campo("")
            Moveto [Codigo da Cor_Tecido]  
       Case Field()="Codigo da Cor_Tecido":
            Valida_Campo("")
            If [Tipo do Item]="D" And Not IsBlank([Codigo da Grade]) And SYS_CLIENTE_CONFEC<>""
               Then [Codigo da Cor_Tecido   ]=""
                    [Descricao da Cor_Tecido]=""
            EndIf   
            Valida_Campo("")
            Moveto [Codigo do Departamento]
       Case Field()="Codigo do Departamento":
            Valida_Campo("")
            Moveto [Codigo_Localizacao]
       Case Field()="Codigo_Localizacao" :      
            If Valida_Campo("")
               Then Moveto [Propriedade_Terceiro]
            EndIf        
       Case Field()="Propriedade_Terceiro":
            Valida_Campo("")
            Moveto [Codigo Fornecedor]
       Case Field()="Codigo Fornecedor":
             Moveto [Unidade Entrada] 

       ;************** UNIDADES ************************************************             
       Case Field()="Unidade Entrada"        :  Moveto [Fator de Conversao]
       Case Field()="Fator de Conversao":
            Valida_Campo("")
            Moveto [Unidade Embalagem]
       Case Field()="Unidade Embalagem"      :  Moveto [Fator Conversao Embalagem]
       Case Field()="Fator Conversao Embalagem":
            Valida_Campo("")
            Moveto [Unidade Interna]
       Case Field()="Unidade Interna"        : Valida_Campo("") 
                                               IC_UNIDADE=[Unidade Interna] 
                                               Moveto [Flag1]
       Case Field()="Flag1"                  : Tela_Complemento("Avancar")
                                               Moveto [Situacao]
                                               Verifica_Tela(Field())
                                               
       ;************** COMPLEMENTO *********************************************    
       Case Field()="Situacao"               : Moveto [Vendagem]
       Case Field()="Vendagem"               : Moveto [Fracionado]
       Case Field()="Fracionado"             : 
            Valida_Campo("")
            Moveto [Peso Variavel]
       Case Field()="Peso Variavel"          : 
            Valida_Campo("")
            Moveto [Composto]
       Case Field()="Composto"               : Moveto [Producao Esgotada]
       Case Field()="Producao Esgotada"      : 
            Valida_Campo("")
            Moveto [Edita Descricao do Item]
       Case Field()="Edita Descricao do Item": 
            Valida_Campo("")       
            Moveto [Capacidade]
       Case Field()="Capacidade"             : Moveto [Dimensoes]
       Case Field()="Dimensoes"              : Moveto [FCI]
       Case Field()="FCI"                    : Moveto [CEST] 
       Case Field()="CEST"                   : Moveto [Codigo Concentrador]
       Case Field()="Codigo Concentrador"    : Moveto [ANP_Codigo_Combustivel]
       Case Field()="ANP_Codigo_Combustivel" : 
            Valida_Campo("")    
            Moveto [ANP_UF_Consumo]
       Case Field()="ANP_UF_Consumo"         : 
            If [ANP_Codigo_Combustivel]<>"" And [ANP_Codigo_Combustivel]<>"999999999" And []=""
               Then Mensagem("Informe a UF de consumo do produto da ANP (Combust¡veis e Lubrificantes) !") 
               Else Moveto [Genero]
            EndIf 
       Case Field()="Genero"                 : Moveto [EX_TIPI]
       Case Field()="EX_TIPI"                : Moveto [Codigo Enq_IPI]                
       Case Field()="Codigo Enq_IPI"         : 
            Valida_Campo("") 
            Moveto [CNP_SEGMENTO]
       Case Field()="CNP_SEGMENTO"           : Moveto [CNP_FAMILIA  ]
       Case Field()="CNP_FAMILIA"            : Moveto [CNP_CLASSE   ]
       Case Field()="CNP_CLASSE"             : Moveto [CNP_SUBCLASSE]
       Case Field()="CNP_SUBCLASSE"          : Moveto [Quantidade Maxima Venda]            
       Case Field()="Quantidade Maxima Venda": Moveto [Desconto Maximo]
       Case Field()="Desconto Maximo"        : Moveto [Indice Preco de Venda]
       Case Field()="Indice Preco de Venda"  : Tela_Complemento("Voltar") 
                                               Moveto [Flag2]
                                               Verifica_Tela(Field())
       Case Field()="Flag2"                  : Tela_Complemento("Voltar")
                                               Moveto [Peso Liquido]                                        
                                               Verifica_Tela(Field())                                                 
           
       ;************** FATURAMENTO ********************************************* 
       Case Field()="Peso Liquido"          : Moveto [Peso Embalagem]
       Case Field()="Peso Embalagem"        : Moveto [Volumes]
       Case Field()="Volumes"               : Moveto [NCM           ]
            AliqIPI=[Aliquota de IPI]
       Case Field()="NCM"                   :  
            If []=NCM_ant
               Then [PIS_CST]        =CST_Pis   
                    [PIS_Aliquota]   =ALQ_Pis   
                    [COFINS_CST]     =CST_Cofins
                    [COFINS_Aliquota]=ALQ_Cofins
               Else If [PIS_CST]="" 
                       Then [PIS_CST]        =CST_Pis   
                            [PIS_Aliquota]   =ALQ_Pis 
                    EndIf
                    If [COFINS_CST]=""
                       Then [COFINS_CST]     =CST_Cofins
                            [COFINS_Aliquota]=ALQ_Cofins
                    EndIf
            EndIf
            Moveto [Codigo_Servico]
       Case Field()="Codigo_Servico"        : Moveto [Comissao do Item]
       Case Field()="Comissao do Item"      : Moveto [Flag3]
       Case Field()="Flag3"                 : Moveto [Tipo Tributacao]
            
       ;************** TRIBUTACAO **********************************************       
       Case Field()="Tipo Tributacao"     : 
            If Valida_Campo("") 
               Then If SubStr([Tipo Tributacao],2,2)<>"00" And  
                       SubStr([Tipo Tributacao],2,2)<>"10" And
                       SubStr([Tipo Tributacao],2,2)<>"20" And  
                       SubStr([Tipo Tributacao],2,2)<>"70" And
                       SubStr([Tipo Tributacao],2,2)<>"90" 
                       Then If SubStr([Tipo Tributacao],1,1)<>"1" And   
                               SubStr([Tipo Tributacao],1,1)<>"2" And
                               SubStr([Tipo Tributacao],1,1)<>"6" And
                               SubStr([Tipo Tributacao],1,1)<>"7"
                               Then Moveto [CSOSN]
                               Else Moveto [Pais]
                            EndIf      
                       Else Moveto [Aliquota de ICMS ]
                    EndIf
              Else Loop              
            EndIf
            
       Case Field()="Pais":
            If (SubStr([Tipo Tributacao],1,1)="1"  Or 
                SubStr([Tipo Tributacao],1,1)="2"  Or
                SubStr([Tipo Tributacao],1,1)="6"  Or
                SubStr([Tipo Tributacao],1,1)="7") And IsBlank([])
                Then Mensagem("Pais Inv lido!")
                     Moveto [CSOSN]
                Else If Not Valida_Campo("")
                        Then Loop
                        Else Moveto [CSOSN] 
                     EndIf           
            EndIf
       Case Field()="Aliquota de ICMS"        : 
            If SubStr([Tipo Tributacao],2,2)="20" Or SubStr([Tipo Tributacao],2,2)="70"    
               Then Moveto [Aliquota Reduzida BCICMS]
               Else Valida_Campo("")
                    If SubStr([Tipo Tributacao],1,1)="0"
                       Then Moveto [CSOSN]
                       Else Moveto [Pais]
                    EndIf   
            EndIf
       Case Field()="Aliquota Reduzida BCICMS": 
            Valida_Campo("")
            If SubStr([Tipo Tributacao],1,1)="0"
               Then Moveto [CSOSN]
               Else Moveto [Pais]
            EndIf

       Case Field()="CSOSN"             :                      
             If Not Valida_Campo("")
                Then Loop
                Else Moveto [IPI_CST]
             EndIf
             
       Case Field()="IPI_CST"                 :
             If Valida_Campo("")
                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 Loop   
             EndIf
       Case Field()="Aliquota de IPI"    : Moveto [Tributacao de ISSQN]
       Case Field()="Tributacao de ISSQN":
            Valida_Campo("")
            If Not IsBlank([])
               Then If []="D"
                       Then Moveto [Aliquota de ISSQN]
                       Else Moveto [PIS_CST]
                    EndIf
            EndIf
       Case Field()="Aliquota de ISSQN"  : Moveto [PIS_CST]
       Case Field()="PIS_CST"         :
             If Valida_Campo("")
                Then If TribCST="N"
                        Then Moveto [COFINS_CST]
                        Else Moveto [PIS_Aliquota]
                    EndIf
                Else Loop   
             EndIf
       Case Field()="PIS_Aliquota"       : Moveto [COFINS_CST]                     
       Case Field()="COFINS_CST"         :
             If Valida_Campo("")
                Then If TribCST="N"
                        Then Moveto [Codigo MVA]
                        Else Moveto [COFINS_Aliquota]
                    EndIf
                Else Loop   
             EndIf
       Case Field()="COFINS_Aliquota"    : Moveto [Codigo MVA]                     
       Case Field()="Codigo MVA":
            If IsBlank([])
               Then [MVA_1]=BlankNum()
                    [MVA_2]=BlankNum()
            EndIf
            Moveto [IndEscala]
       Case Field()="IndEscala" :
            If []="N"
               Then Moveto [CNPJFab]
               Else []="S"
                    Moveto [CBenef]
            EndIf
       Case Field()="CNPJFab"   : 
            If IsBlank([])
               Then FastMsg("Informe o CNPJ do fabricante deste item!")
               Else If Checa_CGC_CPF_Formatado([]) 
                       Then Moveto [CBenef]
                    EndIf
            EndIf
       Case Field()="IndEscala" : Moveto [Flag]
       Case Field()="Flag":           
            If PARAM_ABA_eCOMMERCE
               Then Tela_eCommerce("Avancar")
                    Moveto [Descricao_Item]
                    Verifica_Tela(Field())
               Else If PARAM_ABA_TECIDO
                       Then Tela_Tecido("Avancar")
                            Moveto [Artigo]
                            Verifica_Tela(Field())
                       Else Atualiza()
                            Tecla_Funcao="TELA_CLAS"
                            TELA="TELA_CLAS"
                            QuitLoop
                    EndIf
            EndIf
       Case Field()="MVA_2":           
            If PARAM_ABA_TECIDO
               Then Tela_Tecido("Avancar")
                    Moveto [Artigo]
                    Verifica_Tela(Field())
               Else Atualiza()
                    Tecla_Funcao="TELA_CLAS"
                    TELA="TELA_CLAS"
                    QuitLoop
            EndIf
       ;************** eCommerce ***********************************************     
       Case Field()="Descricao_Item"         : Moveto [Largura]
       Case Field()="Largura" And Table()="Iten_eco"
                                             : Moveto [Altura]
       Case Field()="Altura"                 : Moveto [Comprimento]
       Case Field()="Comprimento"            : Moveto [Link_Imagem]
       Case Field()="Link_Imagem"            : Tela_Tecido("Voltar") 
                                               Moveto [MVA_2]
                                               Verifica_Tela(Field())
       Case Field()="MVA_2"                  : If PARAM_ABA_TECIDO
                                                  Then Tela_Tecido("Avancar")
                                                       Moveto [Artigo]
                                                       Verifica_Tela(Field())
                                                  Else Atualiza()
                                                       Tecla_Funcao="TELA_CLAS"
                                                       TELA="TELA_CLAS"
                                                       QuitLoop
                                               EndIf 
       ;************** TECIDOS *************************************************
       Case Field()="Artigo"                 : Moveto [Composicao]
       Case Field()="Composicao"             : Moveto [Peca]
       Case Field()="Peca"                   : Moveto [Largura]
       Case Field()="Largura" And Table()="Iten_tec"
                                             : Moveto [Largura Util]
       Case Field()="Largura Util"           : Moveto [Gramatura]                                      
       Case Field()="Gramatura"              : Moveto [Rendimento]
       Case Field()="Rendimento"             : Moveto [Simbologia_Impressao]
       Case Field()="Simbologia_Impressao"   : Tela_Tecido("Voltar") 
                                               Moveto [MVA_1]
                                               Verifica_Tela(Field())    
       Case Field()="MVA_1"                  : Atualiza()
                                               Tecla_Funcao="TELA_CLAS"
                                               TELA="TELA_CLAS"
                                               QuitLoop
       OtherWise:
            Right
       EndSwitch
  EndSwitch
EndWhile

EndProc   ;(Digita)

;*******************************************************************************
;* Checagem de CST e CSOSN                                                     *
;*******************************************************************************
Proc Checa_CST_CSOSN()

CONTINUA=False
Switch
   Case (SubStr(TribCST,2,3)="101" Or SubStr(TribCST,2,3)="102") And 
        (SubStr([Tipo Tributacao],2,2)="00" Or SubStr([Tipo Tributacao],2,2)="20" 
        Or SubStr([Tipo Tributacao],2,2)="90")                                        : CONTINUA=True 

   Case SubStr(TribCST,2,3)="103" And 
        (SubStr([Tipo Tributacao],2,2)="40" Or SubStr([Tipo Tributacao],2,2)="41" 
        Or SubStr([Tipo Tributacao],2,2)="50" Or SubStr([Tipo Tributacao],2,2)="51")  : CONTINUA=True 

   Case (SubStr(TribCST,2,3)="201" Or SubStr(TribCST,2,3)="202" Or 
         SubStr(TribCST,2,3)="203" Or SubStr(TribCST,2,3)="500") And 
        (SubStr([Tipo Tributacao],2,2)="10" Or SubStr([Tipo Tributacao],2,2)="30" 
        Or SubStr([Tipo Tributacao],2,2)="60" Or SubStr([Tipo Tributacao],2,2)="70" 
        Or SubStr([Tipo Tributacao],2,2)="90")                                        : CONTINUA=True 

   Case SubStr(TribCST,2,3)="300" And 
        SubStr([Tipo Tributacao],2,2)<>"??"                                           : CONTINUA=True ;?verificar qual

   Case SubStr(TribCST,2,3)="400" And 
        (SubStr([Tipo Tributacao],2,2)="40" Or SubStr([Tipo Tributacao],2,2)="41" 
        Or SubStr([Tipo Tributacao],2,2)="50" Or SubStr([Tipo Tributacao],2,2)="51")  : CONTINUA=True 

   Case SubStr(TribCST,2,3)="900" And 
        SubStr([Tipo Tributacao],2,2)<>"??"                                           : CONTINUA=True ;?qualquer

EndSwitch

If Not CONTINUA 
  Then Mensagem("CSOSN difere da regra para o CST ICMS informado.//Verifique !")
EndIf

Return CONTINUA
EndProc   ;  (Checa_CST_CSOSN)

;*******************************************************************************
;* Checagem de dados da pagina                                                 *
;*******************************************************************************
Proc Valida_Campo(PARAM)
Private PARAM,VALIDA,CAMPO_ANT,TAB_ANT
NCAMPO=Field()        
                
CAMPO_ANT = Field()
TAB_ANT   = Table()
                   
If PARAM="TODAS" Then VALIDA=True Else VALIDA=False EndIf 

CAMPOS_OK=True

;---- Valida Classifica‡„o / Faturamento ---------------------------------------
If PARAM="TODAS" And Table()<>"Itens" Then Moveto "Itens" EndIf    
              
If VALIDA
   Then MSG = ""
        If [Tipo do Item]=""      And CAMPOS_OK Then CAMPOS_OK = False MSG = "Tipo do Item deve ser informado!"         EndIf
        If [Descricao do Item]="" And CAMPOS_OK Then CAMPOS_OK = False MSG = "Descri‡Æo do Item deve ser informada!"    EndIf
        If [Unidade Interna]=""   And CAMPOS_OK Then CAMPOS_OK = False MSG = "Unidade Interna deve ser informada!"      EndIf
        If [Unidade Entrada]=""   And CAMPOS_OK Then CAMPOS_OK = False MSG = "Unidade de Entrada deve ser informada!"   EndIF
        If [Unidade Embalagem]="" And CAMPOS_OK Then CAMPOS_OK = False MSG = "Unidade de Embalagem deve ser informada!" EndIF
        
        If Not CAMPOS_OK
           Then If MSG<>"" Then FastMSG(MSG) EndIf
                Return CAMPOS_OK
        EndIf   
        Release Vars MSG    
EndIf   
                                                    
If Field()="Codigo da Marca"           Or VALIDA Then If IsBlank([Codigo da Marca])        Then [Descricao da Marca       ]=""   EndIf EndIf
If Field()="Codigo do Departamento"    Or VALIDA Then If IsBlank([Codigo do Departamento]) Then [Descricao do Departamento]=""   EndIf EndIf
If Field()="Codigo da Cor_Tecido"      Or VALIDA Then If IsBlank([Codigo da Cor_Tecido])   Then [Descricao da Cor_Tecido  ]=""   EndIf EndIf
If Field()="Codigo do Grupo"           Or VALIDA Then If IsBlank([Codigo do Grupo])        Then [Descricao do Grupo       ]=""   EndIf EndIf
If Field()="Codigo da Familia"         Or VALIDA Then If IsBlank([Codigo da Familia])      Then [Descricao da Familia     ]=""   EndIf EndIf
If Field()="Codigo_Localizacao"        Or VALIDA Then If IsBlank([Codigo_Localizacao])     Then [Localizacao              ]=""   EndIf EndIf
If Field()="Fator de Conversao"        Or VALIDA Then If IsBlank([Fator de Conversao])     Then [Fator de Conversao       ]=1    EndIf EndIf
If Field()="Fator Conversao Embalagem" Or VALIDA Then If IsBlank([Fator Conversao Embalagem]) Then [Fator Conversao Embalagem]=1 EndIf EndIf
If Field()="Inativo"                   Or VALIDA Then If IsBlank([Inativo])                Then [Inativo                  ]="N"  EndIf EndIf               
If Field()="Codigo da Grade"           Or VALIDA Then If IsBlank([Codigo da Grade])        Then [DTamanho        ]=""
                                                                                                [Tipo_Codificacao]=""            EndIf EndIf
If Field()="Unidade Interna"           Or VALIDA Then [Unidade Fiscal] = [Unidade Interna]                                       EndIf 
If Field()="Propriedade_Terceiro"      Or VALIDA Then If IsBlank([Propriedade_Terceiro])   Then  [Propriedade_Terceiro]="N"      EndIf EndIf      
                                  
If VALIDA
   Then If Not Localiza_CdBar("VERIFICAR")   
          Then CAMPOS_OK=False 
       EndIf
       If NAO_INCLUI_CB Then CAMPOS_OK=False EndIf     
       If Not CAMPOS_OK 
          Then Return CAMPOS_OK 
       EndIf
EndIf              

If VALIDA Or (Field()="Codigo_Localizacao" And [Localizacao]<>"")
   Then GetRecord "Iten_Loc" [Codigo do Item],[Localizacao] To REG_LOCALIZACAO
        If RetVal
           Then CAMPOS_OK = False
                Mensagem("A Localiza‡Æo "+[Localizacao]+" j  esta inserida neste item!")
                Moveto [Codigo_Localizacao]
                Return CAMPOS_OK
        EndIf
EndIf

If Field()="Pais" Or VALIDA 
   Then If (SubStr([Tipo Tributacao],1,1)="1"  Or
            SubStr([Tipo Tributacao],1,1)="2"  Or
            SubStr([Tipo Tributacao],1,1)="6"  Or
            SubStr([Tipo Tributacao],1,1)="7") And [Pais]="BRASIL"
            Then CAMPOS_OK = False
                 FastMSG("BRASIL informado como pa¡s de origem!//Verifique o tipo de tributa‡„o antes de prosseguir!")
                 Return CAMPOS_OK         
        EndIf
EndIf
           
If (Field()="Aliquota de ICMS"         Or
    Field()="Aliquota Reduzida BCICMS" Or
    VALIDA)            
    Then If SubStr([Tipo Tributacao],1,1)<>"1" And
            SubStr([Tipo Tributacao],1,1)<>"2" And
            SubStr([Tipo Tributacao],1,1)<>"6" And 
            SubStr([Tipo Tributacao],1,1)<>"7" 
            Then [Pais]="BRASIL"
         EndIf     
EndIf        

If Field()="Codigo de Barras" Or VALIDA 
   Then If Not IsBlank([Tipo Codigo_Barras]) And IsBlank([Codigo de Barras])
           Then CAMPOS_OK = False
                FastMSG("C¢digo de Barras Inv lido!")  
                Return CAMPOS_OK     
        EndIf
EndIf              

If Field()="Codigo MVA" Or VALIDA Then If IsBlank([Codigo MVA])
                                          Then [MVA_1]=BlankNum()
                                               [MVA_2]=BlankNum()
                                       EndIf EndIf 
                                   
If Field()="Tributacao de ISSQN" Or VALIDA
   Then If Not IsBlank([Tributacao de ISSQN])
          Then If [Tributacao de ISSQN]<>"D"
                  Then [Aliquota de ISSQN]=0
               EndIf
        EndIf
EndIf                                          
                    
;---- Valida Complementos ------------------------------------------------------
If VALIDA Then Moveto "Iten_com" EndIf
If Field()="Fracionado"        Or VALIDA Then If IsBlank([Fracionado])        Then If SYS_CODIGO_CLIENTE="0185"
                                                                                      Then [Fracionado]="S"
                                                                                      Else [Fracionado]="N"
                                                                                   EndIf                      EndIf EndIf
If Field()="Producao Esgotada" Or VALIDA Then If IsBlank([Producao Esgotada]) Then [Producao Esgotada]="N"    EndIf EndIf
If Field()="Situacao"          Or VALIDA Then If IsBlank([Situacao])          Then [Situacao         ]="L"    EndIf EndIf  
If Field()="Vendagem"          Or VALIDA Then If IsBlank([Vendagem])          Then [Vendagem         ]="BOM"  EndIf EndIf
If Field()="Composto"          Or VALIDA Then If IsBlank([Composto])          Then [Composto         ]="N"    EndIf EndIf
If Field()="Peso Variavel"     Or VALIDA Then If IsBlank([Peso Variavel])     Then [Peso Variavel    ]="N"    EndIf EndIf
If Field()="Codigo Enq_IPI"    Or VALIDA Then If IsBlank([Codigo Enq_IPI])    Then [Codigo Enq_IPI   ]="999"  EndIf EndIf
                                                                                                        
If Field()="ANP_Codigo_Combustivel"  Or VALIDA Then If IsBlank([ANP_Codigo_Combustivel])  Then [ANP_Codigo_Combustivel]="999999999" EndIf EndIf      
If Field()="Edita Descricao do Item" Or VALIDA Then If IsBlank([Edita Descricao do Item]) Then [Edita Descricao do Item]="N"        EndIf EndIf 

If VALIDA And [Codigo Enq_IPI]<>""
   Then ;---- Verifica o Enquadramento Legal do IPI ----------------------------
        MSG = "Verificar compatibilidade entre o CST do IPI e o C¢digo de Enquadramento Legal [Enq_IPI] conforme as regras abaixo: //"
        MSG = MSG + " //" 
        MSG = MSG + "CST IPI = 52 - (isen‡Æo)   C¢d. Enquadramento [301 a 399] //" 
        MSG = MSG + "CST IPI = 54 - (imunidade) C¢d. Enquadramento [001 a 099] //"
        MSG = MSG + "CST IPI = 55 - (suspensÆo) C¢d. Enquadramento [101 a 199] //"
        MSG = MSG + "Demais CST Informar 999 ou C¢d. Enquadramento [601 a 699] //"
        Switch
          Case [Itens->IPI_CST] = "52" :
               If NumVal([Codigo Enq_IPI]) < 301 Or NumVal([Codigo Enq_IPI]) > 399
                  Then CAMPOS_OK=False
               EndIf
          Case [Itens->IPI_CST] = "54" :
               If NumVal([Codigo Enq_IPI]) > 099 
                  Then CAMPOS_OK=False
               EndIf
          Case [Itens->IPI_CST] = "55" :
               If NumVal([Codigo Enq_IPI]) < 101 Or NumVal([Codigo Enq_IPI]) > 199
                  Then CAMPOS_OK=False
               EndIf
          OtherWise                    : 
               If NumVal([Codigo Enq_IPI]) < 601 Or (NumVal([Codigo Enq_IPI]) > 699 And NumVal([Codigo Enq_IPI]) <> 999)
                  Then CAMPOS_OK=False        
               EndIf
        EndSwitch
        If Not CAMPOS_OK 
           Then FastMSG(MSG)              
                Return CAMPOS_OK     
        EndIf
EndIf
If VALIDA Then Moveto "Itens"    EndIf
        
;---- Tributa‡Æo ---------------------------------------------------------------
MSG = ""
If (Field()="Tipo Tributacao" Or VALIDA) And CAMPOS_OK
   Then If [Tipo Tributacao]<>""
           Then TribCST=Checa_CST("ICMS","",[Tipo Tributacao]) 
                If TribCST<>""                                                                          
                   Then [Tributacao de ICMS]=Pega_TipoTributacao("ICMS",[Tipo Tributacao])
                        If SubStr([Tipo Tributacao],2,2)<>"00" And  
                           SubStr([Tipo Tributacao],2,2)<>"10" And
                           SubStr([Tipo Tributacao],2,2)<>"20" And  
                           SubStr([Tipo Tributacao],2,2)<>"70" And
                           SubStr([Tipo Tributacao],2,2)<>"90" 
                           Then [Aliquota de ICMS        ]=0
                                [Aliquota Reduzida BCICMS]=0
                                If SubStr([Tipo Tributacao],1,1)<>"1" And
                                   SubStr([Tipo Tributacao],1,1)<>"2" And
                                   SubStr([Tipo Tributacao],1,1)<>"6" And 
                                   SubStr([Tipo Tributacao],1,1)<>"7" 
                                   Then [Pais]="BRASIL"
                                EndIf  
                        EndIf
                   Else If VALIDA 
                           Then MSG = "CST ICMS Inv lido !"
                           Else MSG = "CST ICMS inv lido, use F1 para consultar !"
                        Endif   
                        CAMPOS_OK = False 
                EndIf 
           Else MSG = "CST ICMS Inv lido !"   
                CAMPOS_OK = False
        EndIf
EndIf    

If (Field()="CSOSN" Or VALIDA) And CAMPOS_OK
   Then If [CSOSN]<>""
           Then TribCST=Checa_CSOSN2("",SubStr([Tipo Tributacao],1,1)+[CSOSN])
                If TribCST<>""
                   Then If Not Checa_CST_CSOSN()
                           Then CAMPOS_OK = False
                                Return CAMPOS_OK 
                        EndIf   
                   Else If VALIDA
                           Then MSG = "CSOSN Inv lido !"
                           Else MSG = "CSOSN inv lido, use F1 para consultar !"
                        Endif
                        CAMPOS_OK = False
                EndIf
           Else MSG = "CSOSN Inv lido !" 
                CAMPOS_OK = False 
        EndIf                   
EndIf

If (Field()="Tributacao de IPI" Or VALIDA) And CAMPOS_OK
   Then If IsBlank([Tributacao de IPI])   
           Then MSG = "Tributa‡„o IPI Invalida !"
                CAMPOS_OK = False
        EndIf        
EndIf

If (Field()="IPI_CST" Or VALIDA) And CAMPOS_OK
   Then If [IPI_CST]<>"" 
           Then TribCST=Checa_CST("IPI","S",[IPI_CST])
                If TribCST<>""
                   Then [Tributacao de IPI]=Pega_TipoTributacao("IPI",[IPI_CST])
                        If [Tributacao de IPI]<>"D" And [Tributacao de IPI]<>"O"
                           Then [Aliquota de IPI]=0
                        EndIf
                   Else If VALIDA
                           Then MSG = "CST IPI Inv lido !"
                           Else MSG = "CST IPI inv lido, use F1 para consultar !"
                        Endif   
                        CAMPOS_OK = False     
                EndIf
           Else MSG = "CST IPI Inv lido !"
                CAMPOS_OK = False
        EndIf    
EndIf         
   
If (Field()="PIS_CST" Or VALIDA) And CAMPOS_OK
   Then If [PIS_CST]<>"" 
          Then TribCST=Checa_CST("PIS","S",[PIS_CST])
               If TribCST<>""
                  Then If TribCST="N"
                          Then [PIS_Aliquota]=0
                       EndIf
                  Else If VALIDA
                          Then MSG = "CST PIS Inv lido !"
                          Else MSG = "CST PIS inv lido, use F1 para consultar !"
                       EndIf                 
                       CAMPOS_OK = False
               EndIf
          Else MSG = "CST PIS Inv lido !"
               CAMPOS_OK = False
      EndIf         
EndIf        
                                                    
If (Field()="COFINS_CST" Or VALIDA) And CAMPOS_OK
   Then If [COFINS_CST]<>"" 
           Then TribCST=Checa_CST("COFINS","S",[COFINS_CST])
                If TribCST<>""
                   Then If TribCST="N"
                           Then [COFINS_Aliquota]=0
                       EndIf
                   Else If VALIDA
                           Then MSG = "CST COFINS Inv lido !"  
                           Else MSG = "CST COFINS inv lido, use F1 para consultar !"
                        EndIf
                        CAMPOS_OK = False
                EndIf
           Else MSG = "CST COFINS Inv lido !"  
                CAMPOS_OK = False                
        EndIf
EndIf

If (Field()="Tributacao de ICMS" Or VALIDA) And CAMPOS_OK
   Then If IsBlank([Tributacao de ICMS])
           Then MSG = "Tributa‡„o ICMS Invalida !"
                CAMPOS_OK = False
        EndIf
EndIf   

Moveto TAB_ANT
Moveto Field CAMPO_ANT
  
If Not CAMPOS_OK
   Then If MSG <> "" Then FastMSG(MSG) EndIf 
        Return CAMPOS_OK 
EndIf

Return CAMPOS_OK

EndProc ;Valida_Campo()

;*******************************************************************************
;* 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
         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 SYS_CLIENTE_CONFEC<>""
            then
                 If ITEM>99
                    Then Mensagem("Sequencia >99 !")
                         QuitLoop
                 EndIf
         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
                 [Codigo da Marca        ] = COD_MARCA
                 [Descricao da Marca     ] = DES_MARCA
                 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  "
  Prompt TECLA

  Switch
    Case Field()="Codigo da Cor_Tecido" : MSGCAMPO = "Informe o tecido"
    Case Field()="Codigo da Marca"      : MSGCAMPO = "Informe a marca referente a cor do tecido"                  
    OtherWise                           : MSGCAMPO = Field() 
  EndSwitch
  
  If Field()="Codigo da Cor_Tecido" Or
     Field()="Codigo da Marca" 
     Then MSGCAMPO=MSGCAMPO+", [F1]Consultar tabela"
  EndIf
  
  Wait Field 
      Until "ESC","ENTER","F1"
      
  Switch
  Case RetVal="F1":
       If Field()="Codigo da Cor_Tecido" Or
          Field()="Codigo da Marca"
          Then CONSULTAF1()
       EndIf
  Case Retval="ESC":
       If CHAVE_COR=1
          Then Del
          Else Undo
       EndIf
       QuitLoop
  Case Retval="ENTER":
       If IsBlank([Codigo da Cor_Tecido]) Then Loop EndIf
       If [Sequencia da Cor_Tecido]=9 And 
          [Codigo da Cor_Tecido]<>""  And 
          (Search("SORTID",Upper([Descricao da Cor_Tecido]))=0)
          Then ConfGeral("Sequˆncia reservada para cores SORTIDAS !////Deseja continuar a incluir esta cor nessa sequencia ?")
               If OK<>"S"
                  Then Loop
               EndIf    
       EndIf           
       If SYS_CODIGO_CLIENTE="0338" Or
          SYS_CODIGO_CLIENTE="0342"   
          Then If [Sequencia da Cor_Tecido]<>NumVal([Codigo da Cor_Tecido])
                  Then Mensagem("Sequencia deve ser igual ao codigo da cor !")
                       Loop
               EndIf
       EndIf
       
       ;---- Verifica se cor j  foi digitada --------
       If Field() = "Codigo da Cor_Tecido"
          Then ACHOU_COR=False
               MSG = ""
               COR = [Codigo da Cor_Tecido   ]
               SEQ = [Sequencia da Cor_Tecido]
               Home 
               Scan
                 If SEQ <> [Sequencia da Cor_Tecido] And
                    COR = [Codigo da Cor_Tecido]
                    Then ACHOU_COR=True
                         MSG = "Cor "+[Codigo da Cor_Tecido]+" j  foi informada na sequencia "+StrVal([Sequencia da Cor_Tecido])
                         QuitLoop
                 EndIf
               EndScan
               Moveto [Sequencia da Cor_Tecido]
               Locate SEQ
               Moveto [Codigo da Cor_Tecido]
               If ACHOU_COR
                  Then Mensagem(MSG)
                       Loop
               EndIf
       EndIf                
       ;---------------------------------------------   
       
       Switch
         Case Field() = "Codigo da Cor_Tecido" : Moveto [Codigo da Marca] 
         Case Field() = "Codigo da Marca"      : QuitLoop
       EndSwitch
  EndSwitch
EndWhile
EndProc

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

COD_MARCA = [Codigo da Marca]
DES_MARCA = [Descricao da Marca]

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, ns,s,paiok

If SYS_CLIENTE_CONFEC="" 
   Then Return False
EndIf   

If Not IsAssigned(GERA_ITEM_LD)
   Then If SYS_CODIGO_CLIENTE="0227"
           Then GERA_ITEM_LD = "1"
           Else GERA_ITEM_LD = "0"
        EndIf   
EndIf   

If SYS_CLIENTE_CONFEC<>"" And [Tipo do Item]="D" And Tipo="P"
   Then
        paiok=True
           ns=[Codigo do Item]
            s=[Codigo do Item]

        Switch 
          Case SYS_CLIENTE_CONFEC="0185" Or    ;
               SYS_CLIENTE_CONFEC="0195" Or    ;
               SYS_CLIENTE_CONFEC="0196":      ;
               ns=SubStr(s,1,7)+"000"
               If SubStr([Codigo do Item],8,3)<>"000"  Then paiok=false EndIf
               If SubStr([Codigo do Item],1,2)<>"02"   Then paiok=false EndIf
               ns="02?????000"
        
          Case SYS_CLIENTE_CONFEC="0171":      ; PadrÆo Venus
               ns=SubStr(s,1,6)+"0000"
               If SubStr([Codigo do Item],7,4)<>"0000" Then paiok=false EndIf
               If SubStr([Codigo do Item],1,1)<>"1"    Then paiok=false EndIf
               ns="1?????0000"
        
          Case SYS_CLIENTE_CONFEC="0222":      ; PadrÆo Lupus
               ns=SubStr(s,1,6)+"0000"
               If SubStr([Codigo do Item],7,4)<>"0000" Then paiok=false EndIf
               If SubStr([Codigo do Item],1,2)<>"02"   Then paiok=false EndIf
               ns="02????0000"
        
          Case SYS_CLIENTE_CONFEC="0200" Or    ;
               SYS_CLIENTE_CONFEC="0204" Or
               SYS_CODIGO_CLIENTE="0322"  :
               ns=SubStr(s,1,8)+"00"
               If SubStr([Codigo do Item],9,2)<>"00"   Then paiok=false EndIf
               If SubStr([Codigo do Item],1,2)<>"02"   Then paiok=false EndIf
               ns="02??????00"
        
          Case SYS_CLIENTE_CONFEC="0079":     ; Isabela Garcia
               ns=SubStr(s,1,6)+"0000"
               If SubStr([Codigo do Item],7,4)<>"0000" Then paiok=false EndIf
               If SubStr([Codigo do Item],1,1)<>"2"    Then paiok=false EndIf
               ns="2?????0000"
        
        EndSwitch

        If Not paiok
           Then Mensagem("O c¢digo do item para pai da grade,// deve ter a seguinte estrutura: // // "+ns+"// //Verifique !")
                Return False
        EndIf
   
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 
            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"  Or
                 SYS_CODIGO_CLIENTE="0079"  Or
                 SYS_CODIGO_CLIENTE="0243"   :
                 DescrCor = [Descricao da Cor_Tecido]
                 CodMar   = [Codigo da Marca]
                 DesMar   = [Descricao da Marca] 
                 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
                
;---- SEMI-ACABADO "PAI" -------------------------------------------------------
If SYS_CODIGO_CLIENTE = "0227" And
   SYS_CLIENTE_CONFEC<>"" And regitem["Tipo do Item"]="D" And Tipo="P"
   Then regitem["Codigo do Item"        ] = "03"+SubStr(regitem["Codigo do Item"],3,10)
        regitem["Tipo do Item"          ] = "S"
        regitem["Descricao Tipo do Item"] = "SEMI-ACABADO"
        regitem["Tipo Codigo_Barras"    ] = ""
        regitem["Codigo de Barras"      ] = ""
                               
        Moveto "Itens"
        Moveto [Codigo do Item]
        Locate regitem["Codigo do Item"]
        If Not RetVal
           Then End Down
        EndIf   
        CopyFromArray regitem    
        UnLockRecord
       
        ;---- Complemento dos Itens ---------------------------------------
        Moveto "Iten_com"
        Moveto [Codigo do Item]
        Locate CODITEM
        If Retval  
           Then CopyToArray REG_COMPLEMENTO
           Else Release Vars REG_COMPLEMENTO
        EndIf      
        
        If IsAssigned(REG_COMPLEMENTO)
           Then Moveto "Iten_Com" 
                Moveto [Codigo do Item]
                Locate regitem["Codigo do Item"]
                If RetVal
                   Then REG_COMPLEMENTO["Producao Esgotada"] = [Producao Esgotada]
                        Del
                EndIf    
                REG_COMPLEMENTO["Codigo do Item"] = regitem["Codigo do Item"]
                Moveto "Iten_Com"
                End Down
                CopyFromArray REG_COMPLEMENTO
                UnLockrecord
        EndIf
        
        ;---- eCommerce dos Itens ----------------------------------------------
        If PARAM_ABA_eCOMMERCE
           Then Moveto "Iten_eco"
                Moveto [Codigo do Item]
                Locate CODITEM
                If Retval  
                   Then CopyToArray REG_ECOMMERCE
                   Else Release Vars REG_ECOMMERCE
                EndIf      
                
                If IsAssigned(REG_ECOMMERCE)
                   Then REG_ECOMMERCE["Codigo do Item"] = regitem["Codigo do Item"]
                        Moveto "Iten_eco" 
                        End Down
                        CopyFromArray REG_ECOMMERCE
                        UnLockrecord
                EndIf
        EndIf
        
        ;---- Informa‡Æo de Tecido dos Itens -----------------------------------
        If PARAM_ABA_TECIDO 
           Then ARTIGO_CODIGO = False
                Moveto "Iten_tec"
                Moveto [Codigo do Item]
                Locate CODITEM
                If Retval  
                   Then CopyToArray REG_TECIDO
                        If REG_TECIDO["Artigo"] = CODITEM
                           Then ARTIGO_CODIGO = True
                        EndIf
                   Else Release Vars REG_TECIDO
                EndIf       
                If IsAssigned(REG_TECIDO)
                   Then Moveto "Iten_tec" 
                        Moveto [Codigo do Item]
                        Locate regitem["Codigo do Item"]
                        If RetVal
                           Then Del
                        EndIf    
                        REG_TECIDO["Codigo do Item"] = regitem["Codigo do Item"]
                        If ARTIGO_CODIGO
                           Then REG_TECIDO["Artigo"] = regitem["Codigo do Item"]
                        EndIf
                        Moveto "Iten_tec"
                        End Down
                        CopyFromArray REG_TECIDO
                        UnLockrecord
                EndIf
        EndIf
EndIf      

;---- LD PAI" ------------------------------------------------------------------
If SYS_CODIGO_CLIENTE = "0227" And (regitem["Tipo do Item"]="D" Or regitem["Tipo do Item"]="S") And Tipo="P" And GERA_ITEM_LD="1"
   Then ;---- Caracter "6" no final do codigo do item representando a posi‡Æo do tamanho unico pertecente a grade "B" 
        regitem["Codigo do Item"        ] = "04"+SubStr(regitem["Codigo do Item"],3,8)
        regitem["Tipo do Item"          ] = "P"
        regitem["Descricao Tipo do Item"] = "PRODUTO ACABADO"
        regitem["Tipo Codigo_Barras"    ] = ""
        regitem["Codigo de Barras"      ] = regitem["Codigo do Item"]           ;Anteriormente  ->  Mod11_CalcEAN13("CALC","78"+regitem["Codigo do Item"])
        regitem["Tipo Codigo_Barras"    ] = "I-COD128"                          ;Anteriormente  -> "J-EAN13" 
        regitem["Referencia"            ] = Rtrim(regitem["Referencia"])+"LD"
        regitem["Descricao do Item"     ] = Completa(SubStr(regitem["Descricao do Item"],1,23),26," ")+"L/D"
        regitem["Codigo da Grade"       ] = ""
        
        Moveto "Itens"                     
        Moveto [Codigo de Barras]
        Locate regitem["Codigo de Barras"]
        If (Not RetVal Or (RetVal And [Codigo do Item]=regitem["Codigo do Item"]))    
           Then Moveto "Itens"                     
                Moveto [Codigo do Item]
                Locate regitem["Codigo do Item"]
                If Not RetVal
                   Then End Down
                EndIf   
                CopyFromArray regitem    
                UnLockRecord
                
                ;---- Complemento dos Itens --------------------------------------------
                Moveto "Iten_com"
                Moveto [Codigo do Item]
                Locate regitem["Codigo do Item"]
                If Retval  
                   Then CopyToArray REG_COMPLEMENTO
                        Del
                        REG_COMPLEMENTO["Codigo do Item"] = regitem["Codigo do Item"]
                        If Rtrim(REG_COMPLEMENTO["Codigo Enq_IPI"])=""          Then REG_COMPLEMENTO["Codigo Enq_IPI"]="999"               EndIf
                        If Rtrim(REG_COMPLEMENTO["ANP_Codigo_Combustivel"])=""  Then REG_COMPLEMENTO["ANP_Codigo_Combustivel"]="999999999" EndIf
                        If Rtrim(REG_COMPLEMENTO["Fracionado"])=""              Then REG_COMPLEMENTO["Fracionado"]="N"                     EndIf
                        If Rtrim(REG_COMPLEMENTO["Producao Esgotada"])=""       Then REG_COMPLEMENTO["Producao Esgotada"]="N"              EndIf
                        If Rtrim(REG_COMPLEMENTO["Situacao"])=""                Then REG_COMPLEMENTO["Situacao"]="L"                       EndIf
                        If Rtrim(REG_COMPLEMENTO["Vendagem"])=""                Then REG_COMPLEMENTO["Vendagem"]="BOM"                     EndIf
                        If Rtrim(REG_COMPLEMENTO["Composto"])=""                Then REG_COMPLEMENTO["Composto"]="N"                       EndIf
                        If Rtrim(REG_COMPLEMENTO["Peso Variavel"])=""           Then REG_COMPLEMENTO["Peso Variavel"]="N"                  EndIf
                        If Rtrim(REG_COMPLEMENTO["Edita Descricao do Item"])="" Then REG_COMPLEMENTO["Edita Descricao do Item"]="N"        EndIf
                        End Down
                        CopyFromArray REG_COMPLEMENTO
                   Else Release Vars REG_COMPLEMENTO
                        End Down
                        [Codigo do Item         ] = regitem["Codigo do Item"]
                        [Codigo Enq_IPI         ]="999"        
                        [ANP_Codigo_Combustivel ]="999999999"
                        [Fracionado             ]="N"
                        [Producao Esgotada      ]="N"            
                        [Situacao               ]="L"                     
                        [Vendagem               ]="BOM"                   
                        [Composto               ]="N"                     
                        [Peso Variavel          ]="N"                
                        [Edita Descricao do Item]="N"
                EndIf  
                UnLockrecord
                
                ;---- eCommerce dos Itens --------------------------------------
                If PARAM_ABA_eCOMMERCE
                  Then Moveto "Iten_eco"
                       Moveto [Codigo do Item]
                       Locate regitem["Codigo do Item"]
                       If Retval  
                          Then CopyToArray REG_ECOMMERCE
                               Del
                               REG_ECOMMERCE["Codigo do Item"] = regitem["Codigo do Item"]
                               End Down
                               CopyFromArray REG_ECOMMERCE
                          Else Release Vars REG_ECOMMERCE
                               End Down
                               [Codigo do Item]=regitem["Codigo do Item"]
                        EndIf  
                        UnLockrecord    
                EndIf
                
                ;---- Informa‡Æo de Tecido dos Itens ---------------------------
                If PARAM_ABA_TECIDO  
                   Then ARTIGO_CODIGO = False
                        Moveto "Iten_tec"
                        Moveto [Codigo do Item]
                        Locate regitem["Codigo do Item"]
                        If Retval  
                           Then CopyToArray REG_TECIDO
                                If REG_TECIDO["Artigo"] = regitem["Codigo do Item"]
                                   Then ARTIGO_CODIGO = True
                                EndIf
                           Else Release Vars REG_TECIDO
                        EndIf  
                        If IsAssigned(REG_TECIDO)
                           Then Moveto "Iten_tec" 
                                Moveto [Codigo do Item]
                                Locate regitem["Codigo do Item"]
                                If RetVal
                                   Then Del
                                EndIf    
                                REG_TECIDO["Codigo do Item"] = regitem["Codigo do Item"]
                                If ARTIGO_CODIGO
                                   Then REG_TECIDO["Artigo"] = regitem["Codigo do Item"]
                                EndIf
                                Moveto "Iten_tec"
                                End Down
                                CopyFromArray REG_TECIDO
                                UnLockrecord
                        EndIf
                EndIf
           Else Mensagem("N„o foi poss¡vel gerar o item "+regitem["Codigo do Item"]+
                         "//Foi detectado uma divergˆncia com o c¢digo de Barras "+regitem["Codigo de Barras"]+"!")          
        EndIf
        Release Vars GRADE_UNICA,ACHOU_GRADE
        GERA_ITEM_LD="2"
EndIf        
        
Moveto "Itens"
UnLockRecord
FormKey

Moveto [Codigo do Item]
Locate CODITEM

LimpAguarde()
Return True
EndProc

;*******************************************************************************
;* Rotina para adiconar localiza‡Æo nos itens de mesma referencia              *
;*******************************************************************************
Proc ITEM_Localizacao()
             
If SYS_CODIGO_CLIENTE="0388" 
   Then Moveto "Itens"
        AUX_REF = [Referencia]
        
        FAZ_PROCESSO=False
        Moveto "Iten_Loc"
        Moveto [Codigo do Item]
        Locate CODITEM
        If ReTval
           Then FAZ_PROCESSO=True
                CONTA_LOC = 0
                DynArray ARRAY_LOCALIZACAO[]
                While [Codigo do Item] = CODITEM
                  CONTA_LOC = CONTA_LOC + 1
                  ARRAY_LOCALIZACAO[CONTA_LOC] = [Localizacao]
                  Skip
                  If Eot() Then QuitLoop EndIf
                EndWhile
        EndIf   
          
        If FAZ_PROCESSO 
           Then Moveto "Itens" 
                Moveto [Referencia]
                Locate AUX_REF
                If RetVal
                   THen While [Referencia] = AUX_REF
                          If CODITEM <> [Codigo do Item]
                             Then AUX_CODIGO = [Codigo do Item]
                                  Moveto "Iten_Loc"
                                  For ii From 1 To DynArraySize(ARRAY_LOCALIZACAO)
                                    Home
                                    Moveto [Codigo do Item]
                                    Locate AUX_CODIGO,ARRAY_LOCALIZACAO[ii]
                                    If Not RetVal
                                       Then GetRecord "Iten_Loc" CODITEM,ARRAY_LOCALIZACAO[ii] To REG_ITENLOC
                                            If RetVal
                                               Then End 
                                                    If [Codigo do Item]<>"" Then Down EndIf
                                                    [Codigo do Item    ] = AUX_CODIGO
                                                    [Codigo_Localizacao] = REG_ITENLOC["Codigo_Localizacao"]
                                                    [Localizacao       ] = REG_ITENLOC["Localizacao"]
                                                    [Data da Manutencao] = REG_ITENLOC["Data da Manutencao"]
                                                    [Hora da Manutencao] = REG_ITENLOC["Hora da Manutencao"]
                                                    [Chapa             ] = REG_ITENLOC["Chapa"]
                                                    UnLockRecord
                                            EndIf     
                                    EndIf
                                  Endfor  
                          EndIf
                          Moveto "Itens" 
                          Skip
                          If Eot() Then QuitLoop EndIf
                        EndWhile
                EndIf
        EndIf
        Moveto "Itens"
        Moveto [Codigo do Item]
        Locate CODITEM
        
        Release Vars AUX_CODIGO,ii,AUX_REF,FAZ_PROCESSO
EndIf

EndProc ;ITEM_Localizacao()   

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

Switch
  Case TipoItem="M": cont=1
  Case TipoItem="T": cont=1
  OtherWise        : cont=2
EndSwitch

tpitem=TipoItem

Moveto "Iten_com"
Moveto [Codigo do Item]
Locate CODITEM
If Retval  
   Then CopyToArray REG_COMPLEMENTO
   Else Release Vars REG_COMPLEMENTO
EndIf      

If PARAM_ABA_TECIDO
   Then ARTIGO_CODIGO = False
        Moveto "Iten_tec"
        Moveto [Codigo do Item]
        Locate CODITEM
        If Retval  
           Then CopyToArray REG_TECIDO
                If REG_TECIDO["Artigo"]=CODITEM
                   Then ARTIGO_CODIGO = True
                EndIf
           Else Release Vars REG_TECIDO
        EndIf
EndIf

If PARAM_ABA_eCOMMERCE
   Then Moveto "Iten_eco"
        Moveto [Codigo do Item]
        Locate CODITEM
        If Retval  
           Then CopyToArray REG_eCommerce
           Else Release Vars REG_eCommerce
        EndIf
EndIf

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"
                  CODNOVO=MudaCodigoPara(CODNOVO,TpItem)
                  If CODNOVO=CODITEM
                     Then QuitLoop
                  EndIf   
              EndSwitch
                                                 
              CODNOVO=SubStr(CODNOVO,1,(10-Len(Cor+Tm)))+Cor+tm
              If Not IsAssigned(CodMar) Then CodMar="" EndIf
              
              Switch 
                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"  Or
                     SYS_CODIGO_CLIENTE="0079"  Or
                     SYS_CODIGO_CLIENTE="0243"   :
                     If CodMar<>""   
                        Then regitem["Codigo da Marca"]    = CodMar 
                             regitem["Descricao da Marca"] = DesMar
                     EndIf
              EndSwitch
                          
              tpbar =  RegItem["Tipo Codigo_Barras"]
              cdbar =  RegItem["Codigo de Barras"]
              loc    = RegItem["Localizacao"]

              Moveto [Codigo do Item]
              Locate CODNOVO
              If Not RetVal
                 Then End
                      Down
                 Else tpbar=[Tipo Codigo_Barras]
                      cdbar=[Codigo de Barras  ]
                     ;loc  =[Localizacao       ]
                      If tpbar=""
                         Then tpbar=RegItem["Tipo Codigo_Barras"] 
                      EndIf   
              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 Sys_Codigo_Cliente = "0227" 
                         Then [Descricao Complementar]=[Descricao Complementar]+" "+DescrCor
                      EndIf
                      
                      If tm<>"0" And tm<>"00"
                         Then [Descricao do item]=[Descricao do item]
                                          +"/"+
                                          LTrim(RTrim(SuBstr(Array_TM[i],2,2)))
                              
                              If Sys_Codigo_Cliente = "0227" 
                                 Then [Descricao Complementar]=[Descricao Complementar]
                                          +" - "+
                                          LTrim(RTrim(SuBstr(Array_TM[i],2,2)))
                              EndIf
                              
                      EndIf
                      [Codigo da Cor_Tecido]=CodCor
                 Else Switch
                        Case SYS_CLIENTE_CONFEC="0000":
                        OtherWise :
                           [Descricao do item]=Completa(SubStr([Descricao do Item],1,27),27," ")+
                                               "/"+LTrim(RTrim(SuBstr(Array_TM[i],2,2)))
                           
                           If Sys_Codigo_Cliente = "0227" 
                              Then [Descricao Complementar]=[Descricao Complementar]+
                                               " - "+LTrim(RTrim(SuBstr(Array_TM[i],2,2)))
                           EndIf
                      EndSwitch                         
              EndIf
              [Tipo do Item      ]=TpItem
		          [Tipo Codigo_Barras]=tpbar
		          [Codigo de Barras  ]=cdbar
		         ;[Localizacao       ]=Loc
              [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
              If TpItem="S"
                 Then [Tipo Codigo_Barras]=""
                      [Codigo de Barras  ]=""
              EndIf 
              If Sys_Codigo_Cliente = "0227" 
                 Then [Codigo Fornecedor] = Mod11_CalcEAN13("CALC","78"+[Codigo do Item]) 
                      If TpItem="S"
                         Then [Codigo Fornecedor] =""
                      EndIf
              EndIf
              unLockrecord
           
             ;---- Adiciona Localiza‡Æo nos filhos se cadastrado no pai --------
             ITEM_Localizacao()          
        
             ;---- Complemento dos Itens ---------------------------------------
             If IsAssigned(REG_COMPLEMENTO)
                Then Moveto "Iten_Com" 
                     Moveto [Codigo do Item]
                     Locate CODNOVO
                     If RetVal
                        Then REG_COMPLEMENTO["Producao Esgotada"] = [Producao Esgotada]
                             Del
                     EndIf    
                     REG_COMPLEMENTO["Codigo do Item"]=CODNOVO
                     Moveto "Iten_Com"
                     End Down
                     CopyFromArray REG_COMPLEMENTO
                     UnLockrecord
             EndIf

             
             If PARAM_ABA_eCOMMERCE
                Then ;---- Informa‡Æo do eCommerce -----------------------------
                     If IsAssigned(REG_eCommerce)
                        Then Moveto "Iten_eco" 
                             Moveto [Codigo do Item]
                             Locate CODNOVO
                             If RetVal
                                Then Del
                             EndIf    
                             REG_eCommerce["Codigo do Item"]=CODNOVO
                             Moveto "Iten_eco"
                             End Down
                             CopyFromArray REG_eCommerce
                             UnLockrecord
                     EndIf 
             EndIf
             
             If PARAM_ABA_TECIDO 
                Then ;---- Informa‡Æo de Tecido dos Itens ----------------------
                     If IsAssigned(REG_TECIDO)
                        Then Moveto "Iten_tec" 
                             Moveto [Codigo do Item]
                             Locate CODNOVO
                             If RetVal
                                Then Del
                             EndIf    
                             REG_TECIDO["Codigo do Item"]=CODNOVO
                             If ARTIGO_CODIGO
                                Then REG_TECIDO["Artigo"]=CODNOVO
                             EndIf
                             Moveto "Iten_tec"
                             End Down
                             CopyFromArray REG_TECIDO
                             UnLockrecord
                     EndIf
             EndIf
          
              If wi=2
                 Then tpitem=TipoItem
              Endif
              Moveto "Itens"
            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
   Else Mensagem("N„o existe Grade definida !")
        Return False
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 para controle da impressao                                                                      *
;*******************************************************************************
Proc Opcoes_Dialog(Disparo,Campo,Evento,Elemento)
Temp=True
TECLA=""
MSGCAMPO=""

If Disparo="EVENT" And Evento["Type"]="KEY" Then
   Switch
     Case Evento["KeyCode"] = -59: Dialog_F1()
     Case Evento["KeyCode"] =  27:
          Temp=False
					Switch
					  Case Campo="TG_SELECIONA"            : Campo="NO"
					  Case (Campo="YES" Or Campo="NO")     : Campo="TG_SELECIONA"
          EndSwitch
     Case Evento["KeyCode"] = 13:
          Temp=False
          If Checa_TAG()
						 Then If Campo="TG_SELECIONA"
									   Then VSDGSELECIONA=ControlValue("TG_SELECIONA")
												  Campo="YES"
                  EndIf
          EndIf
          RefreshDialog
   EndSwitch
EndIf
Switch
  Case Campo="TG_SELECIONA":
       MensagemRadioButtons()
EndSwitch
Monta_Prompt(MSG_CAMPO,TECLA)
Return Temp

EndProc ;Opcoes_Dialog()

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

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/Cores")
VSDGSELECIONA =2
ACHOU_NOVA_COR=True

If CHAVE=0 And (TipoItem="T" Or TipoItem="P" Or TipoItem="M")
   Then If SYS_CODIGO_CLIENTE="0388" Then VSDGSELECIONA=1 EndIf
        ACHOU_NOVA_COR=False
        ShowDialog "Op‡äes" Proc "Opcoes_Dialog"
        Trigger "OPEN","ARRIVE"
        Key "ENTER","ESC","F1"
        @ 05,16   Height 08  Width 40

        RadioButtons @ 01,01 Height 2 Width 35
    			 "Incluir apenas as novas cores adicionadas",
    			 "Atualizar todas as cores"
           Tag "TG_SELECIONA"
           To VSDGSELECIONA
    
        Pushbutton @ 04,07 width 11 "~O~k"      OK     Default Value "Ok" Tag "YES" To BottonValue
        Pushbutton @ 04,21 width 11 "~C~ancela" CANCEL                    Tag "NO"  To BottonValue
    
      EndDialog
      Mouse Show
      If Not RetVal
    		 Then Return False
      EndIf 
EndIf
   
tpitem=TipoItem
CopyToArray RegItem
CODITEM=[Codigo do Item]
UnLockRecord
FormKey

Moveto "Iten_Cor"
Moveto [Codigo do Item]
Locate CODITEM
If RetVal
   Then Moveto "Iten_Cor"
        Moveto [Codigo do Item]
        Locate CODITEM
        If RetVal
           Then CopyToArray REG_COMPLEMENTO
           Else Release Vars REG_COMPLEMENTO  
        EndIf 
        
        ;---- Complemento dos Itens --------------------------------------------
        Moveto "Iten_com"
        Moveto [Codigo do Item]
        Locate CODITEM
        If Retval  
           Then CopyToArray REG_ITCOMPLEMENTO
           Else Release Vars REG_ITCOMPLEMENTO
        EndIf
        
        ;---- Informa‡Æo do e Commerce -----------------------------------------
        If PARAM_ABA_eCOMMERCE
           Then Moveto "Iten_eco"
                Moveto [Codigo do Item]
                Locate CODITEM
                If Retval  
                   Then CopyToArray REG_ITEeCommerce
                   Else Release Vars REG_ITEeCommerce
                EndIf 
        EndIf
 
        ;---- Informa‡Æo de Tecido dos Itens -----------------------------------
        If PARAM_ABA_TECIDO
           Then ARTIGO_CODIGO = False
                Moveto "Iten_tec"
                Moveto [Codigo do Item]
                Locate CODITEM
                If Retval  
                   Then CopyToArray REG_ITTECIDO
                        If REG_ITTECIDO["Artigo"]=CODITEM
                           Then ARTIGO_CODIGO = True
                        EndIf
                   Else Release Vars REG_ITTECIDO
                EndIf 
        EndIf
         
        If SYS_CODIGO_CLIENTE="0000"
           Then SeqCor=0
        EndIf        
        Moveto "Iten_Cor"
        While [Codigo do Item]=CODITEM
          CodMar   = [Codigo da Marca]
          DesMar   = [Descricao da Marca]
          SiglaCor = Completa([Sigla Cor_Tecido],4," ")
          If SYS_CODIGO_CLIENTE="0000"
             Then SeqCor = SeqCor + 1
                  CodCor = AlinhM(StrVal(SeqCor),4)
             Else CodCor = [Codigo da Cor_Tecido]
          EndIf   
          
          CODNOVO=SubStr(CODITEM,1,6)+CodCor

          tpbar=RegItem["Tipo Codigo_Barras"]
          cdbar=RegItem["Codigo de Barras"]
          loc  =RegItem["Localizacao"]
           
          Moveto "Itens"
          Moveto [Codigo do Item]
          Locate CODNOVO
          If Not RetVal
             Then ACHOU_ITEM = False
                  End Down
             Else ACHOU_ITEM = True
                  tpbar=[Tipo Codigo_Barras]
						      cdbar=[Codigo de Barras  ]
						     ;loc  =[Localizacao       ]
          EndIf
          If Not ACHOU_ITEM Or VSDGSELECIONA=2
             Then If Not ACHOU_NOVA_COR Then ACHOU_NOVA_COR = True 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
                 ;[Localizacao         ]=Loc
                  [Codigo da Marca     ]=CodMar
                  [Descricao da Marca  ]=DesMar
        
                  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
          EndIf
          
          ;---- Adiciona Localiza‡Æo nos filhos se cadastrado no pai --------
          ITEM_Localizacao()    
                  
          ;---- Complemento dos Itens ------------------------------------------
          If IsAssigned(REG_ITCOMPLEMENTO) And (VSDGSELECIONA=2 Or (VSDGSELECIONA=1 And Not ACHOU_ITEM))
             Then INCLUI_ITEM=False
                  Moveto "Iten_Com" 
                  Moveto [Codigo do Item]
                  Locate CODNOVO
                  If RetVal   
                     Then If VSDGSELECIONA=2 
                             Then INCLUI_ITEM = True
                                  Del
                           EndIf       
                     Else INCLUI_ITEM = True
                  EndIf   
                  If INCLUI_ITEM
                     Then REG_ITCOMPLEMENTO["Codigo do Item"]=CODNOVO
                          Moveto "Iten_Com"
                          End Down
                          CopyFromArray REG_ITCOMPLEMENTO
                          UnLockrecord
                  EndIf                                                             
          EndIf
          
          ;---- Informa‡Æo do eCommerce ----------------------------------------
          If PARAM_ABA_eCOMMERCE And (VSDGSELECIONA=2 Or (VSDGSELECIONA=1 And Not ACHOU_ITEM))
             Then If IsAssigned(ITEeCommerce)
                     Then INCLUI_ITEM=False 
                          Moveto "Iten_eco" 
                          Moveto [Codigo do Item]
                          Locate CODNOVO
                          If RetVal   
                             Then If VSDGSELECIONA=2 
                                     Then INCLUI_ITEM = True
                                          Del
                                   EndIf       
                             Else INCLUI_ITEM = True
                          EndIf   
                          If INCLUI_ITEM
                             Then ITEeCommerce["Codigo do Item"]=CODNOVO
                                  Moveto "Iten_eco"
                                  End Down
                                  CopyFromArray ITEeCommerce
                                  UnLockrecord
                          EndIf                                               
                  EndIf
          EndIf
          
          ;---- Informa‡Æo de Tecido dos Itens ---------------------------------
          If PARAM_ABA_TECIDO And (VSDGSELECIONA=2 Or (VSDGSELECIONA=1 And Not ACHOU_ITEM))
             Then If IsAssigned(REG_ITTECIDO)
                     Then INCLUI_ITEM=False 
                          Moveto "Iten_tec" 
                          Moveto [Codigo do Item]
                          Locate CODNOVO
                          If RetVal   
                             Then If VSDGSELECIONA=2 
                                     Then INCLUI_ITEM = True
                                          Del
                                   EndIf       
                             Else INCLUI_ITEM = True
                          EndIf   
                          If INCLUI_ITEM
                             Then REG_ITTECIDO["Codigo do Item"]=CODNOVO
                                  If ARTIGO_CODIGO
                                     Then REG_ITTECIDO["Artigo"]=CODNOVO
                                  EndIf   
                                  Moveto "Iten_tec"
                                  End Down
                                  CopyFromArray REG_ITTECIDO
                                  UnLockrecord                                               
                          EndIf      
                  EndIf
          EndIf
          Moveto "Iten_Cor" 
          Skip
          If Eot()
             Then QuitLoop
          EndIf
        EndWhile
        If Not ACHOU_NOVA_COR And VSDGSELECIONA=1
           Then Mensagem("N„o h  novas cores a ser inserida!")  
        EndIf
   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 ITENS_EDIT
   Then FastMsg("Exclus„o n„o permitida !")
        Return
EndIf  

If MostraMensagem           
   Then MSG=    "Antes de excluir um ITEM observe:                      //"
        MSG=MSG+"  - Vocˆ n„o deve excluir este item se o mesmo j  tenha//"
        MSG=MSG+"    sido usado, lan‡ado ou  referenciado  em  qualquer //"
        MSG=MSG+"    parte do Sistema;                                  //"
        MSG=MSG+"  - Para evitar maiores problemas o torne INATIVO!     //"
        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, das tabelas de pre‡os;               // //"
        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 "FornProd"
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 "Iten_com"
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_bar"
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         

If SYS_CODIGO_CLIENTE="0388"
   Then Moveto "Iten_Loc"        
        Moveto [Codigo do Item]
        Locate [Itens->Codigo do Item]
        If RetVal
           Then While [Codigo do Item]=[Itens->Codigo do Item]
                  Del
                EndWhile
        EndIf
EndIf                               
              
If PARAM_ABA_eCOMMERCE
   Then Moveto "Iten_eco"
        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                 
EndIf
              
If PARAM_ABA_TECIDO
   Then Moveto "Iten_tec"
        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                 
EndIf
               
Moveto "Itens"
FormKey
Grava_LogEx("Itens")
Del
EndProc

;*******************************************************************************
;* Atualiza Dados nos itens da mesma referencia                                *
;*******************************************************************************
Proc Atualiza_Referencias2(Cor,CodCor,SiglaCor,TipoItem)
Private CODNOVO,wi,i,cont,tpitem

Cont=2

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"
                  CODNOVO=MudaCodigoPara(CODNOVO,TpItem)
                  If CODNOVO=CODITEM
                     Then QuitLoop
                  EndIf
              EndSwitch
                      
              CODNOVO=SubStr(CODNOVO,1,(10-Len(Cor+Tm)))+Cor+tm

              Moveto [Codigo do Item]
              Locate CODNOVO
              If RetVal
                 Then [Inativo]=Regitem["Inativo"]
                      unLockrecord
              EndIf

              If wi=2
                 Then tpitem=TipoItem
              Endif

            EndFor
    EndIf
EndFor

EndProc

;*******************************************************************************
;* Aten‡Æo para quando for altera‡Æo do tipo ou a grade do item                *
;*******************************************************************************
Proc Atencao(PARAM)
Private PARAM                           

COR_MENSAGEM="1"      

Switch
  Case PARAM="Grade" : 
    MSG="Se vocˆ alterar esta grade, observe:                     //"
  Case PARAM="Tipo" :                                      
    MSG="Se vocˆ alterar o tipo do item, observe:                 //"
EndSwitch      
    
MSG=MSG+" - como ficam as referˆncias j  cadastradas,             //"
MSG=MSG+" - como ficam os pedidos j  lan‡ados,                    //"
MSG=MSG+"   ** no caso de pedidos em aberto **                    // //"

MSG=MSG+"As referˆncias e pedidos devem ser corrigidos pois:      //"
MSG=MSG+" - o sistema n„o faz isso automaticamente,               //"
MSG=MSG+" - erros de itens n„o cadastrados v„o ocorrer,           //"
MSG=MSG+" - erros de grade da referˆncia v„o ocorrer,             // //"

MSG=MSG+" ** Ao criar nova grade fa‡a primeiro um planejamento    //"
MSG=MSG+"    para evitar maiores transtornos.                     // //"
MSG=MSG+"Para maiores esclarecimentos contacte o suporte da Vise !"

Mensagem(MSG)

EndProc ;Atencao()

;*******************************************************************************
;* Atualiza Dados nos itens da mesma referencia                                *
;*******************************************************************************
Proc Atualiza_Referencias()
Aguarde("Atualizando Grades da Referˆncia")

If Not Monta_Array_Grade()
   Then Return False
EndIf 

CopyToArray RegItem
CODITEM=[Codigo do Item]

Moveto "Iten_Cor"
Moveto [Codigo do Item]
Locate CODITEM
If RetVal
   Then While [Codigo do Item]=CODITEM
          Switch 
            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"  Or
                 SYS_CLIENTE_CONFEC="0079"  Or
                 SYS_CODIGO_CLIENTE="0243"   :
                 Atualiza_Referencias2(AlinhM(StrVal([Sequencia da Cor_Tecido]),2),[Codigo da Cor_Tecido],Completa([Sigla Cor_Tecido],4," "),"P")
          EndSwitch
           
          Moveto "Iten_Cor" 
          Skip
          If Eot()
             Then QuitLoop
          EndIf
        EndWhile
   Else Switch
          OtherWise: Atualiza_Referencias2("","","","P")
        EndSwitch  
EndIf

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 Familia])         Then [Descricao da Familia     ]=""  EndIf

If Ajusta_Controle()
   Then [Data da Manutencao ] =  Today()
        [Hora da Manutencao ] =  Time()
        [Chapa              ] =  SYS_CHAPA_USUARIO
EndIf
UnLockRecord
FormKey

If CHAVE=0 And [Tipo do Item]="D" And [Codigo da Grade]<>"" And [Inativo]<>REG_ITEMANT["Inativo"]
   Then Atualiza_Referencias()
EndIf   

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 "FornProd"
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]
          [Referencia       ]=""
          [Referencia       ]=[Itens->Referencia    ]
          [Lookup_Produto   ]=""
          [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 verificar ocorrˆncia de altera‡Æo de registro                   *
;*******************************************************************************
Proc Ajusta_Controle()
Private MODIFICOU,ARRAY_ITEM_NOVO

Switch
  Case CHAVE=1                    : Return True
  Case Not IsAssigned(ARRAY_ITEM) : Return False
EndSwitch

CopyToArray ARRAY_ITEM_NOVO

MODIFICOU=False
For ty From 1 To ArraySize(ARRAY_ITEM)
  If ARRAY_ITEM_NOVO[ty]<>ARRAY_ITEM[ty]
     Then MODIFICOU=True
          QuitLoop  
  EndIf
EndFor

Return MODIFICOU

EndProc

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

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

SetaCorRegistro("Paginar")
Home
If Opcao="LOCAL"
   Then Moveto [Codigo_Localizacao]
   Else Moveto [Descricao do Item ]
EndIf   

While True
      TIP_COD=[Tipo Codigo_Barras]
      COD_BAR=[Codigo de Barras  ]

      SetaCorRegistro("Paginar")
      PegaPosForm()
      Switch
        Case Opcao="CLASSIFICACAO"   Or
             Opcao="CLASSIFICACAO2"   : If Field()="Unidade Fiscal"         Or
                                           Field()="Codigo da Familia"      Or
                                           Field()="Codigo do Grupo"        Or
                                           Field()="Codigo da Marca"        Or
                                           Field()="Codigo da Cor_Tecido"   Or
                                           Field()="Codigo do Departamento"
                                           Then SetaCorRegistro("Editar_Campo")
                                                ImageRights
                                           Else ImageRights ReadOnly      
                                        EndIf   
        Case Opcao="CDBARRAS"         : If Field()="Tipo Codigo_Barras"     Or
                                           Field()="Codigo de Barras"     
                                           Then SetaCorRegistro("Editar_Campo")
                                                ImageRights
                                           Else ImageRights ReadOnly      
                                        EndIf                               
                                         
        Case Opcao="LOCAL"            : If Field()="Codigo_Localizacao"
                                           Then SetaCorRegistro("Editar_Campo")
                                                ImageRights
                                           Else ImageRights ReadOnly      
                                        EndIf    
        Case Field()="Codigo do Item" : ImageRights ReadOnly
        OtherWise                     : ImageRights
      EndSwitch

      TECLA=" F3=Retornar  Del=Excluir                             Ctrl+Z=Localizar  "
      
      If Opcao="LOCAL"
         Then TECLA=" F3=Retornar  Del=Excluir             F5=Localiza‡Æo  Ctrl+Z=Localizar  "
      EndIf   

      If Field()="Unidade Interna"        Or
         Field()="Tipo do Item"           Or
         Field()="Codigo da Familia"      Or
         Field()="Codigo do Grupo"        Or
         Field()="Codigo da Marca"        Or
         Field()="Codigo do Departamento" Or
         Field()="Codigo da Cor_Tecido"   Or
         Field()="Codigo da Grade"        Or
         Field()="Codigo_Localizacao"     Or
         Field()="Tipo Codigo_Barras"
         Then MSGCAMPO=MSGCAMPO+", [F1]Consultar tabela"
              TECLA=" F3=Retornar  Del=Excluir  F1=Tabela                  Ctrl+Z=Localizar  "
              If Opcao="LOCAL"
                 Then TECLA=" F3=Retornar  Del=Excluir  F1=Tabela  F5=Localiza‡Æo  Ctrl+Z=Localizar  "    
              EndIf
      EndIf
         
      If Opcao<>"LOCAL"                   And 
         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
           Until "ENTER","DEL","FIELDVIEW","F35","ZOOM","ZOOMNEXT","UP","DOWN","PGUP","PGDN",
                 "HOME","END","DEL","RIGHT","LEFT","F1","F3","F5","INS","ESC"

      Switch
      Case RetVal="F1":
           If Field()="Unidade Interna"        Or
              Field()="Tipo do Item"           Or
              Field()="Codigo da Familia"      Or
              Field()="Codigo do Grupo"        Or
              Field()="Codigo da Marca"        Or
              Field()="Codigo do Departamento" Or
              Field()="Codigo da Cor_Tecido"   Or
              Field()="Codigo_Localizacao"     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 = "F5" :
           If Opcao="LOCAL"
              Then GetRecord "\\Sistemas\\Estoque\\TpItem" [Tipo do Item] To REG_TPITEM
                   If RetVal
                      Then If SubStr(REG_TPITEM["Controla Estoque"],1,1)="N" Or [Itens->Tipo do Item]="S"
                              Then FastMsg("Fun‡„o n„o habilitada para este tipo de item!")
                                   Loop
                           EndIf   
                   EndIf
                   PARAM_EDITA_LOCALIZACAO=True
                   Play "ADD_LOC"
                   Moveto "Itens" Moveto [Codigo_Localizacao]
           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 Opcao<>"LOCAL"             And 
              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 Opcao="CDBARRAS"   
              Then Switch
                     Case Field()="Referencia" : If IsBlank([Tipo Codigo_Barras])
                                                    Then Moveto [Tipo Codigo_Barras]
                                                    Else If [Tipo Codigo_Barras]="F-EAN14" Or
                                                            [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 [Tipo Codigo_Barras]
                                                            Else Moveto [Codigo de Barras] 
                                                         EndIf
                                                 EndIf     
                     OtherWise : Left
                   EndSwitch
              Else Left
           EndIf
      
         ;;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
           
      Case Retval="ENTER" Or RetVal="RIGHT":
           If Field()="Fator de Conversao" And
              IsBlank([])
              Then []=1
           EndIf
                       
           Switch
             Case Opcao="CDBARRAS" :             
                  Switch
                     Case Field()="Tipo Codigo_Barras"  : If IsBlank([])
                                                             Then [Codigo de Barras]=""
                                                                  Moveto [Referencia]
                                                             Else If Checa_CdBarras("TipoCodigo")
                                                                     Then If [Tipo Codigo_Barras]="F-EAN14" Or
                                                                             [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 [Referencia]
                                                                             Else Moveto [Codigo de Barras]
                                                                          EndIf
                                                                  EndIf        
                                                          EndIf   
                     Case Field()="Codigo de Barras"    : If IsBlank([])
                                                            Then Moveto [Codigo de Barras]
                                                            Else If IsBlank([Tipo Codigo_Barras])
                                                                    Then Moveto [Codigo de Barras]
                                                                    Else If Not Localiza_CdBar("VERIFICAR") Then Loop EndIf    
                                                                 EndIf
                                                          EndIf
                     Otherwise                          : Right  
                  EndSwitch                  
             Case Opcao="LOCAL" : 
                         If Field()="Codigo_Localizacao"
                            Then If IsBlank([])
                                    Then [Localizacao]=""
                                         Right
                                    Else GetRecord "\\Sistemas\\Estoque\\Iten_Loc" [Codigo do Item],[Localizacao] To REG_LOCAL
                                         If Retval
                                            Then Mensagem("Localiza‡Æo "+[Localizacao]+" j  est  cadastrada para este item!")
                                            Else Right 
                                         EndIf   
                                 EndIf
                            Else Right      
                         EndIf       
             OtherWise : Right
           EndSwitch
              
           ;;If Field()="Codigo da Cor_Tecido" Or
           ;;   Field()="Codigo da Grade" Or
           ;;   Field()="Localizacao"
           ;;   Then Moveto [Descricao do Item   ]
           ;;        Loop
           ;;EndIf
          
      OtherWise: 
           Tecla_Press=RetVal
           ncampoedit=Field()
           Switch
            Case Retval="F3":
                 If RecordStatus("Modified")
                      Then If Checa_CdBarras("TipoCodigo") And
                              Checa_CdBarras("Codigo")
                              Then Moveto Field ncampoedit ImageRights
                                   Atualiza()
                              Else If Opcao="CDBARRAS"
                                      Then Moveto [Tipo Codigo_Barras]
                                           Loop
                                      Else QuitLoop
                                   EndIf
                           EndIf
                 EndIf
                 QuitLoop
            Case Retval="ESC": 
                 Mensagem("Para finalizar utilize a tecla F3!")
            OtherWise: 
                 If RecordStatus("Modified")
                    Then If Checa_CdBarras("TipoCodigo") And
                            Checa_CdBarras("Codigo")
                            Then Moveto Field ncampoedit ImageRights
                                 Atualiza()   
                            Else If Opcao="CDBARRAS"
                                    Then Moveto [Tipo Codigo_Barras]
                                         Loop
                                    Else QuitLoop
                                 EndIf
                         EndIf
                  EndIf
           EndSwitch
           KeyPress Tecla_Press
           If RecordStatus("New")
              Then Del
                   QuitLoop
           EndIf
      EndSwitch
EndWhile    
ImageRights
EndProc

;*******************************************************************************
;* Rotina Substitui                                                            *
;*******************************************************************************
Proc Substitui()
private NR, cc

cc = 0
NR = NRecords("Itens")

View "Iten_Com"
CoEdit "Itens"
Scan
  Barra(NR, RecNo())
  Aguarde("Aguarde, atualizando dados "+BARRA_STRING)

  if not isblank(VSDGTPITEM) and [Tipo do Item      ]<>VSDGTPITEM  then loop endif
  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 not isblank(VSDGLOCAL)  and [Codigo_Localizacao]<>VSDGLOCAL   then loop endif

  If not IsBlank(VSDGFAMI2)  or 
     not IsBlank(VSDGGRP2)   or 
     not IsBlank(VSDGMARCA2) or 
     not IsBlank(VSDGLOCAL2) or  
     (VSDGOPCAOA[1] or VSDGOPCAOB[1] or VSDGOPCAOC[1]) 
     then
          while true
            if not islockrecord()
               then cc=cc+1
                    if not isblank(VSDGFAMI)   and not isblank(VSDGFAMI2)            
                       then [Codigo da Familia ]=VSDGFAMI2
                    endif   
                  
                    if not isblank(VSDGGRP)    and not isblank(VSDGGRP2)            
                       then [Codigo do Grupo   ]=VSDGGRP2
                    endif   
                  
                    if not isblank(VSDGMARCA)  and not isblank(VSDGMARCA2)            
                       then [Codigo da Marca   ]=VSDGMARCA2
                    endif   
                  
                    if not isblank(VSDGLOCAL)  and not isblank(VSDGLOCAL2)            
                       then [Codigo_Localizacao]=VSDGLOCAL2
                    endif   

                    If VSDGOPCAOA[1] And Not IsBlank(VSDGVALORA)
                       Then [Comissao do Item       ]=VSDGVALORA 
                    EndIf
                    
                    if (VSDGOPCAOB[1] And Not IsBlank(VSDGVALORB)) or
                       (VSDGOPCAOC[1] And Not IsBlank(VSDGVALORC))   
                       Then 
                            moveto "Iten_Com"
                            moveto [Codigo do Item]
                            locate [Itens->Codigo do Item]
                            if retval
                               then while true
                                      if not islockrecord()
                                         then 
                                              If (VSDGOPCAOC[1] And Not IsBlank(VSDGVALORC))
                                                  then [Desconto Maximo]=VSDGVALORC
                                              endif    
                                              
                                              If VSDGOPCAOB[1] And Not IsBlank(VSDGVALORB)
                                                 Then [Indice Preco de Venda  ]=VSDGVALORB 
                                              EndIf
                                              
                                              unlockrecord
                                              quitloop
                                      endif        
                                    endwhile 
                            endif                                                 
                            moveto "Itens"                                              
                    EndIf

                    unlockrecord               
                    quitloop               
            endif
          endwhile     
  endif   

endscan
Do_It!
ClearAll

LimpAguarde()
Mensagem("// "+ltrim(format("W7,ECI",cc))+" Itens atualizados ! // //Opera‡„o Finalizada !")

EndProc ; (Substitui)

;*******************************************************************************
;* Rotina                                                                      *
;*******************************************************************************
Proc SD_Dialog(Disparo,Campo,Evento,Elemento)
Temp=True
MSG_CAMPO=""
TECLA=""

If Disparo="OPEN"  
   Then AoCriarShowDialog()
        TiraSombraShowDialog()
EndIf
If Disparo="EVENT" And Evento["Type"]="KEY" Then
   Switch
     Case Evento["KeyCode"] = 9: Temp=False
     Case Evento["KeyCode"] = -59: 
          If Campo="TG_FAMI2" Or Campo="TG_GRP2" Or Campo="TG_MARCA2" Or Campo="TG_LOCAL2"  
             Then 
                  Dynarray WinArray5[]
                  Window Handle Dialog To JANELA_DIALOG
                  Window GetAttributes JANELA_DIALOG To WinArray5
                 
                  If Campo="TG_FAMI2"  Then View "\\Sistemas\\Estoque\\Familia"   executarF1=True EndIf
                  If Campo="TG_GRP2"   Then View "\\Sistemas\\Estoque\\Grupos"    executarF1=True EndIf
                  If Campo="TG_MARCA2" Then View "\\Sistemas\\Estoque\\Marcas"    executarF1=True EndIf
                  If Campo="TG_LOCAL2" Then View "\\Sistemas\\Estoque\\Localiza"  executarF1=True EndIf
     
                  If executarF1
                     Then
                     WinArray5["FLOATING"]=False
                     Window SetAttributes JANELA_DIALOG From WinArray5

                     If Consulta_Sem_F1()
                        Then Switch
                               Case Campo="TG_FAMI2":
                                    VSDGFAMI2    = [Codigo da Familia]
                                    VSDGNOMFAMI2 = [Descricao da Familia]
                               Case Campo="TG_GRP2":
                                    VSDGGRP2     = [Codigo do Grupo]
                                    VSDGNOMGRP2  = [Descricao do Grupo]
                               Case Campo="TG_MARCA2":
                                    VSDGMARCA2   = [Codigo da Marca]
                                    VSDGNOMMARCA2= [Descricao da Marca]
                               Case Campo="TG_LOCAL2":
                                    VSDGLOCAL2   = [Codigo_Localizacao]
                                    VSDGNOMLOCAL2= [Localizacao]
                       EndSwitch
                    EndIf
                   
                     Window Select JANELA_DIALOG
                     WinArray5["FLOATING"]=True
                     Window SetAttributes JANELA_DIALOG From WinArray5

                     ClearImage
                     Echo Normal
                     Echo Off                  
                  EndIf      
             Else Dialog_F1()
          EndIf     
     Case Evento["KeyCode"] =  27:
          Temp=False
          Switch
            Case Campo="TG_TPITEM"         : Campo="NO"
            Case Campo="TG_FAMI"           : Campo="TG_TPITEM"
            Case Campo="TG_FAMI2"          : Campo="TG_FAMI"
            Case Campo="TG_GRP"            : Campo="TG_FAMI2"
            Case Campo="TG_GRP2"           : Campo="TG_GRP"
            Case Campo="TG_MARCA"          : Campo="TG_GRP2"
            Case Campo="TG_MARCA2"         : Campo="TG_MARCA"
            Case Campo="TG_LOCAL"          : Campo="TG_MARCA2"
            Case Campo="TG_LOCAL2"         : Campo="TG_LOCAL"
            Case Campo="TG_OPCOESA"        : Campo="TG_LOCAL2"
            Case Campo="TG_VALORA"         : Campo="TG_OPCOESA"

            Case Campo="TG_OPCOESB"        : Campo="TG_OPCOESA"
            Case Campo="TG_VALORB"         : Campo="TG_OPCOESB"

            Case Campo="TG_OPCOESC"        : Campo="TG_OPCOESB"
            Case Campo="TG_VALORC"         : Campo="TG_OPCOESC"

            Case Campo="YES" Or Campo="NO" : Campo="TG_TPITEM"
          EndSwitch
     Case Evento["KeyCode"] = 13:
          Temp=False
          If Checa_TAG()
             Then Switch
                    Case Campo="TG_TPITEM"   : Campo="TG_FAMI"
                    Case Campo="TG_FAMI"     : Campo="TG_FAMI2"
                    Case Campo="TG_FAMI2"    : Campo="TG_GRP"
                         VSDGFAMI2=ControlValue("TG_FAMI2")
                         If Not IsBlank(VSDGFAMI2)
                            Then VSDGFAMI2=ALINHM(VSDGFAMI2,3)
                                 GetRecord "\\Sistemas\\Estoque\\Familia" VSDGFAMI2 To FAM
                                 If RetVal
                                    Then VSDGNOMFAMI2 = FAM["Descricao da Familia"]
                                    Else MENSAGEM("Familia n„o Cadastrada !")
                                         Campo="TG_FAMI2"
                                 EndIf   
                            Else VSDGNOMFAMI2=""
                         EndIf
                    Case Campo="TG_GRP"      : Campo="TG_GRP2"
                    Case Campo="TG_GRP2"     : Campo="TG_MARCA"
                         VSDGGRP2=ControlValue("TG_GRP2")
                         If Not IsBlank(VSDGGRP2)
                           Then VSDGGRP2=ALINHM(VSDGGRP2,3)
                                GetRecord "\\Sistemas\\Estoque\\Grupos" VSDGGRP2 To GRP
                                 If RetVal
                                    Then VSDGNOMGRP2 = GRP["Descricao do Grupo"]
                                    Else MENSAGEM("Grupo n„o Cadastrado !")
                                         Campo="TG_GRP2"
                                 EndIf
                           Else VSDGNOMGRP2=""
                         EndIf     
                    Case Campo="TG_MARCA"    : Campo="TG_MARCA2"
                    Case Campo="TG_MARCA2"   : Campo="TG_LOCAL"
                         VSDGMARCA2=ControlValue("TG_MARCA2")
                         If Not IsBlank(VSDGMARCA2)
                           Then VSDGMARCA2=ALINHM(VSDGMARCA2,3)
                                GetRecord "\\Sistemas\\Estoque\\Marcas" VSDGMARCA2 To MAR
                                 If RetVal
                                    Then VSDGNOMMARCA2 = MAR["Descricao da Marca"]
                                    Else MENSAGEM("Marca n„o Cadastrada !")
                                         Campo="TG_MARCA2"
                                 EndIf
                           Else VSDGNOMMARCA2=""
                         EndIf
                    Case Campo="TG_LOCAL"    : Campo="TG_LOCAL2"     
                    Case Campo="TG_LOCAL2"   : Campo="TG_OPCOESA"
                         VSDGLOCAL2=ControlValue("TG_LOCAL2")
                         If Not IsBlank(VSDGLOCAL2)
                            Then View NOWINDOW "\\Sistemas\\Estoque\\Localiza"
                                 Moveto [Codigo_localizacao]
                                 Locate VSDGLOCAL2
                                 If RetVal
                                    Then VSDGNOMLOCAL2=[Localizacao]
                                    Else MENSAGEM("Localiza‡Æo n„o Cadastrada !")
                                         Campo="TG_LOCAL2"
                                 EndIf
                            Else VSDGNOMLOCAL2=""
                         EndIf

                    Case Campo="TG_OPCOESA"   : 
                         If VSDGOPCAOA[1]=True
                            Then Campo="TG_VALORA"
                            Else VSDGVALORA=blanknum() 
                                 Campo="TG_OPCOESB"     
                         EndIf   
                    Case Campo="TG_VALORA"   : Campo="TG_OPCOESB"
                         VSDGVALORA = ControlValue("TG_VALORA")
                              
                    Case Campo="TG_OPCOESB"   : 
                         If VSDGOPCAOB[1]=True
                            Then Campo="TG_VALORB"
                            Else VSDGVALORB=blanknum() 
                                 Campo="TG_OPCOESC"     
                         EndIf   
                    Case Campo="TG_VALORB"   : Campo="TG_OPCOESC"
                         VSDGVALORB = ControlValue("TG_VALORB")
                              
                    Case Campo="TG_OPCOESC"   : 
                         If VSDGOPCAOC[1]=True
                            Then Campo="TG_VALORC"
                            Else VSDGVALORC=blanknum() 
                                 Campo="YES"     
                         EndIf   
                    Case Campo="TG_VALORC"   : Campo="YES"
                         VSDGVALORC = ControlValue("TG_VALORC")
                              
                  EndSwitch
          EndIf
          RefreshDialog
   EndSwitch
EndIf

If Campo="TG_FAMI2" Or Campo="TG_GRP2" Or Campo="TG_MARCA2" Or Campo="TG_LOCAL2"
   Then MSGCAMPO=MSGCAMPO+", [F1]Consultar tabela"
EndIf

Switch
 Case Campo="TG_OPCOESA": MensagemCheckBoxes()
 Case Campo="TG_OPCOESB": MensagemCheckBoxes()
 Case Campo="TG_OPCOESC": MensagemCheckBoxes()

 Case Campo="TG_VALORA" : MSG_CAMPO="Informe a porcentagem (%)"
 Case Campo="TG_VALORB" : MSG_CAMPO="Informe a porcentagem (%)"
 Case Campo="TG_VALORC" : MSG_CAMPO="Informe a porcentagem (%)"

 Case Campo="TG_FAMI2"  : MSG_CAMPO="Informe a nova Familia"
 Case Campo="TG_GRP2"   : MSG_CAMPO="Informe o novo Grupo"
 Case Campo="TG_MARCA2" : MSG_CAMPO="Informe a nova Marca"
 Case Campo="TG_LOCAL2" : MSG_CAMPO="Informe a Localiza‡„o"
EndSwitch
Monta_Prompt(MSG_CAMPO,TECLA)

Return Temp
EndProc

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

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

  Label  @ 00,03 "Tipo do Item"  For "TG_TPITEM"
  Accept @ 01,04 Width 04 "A1"  Picture "!" Tag "TG_TPITEM"      To VSDGTPITEM
  Accept @ 01,09 Width 25 "A20" Picture "!*!" Tag "TG_NOMTPITEM" To VSDGNOMTPITEM

  Label  @ 02,00 "Familia     - Atual"  For "TG_FAMI"
  Accept @ 03,02 Width 06 "A3"  Picture "#*#" Tag "TG_FAMI" To VSDGFAMI
  Accept @ 03,09 Width 25 "A25" Picture "!*!" Tag "TG_NOMFAMI" To VSDGNOMFAMI

  Label  @ 04,00 "Grupo       - Atual"  For "TG_GRP"
  Accept @ 05,02 Width 06 "A3"  Picture "#*#" Tag "TG_GRP" To VSDGGRP
  Accept @ 05,09 Width 25 "A25" Picture "!*!" Tag "TG_NOMGRP" To VSDGNOMGRP

  Label  @ 06,00 "Marca"  For "TG_MARCA"
  Accept @ 07,02 Width 06 "A3"  Picture "#*#" Tag "TG_MARCA"    To VSDGMARCA
  Accept @ 07,09 Width 25 "A25" Picture "!*!" Tag "TG_NOMMARCA" To VSDGNOMMARCA

  Label  @ 08,00 "Localiza‡„o - Atual"  For "TG_LOCAL"
  Accept @ 09,01 Width 33 "A12" Picture "!*!" Tag "TG_LOCAL" To VSDGLOCAL
  Accept @ 10,01 Width 33 "A12" Picture "!*!" Tag "TG_NOMLOCAL" To VSDGNOMLOCAL

  Label  @ 02,35 "Familia - Novo"  For "TG_FAMI2"
  Accept @ 03,37 Width 06 "A3"  Picture "#*#" Tag "TG_FAMI2" To VSDGFAMI2
  Accept @ 03,44 Width 25 "A25" Picture "!*!" Tag "TG_NOMFAMI2" To VSDGNOMFAMI2
  
  Label  @ 04,35 "Grupo - Novo"  For "TG_GRP2"
  Accept @ 05,37 Width 06 "A3"  Picture "#*#" Tag "TG_GRP2" To VSDGGRP2
  Accept @ 05,44 Width 25 "A25" Picture "!*!" Tag "TG_NOMGRP2" To VSDGNOMGRP2
                                             
  Label  @ 06,35 "Marca - Novo"  For "TG_MARCA2"
  Accept @ 07,37 Width 06 "A3"  Picture "#*#" Tag "TG_MARCA2"    To VSDGMARCA2
  Accept @ 07,44 Width 25 "A25" Picture "!*!" Tag "TG_NOMMARCA2" To VSDGNOMMARCA2
            
  Label  @ 08,35 "Localiza‡„o - Novo"  For "TG_LOCAL2"
  Accept @ 09,36 Width 33 "A12"  Picture "#*#" Tag "TG_LOCAL2"    To VSDGLOCAL2
  Accept @ 10,36 Width 33 "A25" Picture "!*!" Tag "TG_LOCALNOM2" To VSDGNOMLOCAL2

  @ 12,01 ?? "Opcoes"
  CheckBoxes @ 13,00 Height 3 Width 41 Tag "TG_OPCOESA"  "%~C~omissao             " to VSDGOPCAOA[1]
  CheckBoxes @ 14,00 Height 3 Width 41 Tag "TG_OPCOESB"  "%Calculo ~P~re‡o Venda  " to VSDGOPCAOB[1]
  CheckBoxes @ 15,00 Height 3 Width 41 Tag "TG_OPCOESC"  "%~D~esconto M ximo      " to VSDGOPCAOC[1]

  Accept @ 13,26 Width 8 "N"  Tag "TG_VALORA"  To VSDGVALORA
  Accept @ 14,26 Width 8 "N"  Tag "TG_VALORB"  To VSDGVALORB
  Accept @ 15,26 Width 8 "N"  Tag "TG_VALORC"  To VSDGVALORC

  Pushbutton @ 18,25 width 11 "~O~k"      OK     Default Value "Ok" Tag "YES" To BottonValue
  Pushbutton @ 18,39 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":
       msgcampo=""
       echo Normal
       echo Off

       ShowPopup " Tipos " CENTERED
        "~A~-EAN13     " : " EAN13                                      " : "A-EAN13",
        "~B~-EAN8      " : " EAN8                                       " : "B-EAN8",
        "~D~-COD128    " : " COD128 Livre                               " : "D-COD128",
        "~F~-EAN14     " : " EAN14 (DUN-14)                             " : "F-EAN14",
        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" : ImageRights
       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]="F-EAN14"      : 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="TipoCodigoF":
       [Codigo Fornecedor]=Mod11_CalcEAN13("CALC","78"+[Codigo do Item])
       
  Case Tipo="Codigo":
       CDBAROk=True
       Switch
         Case [Tipo Codigo_Barras]="F-EAN14"  : 
           Switch
             Case Len([Codigo de Barras])<>14 :
               CDBAROK=False
               Mensagem("C¢digo de Barras EAN14 diferente de 14 digitos !")
             Case NumVal(SubStr([Codigo de Barras],1,1))<1 Or NumVal(SubStr([Codigo de Barras],1,1))>8 :
               CDBAROK=False   
               Mensagem("O primeiro d¡gito esta incorreto para variante log¡stica!//Variante log¡stica deve ser compreendido entre 1 e 8!")
           EndSwitch    
         Case [Tipo Codigo_Barras]="A-EAN13"      :
           Switch
             Case Len([Codigo de Barras])<>13 :
               CDBAROK=False
               Mensagem("C¢digo de Barras EAN13 diferente de 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 diferente de 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

;*******************************************************************************
;* Consulta IBPT                                                               *
;*******************************************************************************
Proc IBPT()
Private Aliq

Switch
 Case [Tipo Tributacao]="C" : Aliq=Pega_AliqIBPT([Tipo Tributacao], [Tipo do Item], [Codigo_Servico], "")
 OtherWise                  : Aliq=Pega_AliqIBPT([Tipo Tributacao], [Tipo do Item], [NCM           ], [Iten_Com->EX_TIPI])
EndSwitch

MSG=    Completa("Indice da carga tribut ria pela tabela IBPT:",60," ")+"// //"
MSG=MSG+Completa("        Item "+[Codigo do Item   ],60," ")+"//"
MSG=MSG+Completa("             "+[Descricao do Item],60," ")+"// //"
MSG=MSG+Completa("   ICMS CST: "+[Tipo Tributacao  ],60," ")+"//"
Switch
 Case [Tipo do Item]="C" :
   MSG=MSG+Completa(" [2] LC 116: "+StrVal([Codigo_Servico]),60," ")+"//"
 OtherWise                    : 
   MSG=MSG+Completa(" [1]    NCM: "+[NCM    ],60," ")+"//"
   MSG=MSG+Completa("    EX TIPI: "+[Iten_Com->EX_TIPI],60," ")+"//"
EndSwitch                     
MSG=MSG+"//"      
MSG=MSG+Completa("Indice IBPT:"+Format("W7.2,EIC",Aliq)+"%           ",60," ")
If aliq=0
   Then MSG=MSG+"// //"
        MSG=MSG+Completa("Aliquota do total de tributos nÆo encontrado para este item,",60," ")+" //"
        MSG=MSG+Completa("conforme tabela IBPT. Verificar cadastro do item e a  tabela",60," ")+" //"
        MSG=MSG+Completa("IBPT.                                                       ",60," ")
EndIf    
Mensagem(MSG)
EndProc

;*******************************************************************************
;* Consulta IBPT                                                               *
;*******************************************************************************
Proc Pega_AliqIBPT(cst, tpitem, ncm, ex)
private cst, tpitem, ncm, ex, orig, codigo, tipo, aliq, regTibpt, regempresas, UF_EMPRESA  

If Not IsAssigned(VSDG_EMPRESA_PADRAO)          
   Then 
        UF_EMPRESA = "MG"
   else
        getrecord "\\Sistemas\\Cadastro\\Empresas" VSDG_EMPRESA_PADRAO to regempresas
        If RetVal
           Then UF_EMPRESA = regempresas["UF Empresa"]
           Else UF_EMPRESA = ""
        EndIf
   
EndIf

orig=SubStr(cst,1,1)
Switch
 Case orig="1" Or orig="2" Or       
      orig="6" Or orig="7"    : orig="I"  
 OtherWise                    : orig="N"
EndSwitch

aliq=0
Switch
 Case TpItem="C" :
    tipo="2"
    If ncm>0
       Then codigo=StrVal(ncm)
       Else codigo=""
    EndIf
       ex=""
 OtherWise                    : 
     tipo="0"
   codigo=ncm
EndSwitch

getrecord "\\Sistemas\\Vendas\\Tibpt" UF_EMPRESA,codigo,ex,tipo to regTibpt
if retval
  Then 
       Switch
         Case orig="N" : aliq=regTibpt["NacionalFederal" ]  
         Case orig="I" : aliq=regTibpt["ImportadoFederal"]  
       EndSwitch
endif  

return aliq
EndProc

;*******************************************************************************
;* Seta ABA Tecidos                                                            *
;*******************************************************************************
Proc Seta_Aba_Tecidos()
 
If SYS_CHAPA_USUARIO ="9999" Or
   SYS_CODIGO_CLIENTE="0239" Or 
   SYS_CODIGO_CLIENTE="0345" Or 
   SYS_CODIGO_CLIENTE="0359" Or
   SYS_CODIGO_CLIENTE="0374" Or  
   SYS_CODIGO_CLIENTE="0382" Or 
   SYS_CODIGO_CLIENTE="0388" Or 
   SYS_CODIGO_CLIENTE="0390" Or 
   SYS_CODIGO_CLIENTE="0396" Or
   SYS_CODIGO_CLIENTE="0397" Or
   SYS_CODIGO_CLIENTE="0318" Or
   SYS_CODIGO_CLIENTE="0361" Or
   SYS_CODIGO_CLIENTE="0370" Or
   SYS_CODIGO_CLIENTE="0392" Or
   SYS_CODIGO_CLIENTE="0404" Or
   SYS_CODIGO_CLIENTE="0408" Or
   SYS_CODIGO_CLIENTE="0418" Or
   SYS_CODIGO_CLIENTE="0419" Or
   SYS_CODIGO_CLIENTE="0429"
   Then PARAM_ABA_TECIDO = True
   Else PARAM_ABA_TECIDO = False
EndIf
EndProc ;Seta_Aba_Tecidos()

;*******************************************************************************
;* Implementa Tabelas                                                          *
;*******************************************************************************
Proc AbreTabelas()
Aguarde("Aguarde, Carregando tabelas")

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

{TableAdd} {Cotacao}
{TableAdd} {Iten_Com}
{TableAdd} {Iten_Loc}
{TableAdd} {Iten_Tec}
{TableAdd} {Iten_eco}
{TableAdd} {Iten_bar}
{TableAdd} {Iten_Cor}
{TableAdd} {Itens_CB}
{TableAdd} {FornProd}
{TableAdd} {\\Sistemas\\Cadastro\\Usuarios}
{TableAdd} {\\Sistemas\\Vendas\\TbPrite}
{TableAdd} {\\Sistemas\\Vendas\\Tbprcit}
{TableAdd} {\\Sistemas\\Producao\\FormulaC}
{TableAdd} {\\Sistemas\\Producao\\FormulaI}
Moveto "Itens"

limparodape(0)
Return True
EndProc

;*******************************************************************************
;* Rotina para controlar Edicao do registro                                    *
;*******************************************************************************
Proc Verifica_Tela(CAMPO)
Private CAMPO

Switch
  Case (CAMPO="Codigo do Item"             Or
        CAMPO="Tipo do Item"               Or
        CAMPO="Referencia"                 Or
        CAMPO="Tipo Codigo_Barras"         Or
        CAMPO="Codigo de Barras"           Or
        CAMPO="Codigo da Grade"            Or
        CAMPO="DTamanho"                   Or
        CAMPO="Inativo")                   Or
        CAMPO="Codigo da Familia"          Or
        CAMPO="Codigo do Grupo"            Or
        CAMPO="Codigo da Marca"            Or
        CAMPO="Codigo da Cor_Tecido"       Or
        CAMPO="Codigo do Departamento"     Or
        CAMPO="Codigo_Localizacao"         Or
        CAMPO="Codigo Fornecedor"          Or
        CAMPO="Unidade Entrada"            Or
        CAMPO="Unidade Interna"            Or
        CAMPO="Unidade Emabalagem"         Or
        CAMPO="Fator de Conversao"         Or
        CAMPO="Flag1"                      Or
        CAMPO="Fator Conversao Emabalagem"  :  TELA="TELA_CLAS"  
  
  Case CAMPO="Situacao"                   Or
       CAMPO="Vendagem"                   Or
       CAMPO="Fracionado"                 Or
       CAMPO="Peso Variavel"              Or
       CAMPO="Composto"                   Or
       CAMPO="Producao Esgotada"          Or
       CAMPO="Edita Descricao do Item"    Or
       CAMPO="Codigo Concentrador"        Or
       CAMPO="CEST"                       Or
       CAMPO="FCI"                        Or
       CAMPO="ANP_Codigo_Combustivel"     Or
       CAMPO="ANP_UF_Consumo"             Or
       CAMPO="Genero"                     Or
       CAMPO="EX_TIPI"                    Or                
       CAMPO="Codigo Enq_IPI"             Or 
       CAMPO="Quantidade Maxima Venda"    Or
       CAMPO="Desconto Maximo"            Or
       CAMPO="Flag2"                      Or
       CAMPO="Indice Preco de Venda"      Or
       CAMPO="Capacidade"                 Or
       CAMPO="Dimensoes"                   : TELA="TELA_COMP"
  
  Case CAMPO="Peso Liquido"               Or
       CAMPO="Peso Embalagem"             Or
       CAMPO="Volumes"                    Or
       CAMPO="NCM"                        Or
       CAMPO="Codigo_Servico"             Or
       CAMPO="Flag3"                      Or
       CAMPO="Comissao do Item"            : TELA="TELA_FAT"

  Case CAMPO="Tributacao de ICMS"         Or
       CAMPO="Tipo Tributacao"            Or
       CAMPO="Aliquota de ICMS"           Or
       CAMPO="Aliquota Reduzida BCICMS"   Or
       CAMPO="CSOSN"                      Or
       CAMPO="Tributacao de IPI"          Or
       CAMPO="IPI_CST"                    Or
       CAMPO="Aliquota de IPI"            Or
       CAMPO="Tributacao de ISSQN"        Or
       CAMPO="Aliquota de ISSQN"          Or
       CAMPO="PIS_CST"                    Or
       CAMPO="PIS_Aliquota"               Or
       CAMPO="COFINS_CST"                 Or
       CAMPO="COFINS_Aliquota"            Or
       CAMPO="Codigo MVA"                 Or
       CAMPO="IndEscala"                  Or
       CAMPO="CNPJFab"                    Or
       CAMPO="CBenef"                     Or
       CAMPO="Flag"                        : TELA="TELA_TRIB"
          
  Case CAMPO="Descricao_Item"             Or
       (CAMPO="Largura" And Table()="Iten_eco") Or 
       CAMPO="Altura"                     Or 
       CAMPO="Comprimento"                Or  
       CAMPO="Link_Imagem"                Or
       CAMPO="MVA_2"                       : TELA="TELA_ECO"
  
  Case CAMPO="Artigo"                     Or
       CAMPO="Composicao"                 Or
       CAMPO="Peca"                       Or
       (CAMPO="Largura" And Table()="Iten_tec") Or
       CAMPO="Largura Util"               Or
       CAMPO="Gramatura"                  Or
       CAMPO="Rendimento"                 Or
       CAMPO="Simbologia_Impressao"       : TELA="TELA_TECIDO"
       
  OtherWise                               : TELA=""     
EndSwitch

EndProc ;(Verifica_Tela)

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

;*******************************************************************************
;* Rotina para controlar Edicao do registro                                    *
;*******************************************************************************
Proc Controla_EdicaoC()

;Classifica‡Æo : "TELA_CLAS"
;Faturamento   : "TELA_FAT"
;Tributa‡Æo    : "TELA_TRIB"
;Tecido        : "TELA_TECIDO"
;eCommerce     : "TELA_ECO"

STATUS_INATIVO=[Inativo]
CopyToArray REG_ITEMANT

DIGITA=True

CampoAnt=""
Tecla_Funcao="TELA_CLAS"
TELA=Tecla_Funcao

While DIGITA
  DIGITA()
  If CHAVE=9 Then QuitLoop EndIf
                               
  While Not IsBlank(Tecla_Funcao)   
    TelaAnt=TELA
    Switch
      Case Tecla_Funcao=-116:
           Switch
             Case TELA="TELA_CLAS"     : TELA = "TELA_COMP"
             Case TELA="TELA_COMP"     : TELA = "TELA_FAT"
						 Case TELA="TELA_FAT"      : TELA = "TELA_TRIB"
             Case TELA="TELA_TRIB"     : If PARAM_ABA_eCOMMERCE
                                            Then TELA = "TELA_ECO" 
                                            Else If PARAM_ABA_TECIDO
                                                    Then TELA = "TELA_TECIDO"
                                                    ELse TELA = "TELA_CLAS"
                                                 EndIf    
                                         EndIf   
             Case TELA="TELA_ECO"      : If PARAM_ABA_TECIDO
                                            Then TELA = "TELA_TECIDO"
                                            ELse TELA = "TELA_CLAS"
                                         EndIf                            
             Case TELA = "TELA_TECIDO" : TELA = "TELA_CLAS"                          
             OtherWise                 : TELA = "" 
           EndSwitch
			Case Tecla_Funcao=-115:
           Switch
             Case TELA = "TELA_CLAS"     : If PARAM_ABA_TECIDO
                                              Then TELA = "TELA_TECIDO"
                                              Else If PARAM_ABA_eCOMMERCE
                                                      Then TELA = "TELA_ECO" 
                                                      Else TELA = "TELA_TRIB"
                                                   EndIf   
                                           EndIf   
             Case TELA = "TELA_COMP"     : TELA = "TELA_CLAS"
						 Case TELA = "TELA_FAT"      : TELA = "TELA_COMP"
             Case TELA = "TELA_TRIB"     : TELA = "TELA_FAT"
             Case TELA = "TELA_ECO"      : TELA = "TELA_TRIB"
             Case TELA = "TELA_TECIDO"   : If PARAM_ABA_eCOMMERCE
                                              Then TELA = "TELA_ECO" 
                                              Else TELA = "TELA_TRIB"   
                                           EndIf   
             OtherWise                   : TELA=""
           EndSwitch  
    EndSwitch
                       
    Switch
      Case TELA="TELA_CLAS"         : CAMPO="Codigo da Familia"
      Case TELA="TELA_COMP"         : CAMPO="Situacao"    
      Case TELA="TELA_FAT"          : CAMPO="Peso Liquido"
      Case TELA="TELA_TRIB"         : CAMPO="Tipo Tributacao"
      Case TELA="TELA_ECO"          : CAMPO="Descricao_Item"
      Case TELA="TELA_TECIDO"       : CAMPO="Artigo"
      OtherWise                     : CAMPO="Codigo da Familia"                                       
    EndSwitch
    
    ;---- Controle de Tela ----------------------------------------
    Switch 
      Case TELA="TELA_COMP"   : Tela_Complemento("Avancar")
      Case TELA="TELA_ECO"    : Tela_eCommerce("Avancar")
      Case TELA="TELA_TECIDO" : Tela_Tecido("Avancar")
      OtherWise               : If Table()<>"Itens"
                                   Then If Table()<>"Iten_com" 
                                           Then Tela_Tecido("Voltar")
                                           Else Tela_Complemento("Voltar")
                                        EndIf   
                                EndIf  
    EndSwitch
    Tecla_Funcao="" 
  EndWhile
EndWhile

If RecordStatus("Locked") Then UnLockRecord EndIf         
If OP_FORM="4"
   Then PickForm "4"
EndIf

SaveTables

EndProc ;(Controla_EdicaoC) 
      
;*******************************************************************************
;* Rotina Principal                                                            *
;*******************************************************************************
AutoLib="\\Sistemas\\Cadastro\\Bibliot,\\Sistemas\\Cadastro\\Bib_Show,\\Sistemas\\Estoque\\Bib_Estq"
SYS_VALOR()
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=""    EndIf
If Not IsAssigned(ITENS_EDIT)          Then ITENS_EDIT=False         EndIf

Seta_Aba_Tecidos()

If SYS_CODIGO_CLIENTE="0294" or
   SYS_CODIGO_CLIENTE="0232"
   Then PARAM_ABA_eCOMMERCE = True
        ECOMMERC_CAMINHO    = "C:\\IMAGENS\\ECOMMERC\\"
        If DirExists(ECOMMERC_CAMINHO)=0 Then ECOMMERC_CAMINHO="" EndIf 
   Else ECOMMERC_CAMINHO    = ""
        PARAM_ABA_eCOMMERCE = False
EndIf

If Permissao_Usuario("Tabela de Preco")
   Then PARAM_ACESSA_TBPRECO = True
   Else PARAM_ACESSA_TBPRECO = False
EndIf

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

VSDGTPITEM    =""
VSDGFAMI      =""
VSDGMARCA     =""
VSDGGRP       =""
VSDGNOMTPITEM =""
VSDGNOMFAMI   =""
VSDGNOMFAMI2  =""
VSDGNOMGRP    =""
VSDGNOMGRP2   =""
VSDGNOMMARCA  =""
VSDGNOMMARCA2 =""
VSDGOPCAO     =""
VSDGLOCAL     =""
VSDGNOMLOCAL  =""
VSDGLOCAL2    =""
VSDGNOMLOCAL2 =""
VSDGVALORA    =BlankNum()
VSDGVALORB    =BlankNum()
VSDGVALORC    =BlankNum()

Array VSDGOPCAOA[1]
Array VSDGOPCAOB[1]
Array VSDGOPCAOC[1]

VSDGOPCAOA[1]=False
VSDGOPCAOA[1]=False
VSDGOPCAOA[1]=False

DynArray Registro[]

PickForm "F"
Moveto "Itens_Cb"    SetaCorRegistro("Invisivel")

Moveto "Itens"
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
