;** EmitNp   *******************************************************************
;*  Emissao de Notas Promissorias                                              *
;*******************************************************************************
;Autor           : Vise Informatica (VISERP)
;Desenvolvido    : 12/04/1999 por Cl udio Ant“nio de Faria Santos
;Ultima Alteracao: 05/04/2006 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes
;Alterado em     : 29/06/2006 por Antonio Marcelo Alves
;Motivo Alteracao: Inclusao ImpriArq()
;Ultima Alteracao: 14/08/2007 por Antonio Marcelo Alves
;Motivo Alteracao: Ajustes Deleta_Arquivo
;Ultima Alteracao: 13/09/2011 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes Impressao MG Textil
;Ultima Alteracao: 18/04/2013 por Bruno Carvalho
;Motivo Alteracao: Ajustes p/ "DupI" [Codigo_Sacado]
;Ultima Alteracao: 14/12/2016 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes showdialog    
;Ultima Alteracao: 28/12/2016 por Rafael Matos
;Motivo Alteracao: Ajustes ShowDialog TG_DESTINAT               

;*******************************************************************************
;* Rotina p/ selecao de registros                                              *
;*******************************************************************************
Proc Seleciona()
AGUARDE("Aguarde, Selecionado Promissorias")
ClearAll

{Ask} {DupC} Check
Moveto [Codigo da Empresa  ] Example "CodE" TypeIn ", ~VSDGEMPRESA.."
Moveto [Numero do Documento] Example "CodD"
Moveto [Serie do Documento ] Example "CodS"
Moveto [Data de Emissao    ] TypeIn ">=~VSDGDTINI,<=~VSDGDTFIM"
Moveto [Situacao           ] TypeIn "Not C"
Moveto [Numero_Carregamento] TypeIn "~VSDGNCARREG.."
Moveto [Promissoria Emitida] TypeIn "Not S"
Moveto [Codigo             ] Check
{Ask} {DupI} 
Moveto [Codigo da Empresa  ] Example "CodE"
Moveto [Numero do Documento] Example "CodD"
Moveto [Serie do Documento ] Example "CodS"
Moveto [Codigo_Sacado      ] Check TypeIn "~VSDGDESTINAT.. ,as Codigo"
Do_It!
ClearAll     

If Not IsEmpty("Answer")
   Then CopyForm "DupC" "F" "Answer" "F"
EndIf
              
EndProc

;*******************************************************************************
;* Seleciona Titulos para Baixa
;*******************************************************************************
Proc CHAVE()
While True
  End
  Down
  Moveto [Codigo da Empresa]
  While True

    Prompt " Esc=Sair  F4=Imprimir  F5=Total  F7=Paginar  F8=Atualizar"

    Wait Field
         Until "ESC","ENTER","F7","HOME","UP","PGUP","F4","F5","F8"

    Switch
    Case RetVal="F5" And Field()="Codigo da Empresa":
         Moveto [Valor Nota Fiscal]
         VR=ImageCSum()
         Mensagem("Total = "+LTrim(Format("W13.2,EIC",VR)))
         Moveto [Codigo da Empresa]
    Case RetVal="F4" And Field()="Codigo da Empresa":
         Del
         Do_it!
         DispositivoI("FAT")
         Coeditkey
         If OK="" Then Loop EndIf
         IMPRIME()
         CHAVE=5
         QuitLoop
    Case RetVal="F8":
         CONFGERAL("Atualizar Promissorias como emitidas ?")
         If OK="S"
            Then AtualizaDup()
                 CHAVE=9
                 Do_It!
                 ClearAll
                 Quitloop
         Endif
    Case RetVal="F7" Or RetVal="UP" Or RetVal="PGUP" Or RetVal="HOME" And Field()="Codigo da Empresa":
         While True
           PAGINA("Answer","MR")
           If EDITAR="S"
              Then CHAVE=0
                   Return
              Else If EXCLUIR="S"
                      Then CONFIRMA()
                           If OK="S"
                              Then DEL
                              Else UnLockRecord
                           EndIf
                      Else QuitLoop
                   EndIf
           EndIf
         EndWhile
         CHAVE=5
         QuitLoop
    Case Retval="ESC":
         If Field()="Codigo da Empresa"
            Then CHAVE=9
                 Do_It!
                 ClearAll
                 Quitloop
         EndIf
    EndSwitch
  EndWhile
  If CHAVE=0 OR CHAVE=9
     Then QuitLoop
  EndIf
EndWhile
EndProc

