;** FT_XML *********************************************************************
;*  Entrada de Nota por XML Temporario                                         *
;*******************************************************************************
;Autor           : Vise Informatica (VISERP)
;Desenvolvido  em: 20/12/2016 por Anivel Augusto Rodrigues
;Ultima Alteracao: 10/02/2017 por Anivel Augusto Rodrigues
;Motivo Alteracao: ajustes data de entrada
;Ultima Alteracao: 08/12/2017 por Anivel Augusto Rodrigues
;Motivo Alteracao: ajustes QTDCONV,QUANT,CTTOTAL =BlankNum()
;Ultima Alteracao: 12/01/2018 por Kamila Gomes
;Motivo Alteracao: Ajuste removido Sys_Valor e Sys_Data
;Ultima Alteracao: 28/02/2017 por Anivel Augusto Rodrigues
;Motivo Alteracao: ajustes atualizar ordem de compra
;Ultima Alteracao: 13/03/2018 por Anivel Augusto Rodrigues
;Motivo Alteracao: ajustes data limite desconto      

;*******************************************************************************
;* ROTINA                                                                      *
;*******************************************************************************
Proc ExcluirINE(NL)
private NL, wi

for wi from 1 to 6
  switch
    case wi=1 : moveto "inec" 
    case wi=2 : moveto "inei" 
    case wi=3 : moveto "inecv" 
    case wi=4 : moveto "inecp" 
    case wi=5 : moveto "iner" 
    case wi=6 : moveto "ineia" 
  endswitch

  switch
    case wi=6 : moveto [Numero_do_Lancamento]
    otherwise : moveto [Numero do Lancamento] 
  endswitch
  locate VSDGNEI
  if retval
     then 
          switch
            case wi=6 : 
              while [Numero_do_Lancamento]=VSDGNEI
                Del
              endwhile
            otherwise :  
              while [Numero do Lancamento]=VSDGNEI
                Del
              endwhile
          endswitch
  endif   
endfor 

FechaINE()

Endproc ;XML_Atualiza_Situacao_Compra()

;*******************************************************************************
;* ROTINA                                                                      *
;*******************************************************************************
Proc FechaINE()

Do_It!
moveto "\\Sistemas\\Compras\\OCI" ClearImage
moveto "\\Sistemas\\Compras\\OCC" ClearImage
moveto "INEC"  ClearImage
moveto "INEI"  ClearImage
moveto "INECV" ClearImage
moveto "INECP" ClearImage
moveto "INER"  ClearImage
moveto "INEIA" ClearImage

endproc

;*******************************************************************************
;* ROTINA                                                                      *
;*******************************************************************************
Proc SelecionaXML()
private reginec, reginei, reginecv, reginecp, regineia, reginer, MSG

Aguarde("Processando Nota de Entrada")

View NOWINDOW  "\\Sistemas\\Compras\\OCI"
View NOWINDOW "\\Sistemas\\Compras\\OCC"
View NOWINDOW "INEC"
View NOWINDOW "INEI"
View NOWINDOW "INECV"
View NOWINDOW "INECP"
View NOWINDOW "INER"
View NOWINDOW "INEIA"

;-- Nota -----------------------------------------------------------------------
CoeditKey
moveto "INEC"
moveto [Numero do Lancamento]
locate VSDGNEI
if not retval
   then 
        Mensagem("Nota XML nÆo localizada !")
        FechaINE()
        return false
   else 
        copytoarray reginec
   
        moveto "Notaec"
        moveto [Chave_Acesso_NFe]
        locate reginec["Chave_Acesso_NFe"]
        if retval
           then MSG="Nota de Entrada j  existe !// //" 
                MSG=MSG+"Pessoa: "+format("W44,AL",reginec["Razao Social"       ])+"//" 
                MSG=MSG+"Docto : "+format("W44,AL",reginec["Numero do Documento"])+"//" 
                MSG=MSG+"Chave : "+format("W44,AL",reginec["Chave_Acesso_NFe"   ])+"//"
                MSG=MSG+"Deseja excluir esta Nota XML do Sistema ?"
                if ConfGeral(MSG)
                   then ExcluirINE(VSDGNEI)
                        Return False
                endif        
        endif
   
        While True
         End
         Moveto [Numero do Lancamento]       
         If Numero_Lancamento("Interno","")
            Then LANCTO = PROXLANCTO_NLANC
                 Release Vars PROXLANCTO_NLANC
         EndIf
         Down
         [Numero do Lancamento     ]=LANCTO
         If Not IsLockRecord()
            Then QuitLoop
         EndIf
        EndWhile
        reginec["Numero do Lancamento"]=LANCTO
        reginec["Data de Entrada"     ]=VSDGDTREF
        copyfromarray reginec
        Controle_Dia()
        [Modo_Sistema]="02" 
        unlockrecord
   
        if not Carrega_Parametros()
           then 
                del
                FechaINE()
                return false
        endif
        
        CHAVEC=1
           
