;** Balcao *********************************************************************
;*  Digitacao de Ordem de Faturamento e Emissao Nota Fiscal - Balcao           *
;*******************************************************************************
;Autor           : Vise Informatica (VISERP)
;Desenvolvido  em: 08/09/1997 por Anivel Augusto Rodrigues
;Ultima Alteracao: 04/01/2011 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes Brasil Textil Etiqueta s¢ Familia 001          
;Ultima Alteracao: 23/01/2015 por Luis Gustavo
;Motivo Alteracao: Implementado para nao deixar lan‡ar o mesmo itens quando o SYS_CODIGO_CLIENTE for igual a "0318"
;Ultima Alteracao: 06/02/2015 por Andrey Fillipe
;Motivo Alteracao: Implementado para nao deixar passar a razao social como DIVERSOS ou em Branco para o SYS_CODIGO_CLIENTE="0334"
;Ultima Alteracao: 10/02/2015 por Andrey Fillipe 
;Motivo Alteracao: Ajustes se o mes da data de saida for diferente do mes da data de emissao, vai baixar o estoque na data de emissao
;Ultima Alteracao: 06/03/2015 por Luis Gustavo
;Motivo Alteracao: Implementado para o SYS_CODIGO_CLIENTE "0102", ao dar PGDN na tela dos itens com a destina‡Æo atualiza estoque, 
;                  sera gerado um relatorio com os itens inconsistentes e suas quantidaddes serao alteradas.
;Ultima Alteracao: 09/03/2015 por Luis Gustavo 
;Motivo Alteracao: Adicionado a op‡Æo 1 (descri‡Æo) como padrao no SW_cons
;Ultima Alteracao: 17/03/2015 por Luis Gustavo
;Motivo Alteracao: Ajustado para Gerar relatorio somente para Quando a destina‡Æo anterior for "ORCAMENTO". sys_codigo_cliente="0102"
;Ultima Alteracao: 17/03/2015 por Luis Gustavo 
;Motivo Alteracao: Implementado para ficar salvo a ultima op‡ao de busca no SW_CONS
;Ultima Alteracao: 26/03/2015 por Andrey Fillipe
;Motivo Alteracao: Corrigido a Implementado para o SYS_CODIGO_CLIENTE "0102" "ORCAMENTO", 
;                  Destinacao "ORCAMENTO" quando mudar p/ Destinacao que atualiza estoque, vai baixar o estoque na hora que mudar a destinacao
;Ultima Alteracao: 27/03/2015 por Andrey Fillipe
;Motivo Alteracao: Corrigido Implementado para nao deixar lan‡ar o mesmo itens para SYS_CODIGO_CLIENTE = "0318"
;Ultima Alteracao: 30/03/2015 por Andrey Fillipe
;Motivo Alteracao: Adicionado Parametro para nÆo deixar incluir item Fracionado
;Ultima Alteracao: 03/06/2015 por Kamila Gomes
;Motivo Alteracao: Ajustes mensagens dos campos do Item_Dialog
;Ultima Alteracao: 11/06/2015 por Kamila Gomes
;Motivo Alteracao: Ajustes Dialog dos itens, campo entrega somente para VENDA.
;Ultima Alteracao: 01/07/2015 por Kamila Gomes
;Motivo Alteracao: Ajustes Permitir alterar Entrega S/N para qqr usuario cliente 0334 Casa Fonseca
;Ultima Alteracao: 17/07/2015 por Bruno Carvalho
;Motivo Alteracao: Ajustado para o SYS_CODIGO_CLIENTE="0370" todo o processo que ‚ feito para SYS_CODIGO_CLIENTE = "0318"
;Ultima Alteracao: 11/09/2015 por Bruno Carvalho
;Motivo Alteracao: Adicionado UnLockRecord onde h  altera‡Æo de registros no FaturaV
;Ultima Alteracao: 09/11/2015 por Bruno Carvalho
;Motivo Alteracao: Adicionado Verifica_Emissao_Saida() p/ controle do estoque 
;Ultima Alteracao: 09/11/2015 por Bruno Carvalho
;Motivo Alteracao: Adicionado ajustes p/ controle de altera‡Æo da data de emissÆo
;Ultima Alteracao: 13/11/2015 por Bruno Carvalho 
;Motivo Alteracao: Altera‡Æo no processo dos Numero do Lan‡amento - Numero_Lancamento()
;Ultima Alteracao: 07/12/2015 por Anivel Augusto Rodrigues
;Motivo Alteracao: exclusao referencia ao campo INSS
;Ultima Alteracao: 10/12/2015 por Anivel Augusto Rodrigues
;Motivo Alteracao: Inclusao Biblioteca Bib_Ven                  
;Ultima Alteracao: 14/12/2015 por Bruno Carvalho
;Motivo Alteracao: Adicionado ajustes p/ verificar se ANT_DTE est  setada
;Ultima Alteracao: 17/12/2015 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes Calc_Venctos()                       
;Ultima Alteracao: 05/01/2016 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes getp_titulo() em Carrega_Parametros()
;Ultima Alteracao: 21/01/2016 por Kamila Gomes 
;Motivo Alteracao: Ajustes IE = NAOCONTRIBUINTE
;Ultima Alteracao: 23/01/2016 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes Impressao Titulo de Credito      
;Ultima Alteracao: 04/02/2016 por Kamila Gomes 
;Motivo Alteracao: Ajustes Campo CMC7 digita‡Æo de cheques
;Ultima Alteracao: 18/02/2016 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes LeiaINI cheque        
;Ultima Alteracao: 20/02/2016 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes Inclusao FT_ECH para lancamentos de cheques Faturav
;Ultima Alteracao: 22/02/2016 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes usar pedido conforme cliente
;Ultima Alteracao: 22/02/2016 por Kamila Gomes
;Motivo Alteracao: Ajustes NÆo entrar em lan‡amento de CF-e
;Ultima Alteracao: 24/02/2016 por Bruno/Heverton
;Motivo Alteracao: Campo "I_DataEntregar" nÆo ser  solicitado o Checa_Supervisor() para o cliente #0102#      
;Ultima Alteracao: 29/02/2016 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes usar pedido conforme cliente
;Ultima Alteracao: 29/02/2016 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes UTILIZANDO_CP_FP_CLIENTE (condicao e Forma de Pagamento do cliente)
;Ultima Alteracao: 07/03/2016 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes FatICom e NotaICom nÆo Usa        
;Ultima Alteracao: 29/03/2016 por Bruno Carvalho
;Motivo Alteracao: Ajustes no PARAM_CALC_COMIS_ITEM quando for "S", adicionado PARAM_COMIS_TOTAL_NOTA
;Ultima Alteracao: 29/03/2016 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes MSGCAMPO no FORM                           
;Ultima Alteracao: 30/03/2016 por Anivel Augusto Rodrigues
;Motivo Alteracao: Inclusao ModoLocalizarItem()            
;Ultima Alteracao: 07/04/2016 por Anivel Augusto Rodrigues
;Motivo Alteracao: Inclusao SomatoriaDosItens()            
;Ultima Alteracao: 08/04/2016 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes F10 -> F6 Referenciar TC                  
;Ultima Alteracao: 12/04/2016 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes Ultimo Custo para SAIDA INDUSTRIALIZACAO - PRALUM
;Ultima Alteracao: 18/04/2016 por Anivel Augusto Rodrigues
;Motivo Alteracao: InclusÆo campo Referencia no item
;Ultima Alteracao: 20/04/2016 por Kamila Gomes
;Motivo Alteracao: Alterada Faticom e Notaicom para FaturICM e  NotaICM
;Ultima Alteracao: 12/05/2016 por Bruno Carvalho
;Motivo Alteracao: Ajustes na proc Item_Dialog -> Item_Localizador
;Ultima Alteracao: 19/05/2016 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes usar transferencia - PRALUM
;Ultima Alteracao: 20/05/2016 por Bruno Carvalho
;Motivo Alteracao: Ajustes GetRecord "Iten_Com" -> [Fracionado] e [Edita Descricao do Item]
;Ultima Alteracao: 20/05/2016 por Bruno Carvalho
;Motivo Alteracao: Ajustes p/ exibir Mensagem_Venda() quando destina‡Æo for MANIFESTO e cliente #0204#
;Ultima Alteracao: 08/06/2016 por Bruno Carvalho
;Motivo Alteracao: Verifica‡„o para quando item ‚ aplica‡Æo direta e possui GRADE -> bloquear #0322# 
;Ultima Alteracao: 13/06/2016 por Anivel Augusto Rodrigues
;Motivo Alteracao: Inclusao LiberaCondicaoeFormaPagamento() e ajustes PegaCondicaoeFormaPagamento()
;Ultima Alteracao: 14/06/2016 por Bruno Carvalho
;Motivo Alteracao: Removido "FaturOCP" e "FaturaJC" e ajustados os campos correspondentes desta tabela na FaturaCC
;Ultima Alteracao: 27/06/2016 por Kamila Gomes
;Motivo Alteracao: Ajustes Nova Estrutura FaturaC, FaturaI, FaturaID, FaturaIG e nota tabela FaturaCC
;Ultima Alteracao: 28/06/2016 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajuste custo compra sucata pralum
;Ultima Alteracao: 11/07/2016 por Bruno Carvalho
;Motivo Alteracao: Adicionado verifica‡Æo de representante se inativo -> Verifica_Representante()
;Ultima Alteracao: 02/09/2016 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes Reemprimir 2a via nÆo travar Checagem_Pagina1()
;Ultima Alteracao: 26/10/2016 por Bruno Carvalho
;Motivo Alteracao: Ajsutado proc Carrega_Parametros() -> GetP_Balcao() e GetP_Entra()                                        
;Ultima Alteracao: 09/12/2016 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes uso de getrecord substituicao de view em tabelas
;Ultima Alteracao: 23/12/2016 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes ignorar calculo st se nÆo calcula impostos no parametro
;Ultima Alteracao: 21/01/2017 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes controle item showdialog, duplicidade e localizar
;Ultima Alteracao: 10/02/2017 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes Pessoa inativa 
;Ultima Alteracao: 10/03/2017 por Bruno Carvalho
;Motivo Alteracao: Adicionado ALTERA_PRECO_TOTAL p/ permitir altera‡Æo no campo "I_PRECO_TOTAL" se CALCULO_NF_AUTOMATICO="L"
;Ultima Alteracao: 15/03/2017 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes exclusÆo rotinas controle de pecas
;Ultima Alteracao: 15/03/2017 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes Enderecos 
;Ultima Alteracao: 21/03/2017 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes EXCLUSAO_C()
;Ultima Alteracao: 23/03/2017 por Bruno Carvalho
;Motivo Alteracao: Ajustes ao mover p/ o campo [CFO] -> Ser  posicionado no pr¢ximo campo dispon¡vel ap¢s o [CFO] a partir da destina‡Æo
;Ultima Alteracao: 20/04/2017 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes Metal Minas
;Ultima Alteracao: 24/05/2017 por Bruno Carvalho
;Motivo Alteracao: Adicionado processo p/ buscar c¢digo de barra na "Iten_Bar" -> Codigo_Barras2()
;Ultima Alteracao: 23/06/2017 por Bruno Carvalho
;Motivo Alteracao: Ajustes nos venctos quando tipo for cartÆo ao chamar Digita_Cartao(), se nÆo informado e pressionado ESC -> Loop
;Ultima Alteracao: 11/07/2017 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes CL=CartÆo Parcelado
;Ultima Alteracao: 12/07/2017 por Bruno Carvalho
;Motivo Alteracao: Adicionado PARAM_CHECA_ESTOQUE_SEMMENSSAGEM -> CHECA_ESTOQUE() *FT_EXPOF
;Ultima Alteracao: 13/07/2017 por Bruno Carvalho
;Motivo Alteracao: Adicionado processo para bloquear vendas de produtos sem pre‡o *I_Quantidade
;Ultima Alteracao: 14/07/2017 por Bruno Carvalho
;Motivo Alteracao: Adicionado processo para bloquear vendas de produtos sem pre‡o *I_Preco_Unitario
;Ultima Alteracao: 20/07/2017 por Bruno Carvalho
;Motivo Alteracao: Adicionado PARAM_CODBAR_PESO #0235# 
;Ultima Alteracao: 22/07/2017 por Anivel Augusto Rodrigues
;Motivo Alteracao: Adicionado Ok_CODBAR_PESO #0235# 
;Ultima Alteracao: 27/07/2017 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes nÆo usar condi‡Æo pagamento por item
;Ultima Alteracao: 28/07/2017 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes nÆo usar modelo no item 0003            
;Ultima Alteracao: 28/07/2017 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes layout showdialog item                  
;Ultima Alteracao: 02/08/2017 por Bruno Carvalho
;Motivo Alteracao: Removido [Condicao de Pagamento] e [Composicao de Dias] do processo Inicia_Registro()
;Ultima Alteracao: 05/08/2017 por Bruno Carvalho
;Motivo Alteracao: Substituido [Valor INSS] -> [Valor TC]
;Ultima Alteracao: 31/08/2017 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes desconto item
;Ultima Alteracao: 13/09/2017 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes indicador de presen‡a
;Ultima Alteracao: 14/09/2017 por Kamila Gomes
;Motivo Alteracao: Implementa‡Æo de envio de romaneio por e-mail para cliente #0359#
;Ultima Alteracao: 22/09/2017 por Bruno Carvalho
;Motivo Alteracao: Adicionado SYS_APLICATIVO *Verifica envio de email no dispositivo
;Ultima Alteracao: 25/09/2017 por Bruno Carvalho
;Motivo Alteracao: Ajustes Checa_MVA() 
;Ultima Alteracao: 29/09/2017 por Kamila Gomes
;Motivo Alteracao: Ajustes pegar endere‡o de email
;Ultima Alteracao: 30/11/2017 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes showdialog item      
;Ultima Alteracao: 09/01/2018 por Bruno Carvalho
;Motivo Alteracao: Removido alinhamento em 10 d¡gitos se codigo de barra menor que 10 d¡gitos -> Pega_Dados_Item() *Pesq precisa pelo cdbar
;Ultima Alteracao: 2/01/2018 por Bruno Carvalho
;Motivo Alteracao: Removido processos que destinavam … variavel de controle EDITA_DESCRICAO_ITEM
;Ultima Alteracao: 20/01/2018 por Kamila Gomes
;Motivo Alteracao: Add sys_codigo 0407 para utilizar Entrega Futura
;Ultima Alteracao: 16/04/2018 por Bruno Carvalho
;Motivo Alteracao: Ajutes p/ permitir alterar a descri‡Æo do item [F4]
;Ultima Alteracao: 30/04/2018 por Bruno Carvalho
;Motivo Alteracao: Adicionado relatorio de impressÆo de custos dos itens #0278# -> Menu dos Itens
;Ultima Alteracao: 07/05/2018 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes nÆo permitir entrar em OF de NF-e
;Ultima Alteracao: 14/05/2018 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes Registro_Item("Ler")+CalcularPrecoTotal_Item()
;Ultima Alteracao: 07/06/2018 por Bruno Carvalho
;Motivo Alteracao: Adicionado/ajustado Grava_LogEx() p/ gravar log de erros ao excluir registros
;Ultima Alteracao: 18/06/2018 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes faturar requisi‡Æo
;Ultima Alteracao: 23/06/2018 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes mensagem qtde fracionada    
;Ultima Alteracao: 03/07/2018 por Anivel Augusto Rodrigues                           
;Motivo Alteracao: Ajustes carregar ft_grupe novo calc_of bib_bal        
;Ultima Alteracao: 04/07/2018 por Bruno Carvalho             
;Motivo Alteracao: Ajustes CD_BARRA ao localizar o item, p/ nÆo alinhar a 10 d¡gitos -> ITEM_FRACIONADO
;Ultima Alteracao: 23/07/2018 por Anivel Augusto Rodrigues                           
;Motivo Alteracao: Ajustes IMPRIGERAL() -> FT_GNF
;Ultima Alteracao: 04/09/2018 por Bruno Carvalho
;Motivo Alteracao: Ajustes no processo de TROCO, onde foi movido a proc de controle para o BIB_VEND -> Digita_Troco()
;Ultima Alteracao: 11/09/2018 por Anivel Augusto Rodrigues                           
;Motivo Alteracao: Ajustes alteracao preco unitario
;Ultima Alteracao: 05/10/2018 por Kamila Gomes
;Motivo Alteracao: SYS_CODIGO_CLIENTE = "0274" seta CheckTG_OPEMAIL[1] = false
;Ultima Alteracao: 22/12/2018 por Bruno Carvalho
;Motivo Alteracao: Adicionado controle para destina‡äes inativas 
;Ultima Alteracao: 26/12/2018 por Bruno Carvalho
;Motivo Alteracao: Adicionado SaveTables -> ESTOQUE() *Como ‚ realizado no Fatura
;Ultima Alteracao: 18/01/2019 por Kamila Gomes
;Motivo Alteracao: Se Condpagto ‚ OUTROS, FP ser  OU para cliente #0343 (Thardely)
;Ultima Alteracao: 01/02/2019 por Bruno Carvalho
;Motivo Alteracao: Ajustes ao informar a quanitdade no showdialog dos itens, caso item nÆo tenha complementos, uma mensagem ‚ exibida 
;Ultima Alteracao: 20/02/2019 por Kamila Gomes
;Motivo Alteracao: Ajuste quando ativa tecla F5 no item
;Ultima Alteracao: 11/04/2019 por Bruno Carvalho
;Motivo Alteracao: Verifica‡„o para quando item ‚ aplica‡Æo direta e possui GRADE -> Bloquear #0434# (*Mesmo processo p/ #0322#)
;Ultima Alteracao: 29/04/2019 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes Enderecos       
;Ultima Alteracao: 30/05/2019 por Bruno Carvalho
;Motivo Alteracao: Alterado ITEM_FRACIONADO p/ PEGA_DADOS_CODITEM e processo para localizar codbar da proc CDBarras() implementado em Pega_Dados_Item()    
;Ultima Alteracao: 17/07/2019 por Anivel Augusto Rodrigues                           
;Motivo Alteracao: Ajustes placa veiculo #0278
;Ultima Alteracao: 23/07/2019 por Bruno Carvalho
;Motivo Alteracao: Adicionado filtro MODOFILTRAR onde ‚ verificado a SYS_CHAPA_USUARIO e a empresa cadastrada para este usu rio #0435#
;Ultima Alteracao: 31/07/2019 por Anivel Augusto Rodrigues                           
;Motivo Alteracao: Ajustes informar forma de pagamento para calcular vencimentos solicitacao 45430, #0435
;Ultima Alteracao: 09/08/2019 por Bruno Carvalho                           
;Motivo Alteracao: Ajustes ao verificar codigo da empresa no cadastro de usu rios, se empres em branco, nÆo tem valida‡Æo
;Ultima Alteracao: 15/08/2019 por Bruno Carvalho
;Motivo Alteracao: Ajustes ao localizar o [item da OF] pela vari vel SEQIT -> Inicia_Registro() *Se SEQIT for igual ao [] desprezar o locate
;Ultima Alteracao: 15/09/2019 por Bruno Carvalho
;Motivo Alteracao: Adicionado op‡Æo p/ Resgate de Pontos/Adi‡Æo de Pontos p/ Clientes -> [Forma de Pagamento]="RP" 
;Ultima Alteracao: 06/09/2019 por Anivel Augusto Rodrigues                           
;Motivo Alteracao: Ajustes F8 mensagem or‡amento/pedido
;Ultima Alteracao: 10/09/2019 por Anivel Augusto Rodrigues                           
;Motivo Alteracao: Ajustes faturar or‡amento forma de pagamento #0102
;Ultima Alteracao: 30/09/2019 por Anivel Augusto Rodrigues                           
;Motivo Alteracao: Ajustes obs orcamento #0102#
;Ultima Alteracao: 10/10/2019 por Bruno Carvalho                           
;Motivo Alteracao: Ajustes na proc Pega_Dados_Item() -> Substitui‡Æo da vari vel PARAM_DUPLICIDADE_ITEM p/ REG_BUSCA_LOOKUP["Codigo do Item"] no retorno da msg
;Ultima Alteracao: 11/10/2019 por Anivel Augusto Rodrigues                           
;Motivo Alteracao: Ajustes #0102 Grava_Telefone() nÆo obrigatorio
;Ultima Alteracao: 16/10/2019 por Bruno Carvalho
;Motivo Alteracao: Ajustes ao localizar o [item do pedido] pela vari vel SEQIT -> Inicia_Registro() *Voltou processo como era antes de 15/08/2019
;Ultima Alteracao: 21/10/2019 por Bruno Carvalho
;Motivo Alteracao: Adicionado PARAM_UTILIZA_QTD_SOLICITADA
;Ultima Alteracao: 31/10/2019 por Anivel Augusto Rodrigues                           
;Motivo Alteracao: Ajustes eliminar Calc_NLinhas_Descricao()
;Ultima Alteracao: 12/11/2019 por Bruno Carvalho
;Motivo Alteracao: Ajustes na vari vel CALC_VENCTO=True ao iniciar o balcao
;Ultima Alteracao: 13/11/2019 por Bruno Carvalho                           
;Motivo Alteracao: Movido Checa_Estoque(), Estoque() e FATURA_NLancto() p/ Bib_Vend
;Ultima Alteracao: 13/11/2019 por Bruno Carvalho                           
;Motivo Alteracao: Movido rotina para imprimir a rela‡Æo de custo "F7" p/ o script "FT_CUS1"
;Ultima Alteracao: 24/12/2019 por Bruno Carvalho
;Motivo Alteracao: Adicionado Bib_Proc
;Ultima Alteracao: 10/02/2020 por Bruno Carvalho
;Motivo Alteracao: Adicionado proc OPCAO ("Fatura"), onde tem utiliza‡Æo no script FT_REQ
;Ultima Alteracao: 15/08/2020 por Anivel Augusto Rodrigues                           
;Motivo Alteracao: Ajustes exclusÆo de declara‡äes de arrayïs p/ calculo de tributos que nÆo usam mais
;Ultima Alteracao: 28/08/2020 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes mensagem_venda() bib_vend, regra venda ou por cliente
 
;*******************************************************************************
;* Rotina para Controlar Chave da Ordem de Faturamento                         *
;*******************************************************************************
Proc CHAVEC()
private locregistro

PARAM_CUPOM_FISCAL=""
AUX_CONT_CLIENTE  =0

FACA_DIGITAC=True
INICIO_PAGINA=True

VCITENS    =BlankNum()
VSQTDE     =BlankNum()
VSVRMERC   =BlankNum()
VSVRVENCTOS=BlankNum()

VSDGENDENT    =""
VSDGENDCOB    =""

While True
  Moveto TabelaControle ; FILTRO
  Moveto [Numero da OF]
  End
  Moveto [Numero da OF]
  ORDFAT=[Numero da OF]

  If OPCAO_FORM=OPCAO_FORM_REL
    Then Down
    Else CtrlPgDn
  EndIf
  Moveto [Numero da OF]

  SetaCorRegistro("Editar")
  While True

  COPIOU_REGISTRO=False
  
  MSGCAMPO=""
  TECLA=""
  AguardaTeclasPadrao()

  If RetVal=-33
     Then 
          SemFuncoes()
           
;         Echo Normal
;         Echo Off
;         ShowPopup " Fun‡”es " CENTERED
;          "F6 ~I~mprimir Todas       ": " Imprime Fatura                   " :"F6",
;          "~C~ancelar                ": " Cancelar a Opera‡„o              " : "CANCELAR"
;         EndMenu
;         To MenuVar
;         Echo Off
;         
;         If MenuVar="CANCELAR" or MenuVar="Esc"
;            Then Loop
;         EndIf                                         
;         RetVal=MenuVar
  EndIf

  Switch
    ; ---- FILTRO --------------------------------------------------------------
    Case RetVal="MENUFILTRAR" :
         CHAVEC=99
         Del
         Return
    Case RetVal="MENUFILTROTODOS" :
         MODOFILTRAR=False
         CHAVEC=98
         Del
         Return
    ;---------------------------------------------------------------------------
    Case RetVal=-94 : MsgTeclasPadrao()
    Case RetVal="F3":
         If OPCAO_FORM=OPCAO_FORM_REL
            Then OPCAO_FORM=OPCAO_FORM_MAN
            Else OPCAO_FORM=OPCAO_FORM_REL
         EndIf
         Del
         CHAVEC=5
         Return
    Case RetVal="F7" Or RetVal="UP" Or RetVal="PGUP" Or RetVal="HOME":
         MODOPAGINA = True
         Del
         While True
           PARAM_CUPOM_FISCAL=""

           FACA_DIGITAC=True
           INICIO_PAGINA=True

           VCITENS    =BlankNum()
           VSQTDE     =BlankNum()
           VSVRMERC   =BlankNum()
           VSVRVENCTOS=BlankNum()

           If OPCAO_FORM=OPCAO_FORM_REL
              Then PAGINA(TabelaControle,"MR")
              Else PAGINA(TabelaControle,"MT")
           EndIf
           ORDFAT=[Numero da OF]
           locregistro=recno()
           Switch
             Case EDITAR="S":
                  If PegaRegistroControle("Numero da OF",ORDFAT) ;FILTRO
                     Then PickForm OPCAO_FORM_MAN
                          Echo Normal
                          Echo Off
                          If Checa_Controle([Numero_Controle_Dia])
                             Then CHAVEC=0
                                  CALC_VENCTO=False
                                  Controla_EdicaoC()
                             Else UnLockRecord
                          EndIf
                  EndIf
             Case EXCLUIR="S":
                  If PegaRegistroControle("Numero da OF",ORDFAT) ;FILTRO
                     Then PickForm OPCAO_FORM_MAN
                          Echo Normal
                          Echo Off
                          If Checa_Controle([Numero_Controle_Dia]) And
                             (IsBlank([Codigo da Empresa]) Or Carrega_Parametros())
                             Then If Not IsBlank([Numero Nota Gerada])
                                     Then Mensagem("Esta Ordem de Faturamento n„o pode ser excluida !// //J  gerou documento N§ "+
                                         [Docto Nota Gerada]+"/"+[Numero Nota Gerada]+", "+[Serie Nota Gerada])
                                          UnLockRecord
                                     Else If QuerExcluir("desta Ordem de Faturamento")
                                             Then DESTIN_ATUALIZA_PEDIDOS=""
                                                  Moveto [Codigo da Destinacao]
                                                  Ativa_Lookup()
                                                  Moveto [Codigo da Destinacao]
                                                  Locate [FaturaC->Codigo da Destinacao]
                                                  If RetVal
                                                     Then DESTIN_ATUALIZA_PEDIDOS=[Atualiza Pedidos]
                                                  EndIf
                                                  KeyPress "ESC"
                                                  GRAVA_LOG=True
                                                  EXCLUSAO_C()
                                                  AtualizaRegistroControle("Numero da OF",ORDFAT,MODOPAGINA)
                                             Else UnLockRecord
                                          EndIf
                                  EndIf
                             Else UnLockRecord
                          EndIf
                  EndIf
             OtherWise: QuitLoop
           EndSwitch
           
           FormKey
           Moveto TabelaControle
            
           If OPCAO_FORM=OPCAO_FORM_REL
              Then PickForm OPCAO_FORM
                   moveto record locregistro
           EndIf
           
           SetaPosForm()
         EndWhile
         QuitLoop
    Case Retval="ESC":
         CHAVEC=9
         Del
         Return
    Case Retval="ENTER": 
         If MODOFILTRAR  
            Then If TabelaControle<>TabelaPrincipal
                    Then ORDFAT = [Numero da OF]
                         FormKey Moveto TabelaPrincipal End Down FormKey
                         [Numero da OF] = ORDFAT 
                         SetaCorRegistro("Editar")
                 EndIf
         EndIf
         MODOPAGINA  = False
         CALC_VENCTO = False
         If Not FATURA_NLancto()
            Then If MODOFILTRAR
                    Then If TabelaControle<>TabelaPrincipal
                            Then FormKey Moveto TabelaControle 
                                 Del Down
                                 If OPCAO_FORM=OPCAO_FORM_REL
                                    Then PickForm OPCAO_FORM_REL
                                    Else PickForm OPCAO_FORM
                                 EndIf
                         EndIf
                 EndIf
                 QuitLoop
            Else If MODOFILTRAR
                    Then If CHAVEC=0
                            Then STATUSFILTRO = "UPDATE"
                            Else STATUSFILTRO = "INSERT"
                         EndIf
                 EndIf
                 If CHAVEC=1
                    Then CALC_VENCTO=True
                 EndIf
                 Return
         EndIf   
         If CHAVEC=1
            Then Del
         EndIf
         If TabelaControle<>TabelaPrincipal
            Then FormKey
                 Moveto TabelaControle
         EndIf
         If OPCAO_FORM=OPCAO_FORM_REL
            Then PickForm OPCAO_FORM
         EndIf       
         QuitLoop
    EndSwitch                             
  EndWhile
EndWhile

EndProc   ; (ChaveC)

;*******************************************************************************
;* Rotina para gerar proximo lancamento                                        *
;*******************************************************************************
Proc ProximaOrdem()
Private i

For i From 1 to 10
  Moveto [Numero da OF]
  End
  If IsBlank([])
     Then ORDFAT="1"
     Else ORDFAT=StrVal(NumVal([])+1)
  EndIf
  ORDFAT=AlinhM(ORDFAT,6)
  Down
  [Numero da OF]=ORDFAT
  PostRecord KeyViol LeaveLocked
  If RetVal     
     Then Return True
     Else Del
  EndIf    
EndFor

Return False

EndProc ;ProximaOrdem()

;*******************************************************************************
;* Rotina para Digitacao da Cabeca                                             *
;*******************************************************************************
Proc DIGITAC()
 
TX_DESCTO_CLIE=0

NOVA_DESTINACAO=False

REEMITIR    =False
SOIMPRIMIR  =False
enviaEmail  =False

FACA_CHAVEI =True
Moveto "FaturaC"