;*******************************************************************************
;* Seleciona Registros para Atualizacao                                        *
;*******************************************************************************
Proc SELECIONAI()
Edit "Answer"
SetHighLight Current Record 23 Field 31
{Image} {KeepSet}
Do_It!
CoEdit "Answer"
PickForm "F"
While True
  CHAVE()
  If CHAVE=9
     Then QuitLoop
  EndIf
EndWhile
ClearAll
EndProc

;*******************************************************************************
;* Rotina de impress„o de Promissorias                                         *
;*******************************************************************************
Proc IMPRIME()
AGUARDE("Aguarde, Imprimindo Promissorias")
EMPRESA=""
Do_It!
ClearAll

ArqImp=PrivDir()+"NotaProm.Txt"
If IsFile(ArqImp)
   Then Deleta_Arquivo(ARQIMP)
EndIf

TIPO="PROM"
If Not IsEmpty("Numerodp")
   Then View "Numerodp"
        Locate VSDGEMPRESA,TIPO
        MSGPROM=[Mensagem]
        ClearAll
   Else MSGPROM=""
EndIf

Array NoNota[15]
Array VrNota[15]

Array NoOrdem[15]
Array DtVencto[15]
Array VrVencto[15]

View "\\Sistemas\\Cadastro\\Destinat"
View "\\Sistemas\\Cadastro\\Empresas"
View "NotaC"
View "DupNF"
View "DupI"
CoEdit "Answer"
Scan

   If (EMPRESA<>[Answer->Codigo da Empresa])
      Then Moveto "\\Sistemas\\Cadastro\\Empresas"
           Moveto [Codigo da Empresa]
           Locate [Answer->Codigo da Empresa]
           If RetVal
              Then EMPRESA=[Razao Social Empresa]
                   CNPJEMP=[CGC Empresa         ]
                   CIDEMP =[Cidade Empresa      ]
              Else EMPRESA=""
                   CNPJEMP=""
                   CIDEMP =""
           EndIf
   EndIf

   Moveto "\\Sistemas\\Cadastro\\Destinat"
   Moveto [Codigo]
   Locate [Answer->Codigo]
   If RetVal
      Then FONE=[Telefone]
      Else FONE=""
   EndIf

   For i from 1 to 15
      NoNota[i]=" "
      VrNota[i]=BlankNum()
      

      NoOrdem[i] =""
      DtVencto[i]=BlankDate()
      VrVencto[i]=BlankNum()
   EndFor

   VENDA_APRAZO=True
   Moveto "DupNF"
   Moveto [Codigo da Empresa]
   Locate [Answer->Codigo da Empresa], [Answer->Numero do Documento],[Answer->Serie do Documento]
   If Not Retval
      Then MENSAGEM("Duplicata Sem Nota referente !//N§ Duplicata "+[Answer->Codigo da Empresa]+"/"+[Answer->Numero do Documento])
           Moveto "Answer"
           Loop
      Else Moveto "NotaC"
           Moveto [Codigo da Empresa]
           Locate [DupNF->Codigo da Empresa], [DupNF->Numero da Nota], [DupNF->Serie da Nota]
           If Retval
              Then If [Tipo de Pagamento]="V" Then VENDA_APRAZO=False  EndIf
           EndIf

           Moveto "DupNF"
           wcn=1
           While [Codigo da Empresa  ]=[Answer->Codigo da Empresa  ] And
                 [Numero do Documento]=[Answer->Numero do Documento] And
                 [Serie do Documento ]=[Answer->Serie do Documento ]
             NoNota[wcn]=[Numero da Nota]
             VrNota[wcn]=[Valor da Nota Fiscal]
             wcn=wcn+1
             Skip
             If EOT() Then QuitLoop EndIf
           EndWhile
   EndIf

   Switch
     Case SYS_CODIGO_CLIENTE="0298":
        Moveto "DupI"
        Moveto [Codigo da Empresa]
        Locate [Answer->Codigo da Empresa],[Answer->Numero do Documento],[Answer->Serie do Documento ]
        If Not RetVal
          Then MENSAGEM("Duplicata Sem Desdobramentos !//N§ Duplicata "+[Answer->Codigo da Empresa]+"/"+[Answer->Numero do Documento])
               Moveto "Answer"
               Loop
        EndIf

        i2=0
        While  [Codigo da Empresa  ]=[Answer->Codigo da Empresa  ] And
               [Numero do Documento]=[Answer->Numero do Documento] And
               [Serie do Documento ]=[Answer->Serie do Documento ]
 
           i2=i2+1
           NoOrdem[i2] =[Ordem do Documento]
           DtVencto[i2]=[Data Vencimento   ]
           VrVencto[i2]=[Valor Duplicata   ]
 
           Moveto "DupI"
           Skip
           If EOT() Then QuitLoop EndIf
     
        EndWhile

        Moveto "Answer"
        AGUARDE("Aguarde, Imprimindo Promissoria N§ " + [Answer->Codigo da Empresa] + " - " + [Answer->Numero do Documento])
        Play PARAM_IMPRESSAO

     OtherWise:
       If SYS_CODIGO_CLIENTE="0159" 
          Then ArqImp=PrivDir()+"NP_0159A.Txt"
               If IsFile(ArqImp)
                  Then Deleta_Arquivo(ARQIMP)
               EndIf   
       EndIf
     
       Moveto "DupI"
       Moveto [Codigo da Empresa]
       Locate [Answer->Codigo da Empresa],[Answer->Numero do Documento],[Answer->Serie do Documento ]
       If Not RetVal
          Then MENSAGEM("Duplicata Sem Desdobramentos !//N§ Duplicata "+[Answer->Codigo da Empresa]+"/"+[Answer->Numero do Documento])
               Moveto "Answer"
               Loop
       EndIf
       While  [Codigo da Empresa  ]=[Answer->Codigo da Empresa  ] And
              [Numero do Documento]=[Answer->Numero do Documento] And
              [Serie do Documento ]=[Answer->Serie do Documento ]
          While True
               If Not PrinterStatus()
                  Then MENSAGEM("Impressora fora de linha ou desligada")
                       CONFGERAL("Continua impress„o ?")
                       If OK="S"
                          Then Loop
                          Else Do_It!
                               ClearAll
                               Return
                       EndIf
                  Else QuitLoop
               EndIf
          
          EndWhile
          AGUARDE("Aguarde, Imprimindo Promissoria N§ " + [Answer->Codigo da Empresa] + " - " + [Answer->Numero do Documento])
          Play PARAM_IMPRESSAO
    
          Moveto "DupI"
          Skip
          If EOT() Then QuitLoop EndIf
    
       EndWhile
   EndSwitch
   If SYS_CODIGO_CLIENTE="0159" 
      Then NUMCOPIA=1 
           ImpriArq(ARQIMP)
   EndIf
   
   Moveto "Answer"
   [Promissoria Emitida]="S"
   UnLockRecord

