;** ConfNE *********************************************************************
;*  Digitacao de Controle de Entrada - Nota de Entrada                         *
;*******************************************************************************
;Autor           : Vise Informatica (VISERP)
;Desenvolvido  em: 06/12/2016 por Bruno Carvalho
;Ultima Alteracao: 04/01/2017 por Anivel Augusto Rodrigues 
;Motivo Alteracao: Ajustes usando INEC
;Ultima Alteracao: 27/01/2017 por Anivel Augusto Rodrigues 
;Motivo Alteracao: Ajustes TG_REFERENCIA
;Ultima Alteracao: 14/03/2017 por Anivel Augusto Rodrigues 
;Motivo Alteracao: Ajustes nÆo exibe quantidade NE e diferen‡a
;Ultima Alteracao: 10/04/2017 por Anivel Augusto Rodrigues 
;Motivo Alteracao: Ajustes Unidade_Conferencia e Observa‡Æo do Item
;Ultima Alteracao: 12/04/2017 por Bruno Carvalho 
;Motivo Alteracao: Adicionado Ordem de Compra 
;Ultima Alteracao: 04/05/2017 por Bruno Carvalho 
;Motivo Alteracao: Ajustes no processo do c¢digo de barras
;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: 03/07/2017 por Anivel Augusto Rodrigues 
;Motivo Alteracao: Ajustes ECHO NORMAL, OFF
;Ultima Alteracao: 13/12/2019 por Humberto F Santos 
;Motivo Alteracao: Ajustes linha 471 faltava letra B na palavra Observa‡äes

;*******************************************************************************
;* Rotina para Controlar Chave                                                 *
;*******************************************************************************
Proc CHAVEC()
FACA_DIGITAC=True
FACA_CHAVEI =True                                                        
INICIO_PAGINA=True

While True
  Moveto "ConfNEc"
  Moveto [Numero do CC]
  End
  Moveto [Numero do CC]
  CONTCONF=[Numero do CC]

  If OPCAO_FORM="F"                      
    Then Down
    Else PgDn 
  EndIf
  Moveto [Numero do CC]

  SetaCorRegistro("Editar")
  While True

  TECLA=""
  AguardaTeclasPadrao()

  Switch
    Case RetVal=-33 : SemFuncoes()
    Case RetVal=-94 : MsgTeclasPadrao()
    Case RetVal="F3":
         If OPCAO_FORM="F"
            Then OPCAO_FORM="1"
            Else OPCAO_FORM="F"
         EndIf
         Del
         CHAVEC=5
         Return
    Case RetVal="F7" Or RetVal="UP" Or RetVal="PGUP" Or RetVal="HOME":
         Del
         While True
           If OPCAO_FORM="F"
              Then PAGINA("ConfNEc","MR")
              Else PAGINA("ConfNEc","MT")
           EndIf
           INICIO_PAGINA=True           
           Switch
             Case EDITAR="S":
                  PickForm "1"
                  Echo Normal
                  Echo Off
                  If Checa_Controle([Numero_Controle_Dia])
                     Then CHAVEC=0
                          FACA_DIGITAC=True
                          FACA_CHAVEI =True
                          INICIO_PAGINA=True

                          CONTCONF=[Numero do CC]
                          Controla_EdicaoC()
                     Else UnLockRecord
                  EndIf
             Case EXCLUIR="S":
                  PickForm "1"
                  Echo Normal
                  Echo Off
                  If Checa_Controle([Numero_Controle_Dia]) And (IsBlank([Codigo da Empresa]) Or Carrega_Parametros())
                     Then If [Situacao da Conferencia]="FINALIZADO"
                             Then Mensagem("Este controle de entrada n„o pode ser excluido !// J  foi FINALIZADO !")
                                  UnLockRecord
                             Else If QuerExcluir("")
                                     Then EXCLUSAO_C()
                                     Else UnLockRecord
                                  EndIf
                          EndIf
                     Else UnLockRecord
                  EndIf
             OtherWise: QuitLoop
           EndSwitch
           If OPCAO_FORM="1"
              Then PickForm "1"
              Else PickForm "F"
           EndIf
           SetaPosForm()
         EndWhile
         QuitLoop
    Case Retval="ESC":
         CHAVEC=9
         Del
         Return
    Case Retval="ENTER":
         If Numero_Lancamento("","F")
            Then CONTCONF = PROXLANCTO_NLANC
                 Release Vars PROXLANCTO_NLANC    
            Else QuitLoop
         EndIf
         PickForm "1"
         Moveto [Numero do CC]
         If PROXIMO_LANCTO_REG_ACHOU
            Then CHAVEC=0
                 If Checa_Controle([Numero_Controle_Dia])
                    Then Return
                 EndIf
            Else CHAVEC=1
                 If Checa_Controle(SYS_CONTROLE_DIA)
                    Then Return
                    Else OPCAO_FORM="F" 
                 EndIf
         EndIf  
         If CHAVEC=1
            Then Del
         EndIf
         If OPCAO_FORM="F"
            Then PickForm "F"
         EndIf
         QuitLoop
    EndSwitch
  EndWhile
EndWhile
EndProc   ; (ChaveC)
 
;*******************************************************************************
;* Rotina para Digitacao da Cabeca                                             *
;*******************************************************************************
Proc DIGITAC()
Moveto "ConfNEc"

If INICIO_PAGINA
   Then If Not IsBlank(SYS_EMPRESA_DEFAULT) And CHAVEC=1
           Then [Codigo da Empresa]=SYS_EMPRESA_DEFAULT
        EndIf
        If Not IsBlank([Codigo da Empresa])
           Then If Not Carrega_Parametros()
                   Then If CHAVEC=1
                           Then Del
                        EndIf
                        CHAVEC=9
                        Return
                EndIf
        EndIf
        If [Situacao da Conferencia]="FINALIZADO"
           Then MSG_T="Este controle de entrada j  foi FINALIZADO !//"
                Mensagem(MSG_T)
                If Not CHECA_SUPERVISOR()
                   Then CHAVEC=9
                        Return
                EndIf
        EndIf