If INICIO_PAGINA 
   Then ;---- Incluido em 09.11.2015 ----------------------------------
        ANT_DTE = [Data de Emissao]
        If Not IsBlank(SYS_EMPRESA_DEFAULT) And CHAVEC=1
           Then [Codigo da Empresa]=SYS_EMPRESA_DEFAULT
        EndIf

        If CHAVEC=1 And SYS_USUARIO_BALCAO="S" And Not IsBlank(SYS_USUARIO_CODEMPR)
           Then [Codigo da Empresa]=SYS_USUARIO_CODEMPR
        EndIf

        If Not IsBlank([Codigo da Empresa])
           Then If Not Carrega_Parametros()
                   Then If CHAVEC=1
                           Then Del
                        EndIf
                        CHAVEC=9
                        Return
                EndIf
                If CHAVEC=1
                   Then [Codigo da Empresa       ]=PARAM_EMPRESA
                        [Codigo da Destinacao    ]=PARAM_DESTINACAO
                        [Codigo da Tabela        ]=PARAM_TABELA_PRECO
                        [Codigo                  ]=PARAM_CLIENTE
                        [Codigo da Transportadora]=PARAM_TRANSPORTADORA
                        [Codigo do Representante ]=PARAM_VENDEDOR
                        [Condicao de Pagamento   ]=PARAM_COND_PAGTO
                        [Forma de Pagamento      ]=PARAM_FORMA_PAGTO
                        NOVA_DESTINACAO           =True
                EndIf
        EndIf
        
        If CHAVEC=0
           Then Carrega_Endereco("CARREGA")
                Carrega_Endereco("ATUALIZA")
           Else VSDGENDENT = ""
                VSDGENDCOB = ""
        EndIf
        
        If Not IsBlank([Numero Nota Gerada])
           Then 
                        DoctoGerado=[Docto Nota Gerada]+"/"+[Numero Nota Gerada]+"-"+[Serie Nota Gerada]

                        If SubStr([FaturaC->Sistema Gerador],1,1)="C"
                           Then MSG="Esta ordem de faturamento gerou o documento:// //"
                                MSG=MSG+DoctoGerado+"// //"
                                MSG=MSG+"Documento com situa‡Æo: CANCELADO !"
                                Mensagem(MSG)
                                CHAVEC=9
                                Return
                        EndIf
                        If Search("TROCA",[Descricao da Destinacao])>0
                           Then Mensagem("Opera‡Æo de TROCA, utilizar rotina TROCA/VENDA !")
                                CHAVEC=9
                                Return
                        EndIf

                        If Search("CUPOM",[Descricao da Destinacao])>0
                           Then MSG="Esta ordem de faturamento gerou o documento:// //"
                                MSG=MSG+DoctoGerado+"// //"
                                MSG=MSG+"Opera‡Æo de CF-e, utilizar rotina Cupom Fiscal Eletr“nico !"
                                Mensagem(MSG) 
                                CHAVEC=9
                                Return
                        EndIf
                        
                        If Search("NFE",[Docto Nota Gerada])>0
                           Then MSG="Esta ordem de faturamento gerou o documento:// //"
                                MSG=MSG+DoctoGerado+"// //"
                                MSG=MSG+"Opera‡Æo de NF-e controlada em outra rotina !// // Verficar !"
                                Mensagem(MSG) 
                                CHAVEC=9
                                Return
                        EndIf

                        If Search("NSE",[Docto Nota Gerada])>0
                           Then MSG="Esta ordem de faturamento gerou o documento:// //"
                                MSG=MSG+DoctoGerado+"// //"
                                MSG=MSG+"Opera‡Æo de NFS-e controlada em outra rotina !// // Verficar !"
                                Mensagem(MSG) 
                                CHAVEC=9
                                Return
                        EndIf

                        If Search("NCE",[Docto Nota Gerada])>0
                           Then MSG="Esta ordem de faturamento gerou o documento:// //"
                                MSG=MSG+DoctoGerado+"// //"
                                MSG=MSG+"Opera‡Æo de NFC-e controlada em outra rotina !// // Verficar !"
                                Mensagem(MSG) 
                                CHAVEC=9
                                Return
                        EndIf

                        While True

                          Echo Normal
                          Echo Off
                        
                          opcao1="."  dopcao1=""  ropcao1="Esc"
                        
                          If Not IsBlank(PARAM_DOC_ROM) And SubStr([Docto Nota Gerada],1,2)="RO"
                             Then opcao1="~I~mprimir 2¦ via"  dopcao1=" Imprime 2¦ via Romaneio "  ropcao1="Reimprimir"
                          EndIf

                          Echo Normal
                          Echo Off
                          ShowPopup " Op‡”es " CENTERED
                              "~R~eemissÆo do documento" : " ReemissÆo/Regera‡Æo da ordem de faturamento do documento "+DoctoGerado :"Imprimir",
                              "~A~lterar a O.F."         : " Altera‡Æo/ReemissÆo da ordem de faturamento do documento "+DoctoGerado :"Alterar",
                              "~E~nviar E-mail"          : " Enviar documento "+DoctoGerado+" para e-mail do cliente              " :"Email",
                              opcao1                     : dopcao1+DoctoGerado                                                      : ropcao1,
                              "~C~ancelar o documento"   : " Cancelamento do documento gerado "+DoctoGerado                         :"Cancelar",
                              Separator,
                              "~S~air"      : " Ignorar op‡äes"                                                        :"Cancela"
                          EndMenu
                          To Opcaoc
                          echo off
  
                          If Not Retval Or Opcaoc="Cancela" or Opcaoc="Esc"
                             Then CHAVEC=9
                                  Return
                          EndIf
                     
                          Switch
                            Case Opcaoc="Alterar":                
                              If PARAM_BLOQUEIA_ALTERA<>"N"  
                                Then Mensagem("BLOQUEADO, Altera‡Æo/Reemiss„o nÆo ‚ permitida !") 
                                     If PARAM_BLOQUEIA_ALTERA="P" 
                                        Then If Not CHECA_SUPERVISOR() 
                                                Then Loop
                                             EndIf
                                        Else Loop     
                                     EndIf      
                              EndIf
                              QuitLoop  
                            Case Opcaoc="Imprimir": 
                              If PARAM_BLOQUEIA_REEMISSAO<>"N"
                                 Then Mensagem("BLOQUEADO, Reemiss„o nÆo ‚ permitida !")
                                      If PARAM_BLOQUEIA_REEMISSAO="P"
                                         Then If Not CHECA_SUPERVISOR()
                                                 Then Loop
                                              EndIf   
                                         Else Loop       
                                      EndIf   
                              EndIf
                              If Not Checagem_Pagina1()
                                 Then Loop
                              EndIf   
                              Moveto "FaturaC"
                              REEMITIR=True
                              Return
                            
                            Case Opcaoc="Reimprimir":  
                              If PARAM_BLOQUEIA_IMPRESSAO2<>"N"
                                 Then Mensagem("BLOQUEADO, ImpressÆo 2¦ via nÆo ‚ permitida !")
                                      If PARAM_BLOQUEIA_IMPRESSAO2="P"
                                         Then If Not CHECA_SUPERVISOR()
                                                 Then Loop
                                              EndIf   
                                         Else Loop       
                                      EndIf   
                              EndIf          

                              REEMITIR  =True
                              SOIMPRIMIR=True
                              Checagem_Pagina1()

                              Moveto "FaturaC"
                              Return

                            Case Opcaoc="Email":  
                              If PARAM_ENVIA_EMAIL<>"S"
                                 Then Mensagem("Fun‡Æo inativa !// //Contactar Suporte Vise caso queira utilizar !")
                                      If PARAM_ENVIA_EMAIL="P"
                                         Then If Not CHECA_SUPERVISOR()
                                                 Then Loop
                                              EndIf   
                                         Else Loop       
                                      EndIf   
                              EndIf
                              
                              REEMITIR  =True
                              SOIMPRIMIR=True
                              enviaEmail=True
                              Checagem_Pagina1()

                              Moveto "FaturaC"
                              Return
                            
                            Case Opcaoc="Cancelar":
                              If PARAM_BLOQUEIA_CANCEL<>"N" 
                                 Then Mensagem("BLOQUEADO, Cancelamento nÆo permitido !") 
                                      If PARAM_BLOQUEIA_CANCEL="P" 
                                         Then If Not CHECA_SUPERVISOR() 
                                                 Then Loop
                                              EndIf
                                         Else Loop     
                                      EndIf      
                              EndIf
                              MSG="Esta ordem de faturamento gerou o documento:// //"
                              MSG=MSG+DoctoGerado+"// //"
                              MSG=MSG+"Deseja CANCELAR este documento gerado ?" 
                              If ConfGeral_N(MSG)
                                 Then COR_MENSAGEM="ALERTA" 
                                      MSG="Deseja realmente CANCELAR este documento gerado ?"
                                      If ConfGeral_N(MSG)
                                         Then TIPO="CANCELAR"
                                              Play "FT_DESF"    
                                              CHAVEC=9
                                              Return
                                         Else Loop
                                      EndIf   
                                 Else Loop     
                              EndIf              
                          EndSwitch
                        EndWhile
        EndIf              
EndIf

If CHAVEC=0 Or Not INICIO_PAGINA
   Then Moveto [Codigo]
   
        UTILIZANDO_CP_FP_CLIENTE=PegaCondicaoeFormaPagamento("VERIFICAR", [FaturaC->Codigo])
   
   Else [Data de Saida  ]=Today()
        [Data de Emissao]=Today()
        [Hora de Saida  ]=Time()

        If Not IsBlank([Codigo da Empresa]) And Not MODOFILTRAR
           Then 
                if PARAM_PEDIDO="S"
                   then moveto [NUmero do Pedido]
                   else If PARAM_ORCAMENTO="S"
                           Then Moveto [Numero do Orcamento]
                           Else If IsBlank([Codigo da Destinacao])
                                   Then Moveto [Codigo da Destinacao]
                                   Else If PARAM_FATURA_IGUAL_OF="S"
                                           Then Moveto [Data de Emissao     ]
                                           Else Moveto [Codigo              ]
                                        EndIf
                                EndIf
                        EndIf
                EndIf
           Else Moveto [Codigo da Empresa]   
        EndIf
EndIf

FACA_CHAVEDV=True
FACA_CHAVEI=True
INICIO_PAGINA=False

V_EMPRES=[Codigo da Empresa      ]
V_DESTIN=[Codigo da Destinacao   ]
V_COD   =[Codigo                 ]
V_REPRES=[Codigo do Representante]

While True

  TECLA=" Esc=Retornar  "

  If CHAVEC=0
     Then TECLA=TECLA + "Del=Excluir  "
     Else TECLA=TECLA + "             "
  EndIf
  TECLA=TECLA + "Alt+F=Fun‡”es                       PgDn"

  MSGCAMPO=Field()
  If Field()="Consumidor Final"
     Then MSGCAMPO="Consumidor Final (Sim/N„o) * Sim = Calculo ICMS sobre o Valor da Nota Fiscal"
  EndIf
  If Field()="Numero Nota Original"
     Then MSGCAMPO="Informe o Numero da Nota Original a que esta Emiss„o se Refere !"
  EndIf
  If Field()="Origem do Pedido"
     Then MSGCAMPO="Visita, Fone, Balc„o"
  EndIf  
  If Field()="Codigo da Tabela"
     Then MSGCAMPO="C¢digo da Tabela de Pre‡o"
  EndIf
  If Field()="Tipo Pessoa"
     Then MSGCAMPO=MSGCAMPO+": Fisica, Juridica"
  EndIf
  If Field()="CGC"
     Then MSGCAMPO="CNPJ/CPF"
  EndIf
  If Field()="IE"
     Then MSGCAMPO="Informe o N§, ISENTO ou NAOCONTRIBUINTE p/ Inscri‡„o Estadual"
  EndIf
  If Field()="Codigo"
     Then If [Tipo Movimento Estoque]="S"
             Then MSGCAMPO="C¢digo do Destinatario"
             Else MSGCAMPO="C¢digo do Emitente"
          EndIf
  EndIf
  If Field()="Data de Saida"
     Then If [Tipo Movimento Estoque]="S"
             Then MSGCAMPO="Data de Saida"
             Else MSGCAMPO="Data de Entrada"
          EndIf
  EndIf
  If Field()="Hora de Saida"
     Then If [Tipo Movimento Estoque]="S"
             Then MSGCAMPO="Hora de Saida"
             Else MSGCAMPO="Hora de Entrada"
          EndIf
  EndIf
  If Field()="IndPres"
     Then MSGCAMPO="Indicador de Presen‡a"
  EndIf

  If Field()="Numero do Pedido"         Or
     Field()="Numero do Orcamento"      Or
     Field()="Codigo da Empresa"        Or
     Field()="Codigo da Destinacao"     Or
     Field()="Codigo"                   Or
     Field()="UF"                       Or
     Field()="Cidade"                   Or
     Field()="Cidade de Cobranca"       Or
     Field()="Codigo do Representante"  Or
     Field()="Codigo da Tabela"         Or
     Field()="Condicao de Pagamento"    Or
     Field()="IndPres"                  Or
     Field()="Codigo do Veiculo"        Or
     (Field()="Nome do Autorizado" And [Tipo]="C")
     Then MSGCAMPO=MSGCAMPO+", [F1]Consultar tabela"
  EndIf

  If Field()="Nome do Autorizado" And [Tipo]="C"
     Then Monta_Opcoes("Autorizado",[Codigo])
  EndIf

  If Field()="Codigo da Destinacao"
    Then DEST_ANT      = [Codigo da Destinacao]
         DEST_DESC_ANT = [Descricao da Destinacao] 
  EndIf

  If Field()="Codigo da Empresa"      Then Monta_Opcoes("Empresas","")     EndIf
  If Field()="Codigo da Destinacao"   Then Monta_Opcoes("Destinacoes","")  EndIf

  Prompt TECLA
  Wait Field
       Until "F1","F2","F4","ESC","ENTER","DEL","FIELDVIEW","F35","PGDN","F8","F9",-33

  If RetVal=-33 
     Then Echo Normal
          Echo Off
          ShowPopup " Fun‡”es " CENTERED
            "[F2] ~I~mporta Cupom        " : " Importa Cupom                   " : "F2",
            "[F4] Importa ~C~upons       " : " Importa Cupons                  " : "F4",
            "[F8] ~E~ndere‡os            " : " Endere‡os Entrega/Retirada/Cobranca " : "F8",
            Separator,
            "~S~air                      " : " Ignorar op‡äes"                   :"Cancela"
          EndMenu
          To MenuVar
          echo off
          If MenuVar="Cancela" or MenuVar="Esc"
             Then Loop
          EndIf

          RetVal=MenuVar
  EndIf

  Switch
    Case RetVal="F1":  
       If Field()="Codigo da Destinacao"         
          Then If Seleciona_Opcoes("Destinacoes","CR")
                  Then If [Codigo da Destinacao]<>DEST_ANT
                          Then DESTINACAO_COD_NOVO = [Codigo da Destinacao   ] 
                               DESTINACAO_DES_NOVO = [Descricao da Destinacao]
                               
                               [Codigo da Destinacao   ] = DEST_ANT
                               [Descricao da Destinacao] = DEST_DESC_ANT 
                               
                               FAZ_ROTINA = False
                               Moveto "FaturaI"
                               Moveto [Item da Of]
                               If RecordStatus("New")= False
                                  Then If SYS_CODIGO_CLIENTE="0102" And Search("ORCAMENTO",Upper([FaturaC->Descricao da Destinacao])) > 0
                                          Then If Search("VEND",Upper(DESTINACAO_DES_NOVO)) > 0 And Search("TROCA",Upper(DESTINACAO_DES_NOVO)) = 0
                                                  Then Moveto "FaturaC"  
                                                       [Codigo da Destinacao   ] = DESTINACAO_COD_NOVO
                                                       [Descricao da Destinacao] = DESTINACAO_DES_NOVO
                                                       Moveto "FaturaI"
                                                       CHAVEI=1
                                                       
                                                       PARAM_FTCUS1 = "ATUALIZA_QUANTIDADE" 
                                                       Play "FT_CUS1"
                                                        
                                                       CALC_VENCTO  = True      
                                                       Moveto "FaturaC"
                                                  Else Moveto "FaturaC"
                                                       Mensagem("A nova Destina‡„o tem que ser VENDA !")
                                               EndIf
                                          Else Moveto "FaturaC" 
                                               Mensagem("A Destina‡„o n„o pode ser alterada !// J  existem itens lan‡ados para esta OF. ")
                                       EndIf        
                                  Else FAZ_ROTINA = True  
                               EndIf   
                               
                               Moveto "FaturaC"
                               If FAZ_ROTINA
                                  Then [Codigo da Destinacao   ] = DESTINACAO_COD_NOVO
                                       [Descricao da Destinacao] = DESTINACAO_DES_NOVO
                               EndIf                
                               Release Vars DESTINACAO_COD_NOVO, DESTINACAO_DES_NOVO
                        EndIf
                        Moveto [Codigo da Destinacao]
               EndIf
       Endif
       If Field()="Codigo da Empresa"         
          Then Seleciona_Opcoes("Empresas","CR")
       Endif
  
       If Field()="Numero do Pedido"           Or
          Field()="Numero do Orcamento"      Or
          Field()="CFO"                      Or
          Field()="UF"                       Or
          Field()="Cidade"                   Or
         (Field()="Codigo" And PARAM_TPC_CLIE<>"S") Or
          Field()="Codigo do Representante"  Or
          Field()="Codigo da Tabela"         Or
          Field()="Condicao de Pagamento"    Or
          Field()="Codigo do Veiculo"        
          Then CONSULTAF1()
        EndIf
        If Field()="IndPres"
           Then IndicadorPresenca()
        EndIf
       
        If Field()="Nome do Autorizado" And [Tipo]="C"
           Then Seleciona_Opcoes("Autorizado","CR")
        EndIf
  
        If Field()="Codigo"
           Then If PARAM_TPC_CLIE="S" 
                   Then OP_INSERT_ITEM=True
                        Play "Sw_Clie"
                        If Sw_Cliente_Pesquisado<>""
                           Then [Codigo]=Sw_Cliente_Pesquisado
                        EndIf
                EndIf
                If PARAM_BLOQ_ALTERA_REP="S" And CHAVEC=0
                   Then [Codigo do Representante] = V_REPRES 
                EndIf
       EndIf
        
   Case RetVal="F2" Or RetVal="F4" And CHAVEC=1 And PARAM_CUPOM_FISCAL="S":
        If IsBlank([Codigo da Destinacao])
           Then Mensagem("Informe o Codigo da Destina‡„o")
                Loop
        EndIf
        Tecla_Dig=RetVal
        Campo_Ant=Field()
        Moveto [Codigo da Destinacao]
        Ativa_Lookup()
        Moveto [Codigo da Destinacao]
        Locate [FaturaC->Codigo da Destinacao]
        If [Atualiza Estoque]="S"
           Then Mensagem("Aten‡„o! Codigo da Destina‡„o Inv lida-> Atualiza Estoque=Sim")
                KeyPress "ESC"
                Moveto Field Campo_Ant
                Loop
        EndIf
        KeyPress "ESC"

        Switch
         Case Tecla_Dig="F2":
              Entra_Numero_Cupom()
         Case Tecla_Dig="F4":
              Do_It!
              Play "FT_CF"
              Carrega_Tabelas()
              CoEdit NoWindow "FaturaC"
              PickForm "3"
              Moveto [Numero da OF]
              Locate ORDFAT
        EndSwitch
        Moveto Field(Campo_Ant)
        Loop

  Case RetVal="PGDN":
       If Field()="Numero do Pedido" Or
          Field()="Numero do Orcamento"
          Then Loop
       EndIf
       If Search("VEND",[Descricao da Destinacao])>0 And
          [Nome Fantasia EmitDest]<>"DIVERSOS" And [Tipo]="C" And
          PARAM_MESES_SEMVENDA>0
          Then If Not Checa_Meses_SemVenda()
                  Then Loop
               EndIf
       EndIf
      
      If Field()="Codigo da Empresa"
         Then If [Codigo da Empresa   ]<>V_EMPRES
                 Then Moveto "FaturaI"
                      Moveto [Item da Of]
                      If RecordStatus("New")= False
                         Then Moveto "FaturaC" 
                              [Codigo da Empresa]=V_EMPRES
                              Mensagem("A Empresa n„o pode ser alterada !// J  existe itens lan‡ados para esta OF. ")
                         Else Moveto "FaturaC"
                      EndIf
              EndIf
      EndIf         

       If [Codigo da Destinacao]<>V_DESTIN
          Then NOVA_DESTINACAO=True
       EndIf
           
       If Checagem_Pagina1()
          Then If SYS_CODIGO_CLIENTE="0102"
                  Then Grava_Telefone()
               EndIf
              QuitLoop 
       EndIf
                  
  Case Retval="FIELDVIEW" or Retval="F35":
       EDITFIELD()
  Case Retval="DEL":
       If CHAVEC=0
          Then If Not IsBlank([Numero Nota Gerada])
                  Then Mensagem("Esta Ordem de Faturamento n„o pode ser excluida !// J  Gerou Nota Fiscal N§ "+[Numero Nota Gerada])
                  Else If QuerExcluir("desta Ordem de Faturamento")
                          Then GRAVA_LOG=True
                               EXCLUSAO_C()
                               CHAVEC=9
                               QuitLoop
                       EndIf
               EndIf
       EndIf
  Case Retval="F8":
       ShowDialog_Endereco()
  Case Retval="ESC":
       Switch
       Case Field()="Codigo da Empresa":
            If QuerDesfazer("F")
               Then EXCLUSAO_C()
                    CHAVEC=9
                    QuitLoop
            Endif
       Case Field()="Numero do Pedido" Or 
            Field()="Numero do Orcamento"      : 
            If (CHAVEC=1 And SYS_USUARIO_BALCAO="S" And Not IsBlank(SYS_USUARIO_CODEMPR))
               Then If QuerDesfazer("F")
                       Then EXCLUSAO_C()
                            CHAVEC=9
                            QuitLoop
                       Else Loop     
                    Endif
               Else Moveto [Codigo da Empresa   ]      
            EndIf
       Case Field()="Codigo da Destinacao"     :
            If CHAVEC=1 And SYS_USUARIO_BALCAO="S" And Not IsBlank(SYS_USUARIO_CODEMPR)
               Then If QuerDesfazer("F")
                       Then EXCLUSAO_C()
                            CHAVEC=9
                            QuitLoop
                       Else Loop
                    Endif
            EndIf   
            If CHAVEC=0
               Then If QuerDesfazer("F")
                       Then Undo
                            CHAVEC=9
                            QuitLoop
                    EndIf
               Else Moveto [Codigo da Empresa]
            EndIf
       Case Field()="Codigo"                   : Moveto [Codigo da Destinacao] 
       Case Field()="IndPres"                  : Moveto [Codigo da Destinacao]
       Case Field()="CFO"                      : Moveto [Codigo da Destinacao]
       Case Field()="Data de Emissao"          : Moveto [Codigo da Destinacao]
       Case Field()="Consumidor Final"         : Moveto [Codigo              ]
       Case Field()="Razao Social"             : Moveto [Consumidor Final    ]
       Case Field()="Telefone"                 : 
            If SYS_CODIGO_CLIENTE="xxxx0102"
               Then If Not IsBlank([]) 
                       Then Moveto [UF] 
                       Else Loop
                    EndIf
               Else Moveto [UF]      
            EndIf
            
       Case Field()="Nome do Autorizado"       : Moveto [Razao Social]
       Case Field()="Condicao de Pagamento"    :
            If PARAM_UTILIZAVENDEDOR="S"
               Then If SYS_USUARIO_BALCAO = "S" and Not IsBlank(SYS_USUARIO_CODVEND)                                   
                       Then Moveto [Nome do Autorizado]
                       Else Moveto [Codigo do Representante]
                    EndIf
               Else Moveto [Codigo do Representante]    
            EndIf
       
       
       Case Field()="Codigo da Tabela"         : 
            If PARAM_VISITA="S"
               Then Moveto [Origem do Pedido]
               Else Moveto [Comissao do Representante]
            EndIf   
       OtherWise:
            Left
       EndSwitch
       
  Case Retval="ENTER":
       If IsBlank([])
          Then If Field()="Codigo da Empresa" Or
                  Field()="Codigo da Destinacao" Or
                  Field()="CFO" Or
                  Field()="Data de Emissao" Or
                  Field()="Codigo" Or
                  Field()="Codigo do Representante" Or
                  Field()="Condicao de Pagamento" 
                  Then Loop
               EndIf
       EndIf
 
       Switch
       Case Field()="Codigo da Empresa":
            If Not Checa_Opcoes("Empresas",[])
               Then Mensagem("Empresa inv lida !")
                    Loop
            EndIf

            If Carrega_Parametros()
               Then If [Codigo da Empresa   ]<>V_EMPRES
                       Then Moveto "FaturaI"
                            Moveto [Item da Of]
                            If RecordStatus("New")= False
                               Then Moveto "FaturaC" 
                                    [Codigo da Empresa]=V_EMPRES
                                    Mensagem("A Empresa n„o pode ser alterada !// J  existe itens lan‡ados para esta OF. ")
                               Else Moveto "FaturaC"
                                    V_EMPRES=[Codigo da Empresa   ]
                                    If CHAVEC=1
                                       Then [Codigo da Empresa       ]=PARAM_EMPRESA
                                            [Codigo da Destinacao    ]=PARAM_DESTINACAO
                                            [Codigo da Tabela        ]=PARAM_TABELA_PRECO
                                            [Codigo                  ]=PARAM_CLIENTE
                                            [Codigo da Transportadora]=PARAM_TRANSPORTADORA
                                            [Codigo do Representante ]=PARAM_VENDEDOR
                                            [Condicao de Pagamento   ]=PARAM_COND_PAGTO
                                            [Forma de Pagamento      ]=PARAM_FORMA_PAGTO
                                    EndIf
                            EndIf        
                    EndIf        
                    if PARAM_PEDIDO="S"
                       then moveto [NUmero do Pedido]
                       else If PARAM_ORCAMENTO="S"
                               Then Moveto [Numero do Orcamento ]
                               Else moveto [Codigo da Destinacao]
                            EndIf
                    EndIf
            EndIf
            
            If MODOFILTRAR And SYS_CODIGO_CLIENTE="0435"
               Then GetRecord "\\Sistemas\\Cadastro\\Usuarios" SYS_CHAPA_USUARIO To REG_USUARIO
                    If ReTval
                       Then If REG_USUARIO["Cod_Empresa"]<>"" And [Codigo da Empresa]<>REG_USUARIO["Cod_Empresa"]
                               Then Mensagem("A empresa informada difere da empresa cadastrada para o usu rio!")
                                    Moveto [Codigo da Empresa]
                            EndIf
                    EndIf
            EndIf
            
       Case Field()="Numero do Pedido": 
            If Not IsBlank([])            
               Then If CHAVEC=1
                       then
                             If Not Carrega_Parametros()
                                Then Loop
                             EndIf
        
                             V_COD=[CODIGO]
                             [Codigo]=""
                             [CODIGO]=V_COD
                              GetRecord "\\Sistemas\\Cadastro\\Destinat" [Codigo] to REG_CLIE_PED  
                              If not RetVal
                                 Then Mensagem("Cliente Inv lido !")
                                      Loop
                                 Else If REG_CLIE_PED["Situacao do Cliente"]="RECADASTRO"
                                         Then Mensagem("Verificar a Situa‡„o do Cliente !//Status="+REG_CLIE_PED["Situacao do Cliente"])
                                              Loop
                                      EndIf                            
                                      If REG_CLIE_PED["Situacao do Cliente"]="PESSIMO"
                                         Then Mensagem("Verificar a Situa‡„o do Cliente com a Gerencia !")
                                              If SYS_CODIGO_CLIENTE = "0112"
                                                 Then If Not Checa_Supervisor()
                                                         Then Loop
                                                      EndIf
                                              EndIf    
                                      EndIf
                              EndIf
        
                             V_PEDIDO=[Numero do Pedido]
                             [Numero do Pedido]=""
                             [Numero do Pedido]=V_PEDIDO
        
                             V_DESTIN2=[Codigo da Destinacao]
                             [Codigo da Destinacao]=""
                             [Codigo da Destinacao]=V_DESTIN2
        
                             If PARAM_BLOQ_ALTERA_REP="S" And CHAVEC=0
                                Then [Codigo do Representante] = V_REPRES 
                                Else V_REPRES =[Codigo do Representante]
                                     [Codigo do Representante]=""
                                     [Codigo do Representante]=V_REPRES
                             EndIf
                             
                             V_CONDPG =[Condicao de Pagamento]
                             [Condicao de Pagamento]=""
                             [Condicao de Pagamento]=V_CONDPG
        
                             V_PEDIDO=[Numero do Pedido]
                             [Numero do Pedido]=""
                             [Numero do Pedido]=V_PEDIDO
        
                             V_TRANSP =[Codigo da Transportadora]
                             V_VEICU  =[Codigo do Veiculo]
                             [Codigo do Veiculo]=""
                             [Codigo do Veiculo]=V_VEICU
                                                 
                             [Codigo da Transportadora]=""
                             [Codigo da Transportadora]=V_TRANSP
        
                             If [Nome Fantasia Transport]="O PROPRIO"
                                Then [Razao Social Transport ]=[Razao Social  ]
                                     [Endereco Transport     ]=[Endereco      ]
                                     [Bairro Transport       ]=[Bairro        ]
                                     [CEP Transport          ]=[CEP           ]
                                     [Cidade Transport       ]=[Cidade        ]
                                     [UF Transport           ]=[UF            ]
                                     [CGC Transport          ]=[CGC           ]
                                     [IE Transport           ]=[IE            ]
                             EndIf
        
                             [Data de Emissao]=Today()
                             [Data de Saida  ]=Today()
                             [Hora de Saida  ]=Time()
        
                             Mensagem_Venda()
                             
                             UTILIZANDO_CP_FP_CLIENTE=PegaCondicaoeFormaPagamento("PEGAR", [FaturaC->Codigo])
                     EndIf
                     Moveto [Codigo da Destinacao]
              else
                   If PARAM_ORCAMENTO="S"
                      Then Moveto [Numero do Orcamento ]
                      else Moveto [Codigo da Destinacao]
                   endif              
            EndIf
            
       Case Field()="Numero do Orcamento":
            If Not IsBlank([])
               Then If CHAVEC=1
                       Then GetRecord "\\Sistemas\\Vendas\\OrcaC" [Numero do Orcamento] to REGOCC
                            If RetVal 
                               Then If REGOCC["Situacao do Orcamento"]<>"ABERTO" 
                                       Then Mensagem("Verificar a Situa‡„o do Or‡amento !//Status="+REGOCC["Situacao do Orcamento"])
        						                        Loop
                                    EndIf
                            EndIf
                            
                            If Not Carrega_Parametros()
                               Then Loop
                            EndIf

                            V_COD=[CODIGO]
                            [Codigo]=""
                            [CODIGO]=V_COD
                            
                             GetRecord "\\Sistemas\\Cadastro\\Destinat" [Codigo] to REG_CLIE_PED  
                             If not RetVal
                                Then Mensagem("Cliente Inv lido !")
                                     Loop
                                Else If REG_CLIE_PED["Situacao do Cliente"]="RECADASTRO"
                                        Then Mensagem("Verificar a Situa‡„o do Cliente !//Status="+REG_CLIE_PED["Situacao do Cliente"])
                                             Loop
                                     EndIf                            
                                     If REG_CLIE_PED["Situacao do Cliente"]="PESSIMO"
                                        Then Mensagem("Verificar a Situa‡„o do Cliente com a Gerencia !")
                                             If SYS_CODIGO_CLIENTE = "0112"
                                                Then If Not Checa_Supervisor()
                                                        Then Loop
                                                     EndIf
                                             EndIf    
                                     EndIf
                             EndIf

                            V_ORCAME=[Numero do Orcamento]
                            [Numero do Orcamento]=""
                            [Numero do Orcamento]=V_ORCAME

                            V_DESTIN2=[Codigo da Destinacao]
                            [Codigo da Destinacao]=""
                            [Codigo da Destinacao]=V_DESTIN2

                            If PARAM_BLOQ_ALTERA_REP="S" And CHAVEC=0
                               Then [Codigo do Representante] = V_REPRES 
                               Else V_REPRES =[Codigo do Representante]
                                    [Codigo do Representante]=""
                                    [Codigo do Representante]=V_REPRES
                            EndIf

                            V_CONDPG =[Condicao de Pagamento]
                            [Condicao de Pagamento]=""
                            [Condicao de Pagamento]=V_CONDPG

                            V_TRANSP =[Codigo da Transportadora]
                            [Codigo da Transportadora]=""
                            [Codigo da Transportadora]=V_TRANSP

                            [Data de Emissao]=Today()
                            [Data de Saida  ]=Today()
                            [Hora de Saida  ]=Time()

                            Mensagem_Venda()
                       
                            UTILIZANDO_CP_FP_CLIENTE=PegaCondicaoeFormaPagamento("PEGAR", [FaturaC->Codigo])
                            
                            If Isblank([Forma de Pagamento])
                               then [Forma de Pagamento      ]=PARAM_FORMA_PAGTO
                            endif

                    EndIf
            EndIf
               
            Moveto [Codigo da Destinacao]           
       Case Field()="Codigo da Destinacao":    
            If Not Checa_Opcoes("Destinacoes",[])
               Then Mensagem("Destinacao inv lida !")
                    Loop
            EndIf
            GetRecord "Destin" [Codigo da Destinacao] To REG_DESTIN
            If Retval
               Then If REG_DESTIN["Inativo Destin"]="S"
                       Then Mensagem("Destina‡Æo "+[Codigo da Destinacao]+" est  inativa!")
                            Loop  
                    EndIf
            EndIf  
            If [Codigo da Destinacao] <> DEST_ANT
             Then DESTINACAO_COD_NOVO = [Codigo da Destinacao   ] 
                  DESTINACAO_DES_NOVO = [Descricao da Destinacao]
                  NOVA_DESTINACAO     = True
             
                  [Codigo da Destinacao   ] = DEST_ANT
                  [Descricao da Destinacao] = DEST_DESC_ANT 

                  Moveto "FaturaI"
                  Moveto [Item da Of]
                  If RecordStatus("New")= False        
                     Then FAZ_ROTINA = False
                          If SYS_CODIGO_CLIENTE="0102" And Search("ORCAMENTO",Upper([FaturaC->Descricao da Destinacao])) > 0
                             Then If Search("VEND",Upper(DESTINACAO_DES_NOVO)) > 0 And Search("TROCA",Upper(DESTINACAO_DES_NOVO)) = 0
                                     Then Moveto "FaturaC"  
                                          [Codigo da Destinacao   ] = DESTINACAO_COD_NOVO
                                          [Descricao da Destinacao] = DESTINACAO_DES_NOVO
                                          If [Codigo da Destinacao ] <> V_DESTIN
                                             Then V_DESTIOBS=1
                                             Else V_DESTIOBS=0
                                          EndIf
                                          V_DESTIN = [Codigo da Destinacao]
                                          Moveto "FaturaI"
                                          CHAVEI=1
                                          
                                          PARAM_FTCUS1 = "ATUALIZA_QUANTIDADE" 
                                          Play "FT_CUS1" 
                                          
                                          CALC_VENCTO  = True      
                                          Moveto "FaturaC"
                                     Else Moveto "FaturaC"
                                          Mensagem("A nova Destina‡„o tem que ser VENDA !")
                                  EndIf
                             Else Moveto "FaturaC"
                                  Mensagem("A Destina‡„o n„o pode ser alterada !// J  existem itens lan‡ados para esta OF. ")
                         EndIf
                    Else FAZ_ROTINA = True     
                  EndIf
                 
                  Moveto "FaturaC"
                  
                  If [Numero do Pedido   ]<>"" And [Tipo Movimento Estoque]="S"
      						   Then GetRecord "\\Sistemas\\Vendas\\PedidoC" [Numero do Pedido] to REGPEDC
                          If RetVal 
                             Then If REGPEDC["Situacao do Pedido"]<>"ABERTO"
                                     Then Mensagem("Verificar a Situa‡„o do Pedido !//Status="+REGPEDC["Situacao do Pedido"])
      						                        Loop
                                  EndIf
                          EndIf
        					EndIf
                  If [Numero do Orcamento]<>"" And [Tipo Movimento Estoque]="S"
                    Then GetRecord "\\Sistemas\\Vendas\\OrcaC" [Numero do Orcamento] to REGOCC
                          If RetVal 
                             Then If REGOCC["Situacao do Orcamento"]<>"ABERTO" 
                                     Then Mensagem("Verificar a Situa‡„o do Or‡amento !//Status="+REGOCC["Situacao do Orcamento"])
      						                        Loop
                                  EndIf
                          EndIf
                   EndIf
                  
                  If FAZ_ROTINA
                     Then [Codigo da Destinacao   ] = DESTINACAO_COD_NOVO
                          [Descricao da Destinacao] = DESTINACAO_DES_NOVO
                          If [Codigo da Destinacao ] <> V_DESTIN
                             Then V_DESTIOBS=1
                             Else V_DESTIOBS=0
                          EndIf
                          V_DESTIN = [Codigo da Destinacao]   
                  EndIf   
                  Release Vars DESTINACAO_COD_NOVO, DESTINACAO_DES_NOVO
            EndIf
            If Search("REMES",[Descricao da Destinacao])>0 Or
               Search("COMPLEM",[Descricao da Destinacao])>0
               Then Moveto [Numero Nota Original]
               Else Moveto [Data de Emissao]
            EndIf        
       Case Field()="IndPres":
            if isblank([])
               then fastmsg("Valor inv lido !")
                    loop
            endif
            Moveto [CFO]
            
       Case Field()="CFO":
            If Search("REMES",[Descricao da Destinacao])>0 Or
               Search("COMPLEM",[Descricao da Destinacao])>0
               Then Moveto [Numero Nota Original]
               Else Moveto [Data de Emissao]
            EndIf
       Case Field()="Numero Nota Original":
            []=ALINH()
            Right
       Case Field()="Data de Emissao":
            If CHAVEC=1 And Not IntervaloData([])
               Then Loop
            EndIf   
            ;---- Verifica a data de emissÆo antes da altera‡Æo e se mˆs diferente nÆo deixa prosseguir ----
            If IsAssigned(ANT_DTE) And ANT_DTE<>BlankDate() And ANT_DTE<>[Data de Emissao]
               Then If CHAVEC=0 And (Month(ANT_DTE)<>Month([Data de Emissao]) Or Year(ANT_DTE)<>Year([Data de Emissao]))
                       Then MSG= "O  mˆs/ano da nova data informada "+AlinhM(StrVal([Data de Emissao]),10)+" ‚ diferente do mˆs/ano//"+
                                 "da data anterior "+AlinhM(StrVal(ANT_DTE),10)+"                                        ////"+
                                 "Opera‡„o n„o permitida.                                            //"+ 
                                 "Para  tal  situa‡„o  exclua  este lan‡amento e fa‡a um novo na data//"+
                                 "correta!                                                           "
                                 [Data de Emissao]=ANT_DTE
                                 Mensagem(MSG)
                                 Loop        
                    EndIf
            EndIf           
            Moveto [Data de Saida]
       Case Field()="Codigo": 

            If SYS_CODIGO_CLIENTE="0334" Or
               SYS_CODIGO_CLIENTE="0344" Or
               SYS_CODIGO_CLIENTE="0275" Or
               SYS_CODIGO_CLIENTE="0102" Or
               SYS_CODIGO_CLIENTE="0407"
               Then Play "sw_ped"
            EndIf   

            Mensagem_Venda()
            
            If CHAVEC=1
               then UTILIZANDO_CP_FP_CLIENTE=PegaCondicaoeFormaPagamento("PEGAR", [FaturaC->Codigo])
               else UTILIZANDO_CP_FP_CLIENTE=PegaCondicaoeFormaPagamento("VERIFICAR", [FaturaC->Codigo])
            endif   
      
            TELEFONE=""
            
            GetRecord "\\Sistemas\\Cadastro\\Destinat" [Codigo] to REG_CLIE_PED  
            If not RetVal
               Then Mensagem("Pessoa Inv lida !")
                    Loop
               Else 
                    If REG_CLIE_PED["Inativo"]="S"
                       Then Mensagem("Pessoa Inativa !")
                            Loop
                    EndIf  
                    If REG_CLIE_PED["Situacao do Cliente"]="RECADASTRO"
                       Then Mensagem("Verificar a Situa‡„o da Pessoa !//Status="+REG_CLIE_PED["Situacao do Cliente"])
                            Loop
                    EndIf                            
                    If REG_CLIE_PED["Situacao do Cliente"]="PESSIMO"
                       Then Mensagem("Verificar a Situa‡„o da Pessoa com a Gerencia !")
                            If SYS_CODIGO_CLIENTE = "0112"
                               Then If Not Checa_Supervisor()
                                       Then Loop
                                    EndIf
                            EndIf    
                    EndIf
            EndIf

            If CHAVEC=1
               Then If Search("VEND",[Descricao da Destinacao])>0   And 
                       [Nome Fantasia EmitDest]<>"CONSUMIDOR FINAL" And
                       [Nome Fantasia EmitDest]<>"DIVERSOS"         And
                       [Tipo]="C"                                   And
                       PARAM_NBLOQUEIO_SPC > 0
                       Then MSG_SPC="AVISO_SPC"
                            Checa_SPC()
                            Release Vars MSG_SPC
                    EndIf
            EndIf        

            If PARAM_UTILIZAVENDEDOR="S"
               Then If SYS_USUARIO_BALCAO = "S" And Not IsBlank(SYS_USUARIO_CODVEND)                        
                       Then If CHAVEC=1 
                               Then [Codigo do Representante]=SYS_USUARIO_CODVEND
                            EndIf
                            If SYS_CODIGO_CLIENTE="0322"
                               Then LOC_TAB_PRECO("A VISTA")
                            EndIf   