EndScan
Do_It!
ClearAll
;---- Imprime Arquivo Impressao ------------------------------------------------
ImpriArq(ARQIMP)


CoEdit "Answer"
PickForm "F"
LIMPAGUARDE()

EndProc  ; (Imprime)

;*******************************************************************************
;* Rotina p/ Atualizacao de Promissorias emitidas                                *
;*******************************************************************************
Proc AtualizaDup()
AGUARDE("Aguarde, Atualizando Promissorias Emitidas")
Do_It!
ClearAll

View "DupC"
Coedit "Answer"
Scan For [Promissoria Emitida]="S"
  Moveto "DupC"
  Moveto [Codigo da Empresa]
  Locate [Answer->Codigo da Empresa],
         [Answer->Numero do Documento],
         [Answer->Serie do Documento]
  If RetVal
     Then For i From 1 to 3
            If Not IsLockRecord()
               Then [Promissoria Emitida]="S"
                    UnLockRecord
                    QuitLoop
            EndIf
          EndFor
  EndIf

  Moveto "Answer"
EndScan
Do_It!
ClearAll

Mensagem("Atualiza‡„o concluida !")
LIMPAGUARDE()
EndProc

;*******************************************************************************
;* Rotina                                                                      *
;*******************************************************************************
Proc SD_Dialog(Disparo,Campo,Evento,Elemento)
Temp=True
MSG_CAMPO=""
TECLA=""
If Disparo="OPEN"  Then AoCriarShowDialog() EndIf
If Disparo="EVENT" And Evento["Type"]="KEY" Then
   Switch
     Case Evento["KeyCode"] = 9: Temp=False
     Case Evento["KeyCode"] = -59: Dialog_F1()
     Case Evento["KeyCode"] =  27:
          Temp=False
          Switch
            Case Campo="TG_EMPRESA"       : Campo="NO"
            Case Campo="TG_DESTINAT"      : Campo="TG_EMPRESA"
            Case Campo="TG_NCARREG"       : Campo="TG_DESTINAT"
            Case Campo="TG_DTINI"         : Campo="TG_NCARREG"
            Case Campo="TG_DTFIM"         : Campo="TG_DTINI"
            Case Campo="YES" Or Campo="NO": Campo="TG_EMPRESA"
          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_EMPRESA" :
                         If IsBlank(VSDGEMPRESA)
                            Then VSDGNOMEMP=""
                            Else Campo="TG_DESTINAT"
                         EndIf
                    Case Campo="TG_DESTINAT": Campo="TG_NCARREG"
                    Case Campo="TG_NCARREG" : Campo="TG_DTINI"
                    Case Campo="TG_DTINI"   :
                         If Not IsBlank(VSDGDTINI)
                            Then Campo="TG_DTFIM"
                         EndIf
                    Case Campo="TG_DTFIM"   :Campo="YES"
                  EndSwitch
          EndIf
          RefreshDialog
   EndSwitch