endif

;-- Itens ----------------------------------------------------------------------
moveto "inei"
moveto [Numero do Lancamento]
locate VSDGNEI
if retval
   then while [Numero do Lancamento]=VSDGNEI
   
          copytoarray reginei
           
          moveto "NotaEI"
          end
          Down
          reginei["Numero do Lancamento"]=LANCTO
          copyfromarray reginei
          unlockrecord
          
          moveto "inei"
          skip
          if eot() then quitloop Endif
        endwhile
endif        

;-- Itens - Informa‡äes adicionais ---------------------------------------------
moveto "ineia"
moveto [Numero_do_Lancamento]
locate VSDGNEI
if retval
   then while [Numero_do_Lancamento]=VSDGNEI
   
          copytoarray regineia
           
          moveto "NotaEIA"
          end
          Down
          regineia["Numero_do_Lancamento"]=LANCTO
          copyfromarray regineia
          unlockrecord
          
          moveto "ineia"
          skip
          if eot() then quitloop Endif
        endwhile
endif        

;-- Documentos Referenciados ---------------------------------------------------
moveto "iner"
moveto [Numero do Lancamento]
locate VSDGNEI
if retval
   then while [Numero do Lancamento]=VSDGNEI
   
          copytoarray reginer
           
          moveto "NotaER"
          end
          Down
          reginer["Numero do Lancamento"]=LANCTO
          copyfromarray reginer
          unlockrecord
          
          moveto "iner"
          skip
          if eot() then quitloop Endif
        endwhile
endif        

;-- Financeiro -----------------------------------------------------------------
switch
  case [NotaEC->Tipo de Pagamento]="V":
    moveto "inecv"
    moveto [Numero do Lancamento]
    locate VSDGNEI
    if retval
       then 
            copytoarray reginecv
             
            moveto "NotaECV"
            end
            Down
            reginecv["Numero do Lancamento"]=LANCTO
            copyfromarray reginecv
            unlockrecord
            
    endif        
   
  case [NotaEC->Tipo de Pagamento]="P":
    moveto "inecp"
    moveto [Numero do Lancamento]
    locate VSDGNEI
    if retval
       then while [Numero do Lancamento]=VSDGNEI
       
              copytoarray reginecp
               
              moveto "NotaECP"
              end
              Down
              reginecp["Numero do Lancamento"]=LANCTO
              
              if reginecp["Valor do Desconto"]<=0
                 then reginecp["Data Limite Desconto"]=blankdate()
              endif   
              
              copyfromarray reginecp
              unlockrecord
              
              moveto "inecp"
              skip
              if eot() then quitloop Endif
            endwhile
    endif        

endswitch

SaveTables

ExcluirINE(VSDGNEI)

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

Moveto "NotaEC"
CoEditKey
Pickform "1"
LockRecord

Moveto "NOTAEI"
home
while [Numero do Lancamento]=[NotaEc->Numero do Lancamento]

  CHAVEI=1
  SEQIT =[Sequencia do Lancamento]

  Inicia_Registro()
  
  QTDCONV =BlankNum()
  QUANT   =BlankNum()
  CTTOTAL =BlankNum()
  
  Play "FT_CUSTO"
  
  ;;;;Tabela_Preco("IncAlt")
  
  Estoque()
  ATUA_COMPRA()
  
  Inicia_Registro() ; for‡ar localizar o registro novamente

  moveto "NotaEI"
  skip
  if eot() then quitloop Endif
endwhile


switch
  case [NotaEC->Tipo de Pagamento]="V":
    Moveto "NOTAECV"
    CHAVEAV=1
    Registro_AVista("Ler")
    CONTA()
   
  case [NotaEC->Tipo de Pagamento]="P":
    Moveto "NOTAECP"
    home
    while [Numero do Lancamento]=[NotaEc->Numero do Lancamento]
        
      CHAVEAP=1
      SEQ   =[Sequencia do Lancamento]
      Inicia_Registro_Venctos()
      Titulos()
      Inicia_Registro_Venctos() ; for‡ar localizar o registro novamente

      moveto "NOTAECP"

      skip
      if eot() then quitloop Endif
    endwhile
endswitch