;;;                         Moveto [Codigo da Tabela]
;;;                    Else Moveto [Codigo do Representante]
                    EndIf
            EndIf
                      
            If IsBlank([Codigo do Representante])
               Then [Codigo do Representante]=PARAM_VENDEDOR
            EndIf
            If IsBlank([Codigo da Transportadora])
               Then [Codigo da Transportadora]=PARAM_TRANSPORTADORA
            EndIf
            If [Codigo]<>V_COD
               Then If PARAM_BLOQ_ALTERA_REP="S" And CHAVEC=0
                       Then 
                       Else V_REPRES = [Codigo do Representante]
                            [Codigo do Representante] = ""
                            [Codigo do Representante] = V_REPRES
                    EndIf                    
                    
                    V_COD=[Codigo]
                    ENDERECOS()
            EndIf
            
            If [Tipo]<>"C"
               Then [Consumidor Final]="N"
            EndIf

            Moveto [Nome do Autorizado]
            
            If SYS_CODIGO_CLIENTE="xxxx0102" And IsBlank([Telefone])
               Then Moveto [Telefone]
               ELse If SYS_CODIGO_CLIENTE="xxxx0102" And Not IsBlank([Telefone])
                       Then TELEFONE=[Telefone]
                            Moveto [Telefone]
                    EndIF        
            EndIf   

            If PARAM_BLOQ_ALTERA_REP="S" And CHAVEC=0
               Then [Codigo do Representante] = V_REPRES 
            EndIf
            
            If SYS_CODIGO_CLIENTE="0334" And (Search("DIVERSO",[FaturaC->Razao Social])>0 Or IsBlank([FaturaC->Razao Social]))
               Then Mensagem("Informe o nome do cliente !")
                    Moveto [Razao Social] 
            EndIf
       Case Field()="Razao Social" : 
            If SYS_CODIGO_CLIENTE="0334" And (Search("DIVERSO",[FaturaC->Razao Social])>0 Or IsBlank([FaturaC->Razao Social]))
               Then Mensagem("Informe o nome do cliente !")
                    Moveto [Razao Social]
               ELse Right     
            EndIf
       Case Field()="Consumidor Final":
            If IsBlank([])                                                     
               Then []="N"
            EndIf
            Moveto [Razao Social]                             
       Case Field()="Telefone":                       
            If SYS_CODIGO_CLIENTE="xxxxx0102" 
               Then If IsBlank([])
                       Then FastMsg("Campo Obrigatorio! ")
                            Loop
                    EndIf 
            EndIf
            Moveto [Nome do Autorizado]                                           

       Case Field()="Nome do Autorizado":
            If PARAM_BLOQUEIA_AUTORI="S"
               Then If [Tipo]="C"
                       Then If IsBlank([Nome do Autorizado]) 
                               Then If DynArraySize(Opcoes)>0
                                       Then Mensagem("Autorizado n„o informado!// // Tecle F1 para consultar!")
                                            Loop
                                       Else [Nome do Autorizado ]=""
                                            [CPF do Autorizado  ]=""
                                            [Data da Autorizacao]=BlankDate()    
                                    EndIf
                               Else If Not Checa_Opcoes("Autorizado",[])
                                       Then Mensagem("Autorizado n„o cadastrado!")
                                       Else Moveto [CPF do Autorizado] 
                                    EndIf
                                    Loop
                            EndIf
                       Else [Nome do Autorizado ]=""
                            [CPF do Autorizado  ]=""
                            [Data da Autorizacao]=BlankDate()                 
                    EndIf
               Else If IsBlank([Nome do Autorizado])
                       Then [Nome do Autorizado ]=""
                            [CPF do Autorizado  ]=""
                            [Data da Autorizacao]=BlankDate()
                       Else Moveto [CPF do Autorizado] 
                            Loop
                    EndIf 
            EndIf        
            Moveto [Codigo do Representante]

            If PARAM_UTILIZAVENDEDOR="S"
                Then If SYS_USUARIO_BALCAO = "S" and Not IsBlank(SYS_USUARIO_CODVEND)                                   
                        Then If CHAVEC=1 
                               Then [Codigo do Representante]=SYS_USUARIO_CODVEND
                            EndIf
                             If SYS_CODIGO_CLIENTE="0322"
                                Then LOC_TAB_PRECO("A VISTA")
                             EndIf   
                             Moveto [Codigo da Tabela]
                        Else Moveto [Codigo do Representante]
                     EndIf
            EndIf

            switch
              case sys_Codigo_Cliente="0278" : moveto [Codigo do Veiculo]
              otherwise                      :
            endswitch

       Case Field()="CPF do Autorizado":
            If PARAM_UTILIZAVENDEDOR="S"
                Then If SYS_USUARIO_BALCAO = "S" and Not IsBlank(SYS_USUARIO_CODVEND)                                   
                        Then If CHAVEC=1 
                               Then [Codigo do Representante]=SYS_USUARIO_CODVEND
                            EndIf
                             If SYS_CODIGO_CLIENTE="0322"
                                Then LOC_TAB_PRECO("A VISTA")
                             EndIf   
                             Moveto [Codigo da Tabela       ]
                        Else Moveto [Codigo do Representante]
                     EndIf

                     switch
                       case sys_Codigo_Cliente="0278" : moveto [Codigo do Veiculo]
                       otherwise                      :
                     endswitch
            EndIf

       Case Field()="Codigo do Veiculo":
            if isblank([])
               then moveto [Placa do Veiculo]
               else 
                    If PARAM_UTILIZAVENDEDOR="S"
                        Then If SYS_USUARIO_BALCAO = "S" and Not IsBlank(SYS_USUARIO_CODVEND)                                   
                                Then Moveto [Codigo da Tabela       ]
                                Else Moveto [Codigo do Representante]
                             EndIf
                        Else Moveto [Codigo da Tabela       ]
                    EndIf
            endif
       Case Field()="Placa do Veiculo":
            If PARAM_UTILIZAVENDEDOR="S"
                Then If SYS_USUARIO_BALCAO = "S" and Not IsBlank(SYS_USUARIO_CODVEND)                                   
                        Then Moveto [Codigo da Tabela       ]
                        Else Moveto [Codigo do Representante]
                     EndIf
                Else Moveto [Codigo da Tabela       ]
            EndIf

       Case Field()="Codigo do Representante":
            If PARAM_BLOQ_ALTERA_REP="S" And CHAVEC=0
               Then If PARAM_BLOQ_ALTERA_REP="S" And CHAVEC=0
                       Then If [Codigo do Representante]<>V_REPRES 
                               Then Mensagem("Verificar a permiss„o para altera‡„o do representante !")
                                    [Codigo do Representante] = V_REPRES
                            EndIf      
                    EndIf
                    Moveto [Comissao do Representante]        
               Else If Not Verifica_Representante([FaturaC->Codigo do Representante])
                       Then Mensagem("Representante/Vendedor Inativo !")
                            Loop
                    EndIf 
                    If [Codigo do Representante]<>V_REPRES
                       Then V_REPRES =[Codigo do Representante]
                            [Codigo do Representante]=""
                            [Codigo do Representante]=V_REPRES
                    EndIf
                    Moveto [Comissao do Representante]
            EndIf        
       Case Field()="Comissao do Representante":
            If PARAM_VISITA="S" 
               Then Moveto [Origem do Pedido]
               Else Moveto [Condicao de Pagamento]
            EndIf
       Case Field()="Condicao de Pagamento":
            If SYS_CODIGO_CLIENTE="0322"
               Then LOC_TAB_PRECO("A VISTA")
            EndIf           
            
            If SYS_CODIGO_CLIENTE="0343" and Search("OUTR",[Descricao CondPagto])>0
               then [Forma de Pagamento] = "OU" 
            EndIf 
            
            Moveto [Codigo da Tabela]
       Case Field()="Codigo da Tabela":
            If Search("VEND",[Descricao da Destinacao])>0 And
               [Nome Fantasia EmitDest]<>"DIVERSOS" And [Tipo]="C" And
               PARAM_MESES_SEMVENDA>0
               Then If Not Checa_Meses_SemVenda()
                       Then Loop
                    EndIf
            EndIf              

            If [Codigo da Destinacao]<>V_DESTIN
               Then NOVA_DESTINACAO=True
            EndIf

            If Checagem_Pagina1()
               Then If SYS_CODIGO_CLIENTE="xxxxx0102"
                       Then Grava_Telefone()
                    EndIf
                    QuitLoop 
            EndIf
       OtherWise:
            Right
       EndSwitch
  EndSwitch
EndWhile
EndProc  ;(DigitaC)      

;*******************************************************************************
;* Rotina para Localizar Item                                                  *
;*******************************************************************************
Proc ChaveI()
FACA_DIGITAF=True

If REEMITIR
   Then CHAVEI=9
        Return
EndIf

Moveto "FaturaI"
While True
  SomatoriaDosItens()
  
  Moveto [Item da OF]
  End
  NITEM = [Item da OF]
  Down
  Moveto [Item da OF]
  Seta_Sequencia(NITEM,False)
  If IsLockRecord()
     Then Del
          Loop
  EndIf

  Opcao_Ver=False
  SetaCorRegistro("Editar")
  While True
    Item_Ins_Consulta=False

    MSGCAMPO=""
    TECLA= " Esc=Retornar  F7=Paginar   Alt+F=Fun‡”es                 PgUp  PgDn"
    Prompt TECLA

    Wait Field
         Until "ESC","ENTER","F7","HOME","UP","PGUP","PGDN","PGUP","F8","F3","F5","F9",-33,"F6"

    If RetVal=-33
       Then Echo Normal
            Echo Off
            ShowPopup " Fun‡”es " CENTERED
              "F3  ~V~er Ficha                 " : " Ver itens modo ficha                  " : "F3",
              "F5  C~o~nsulta                  " : " Consultar tabela pre‡o                " : "F5",
              "F6  ~A~cr‚scimo                 " : " % Acr‚scimo pre‡o unit rio            " : "F6",
              "F7  ~I~mprimir Rela‡Æo de Custos" : " Imprimir a Rela‡„o de Custos dos Itens" : "F7",
              "F8  ~F~atura Or‡amento/Pedido/Requisi‡Æo   " : " Fatura Or‡amento ou Pedido ou Requisi‡Æo           " : "F8",
              "F9  ~M~odo                      " : " Ativa/Desativa modo c¢digo de barras  " : "F9",
              "~C~ancelar                      " : " Cancelar a opera‡„o                   " : "CANCELAR"
            EndMenu
            To MenuVar
            echo off
            If MenuVar="CANCELAR" or MenuVar="Esc"
               Then Loop
            EndIf

            RetVal=MenuVar
    EndIf

    Switch
    Case Retval="F3":
         Del
         Moveto [Item da OF]
         If RecordStatus("New")
            Then MENSAGEM("Sem Item p/ ver !")
                 QuitLoop
         EndIf
         Opcao_Ver=True
         CHAVEI=0
         Home
         SEQIT=[Item da OF]
         Inicia_Registro()
         DigitaI()
         QuitLoop
    Case RetVal="F5":
         If Search("SIMPLES REMESSA ENTR",[FaturaC->Descricao da Destinacao])>0
            Then Mensagem("InclusÆo nÆo permitida !// No lan‡amento ‚ poss¡vel faturar somente itens do pedido !") 
            Else VSDGEMPRESA=[FaturaC->Codigo da Empresa]
                 If IsBlank([FaturaC->Codigo da Tabela])
                    Then VSDGTABELA =PARAM_TABELA_PRECO
                    Else VSDGTABELA =[FaturaC->Codigo da Tabela]
                 EndIf
                 SEQIT=[Item da OF]
        
                 Moveto "FaturaC"
                 Resynckey
                 KeyPress "F7"
                 OP_INSERT_ITEM=True
                 VSDG_PESQ_SWCONS = True
                 If PARAM_EXIBECUSTO="N"
                    Then Play "SW_CONSS"
                    Else Play "SW_CONS"
                 EndIF
        
                 Moveto "FaturaC"
                 KeyPress "F7"
                 
                 Moveto "FaturaI"
                 Moveto [Item da OF]
                 Locate ORDFAT,SEQIT
                 IsLockRecord()
                 Echo Off
        
                 If Sw_Item_Pesquisado="" Then Loop EndIf
        
                 CHAVEI=1
        
                 [Codigo do Item  ]=Sw_Item_Pesquisado
                 [Codigo da Tabela]=VSDGTABELA
                 Item_Ins_Consulta=True

                 Return
         EndIf        
    Case Retval="F6":
         Del
         Acrescimo_Item()
         QuitLoop
    Case RetVal="F7" :
         Del
         If CHECA_SUPERVISOR() 
            Then PARAM_FTCUS1 = "IMPRIMIR_RELACAO_CUSTO"
                 Play "FT_CUS1"
         EndIf
         QuitLoop         
    Case Retval="F9":
         Del
         OPCHAVEI="CDB"
         CHAVEI=7
         Return
    Case Retval="F8":
         Del

         Echo Normal
         Echo Off
         ShowPopup " Op‡”es " CENTERED
           "Or‡amento/~P~edido  " : " Carregar itens do or‡amento/pedido             ":"PEDIDO",
           "~R~equisi‡Æo      "   : " Carregar itens da requisi‡Æo"                   :"EXPEDICAOREQ",    
           Separator,
           "~C~ancela  " : " Cancelar"                            :"Cancela"
         EndMenu
         To Opcaoc

         If Not Retval Or Opcaoc="Cancela" or Opcaoc="Esc"
            Then QuitLoop
         EndIf  
         
         Switch
           Case Opcaoc="PEDIDO"      : FATURA_PEDIDO_ORCAMENTO()
           Case Opcaoc="EXPEDICAOREQ" : Play("Ft_REQ")
         EndSwitch

         Moveto "FaturaI"
         QuitLoop
    Case Retval="PGDN":  
         Del
         Moveto [Item da Of]
         If RecordStatus("New")=True
            Then MENSAGEM("A Ordem de Faturamento deve ter pelo menos 1(um) Item Ok !")
                 QuitLoop
         EndIf
         CHAVEI=9
         Return
    Case Retval="PGUP" Or RetVal="ESC":
         Del
         CHAVEI=9
         FACA_CHAVEI =False
         FACA_DIGITAF=False
         Return
    Case RetVal="F7" Or RetVal="UP" Or RetVal="PGUP" Or RetVal="HOME":
         Del
         While True
           FACA_DIGITAF=True
           
           PAGINA("FaturaI","MR")
           SEQIT=[Item da OF]
           If EDITAR="S"
              Then CHAVEI=0
                   Controla_EdicaoI()
              Else If EXCLUIR="S"
                      Then If QuerExcluir("")
                              Then CHAVEI=8
                                   GRAVA_LOG=True
                                   EXCLUSAO_I()
                                   Release Vars GRAVA_LOG
                              Else UnLockRecord
                           EndIf
                      Else QuitLoop
                   EndIf
           EndIf

           SomatoriaDosItens()
           
           SetaPosForm()
         EndWhile
         QuitLoop
    Case Retval="ENTER":
         SEQIT=[]
         If Isblank(SEQIT) 
             Then Del 
                  QuitLoop 
         EndIf
         If SEQIT>(NITEM+1)
            Then NITEM=NITEM+1
                 SEQIT=NITEM
         EndIf   
         If Not Seta_Sequencia(SEQIT,True)
            Then Del
                 QuitLoop
         EndIf
         If SEQIT>900  
            Then Mensagem("Numero m ximo da sequencia permitida: 900 !")
                 Del
                 QuitLoop
         EndIf

         Del
         Locate ORDFAT,SEQIT
         If Retval
            Then CHAVEI=0
                 SEQIT=[]
            Else
                 If Search("SIMPLES REMESSA ENTR",[FaturaC->Descricao da Destinacao])>0
                    Then Mensagem("InclusÆo nÆo permitida !// No lan‡amento ‚ poss¡vel faturar somente itens do pedido !")
                         QuitLoop
                 EndIf
            
                 CHAVEI=1
                 End
                 Down
                 [Numero da OF]=ORDFAT
                 [Item da OF  ]=SEQIT
                 UnLockRecord
                 Locate ORDFAT,SEQIT
         EndIf
         Return
    EndSwitch
  EndWhile
EndWhile
EndProc   ; (ChaveI)

;*******************************************************************************
;* Rotina para Entrada Rapida por Codigo de Barras                             *
;*******************************************************************************
Proc ChaveCdBar()
Private etiqok

FACA_DIGITAF  =True
If REEMITIR
   Then CHAVEI=9
        Return
EndIf

Moveto "FaturaI"
SomatoriaDosItens()

While True

  Moveto [Item da OF]
  End
  NITEM = [Item da OF]
  Down
  Moveto [Item da OF]

  Seta_Sequencia(NITEM,False)
  If IsLockRecord()
     Then Del
          Loop
  EndIf

  CHAVEI=1
  Opcao_Ver = False
  SetaCorRegistro("Editar")
  While True
    Item_Ins_Consulta=False

    MSGCAMPO=""

    If Not Ler_CDBarras(22,00) 
       Then Del
            OPCHAVEI="CDC"
            CHAVEI=7
            Return
       Else If Dados_QTD<=0
               Then Mensagem("Quantidade tem que ser > ou = 1 !")
                    Loop
               Else CDBarras()
                    QuitLoop
            EndIf
    EndIf    
  EndWhile  
EndWhile    

EndProc ;ChaveCdBar()

;*******************************************************************************
;* Rotina para Leitura do Codigo de Barras                                     *
;*******************************************************************************
Proc CDBarras()

Ok_CODBAR_PESO=False
If Not Pega_Dados_Item("Codigo_Barras") Or Not CHECA_ESTOQUE()
   Then Del
        Return
EndIf

Registro_Item("Ler")
CalcularPrecoTotal_Item()
Registro_Item("Gravar")

VSVRMERC=VSVRMERC+[Preco Total   ]
VSQTDE  =VSQTDE  +[Quantidade    ]
VCITENS =VCITENS +1

Estoque()

Moveto "FaturaI"                        
If RecordStatus("Locked") Then UnLockRecord EndIf

Sound 400 400 
EndProc   ;CDBarras()       

;*******************************************************************************
;* Rotina de Digitacao Dados do Item                                           *
;*******************************************************************************
Proc Pega_Dados_Item(Origem) 
Private Item_ok, Origem,REG_ITEMCOM,NITEMOF,PEGA_DADOS_CODITEM

If Not IsAssigned(Ok_CODBAR_PESO) Then Ok_CODBAR_PESO = False EndIf 

Item_ok=False
Switch
  Case Origem="Codigo_Barras" Or Origem="Codigo_Barras_ShowDialog" :
       If Origem="Codigo_Barras_ShowDialog"
          Then Dados_Item = VSD_I_Codigo_Item
               Dados_QTD  = BlankNum()
       EndIf
          
       Moveto [Codigo do Item]
       Ativa_Lookup()
       Moveto [Codigo de Barras]
       Locate Dados_Item
       If RetVal
          Then Moveto [Codigo do Item]
          Else If Codigo_Barras2(Dados_Item,"")
                  Then PEGA_DADOS_CODITEM = CODIGO_BARRA2
                  Else PEGA_DADOS_CODITEM = Dados_Item
               EndIf
               Moveto [Codigo do Item]
               Locate PEGA_DADOS_CODITEM
               Release Vars PEGA_DADOS_CODITEM
       EndIf
         
  OtherWise :
    Moveto [Codigo do Item]
    Ativa_Lookup()
    ModoLocalizarItem("LOCALIZAR",VSD_I_Codigo_Item,"")
EndSwitch
If RetVal
  Then CopyToArray REG_BUSCA_LOOKUP
       KeyPress "ESC"
       While True
         VSD_I_Codigo_Item=REG_BUSCA_LOOKUP["Codigo do Item"]
         FAMILIA          =REG_BUSCA_LOOKUP["Codigo da Familia"]
         
         ;---- C¢digo de Barras ------------------------------------------------
         If Origem = "Codigo_Barras" Or Origem="Codigo_Barras_ShowDialog"
            Then GetRecord "\\Sistemas\\Estoque\\Iten_Com" VSD_I_Codigo_Item To REG_ITEMCOM
                 If RetVal
                    Then If REG_ITEMCOM["Fracionado"]="N" And (Dados_QTD-Int(Dados_QTD))<>0
                            Then Mensagem("A Quantidade do Item ["+VSD_I_Codigo_Item+"] nÆo pode ser Fracionado !// //Definido no cadastro do item !")
                                 QuitLoop
                         EndIf        
                    Else Mensagem("Item n„o Cadastrado !")
                         QuitLoop
                 EndIf
                  
                 If PARAM_DUPLICIDADE_ITEM And Not IsBlank(VSD_I_Codigo_Item)
                    Then NITEMOF=[Item da OF]
                         Del
                         Moveto [Codigo do Item]
                         Locate VSD_I_Codigo_Item
                         If RetVal
                            Then End Down
                                 Mensagem("O Item ["+VSD_I_Codigo_Item+"], j  est  lan‡ado nesta OF !")
                                 QuitLoop
                         EndIf
                         End Down
                         Moveto [Item da OF]
                         [Item da OF]=NITEMOF
                 EndIf
                 
                 ITOK=True
                 [Quantidade]=Dados_QTD             
                 CODIGO_BARRA=Dados_Item      
         EndIf   
         
         If REG_BUSCA_LOOKUP["Inativo"]="S"
            Then Mensagem("Este item://"+REG_BUSCA_LOOKUP["Codigo do Item"]+" "+
                           REG_BUSCA_LOOKUP["Descricao do Item"]+"//"+"Referˆncia: "+
                           REG_BUSCA_LOOKUP["Referencia"]+"//"+
                          "Fornecedor: "+REG_BUSCA_LOOKUP["Codigo Fornecedor"]+"// // esta inativo !")
                 QuitLoop
         EndIf
         
         ;---- Verifica se item ‚ aplica‡Æo direta e codigo da grade ‚ vazio ---
         If (SYS_CODIGO_CLIENTE="0322" Or SYS_CODIGO_CLIENTE="0434") And (REG_BUSCA_LOOKUP["Tipo do Item"]="D" And REG_BUSCA_LOOKUP["Codigo da Grade"]<>"")
            Then Mensagem("Este item://"+REG_BUSCA_LOOKUP["Codigo do Item"]+" "+REG_BUSCA_LOOKUP["Descricao do Item"]+"//"+
                          "Referˆncia: "+REG_BUSCA_LOOKUP["Referencia"]+"//"+
                           "‚ aplica‡„o direta !")
                 QuitLoop
         EndIf    
         
         [Codigo do Item] =VSD_I_Codigo_Item
         
         If Origem="Codigo_Barras" Or Origem="Codigo_Barras_ShowDialog"
            Then Pega_Preco("Cod_Barras")
            Else Pega_Preco("Novo")
         EndIf
         
         If Origem="Codigo_Barras" Or Origem="Codigo_Barras_ShowDialog"
            Then If [Preco Unitario]<=0
                   Then Mensagem("Item sem tabela de pre‡o !")
                        QuitLoop
                 EndIf
                 If PARAM_CODBAR_PESO > 0 and Ok_CODBAR_PESO
                    Then PR_TOTAL = NumVal(SubStr(Dados_Item,PARAM_CODBAR_PESO+2,(12-(PARAM_CODBAR_PESO+1))))
                         If Type(PR_TOTAL)<>"N"
                            Then Mensagem("Erro leitura pre‡o total da etiqueta !")
                                 QuitLoop
                         EndIf
                         PR_TOTAL = PR_TOTAL / 100
                         [Quantidade ] = Round((PR_TOTAL/[Preco Unitario]),3)
                         Ok_CODBAR_PESO=False
                 EndIf
         EndIf                              

         Ajusta_Dados_Item()

         Item_Ok=True
         QuitLoop
       EndWhile
  Else KeyPress "ESC"
       Mensagem("Item n„o Cadastrado !")
EndIf

Echo Off
Return Item_ok
EndProc

;*******************************************************************************
;* Rotina Ajustar Dados do Item                                                *
;*******************************************************************************
Proc Ajusta_Dados_Item()
private sFCI, sSIMBOLOGIA, regdestinat, pessoa_regimetributario, pessoacontribuinte