EndIf

If CHAVEC=0 Or Not INICIO_PAGINA
   Then Carrega_Parametros()
        Moveto [Flag]
   Else Moveto [Codigo da Empresa]
EndIf    

FACA_CHAVEI=True
INICIO_PAGINA=False
SetaCorRegistro("Editando")

While True
  TECLA=" Esc=Retornar  "
  If Field()="Codigo da Empresa"    Or       
     Field()="Numero da OC"         Or
     Field()="Numero do Lancamento" Or
     Field()="Codigo do Documento"  Or      
     Field()="Codigo"         
     Then TECLA=TECLA + "F1=Tabelas  "
  EndIf
  TECLA=TECLA+"F8=Observa‡„o  "
  MSGCAMPO=Field()
  
  If Field()="Flag" Then MSGCAMPO="Enter=Prosseguir" EndIf

  Prompt TECLA
  Wait Field
       Until "F1","ESC","ENTER","DEL","FIELDVIEW","F8","F35"
  
  Switch
  Case RetVal="F1":
       If Field()="Codigo da Empresa"    Or
          Field()="Numero da OC"         Or
          Field()="Numero do Lancamento" Or
          Field()="Codigo do Documento"  Or              
          Field()="Codigo"         
          Then CONSULTAF1()
        EndIf
  Case Retval="F8":
       CampoAnterior=Field()
       Edita_Memo("Observacao",10,01,13,76,"Observa‡”es")
       Moveto Field CampoAnterior
  Case Retval="FIELDVIEW" or Retval="F35":
       EDITFIELD()
  Case Retval="DEL":
       If CHAVEC=0
          Then If QuerExcluir("")
                  Then EXCLUSAO_C()
                       CHAVEC=9
                       QuitLoop
               EndIf
       EndIf
  Case Retval="ESC":
       Switch
       Case Field()="Codigo da Empresa"  :   
            If QuerDesfazer("")
               Then EXCLUSAO_C()
                    CHAVEC=9
                    QuitLoop
            Endif      
       Case Field()="Numero da OC"         : Moveto [Codigo da Empresa]
       Case Field()="Numero do Lancamento" : Moveto [Numero da OC]
       Case Field()="Codigo do Documento"  : Moveto [Numero do Lancamento]
       Case Field()="Numero do Documento"  : Moveto [Codigo do Documento]
       Case Field()="Flag":
            If CHAVEC=1
               Then Switch  
                     Case [Numero do Lancamento]<>"" : Moveto [Numero do Lancamento]
                     Case [Numero da OC]<>""         : Moveto [Numero da OC]
                     OtherWise                       : Moveto [Codigo do Documento]
                    EndSwitch   
               Else If QuerDesfazer("")
                       Then Undo
                            CHAVEC=9
                            QuitLoop
                    EndIf
            EndIf
       Case Field()="Codigo"      : Switch  
                                     Case [Numero do Lancamento]<>"" : Moveto [Numero do Lancamento]
                                     Case [Numero da OC]<>""         : Moveto [Numero da OC]
                                     OtherWise                       : Moveto [Codigo do Documento]
                                    EndSwitch   
       Case Field()="Razao Social": Moveto [Codigo]
       OtherWise                  : Left
       EndSwitch       
  Case Retval="ENTER":
       Switch
       Case Field()="Codigo da Empresa":
            If IsBlank([]) 
               Then If Not IsBlank(SYS_EMPRESA_DEFAULT)
                       Then [Codigo da Empresa]=SYS_EMPRESA_DEFAULT
                    EndIf
            EndIf
            If IsBlank([]) Then Loop EndIf 
            If Not IsBlank([Codigo da Empresa])
               Then If Not Carrega_Parametros()
                       Then Loop
                    EndIf
            EndIf
            Moveto [Numero da OC]
       Case Field()="Numero da OC" :
            If Not IsBlank([])
               Then [Codigo                 ]=""
                    [Nome Fantasia EmitDest ]=""
                    [Codigo do Documento    ]=""
                    [Tipo do Documento      ]=""
                    [Serie do Documento     ]=""
                    [Numero do Documento    ]=""
                    [Numero do Lancamento   ]=""
                    [Codigo do Representante]=""
                    [Nome Fantasia Represent]=""
                    If CHAVEC=1
                       Then GetRecord "\\Sistemas\\Compras\\OCC" [Numero da OC] To REG_OCC
                            If RetVal
                               Then If [Codigo da Empresa] <> REG_OCC["Codigo da Empresa"]
                                       Then Mensagem("Empresa "+[Codigo da Empresa]+" difere da empresa da ordem de compra "+REG_NOTAE["Codigo da Empresa"]+"!")
                                            Loop
                                    EndIf   
                               Else Mensagem("N§ da Ordem de Compras "+[Numero da OC]+" inv lido! ")  
                                    Loop
                            EndIf
                            [Codigo                 ]=REG_OCC["Codigo"]
                            [Nome Fantasia EmitDest ]=REG_OCC["Nome Fantasia EmitDest"]
                            Release Vars REG_OCC                               
                    EndIf
                    QuitLoop          
            EndIf
            Moveto [Numero do Lancamento]
       Case Field()="Numero do Lancamento":
            If Not IsBlank([])
               Then [Codigo                 ]=""
                    [Nome Fantasia EmitDest ]=""
                    [Codigo do Documento    ]=""
                    [Tipo do Documento      ]=""
                    [Serie do Documento     ]=""
                    [Numero do Documento    ]=""
                    If CHAVEC=1
                       Then GetRecord "\\Sistemas\\Estoque\\INEC" [Numero do Lancamento] To REG_NOTAE
                            If RetVal
                               Then If [Codigo da Empresa] <> REG_NOTAE["Codigo da Empresa"]
                                       Then Mensagem("Empresa "+[Codigo da Empresa]+" difere da empresa da nota "+REG_NOTAE["Codigo da Empresa"]+"!")
                                            Loop
                                    EndIf   
                               Else Mensagem("N§ de Lan‡amento "+[Numero do Lancamento]+" inv lida! ")  
                                    Loop
                            EndIf
                            [Codigo                 ]=REG_NOTAE["Codigo"]
                            [Nome Fantasia EmitDest ]=REG_NOTAE["Nome Fantasia EmitDest"]
                            [Codigo do Documento    ]=REG_NOTAE["Codigo do Documento"]
                            [Tipo do Documento      ]=REG_NOTAE["Tipo do Documento"]
                            [Serie do Documento     ]=REG_NOTAE["Serie do Documento"]
                            [Numero do Documento    ]=REG_NOTAE["Numero do Documento"]
                            [Codigo do Representante]=REG_NOTAE["Codigo do Representante"]
                            [Nome Fantasia Represent]=REG_NOTAE["Nome Fantasia Represent"]
                            Release Vars REG_NOTAE                               
                    EndIf
                    QuitLoop          
            EndIf
       Case Field()="Codigo do Documento":
               If IsBlank([])  
                  Then [Tipo do Documento  ]=""
                       [Serie do Documento ]=""
                       [Numero do Documento]=""
                       FastMsg("Codigo do Documento Inv lido!")
                  Else If IsBlank([Tipo do Documento]) 
                          Then Moveto [Tipo do Documento]
                          Else If IsBlank([Serie do Documento])
                                  Then Moveto [Serie do Documento]
                                  Else Moveto [Numero do Documento]
                               EndIf   
                       EndIf       
               EndIf               
          Case Field()="Tipo do Documento"  : 
               If IsBlank([Serie do Documento])
                  Then Moveto [Serie do Documento]
                  Else Moveto [Numero do Documento]   
               EndIf       
          Case Field()="Serie do Documento" : Moveto [Numero do Documento]
          Case Field()="Numero do Documento": 
               If IsBlank([]) 
                  Then FastMsg("Numero do Documento Inv lido!")
                  Else If Len([Numero do Documento])<>6 Then [Numero do Documento]=AlinhM([Numero do Documento],6) EndIf
                       GetRecord "\\Sistemas\\Estoque\\NotaC" [Codigo da Empresa],[Numero do Documento],[Serie do Documento] To REG_NOTAC
                       If Not RetVal
                          Then Release Vars REG_NOTAC
                               FastMsg("Numero do Documento n„o localizado!")
                          Else [Codigo                ]=REG_NOTAC["Codigo"]
                               [Nome Fantasia EmitDest]=REG_NOTAC["Nome Fantasia EmitDest"]
                               Release Vars REG_NOTAC
                               QuitLoop     
                       EndIf   
               EndIf
       Case Field()="Flag"  : QuitLoop                           
       Case Field()="Codigo":
            If IsBlank([])
               Then Moveto [Razao Social]
               Else QuitLoop
            EndIf   
       Case Field()="Razao Social":
            QuitLoop
       OtherWise:
            Right
       EndSwitch
  EndSwitch