Moveto "NotaEC"
CHAVEF=0
COTACAO()
COMPLEMENTO_NOTA("TRANSFERENCIA")

Moveto "NotaEC"

If OPCAO_FORM="F"
  Then PickForm "F"
  Else PickForm "1"
EndIf

return true
endproc

;*******************************************************************************
;* Rotina                                                                      *
;*******************************************************************************
Proc SD_Dialog_XML(Disparo,Campo,Evento,Elemento)
Temp=True
MSG_CAMPO=""
TECLA=""
If Disparo="OPEN"  Then AoCriarShowDialog() EndIf
If Disparo="EVENT" And Evento["Type"]="KEY" Then
   Switch
     Case Evento["KeyCode"] = 9  : Temp=False
     Case Evento["KeyCode"] = -59: Dialog_F1()
     Case Evento["KeyCode"] =  27:
          Temp=False
          Switch
            Case Campo="TG_NEI"       : Campo="NO"
            Case Campo="TG_DTREF"     : Campo="TG_NEI"
            Case Campo="YES" Or Campo="NO": Campo="TG_NEI"
          EndSwitch
     Case (Evento["KeyCode"] <= -104 And Evento["KeyCode"] >= -113) Or 
           Evento["KeyCode"]  = -139 Or  Evento["KeyCode"]  = -140:
           SYS_TECLA_ACIONADA=Evento["KeyCode"]
           Seta_Tecla_Acionada()
           CancelDialog
     Case Evento["KeyCode"] = 13:
          Temp=False
          If Checa_TAG()
             Then Switch
                    Case Campo="TG_NEI"        : Campo="TG_DTREF"
                    Case Campo="TG_DTREF"      : Campo="YES"
                  EndSwitch
          EndIf
          RefreshDialog
   EndSwitch
EndIf
Switch
  Case Campo="TG_NEI":
    MSG_CAMPO="Informe a nota xml"
  Case Campo="TG_DTREF":
    MSG_CAMPO="Informe a Data de Entrada para a nota xml"
  Case Campo="":
     MSG_CAMPO=""
EndSwitch
Monta_Prompt(MSG_CAMPO,TECLA)
Return Temp
EndProc

;*******************************************************************************
;* ROTINA PRINCIPAL                                                            *
;*******************************************************************************
Proc IMPXML()

Do_It!

LimpAguarde()

VSDGNEI   = ""
VSDGNOMNEI=""
VSDGDTREF = Today()

impxmlok  = false

While True

  ShowDialog "Informe a Nota XML para entrada" Proc "SD_Dialog_XML"
  Trigger "OPEN","ARRIVE"
  Key "F1","ENTER","ESC","TAB",
      -104, -105, -106, -107, -108, -109, -110, -111, -112, -113, -139, -140  
  @ 05,05   Height 07 Width 72

    Label  @ 00,00 "Nota XML"  For "TG_NEI"
    Accept @ 01,01 Width 33 "A6"  Picture "#*#" Tag "TG_NEI" To VSDGNEI
    Accept @ 01,09 Width 25 "A22" Picture "#*#" Tag "TG_NOMNEI" To VSDGNOMNEI

    Label  @ 00,35 "Data de Entrada" For "TG_DTREF"
    Accept @ 01,36 Width 13 "D"  Picture "#[#];.##;.##[##]" Tag "TG_DTREF" To VSDGDTREF

    Pushbutton @ 03,22 width 11 "~O~k"      OK     Default Value "Ok" Tag "YES" To BottonValue
    Pushbutton @ 03,36 width 11 "~C~ancela" CANCEL                    Tag "NO"  To BottonValue

  EndDialog
  If Not RetVal Then QuitLoop EndIf

  if isblank(VSDGNEI)   then fastmsg("Nota XML inv lida !")     loop endif
  if isblank(VSDGDTREF) then fastmsg("Data Entrada inv lida !") loop endif

  impxmlok=SelecionaXML()

  quitloop
  
endwhile

if not impxmlok
   then clearall
        Monta_Tabelas()
endif   

LimpAguarde()

endProc


;*******************************************************************************
;* Rotina Principal Notas de Entrada                                           *
;*******************************************************************************
;AutoLib="\\Sistemas\\Cadastro\\Bib_Show,\\Sistemas\\Cadastro\\Bibliot"
;LimpAguarde()
;SYS_VALOR()
;SYS_DATA()

IMPXML()

Release vars impxmlok
Release procs SD_Dialog_XML, IMPXML, SelecionaXML, ExcluirINE, FechaINE, XML_Atualiza_Compra,XML_Atualiza_Situacao_Compra