If [Tipo do Item]="C" ; Servi‡o
  Then 
       [Aliquota de ICMS      ]=BlankNum()
       [Aliquota de IPI       ]=BlankNum()

       If TPEMPR="SIMPLES NACIONAL" Or TPEMPR="SIMPLES NAC. ESRB"
          Then 
              [PIS_CST        ]="99"
              [PIS_Aliquota   ]=BlankNum()

              [COFINS_CST     ]="99"
              [COFINS_Aliquota]=BlankNum()
       EndIf        
               
  Else
       ;;alterado 12/02/2014 
       ;;pega dados primeiro como "DEBITO/CREDITO"
       TribCST=SubStr([Tipo Tributacao],2,2)
       Switch
         Case (TribCST="00" And TRIB_ICMS="D" And UF_ALIQUOTA_ICMS>0) Or
              (TribCST="10" And TRIB_ICMS="D" And UF_ALIQUOTA_ICMS>0) Or
              (TribCST="20" And TRIB_ICMS="D" And UF_ALIQUOTA_ICMS>0) Or
              (TribCST="70" And TRIB_ICMS="D" And UF_ALIQUOTA_ICMS>0):
              [Aliquota de ICMS  ]=UF_ALIQUOTA_ICMS
               If OPCAO_RED_BCICMS="1"
                  Then [Aliquota Reduzida BCICMS]=BlankNum()
               EndIf

         Case (TribCST="10" And TRIB_ICMS="S" And UF_ALIQUOTA_ICMS>0) Or
              (TribCST="70" And TRIB_ICMS="S" And UF_ALIQUOTA_ICMS>0):
              [Aliquota de ICMS  ]=UF_ALIQUOTA_ICMS
               If OPCAO_RED_BCICMS="1"
                  Then [Aliquota Reduzida BCICMS]=BlankNum()
               EndIf

         Case (TribCST="00" Or TribCST="10" Or TribCST="20" Or TribCST="70") And
              TRIB_ICMS<>"D" And TRIB_ICMS<>"S":
              [Tributacao de Icms]=TRIB_ICMS
              [Aliquota de ICMS  ]=BlankNum()
              Switch
               Case [Tributacao de Icms]="O": [Tipo Tributacao]=SubStr([Tipo Tributacao],1,1)+"90"                
               Case [Tributacao de Icms]="I": [Tipo Tributacao]=SubStr([Tipo Tributacao],1,1)+"40"                                
               Case [Tributacao de Icms]="N": [Tipo Tributacao]=SubStr([Tipo Tributacao],1,1)+"41"                                
						 EndSwitch
       EndSwitch
       VSD_I_CST_Item=[Tipo Tributacao]

       [Tributacao de ISSQN     ]="N"
       [Aliquota de ISSQN       ]=BlankNum()

       ;;alterado 12/02/2014 
       ;;e se for "SIMPLES.." pega novos dados 
       Switch
         Case (TPEMPR="SIMPLES NACIONAL" Or TPEMPR="SIMPLES NAC. ESRB"):

               Switch
               
                 Case [FaturaC->Tipo Movimento Estoque]="S": ; Saida    
               
                   if Search("DEVOL",[FaturaC->Descricao da Destinacao])>0  
                      then [CSOSN]="900"
                   endif

                   if Search("MOSTR",[FaturaC->Descricao da Destinacao])>0  Or
                      Search("BRIND",[FaturaC->Descricao da Destinacao])>0
                      then [CSOSN]="400"
                   endif   

                   if Search("VEND",[FaturaC->Descricao da Destinacao])>0 And [FaturaC->Tipo Pessoa]="FISICA"
                      then
                           Switch
                             Case [CSOSN]="101": [CSOSN]="102" 
                             Case [CSOSN]="201": [CSOSN]="202" 
                           EndSwitch
                   endif        

                 Case [FaturaC->Tipo Movimento Estoque]="E": ; Entrada    
               
                   [CSOSN]="400"

               EndSwitch
               VSD_I_CSOSN=SubStr([Tipo Tributacao],1,1)+[CSOSN]

               Switch
                 Case [CSOSN]="101" Or [CSOSN]="900":
                      [ICMS_CREDSN_Aliquota]=ALIQUOTA_CREDITO_ICMS_NOSN
                       If OPCAO_RED_BCICMS="1"
                          Then [Aliquota Reduzida BCICMS]=BlankNum()
                       EndIf
                      [MVA                 ]=BlankNum()
                      [ICMS_ST_Aliquota    ]=BlankNum()

                 Case [CSOSN]="201":
                      [ICMS_CREDSN_Aliquota]=ALIQUOTA_CREDITO_ICMS_NOSN
                       If OPCAO_RED_BCICMS="1"
                          Then [Aliquota Reduzida BCICMS]=BlankNum()
                       EndIf
                       [ICMS_ST_Aliquota]=UF_ALIQUOTA_ICMS_INTERNA
                       Checa_MVA("BALCAO",[Tributacao de ICMS],[Codigo MVA])

                 Case [CSOSN]="202" Or [CSOSN]="203":
                      [ICMS_CREDSN_Aliquota]=BlankNum()
                       If OPCAO_RED_BCICMS="1"
                          Then [Aliquota Reduzida BCICMS]=BlankNum()
                       EndIf
                       [ICMS_ST_Aliquota]=UF_ALIQUOTA_ICMS_INTERNA
                       Checa_MVA("BALCAO",[Tributacao de ICMS],[Codigo MVA])

                 Case [CSOSN]="500":
                      [ICMS_CREDSN_Aliquota]=BlankNum()
                       If OPCAO_RED_BCICMS="1"
                          Then [Aliquota Reduzida BCICMS]=BlankNum()
                       EndIf
                       if Search("DEVOL",[FaturaC->Descricao da Destinacao])>0 And 
                          [FaturaC->Tipo Movimento Estoque]="E"
                          then
                               [ICMS_ST_Aliquota]=UF_ALIQUOTA_ICMS_INTERNA
                               Checa_MVA("BALCAO",[Tributacao de ICMS],[Codigo MVA])
                       endif

                 OtherWise:                          
                      [ICMS_CREDSN_Aliquota]=BlankNum()
                      [MVA                 ]=BlankNum()
                      [ICMS_ST_Aliquota    ]=BlankNum()                  
               EndSwitch

         OtherWise: ;-- DEBITRO/CREDITO -----

               Switch
                 Case (TribCST="10" Or TribCST="30" Or TribCST="70"):
                      [ICMS_ST_Aliquota]=UF_ALIQUOTA_ICMS_INTERNA
                      Checa_MVA("BALCAO",[Tributacao de ICMS],[Codigo MVA])
                 Case TribCST="60" And Search("DEVOL",[FaturaC->Descricao da Destinacao])>0 And [FaturaC->Tipo Movimento Estoque]="E":
                      [ICMS_ST_Aliquota]=UF_ALIQUOTA_ICMS_INTERNA
                      Checa_MVA("BALCAO",[Tributacao de ICMS],[Codigo MVA])
                 OtherWise:     
                      [MVA             ]=BlankNum()
                      [ICMS_ST_Aliquota]=BlankNum()
               EndSwitch

               [CSOSN               ]="900"
               [ICMS_CREDSN_Aliquota]=BlankNum()
               [ICMS_CredSN_Valor   ]=BlankNum()

       EndSwitch
       
EndIf   

;* Seta Variaveis PegaCFOP
Checa_CFOP      =[FaturaC->Tipo Movimento Estoque]
CFO_C           =[FaturaC->CFO      ]
CFOP_TPITEM     =[Tipo do Item      ]
CFOP_TRIBICMS   =[Tributacao de ICMS]
CFOP_TPTRIB     =[Tipo Tributacao   ]
CFOP_EMPRESA    =[FaturaC->Codigo da Empresa ]
CFOP_ATIVEMPRESA=ATIVEMPR
Play "\\Sistemas\\Exporta\\PegaCFOP"        
[CFO            ]=CFO_C
[Tipo Tributacao]=CFOP_TPTRIB

If [Tipo do Item]="C" ; Servi‡o
  Then If SYS_CODIGO_CLIENTE="0296"
          Then [ISSQN_Municipio]=3122306
               [ISSQN_UF       ]="MG"
               Switch
                 Case Substr([FaturaC->CFO],1,1)="5" : [CFO]="5933"
                 Case Substr([FaturaC->CFO],1,1)="6" : [CFO]="6933"
               EndSwitch  
       EndIf
EndIf

If Search("VENDA",[FaturaC->Descricao da Destinacao])=0 And [FaturaC->Tipo Movimento Estoque]<>"S"
  Then [PIS_CST        ]  ="99"
       [PIS_ALIQUOTA   ]=BlankNum() 
       [COFINS_CST     ]  ="99"
       [COFINS_ALIQUOTA]=BlankNum() 
EndIf   

endproc

;*******************************************************************************
;* Rotina de Digitacao Dados do Item                                           *
;*******************************************************************************
Proc Item_Dialog(Disparo,Campo,Evento,Elemento)
Private Janela, WinArray5

TECLA=" Esc=Retornar  "
MSG_CAMPO=""
Temp=True

Old_Entrega=[Entrega]
If INICIO_DIALOG
   Then If CHAVEI=0
           Then Switch
                  Case Not IsBlank(VSD_I_Pedido_Item): Campo="I_Quantidade"
                  Case PARAM_COR_TECIDO="S"          : Campo="I_Codigo_Cor_Tecido"
                  Case PARAM_TAMANHO="S"             : Campo="I_Tamanho"
                  Case PARAM_TABPR_ITEM="S"          : Campo="I_Tabela"
                  OtherWise                          : Campo="I_Quantidade"
                EndSwitch  
                
                
;----- Brasil Textil ---------------------------------------------------------------------

                If SYS_CODIGO_CLIENTE="0239" And
                	[FaturaC->Tipo Movimento Estoque]="S" And
                	[FaturaI->Valor IPI por Unidade]>0
                   Then Campo="I_Preco_Unitario"
                   Else Campo="I_Quantidade"
                EndIf    
                
;-----------------------------------------------------------------------------------------

                TABANT=VSD_I_TABELA
           Else If PARAM_ORCAMENTO="S"
                   Then If IsBlank([FaturaC->Numero do Orcamento])
                           Then Campo="I_Codigo_Item"
                           Else Campo="I_Pedido"
                        EndIf
                   Else Campo="I_Codigo_Item"
                EndIf
        EndIf
        INICIO_DIALOG=False
EndIf

If Not Opcao_Ver And (CALCULO_NF_AUTOMATICO="A" or CALCULO_NF_AUTOMATICO="N")
   Then

        VSD_I_BC_ICMS     =BlankNum()
        VSD_I_Valor_ICMS  =BlankNum()

        VSD_I_Valor_CSOSN =BlankNum() 

        VSD_I_BC_ST       =BlankNum()
        VSD_I_Valor_ST    =BlankNum()
   
        VSD_I_BC_IPI      =BlankNum()
        VSD_I_Valor_IPI   =BlankNum()
   
        VSD_I_BC_ISSQN    =BlankNum()
        VSD_I_Valor_ISSQN =BlankNum()

        VSD_I_BC_PIS      =BlankNum()                             
        VSD_I_Valor_PIS   =BlankNum()
       
        VSD_I_BC_COFINS   =BlankNum()                             
        VSD_I_Valor_COFINS=BlankNum()
   
EndIf  

If Opcao_Ver=True Then Campo="I_Seq" EndIf

If Disparo="OPEN"
   Then
        TiraSombraShowDialog()
EndIf        

If Disparo="EVENT" And DynArraySize(Evento)>0 And Evento["Type"]="KEY" Then

   If Evento["KeyCode"] = -33
      Then Echo Normal
           Echo Off
           ShowPopup " Fun‡”es " CENTERED      
           "[F3] Alterar Desconto         ": " Alterar Desconto do Item           " :"F3",
           "[F4] Alterar ~D~escri‡„o      ": " Alterar Descri‡„o do Item          " :"F4",
           "[F5] A~l~tera Pre‡o           ": " Altera Pre‡o                       " :"F5",
           "[F6] A~l~tera Comiss„o        ": " Altera Comiss„o                    " :"F6",
           "[F7] Alterar Modo ~L~ocalizar ": " Alterar Modo de Localizar o Item   " :"F7", 
           "[F8] ~I~nforma‡”es Adicionais ": " Informa‡”es Adicionais do Item NFe " :"F8",
           "~C~ancelar                    ": " Cancelar a Opera‡„o                " : "CANCELAR"
          EndMenu
          To MenuVar
          Echo Off  
          If MenuVar="CANCELAR" or MenuVar="Esc"
             Then Return
          EndIf                                         
          Evento["KeyCode"]=MenuVar
   EndIf 

   Switch
     Case Opcao_Ver=True:
          Temp=False
          Switch
            Case Evento["KeyCode"] =  27:
                 CancelDialog
            OtherWise:
              Mover_Reg=True
              Switch
                Case Evento["KeyCode"] = -71:
                     If AtFirst()
                        Then Mover_Reg=False Beep
                        Else Home
                     EndIf
                Case Evento["KeyCode"] = -79:
                     If AtLast()
                        Then Mover_Reg=False Beep
                        Else End
                     EndIf
                Case Evento["KeyCode"] = -73:
                     If AtFirst()
                        Then Mover_Reg=False Beep
                        Else Up
                     EndIf
                Case Evento["KeyCode"] = -81:
                     If AtLast()
                        Then Mover_Reg=False Beep
                        Else Down
                     EndIf
              EndSwitch
              If Mover_Reg=True
                 Then SEQIT=[Item da OF]
                      Inicia_Registro()
              EndIf
          EndSwitch
     Case Evento["KeyCode"] = 9:
          Temp=False
     Case (Evento["KeyCode"] = -6 Or Evento["KeyCode"] = -147):
          Temp=False
          If CHAVEI=0
             Then If QuerExcluir("")
                     Then CHAVEI=8
                          CancelDialog
                  EndIf
          EndIf
     Case (Evento["KeyCode"] = -61 Or Evento["KeyCode"] = "F3"):
          DigitaDescto_Item()
          
     Case (Evento["KeyCode"] = -62 Or Evento["KeyCode"] = "F4") And Not F4_ATIVADO:
          F4_ATIVADO=True
          Campo_Ant=Campo
          Campo="I_Descricao_Item"          
          
     Case (Evento["KeyCode"] = -63 Or Evento["KeyCode"] = "F5")And Not F5_ATIVADO:
          If PARAM_ALTERA_PRECO="P"
             Then If Checa_Supervisor()
                     Then F5_ATIVADO=True
                          Campo_Ant=Campo 
                          Campo="I_Preco_Unitario"
                  EndIf
          EndIf
     Case (Evento["KeyCode"] = -64 Or Evento["KeyCode"] = "F6")  And Not F6_ATIVADO:
          If Not IsBlank(VSD_I_Codigo_Item)
             Then If PARAM_COMIS_ITEM="P"
                     Then Libera_Bloqueio("")
                          If Ok="S"
                             Then F6_ATIVADO=True
                                  Campo="I_Comissao_Item"
                          EndIf
                  EndIf
          EndIf
     Case (Evento["KeyCode"] = -66 Or Evento["KeyCode"] = "F8"):    
          Edita_Memo("Informacoes_Adicionais",15,01,06,78,"Informa‡”es Adicionais do Item NFe")
          VSD_I_InfAdic=[Informacoes_Adicionais]

     Case Evento["KeyCode"] = -65 Or Evento["KeyCode"] = "F7" :
          ModoLocalizarItem("SELECAO","","BALCAO")
          
     Case Evento["KeyCode"] = -59 :
          If Campo="I_Codigo_Item"        Or
             Campo="I_Codigo_Cor_Tecido"  Or
             Campo="I_Tabela"             Or
             Campo="I_CST_Item"           Or
             Campo="I_CST_IPI"            Or
             Campo="I_TISSQN"             Or
             Campo="I_CST_PIS"            Or
             Campo="I_CST_COFINS"         Or
             Campo="I_CFOP"               Or              
             Campo="I_CSOSN"              Or
             Campo="I_MUNSERV"                     
             Then Dynarray WinArray5[]
                  Window Handle Dialog to JANELA
                  Window GetAttributes JANELA To WinArray5
                  WinArray5["FLOATING"]=False
                  Window SetAttributes JANELA From WinArray5

                  If Campo="I_Codigo_Item"        Then Moveto [Codigo do Item]         EndIf
                  If Campo="I_Codigo_Cor_Tecido"  Then Moveto [Codigo da Cor_Tecido]   EndIf
                  
                  If Campo="I_Tabela"             
                     Then FI_TABELAAnt=VSD_I_Tabela
                          FC_TABELAAnt=[FaturaC->Codigo da Tabela]
                          Moveto "FaturaC"
                          Moveto [Codigo da Tabela]  
                  EndIf
                  If Campo="I_CFOP"               
                     Then FI_CFOAnt=VSD_I_CFOP
                          FC_CFOAnt=[FaturaC->CFO]
                          Moveto "FaturaC"
                          Moveto [CFO]
                  EndIf
                  If Campo="I_MUNSERV"             
                     Then FI_MUNSERVAnt=VSD_I_MUNSERV
                          FI_UFSERVAnt =VSD_I_UFSERV
                          FC_MUNSERVAnt=[FaturaC->Cidade]
                          FC_UFSERVAnt =[FaturaC->UF]
                          Moveto "FaturaC"
                          Moveto [Cidade]  
                  EndIf

                  Switch
                    Case Campo="I_CST_Item":          
                      CSTNew=VSD_I_CST_Item 
                      VSD_I_CST_Item=Checa_CST("ICMS",[FaturaC->Tipo Movimento Estoque],"")
                      If IsBlank(VSD_I_CST_Item)
                         Then VSD_I_CST_Item=CSTNew
                         Else [Tipo Tributacao]=VSD_I_CST_Item
                      EndIf
                      Release Vars CSTNew
                    Case Campo="I_CST_IPI":          
                      CSTNew=VSD_I_CST_IPI 
                      VSD_I_CST_IPI=Checa_CST("IPI",[FaturaC->Tipo Movimento Estoque],"")
                      If IsBlank(VSD_I_CST_IPI)
                         Then VSD_I_CST_IPI=CSTNew
                         Else [IPI_CST]=VSD_I_CST_IPI
                      EndIf
                      Release Vars CSTNew
                    Case Campo="I_CST_PIS":          
                      CSTNew=VSD_I_CST_PIS 
                      VSD_I_CST_PIS=Checa_CST("PIS",[FaturaC->Tipo Movimento Estoque],"")
                      If IsBlank(VSD_I_CST_PIS)
                         Then VSD_I_CST_PIS=CSTNew
                         Else [PIS_CST]=VSD_I_CST_PIS
                      EndIf
                      Release Vars CSTNew
                    Case Campo="I_CST_COFINS":          
                      CSTNew=VSD_I_CST_COFINS 
                      VSD_I_CST_COFINS=Checa_CST("COFINS",[FaturaC->Tipo Movimento Estoque],"")
                      If IsBlank(VSD_I_CST_COFINS)
                         Then VSD_I_CST_COFINS=CSTNew
                         Else [COFINS_CST]=VSD_I_CST_COFINS
                      EndIf
                      Release Vars CSTNew
                    Case Campo="I_CSOSN":          
                      CSTNew=VSD_I_CSOSN 
                      VSD_I_CSOSN=Checa_CSOSN2("","")
                      If IsBlank(VSD_I_CSOSN)
                         Then VSD_I_CSOSN=CSTNew
                         Else [CSOSN    ]=VSD_I_CSOSN
                      EndIf
                      Release Vars CSTNew
                    Case Campo="I_TISSQN":          
                      CSTNew=VSD_I_TISSQN 
                      VSD_I_TISSQN=Checa_CST("ISSQN","","")
                      If IsBlank(VSD_I_TISSQN)
                         Then VSD_I_TISSQN         =CSTNew
                         Else [Tributacao de ISSQN]=VSD_I_TISSQN        
                      EndIf
                      Release Vars CSTNew
                    OtherWise:         
                      If ConsultaF1()
                         Then Switch
                                Case Campo="I_CFOP":               
                                      FI_CFOAnt     =[FaturaC->CFO] 
                                      [FaturaC->CFO]=FC_CFOAnt
                                      Moveto "FaturaI"
                                      [FaturaI->CFO]=FI_CFOAnt
                                Case Campo="I_Tabela":               
                                      FI_TABELAAnt     =[FaturaC->Codigo da Tabela] 
                                      [FaturaC->Codigo da Tabela]=FC_TABELAAnt
                                      Moveto "FaturaI"
                                      [FaturaI->Codigo da Tabela]=FI_TABELAAnt
                                Case Campo="I_MUNSERV":               
                                      [FaturaC->Cidade   ]=FC_MUNSERVAnt
                                      [FaturaC->UF       ]=FC_UFSERVAnt
                                      Moveto "FaturaI"
                                      [FaturaI->ISSQN_Municipio]=Reg_ConsultaF1["Codigo_Cidade"]
                                      [FaturaI->ISSQN_UF       ]=Reg_ConsultaF1["UF"] 
                              EndSwitch
                         Else If Campo="I_CFOP" Or Campo="I_Tabela" Or Campo="I_MUNSERV"  
                                 Then Moveto "FaturaI"
                              EndIf        
                      EndIf                          
                  EndSwitch                          
                
                  Window Select JANELA
                  WinArray5["FLOATING"]=True
                  Window SetAttributes JANELA From WinArray5

                  Echo Normal
                  Echo off

                  If Campo="I_Codigo_Item"
                     Then VSD_I_Codigo_Item    = [Codigo do Item   ]
                          VSD_I_Descricao_Item = [Descricao do Item]
                          VSD_I_UN_Item        = [Unidade Fiscal   ]
                          VSD_I_Tipo_Item      = [Tipo do Item     ]
                          VSD_I_CST_Item       = [Tipo Tributacao  ]
                  EndIf
                  
                  If Campo="I_Codigo_Cor_Tecido"
                     Then VSD_I_Codigo_Cor_Tecido   =[Codigo da Cor_Tecido   ]
                          VSD_I_Descricao_Cor_Tecido=[Descricao da Cor_Tecido]
                          Campo="I_Codigo_Cor_Tecido"
                  EndIf

                  If Campo="I_Tabela"
                     Then VSD_I_Tabela              =[Codigo da Tabela       ]
                          Release Vars FI_TABELAAnt,FC_TABELAAnt
                  EndIf
                  If Campo="I_CFOP"
                     Then VSD_I_CFOP            =[CFO             ]
                          Campo="I_CFOP"
                          Release Vars FI_CFOAnt,FC_CFOAnt
                  EndIf
                   If Campo="I_MUNSERV"
                      Then VSD_I_MUNSERV=[FaturaI->ISSQN_Municipio]
                           VSD_I_UFSERV =[FaturaI->ISSQN_UF       ] 
                           Campo="I_MUNSERV"
                           Release Vars FI_MUNSERVAnt,FC_MUNSERVAnt,FI_UFSERVAnt,FC_UFSERVAnt
                   EndIf
                  If Campo="I_CST_Item"
                     Then VSD_I_CST_Item        =[Tipo Tributacao ]
                          Campo="I_CST_Item"
                  EndIf
                  
                  Moveto "FaturaI"
         EndIf
         Temp=False
     Case Evento["KeyCode"] = 27:
          Temp=False
          Switch
            Case Campo="I_Pedido":
                 CancelDialog
            Case Campo="I_Pedido_Item"      : Campo="I_Pedido"
            Case Campo="I_Codigo_Item"      :
                 If Not IsBlank([Numero Pedido_Orcamento])
                    Then Campo="I_Pedido_Item"
                    Else CancelDialog
                 EndIf
            Case Campo="I_Descricao_Item"    :
                 If F4_ATIVADO
                    Then Campo=Campo_Ant
                         F4_ATIVADO=False
                    Else If CHAVEI=1
                            Then Campo="I_Codigo_Item"
                            Else CancelDialog
                         EndIf
                 EndIf
                                  
            Case Campo="I_Codigo_Cor_Tecido" :
                 Switch
                   OtherWise:
                        If CHAVEI=1
                           Then Campo="I_Codigo_Item"
                           Else CancelDialog
                        EndIf
                 EndSwitch
            Case Campo="I_Tamanho":
                 Switch
                   Case PARAM_COR_TECIDO="S"       : Campo="I_Codigo_Cor_Tecido"
                   OtherWise:
                        If CHAVEI=1
                           Then Campo="I_Codigo_Item"
                           Else CancelDialog
                        EndIf
                 EndSwitch
            Case Campo="I_Tabela":
                 Switch
                   Case PARAM_TAMANHO="S"          : Campo="I_Tamanho"
                   Case PARAM_COR_TECIDO="S"       : Campo="I_Codigo_Cor_Tecido"
                   OtherWise:
                        If CHAVEI=1
                           Then Campo="I_Codigo_Item"
                           Else CancelDialog
                        EndIf
                 EndSwitch                 
            Case Campo="I_Quantidade_Solicitada" : 
                 Switch
                   Case Not IsBlank(VSD_I_Pedido_Item):
                        If CHAVEI=1
                           Then Campo="I_Pedido_Item"
                           Else CancelDialog
                        EndIf
                   Case PARAM_TABPR_ITEM="S"       : Campo="I_Tabela"
                   Case PARAM_TAMANHO="S"          : Campo="I_Tamanho"
                   Case PARAM_COR_TECIDO="S"       : Campo="I_Codigo_Cor_Tecido"
                   OtherWise:
                        If CHAVEI=1
                           Then Campo="I_Codigo_Item"
                           Else CancelDialog
                        EndIf
                 EndSwitch
            Case Campo="I_Quantidade":
                 Switch
                   Case PARAM_UTILIZA_QTD_SOLICITADA="S": Campo="I_Quantidade_Solicitada"
                   Case Not IsBlank(VSD_I_Pedido_Item):
                        If CHAVEI=1
                           Then Campo="I_Pedido_Item"
                           Else CancelDialog
                        EndIf
                   Case PARAM_TABPR_ITEM="S"       : Campo="I_Tabela"
                   Case PARAM_TAMANHO="S"          : Campo="I_Tamanho"
                   Case PARAM_COR_TECIDO="S"       : Campo="I_Codigo_Cor_Tecido"
                   OtherWise:
                        If CHAVEI=1
                           Then Campo="I_Codigo_Item"
                           Else CancelDialog
                        EndIf
                 EndSwitch


;----- Brasil Textil ---------------------------------------------------------------------

            Case SYS_CODIGO_CLIENTE="0239" And
							  [FaturaC->Tipo Movimento Estoque]="S"  And
               	[FaturaI->Valor IPI por Unidade]>0     And
                 (Campo="I_UN_Item"                  Or
                  Campo="I_Preco_Unitario"           Or
                  Campo="I_Tipo_Desconto_Item"       Or
                  Campo="I_Preco_Total"              Or
                  Campo="I_Comissao_Item"            Or
                  Campo="I_CST_Item")             :

	               CancelDialog