EndWhile
SetaCorRegistro("Padrao")

EndProc  ;(DigitaC)

;*******************************************************************************
;* Rotina de Dialogo da Referencia                                             *
;*******************************************************************************
Proc SD_DialogRef(Disparo,Campo,Evento,Elemento)
Temp=True
MSG_CAMPO=""
TECLA=""

If Campo<>"TG_QUANTIDADE" And Campo<>"TG_FLAG"
   Then Campo="TG_QUANTIDADE"
EndIf  

If Disparo="OPEN"  Then AoCriarShowDialog() EndIf
If Disparo="EVENT" And Evento["Type"]="KEY" Then
   Switch
     Case Evento["KeyCode"] =  9 : Temp=False
     Case Evento["KeyCode"] =  27:  
          Temp=False
          Switch
            Case Campo="TG_QUANTIDADE" : CancelDialog
            Case Campo="TG_FLAG"       : Campo="TG_QUANTIDADE"
          EndSwitch
     Case (Evento["KeyCode"] <= -104 And Evento["KeyCode"] >= -113) Or 
           Evento["KeyCode"]  = -139 Or  Evento["KeyCode"]  = -140:
           SYS_TECLA_ACIONADA=Evento["KeyCode"]
           Seta_Tecla_Acionada()
           CancelDialog
     Case Evento["KeyCode"] = 13: 
          Temp=False
          Switch
            Case Campo="TG_QUANTIDADE" :
                 VSDGQUANTIDADE = ControlValue("TG_QUANTIDADE")
                 If VSDGQUANTIDADE<>0 And VSDGQUANTIDADE<>BlankNum()
                    Then Campo="TG_FLAG"
                 EndIf                
            Case Campo="TG_FLAG"      : AcceptDialog
                 VSDGFLAG = ControlValue("TG_FLAG")
          EndSwitch
          RefreshDialog
   EndSwitch
EndIf  

Switch           
  Case Campo="TG_QUANTIDADE" :
       MSG_CAMPO="Informe a Quantidade"
  Case Campo="TG_FLAG" :
       MSG_CAMPO="Enter=Prosseguir"
EndSwitch

Monta_Prompt(MSG_CAMPO,TECLA)
Return Temp

EndProc ;SD_DialogRef