EndIf
Switch
  Case Campo="TG_EMPRESA":
     MSG_CAMPO="Informe uma Empresa"
  Case Campo="TG_DTINI":
     MSG_CAMPO="Informe a Data Inicial"
Endswitch
Monta_Prompt(MSG_CAMPO,TECLA)
Return Temp
EndProc

;*******************************************************************************
;* ROTINA PRINCIPAL                                                            *
;*******************************************************************************
AutoLib="\\Sistemas\\Cadastro\\Bib_Show,\\Sistemas\\Cadastro\\Bibliot"
LimpAguarde()

VSDGEMPRESA =""
VSDGDESTINAT=""
VSDGDTINI   =BlankDate()
VSDGDTFIM   =BlankDate()
VSDGNCARREG =""

While True

  ShowDialog "Emiss„o de Notas Promissorias" Proc "SD_Dialog"
  Trigger "OPEN","ARRIVE"
  Key "F1","ENTER","ESC","TAB",
      -104, -105, -106, -107, -108, -109, -110, -111, -112, -113, -139, -140  
   @ 05,12   Height 13 Width 72

    Label  @ 00,00 "Empresa"  For "TG_EMPRESA"
    Accept @ 01,01 Width 07 "A4"  Picture "[&,#][#*#]" Tag "TG_EMPRESA"    To VSDGEMPRESA
    Accept @ 01,09 Width 25 "A20" Picture "!*!" Tag "TG_NOMEMPRESA" To VSDGNOMEMP

    Label  @ 02,00 "Pessoa"  For "TG_DESTINAT"
    Accept @ 03,01 Width 07 "A4"  Picture "[&,#][#*#]" Tag "TG_DESTINAT" To VSDGDESTINAT
    Accept @ 03,09 Width 25 "A20" Picture "!*!" Tag "TG_NOMDEST"  To VSDGNOMDEST

    Label  @ 04,00 "Carregamento" For "TG_NCARREG"
    Accept @ 05,01 Width 9  "A6"  Picture "[&,#][#*#]" Tag "TG_NCARREG"    To VSDGNCARREG
    Accept @ 05,09 Width 25 "A20" Picture "!*!" Tag "TG_NOMNCARREG" To VSDGNOMNCARREG
                 
    Label  @ 06,00 "Per¡odo Referente de" For "TG_DTINI"
    Accept @ 07,03 Width 13 "D"  Picture "#[#];.##;.##[##]" Tag "TG_DTINI" To VSDGDTINI
    Label  @ 07,16 "at‚" For "TG_DTFIM"
    Accept @ 07,21 Width 13 "D"  Picture "#[#];.##;.##[##]" Tag "TG_DTFIM" To VSDGDTFIM

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

  EndDialog
  If Not RetVal Then QuitLoop EndIf

  If IsBlank(VSDGEMPRESA)
     Then Mensagem("Empresa Invalida !")
          Loop
  EndIf
  If IsBlank(VSDGDTINI)
     Then Mensagem("Data Inicial Invalida !")
          Loop
  EndIf
  If IsBlank(VSDGDTFIM)
     Then Mensagem("Data Final Invalida !")
          Loop
  EndIf

  View "P_Np"
  Moveto [Codigo_Empresa]
  Locate VSDGEMPRESA
  If RetVal
     Then PARAM_IMPRESSAO=[Impressao_Nota_Promis]
     Else Mensagem("Parƒmetros n„o cadastrado para esta empresa!")
          Loop
  EndIf     
  ClearAll

  MSGPROM=""
  View "DocMsg"
  Locate VSDGEMPRESA,"PROM"
  If RetVal
     Then MSGPROM=[Mensagem]
  EndIf
  ClearAll

  Seleciona()
  If IsEmpty("Answer")
     Then MENSAGEM("N„o Existem Promissorias para Emitir!")
          Loop
  EndIf
  SelecionaI()
  Echo Normal
  Echo Off

  ClearAll
  Delete "Answer"

EndWhile
ClearAll
Release Vars All
Release Procs All