;-----------------------------------------------------------------------------------------


            Case Campo="I_UN_Item"                  Or
                 Campo="I_Tipo_Desconto_Item"       Or
                 Campo="I_Preco_Total"              Or
                 Campo="I_CSOSN"                    Or
                 Campo="I_Entrega"                   : Campo="I_Quantidade"
            
            Case Campo="I_Preco_Unitario"    :
                 If F5_ATIVADO
                    Then Campo=Campo_Ant
                         F5_ATIVADO=False
                 EndIf
                 Campo="I_Quantidade"
                 
            Case Campo="I_Comissao_Item"    :
                 If F6_ATIVADO
                    Then Campo=Campo_Ant
                         F6_ATIVADO=False
                 EndIf
                 Campo="I_Quantidade"
            
            Case Campo="I_DataEntregar"      : Campo="I_Entrega"

             Case Campo="I_CST_Item"          :                       
                 If (TPEMPR="SIMPLES NACIONAL" Or TPEMPR="SIMPLES NAC. ESRB")
                    Then Campo="I_CSOSN"
                    Else Campo="I_Quantidade"
                 EndIf

            Case Campo="I_RBC_ICMS"     Or
                 Campo="I_AICMS"        Or
                 Campo="I_BC_ICMS"      Or
                 Campo="I_Valor_ICMS"   Or       
                 Campo="I_MVA"               : Campo="I_CST_Item"
            
            Case Campo="I_ACSOSN"       Or
                 Campo="I_Valor_CSOSN"       : Campo="I_CSOSN"

            Case Campo="I_RBC_ST"       Or
                 Campo="I_AST"          Or
                 Campo="I_BC_ST"        Or
                 Campo="I_Valor_ST"          : Campo="I_MVA"

            Case Campo="I_CST_IPI"           : Campo="I_CST_Item"
                   
            Case Campo="I_AIPI"         Or
                 Campo="I_Valor_IPI"    Or  
                 Campo="I_BC_IPI"            : Campo="I_CST_IPI"
            
            Case Campo="I_TISSQN"            :
                 If VSD_I_Tipo_Item="C"
                    Then Campo="I_Quantidade"
                    Else Campo="I_CST_IPI"
                 EndIf
        
            Case Campo="I_AISSQN"       Or
                 Campo="I_BC_ISSQN"     Or
                 Campo="I_Valor_ISSQN"       : Campo="I_TISSQN"

            Case Campo="I_CST_PIS"           :
                 If VSD_I_Tipo_Item="C"
                    Then Campo="I_TISSQN"
                    Else Campo="I_CST_IPI" 
                 EndIf

            Case Campo="I_APIS"         Or
                 Campo="I_Valor_PIS"    Or     
                 Campo="I_BC_PIS"       Or
                 Campo="I_CST_COFINS"        : Campo="I_CST_PIS"

            Case Campo="I_ACOFINS"      Or
                 Campo="I_BC_COFINS"    Or 
                 Campo="I_Valor_COFINS"      : Campo="I_CST_COFINS"

            Case Campo="I_CFOP"              : 
                 If (TPEMPR="SIMPLES NACIONAL" Or TPEMPR="SIMPLES NAC. ESRB")
                    Then Campo="I_CSOSN"
                    Else Campo="I_CST_Item"
                 EndIf
            
            Case Campo="I_NCM"      Or         
                 Campo="I_CDSERV"   Or
                 Campo="I_MUNSERV"           : Campo="I_CFOP"
                   
            Case Campo="I_Numero_Volumes"    : Campo="I_CFOP"
            Case Campo="I_Peso_Liquido"      : Campo="I_Numero_Volumes"
            Case Campo="I_Peso_Embalagem"    : Campo="I_Peso_Liquido"
          EndSwitch
     Case Evento["KeyCode"] = 13:
          Temp=False
          Switch
            Case Campo="I_Pedido":
                 VSD_I_Pedido=AlinhM(ControlValue("I_Pedido"),6)
                 If VSD_I_Pedido="000000"
                    Then VSD_I_Pedido     =""
                         VSD_I_Pedido_Item=0
                         Campo="I_Codigo_Item"
                    Else Campo="I_Pedido_Item"
                 EndIf
            Case Campo="I_Pedido_Item":
                 VSD_I_Pedido_Item=ControlValue("I_Pedido_Item")
                 If VSD_I_Pedido_Item=""
                    Then VSD_I_Pedido_Item=0
                 EndIf
                 If Not IsBlank(VSD_I_Pedido_Item)
                    Then Moveto "FaturaC"
                         [Numero Pedido_Orcamento]=VSD_I_Pedido
                         Moveto "OrcaI"
                         Moveto [Item do Orcamento]
                         Locate NumVal(VSD_I_Pedido_Item)
                         If Not RetVal
                            Then Mensagem("Item n„o Encontrado !")
                                 Moveto "FaturaI"
                            Else If ([Quantidade]-[Quantidade Faturada])<=0
                                    Then Mensagem("Item do Pedido c/ Saldo todo Faturado !")
                                 EndIf
                                 Moveto "FaturaI"
                                 Copia_Ped_Orc_Fatura()
                                 Registro_Item("Ler")
                                                         
                                 If PARAM_UTILIZA_QTD_SOLICITADA="S"
                                    Then Campo="I_Quantidade_Solicitada" 
                                    Else Campo="I_Quantidade"
                                 EndIf   
                         EndIf
                    Else Campo="I_Codigo_Item"
                 EndIf

            Case Campo="I_Codigo_Item":
                 VSD_I_Codigo_Item=ControlValue("I_Codigo_Item")
                 If IsBlank(VSD_I_Codigo_Item)
                    Then 
                         FastMsg("Valor inv lido !")
                    Else If LOCALIZA_CODIGO = "LOC_CODBAR"
                            Then CODIGO_BARRA = VSD_I_Codigo_Item
                                 ORIGEM = "Codigo_Barras_ShowDialog"
                            Else ORIGEM = ""
                         EndIf
                         if Pega_Dados_Item(ORIGEM)
                            then
                                 ITEM_DUPLICADO = False
                                 
                                 If PARAM_DUPLICIDADE_ITEM
                                    then
                                         Moveto [Codigo do Item]
                                         Locate VSD_I_Codigo_Item
                                         while retval
                                           If [Item da OF]<>SEQIT 
                                              Then ITEM_DUPLICADO=True
                                                   quitloop
                                           EndIf
                                           skip
                                           if eot() then quitloop endif
                                           Locate Next VSD_I_Codigo_Item
                                         endwhile
                                         
                                         Moveto [Item da OF]
                                         Locate [FaturaC->Numero da OF],SEQIT
                                 EndIf
                            
                                 If ITEM_DUPLICADO
                                    Then
                                         fastMSg("O Item ["+VSD_I_Codigo_Item+"] j  existe neste Pedido !")
                                    else
                                         Registro_Item("Ler")
                                         
                                         Ver_Saldo=True
                                         checa_estoque()
                                         
                                         switch
                                            Case PARAM_COR_TECIDO="S"            : Campo="I_Codigo_Cor_Tecido"
                                            Case PARAM_TAMANHO="S"               : Campo="I_Tamanho"
                                            Case PARAM_TABPR_ITEM="S"            : Campo="I_Tabela"
                                            OtherWise                            : If PARAM_UTILIZA_QTD_SOLICITADA="S"
                                                                                      Then Campo="I_Quantidade_Solicitada" 
                                                                                      Else Campo="I_Quantidade"
                                                                                   EndIf
                                         endswitch
                                 endif   
                         endif     
                 EndIf        

             Case Campo="I_Descricao_Item":
                 VSD_I_Descricao_Item=ControlValue("I_Descricao_Item")
                 If F4_ATIVADO
                    Then Campo=Campo_Ant
                         F4_ATIVADO=False
                    Else Switch
                           Case SYS_CODIGO_CLIENTE = "0251" or
                                SYS_CODIGO_CLIENTE = "0247" :
                                Moveto [Codigo do Item]                                              
                                Ativa_Lookup()                   
                                Locate [Faturai->Codigo do Item] 
                                If [Codigo da Familia]="005"
                                    Then Play "Calc_Ma" 
                                EndIf   
                                KeyPress "ESC"
                                If PARAM_UTILIZA_QTD_SOLICITADA="S"
                                   Then Campo="I_Quantidade_Solicitada" 
                                   Else Campo="I_Quantidade"
                                EndIf
                                
                           Case PARAM_COR_TECIDO="S"      : Campo="I_Codigo_Cor_Tecido"
                           Case PARAM_TAMANHO="S"         : Campo="I_Tamanho"
                           Case PARAM_TABPR_ITEM="S"      : Campo="I_Tabela"
                           OtherWise                      : If PARAM_UTILIZA_QTD_SOLICITADA="S"
                                                               Then Campo="I_Quantidade_Solicitada" 
                                                               Else Campo="I_Quantidade"
                                                            EndIf
                         EndSwitch
                 EndIf                  
            Case Campo="I_Codigo_Cor_Tecido"      :
                 VSD_I_Codigo_Cor_Tecido=ControlValue("I_Codigo_Cor_Tecido")
                 If Not IsBlank(VSD_I_Codigo_Cor_Tecido)
                    Then Moveto [Codigo da Cor_Tecido]
                         If Busca_Lookup("Codigo da Cor_Tecido",VSD_I_Codigo_Cor_Tecido,"SM")
                            Then [Codigo da Cor_Tecido]=VSD_I_Codigo_Cor_Tecido
                                 VSD_I_Descricao_Cor_Tecido=REG_BUSCA_LOOKUP["Descricao da Cor_Tecido"]       
                                 Campo="I_Descricao_Cor_Tecido"
                            Else Mensagem("Cor/Tecido n„o Cadastrado !")      
                                 VSD_I_Codigo_Cor_Tecido   ="" 
                                 VSD_I_Descricao_Cor_Tecido=""
                         EndIf        
                    Else Campo="I_Descricao_Cor_Tecido"             
                 EndIf
                 Echo Off
            Case Campo="I_Descricao_Cor_Tecido" :
                 VSD_I_Descricao_Cor_Tecido=ControlValue("I_Descricao_Cor_Tecido")
                 If PARAM_TAMANHO="S"
                    Then Campo="I_Tamanho"
                    Else If PARAM_TABPR_ITEM="S"
                            Then Campo="I_Tabela"
                            Else If PARAM_UTILIZA_QTD_SOLICITADA="S"
                                    Then Campo="I_Quantidade_Solicitada" 
                                    Else Campo="I_Quantidade"
                                 EndIf
                         EndIf
                 EndIf
            Case Campo="I_Tamanho":
                 VSD_I_Tamanho=ControlValue("I_Tamanho")
                 Switch
                   Case PARAM_TABPR_ITEM="S"      : Campo="I_Tabela"
                   OtherWise                      : If PARAM_UTILIZA_QTD_SOLICITADA="S"
                                                       Then Campo="I_Quantidade_Solicitada" 
                                                       Else Campo="I_Quantidade"
                                                    EndIf
                 EndSwitch   
             Case Campo="I_Tabela":
                 VSD_I_Tabela=ControlValue("I_Tabela")
                 If Not IsBlank(VSD_I_Tabela)
                    Then Moveto "FaturaC"
                         Moveto [Codigo da Tabela]
                         Ativa_Lookup()
                         Moveto [Codigo da Tabela]
                         Locate VSD_I_Tabela
                         If RetVal
                            Then KeyPress "ESC"
                                 Moveto "FaturaI"
                                 [Codigo da Tabela]=VSD_I_Tabela
                                 If CHAVEI=1
                                    Then Pega_Preco("Novo")
                                    Else If VSD_I_TABELA<>TABANT
                                            Then Pega_Preco("Novo")
                                            Else Pega_Preco("Checa")
                                         EndIf
                                 EndIf
                                 TABANT=VSD_I_TABELA
                                 If PARAM_UTILIZA_QTD_SOLICITADA="S"
                                    Then Campo="I_Quantidade_Solicitada" 
                                    Else Campo="I_Quantidade"
                                 EndIf
                            Else Mensagem("Tabela n„o Cadastrada !")
                                 KeyPress "ESC"
                                 Moveto "FaturaI"
                         EndIf
                         Echo Off
                 EndIf
            Case Campo="I_Quantidade_Solicitada" :
                 VSD_I_Quantidade_Solicitada=ControlValue("I_Quantidade_Solicitada")
                 If VSD_I_Quantidade_Solicitada>0 
                    Then If CHAVEI=1
                            Then GetRecord "\\Sistemas\\Estoque\\Iten_Com" VSD_I_Codigo_Item To REG_ITEMCOM
                                 If RetVal
                                    Then If REG_ITEMCOM["Fracionado"]="N" And (VSD_I_Quantidade-Int(VSD_I_Quantidade))<>0
                                            Then Mensagem("A Quantidade do Item ["+VSD_I_Codigo_Item+"] nÆo pode ser Fracionado !// //Definido no cadastro do item !")
                                            Else [Quantidade]=VSD_I_Quantidade_Solicitada
                                                 VERIFICA_SALDO_DISPONIVEL=True
                                                 If CHECA_ESTOQUE()  
                                                    Then [Quantidade]=SALDO_DISPONIVEL            
                                                    Else [Quantidade]=BlankNum()  
                                                 EndIf
                                                 VSD_I_Quantidade = [Quantidade] 
                                                 Release Vars VERIFICA_SALDO_DISPONIVEL
                                                 Campo="I_Quantidade"
                                         EndIf   
                                    Else FastMsg("N„o foi localizado a tabela de complemento deste item!")         
                                 EndIf
                            Else Campo="I_Quantidade"     
                         EndIf  
                    Else Campo="I_Quantidade"      
                 EndIf                                                                    
            Case Campo="I_Quantidade":
                 VSD_I_Quantidade=ControlValue("I_Quantidade")
                 GetRecord "\\Sistemas\\Estoque\\Iten_Com" VSD_I_Codigo_Item To REG_ITEMCOM
                 If RetVal
                    Then If REG_ITEMCOM["Fracionado"]="N" And (VSD_I_Quantidade-Int(VSD_I_Quantidade))<>0
                            Then Mensagem("A Quantidade do Item ["+VSD_I_Codigo_Item+"] nÆo pode ser Fracionado !// //Definido no cadastro do item !")
                            Else [Quantidade]=VSD_I_Quantidade
                                 
                                 If [Quantidade]>0 And CHECA_ESTOQUE() And CHECA_PEDIDO() 
                                    Then If PARAM_TRANSF_ULTCT="S"
                                            Then If Search("TRANSF",[FaturaC->Descricao da Destinacao])>0 And
                                                    (VSD_I_Tipo_Item="P" Or VSD_I_Tipo_Item="T") And
                                                    CHAVEI=1
                                                    Then VSD_I_Preco_Unitario=ULTIMO_CTENTRADA
                                                 EndIf
                                         EndIf
                                         
                                         If sys_Codigo_Cliente="0377" and [FaturaC->Tipo Movimento Estoque]="S"
                                            Then If Search("INDUSTR",[FaturaC->Descricao da Destinacao])>0 And
                                                    (VSD_I_Tipo_Item="P" Or VSD_I_Tipo_Item="S") And
                                                    CHAVEI=1
                                                    Then VSD_I_Preco_Unitario=ULTIMO_CTENTRADA
                                                 EndIf
                                         EndIf
                                         
                                         CalcularPrecoTotal_Item()
                
                                         Switch
                                           Case PARAM_ALTERA_PRECO="N" And
                                                Search("VEND",[FaturaC->Descricao da Destinacao])>0 And 
                                                VSD_I_Preco_Unitario<=0       : Campo="I_Quantidade"  
                                                                                Mensagem("Item sem tabela de pre‡o !")
                                           Case PARAM_ALTERA_PRECO="S"        : Campo="I_Preco_Unitario"
                                           Case PARAM_ALTERA_PRECO="N" And
                                                Search("VEND",[FaturaC->Descricao da Destinacao])=0:
                                                                                Campo="I_Preco_Unitario"                                     
                                           Case PARAM_DESCUNIT="S" and CHAVEI=1  : Campo="I_Tipo_Desconto_Item"
                                           OtherWise                          : 
                                                If ALTERA_PRECO_TOTAL="S"
                                                   Then Campo="I_Preco_Total"
                                                   Else Switch
                                                          Case PARAM_COMIS_ITEM="S"     : Campo="I_Comissao_Item"
                                                          Case PARAM_ENTREGA="S"        : Campo="I_Entrega"
                                                          Case PARAM_IMPOSTOS="S"       : If VSD_I_Tipo_Item="C"
                                                                                             Then Campo="I_TISSQN"
                                                                                             Else If (TPEMPR="SIMPLES NACIONAL" Or TPEMPR="SIMPLES NAC. ESRB")
                                                                                                     Then Campo="I_CSOSN"
                                                                                                     Else Campo="I_CST_Item"
                                                                                                  EndIf
                                                                                          EndIf           
                                                          Case PARAM_VOLUMES="S"        : Campo="I_NUMERO_VOLUMES"
                                                          OtherWise                     : AcceptDialog
                                                        EndSwitch  
                                                EndIf                                
                                         EndSwitch
                                    Else If PARAM_UTILIZA_QTD_SOLICITADA="S" 
                                            Then If VSD_I_Quantidade_Solicitada>0
                                                    Then VSD_I_Preco_Bruto            =blanknum()
                                                         VSD_I_Tipo_Desconto_Item     =""
                                                         VSD_I_Desconto_Descricao     ="" 
                                                         VSD_I_Taxa_Desconto_Unitario =blanknum()
                                                         VSD_I_Valor_Desconto_Unitario=blanknum()
                                                         VSD_I_Valor_Desconto_Item    =blanknum()
                                                         VSD_I_Preco_Total            =0
                                                         AcceptDialog
                                                 EndIf
                                         EndIf     
                                 EndIf
                         EndIf    
                    Else FastMsg("N„o foi localizado a tabela de complemento deste item!")         
                 EndIf      
            Case Campo="I_UN_Item":
                 VSD_I_UN_Item=ControlValue("I_UN_Item")
                 Switch
                   Case PARAM_ALTERA_PRECO="S"        : Campo="I_Preco_Unitario"
                   Case PARAM_ALTERA_PRECO="N" And
                        Search("VEND",[FaturaC->Descricao da Destinacao])=0:
                                                        Campo="I_Preco_Unitario"
                   Case PARAM_DESCUNIT="S" and CHAVEI=1  : Campo="I_Tipo_Desconto_Item"
                   OtherWise                          :
                        If ALTERA_PRECO_TOTAL="S"
                           Then Campo="I_Preco_Total"
                           Else Switch
                                  Case PARAM_COMIS_ITEM="S"     : Campo="I_Comissao_Item"
                                  Case PARAM_ENTREGA="S"        : Campo="I_Entrega"
                                  Case PARAM_IMPOSTOS="S"       : If VSD_I_Tipo_Item="C"
                                                                     Then Campo="I_TISSQN"
                                                                     Else If (TPEMPR="SIMPLES NACIONAL" Or TPEMPR="SIMPLES NAC. ESRB")
                                                                             Then Campo="I_CSOSN"
                                                                             Else Campo="I_CST_Item"
                                                                          EndIf
                                                                  EndIf           
                                  Case PARAM_VOLUMES="S"        : Campo="I_NUMERO_VOLUMES"
                                  OtherWise                     : AcceptDialog
                                EndSwitch  
                        EndIf
                 EndSwitch
            Case Campo="I_Preco_Unitario":
                 VSD_I_Preco_Unitario=ControlValue("I_Preco_Unitario")
                 
                 CalcularPrecoTotal_Item()

                 CONTINUA=True
                 If PARAM_COMIS_MARCA="S"
                    Then If Search("VEND",[FaturaC->Descricao da Destinacao])>0 And
                            (VSD_I_Tipo_Item="P" Or VSD_I_Tipo_Item="T")
                            Then If VSD_I_Preco_Unitario>=VSD_I_Preco_Tabela
                                    Then VSD_I_Tipo_Desconto_Item     =""
                                         VSD_I_Taxa_Desconto_Unitario =0
                                         VSD_I_Valor_Desconto_Unitario=0
                                    Else VSD_I_Tipo_Desconto_Item     ="U"
                                         VSD_I_Taxa_Desconto_Unitario =((VSD_I_Preco_Tabela-VSD_I_Preco_Unitario)*100)/VSD_I_Preco_Tabela
                                         VSD_I_Valor_Desconto_Unitario=(VSD_I_Preco_Tabela*VSD_I_Taxa_Desconto_Unitario)/100
                                 EndIf
                                 Pega_Preco("Checa")
                                 If Checa_Comissao()
                                    Then 
                                         CalcularPrecoTotal_Item()
                                         If Liberou_Bloqueio
                                            Then CONTINUA=False          ; Continua e pula
                                                 Campo="I_Comissao_Item" ; pra comissao
                                         EndIf
                                    Else CONTINUA=False
                                 EndIf
                         EndIf
                 EndIf

                 ;*** Ajustes 21/03/2007 MinasLack
                 If (PARAM_BLOQ_DESCTO="S" Or PARAM_BLOQ_DESCTO="P") And
                    Search("VEND",[FaturaC->Descricao da Destinacao])>0 And
                    PARAM_COMIS_MARCA="N" And
                    Not F5_ATIVADO
                    Then If VSD_I_Preco_Unitario<VSD_I_Preco_Tabela
                            Then CONTINUA=False
                                 Mensagem("Pre‡o unit rio n„o permitido, menor que pre‡o da Tabela !")
                         EndIf
                 EndIf
                 
                 If [FaturaC->Tipo Movimento Estoque]="S" And Search("VEND",[FaturaC->Descricao da Destinacao])>0 And VSD_I_Preco_Unitario<=0        
                    Then CONTINUA=False
                         Mensagem("Informe o pre‡o para prosseguir!")
                 EndIf

                 If CONTINUA
                    Then 
                         If F5_ATIVADO=True
                            Then F5_ATIVADO=False
                                 Campo=Campo_Ant

                                 Grava_LogEx("Balcao AltPreco")
                            else     
                                 Switch
                                   Case PARAM_DESCUNIT="S" and CHAVEI=1  : Campo="I_Tipo_Desconto_Item"
                                   Case PARAM_COMIS_ITEM="S" : Campo="I_Comissao_Item"
                                   Case PARAM_ENTREGA="S"    : Campo="I_Entrega"                          
                                   Case PARAM_IMPOSTOS="S"   : 
                                         If VSD_I_Tipo_Item="C"
                                            Then Campo="I_TISSQN"
                                            Else If (TPEMPR="SIMPLES NACIONAL" Or TPEMPR="SIMPLES NAC. ESRB")
                                                    Then Campo="I_CSOSN"
                                                    Else Campo="I_CST_Item"
                                                 EndIf
                                         EndIf
                                   Case PARAM_VOLUMES="S"    : Campo="I_NUMERO_VOLUMES"
                                   OtherWise                 : AcceptDialog
                                 EndSwitch
                         EndIf
                 EndIf
                 
            Case Campo="I_Tipo_Desconto_Item":
                 VSD_I_Tipo_Desconto_Item    =ControlValue("I_Tipo_Desconto_Item")

                 desctoitemok=true
                 if isblank(VSD_I_Tipo_Desconto_Item)
                    then 
                         CalcularPrecoTotal_Item()
                    else 
                         if CHAVEI=1
                            then if not DigitaDescto_Item()
                                    then desctoitemok=false
                                 endif
                         endif
                 endif
                  
                 if desctoitemok
                    then          
                         If ALTERA_PRECO_TOTAL="S"
                            Then Campo="I_Preco_Total"
                            Else Switch
                                   Case PARAM_COMIS_ITEM="S"     : Campo="I_Comissao_Item"
                                   Case PARAM_ENTREGA="S"        : Campo="I_Entrega"
                                   Case PARAM_IMPOSTOS="S"       : If VSD_I_Tipo_Item="C"
                                                                      Then Campo="I_TISSQN"
                                                                      Else If (TPEMPR="SIMPLES NACIONAL" Or TPEMPR="SIMPLES NAC. ESRB")
                                                                              Then Campo="I_CSOSN"
                                                                              Else Campo="I_CST_Item"
                                                                           EndIf
                                                                  EndIf           
                                   Case PARAM_VOLUMES="S"        : Campo="I_NUMERO_VOLUMES"
                                   OtherWise                     : AcceptDialog
                                 EndSwitch  
                         EndIf
                 EndIf         
                 
            Case Campo="I_Preco_Total":
                 VSD_I_Preco_Total=ControlValue("I_Preco_Total")
                 
                 CalcularPrecoTotal_Item()
                 Switch
                   Case PARAM_COMIS_ITEM="S"     : Campo="I_Comissao_Item"
                   Case PARAM_ENTREGA="S"        : Campo="I_Entrega"
                   Case PARAM_IMPOSTOS="S"       : If VSD_I_Tipo_Item="C"
                                                      Then Campo="I_TISSQN"
                                                      Else If (TPEMPR="SIMPLES NACIONAL" Or TPEMPR="SIMPLES NAC. ESRB")
                                                              Then Campo="I_CSOSN"
                                                              Else Campo="I_CST_Item"
                                                           EndIf
                                                   EndIf           
                   Case PARAM_VOLUMES="S"        : Campo="I_NUMERO_VOLUMES"
                   OtherWise                     : AcceptDialog
                 EndSwitch                 
            Case Campo="I_Comissao_Item":
                 VSD_I_Comissao_Item=ControlValue("I_Comissao_Item")

                 If F6_ATIVADO=True
                    Then F6_ATIVADO=False
                         Grava_LogEx("Balcao AltPreco")
                 EndIf

                 Switch
                   Case PARAM_ENTREGA="S"   : 
                        If Search("VEND",[FaturaC->Descricao da Destinacao])>0 
                           Then Campo="I_Entrega"
                        EndIf
                   Case PARAM_IMPOSTOS="S"   :
                        If VSD_I_Tipo_Item="C"
                           Then Campo="I_TISSQN"
                           Else If (TPEMPR="SIMPLES NACIONAL" Or TPEMPR="SIMPLES NAC. ESRB")
                                   Then Campo="I_CSOSN"
                                   Else Campo="I_CST_Item"
                                EndIf
                         EndIf  
                   Case PARAM_VOLUMES="S"    : Campo="I_Numero_Volumes"
                   OtherWise                 : AcceptDialog
                 EndSwitch
                                  
            Case Campo="I_Entrega":
                 VSD_I_Entrega=ControlValue("I_Entrega")
                 If IsBlank(VSD_I_Entrega)
                    Then VSD_I_Entrega="S"
                 EndIf
                 If CHAVEI=1
                    Then If VSD_I_Entrega="S"
                            Then 
                                 VSD_I_DataEntregar=Today()
                                 VSD_I_DataEntrega =Today()
                                 Switch
                                   Case PARAM_IMPOSTOS="S"   : 
                                        If VSD_I_Tipo_Item="C"
                                           Then Campo="I_TISSQN"
                                           Else If (TPEMPR="SIMPLES NACIONAL" Or TPEMPR="SIMPLES NAC. ESRB")
                                                   Then Campo="I_CSOSN"
                                                   Else Campo="I_CST_Item"
                                                EndIf
                                         EndIf  
                                   Case PARAM_VOLUMES="S"    : Campo="I_Numero_Volumes"
                                   OtherWise                 : AcceptDialog
                                 EndSwitch
                            Else VSD_I_DataEntregar=Today()
                                 VSD_I_DataEntrega =BlankDate()
                                 Campo="I_DataEntregar"
                         EndIf
                 EndIf
                 
                 If CHAVEI=0
                    Then If (Old_Entrega<>VSD_I_ENTREGA)
                            Then If Not IsBlank([FaturaC->Numero do Orcamento])
                                    Then Campo="I_DataEntregar"
                                    Else If Sys_Codigo_Cliente <> "0334" And Sys_Codigo_Cliente <> "0102" And SYS_CODIGO_CLIENTE="0407"
                                            Then If Not Checa_Supervisor()
                                                    Then MSG="SR. USUARIO////"
                                                         MSG=MSG+"Para altera‡„o da entrega somente o Supervisor do Sistema ! //"
                                                         MSG=MSG+"Opera‡„o Cancelada."
                                                         Mensagem(MSG)
                                                         CancelDialog
                                                    Else Campo="I_DataEntregar"
                                                 EndIf
                                            Else Campo="I_DataEntregar"     
                                        EndIf
                                 EndIf
                            Else If IsBlank(VSD_I_DataEntregar)
                                    Then Campo="I_DataEntregar"
                                    Else Switch
                                           Case PARAM_IMPOSTOS="S"   :
                                                If VSD_I_Tipo_Item="C"
                                                   Then Campo="I_TISSQN"
                                                   Else If (TPEMPR="SIMPLES NACIONAL" Or TPEMPR="SIMPLES NAC. ESRB")
                                                           Then Campo="I_CSOSN"
                                                           Else Campo="I_CST_Item"
                                                        EndIf
                                                EndIf 
                                           Case PARAM_VOLUMES="S"    : Campo="I_Numero_Volumes"
                                           OtherWise                 : AcceptDialog
                                         EndSwitch
                                 EndIf
                         EndIf
                 EndIf
            Case Campo="I_DataEntregar"  :
                 VSD_I_DataEntregar=ControlValue("I_DataEntregar")
                 If IsBlank(VSD_I_DataEntregar) Or
                    VSD_I_DataEntregar<[FaturaC->Data de Emissao]
                    Then Mensagem("Data Invalida !")
                    Else Switch
                           Case PARAM_IMPOSTOS="S"   : 
                                If VSD_I_Tipo_Item="C"
                                   Then Campo="I_TISSQN"
                                   Else If (TPEMPR="SIMPLES NACIONAL" Or TPEMPR="SIMPLES NAC. ESRB")
                                           Then Campo="I_CSOSN"
                                           Else Campo="I_CST_Item"
                                        EndIf
                                EndIf 
                           Case PARAM_VOLUMES="S"    : Campo="I_Numero_Volumes"
                           OtherWise                 : AcceptDialog
                         EndSwitch
                 EndIf                 

            Case Campo="I_CSOSN": 
                 VSD_I_CSOSN=ControlValue("I_CSOSN")
                 If Not IsBlank(VSD_I_CSOSN)
                    Then TribCST=SubStr(Checa_CSOSN2("",VSD_I_CSOSN),2,3)
                         If TribCST<>""
                            Then
                                 If (TribCST="500" And Search("DEVOL",[FaturaC->Descricao da Destinacao])>0) ;se for devolu‡Æo
                                    Then VSD_I_CST_Item   =SubStr(VSD_I_CSOSN,1,1)+"90"
                                 EndIf
                                 If (TribCST="500" And Search("DEVOL",[FaturaC->Descricao da Destinacao])=0) ; se nÆo for devolu‡Æo
                                    Then VSD_I_CST_Item   =SubStr(VSD_I_CSOSN,1,1)+"60"
                                 EndIf
                         
                                 If TribCST="102" Or TribCST="103" Or TribCST="300" Or TribCST="400"
                                    Then VSD_I_CST_Item   =SubStr(VSD_I_CSOSN,1,1)+"90"
                                         VSD_I_BC_ICMS    =BlankNum()
                                         VSD_I_RBC_ICMS   =BlankNum()
                                         VSD_I_AICMS      =BlankNum()
                                         VSD_I_Valor_ICMS =BlankNum()
                                 EndIf          
                                 If TribCST="101" Or TribCST="102" Or TribCST="103" Or TribCST="300" Or TribCST="400"     
                                    Then VSD_I_MVA        =BlankNum()
                                         VSD_I_RBC_ST     =BlankNum()
                                         VSD_I_AST        =BlankNum()
                                         VSD_I_Valor_ST   =BlankNum()
                                         VSD_I_BC_ST      =BlankNum()
                                 EndIf                                     
                                 If TribCST<>"101" And TribCST<>"201" And TribCST<>"900" 
                                    Then VSD_I_ACSOSN     =BlankNum()
                                         VSD_I_Valor_CSOSN=BlankNum()
                                 EndIf 

                                 Switch
                                  Case (TribCST="101" Or TribCST="201" Or TribCST="900"): 
                                       Campo="I_ACSOSN" 
                                  Case (TribCST="102" Or TribCST="103" Or TribCST="300" Or TribCST="400"):    
                                       Campo="I_CST_IPI"
                                  OtherWise:
                                       Campo="I_CST_Item"
                                 EndSwitch

                              ;;;If (TribCST="201" Or TribCST="202" Or TribCST="203") And
                              ;;;   VSD_I_MVA<=0 And VSD_I_AST<=0 And CHAVEI=1
                              ;;;   Then VSD_I_AST=UF_ALIQUOTA_ICMS_INTERNA
                              ;;;        Checa_MVA("BALCAO",VSD_I_TICMS,[Codigo MVA])
                              ;;;EndIf                                                 

                                 If (TribCST="101" Or TribCST="201") And VSD_I_ACSOSN<=0 
                                    ;;;;;;And CHAVEI=1
                                    Then VSD_I_ACSOSN=ALIQUOTA_CREDITO_ICMS_NOSN
                                 EndIf   

                            Else Mensagem("CSOSN inv lido, use F1 para consultar !")   
                        EndIf
                 EndIf
            Case Campo="I_ACSOSN":
                 VSD_I_ACSOSN=ControlValue("I_ACSOSN")
                 If (CALCULO_NF_AUTOMATICO="A" or CALCULO_NF_AUTOMATICO="N")
                    Then Switch
                          Case TribCST="102" Or TribCST="103" Or TribCST="300" Or TribCST="400":    
                               Campo="I_CST_IPI"
                          OtherWise:
                               Campo="I_CST_Item"
                         EndSwitch
                    Else Campo="I_Valor_CSOSN"
                 EndIf                 
            Case Campo="I_Valor_CSOSN":
                 VSD_I_Valor_CSOSN=ControlValue("I_Valor_CSOSN")
                 Campo="I_CST_Item"



            Case Campo="I_CST_Item":  
                 VSD_I_CST_Item=ControlValue("I_CST_Item")
                 If Not IsBlank(VSD_I_CST_Item)
                    Then TribCST=Checa_CST("ICMS",[FaturaC->Tipo Movimento Estoque],VSD_I_CST_Item)
                         If TribCST<>""
                            Then TribCST=SubStr(VSD_I_CST_Item,2,2)
                                 
                                 VSD_I_TICMS=Pega_TipoTributacao("ICMS",VSD_I_CST_Item) 

                                 If (TPEMPR="SIMPLES NACIONAL" Or TPEMPR="SIMPLES NAC. ESRB")
                                    Then
                                         CONTINUA=False
                                         Switch

                                           Case (SubStr(VSD_I_CSOSN,2,3)="101" Or SubStr(VSD_I_CSOSN,2,3)="102") And 
                                                (TribCST="00" Or TribCST="20" Or TribCST="90")                       : CONTINUA=True 

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

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

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

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

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

                                         EndSwitch
                                    Else CONTINUA=True
                                         VSD_I_CSOSN      =SubStr(VSD_I_CST_Item,1,1)+"900"
                                         VSD_I_ACSOSN     =BlankNum()
                                         VSD_I_Valor_CSOSN=BlankNum()
                                 EndIf
                                 
                                 If Not CONTINUA 
                                    Then Mensagem("CST ICMS difere da regra para o CSOSN informado.//Verifique !")
                                    Else
                                         If TribCST="00" Or TribCST="20" Or TribCST="40" Or TribCST="41" Or
                                            TribCST="50" Or TribCST="51" Or
                                            (TribCST="60" And Search("DEVOL",[FaturaC->Descricao da Destinacao])=0)
                                            Then VSD_I_MVA        =BlankNum()
                                                 VSD_I_RBC_ST     =BlankNum()
                                                 VSD_I_AST        =BlankNum()
                                                 VSD_I_Valor_ST   =BlankNum()
                                                 VSD_I_BC_ST      =BlankNum()
                                         EndIf        
                                         If TribCST<>"20" And TribCST<>"70" And TribCST<>"90"       
                                            Then VSD_I_RBC_ICMS   =BlankNum()
                                         EndIf 
                                         If TribCST="30" Or TribCST="40" Or TribCST="41" Or 
                                            TribCST="50" Or TribCST="51" Or                    
                                            (TribCST="60" And Search("DEVOL",[FaturaC->Descricao da Destinacao])=0)
                                            Then VSD_I_RBC_ICMS  =BlankNum()
                                                 VSD_I_AICMS     =BlankNum()
                                                 VSD_I_BC_ICMS   =BlankNum()
                                                 VSD_I_Valor_ICMS=BlankNum()
                                         EndIf 
    
                                         Switch
                                          Case TribCST="00" Or TribCST="10"                         : Campo="I_AICMS"         
                                          Case TribCST="20" Or TribCST="70" Or TribCST="90"         : Campo="I_RBC_ICMS"
                                          Case TribCST="60" And 
                                               Search("DEVOL",[FaturaC->Descricao da Destinacao])>0 : Campo="I_MVA"
                                          OtherWise                                                 : Campo="I_CST_IPI"
               												  EndSwitch
                       												  
                                        If (TribCST="10" Or TribCST="30" Or TribCST="70") And
                                           VSD_I_MVA<=0 And VSD_I_AST<=0 And CHAVEI=1
                                           Then VSD_I_AST=UF_ALIQUOTA_ICMS_INTERNA
                                                Checa_MVA("BALCAO",VSD_I_TICMS,[Codigo MVA])
                                        EndIf                                                 
        
                                 EndIf

                           Else Mensagem("CST ICMS inv lido, use F1 para consultar !")   
                         EndIf
                 EndIf

            Case Campo="I_RBC_ICMS":
                 VSD_I_RBC_ICMS=ControlValue("I_RBC_ICMS")
                 Campo="I_AICMS"
            Case Campo="I_AICMS":
                 VSD_I_AICMS=ControlValue("I_AICMS")
                 If (CALCULO_NF_AUTOMATICO="A" or CALCULO_NF_AUTOMATICO="N")
                    Then Switch
                           Case Search("DEVOL",[FaturaC->Descricao da Destinacao])>0 And TribCST="60"         : Campo="I_MVA"
                           Case (TribCST="10" Or TribCST="30" Or TribCST="60" Or TribCST="70" Or TribCST="90"): Campo="I_MVA"
                           OtherWise                                                                          : Campo="I_CST_IPI"
                         EndSwitch  
                    Else Campo="I_BC_ICMS"
                 EndIf                 
            Case Campo="I_BC_ICMS":
                 VSD_I_BC_ICMS=ControlValue("I_BC_ICMS")
                 Campo="I_Valor_ICMS"                 
            Case Campo="I_Valor_ICMS": 
                 VSD_I_Valor_ICMS=ControlValue("I_Valor_ICMS")
                 Switch
                   Case (TPEMPR="SIMPLES NACIONAL" Or TPEMPR="SIMPLES NAC. ESRB")                     : Campo="I_ACSOSN"
                   Case Search("DEVOL",[FaturaC->Descricao da Destinacao])>0 And TribCST="60"         : Campo="I_MVA"
                   Case (TribCST="10" Or TribCST="30" Or TribCST="60" Or TribCST="70" Or TribCST="90"): Campo="I_MVA"
                   OtherWise                                                                          : Campo="I_CST_IPI"
                 EndSwitch  
            Case Campo="I_MVA":
                 VSD_I_MVA=ControlValue("I_MVA")
                 Campo="I_AST"
            Case Campo="I_AST":
                 VSD_I_AST=ControlValue("I_AST")
                 If (CALCULO_NF_AUTOMATICO="A" or CALCULO_NF_AUTOMATICO="N")
                    Then Campo="I_CST_IPI"
                    Else Campo="I_BC_ST"
                 EndIf             
            Case Campo="I_BC_ST":
                 VSD_I_BC_ST=ControlValue("I_BC_ST")
                 Campo="I_Valor_ST"
            Case Campo="I_Valor_ST":
                 VSD_I_Valor_ST=ControlValue("I_Valor_ST")
                 Campo="I_CST_IPI"               
            Case Campo="I_CST_IPI":
                 VSD_I_CST_IPI=ControlValue("I_CST_IPI")
                 If Not IsBlank(VSD_I_CST_IPI)
                    Then TribCST=Checa_CST("IPI",[FaturaC->Tipo Movimento Estoque],VSD_I_CST_IPI)
                         If TribCST<>""
                            Then TribCST=VSD_I_CST_IPI
                                 
                                 VSD_I_TIPI=Pega_TipoTributacao("IPI",VSD_I_CST_IPI) 

                                 If VSD_I_TIPI<>"D" And VSD_I_TIPI<>"O"
                                    Then If Not IsBlank(VSD_I_TIPI)
                                            Then VSD_I_BC_IPI   =BlankNum()
                                                 VSD_I_AIPI     =BlankNum()
                                                 VSD_I_Valor_IPI=BlankNum()

                                                 Campo="I_CST_PIS"
                                         EndIf
                                    Else Campo="I_AIPI"
                                EndIf
                            Else Mensagem("CST IPI inv lido, use F1 para consultar !")   
                         EndIf
                 EndIf
            Case Campo="I_AIPI":
                 VSD_I_AIPI=ControlValue("I_AIPI")
                 If (CALCULO_NF_AUTOMATICO="A" or CALCULO_NF_AUTOMATICO="N")
                    Then Campo="I_CST_PIS"
                    Else Campo="I_BC_IPI"
                 EndIf             
            Case Campo="I_BC_IPI":
                 VSD_I_BC_IPI=ControlValue("I_BC_IPI")
                 Campo="I_Valor_IPI"                 
            Case Campo="I_Valor_IPI":
                 VSD_I_Valor_IPI=ControlValue("I_Valor_IPI")
                 Campo="I_CST_PIS"

            Case Campo="I_TISSQN":
                 VSD_I_TISSQN=ControlValue("I_TISSQN")

                 If Not IsBlank(VSD_I_TISSQN)
                    Then TribCST=Checa_CST("ISSQN","",VSD_I_TISSQN)
                         If TribCST<>""
                            Then If VSD_I_TISSQN="N"
                                    Then VSD_I_BC_ISSQN   =BlankNum()
                                         VSD_I_AISSQN     =BlankNum()
                                         VSD_I_Valor_ISSQN=BlankNum()
        
                                         If TPEMPR="SIMPLES NACIONAL" Or TPEMPR="SIMPLES NAC. ESRB"
                                            Then Campo="I_CFOP"
                                            Else Campo="I_CST_PIS"
                                         EndIf
                                    Else Campo="I_AISSQN"
                                 EndIf   
                            Else Mensagem("CST ISSQN inv lida, use F1 para consultar !")   
                        EndIf
                 EndIf

            Case Campo="I_AISSQN":
                 VSD_I_AISSQN=ControlValue("I_AISSQN")
                 If (CALCULO_NF_AUTOMATICO="A" or CALCULO_NF_AUTOMATICO="N")
                    Then If TPEMPR="SIMPLES NACIONAL" Or TPEMPR="SIMPLES NAC. ESRB"
                            Then Campo="I_CFOP"
                            Else Campo="I_CST_PIS"
                         EndIf   
                    Else Campo="I_BC_ISSQN"
                 EndIf             
            Case Campo="I_BC_ISSQN":
                 VSD_I_BC_ISSQN=ControlValue("I_BC_ISSQN")
                 Campo="I_Valor_ISSQN"                 
            Case Campo="I_Valor_ISSQN":
                 VSD_I_Valor_ISSQN=ControlValue("I_Valor_ISSQN")
                 If TPEMPR="SIMPLES NACIONAL" Or TPEMPR="SIMPLES NAC. ESRB"
                    Then Campo="I_CFOP"
                    Else Campo="I_CST_PIS"
                 EndIf   

            Case Campo="I_CST_PIS":
                 VSD_I_CST_PIS=ControlValue("I_CST_PIS")
                 If IsBlank(VSD_I_CST_PIS)
                    Then VSD_I_CST_PIS="99"
                 EndIf        
                 If Not IsBlank(VSD_I_CST_PIS)
                    Then TribCST=Checa_CST("PIS",[FaturaC->Tipo Movimento Estoque],VSD_I_CST_PIS)
                         If TribCST<>""
                            Then If TribCST="N"
                                    Then VSD_I_BC_PIS   =BlankNum()
                                         VSD_I_APIS     =BlankNum()
                                         VSD_I_Valor_PIS=BlankNum()
                                         Campo="I_CST_COFINS"
                                    Else Campo="I_APIS"
                                EndIf
                            Else Mensagem("CST PIS inv lido, use F1 para consultar !")   
                         EndIf
                 EndIf
            Case Campo="I_APIS":
                 VSD_I_APIS=ControlValue("I_APIS")
                 If (CALCULO_NF_AUTOMATICO="A" or CALCULO_NF_AUTOMATICO="N")
                    Then Campo="I_CST_COFINS"
                    Else Campo="I_BC_PIS"
                 EndIf             
            Case Campo="I_BC_PIS":
                 VSD_I_BC_PIS=ControlValue("I_BC_PIS")
                 Campo="I_Valor_PIS"                 
            Case Campo="I_Valor_PIS":
                 VSD_I_Valor_PIS=ControlValue("I_Valor_PIS")
                 Campo="I_CST_COFINS"

            Case Campo="I_CST_COFINS":
                 VSD_I_CST_COFINS=ControlValue("I_CST_COFINS")
                 If IsBlank(VSD_I_CST_COFINS)
                    Then VSD_I_CST_COFINS="99"
                 EndIf        
                 If Not IsBlank(VSD_I_CST_COFINS)
                    Then TribCST=Checa_CST("COFINS",[FaturaC->Tipo Movimento Estoque],VSD_I_CST_COFINS)
                         If TribCST<>""
                            Then If TribCST="N"
                                    Then VSD_I_BC_COFINS   =BlankNum()
                                         VSD_I_ACOFINS     =BlankNum()
                                         VSD_I_Valor_COFINS=BlankNum()
                                         Campo="I_CFOP"
                                    Else Campo="I_ACOFINS"
                                EndIf
                            Else Mensagem("CST COFINS inv lido, use F1 para consultar !")   
                        EndIf
                 EndIf
            Case Campo="I_ACOFINS":
                 VSD_I_ACOFINS=ControlValue("I_ACOFINS")
                 If (CALCULO_NF_AUTOMATICO="A" or CALCULO_NF_AUTOMATICO="N")
                    Then Campo="I_CFOP"
                    Else Campo="I_BC_COFINS"
                 EndIf             
            Case Campo="I_BC_COFINS":
                 VSD_I_BC_COFINS=ControlValue("I_BC_COFINS")
                 Campo="I_Valor_COFINS"                 
            Case Campo="I_Valor_COFINS":
                 VSD_I_Valor_COFINS=ControlValue("I_Valor_COFINS")
                 Campo="I_CFOP"

            Case Campo="I_CFOP":
                 VSD_I_CFOP=ControlValue("I_CFOP")

                 Moveto "FaturaC"
                 Moveto [CFO]
                 If Busca_Lookup("Codigo Fiscal de Operacao",VSD_I_CFOP,"CFOP "+VSD_I_CFOP+" n„o Cadastrado !")
                    Then Switch
                            Case SubStr(VSD_I_CFOP,1,1)<>SubStr([FaturaC->CFO],1,1):
                                 Mensagem("CFOP "+VSD_I_CFOP+" difere da OF "+[FaturaC->CFO]+" !")
                            OtherWise: 
                                 If VSD_I_Tipo_Item="C"
                                    Then VSD_I_NCM="" 
                                         Campo="I_CDSERV"
                                    Else VSD_I_CDSERV =BlankNum()
                                         VSD_I_MUNSERV=BlankNum()     
                                         VSD_I_UFSERV =""
                                         Campo="I_NCM"
                                 EndIf
                          EndSwitch
                 EndIf
                 Moveto "FaturaI"
                 Echo Off

            Case Campo="I_NCM":
                 VSD_I_NCM=ControlValue("I_NCM")
                 If PARAM_VOLUMES="S"
                    Then Campo="I_Numero_Volumes"
                    Else AcceptDialog
                 EndIf

            Case Campo="I_CDSERV":
                 VSD_I_CDSERV=ControlValue("I_CDSERV")
                 Campo="I_MUNSERV"
            Case Campo="I_MUNSERV":
                 VSD_I_MUNSERV=ControlValue("I_MUNSERV")
                 If PARAM_VOLUMES="S"
                    Then Campo="I_Numero_Volumes"
                    Else AcceptDialog
                 EndIf

            Case Campo="I_Numero_Volumes":
                 VSD_I_Numero_Volumes=ControlValue("I_Numero_Volumes")
                 Campo="I_Peso_Liquido"
            Case Campo="I_Peso_Liquido":
                 VSD_I_Peso_Liquido=ControlValue("I_Peso_Liquido")
                 Campo="I_Peso_Embalagem"
            Case Campo="I_Peso_Embalagem":
                 VSD_I_Peso_Embalagem=ControlValue("I_Peso_Embalagem")
                 AcceptDialog
          EndSwitch
   EndSwitch