;*******************************************************************************
;* Rotina para Localizar Item                                                  *
;*******************************************************************************
Proc ChaveI()
Moveto "ConfNEi"

While True
  Calc_Itens()
  
  Moveto [Codigo do Item]
  End Down

  SetaCorRegistro("Editar")
  While True

    TECLA    = "F1=Tabelas  F7=Paginar  Alt+F=Fun‡”es  PgDn=Finalizar  "
    MSGCAMPO = "F2=Ativa Lan‡amento  "

    Prompt TECLA

    Wait Field
         Until "ESC","ENTER","F7","HOME","UP","PGUP","PGDN",-33,"F5","F9","F2","F1", "F6","F11",-133,"F8"

    If RetVal=-33
       Then Switch
              Case [ConfNEC->Numero da OC]<>"" : TIT = "Recarregar itens da Ordem de Compra"
              OtherWise                        : TIT = "Recarregar itens da Nota de Entrada"
            EndSwitch  
       
            Echo Normal
            Echo Off
            ShowPopup " Fun‡”es " CENTERED
              "F2  ~A~tiva lan‡amentos   " : " Ativa lan‡amentos                              " : "F2",
              "F5  ~R~ecarregar          " : TIT                                                : "F5",
              "F6  ~I~mprimir            " : " Imprimir Rela‡„o de Itens                      " : "F6",
              "F8  ~O~bserva‡äes          " : " Observa‡äes da Conferˆncia                     " : "F8",
              "F11 ~F~inalizar           " : " Finalizar Conferˆncia                          " : "F11",
              "~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="F2":
         Del
         CDBarras()
         QuitLoop   
    Case Retval="F5":
         Del
         Carrega_Itens()
         QuitLoop
    Case RetVal="F6" :
         Del
         If IMPRIME()
            Then FACA_CHAVEI =False
                 FACA_DIGITAC=False
                 CHAVEI=9
                 Return
                 Quitloop
            Else Quitloop 
         EndIf
         
    Case Retval="F8":
         CampoAnterior=Field()
         Moveto "ConfNEC"
         Moveto [Observacao]
         Edita_Memo("Observacao",10,01,13,76,"Observa‡”es")

         Moveto "ConfNEI"
         Moveto Field CampoAnterior
         QuitLoop
         
    Case Retval="PGDN":
         Del
         Moveto [Codigo do Item]
         If RecordStatus("New")=True
            Then MENSAGEM("O controle de entrada deve ter pelo menos 1(um) Item Ok !")
                 Loop
         EndIf
         FACA_CHAVEI =False
         FACA_DIGITAC=False
         CHAVEI=9
         Return
    Case RetVal="F7" Or RetVal="UP" Or RetVal="PGUP" Or RetVal="HOME":
         While True
           PAGINA("ConfNEi","MR")
           If EDITAR="S"
              Then CHAVEI=0
                   CODIT =[Codigo do Item]
                   Controla_EdicaoI()
              Else If EXCLUIR="S" 
                      Then MSG =       Completa("Deseja excluir o item: ",64," ")+"////"
                           MSG = MSG + Completa("- "+[Codigo do Item]+" "+[Descricao do Item],64," ")+"//"
                           If [Quantidade_Conferencia]>0
                              Then MSG = MSG + Completa("- Quantidade -> "+StrVal([Quantidade_Conferencia]),64," ")+"//"
                              Else MSG = MSG + Completa("- SEM QUANTIDADE INFORMADA",64," ")+"//"
                           EndIf   
                           MSG = MSG + Completa("Continuar com este processo?",64," ")
                           If ConfGeral(MSG)
                              Then CHAVEI=8
                                   EXCLUSAO_I()
                                   Calc_Itens()
                              Else UnLockRecord
                           EndIf
                      Else QuitLoop
                   EndIf
           EndIf
           SetaPosForm()
         EndWhile
         QuitLoop
         
    Case Retval="ESC":  
         Del
         Moveto [Codigo do Item]
         If RecordStatus("New")=True
            Then If QuerExcluir("")
                    Then FACA_CHAVEI =False
                         FACA_DIGITAC=False
                         CHAVEC=8
                    Else Loop
                 EndIf         
         EndIf   
         CHAVEI=9
         Return
         
    Case Retval="F11" or retval=-133:
         Del
         Moveto [Codigo do Item]
         If RecordStatus("New")=True
            Then MENSAGEM("O controle de entrada deve ter pelo menos 1(um) Item Ok !")
                 Loop
         EndIf
         Moveto "ConfNEC"
         [Situacao da Conferencia]="FINALIZADA"
         [Data_Liberacao]=Today()
         [Hora_Liberacao]=Time()

         FACA_CHAVEI =False
         FACA_DIGITAC=False
         CHAVEI=9

         Return
   Case Retval="ENTER": 
        ;CODIT=[Codigo do Item]
        ;Del
        ;Locate CONTCONF,CODIT
        ;If Retval
        ;   Then CHAVEI=0
        ;        CODIT=[]
        ;   Else CHAVEI=1
        ;        End
        ;        Down
        ;        [Numero do CC  ]=CONTCONF
        ;        [Codigo do Item]=CODIT
        ;        UnLockRecord
        ;        Locate CONTCONF,CODIT
        ;EndIf
        ;Return 
    EndSwitch
  EndWhile
EndWhile
EndProc   ; (ChaveI)



;*******************************************************************************
;* Rotina de Impressao                                                         *
;*******************************************************************************
Proc IMPRIME()
Private OPCAOC

Moveto "ConfNEc"
Echo Normal
Echo Off
ShowPopup " Impress„o " CENTERED
  "Quantidade do Controle de Entrada         " : " Imprime Rela‡„o de Itens do Controle de Entrada          " : "IRP",
; "Quantidade Pendente do Controle de Entrada" : " Imprime Rela‡„o de Itens Pendentes do Controle de Entrada" : "IRPP",
  Separator,
  "~C~ancelar                                " : " Cancelar a Opera‡„o                                      " : "Cancelar" 
EndMenu
To Opcaoc
echo off

If OPCAOC="Cancelar" or OPCAOC="Esc"
   Then Return false
EndIf

If Opcaoc="IRP"
   Then Opcaoc="IRPMS"
        
       Do_It!
       Dispositivo()
       If OK=""
          Then CoEditKey
               Return False
       EndIf
       Play(PARAM_CONF_E_IMP_SIMPLES)
EndIf

If Opcaoc="IRPP" 
   Then Opcaoc="IRPPMS"
        Do_It!
        Dispositivo()
        If OK=""
           Then CoEditKey
                Return False
        EndIf
        Play(PARAM_CONF_P_IMP_SIMPLES) 
EndIf
Do_It!
ClearAll

CoEdit NoWindow "ConfNEc"
PickForm "1"
Moveto "\\Sistemas\\Estoque\\Itens" SetaCorRegistro("Invisivel")
Moveto "INEI"                       SetaCorRegistro("Invisivel")
Moveto "ConfNEc"

Return True

EndProc ;Imprime


;*******************************************************************************
;* Rotina de Controle p/ ShowDialog                                            *
;*******************************************************************************
Proc Item_Dialog(Disparo,Campo,Evento,Elemento)
private Disparo,Campo,Evento,Elemento, Temp  
Temp=True

If Disparo="EVENT" And DynArraySize(Evento)>0 And Evento["Type"]="KEY" Then
   Switch
      Case Evento["KeyCode"] = 9:
           Temp=False
      Case Evento["KeyCode"] = -59: 
           If Campo="I_UnItem"       
              Then Dynarray WinArray5[]
                   Window Handle Dialog to JANELA
                   Window GetAttributes JANELA To WinArray5
                   WinArray5["FLOATING"]=False
                   Window SetAttributes JANELA From WinArray5

                   If Campo="I_UnItem"          Then Moveto [Unidade_Conferencia]      EndIf

                   If ConsultaF1()
                      Then If Campo="I_UnItem"
                              Then VSD_UnItem =Reg_ConsultaF1["Sigla da Unidade"]
                           EndIf
                   endif

                   Window Select JANELA
                   WinArray5["FLOATING"]=True
                   Window SetAttributes JANELA From WinArray5

                   echo Normal
                   echo off

                   RefreshDialog
           endif
           Temp=False
           
      Case Evento["KeyCode"] = 27:
           Temp=False
           Switch
             Case Campo="I_UnItem"     : Undo
                                         CancelDialog
             Case Campo="I_ObsItem"    : Campo="I_UnItem"
           EndSwitch
      Case Evento["KeyCode"] = 13:
           Switch
              Case Campo="I_UnItem" :
                   VSD_UnItem=ControlValue("I_UnItem")

                   getrecord "\\Sistemas\\estoque\\itens"  [Codigo do Item] to regitens   
                   if retval
                      Then if VSD_UnItem=regitens["Unidade Entrada"] or
                              VSD_UnItem=regitens["Unidade Interna"]
                              then Campo="I_ObsItem"     
                              else fastmsg("Unidade inv lida !")
                           endif
                   EndIf
                           
              Case Campo="I_ObsItem" :
                   VSD_ObsItem=ControlValue("I_ObsItem")
                   AcceptDialog
           EndSwitch
           Temp=False
   EndSwitch
EndIf

SelectControl Campo
TECLA=" Esc=Retornar  "
If Campo="????"
   Then TECLA=TECLA+"            "
   Else TECLA=TECLA+"            "
EndIf

Switch
  Case Campo="I_UnItem" : MSGCAMPO="Unidade de Conferˆncia, [F1]Consultar tabela"
  OtherWise             : MSGCAMPO=""
EndSwitch

MontaRodapeSD(MSGCAMPO, TECLA)
Mouse Hide
RefreshDialog

Return Temp
EndProc     ;  (Item_Dialog)

;*******************************************************************************
;* Roitina Digita dados Item                                                   *
;*******************************************************************************
Proc DigitaI()

VSD_UnItem =[Unidade_Conferencia]
VSD_ObsItem=[Observacao         ]

Echo Normal
Echo Off

Showdialog "Item "+[Codigo do Item]+" "+[Descricao do Item] Proc "Item_Dialog"
   Trigger "OPEN","ARRIVE"
    Key "F1","TAB","ENTER","ESC"
     @ 10,02 height 04 width 75

   Label  @ 0,00 "Unidade" For "I_UnItem"
   Accept @ 1,01 Width 07 "A4" picture "!*!" Tag "I_UnItem" to VSD_UnItem

   Label  @ 0,08 "Observa‡Æo" For "I_ObsItem"
   Accept @ 1,09 Width 63 "A100" picture "!*!" Tag "I_ObsItem" to VSD_ObsItem

Enddialog
If retval
   then [Unidade_Conferencia]=VSD_UnItem
        [Observacao         ]=VSD_ObsItem
        UnLockRecord
endif
   
Echo Off
Mouse Show

EndProc    ;  (ObsItem)

;*******************************************************************************
;* Rotina para Leitura do Codigo de Barras                                     *
;*******************************************************************************
Proc CDBarras()
Private cc          
 