EndIf

SelectControl Campo
TECLA=" Esc=Retornar  "
If Campo="I_Codigo_Item"        Or
   Campo="I_Codigo_Cor_Tecido"  Or
   Campo="I_Tabela"             Or
   Campo="I_CFOP"               Or
   Campo="I_CST_Item"           Or  
   Campo="I_CST_IPI"            Or  
   Campo="I_CST_PIS"            Or  
   Campo="I_CST_COFINS"         Or
   Campo="I_CSOSN"              Or
   Campo="I_MUNSERV"                 
   Then TECLA=TECLA+"F1=Tabelas  "
   Else TECLA=TECLA+"            "
EndIf                      

Switch
  Case Campo="I_Seq"                     : MSGCAMPO="Sequencia"
  Case Campo="I_Pedido":
       Switch
         Case MSG_Pedido_Orcamento="Pedido": MSGCAMPO="Numero do Pedido"
         Case MSG_Pedido_Orcamento="Orcam.": MSGCAMPO="Numero do Orcamento"
         Case MSG_Pedido_Orcamento="N§. OS": MSGCAMPO="Numero da Ordem de Servi‡o"
       EndSwitch
  Case Campo="I_Pedido_Item":
       Switch
         Case MSG_Pedido_Orcamento="Pedido": MSGCAMPO="Sequencia do Item do Pedido"
         Case MSG_Pedido_Orcamento="Orcam.": MSGCAMPO="Sequencia do Item do Orcamento"
         Case MSG_Pedido_Orcamento="N§. OS": MSGCAMPO="Sequencia do Item da Ordem de Servi‡o"
       EndSwitch
  Case Campo="I_Codigo_Item"            : MSGCAMPO=LOCALIZAR_POR +", [F1]Consultar tabela  [F7]Alterar modo localizar"
          
  Case Campo="I_Descricao_Item"         : MSGCAMPO="Descri‡„o do item"

  Case Campo="I_Codigo_Cor_Tecido"      : MSGCAMPO="Codigo da cor/tecido"
  Case Campo="I_Descricao_Cor_Tecido"   : MSGCAMPO="Descri‡Æo da cor/tecido"
  Case Campo="I_Tamanho"                : MSGCAMPO="Tamanho"
  Case Campo="I_Tabela"                 : MSGCAMPO="Codigo da tabela de pre‡o"

  Case Campo="I_Quantidade"             : MSGCAMPO="Quantidade"
  Case Campo="I_Quantidade_Solicitada"  : MSGCAMPO="Quantidade Solicitada"
  Case Campo="I_UN_Item"                : MSGCAMPO="Unidade Fiscal"
  Case Campo="I_Preco_Unitario"         : MSGCAMPO="Pre‡o Unitario"
  Case Campo="I_Tipo_Desconto_Item"     : MSGCAMPO="Tipo Desconto no Item: U=Pre‡o Unit rio  T=Total Bruto"
  Case Campo="I_Preco_Total"            : MSGCAMPO="Pre‡o Total"
  Case Campo="I_Custo_Unitario"         : MSGCAMPO="Custo Unitario"
  Case Campo="I_Preco_Tabela"           : MSGCAMPO="Pre‡o da Tabela de Pre‡o"
  Case Campo="I_Comissao_Item"          : MSGCAMPO="Comiss„o do Item"

  Case Campo="I_TICMS"                  : MSGCAMPO="Tributacao ICMS: N„o tributado,Debitado,Isento,Outros,Substitui‡„o"
  Case Campo="I_CST_Item"               : MSGCAMPO="Codigo situa‡„o tributaria/ICMS"
  Case Campo="I_RBC_ICMS"               : MSGCAMPO="Aliquota redu‡Æo na base de calculo de ICMS"
  Case Campo="I_AICMS"                  : MSGCAMPO="Aliquota de ICMS"
  Case Campo="I_BC_ICMS"                : MSGCAMPO="Base de c lculo do ICMS com seus rateios proporcionais"  
  Case Campo="I_Valor_ICMS"             : MSGCAMPO="Valor do ICMS"

  Case Campo="I_ACSOSN"                 : MSGCAMPO="Aliquota de ICMS/Aproveitamento de credito SIMPLES NACIONAL"
  Case Campo="I_Valor_CSOSN"            : MSGCAMPO="Valor do ICMS/Aproveitamento de credito SIMPLES NACIONAL"

  Case Campo="I_MVA"                    : MSGCAMPO="Margem de valor agregado para base c lculo Subst.Tribut ria"
  Case Campo="I_AST"                    : MSGCAMPO="Aliquota da Subst.Tribut ria"
  Case Campo="I_BC_ST"                  : MSGCAMPO="Base de c lculo da Subst.Tribut ria com seus rateios proporcionais"  
  Case Campo="I_Valor_ST"               : MSGCAMPO="Valor da Subst.Tribut ria"

  Case Campo="I_CST_IPI"                : MSGCAMPO="Codigo situa‡„o tributaria/IPI"
  Case Campo="I_AIPI"                   : MSGCAMPO="Aliquota de IPI"
  Case Campo="I_BC_IPI"                 : MSGCAMPO="Base de c lculo do IPI com seus rateios proporcionais"  
  Case Campo="I_Valor_IPI"              : MSGCAMPO="Valor do IPI"

  Case Campo="I_TISSQN"                 : MSGCAMPO="Tributa‡„o ISSQN: Debitado, N„o tributado, Substituta, Retida, Isenta"
  Case Campo="I_AISSQN"                 : MSGCAMPO="Aliquota do ISSQN"
  Case Campo="I_BC_ISSQN"               : MSGCAMPO="Base de c lculo do ISSQN com seus rateios proporcionais"  
  Case Campo="I_Valor_ISSQN"            : MSGCAMPO="Valor do ISSQN"

  Case Campo="I_CST_PIS"                : MSGCAMPO="Codigo situa‡„o tributaria/PIS"
  Case Campo="I_APIS"                   : MSGCAMPO="Aliquota do PIS"
  Case Campo="I_BC_PIS"                 : MSGCAMPO="Base de c lculo do PIS com seus rateios proporcionais"  
  Case Campo="I_Valor_PIS"              : MSGCAMPO="Valor do PIS"

  Case Campo="I_CST_COFINS"             : MSGCAMPO="Codigo situa‡„o tributaria/COFINS"
  Case Campo="I_ACOFINS"                : MSGCAMPO="Aliquota do COFINS"
  Case Campo="I_BC_COFINS"              : MSGCAMPO="Base de c lculo do COFINS com seus rateios proporcionais"  
  Case Campo="I_Valor_COFINS"           : MSGCAMPO="Valor do COFINS"

  Case Campo="I_Numero_Volumes"         : MSGCAMPO="Quantidade de volumes"
  Case Campo="I_Peso_Liquido"           : MSGCAMPO="Peso liquido"
  Case Campo="I_Peso_Embalagem"         : MSGCAMPO="Peso da embalagem"

  Case Campo="I_NCM"                    : MSGCAMPO="NCM"
  Case Campo="I_CFOP"                   : MSGCAMPO="CFOP p/ este Item"
  Case Campo="I_CSOSN"                  : MSGCAMPO="ICMS - C¢digo de situa‡Æo da opera‡Æo no Simples Nacional"

  Case Campo="I_CDSERV"                 : MSGCAMPO="C¢digo do servi‡o"
  Case Campo="I_MUNSERV"                : MSGCAMPO="C¢digo do munic¡pio onde o servi‡o foi prestado"

  Case Campo="I_Entrega"                : MSGCAMPO="Entregue a Mercadoria p/ o Cliente no Balc„o (S/N)?"
  Case Campo="I_DataEntregar"           : MSGCAMPO="Data a Entregar a Mercadoria p/ o Cliente "

  OtherWise                             : MSGCAMPO=""
EndSwitch

If CHAVEI=0
    Then TECLA=TECLA+"Ctrl+Del=Excluir  "
    Else TECLA=TECLA+"                  "
EndIf       

If Opcao_Ver=True           
   Then TECLA=" Esc=Retornar  Home/End/PgDn/PgUp=Paginar  "
   Else TECLA=TECLA+"Alt+F=Fun‡”es  " 
EndIf

MontaRodapeSD(MSGCAMPO, TECLA)

Mouse Hide
RefreshDialog
Return Temp
EndProc     ; (Item_Dialog)

;*******************************************************************************
;* Rotina para Gravacao/Leitura do Item                                        *
;*******************************************************************************
Proc Registro_Item(Funcao_Registro)
Private Funcao_Registro, REG_ITEMCOM

Switch
  Case Funcao_Registro="Gravar":
       [Numero Pedido_Orcamento   ]=VSD_I_Pedido
       [Item Pedido_Orcamento     ]=VSD_I_Pedido_Item

       [Tipo do Item              ]=VSD_I_Tipo_Item
       [Codigo do Item            ]=VSD_I_Codigo_Item
       [Descricao do Item         ]=VSD_I_Descricao_Item

       [Codigo da Cor_Tecido      ]=VSD_I_Codigo_Cor_Tecido
       [Descricao da Cor_Tecido   ]=VSD_I_Descricao_Cor_Tecido
       [Tamanho                   ]=VSD_I_Tamanho

       [Quantidade                ]=VSD_I_Quantidade
       [Unidade Fiscal            ]=VSD_I_UN_Item
       [Preco Unitario            ]=VSD_I_Preco_Unitario
       [Tipo Desconto Item        ]=VSD_I_Tipo_Desconto_Item
       [Taxa Desconto Unitario    ]=VSD_I_Taxa_Desconto_Unitario
       [Valor Desconto Unitario   ]=VSD_I_Valor_Desconto_Unitario
       [Valor Desconto Item       ]=VSD_I_Valor_Desconto_Item    
       [Preco Total               ]=VSD_I_Preco_Total

       [Custo Medio Unitario      ]=VSD_I_Custo_Unitario
       [Preco Unitario Tabela     ]=VSD_I_Preco_Tabela

       [CFO                       ]=VSD_I_CFOP                
       [NCM                       ]=VSD_I_NCM                
  
       [Tipo Tributacao           ]=VSD_I_CST_Item
       [Tributacao de ICMS        ]=VSD_I_TICMS
       [Aliquota Reduzida BCICMS  ]=VSD_I_RBC_ICMS
       [Aliquota de ICMS          ]=VSD_I_AICMS
       [ICMS_BC                   ]=VSD_I_BC_ICMS
       [Valor do ICMS             ]=VSD_I_Valor_ICMS

       [CSOSN                     ]=SubStr(VSD_I_CSOSN,2,3)              
       [ICMS_CredSN_Aliquota      ]=VSD_I_ACSOSN    
       [ICMS_CredSN_Valor         ]=VSD_I_Valor_CSOSN

       [ICMS_ST_Aliquota Reduzida ]=VSD_I_RBC_ST   
       [MVA                       ]=VSD_I_MVA                
       [ICMS_ST_Aliquota          ]=VSD_I_AST       
       [ICMS_ST_BC                ]=VSD_I_BC_ST
       [ICMS_ST_Valor             ]=VSD_I_Valor_ST

       [Tributacao de IPI         ]=VSD_I_TIPI
       [Aliquota Reduzida BCIPI   ]=VSD_I_RBC_IPI
       [Aliquota de IPI           ]=VSD_I_AIPI
       [IPI_BC                    ]=VSD_I_BC_IPI
       [Valor do IPI              ]=VSD_I_Valor_IPI

       [Tributacao de ISSQN       ]=VSD_I_TISSQN
       [Aliquota de ISSQN         ]=VSD_I_AISSQN
       [ISSQN_BC                  ]=VSD_I_BC_ISSQN
       [Valor do ISSQN            ]=VSD_I_Valor_ISSQN
       [Codigo_Servico            ]=VSD_I_CDSERV   
       [ISSQN_UF                  ]=VSD_I_UFSERV   
       [ISSQN_Municipio           ]=VSD_I_MUNSERV   

       [IPI_CST                   ]=VSD_I_CST_IPI                
       [PIS_CST                   ]=VSD_I_CST_PIS                
       [PIS_Aliquota              ]=VSD_I_APIS     
       [PIS_BC                    ]=VSD_I_BC_PIS             
       [PIS_Valor                 ]=VSD_I_Valor_PIS              

       [COFINS_CST                ]=VSD_I_CST_COFINS              
       [COFINS_Aliquota           ]=VSD_I_ACOFINS       
       [COFINS_BC                 ]=VSD_I_BC_COFINS         
       [COFINS_Valor              ]=VSD_I_Valor_COFINS           

       [Volumes                   ]=VSD_I_Numero_Volumes
       [Peso Liquido              ]=VSD_I_Peso_Liquido
       [Peso Embalagem            ]=VSD_I_Peso_Embalagem
       [Comissao do Item          ]=VSD_I_Comissao_Item
       [Codigo da Tabela          ]=VSD_I_Tabela
       [Quantidade Solicitada     ]=VSD_I_Quantidade_Solicitada

       [Entrega                   ]=VSD_I_Entrega               
       [Data a Entregar           ]=VSD_I_DataEntregar
       [Data de Entrega           ]=VSD_I_DataEntrega

       [Referencia                ]=VSD_I_Referencia
       UnLockRecord
       SaveTables

  Case Funcao_Registro="Ler":
       VSD_I_Seq                    =[Item da OF                ]

       If CHAVEI=1
          Then VSD_I_Pedido=[FaturaC->Numero do Orcamento]
          Else VSD_I_Pedido=[Numero Pedido_Orcamento   ]
       EndIf
       VSD_I_Pedido_Item            =[Item Pedido_Orcamento     ]

       VSD_I_Tipo_Item              =[Tipo do Item              ]
       VSD_I_Codigo_Item            =[Codigo do Item            ]
       VSD_I_Descricao_Item         =[Descricao do Item         ]

       VSD_I_Codigo_Cor_Tecido      =[Codigo da Cor_Tecido      ]
       VSD_I_Descricao_Cor_Tecido   =[Descricao da Cor_Tecido   ]
       VSD_I_Tamanho                =[Tamanho                   ]

       VSD_I_Quantidade             =[Quantidade                ]
       VSD_I_UN_Item                =[Unidade Fiscal            ]
       VSD_I_Preco_Unitario         =[Preco Unitario            ]
       VSD_I_Custo_Unitario         =[Custo Medio Unitario      ]
       VSD_I_Preco_Tabela           =[Preco Unitario Tabela     ]
       VSD_I_Preco_Total            =[Preco Total               ]

       VSD_I_Tipo_Desconto_Item     =[Tipo Desconto Item        ]
       VSD_I_Taxa_Desconto_Unitario =[Taxa Desconto Unitario    ]
       VSD_I_Valor_Desconto_Unitario=[Valor Desconto Unitario   ]
       VSD_I_Valor_Desconto_Item    =[Valor Desconto Item       ]

       CalcularPrecoTotal_Item()           

       VSD_I_CFOP                   =[CFO                       ]
       VSD_I_NCM                    =[NCM                       ]

       VSD_I_CST_Item               =[Tipo Tributacao           ]
       VSD_I_TICMS                  =[Tributacao de ICMS        ]
       VSD_I_RBC_ICMS               =[Aliquota Reduzida BCICMS  ]
       VSD_I_AICMS                  =[Aliquota de ICMS          ]
       VSD_I_BC_ICMS                =[ICMS_BC                   ]
       VSD_I_Valor_ICMS             =[Valor do ICMS             ]

       VSD_I_CSOSN                  =SubStr([Tipo Tributacao],1,1)+[CSOSN]
       VSD_I_ACSOSN                 =[ICMS_CredSN_Aliquota      ]    
       VSD_I_Valor_CSOSN            =[ICMS_CredSN_Valor         ]

       VSD_I_RBC_ST                 =[ICMS_ST_Aliquota Reduzida ]
       VSD_I_MVA                    =[MVA                       ]
       VSD_I_AST                    =[ICMS_ST_Aliquota          ]
       VSD_I_BC_ST                  =[ICMS_ST_BC                ]
       VSD_I_Valor_ST               =[ICMS_ST_Valor             ]
       
       VSD_I_CST_IPI                =[IPI_CST                   ]
       VSD_I_TIPI                   =[Tributacao de IPI         ]
       VSD_I_RBC_IPI                =BlankNum()
     ;;VSD_I_RBC_IPI                =[Aliquota Reduzida BCIPI   ]
       VSD_I_AIPI                   =[Aliquota de IPI           ]
       VSD_I_BC_IPI                 =[IPI_BC                    ]
       VSD_I_Valor_IPI              =[Valor do IPI              ]

       VSD_I_TISSQN                 =[Tributacao de ISSQN       ]
       VSD_I_AISSQN                 =[Aliquota de ISSQN         ]
       VSD_I_BC_ISSQN               =[ISSQN_BC                  ]
       VSD_I_Valor_ISSQN            =[Valor do ISSQN            ]
       VSD_I_CDSERV                 =[Codigo_Servico            ]   
       VSD_I_UFSERV                 =[ISSQN_UF                  ]   
       VSD_I_MUNSERV                =[ISSQN_Municipio           ]   

       VSD_I_TPIS                   =""                          
       VSD_I_CST_PIS                =[PIS_CST                   ]
       VSD_I_APIS                   =[PIS_Aliquota              ]
       VSD_I_BC_PIS                 =[PIS_BC                    ]
       VSD_I_Valor_PIS              =[PIS_Valor                 ]

       VSD_I_TCOFINS                =""                          
       VSD_I_CST_COFINS             =[COFINS_CST                ]
       VSD_I_ACOFINS                =[COFINS_Aliquota           ]
       VSD_I_BC_COFINS              =[COFINS_BC                 ]
       VSD_I_Valor_COFINS           =[COFINS_Valor              ]

       VSD_I_Numero_Volumes         =[Volumes                   ]
       VSD_I_Peso_Liquido           =[Peso Liquido              ]
       VSD_I_Peso_Embalagem         =[Peso Embalagem            ]
       VSD_I_Comissao_Item          =[Comissao do Item          ]
       VSD_I_Tabela                 =[Codigo da Tabela          ]
       VSD_I_Quantidade_Solicitada  =[Quantidade Solicitada     ] 
       
       VSD_I_Entrega                =[Entrega                   ]
       VSD_I_DataEntregar           =[Data a Entregar           ]
       VSD_I_DataEntrega            =[Data de Entrega           ]
       
       VSD_I_InfAdic                =[Informacoes_Adicionais    ]

       VSD_I_Referencia             =[Referencia                ]
       
EndSwitch
EndProc   ;  (Registro_Item)

;*******************************************************************************
;* Rotina para Iniciar Registro                                                *
;*******************************************************************************
Proc Inicia_Registro()
INICIO_DIALOG=True
Moveto [Item da OF]
Locate [FaturaC->Numero da OF],SEQIT
CopyToArray RegItem
QUANT   =[Quantidade        ]
CTTOTAL =NDecimal(([Quantidade]*[Custo Medio Unitario]),2)
If CHAVEI=1
   Then If Not Item_Ins_Consulta
           Then [Codigo da Tabela     ]=[FaturaC->Codigo da Tabela]
        EndIf
EndIf
Registro_Item("Ler")
EndProc ; (Inicia_Registro)

;*******************************************************************************
;* Rotina para Digitacao Item                                                  *
;*******************************************************************************
Proc DigitaI()
private nl_custo

;;Sleep 500
Liberou_Bloqueio=False
F4_ATIVADO=False
F5_ATIVADO=False
F6_ATIVADO=False

If PARAM_EXIBECUSTO="N"
   Then NL_CUSTO=30
   Else NL_CUSTO=08
EndIf

If Not IsBlank([FaturaC->Numero do Orcamento])
   Then MSG_Pedido_Orcamento="Orcam."
   Else MSG_Pedido_Orcamento="......"
EndIf
MSGCAMPO=""

MSG_NUMERO_LINHAS=""

ModoLocalizarItem("","","")

Showdialog "Dados do Item [      ]" Proc "Item_Dialog"
   Trigger "OPEN"
    Key "F1","TAB","ReverseTab","ENTER","ESC","F3","F4","F5","F6","F7","F8",-65,-33,"ClearArea",
                                "HOME","END","PGDN","PGUP"
     @ 01,0 height 22 width 80

   Accept @ -01,43 Width 6 "A3" Tag "I_Seq" To VSD_I_SEQ

   Label  @ 00,02 MSG_Pedido_Orcamento For "I_Pedido"
   Accept @ 00,17 Width 09 "A06" picture "#*#" Tag "I_Pedido" to VSD_I_Pedido
   Label  @ 00,10 "/Item" For "I_Pedido_Item"
   Accept @ 00,27 Width 06 "N" picture "#*#" Tag "I_Pedido_Item" to VSD_I_Pedido_Item

   Label  @ 00,50 "Referˆncia" For "I_Referencia"
   Accept @ 00,62 Width 16 "A14" picture "!*!" Tag "I_Referencia" to VSD_I_Referencia  

   Label  @ 01,00 ">" For "I_Codigo_Item"
   Accept @ 02,00 Width 16 "A25" picture "!*!" Tag "I_Codigo_Item" to VSD_I_Codigo_Item
   
   @ 01,02 ?? LOCALIZAR_POR
   
   Label  @ 01,17 "Descricao Item" For "I_Descricao_Item"
   Accept @ 02,17 Width 42 "A100" picture "!*!" Tag "I_Descricao_Item" to VSD_I_Descricao_Item
   
   Label  @ 01,57 "TI" For "I_Tipo_Item"
   Accept @ 02,58 Width 03 "A1" picture "&" Tag "I_Tipo_Item" to VSD_I_Tipo_Item

   Label  @ 03,00 "[F8]Inf.Adic->" For "I_InfAdic"
   Accept @ 03,17 Width 44 "A100" picture "!*!" Tag "I_InfAdic" to VSD_I_InfAdic

   Label  @ 04,00 "Cor/Tecido" For "I_Codigo_Cor_Tecido"
   Accept @ 05,00 Width 07 "A4" picture "!*!" Tag "I_Codigo_Cor_Tecido" to VSD_I_Codigo_Cor_Tecido
   Accept @ 05,06 Width 23 "A20" picture "!*!" Tag "I_Descricao_Cor_Tecido" to VSD_I_Descricao_Cor_Tecido
   Label  @ 04,30 "TM" For "I_Tamanho"
   Accept @ 05,30 Width 05 "A2" picture "!*!" Tag "I_Tamanho" to VSD_I_Tamanho
   Label  @ 04,42 "Tabela" For "I_Tabela"
   Accept @ 05,42 Width 08 "A5" picture "!*!" Tag "I_Tabela" to VSD_I_Tabela
   Label  @ 04,67 "Qtd.Solic." For "I_Quantidade_Solicitada"
   Accept @ 05,67 Width 11 "N" picture "#*#.[###]" Tag "I_Quantidade_Solicitada" to VSD_I_Quantidade_Solicitada
 
   Label  @ 06,00 "Quantidade" For "I_Quantidade"
   Accept @ 07,00 Width 11 "N" picture "#*#.[###]" Tag "I_Quantidade" to VSD_I_Quantidade
   Label  @ 06,11 "UN" For "I_UN_Item"
   Accept @ 07,11 Width 05 "A2" picture "!*!" Tag "I_UN_Item" to VSD_I_UN_Item                               
   Label  @ 06,16 "Pr.Unit rio" For "I_Preco_Unitario"
	 Accept @ 07,17 Width 12 "N" picture "#*#.[######]" Tag "I_Preco_Unitario" to VSD_I_Preco_Unitario
   Label  @ 06,30 "Pr.Bruto" For "I_Preco_Bruto"
   Accept @ 07,30 Width 11 "$" picture "#*#.[##]" Tag "I_Preco_Bruto" to VSD_I_Preco_Bruto
   Label  @ 06,42 "?Desconto" For "I_Tipo_Desconto_Item"
   Accept @ 07,42 Width  4 "A1"  picture "U,T" Tag "I_Tipo_Desconto_Item" to VSD_I_Tipo_Desconto_Item          
   Accept @ 07,45 Width 11 "A08" picture "!*!" Tag "I_Desconto_Descricao" to VSD_I_Desconto_Descricao
   Label  @ 06,54 "Vr.Desconto" For "I_Valor_Desconto_Item"
   Accept @ 07,56 Width 10 "$" picture "#*#.[##]" Tag "I_Valor_Desconto_Item" to VSD_I_Valor_Desconto_Item
   Label  @ 06,67 "Pr.L¡quido" For "I_Preco_Total"
   Accept @ 07,67 Width 11 "$" picture "#*#.[##]" Tag "I_Preco_Total" to VSD_I_Preco_Total

   Label  @ nl_custo  ,00 "Ct.Unitario" For "I_Custo_Unitario"
   Accept @ nl_custo+1,00 Width 11 "$" picture "#*#.[#####]" Tag "I_Custo_Unitario" to VSD_I_Custo_Unitario
   Label  @ 08,16 "Pr.Tabela" For "I_Preco_Tabela"
   Accept @ 09,17 Width 12 "$" picture "#*#.[##]" Tag "I_Preco_Tabela" to VSD_I_Preco_Tabela
   Label  @ 08,30 "% Comiss„o" For "I_Comissao_Item"
   Accept @ 09,30 Width 11 "N" picture "#*#.[###]" Tag "I_Comissao_Item" to VSD_I_Comissao_Item

   Label  @ 08,48 "Entrega/Datas" For "I_Entrega"
   Accept @ 09,49 Width 4  "A1" picture "S,N"              Tag "I_Entrega"      to VSD_I_Entrega
   Accept @ 09,52 Width 13 "D"  Picture "#[#];.##;.##[##]" Tag "I_DataEntregar" To VSD_I_DataEntregar
   Accept @ 09,65 Width 13 "D"  Picture "#[#];.##;.##[##]" Tag "I_DataEntrega"  To VSD_I_DataEntrega         
           
   PaintCanvas Attribute 124 02, 61, 03, 77
           
   @ 11,00 ?? "Impostos CST    %Red    Aliq.  BC        Valor"
                                 
   Label  @ 12,00 " CSOSN" For "I_CSOSN"
   Accept @ 12,08 Width 07 "A4" picture "####" Tag "I_CSOSN" to VSD_I_CSOSN
   PaintCanvas Attribute 112 12, 15, 12, 22
   Accept @ 12,23 Width 08 "N" picture "#*#.[##]" Tag "I_ACSOSN" to VSD_I_ACSOSN
   PaintCanvas Attribute 112 12, 29, 12, 49
   Accept @ 12,40 Width 11 "$" picture "#*#.[##]" Tag "I_Valor_CSOSN" to VSD_I_Valor_CSOSN

   Label  @ 13,00 "  ICMS" For "I_CST_Item"
   Accept @ 13,08 Width 07 "A3" picture "!*!"        Tag "I_CST_Item"    to VSD_I_CST_Item   
   Accept @ 13,15 Width 10 "N"  picture "#*#.[####]" Tag "I_RBC_ICMS"    to VSD_I_RBC_ICMS
   Accept @ 13,23 Width 08 "N"  picture "#*#.[##]"   Tag "I_AICMS"       to VSD_I_AICMS
   Accept @ 13,30 Width 11 "$"  picture "#*#.[##]"   Tag "I_BC_ICMS"     to VSD_I_BC_ICMS     
   Accept @ 13,40 Width 11 "$"  picture "#*#.[##]"   Tag "I_Valor_ICMS"  to VSD_I_Valor_ICMS

   Label  @ 14,00 "MVA/ST" For "I_AST"
   Accept @ 14,08 Width 08 "N"  picture "#*#.[##]"   Tag "I_MVA"         to VSD_I_MVA
   Accept @ 14,15 Width 10 "N"  picture "#*#.[####]" Tag "I_RBC_ST"      to VSD_I_RBC_ST
   Accept @ 14,23 Width 08 "N"  picture "#*#.[##]"   Tag "I_AST"         to VSD_I_AST     
   Accept @ 14,30 Width 11 "$"  picture "#*#.[##]"   Tag "I_BC_ST"       to VSD_I_BC_ST  
   Accept @ 14,40 Width 11 "$"  picture "#*#.[##]"   Tag "I_Valor_ST"    to VSD_I_Valor_ST

   Label  @ 15,00 "   IPI" For "I_CST_IPI"
   Accept @ 15,08 Width 07 "A2" picture "!*!"        Tag "I_CST_IPI"     to VSD_I_CST_IPI  
   Accept @ 15,15 Width 10 "A2" picture "#*#.[####]" Tag "I_RBC_IPI"     to VSD_I_RBC_IPI
   Accept @ 15,23 Width 08 "N"  picture "#*#.[##]"   Tag "I_AIPI"        to VSD_I_AIPI
   Accept @ 15,30 Width 11 "$"  picture "#*#.[##]"   Tag "I_BC_IPI"      to VSD_I_BC_IPI  
   Accept @ 15,40 Width 11 "$"  picture "#*#.[##]"   Tag "I_Valor_IPI"   to VSD_I_Valor_IPI

   Label  @ 16,00 " ISSQN" For "I_TISSQN"
   Accept @ 16,08 Width 07 "A1" picture "D,N,I,S,R"  Tag "I_TISSQN"       to VSD_I_TISSQN 
   Accept @ 16,15 Width 10 "A2" picture "#*#.[####]" Tag "I_RBC_ISSQN"    to VSD_I_RBC_ISSQN
   Accept @ 16,23 Width 08 "N"  picture "#*#.[##]"   Tag "I_AISSQN"       to VSD_I_AISSQN
   Accept @ 16,30 Width 11 "$"  picture "#*#.[##]"   Tag "I_BC_ISSQN"     to VSD_I_BC_ISSQN  
   Accept @ 16,40 Width 11 "$"  picture "#*#.[##]"   Tag "I_Valor_ISSQN"  to VSD_I_Valor_ISSQN

   Label  @ 17,00 "   PIS" For "I_CST_PIS"    
   Accept @ 17,08 Width 07 "A2" picture "!*!"        Tag "I_CST_PIS"      to VSD_I_CST_PIS  
   Accept @ 17,15 Width 10 "A2" picture "#*#.[####]" Tag "I_RBC_PIS"      to VSD_I_RBC_PIS
   Accept @ 17,23 Width 08 "N"  picture "#*#.[##]"   Tag "I_APIS"         to VSD_I_APIS
   Accept @ 17,30 Width 11 "$"  picture "#*#.[##]"   Tag "I_BC_PIS"       to VSD_I_BC_PIS  
   Accept @ 17,40 Width 11 "$"  picture "#*#.[##]"   Tag "I_Valor_PIS"    to VSD_I_Valor_PIS

   Label  @ 18,00 "COFINS" For "I_CST_COFINS"   
   Accept @ 18,08 Width 07 "A2" picture "!*!"        Tag "I_CST_COFINS"   to VSD_I_CST_COFINS 
   Accept @ 18,15 Width 10 "A2" picture "#*#.[####]" Tag "I_RBC_COFINS"   to VSD_I_RBC_COFINS
   Accept @ 18,23 Width 08 "N"  picture "#*#.[##]"   Tag "I_ACOFINS"      to VSD_I_ACOFINS
   Accept @ 18,30 Width 11 "$"  picture "#*#.[##]"   Tag "I_BC_COFINS"    to VSD_I_BC_COFINS  
   Accept @ 18,40 Width 11 "$"  picture "#*#.[##]"   Tag "I_Valor_COFINS" to VSD_I_Valor_COFINS

   Label  @ 10,58 "CFOP" For "I_CFOP"
   Accept @ 11,58 Width 08 "A4" picture "####" Tag "I_CFOP" to VSD_I_CFOP
   Label  @ 10,67 "NCM" For "I_NCM"
   Accept @ 11,67 Width 11 "A8" picture "#*#" Tag "I_NCM" to VSD_I_NCM

   Label  @ 16,52 "Servi‡o" For "I_CDSERV"
   Accept @ 17,52 Width 10 "N" picture "#*#" Tag "I_CDSERV" to VSD_I_CDSERV
   Label  @ 16,62 "Munic¡pio" For "I_MUNSERV"
   Accept @ 17,62 Width 12 "N" picture "#*#" Tag "I_MUNSERV" to VSD_I_MUNSERV
   Label  @ 16,73 "UF" For "I_UFSERV"
   Accept @ 17,73 Width 5  "A2" picture "!!" Tag "I_UFSERV" to VSD_I_UFSERV

   Label  @ 18,51 "QtdVol" For "I_Numero_Volumes"
   Accept @ 19,52 Width 07 "S" picture "#*#.[###]" Tag "I_Numero_Volumes" to VSD_I_Numero_Volumes
   Label  @ 18,58 "PesoLiq" For "I_Peso_Liquido"
   Accept @ 19,58 Width 10 "N" picture "#*#.[###]" Tag "I_Peso_Liquido" to VSD_I_Peso_Liquido
   Label  @ 18,68 "PesoEmb" For "I_Peso_Embalagem"
   Accept @ 19,68 Width 10 "N" picture "#*#.[###]" Tag "I_Peso_Embalagem" to VSD_I_Peso_Embalagem