While True
  Moveto [Quantidade_Conferencia]
  
  If Not Ler_CDBarras(22,00)
     Then Return False
  EndIf

  CODIT=Dados_Item
  ITOK=True
  INCLUI=False  
  
  Moveto "\\Sistemas\\Estoque\\Itens"
  If Len(CODIT)<=10
     Then Moveto [Codigo do Item]
          Locate ALINHM(CODIT,10)
     Else Moveto [Codigo de Barras]
          Locate IndexOrder by "cod_barras" CODIT
  EndIf
  
  If RetVal
     Then CopyToArray REG_BUSCA_LOOKUP
          CODIT=[Codigo do Item   ]
          If [Inativo]="S"
             Then Mensagem("Este item: //"+[Codigo do Item]+"//"+[Descricao do Item]+"// // esta inativo !")
                  ITOK=False
          EndIf
     Else KeyPress "ESC"
          If Codigo_Barras2(CODIT,"S")
             Then CODIT = CODIGO_BARRA2
                  Moveto "\\Sistemas\\Estoque\\Itens"
                  Moveto [Codigo do Item]
                  Locate CODIT
                  If RetVal
                     Then CopyToArray REG_BUSCA_LOOKUP
                          If [Inativo]="S"
                             Then Mensagem("Este item: //"+[Codigo do Item]+"//"+[Descricao do Item]+"// // esta inativo !")
                                  ITOK=False
                          EndIf
                  EndIf           
             Else ITOK  = False
          EndIf    
  EndIf
  Moveto "ConfNEi"

  If Not ITOK
     Then Loop
  EndIf

  ITOK=True
  Moveto [Codigo do Item]
  Locate CODIT
  If Not RetVal
      Then ACHOU_ITEM = False    
      Else ACHOU_ITEM = True              
  EndIf
  
  If Not ACHOU_ITEM
     Then If Dados_QTD<0
             Then Mensagem("Item n„o localizado nesta rela‡„o!")
                  Loop
          EndIf        
     
          If Not IsBlank([ConfNEc->Numero do Lancamento]) Or Not IsBlank([ConfNEc->Numero da OC]) And Dados_QTD>0
             Then MSG =       Completa("Nesta rela‡„o n„o tem o item informado !",64," ")+"// //"
                  MSG = MSG + Completa("Item: "+REG_BUSCA_LOOKUP["Referencia"]+" - "+REG_BUSCA_LOOKUP["Descricao do Item"]+" - "+CODIT,64," ")+"////"
                  MSG = MSG + Completa("Confirma inclus„o deste Item ?",64," ")
             	    ConfGeral(MSG)
                  If OK<>"S"
                     Then Loop
                  EndIf
          EndIf       
  EndIf    
  
  If Dados_QTD>0
     Then If Not ACHOU_ITEM
             Then End Down 
                  [Codigo do Item] = CODIT              
          EndIf
     Else If [Quantidade_Conferencia]+Dados_QTD<0
             Then Mensagem("Quantidade informada ‚ menor que a quantidade da conferˆncia!")
                  Loop
          EndIf   
	EndIf
	
	[Quantidade_Conferencia]=[Quantidade_Conferencia]+Dados_QTD
	Acerta_Item() 
 
  Calc_Itens()
  Moveto [Codigo do Item]      
  Locate CODIT
  
EndWhile

EndProc

;*******************************************************************************
;* Rotina para Calculos                                                        *
;*******************************************************************************
Proc Acerta_Item()

[Quantidade_Diferenca]=[Quantidade_Conferencia]-[Quantidade_NE]

If [Quantidade_Diferenca]=0
  Then [Quantidade_Diferenca]=BlankNum()
EndIf
If [Quantidade_Diferenca]>0
   Then [Quantidade_Fora_NE]=[Quantidade_Diferenca]
   Else [Quantidade_Fora_NE]=BlankNum()
EndIf
If [Quantidade_Conferencia]=0
  Then [Quantidade_Conferencia]=BlankNum()
EndIf
If IsBlank([ConfNEc->Numero do Lancamento]) And IsBlank([ConfNEc->Numero da OC])
   Then [Quantidade_Diferenca  ]=BlankNum()
        [Quantidade_Fora_NE    ]=BlankNum()
Endif   

AUX_UND = "C" ;Unidade Fiscal
GetRecord "\\Sistemas\\Estoque\\Itens" [Codigo do Item] To REG_ITEM
If Retval
   Then Switch
          Case AUX_UND="I" : UNID = REG_ITEM["Unidade Interna"]
          OtherWise        : UNID = REG_ITEM["Unidade Fiscal"]
        EndSwitch
        [Unidade_Conferencia] = UNID 
EndIf

UnLockRecord
Moveto [Codigo do Item]
Locate CODIT

EndProc ;Acerta_Item()

;*******************************************************************************
;* Rotina para Calculos                                                        *
;*******************************************************************************
Proc Calc_Itens()

Moveto "ConfNEi"
Moveto [Quantidade_Conferencia] VSQTDE  =ImageCSum() 

If VSQTDE =0 Then VSQTDE =BlankNum() EndIf

Moveto "ConfNEc"
[Quantidade_Conferencia]=VSQTDE

Moveto "ConfNEi"

EndProc ;Calc_Itens()

;*******************************************************************************
;* Rotina para Entrada Rapida por Codigo de Barras                             *
;*******************************************************************************
Proc ChaveCdBar()
Moveto "ConfNEi"
FACA_DIGITAF=True
Return

EndProc   ; (ChaveCdBar)

;*******************************************************************************
;* Exclusao da Cabeca                                                          *
;*******************************************************************************
Proc EXCLUSAO_C()
Moveto "ConfNEi"
While RecordStatus("New")=False
  EXCLUSAO_I()
EndWhile
Moveto "ConfNEc"
Del
EndProc   ; (Exclusao_C)

;*******************************************************************************
;* Exclusao do Item                                                            *
;*******************************************************************************
Proc EXCLUSAO_I()
Moveto "ConfNEi"
CODIT=[Codigo do Item]
Del
EndProc  ; (Exclusao_I)

;*******************************************************************************
;* Rotina para Carregar os Itens                                               *
;*******************************************************************************
Proc Carrega_Itens()
Private codite, MenuVar, QTD, UNID
             