EndDialog
Mouse Show
If RetVal
   Then Finaliza_Registro(True)
   Else Finaliza_Registro(False)
EndIf
EndProc    ; (DigitaI)

; *******************************************************************************
; * Rotina para Finalizar o Registro                                            *
; *******************************************************************************
Proc Finaliza_Registro(ok)
Private ok
If Ok
   Then Registro_Item("Gravar")
   Else If CHAVEI=1
           Then Del
           Else CopyFromArray RegItem
                UnLockREcord
                If CHAVEI=8
                   Then Exclusao_I()
                EndIf
        EndIf
        CHAVEI=9
EndIf
EndProc   ; (Finaliza_Registro)

;*******************************************************************************
;* Rotina para Confirmacao de Valores                                          *
;*******************************************************************************
Proc DigitaF()
Private VRBCICMS_CREDSN, nitens

Moveto "FaturaC"
If PARAM_AGRUPA_ITEM
   Then PARAM_FT_GRUP = "ITENS AGRUPADOS"
   Else PARAM_FT_GRUP = "ITENS"
endif
Play "FT_GRUP"

Moveto "FaturaC"
CHAVEF=0

;*** Simples Nacional ***
If (TPEMPR="SIMPLES NACIONAL" Or TPEMPR="SIMPLES NAC. ESRB") And
   SubStr(Directory(),1,1)<>"X"         
   Then Moveto [Codigo]
        If Busca_Lookup("Codigo",[FaturaC->Codigo],"")
           Then Switch 
                ;  Case (REG_BUSCA_LOOKUP["Regime_Tributario"] = "SIMPLES NACIONAL" Or
                ;        REG_BUSCA_LOOKUP["Regime_Tributario"] = "SIMPLES NAC. ESRB") And
                ;        ALIQUOTA_CREDITO_ICMS_NOSN>0:
                ;        CHAVEF=9
                ;
                ;        MSG=    Completa([FaturaC->Nome Fantasia Empresa ]+"="+TPEMPR,70," ")+"//" 
                ;        MSG=MSG+Completa([FaturaC->Nome Fantasia EmitDest]+"="+REG_BUSCA_LOOKUP["Regime_Tributario"],70," ")+"// //" 
                ;        MSG=MSG+"Destinat rio sem direito a cr‚dito de ICMS !"+"// //"
                ;        MSG=MSG+Completa("Verificar/Corrigir:",70," ")+"// //"
                ;        MSG=MSG+Completa("- Exite(m) iten(s) Isento/Outros de ICMS;",70," ")+"//"
                ;        MSG=MSG+Completa("- Voce esta usando uma destina‡Æo com cr‚dito de icms: "+Format("W6.2,EIC",ALIQUOTA_CREDITO_ICMS_NOSN)+"%",70," ")+"//"
                ;        MSG=MSG+Completa("- Se regime tribut rio do destinat rio ‚ realmente "+REG_BUSCA_LOOKUP["Regime_Tributario"],70," ")+"//"
                ;        Mensagem(MSG)
                                                  
                  Case SYS_CODIGO_CLIENTE<>"0219" And
                       (REG_BUSCA_LOOKUP["Regime_Tributario"]<>"SIMPLES NACIONAL" And
                        REG_BUSCA_LOOKUP["Regime_Tributario"]<>"SIMPLES NAC. ESRB") And
                        VRBCICMS_CREDSN>0 And   
                        ALIQUOTA_CREDITO_ICMS_NOSN<=0:
                        CHAVEF=9
                        
                        MSG=    Completa([FaturaC->Nome Fantasia Empresa ]+" = "+TPEMPR,70," ")+"//" 
                        MSG=MSG+Completa([FaturaC->Nome Fantasia EmitDest]+" = "+REG_BUSCA_LOOKUP["Regime_Tributario"],70," ")+"// //" 
                        MSG=MSG+"Destinat rio com direito a Cr‚dito de ICMS !"+"// //"
                        MSG=MSG+Completa("Verificar/Corrigir:",70," ")+"// //"
                        MSG=MSG+Completa("- Exite(m) iten(s) Isento/Outros de ICMS;",70," ")+"//"
                        MSG=MSG+Completa("- Voce esta usando uma destina‡Æo sem Cr‚dito de icms: "+Format("W6.2,EIC",ALIQUOTA_CREDITO_ICMS_NOSN)+"%",70," ")+"//"
                        MSG=MSG+Completa("- Se regime tribut rio do destinat rio ‚ realmente "+REG_BUSCA_LOOKUP["Regime_Tributario"],70," ")+"//"
                        Mensagem(MSG)
                                                  
                EndSwitch           
        EndIf   
EndIf
If CHAVEF=9
   Then Return   
EndIf
           
Moveto [Valor Despesas Acessorias]
           
CALC_OF()

If CALC_VENCTO
   Then If IsBlank([Tipo de Pagamento])     
				   Then CALC_VENCTO=False
				EndIf
        If IsBlank([Forma de Pagamento]) And [Tipo de Pagamento]<>"O"
           Then CALC_VENCTO=False
        EndIf
	      If CALC_VENCTO Then CALC_VENCTOS() EndIf
        CALC_VENCTO=False
EndIf

If REEMITIR
   Then CONFIMPRIME()
        Return
EndIf

SomaVenctos("FaturaC","FaturaV")

While True

    MSGCAMPO=Field()
    TECLA=" Esc=Retornar               Alt+F=Fun‡”es                 PgUp  PgDn=Finalizar"
    
    If Field()="Valor BCSubstituicao ICMS" Then MSGCAMPO="Valor Base Calculo da Substituicao ICMS"            EndIf
    If Field()="Tipo de Pagamento"         Then MSGCAMPO="Tipo de Pagamento=> V=A Vista  P=A Prazo  O=Outros" EndIf
    If Field()="Composicao de Dias"        Then MSGCAMPO=MSGCAMPO+", Exemplo: 0/30/60/ "                      EndIf

    If Field()="Condicao de Pagamento" Or
       Field()="Forma de Pagamento"
       Then MSGCAMPO=MSGCAMPO+", [F1]Consultar tabela"
    EndIf

    Prompt TECLA             

    Wait Field
         Until "ESC","ENTER","PGDN","F8","DOWN","PGUP",-33,"F1","F3","F4","F5","F","D","F9","F6","F7",-61

    If RetVal=-33
       Then Echo Normal
            Echo Off
            ShowPopup " Fun‡”es " CENTERED
             "F3  ~P~ontua‡Æo de Cliente ": " Consulta/Resgate de pontua‡Æo de clientes" :"F3",
             "F4  ~C~alcula Vencimentos  ": " Calcula os Vencimentos                   " :"F4",
             "F5  ~O~bservacao           ": " Observacao da Nota Fiscal                " :"F5",
             "F6  T¡tulo de Cr‚dito      ": " Referenciar T¡tulo de Cr‚dito            " :"F6",
             "F7  Gerar T¡tulo de Cr‚dito": " Gerar T¡tulo de Cr‚dito                  " :"F7",
             "F8  ~V~encimentos          ": " Vencimentos                              " :"F8",
             "F9  ~T~roco                ": " Valor para Troco                         " :"F9",
             Separator,
             "~C~ancelar                 ": " Cancelar a Opera‡„o                      " : "CANCELAR"
            EndMenu
            To MenuVar
            Echo Off
            
            If MenuVar="CANCELAR" or MenuVar="Esc"
               Then Loop
            EndIf                                         
            RetVal=MenuVar
    EndIf
    
    Switch
      Case RetVal="F1":
           If Field()="Forma de Pagamento"
              Then CONSULTAF1()
           EndIf                  
      Case RetVal="F3" Or RetVal=-61 :
           PARAM_PONTOS_ROTINA="CONSULTA"
           Play "FT_PONTO"
      Case RetVal="F4":
           If IsBlank([Composicao de Dias])
              Then Mensagem("Informe a Composi‡„o de Dias para se calcular os Vencimentos!")
                   Loop
           EndIf      
           If IsBlank([Forma de Pagamento])
              Then Mensagem("Informe a Forma de Pagamento para se calcular os Vencimentos!")
                   Loop
           EndIf      
           
           VrEntrada_Digita()
           
           Nome_Cartao=""
           Numero_Cartao=""
           
           If [Forma de Pagamento]="CT" Or
              [Forma de Pagamento]="CD" Or
              [Forma de Pagamento]="CL"
              Then CHAVEV=1
                   If Not Digita_Cartao()
                      Then UnLockRecord
                           Moveto "FaturaC"
                           Loop
                   EndIf
                   
                   UnLockRecord
           EndIf
           
           CALC_VENCTOS()
           SomaVenctos("FaturaC","FaturaV")
                                
      Case RetVal="F5":
           CampoAnt=Field()         
           Edita_Memo("Observacao na Nota Fiscal",08,01,15,76,"Observa‡”es")
           Moveto Field CampoAnt
           Prompt TECLA
      Case RetVal="F8" Or RetVal="DOWN":     
           If UTILIZANDO_CP_FP_CLIENTE
              Then Mensagem ("Edi‡„o de Vencimentos n„o dispon¡vel!//Verificar com o Supervisor!")
              Else Moveto "FaturaV"
                   While True
                     CHAVEV()
                     If CHAVEV=9
                        Then QuitLoop
                     EndIf
                     Controla_EdicaoV()
                   EndWhile
                   SetaCorRegistro("Padrao")

                   Moveto "FaturaC"
                   Moveto [Tipo de Pagamento]
           EndIf          
      Case RetVal="F9":     
           DIGITA_TROCO() 
           
      Case RetVal="F7":
           VrTCCredito_Digita()

      Case RetVal="F6":
           Play "FT_LTC"

      Case RetVal="PGUP":
           CHAVEF=9
           QuitLoop
      Case RetVal="PGDN":
           If IsBlank([Tipo de Pagamento])  Then fastmsg("Tipo Pagto Invalido !")  Loop EndIf
           If IsBlank([Forma de Pagamento]) 
              And [Tipo de Pagamento]<>"O"  Then fastmsg("Forma Pagto Invalida !") Loop EndIf
           
           If UTILIZANDO_CP_FP_CLIENTE and Not LiberaCondicaoeFormaPagamento()
              then Loop
           endif
           
           If Search("VEND",[FaturaC->Descricao da Destinacao])>0
              Then If [Tipo de Pagamento]<>"O"
                      Then Moveto "FaturaV"
                           TOT_VECTOS=0
                           CHAVEV=0
                           Scan
                             If [Data]<[FaturaC->Data de Emissao]
                                Then CHAVEV=1
                                     MSG="Vencimento invalido !// //"
                                     MSG=MSG+"Vencimento ["+StrVal([Sequencia])+"] de "+Format("D13",[Data])
                                     MSG=MSG+" inferior a data de emiss„o !"
                                     Mensagem(MSG)
                             EndIf
                             TOT_VECTOS=TOT_VECTOS+[Valor]
                           EndScan
                           UnLockRecord
                           Moveto "FaturaC"
                           If CHAVEV=1
                              Then Loop
                           EndIf
                           
                           msg=""
                           Switch
                             case PARAM_TITCRED="T":
                                if StrVal(TOT_VECTOS-[Valor TC])<>StrVal([Valor Nota Fiscal])
                                   then msg="O valor total dos vencimentos menos t¡tulo de cr‚dito,// difere do valor da nota fiscal !" 
                                endif   
                             
                             otherwise                                : 
                               If StrVal(TOT_VECTOS)<>StrVal([Valor Nota Fiscal])
                                  Then msg="O valor total dos vencimentos difere do valor da nota fiscal !"
                               EndIf
                               
                           endSwitch
                           if msg<>""
                              then mensagem(msg)
                                   Switch
                                     Case PARAM_BLOQVRVENCTO = "S" : Loop
                                     Case PARAM_BLOQVRVENCTO = "P" : If Not CHECA_SUPERVISOR() 
                                                                        Then Loop
                                                                     EndIf
                                   EndSwitch
                           endif   
                   Endif
           EndIf

           If CHAVEC=1
              Then If Search("VEND",[Descricao da Destinacao])>0   And
                      [Nome Fantasia EmitDest]<>"DIVERSOS"         And
                      [Nome Fantasia EmitDest]<>"CONSUMIDOR FINAL" And
                      [Tipo]="C"                                   And                                 
                      PARAM_NBLOQUEIO_SPC > 0
                      Then If [Forma de Pagamento]<>"DN" And
                              [Forma de Pagamento]<>"CT" And
                              [Forma de Pagamento]<>"CD" And
                              [Forma de Pagamento]<>"CL" 
                              Then If Not Checa_SPC()
                                      Then Loop
                                   EndIf
                           EndIf        
                   EndIf        
           EndIf               
           
           If PARAM_ENTREGA="S"
              Then If Checa_Entrega()
                      Then [Entrega]="S"
                      Else [Entrega]="N"
                   EndIf
              Else [Entrega]="S"
           EndIf

           If PARAM_CALC_COMIS_ITEM="S"
              Then Moveto "FaturaC"
                   VRBC_COMIS=Round(VRBC_COMIS-((VRBC_COMIS*TXDESCTO_TOTAL)/100),2)
                   tx_comis  =Round(((VRBC_COMIS/[Valor Mercadoria Liquido])*100),2)
                   [Comissao do representante]=tx_comis
                  
                   If PARAM_COMIS_TOTAL_NOTA = "S"
                      Then ;---- Distribui a comissÆo em cada parcela de acordo com o Total da Nota (Mercadoria, Servi‡o, outros) -------
                           VRCALC_COMIS=0
                           Moveto "FaturaV"
                           Scan For Not IsBlank([Valor])
                             [Valor da Comissao]=Round(([Valor]*tx_comis)/100,2)
                             VRCALC_COMIS       =VRCALC_COMIS+[Valor da Comissao]
                             UnLockRecord
                           EndScan
                           If Not IsBlank([Valor])
                              Then [Valor da Comissao]=[Valor da Comissao]+(VRBC_COMIS-VRCALC_COMIS)
                                   UnLockRecord
                           EndIf
                           Release Vars tx_comis
                           Moveto "FaturaC"
                      Else ;---- Distribui a comissÆo em cada parcela de acordo com o valor apurado nos itens e NAO no total da nota -----
                           VRCALC_COMIS=0
                           Moveto "FaturaV"
                           Scan For Not IsBlank([Valor])
                             [Valor da Comissao] = Round((VRBC_COMIS * (([Valor]*100)/[Faturac->Valor Nota Fiscal]))/100,2)
                             VRCALC_COMIS        = VRCALC_COMIS+[Valor da Comissao]
                             UnLockRecord
                           EndScan
                           If Not IsBlank([Valor])
                              Then [Valor da Comissao]=[Valor da Comissao]+(VRBC_COMIS-VRCALC_COMIS) 
                                   UnLockRecord
                           EndIf 
                   EndIf        
           EndIf

           If PARAM_UTILIZA_COMISSAO_VENDEDOR="S" Or
              PARAM_UTILIZA_COMISSAO_VENDREAL="S"
             Then If Not Checa_Comissao_Vendedor()
                     Then QuitLoop
                  EndIf
           EndIf

           If PARAM_COMIS_VENCTO="S" And
              PARAM_CALC_COMIS_ITEM<>"S"
              Then RATEIO_COMISSAO_VENCTOS()
           EndIf

           ConfImprime()
           QuitLoop
      Case RetVal="F":
           Campo_Ant=Field()
           DIGITA_FRETE()
           CALC_OF()
           Moveto Field Campo_Ant
      Case RetVal="D":
           If Not Field()="Forma de Pagamento"
              Then DIGITA_DESCTO()
                   CALC_OF()
              Else KeyPress "D"
           EndIf
      Case RetVal="ESC":
        Switch
           Case Field()="Valor Despesas Acessorias":
                CHAVEF=9
                QuitLoop
           Case Field()="Valor do Seguro"          : Moveto [Valor Despesas Acessorias]
           Case Field()="Tipo de Pagamento"        : Moveto [Valor do Seguro]
           OtherWise:
                Left
        EndSwitch
      Case RetVal="ENTER":
        Switch
           Case Field()="Valor Despesas Acessorias" Or
                Field()="Valor do Seguro"          :
                Switch
                  Case Field()="Valor Despesas Acessorias":   Moveto [Valor do Seguro]
                  Case Field()="Valor do Seguro"          :   Moveto [Tipo de Pagamento        ]
                EndSwitch
                CALC_OF()
           Case Field()="Tipo de Pagamento":
                If IsBlank([]) Then Loop EndIf
                If []="O"
                   Then [Numero de Parcelas]=BlankNum()
                        [Composicao de Dias]=""
                        [Forma de Pagamento]="OU"
                        Moveto [Forma de Pagamento]
                   Else Moveto [Numero de Parcelas]               
                EndIf    
           Case Field()="Forma de Pagamento":
                If IsBlank([]) Then Loop EndIf
                Moveto [Tipo de Pagamento]
           OtherWise:
                Right
        EndSwitch
    EndSwitch
EndWhile
EndProc  ; (DigitaF)

;*******************************************************************************
;* Rotina para Digitacao de Vencimentos                                        *
;*******************************************************************************
Proc CHAVEV()
While True
  Moveto "FaturaV"

  SomaVenctos("FaturaV","FaturaV")

  Moveto [Sequencia]
  End
  SEQ = [Sequencia]
  Down
  Moveto [Sequencia]
  Seta_Sequencia(SEQ,False)
  If IsLockRecord()
     Then Del
          Loop
  EndIf

  SetaCorRegistro("Editar")
  While True

        MSGCAMPO=""
        TECLA= " Esc=Retornar  F7=Paginar  F9=LimpaVenctos  F6=TC"

        Prompt TECLA

        Wait Field
             Until "ESC","ENTER","F7","HOME","UP","PGUP","F9", "F6"

        Switch
        Case RetVal="F7" Or RetVal="UP" Or RetVal="PGUP" Or RetVal="HOME":
             Del
             While True
             
               SomaVenctos("FaturaV","FaturaV")

               PAGINA("FaturaV","MR")
               If EDITAR="S"
                  Then CHAVEV=0
                       SEQ=[Sequencia]
                       Controla_EdicaoV()
                  Else If EXCLUIR="S"
                          Then EXCLUIR_VENCTO=False
                               If [Forma de Pagamento]="RP" And [Observacao]<>""
                                  Then LANCTO_RESGATE = [Observacao]
                                       PARAM_PONTOS_ROTINA="EXCLUI_RESGATE_PONTOS"
                                       Play "FT_PONTO"
                                  Else If QuerExcluir("")
                                          Then EXCLUIR_VENCTO=True
                                       EndIf   
                               EndIf
                               If EXCLUIR_VENCTO
                                  Then Del
                                  Else UnLockRecord
                               EndIf
                               Release Vars EXCLUIR_VENCTO,LANCTO_RESGATE,PARAM_PONTOS_ROTINA
                          Else QuitLoop
                       EndIf
               EndIf
               SetaPosForm()
             EndWhile
             QuitLoop
        Case Retval="F9":
             Home
             while true
               if RecordStatus("New")
                  then quitloop
               endif   

               if (PARAM_TITCRED="T" And [Forma de Pagamento]="TC" and
                  (substr([Numero do Cartao],1,3)="CP-" or substr([Numero do Cartao],1,3)="CR-" )) OR
                  [Forma de Pagamento]="RP" 
                  then skip    
                       if eot() then quitloop endif   
                  else unlockrecord
                       del
               endif        
             endwhile
             QuitLoop
              
        Case RetVal="F6":
             del
             Play "FT_LTC"
             quitloop

        Case Retval="ESC":
             CHAVEV=9
             Del
             Return
        Case Retval="ENTER":
             If Not Seta_Sequencia(SEQ,True)
                Then Del
                     QuitLoop
             EndIf
             SEQ=[]
             Del
             Locate SEQ
             If Retval
                Then CHAVEV=0
                Else CHAVEV=1
                     End Down
                     [Sequencia]=SEQ
             EndIf
             Return
        EndSwitch
  EndWhile
EndWhile
EndProc    ;  (ChaveV)

;*******************************************************************************
;* Rotina para Digitacao dos Vencimentos                                       *
;*******************************************************************************
Proc DIGITAV()
private fpold

If CHAVEV=1
   Then Moveto [Numero de Dias   ]
   Else 
        if (PARAM_TITCRED="T" And [Forma de Pagamento]="TC") Or [Forma de Pagamento]="RP" 
           then Mensagem("Edi‡Æo para '"+[Forma de Pagamento]+"' nÆo permitida!")
                Return
        EndIf
        Moveto [Data]
EndIf
FPAGTO=[Forma de Pagamento]
While True
  TECLA= " Esc=Retornar  "
  If CHAVEV=0
     Then TECLA=TECLA+"Del=Excluir  "
     Else TECLA=TECLA+"             "
  EndIf

  fpold=[Forma de Pagamento]
  
  MSGCAMPO=field()
  If Field()="Forma de Pagamento"
     Then MSGCAMPO=MSGCAMPO+", [F1]Consultar tabela"
  EndIf

  Prompt TECLA
  SetaCorRegistro("Editando")
  Wait Field
       Until "ESC","ENTER","DEL","F1"

  Switch
  Case RetVal="F1":
       If Field()="Forma de Pagamento"
          Then CONSULTAF1()
       EndIf
  Case RetVal="ESC":
       If Field()="Numero de Dias"
          Then If QuerDesfazer("")
                  Then If CHAVEV=1
                          Then Del
                          Else Undo
                       EndIf
                       QuitLoop
               Endif
          Else Left
       EndIf
  Case RetVal="DEL":
       If QuerExcluir("")
          Then Del
               QuitLoop
       EndIf
  Case RetVal="ENTER":
    Switch
       Case Field()="Numero de Dias":
            If Not IsBlank([]) Or []>0
               Then ND=[]
                    Right
                    []=[FaturaC->Data de Emissao]+ND
               Else Right
            EndIf
       Case Field()="Data":
               If IsFieldNull([]) Then Loop EndIf
               Right
       Case Field()="Valor":
               If IsFieldNull([]) Then Loop EndIf
               Right
       Case Field()="Forma de Pagamento":
            If IsFieldNull([]) Then Loop EndIf
            
            if (PARAM_TITCRED="T" and []="TC") Or []="RP" 
               then Switch
                      Case []="TC" : Mensagem("Forma Pagamento nÆo permitida aqui, use a fun‡Æo [F6]=TC !")
                                     []=fpold
                                     Loop
                      Case []="RP" : Mensagem("Forma Pagamento nÆo permitida aqui, use a fun‡Æo [F3] !")
                                     []=fpold
                                     Loop
                    EndSwitch                                 
            endif   
            
            If PARAM_ALTERA_FP="S"
               Then If []<>FPAGTO And (FPAGTO="CT" Or FPAGTO="CD" Or FPAGTO="CH" Or FPAGTO="CP" Or FPAGTO="CL")
                       Then Switch
                              Case FPAGTO="CH" or FPAGTO="CP" :
                                   Moveto "FaturaV"
                                   If [Codigo_Banco  ]<>"" Or   
                                      [Nome_Banco    ]<>"" Or   
                                      [Agencia       ]<>"" Or   
                                      [Numero_Cheque ]<>"" Or   
                                      [Titular_Cheque]<>""  
                                      Then ConfGeral("Se continuar a fazer essa altera‡Æo os dados//"+
                                                     "armazenados serÆo perdidos.////"+
                                                     "Deseja continuar o processo ?")
                                           If OK<>"S"
                                              Then []=FPAGTO
                                                   Loop
                                              Else [Codigo_Banco  ]=""
                                                   [Nome_Banco    ]=""
                                                   [Agencia       ]=""
                                                   [Numero_Conta  ]=""
                                                   [Numero_Cheque ]=""
                                                   [Tipo_Emitente ]=""
                                                   [Titular_Cheque]=""
                                                   [Cidade        ]=""
                                                   [UF            ]=""
                                                   [Observacao    ]=""
                                                   [CPF           ]=""
                                           EndIf
                                           UnLockRecord
                                   EndIf
                              Case FPAGTO="CT" Or FPAGTO="CD" Or FPAGTO="CL":
                                   Moveto "FaturaV"   
                                   If [Numero do Cartao]<>"" Or
                                      [Nome do Cartao  ]<>""
                                      Then ConfGeral("Se continuar a fazer essa altera‡Æo os dados//"+
                                                     "armazenados serÆo perdidos.////"+
                                                     "Deseja continuar o processo ?")
                                           If OK<>"S"
                                              Then []=FPAGTO
                                                   Loop
                                              Else [Numero do Cartao]=""
                                                   [Nome do Cartao  ]=""
                                           EndIf
                                           UnLockRecord
                                   EndIf   
                            EndSwitch  
                    EndIf     
               Else If []<>FPAGTO And Not IsBlank(FPAGTO)
                       Then Mensagem("Para mudar forma de Pagto exclua e inclua novamente este Vencimento Ok !")
                            []=FPAGTO
                            Loop
                    EndIf         
            EndIf        
            FPAGTO=[]
            If []="CH" or []="CP" 
               Then Play "FT_ECH"
               Else If []="CT" Or []="CD" or []="CL"
                       Then if not Digita_Cartao() then loop endif
                       Else Digita_Obs()
                    EndIf
            EndIf
            QuitLoop
       OtherWise:
            Right
    EndSwitch
  EndSwitch
EndWhile
EndProc   ; (DigitaV)

;*******************************************************************************
;* Exclusao da Cabeca                                                          *
;*******************************************************************************
Proc EXCLUSAO_C()
If Not Isassigned(GRAVA_LOG) Then GRAVA_LOG=False EndIf

Moveto "FaturaI"
While RecordStatus("New")=False
  While IsLockRecord() EndWhile
  EXCLUSAO_I()
EndWhile

Moveto "FaturaV"
  While RecordStatus("New")=False
  Del
EndWhile

Moveto "FaturaCC"
While RecordStatus("New")=False
  Del
EndWhile

Moveto "FaturaC"
If GRAVA_LOG Then Grava_LogEx("Balcao") EndIf
Del

If MODOFILTRAR Then STATUSFILTRO="DEL" EndIf

EndProc   ; (Exclusao_C)

;*******************************************************************************
;* Exclusao do Item                                                            *
;*******************************************************************************
Proc EXCLUSAO_I()
If Not Isassigned(GRAVA_LOG) Then GRAVA_LOG=False EndIf
CHAVEI=8

ESTOQUE()
ATUA_PEDIDO_ORCAMENTO()
Moveto "FaturaI"
SEQIT=[Item da OF]
If GRAVA_LOG Then Grava_LogEx("Item do Balcao") EndIf
Del

If PARAM_RATEIO_COMISSAO="I"
   Then Excluir_Rateio_Comissao()
EndIf

EndProc  ; (Exclusao_I)