MSGCAMPO=""             
             
Echo Normal
Echo Off
ShowPopup " Selecione a Unidade para Conferˆncia " CENTERED
  "~C~ompra   " : " Unidade de Compra, conforme documento          " : "C",
  "~I~nterna  " : " Unidade Interna, conforme controle de estoque  " : "I",
  "~C~ancelar " : " Cancelar a Opera‡„o                            " : "CANCELAR"
EndMenu
To MenuVar
echo off
If MenuVar="CANCELAR" or MenuVar="Esc"
   Then return False
EndIf

Moveto "ConfNEi"
If RecordStatus("New")=True
   Then Del
   Else Scan
          [Quantidade_NE]=BlankNum()
        EndScan
EndIf        

Switch
  Case  [ConfNEc->Numero da OC]<>"" :   
        Moveto "\\Sistemas\\Compras\\OCI"
        Moveto [Numero da OC]
        Locate [ConfNEc->Numero da OC]
        If Not RetVal
           Then Moveto "ConfNEi"
                Return
        EndIf
        While [Numero da OC] = [ConfNEc->Numero da OC]
          GetRecord "\\Sistemas\\Compras\\OCI" [Numero da OC],[Item da OC] To REG_OCI
          Switch
            Case Menuvar="C": UNID = REG_OCI["Unidade Fiscal"]
                              QTD  = REG_OCI["Quantidade"]
            Case Menuvar="I": UNID = REG_OCI["Unidade Interna"]
                              VSD_I_Fator_Conversao = REG_OCI["Fator de Conversao"]
                              If VSD_I_Fator_Conversao<1
                                 Then VSD_I_Quantidade_Convertida = Round(REG_OCI["Quantidade"]*VSD_I_Fator_Conversao,3)
                                 Else VSD_I_Quantidade_Convertida = REG_OCI["Quantidade"]*VSD_I_Fator_Conversao
                              EndIf
                              QTD=VSD_I_Quantidade_Convertida 
          EndSwitch
 
          If QTD>0
             Then GetRecord "\\Sistemas\\Estoque\\Itens" REG_OCI["Codigo do Item"] To REG_ITEM
                  Moveto "ConfNEi"
                  Moveto [Codigo do Item]
                  Locate REG_OCI["Codigo do Item"]
                  If Not RetVal
                     Then End Down
                          [Codigo do Item   ]=REG_OCI["Codigo do Item"]
                          [Referencia       ]=REG_ITEM["Referencia"]
        						 Else codite=[Codigo do Item]
        								  [Codigo do Item   ]=""
        								  [Codigo do Item   ]=codite
        								  [Referencia       ]=REG_ITEM["Referencia"]
        					EndIf        
                  [Quantidade_NE      ]=[Quantidade_NE]+QTD
                  [Unidade_Conferencia]=UNID
                  UnLockRecord
                
                  Moveto "\\Sistemas\\Compras\\OCI"
          EndIf
          Skip
          If EOT() Then QuitLoop Endif
        EndWhile
  Case  [ConfNEc->Numero do Lancamento]<>"" :
        Moveto "INEI"
        Moveto [Numero do Lancamento]
        Locate [ConfNEc->Numero do Lancamento]
        If Not RetVal
           Then Moveto "ConfNEi"
                Return
        EndIf
        While [Numero do Lancamento]=[ConfNEc->Numero do Lancamento]
        
          switch
            case Menuvar="C": UNID=[INEI->Unidade Fiscal ]  QTD=[INEI->Quantidade           ]
            case Menuvar="I": UNID=[INEI->Unidade Interna]  QTD=[INEI->Quantidade Convertida]
          endswitch 
        
          QTD=[INEI->Quantidade]
          If QTD>0
             Then GetRecord "\\Sistemas\\Estoque\\Itens" [INEI->Codigo do Item] To REG_ITEM
                  Moveto "ConfNEi"
                  Moveto [Codigo do Item]
                  Locate [INEI->Codigo do Item]
                  If Not RetVal
                     Then End Down
                          [Codigo do Item     ]=[INEI->Codigo do Item]
                          [Referencia         ]=REG_ITEM["Referencia"]
        						 Else codite=[Codigo do Item   ]
        								  [Codigo do Item     ]=""
        								  [Codigo do Item     ]=codite
        								  [Referencia         ]=REG_ITEM["Referencia"]
        					EndIf        
                  [Quantidade_NE      ]=[Quantidade_NE]+QTD
                  [Unidade_Conferencia]=UNID
                  UnLockRecord
                
                  Moveto "INEI"
          EndIf  
          Skip
          If EOT() Then QuitLoop Endif
        EndWhile
  OtherWise     :     
        Moveto "NotaI"
        Moveto [Codigo da Empresa]
        Locate [ConfNEc->Codigo da Empresa],[ConfNEc->Numero do Documento],[ConfNEc->Serie do Documento]
        If Not RetVal
           Then Moveto "ConfNEi"
                Return
        EndIf
        While [Codigo da Empresa  ]=[ConfNEc->Codigo da Empresa  ] And
              [Numero do Documento]=[ConfNEc->Numero do Documento] And
              [Serie do Documento ]=[ConfNEc->Serie do Documento ]

          switch
            case Menuvar="C": UNID=[INEI->Unidade Fiscal ]  QTD=[NotaI->Quantidade           ]
            case Menuvar="I": UNID=[INEI->Unidade Interna]  QTD=[NotaI->Quantidade Convertida]
          endswitch 

          If QTD>0
             Then GetRecord "\\Sistemas\\Estoque\\Itens" [NotaI->Codigo do Item] To REG_ITEM
                  Moveto "ConfNEi"
                  Moveto [Codigo do Item]
                  Locate [NotaI->Codigo do Item]
                  If Not RetVal
                     Then End Down
                          [Codigo do Item   ]=[NotaI->Codigo do Item]
                          [Referencia       ]=REG_ITEM["Referencia"]
        						 Else codite=[Codigo do Item   ]
        								  [Codigo do Item   ]=""
        								  [Codigo do Item   ]=codite
        								  [Referencia       ]=REG_ITEM["Referencia"]
        					EndIf        
                  [Quantidade_NE      ]=[Quantidade_NE]+QTD
                  [Unidade_Conferencia]=UNID
                  UnLockRecord
                
                  Moveto "NotaI"
          EndIf   
          Skip
          If EOT() Then QuitLoop Endif
        EndWhile