;*******************************************************************************
;* Confirmacao de Janela                                                       *
;*******************************************************************************
Proc OPCAO(Disparo,Campo,Evento,Elemento)
Private Disparo,Campo,Evento,Elemento
Temp=True
If Disparo="EVENT" And DynArraySize(Evento)>0 And Evento["Type"]="KEY"
   Then Switch
           Case Evento["KeyCode"] = 27:
                OK="N"
                CancelDialog
                Temp=False
           Case Evento["KeyCode"] = 13:
                If Campo="PED_ORC_FATURAR"
                   Then PED_ORC_FAT=ControlValue("PED_ORC_FATURAR")
                        SelectControl "Sim"
                        OK="S"
                   Else OK="N"
                EndIf
                CancelDialog
                Temp=False
        EndSwitch
Endif
Return Temp
EndProc   ;  (Opcao)

;*******************************************************************************
;* ROTINA PARA CONFIRMACAO DE TESTE DE IMPRESSAO                               *
;*******************************************************************************
Proc CONFIMPRIME()
Private OPCAOC,OPCAON,NUM_FATURA,EMP_FATURA,NF_FATURADA

MSGCAMPO=""
LimpaRodape(0)

VSD_TG_EDest = "***Indefinido***"  
GetRecord "\\Sistemas\\Cadastro\\Destmail" [FaturaC->Codigo],"C" To REG_DestE
If not RetVal
  Then GetRecord "\\Sistemas\\Cadastro\\Destinat" [FaturaC->Codigo] To REG_DestinatE
       If RetVal
          Then VSD_TG_EDest = REG_DestinatE["Endereco_Eletronico"]
               If VSD_TG_EDest = "" then VSD_TG_EDest = "***Indefinido***"  endIf
       EndIf 
  Else VSD_TG_EDest = REG_DestE["Email"] 
EndIf

;;Rateio_BC_Itens("FaturaC")


;---- Rateio Fatura ------------------------------------------------------
Moveto "FaturaC"
If PARAM_AGRUPA_ITEM
   Then 
        ;---- Rateio Itens do FaturaG ------------------------------------
        PARAM_CALCOF = ""     ;ativar gravar calculos faturac 
        PARAM_FT_GRUP = "RATEIOS AGRUPADOS"
        Play "FT_GRUP"

        ;---- Carrega Variaveis do Item para o FaturaI ------------------- 
        DestruirArrayItens()

        ;---- Carregar Itens do FaturaI ----------------------------------
        PARAM_FT_GRUP = "ITENS"
        Play "FT_GRUP"
        
        PARAM_CALCOF = "ITEM" ;desativar gravar calculos faturac
        Calc_Of()
EndIf

;---- Rateio Itens do FaturaI "PARAM" ----------------------------
PARAM_FT_GRUP = "RATEIOS"
Play "FT_GRUP"

;---- Release vars array itens -------------------------------------------
PARAM_CALCOF = ""     ;ativar gravar calculos faturac 
DestruirArrayItens()

;***** Apenas reimprir romaneio *********************
If REEMITIR And SOIMPRIMIR
   Then Moveto "FaturaC"
        Resynckey
        Do_It!
        SaveTables
        
        CoEditKey                            
        FormKey
        
        While True
          If IsBlank(PARAM_RELAT_ROMA)
            Then Mensagem("Romaneio n„o configurado, ver parƒmetros !")
                 QuitLoop
          EndIf        
          
          CODFISC  ="ROM"  ; PadrÆo
          SERIEFISC="RO"
          
          NOTAFISC=[FaturaC->Numero Nota Gerada]
          If IsBlank([FaturaC->Numero Nota Gerada])
             Then CODFISC  =PARAM_DOC_ROM
                  SERIEFISC=PARAM_SER_ROM
             Else CODFISC  =[FaturaC->Docto Nota Gerada ]
                  SERIEFISC=[FaturaC->Serie Nota Gerada ]
          EndIf     
          
          NUMCOPIA=PARAM_NVIAS_ROMANEIO
          MSGDISPOSITIVO="Romaneio"
          If enviaEmail 
            Then DISPOSITIVO_OPCAO="V"
                 N_COPIAS=1
                 array CheckTG_OPEMAIL[1]
                 CheckTG_OPEMAIL[1] = true
                 PDFZEBRA = false
                 ARQ_EMAIL= PrivDir()+[FaturaC->Numero Nota Gerada]+".txt"
                 Play PARAM_RELAT_ROMA
            Else DispositivoI("FAT")
                 If OK=""
                   Then QuitLoop
                 EndIf
                 N_COPIAS=NUMCOPIA
                 Play PARAM_RELAT_ROMA
          EndIf
          
          QuitLoop
        EndWhile

        Moveto "FaturaC"
        UnLockRecord
        FormKey
        
        SaveTables

        Return
EndIf

If PARAM_RATEIO_COMISSAO="T"
   Then Moveto "FaturaC"
        Moveto [Codigo do Representante]
        Echo Normal
        Echo Off
        APLIC_ORIGEM="FATURA"
        SEQIT=0
        Play "Ft_Comis"
EndIf

UnLockRecord
Do_It!

Echo Off
SaveTables

CoEditKey                            
FormKey

If (PARAM_LIMITE_CREDITO="S" Or PARAM_LIMITE_CREDITO="P") And
   [FaturaC->Tipo     ]="C" And
   [Nome Fantasia EmitDest]<>"DIVERSOS" And
   Search("VEND",[FaturaC->Descricao da Destinacao])>0 And
   Search("VIST",[FaturaC->Descricao CondPagto])=0
   Then If Not Limite_Credito()
           Then Moveto "FaturaC"
                UnLockRecord
                FormKey
                Return
        EndIf
EndIf

While True

  If Not IsBlank(PARAM_RELAT_ROMA) And Not IsBlank(PARAM_RELAT_NF)
     Then 
         ;Echo Normal
          Echo Off

          ShowPopup " Impress„o " CENTERED
              "~S~uspende"    : " N„o Imprime no momento":"Suspende",
              "~R~omaneio"    : " Imprime Romaneio"      :"Romaneio",
              "~N~ota Fiscal" : " Imprime Nota Fiscal"   :"Nota Fiscal"
          EndMenu To Opcaoc

          echo off

          If Opcaoc="Esc" Or Not Retval Or Opcaoc="Suspende"
             Then QuitLoop
          EndIf

     Else If Not IsBlank(PARAM_RELAT_ROMA)
             Then Opcaoc="Romaneio"
             Else Opcaoc="Nota Fiscal"
          EndIf
  EndIf

  ;***** Obtendo o Numero da Nota Fiscal *******
  NOTAFISC ="000000"

  Switch
    Case Opcaoc="Nota Fiscal":
         CODFISC  ="NF1"  ; Padr„o
         SERIEFISC="M-1"

         If IsBlank([FaturaC->Numero Nota Gerada])
            Then CODFISC  =PARAM_DOC_NF
                 SERIEFISC=PARAM_SER_NF
            Else NOTAFISC =[FaturaC->Numero Nota Gerada]
                 CODFISC  =[FaturaC->Docto Nota Gerada ]
                 SERIEFISC=[FaturaC->Serie Nota Gerada ]
         EndIf  

         Switch
           Case SYS_CODIGO_CLIENTE="0075" And
                ([FaturaC->Codigo da Destinacao]="020" Or
                 [FaturaC->Codigo da Destinacao]="022"):
                CODFISC  ="NF2"
                SERIEFISC="S-1"
         EndSwitch
    Case Opcaoc="Romaneio":
         CODFISC  ="ROM"  ; Padr„o
         SERIEFISC="RO"

         If IsBlank([FaturaC->Numero Nota Gerada])
            Then CODFISC  =PARAM_DOC_ROM
                 SERIEFISC=PARAM_SER_ROM
            Else NOTAFISC =[FaturaC->Numero Nota Gerada]
                 CODFISC  =[FaturaC->Docto Nota Gerada ]
                 SERIEFISC=[FaturaC->Serie Nota Gerada ]
         EndIf  

  EndSwitch

  If IsBlank([FaturaC->Numero Nota Gerada])
		 Then If PARAM_FATURA_IGUAL_OF="S"
						 Then NOTAFISC=[FaturaC->Numero da OF]
									Moveto "NumeroNf"
									Moveto [Codigo da Empresa]
									Locate [FaturaC->Codigo da Empresa],CODFISC
									If Not RetVal
										 Then Mensagem("Empresa Sem Controle de Numera‡„o de "+Opcaoc+" !")
                          QuitLoop
									EndIf
             Else Moveto "NumeroNf"
                  Moveto [Codigo da Empresa]
                  Locate [FaturaC->Codigo da Empresa],CODFISC
                  If RetVal
                     Then While True
                            NOTAFISC = [Proximo Numero]
                            NOTAFISC = ALVAR(StrVal(NOTAFISC),6,"0")

                            LockRecord
                            If RetVal
                               Then QuitLoop
                            EndIf
                            MSG="O usu rio "+Upper(ErrorUser())+", esta gerando:// //"
                            MSG=MSG+Opcaoc+" N§ "+NOTAFISC+" !// //"
                            MSG=MSG+"Efetuar uma nova tentativa para//"
                            MSG=MSG+"libera‡„o do proximo numero para "+Opcaoc+" ?"
                            ConfGeral(MSG)
                            If OK<>"S"
                               Then Moveto "FaturaC"
                                    UnLockRecord
                                    FormKey
                                    Return
                            EndIf
                          EndWhile
                          If [FaturaC->Data de Emissao]<[Data Ultima Emissao] And SYS_CODIGO_CLIENTE<>"0334"
                             Then UnLockRecord
                                  MSG=Opcaoc+" com Data de Emiss„o inferior a data da ultima emiss„o !// //"
                                  MSG=MSG+"Verificar no controle de numera‡„o !"
                                  Mensagem(MSG)
                                  QuitLoop
                          EndIf
                     Else Mensagem("Empresa Sem Controle de Numera‡„o de "+Opcaoc+" !")
                          QuitLoop
                  EndIf
          EndIf
     Else NOTAFISC=[FaturaC->Numero Nota Gerada]
  EndIf

  If IsBlank([FaturaC->Numero Nota Gerada])
     Then Moveto "FaturaC"
          NUM_FATURA=[Numero da OF     ]
          EMP_FATURA=[Codigo da Empresa]

          Moveto [Numero Nota Gerada]
          Locate NOTAFISC
          If RetVal
             Then NF_FATURADA=False
                  While True
                    If [Codigo da Empresa]=EMP_FATURA And
                       [Docto Nota Gerada]=CODFISC    And
                       [Serie Nota Gerada]=SERIEFISC
                       Then NF_FATURADA=True
                            QuitLoop
                    EndIf   
                    Skip
                    If EOT() Then Quitloop EndIf
                    Locate Next NOTAFISC
                    If Not RetVal
                       Then QuitLoop
                    EndIf
                  EndWhile
                  If NF_FATURADA
                     Then Moveto "NumeroNF"
                          UnLockRecord

                          MSG=    "O proximo n§ "+Opcaoc+" "+NOTAFISC+" j  foi gerado pela //"
                          MSG=MSG+"Ordem de Faturamento n§ "+[FaturaC->Numero da OF]+"// //"
                          MSG=MSG+"Verificar no controle da numera‡„o se //"
                          MSG=MSG+"a ordem esta correta ou//"
                          MSG=MSG+"no registro das notas a atual situa‡„o da mesma. !// //"
                          MSG=MSG+"Emiss„o n„o permitida !"
                          Mensagem(MSG)
                          QuitLoop
                  EndIf
          EndIf

          Moveto [Numero da OF]
          Locate NUM_FATURA
          If Not RetVal
             Then Moveto "NumeroNF"
                  UnLockRecord

                  Mensagem("Erro ao localizar Ordem de Fatura: "+NUM_FATURA)
                  QuitLoop
             Else While True
                    If Not IsLockRecord()
                       Then QuitLoop
                    EndIf
                  EndWhile
          EndIf
  EndIf

  Moveto "NotaC"
  Moveto [Codigo da Empresa]
  Locate [FaturaC->Codigo da Empresa], NOTAFISC, SERIEFISC
  If RetVal
     Then Moveto "FaturaC"
          If [NotaC->Situacao]<>"C"
             Then MSG=Opcaoc+" N§ "+NOTAFISC+" j  existe no Sistema !// //"
                  If IsBlank([FaturaC->Numero Nota Gerada])
                     Then Moveto "NumeroNF"
                          UnLockRecord

                          MSG=MSG+"Verificar no controle da numera‡„o se //"
                          MSG=MSG+"a ordem esta correta ou//"
                          MSG=MSG+"no registro das notas a atual situa‡„o da mesma. !// //"
                          MSG=MSG+"Emiss„o n„o permitida !"
                          Mensagem(MSG)
                          QuitLoop
                     Else If [NotaC->Numero da OF]<>[FaturaC->Numero da OF]
                             Then MSG=MSG+"E esta foi gerada pela Ordem de Fatura "+[NotaC->Numero da OF]+".//"
                                  MSG=MSG+"Verificar no controle da numera‡„o se //"
                                  MSG=MSG+"a ordem esta correta ou Ordem de Faturamento e Registro de notas.// //"
                                  MSG=MSG+"Emiss„o n„o permitida !"
                                  Mensagem(MSG)
                                  QuitLoop
                             Else MSG=MSG+"Deseja emit¡-la novamente ?"
                          EndIf
                  EndIf
                  ConfGeral(MSG)
                  If OK="N"
                     Then Moveto "NumeroNF"
                          UnLockRecord
                          QuitLoop
                  EndIf
             Else If IsBlank([FaturaC->Numero Nota Gerada])
                     Then Moveto "NumeroNF"
                          UnLockRecord
                  EndIf
                  Mensagem(Opcaoc+" N§ "+NOTAFISC+" j  existe no Sistema !// // Situa‡„o [CANCELADA] !")
                  QuitLoop
          EndIf

     Else Moveto "FaturaC"
          ConfGeral("Confirma Emiss„o "+Opcaoc+" N§ "+NOTAFISC+" ?")
          If OK="N"
             Then If IsBlank([FaturaC->Numero Nota Gerada])
                     Then Moveto "NumeroNF"
                          UnLockRecord
                  EndIf
                  QuitLoop
          EndIf
  EndIf

  Switch
    Case Opcaoc="Romaneio":
        ;Echo Normal
         Echo Off
         ShowPopup " Romaneio " CENTERED
             "~I~mpressora"    : "Imprime Romaneio"    :"Impressora",
             "~L~ugar Nenhum"  : "N„o Imprime Romaneio":"Lugar Nenhum"
         EndMenu
         To Opcaon

         Echo off
         If Opcaon="Esc"
            Then If IsBlank([FaturaC->Numero Nota Gerada])
                    Then Moveto "NumeroNF"
                         UnLockRecord
                 EndIf
                 Loop
         EndIf

         If Not RetVal Then Opcaon="Lugar Nenhum" EndIf
         If Opcaon="Impressora"
            Then NUMCOPIA=PARAM_NVIAS_ROMANEIO
                 MSGDISPOSITIVO=OpcaoC
                 DispositivoI("FAT")
                 If OK=""
                    Then If IsBlank([FaturaC->Numero Nota Gerada])
                            Then Moveto "NumeroNF"
                                 UnLockRecord
                         EndIf
                         QuitLoop
                 EndIf
                 Play "FT_NOTA"
                 N_COPIAS=NUMCOPIA
                 ARQ_EMAIL= PrivDir()+[FaturaC->Numero Nota Gerada]+".txt"
                 Play PARAM_RELAT_ROMA
            Else Play "FT_NOTA"
         EndIf
    Case Opcaoc="Nota Fiscal":
         MSGDISPOSITIVO=OpcaoC
         DispositivoI("FAT")
         If OK=""
            Then If IsBlank([FaturaC->Numero Nota Gerada])
                    Then Moveto "NumeroNF"
                         UnLockRecord
                 EndIf
                 QuitLoop
         EndIf
         Play "FT_NOTA"
         Switch
             Case SYS_CODIGO_CLIENTE="0075":
                  If [FaturaC->Codigo da Destinacao]="020" Or
                     [FaturaC->Codigo da Destinacao]="022"
                     Then Play "NF_0075"
                     Else Play "NF_0075B"
                  EndIf
             Case SYS_CODIGO_CLIENTE="0057":
                  If [FaturaC->Codigo da Destinacao]="036"
                     Then Play "NF_0057B"
                     Else Play "NF_0057"
                  EndIf
             OtherWise: Play PARAM_RELAT_NF
         EndSwitch
  EndSwitch
  ;;******  Emissao Comprovante de Entrega  *************
  Moveto "FaturaC"
  
  If Opcaon <> "Lugar Nenhum"
     Then VSD_DESTIN = Search("ORCA",[Descricao da Destinacao])
          If Not IsBlank(PARAM_RELAT_ENTREGA) And PARAM_ENTREGA="S"
             Then If SYS_CODIGO_CLIENTE="0102"
                     Then If VSD_DESTIN <> 1
                             Then Play PARAM_RELAT_ENTREGA
                                  Play "ENT_102T"
                          EndIf 
                     Else Play PARAM_RELAT_ENTREGA
                  EndIf   
          EndIf
  EndIf

  ;;******  Emissao Nota Promissoria  *************
  Moveto "FaturaC"
  If Not IsBlank(PARAM_RELAT_NP) And [FaturaC->Forma de Pagamento]="NP"
     Then
         ;Echo Normal
          Echo Off
          ShowPopup " Op‡”es " CENTERED
            "Nota ~P~romissoria" : "Imprime Nota Promissoria"    :"Nota Promissoria",
            "~C~ancelar"         : "N„o Imprime Nota Promissoria":"Cancelar"
          EndMenu
          To Opcaon

          Echo off
          If (Opcaon<>"Esc") and (Opcaon<>"Cancelar")
              Then If Opcaon="Nota Promissoria"
                      Then 
                           NUMCOPIA=1
                           MSGDISPOSITIVO=Opcaon
                           DispositivoI("NP")
                           If OK<>""
                              Then Play PARAM_RELAT_NP
                           EndIf
                   EndIf
          EndIf
  EndIf

  ;;******  Emissao de Carnˆ ************
  Moveto "FaturaC"
  If Not IsBlank(PARAM_RELAT_CARNE) And [FaturaC->Forma de Pagamento]="CR"
     Then
         ;Echo Normal
          Echo Off
          ShowPopup " Op‡”es " CENTERED
            "Car~n~ˆ"            : "Imprime Carnˆ"     :"Carne",
            "~C~ancelar"         : "N„o Imprime Carnˆ" :"Cancelar"
          EndMenu
          To Opcaon

          Echo off

          If (Opcaon<>"Esc") and (Opcaon<>"Cancelar")
             Then If Opcaon="Carne"
                     Then MSGDISPOSITIVO=Opcaon
                          DispositivoI("CR")
                          If OK<>""
                             Then Play PARAM_RELAT_CARNE
                          EndIf
                  EndIf
          EndIf
  EndIf

  ;;******  Emissao de Titulo de Credito ************
  Moveto "FaturaC"
  If PARAM_TITCRED="T"
     then Play "FT_IVALE"
  endif   
   
  QuitLoop
EndWhile

Moveto "FaturaC"
UnLockRecord
FormKey

Echo Normal
Echo Off

SaveTables
EndProc   ; (ConfImprime )

;*******************************************************************************
;* Rotina para Carregar Parametros *Particularidades                           *
;*******************************************************************************
Proc Param_Particularidades()

If SYS_CODIGO_CLIENTE = "0314"
   Then PARAM_BLOQ_ALTERA_REP = "S"
   Else PARAM_BLOQ_ALTERA_REP = "N"
EndIf

If SYS_CODIGO_CLIENTE = "0318" Or SYS_CODIGO_CLIENTE = "0370"
   Then PARAM_DUPLICIDADE_ITEM = True
   Else PARAM_DUPLICIDADE_ITEM = False
EndIf

Switch
  Case SYS_CODIGO_CLIENTE = "0235" : PARAM_CODBAR_PESO = 6
  Case SYS_CODIGO_CLIENTE = "0399" : PARAM_CODBAR_PESO = 4
  OtherWise                        : PARAM_CODBAR_PESO = 0
Endswitch

If SYS_CODIGO_CLIENTE = "0278" or
   SYS_CODIGO_CLIENTE = "0401"
   Then PARAM_RELATORIO_CUSTO=True
   Else PARAM_RELATORIO_CUSTO=False
EndIf

EndProc ;Param_Particularidades()

;*******************************************************************************
;* Rotina para Carregar Parametros                                             *
;*******************************************************************************
Proc Carrega_Parametros()

If not GetP_Balcao([FaturaC->Codigo da Empresa])
   Then return false
EndIf    

If not GetP_Entra([FaturaC->Codigo da Empresa])
   Then return false
EndIf   

PARAM_AGRUPA_ITEM = False

return true
EndProc ; (Carrega_Parametros)

;*******************************************************************************
;* Rotina para Carregar Tabelas                                                *
;*******************************************************************************
Proc Closed Carrega_Tabelas()
UseVars AutoLib, ErrorProc,MODOFILTRAR,TabelaControle,TabelaPrincipal,OPCAO_FORM

View NOWINDOW "FaturaI"
View NOWINDOW "FaturaV"
View NOWINDOW "FaturaCC"
View NOWINDOW "FaturaIC"

View NOWINDOW "NotaC"
View NOWINDOW "NotaI"
View NOWINDOW "NotaIC"
View NOWINDOW "NotaV"
View NOWINDOW "NotaICM"
View NOWINDOW "NumeroNF"
View NOWINDOW "NumeroDP"

View NOWINDOW  "\\Sistemas\\Estoque\\SdEstq"
View NOWINDOW  "\\Sistemas\\Estoque\\EstqPrm"

View NOWINDOW  "\\Sistemas\\CheqRec\\ChequeC"
View NOWINDOW  "\\Sistemas\\CheqRec\\ChequeI"
View NOWINDOW  "\\Sistemas\\CheqRec\\CDPessoa"

View NOWINDOW  "\\Sistemas\\CtaRec\\Duplic"

View NOWINDOW  "\\Sistemas\\Cadastro\\Destaut"
View NOWINDOW  "\\Sistemas\\Cadastro\\FichaCli"
View NOWINDOW  "\\Sistemas\\Cadastro\\Feriados"
View NOWINDOW  "\\Sistemas\\Cadastro\\Destmsg"

EndProc   ; (Carrega_Tabelas)

;*******************************************************************************
;* Rotina para controlar Edicao do registro                                    *
;*******************************************************************************
Proc Controla_EdicaoI()
INICIA_REGISTRO()
DIGITAI()
If CHAVEI<>9
   Then If CHAVEI<>8
           Then ESTOQUE()
                ATUA_PEDIDO_ORCAMENTO()

                If PARAM_RATEIO_COMISSAO="I"
                   Then APLIC_ORIGEM="FATURA"
                        Play "Ft_Comis"
                EndIf
        EndIf
EndIf
Moveto "FaturaI"
If RecordStatus("Locked") Then UnLockRecord EndIf         
EndProc

;*******************************************************************************
;* Rotina para controlar Edicao do registro                                    *
;*******************************************************************************
Proc Controla_EdicaoV()
DIGITAV()
Moveto "FaturaV"
If RecordStatus("Locked") Then UnLockRecord EndIf         
SetaCorRegistro("Padrao")
EndProc

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

Moveto "FaturaC"  SetaCorRegistro("Editar") 
CopyToArray REG_FATURAC

While FACA_DIGITAC
  Moveto "FaturaC"
  Moveto [Data de Emissao]
  Resynckey
  Sleep 300

  DIGITAC()
  If CHAVEC=9 Then QuitLoop EndIf
  If CHAVEC=1
     Then Controle_Dia()
  EndIf
  If Not IsAssigned(OPCHAVEI)
     Then If PARAM_UTILIZACDBARRA="S"
             Then OPCHAVEI="CDB"
             Else OPCHAVEI="CDC"
          EndIf
  EndIf
  
  While FACA_CHAVEI
    Moveto "FaturaI"
    Moveto "FaturaC"
    Moveto [Tipo Movimento Estoque]
    Resynckey
    Sleep 300
    
    While True
      If OPCHAVEI="CDB"
         Then CHAVECDBAR()
              If CHAVEI=9 Then Quitloop EndIf
              If CHAVEI=7 Then     Loop EndIf
         Else CHAVEI()
              If CHAVEI=9 Then QuitLoop EndIf
              If CHAVEI=7 Then     Loop EndIf
              Controla_EdicaoI()
      EndIf
    EndWhile
    
    While FACA_DIGITAF
      Moveto "FaturaV"
      Moveto "FaturaC"
      Moveto [Forma de Pagamento]
      Resynckey
      Sleep 300

      DIGITAF()                   
      If CHAVEF = 9 Then QuitLoop EndIf
      
      FACA_DIGITAC=False
      FACA_CHAVEI =False
      QuitLoop
    EndWhile
  EndWhile
EndWhile
Moveto "FaturaC"
If RecordStatus("Locked") Then UnLockRecord EndIf
AtualizaRegistroControle("Numero da OF",ORDFAT,MODOPAGINA)         
If OPCAO_FORM=OPCAO_FORM_REL
   Then PickForm OPCAO_FORM
EndIf

VSDGENDENT    =""
VSDGENDCOB    =""
VSDGENDRET    =""

SaveTables
EndProc

;*******************************************************************************
;* Rotina p/ Selecionar e Order Registros                                      *
;*******************************************************************************
Proc SelecionaFiltro()
ClearAll

{Ask} {FaturaC} Check
Moveto [Codigo da Empresa] TypeIn MODOFILTRAR_EMPRESA
Do_It!
ClearAll

Release Vars REG_USUARIO
CriaTabelaControle()

Return True

EndProc  ; (Seleciona)

;*******************************************************************************
;* Rotina Principal Emissao Nota Fiscal ou Romaneio                            *
;*******************************************************************************
AutoLib="\\Sistemas\\Cadastro\\Bibliot,"+
        "\\Sistemas\\Cadastro\\Bib_Show,"+
        "\\Sistemas\\Cadastro\\Bib_Proc,"+
        "\\Sistemas\\Cadastro\\Bib_Parm,"+
        "\\Sistemas\\Vendas\\Bib_Bal,"+
        "\\Sistemas\\Vendas\\Bib_Vend"

sys_valor()

If Not IsAssigned(NOMEMPRESA)          Then NOMEMPRESA=""           EndIf
If Not IsAssigned(SYS_EMPRESA_DEFAULT) Then SYS_EMPRESA_DEFAULT=""  EndIf
If Not IsAssigned(SYS_CODIGO_CLIENTE)  Then SYS_CODIGO_CLIENTE=""   EndIf
If Not IsAssigned(SYS_CONTROLE_DIA)    Then SYS_CONTROLE_DIA  =""   EndIf
If Not IsAssigned(SYS_NIVEL_USUARIO)   Then SYS_NIVEL_USUARIO ="S"  EndIf
If Not IsAssigned(SYS_NOME_USUARIO)    Then SYS_NOME_USUARIO  ="S"  EndIf
If Not IsAssigned(SYS_USUARIO_BALCAO)  Then SYS_USUARIO_BALCAO="N"  EndIf
If Not IsAssigned(APLIC_ORIGEM)        Then APLIC_ORIGEM      =""   EndIf
If Not IsAssigned(SYS_CHAPA_USUARIO)   Then SYS_CHAPA_USUARIO =""   EndIf
If Not IsAssigned(SYS_NCONEXAO)        Then SYS_NCONEXAO      =""   EndIf
If Not IsAssigned(SYS_ESTACAO)         Then SYS_ESTACAO       =""   EndIf
If Not IsAssigned(SYS_CLIENTE_CONFEC)  Then SYS_CLIENTE_CONFEC=""   EndIf
If Not IsAssigned(SYS_USUARIO_BALCAO)  Then SYS_USUARIO_BALCAO=""   EndIf
If Not IsAssigned(SYS_USUARIO_CODEMPR) Then SYS_USUARIO_CODEMPR=""  EndIf

;---- Devido ao problema de lentidÆo em algumas m quinas na empresa 0334 -------
If SYS_CODIGO_CLIENTE <> "0334"
   Then Ler_Captura("")
EndIf   
LeiaINI(PrivDir()+"LER_CHQ.ini","VSD_LEITORCHQ.S.1")

If IsFile(PrivDir()+"BALCAO.ini")
   Then LeiaINI(PrivDir()+"BALCAO.ini","LOCALIZA_CODIGO.S.null")
EndIf
If Not IsAssigned(LOCALIZA_CODIGO) Then LOCALIZA_CODIGO=""  EndIf
ModoLocalizarItem("","","")

TabelaTemp      = ""
TabelaPrincipal = "FaturaC"
TabelaControle  = TabelaPrincipal
MODOFILTRAR     = False

If SYS_CHAPA_USUARIO<>""
   Then Switch
          Case SYS_CODIGO_CLIENTE="0435" : SYS_EMPRESA_DEFAULT = ""
                                           MODOFILTRAR = True 
                                           GetRecord "\\Sistemas\\Cadastro\\Usuarios" SYS_CHAPA_USUARIO To REG_USUARIO
                                           If Not RetVal
                                              Then Mensagem("Usu rio "+SYS_CHAPA_USUARIO+" nÆo foi localizado no sistema!")
                                                   Return
                                              Else MODOFILTRAR_EMPRESA = REG_USUARIO["Cod_Empresa"]  
                                                   If MODOFILTRAR_EMPRESA = ""
                                                      Then MODOFILTRAR = False
                                                   EndIf     
                                           EndIf          
          OtherWise                      : MODOFILTRAR = False
        EndSwitch
EndIf          

If IsAssigned(MODOFILTRAR) And MODOFILTRAR
   Then SelecionaFiltro()
   Else TabelaControle    = TabelaPrincipal
        MODOFILTRARATIVO  = True
        MODOFILTRARINCLUI = False
        MODOFILTRATODOS   = True
EndIf

Param_Particularidades()

PARAM_RATEIO_COMISSAO    = ""
INICIO_IMPRESSAO         = True
PARAM_AGRUPA_ITEM        = False
VERIFICA_CONSULTA        = "BALCAO"
SYS_APLICATIVO           = "BALCAO"
ATUALIZA_ORCAMENTO       = False
UTILIZANDO_CP_FP_CLIENTE = False

Carrega_Tabelas()

Array dtvencto[12]
Array valorven[12]

;************** Rotina para tratar o erro de tabela locada ********************
OPCAO_FORM_REL="11"
OPCAO_FORM_MAN="3"
OPCAO_FORM    =OPCAO_FORM_REL

If Not MODOFILTRAR
   Then CoEdit NOWINDOW "FaturaC"
        ;************** Rotina para tratar o erro de tabela locada *************
        If ErrorCode()=4
           Then Do_It!
                ClearAll
                Release Vars All
                Release Procs All
                return
        EndIf
   Else If Not CoEditaTabelaControle() ; substitui Coedit da tabela principal
           Then Return
        EndIf
EndIf

Moveto TabelaControle
PickForm OPCAO_FORM_MAN
Moveto "OrcaC"     SetaCorRegistro("Padrao")
Moveto "OrcaI"    SetaCorRegistro("Padrao")
Moveto "\\Sistemas\\Estoque\\SdEstq"  SetaCorRegistro("Padrao")
Moveto "FaturaV"  SetaCorRegistro("Padrao")
Moveto "FaturaCC" SetaCorRegistro("Invisivel")

Moveto TabelaControle
PickForm OPCAO_FORM

MES_EST       =""
ANO_EST       =""
V_DESTIOBS=1
VSD_I_DataEntrega =BlankDate()
VSD_I_DataEntregar=BlankDate()

VCITENS    =BlankNum()
VSQTDE     =BlankNum()
VSVRMERC   =BlankNum()
VSVRVENCTOS=BlankNum()


;**** Em 09.04.2014 aplicado para verificar n£mero de registros ********
If Verifica_NRegistros("Faturai")
   Then COR_MENSAGEM="1"
        Mensagem(MSG_TABELA)
        Release Vars COR_MENSAGEM,MSG_TABELA
   Else Release Vars MSG_TABELA     
EndIf   

If Verifica_NRegistros("Notai")
   Then COR_MENSAGEM="1"
        Mensagem(MSG_TABELA)
        Release Vars COR_MENSAGEM,MSG_TABELA
   Else Release Vars MSG_TABELA     
EndIf  

While True
  CHAVEC()
  ;--- FILTRO ------------------------------------------------------------------
  If CHAVEC=99 
     Then If Filtrar()
             Then MODOFILTRAR=True
          EndIf
          Carrega_Tabelas()
          Loop
  EndIf
  If CHAVEC=98 
     Then AGUARDE("Visualizando todos registros")
          MODOFILTRAR=False
          Do_It!
          
          TabelaControle=TabelaPrincipal
          Carrega_Tabelas()
          Loop
  EndIf   
  ;-----------------------------------------------------------------------------  
  If CHAVEC=9 Then QuitLoop EndIf
  If CHAVEC=5
     Then PickForm OPCAO_FORM
          Loop
  EndIf
  Controla_EdicaoC()
EndWhile
Do_It!
ClearAll
DeletaTabelaControle() ; FILTRO
Release Vars All
Release Procs All