EndSwitch

Moveto "ConfNEi"
Scan
  CODIT=[Codigo do Item]
  Acerta_Item()   
EndScan
Calc_Itens()      

Moveto "ConfNEc"
If [ConfNEc->Numero do Lancamento] <> ""
   Then GetRecord "INEC" [ConfNEc->Numero do Lancamento] To REG_NE
        If [Codigo do Representante]<>REG_NE["Codigo do Representante"] Then [Codigo do Representante]=REG_NE["Codigo do Representante"] EndIf
        If [Nome Fantasia Represent]<>REG_NE["Nome Fantasia Represent"] Then [Nome Fantasia Represent]=REG_NE["Nome Fantasia Represent"] EndIf
   Else GetRecord "\\Sistemas\\Compras\\Occ" [ConfNEc->Numero da OC] To REG_NE
        [Codigo do Representante]=""
        [Nome Fantasia Represent]=""
EndIf   
If [Codigo da Empresa      ]<>REG_NE["Codigo da Empresa"]       Then [Codigo da Empresa      ]=REG_NE["Codigo da Empresa"]       EndIf
If [Nome Fantasia Empresa  ]<>REG_NE["Nome Fantasia Empresa"]   Then [Nome Fantasia Empresa  ]=REG_NE["Nome Fantasia Empresa"]   EndIf
If [Codigo                 ]<>REG_NE["Codigo"]                  Then [Codigo                 ]=REG_NE["Codigo"]                  EndIf
If [Razao Social           ]<>REG_NE["Razao Social"]            Then [Razao Social           ]=REG_NE["Razao Social"]            EndIf

Moveto "ConfNEi"

Return True

EndProc ; (Carrega_NE)

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

PARAM_CONF_E_IMP_SIMPLES = "CCNE_000"
PARAM_CONF_P_IMP_SIMPLES = "CCNE_F01"

;PARAM_CONF_E_IMP_SIMPLES = "CCNE_001"

Return True

EndProc ; (Carrega_Parametros)

;*******************************************************************************
;* Rotina para controlar Edicao do registro                                    *
;*******************************************************************************
Proc Controla_EdicaoI()
DIGITAI()
Calc_Itens()
EndProc

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

While FACA_DIGITAC
  DIGITAC()
  If CHAVEC=9 Then QuitLoop EndIf
  If CHAVEC=1
     Then Controle_Dia()
          [Situacao da Conferencia]="EM ABERTO"
          If Not Carrega_Itens() 
             Then INICIO_PAGINA=True 
                  Loop 
          EndIf
  EndIf
  While FACA_CHAVEI
    While True
      CHAVEI()
      If CHAVEI=9 Then QuitLoop EndIf
      Controla_EdicaoI()
    EndWhile
  EndWhile
EndWhile
Moveto "ConfNEc" 
If CHAVEC=8 Then EXCLUSAO_C() EndIf
                
If RecordStatus("Locked") Then UnLockRecord EndIf         
If OPCAO_FORM="F"
   Then PickForm "F"
EndIf

SaveTables
EndProc

;*******************************************************************************
;* Rotina Principal Emissao Nota Fiscal ou Romaneio                            *
;*******************************************************************************
AutoLib="\\Sistemas\\Cadastro\\Bibliot,\\Sistemas\\Cadastro\\Bib_Show"
SYS_VALOR()
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_CLIENTE_CONFEC)  Then SYS_CLIENTE_CONFEC=""   EndIf
If Not IsAssigned(SYS_CONTROLE_DIA)    Then SYS_CONTROLE_DIA  =""   EndIf
If Not IsAssigned(SYS_VERSAO_SO)       Then SYS_VERSAO_SO="Windows" EndIf
If Not IsAssigned(NOMEMPRESA)          Then NOMEMPRESA=""           EndIf

If SYS_CODIGO_CLIENTE="0274"
   Then PARAM_REFERENCIA = True
   Else PARAM_REFERENCIA = False  
EndIf   

CoEdit NoWindow "ConfNEc"

;************** Rotina para tratar o erro de tabela locada ********************
If ErrorCode()=4
   Then Do_It!
        ClearAll
        Release Vars All
        Release Procs All
        return
EndIf

PickForm "1"
Moveto "\\Sistemas\\Estoque\\Itens" SetaCorRegistro("Invisivel")
Moveto "INEI"                       SetaCorRegistro("Invisivel")
Moveto "ConfNEi"                    SetaCorRegistro("Padrao")
Moveto "ConfNEc"
Moveto "\\Sistemas\\Compras\\OCI" SetaCorRegistro("Invisivel")
Moveto "ConfNEc"
PickForm "F"
OPCAO_FORM        = "F"

While True
  CHAVEC()
  If CHAVEC=9 Then QuitLoop EndIf
  If CHAVEC=5
     Then If OPCAO_FORM="F"
             Then PickForm "F"
             Else PickForm "1"
          EndIf
          Loop
  EndIf
  Controla_EdicaoC()
EndWhile
Do_It!
ClearAll
Release Vars All
Release Procs All
