;** GDPadr3 ********************************************************************
;*  Geracao de Duplicatas - Numero Duplicata=Numero Nota *Cartao de Credito*   *
;*******************************************************************************
;Autor           : Vise Informatica (VISERP)
;Desenvolvido    : 16/02/2004 por Davi Pereira Carrano
;Alterado em     : 28/07/2004 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes Forma de Pagamento
;Alterado em     : 19/06/2007 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes Vencimento Cartao
;Alterado em     : 19/10/2007 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes Cupom        
;Ultima Alteracao: 05/12/2007 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes Doctos NF/ROM/DUP               
;Ultima Alteracao: 18/02/2008 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes gerar cartao debito
;Ultima Alteracao: 14/11/2008 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes Paramentros Empresa/Cartao
;Ultima Alteracao: 27/03/2009 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes P_Cartao
;Ultima Alteracao: 31/03/2009 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes Cartao Credito/Debito
;Ultima Alteracao: 05/04/2009 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes Conta<>Empresa
;Ultima Alteracao: 06/10/2010 por Karina
;Motivo Alteracao: Ajustes DUPLICATA() para Cupom
;Ultima Alteracao: 08/10/2010 por Karina
;Motivo Alteracao: Ajustes para Tipo de Documentos
;Ultima Alteracao: 20/04/2011 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes Serie Cupom Fiscal
;Ultima Alteracao: 09/09/2011 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes NFE pra todas as series
;Ultima Alteracao: 13/07/2012 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes X?-Cupom Fiscal para multiplos ECFïs
;Ultima Alteracao: 16/06/2016 por Bruno Carvalho 
;Motivo Alteracao: Adicionado Pega_Endereco() e ajustado dados do endere‡o de cobran‡a 
;Ultima Alteracao: 14/12/2016 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes showdialog                   
;Ultima Alteracao: 11/07/2017 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes CL=CartÆo Parcelado
;Ultima Alteracao: 07/03/2018 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes novos processos de visualiza‡Æo      
;Ultima Alteracao: 16/05/2018 por Bruno Carvalho
;Motivo Alteracao: Ajustes GetRecord "P_Fatura"

;*******************************************************************************
;* Rotina de Geracao de Duplicatas                                             *
;*******************************************************************************
Proc Seleciona()
AGUARDE("Aguarde, Processando Dados")
ClearAll

{Ask} {Destin}
Moveto [Codigo da Destinacao] Example "destin"
switch
  case SYS_CODIGO_CLIENTE="0121" : Moveto [Emite Duplicata] TypeIn "S"
  otherwise                      : Moveto [Gera Duplicata ] TypeIn "S"
endswitch

{Ask} {NotaC} Check
Moveto [Codigo da Destinacao   ] Example "destin"
Moveto [Codigo da Empresa      ] TypeIn "~VSDGEMPRESA.."
Moveto [Data de Emissao        ] TypeIn ">=~VSDGDTINI, <=~VSDGDTFIM"
Moveto [Situacao               ] TypeIn "Not C"
Moveto [Forma de Pagamento     ] TypeIn "CT or CD or CL"
Moveto [Tipo Movimento Estoque ] TypeIn "S"
Do_It!
ClearAll

If IsEmpty("Answer")
   Then Return
EndIf

View "DupNF"
CoEdit "Answer"
While Not RecordStatus("New")
  NF_EXISTE=False
  Moveto "DupNF"
  Moveto [Numero da Nota]
  Locate IndexOrder by "idupnf01" [Answer->Numero do Documento],[Answer->Serie do Documento], [Answer->Codigo da Empresa]
  If RetVal
     Then NF_EXISTE=True
  EndIf

  Moveto "Answer"
  If NF_EXISTE
     Then Del
          Loop
  EndIf
  Down
EndWhile
Do_It!
ClearAll

If IsEmpty("Answer")
   Then Return
EndIf

NR    = NRecords("Answer")
Mensagem(ltrim(Format("W10,EIC",NR))+" Documentos encontrados !")

CANCELADO=False
CopyForm "NotaC" "F" "Answer" "F"
View "Answer" SetHighLight Current Record 23 Field 31
PickForm "F"
Home
While True
  Prompt " ESC=Cancelar  F2=Gerar "

  Wait Table
       Until "F2","ESC","DEL"

  Switch
    Case RetVal="DEL":

    Case RetVal="F2":
         if confgeral("Confirmar gerar as duplicatas destes documentos ?")
            then        
                 QuitLoop
         endif
    Case RetVal="ESC":
         if confgeral("Deseja realmente sair sem gerar duplicatas ?")
            then        
                 CANCELADO=True
                 QuitLoop
         endif
  EndSwitch       
EndWhile
Do_It!
ClearAll

Echo Normal
Echo Off

EndProc  ; (Seleciona)

;*******************************************************************************
;* Rotina de Geracao de Duplicatas                                             *
;*******************************************************************************
Proc GeraDup()
AGUARDE("Aguarde, Gerando Duplicatas")
ClearAll

Sort "Answer" On "Codigo da Empresa", "Numero do Documento", "Serie do Documento"

ClearAll

WC=0
View "DupC"
View "DupI"
View "DupNF"
View "FaturaC"
View "NotaV"
View "P_Cartao"
View "\\Sistemas\\Cadastro\\Destinat"
View "\\Sistemas\\Cadastro\\End_cob"
Coedit "Answer"

Scan

  WC=WC+1
  DUPINI=[Answer->Numero do Documento]

  Switch
  	Case SubStr([Answer->Codigo do Documento],1,4)="NFE9":
      TPDOCTO="DPE9" 
      SERDUP ="900"
  	Case SubStr([Answer->Codigo do Documento],1,3)="NFE":
      TPDOCTO="DPE"+SubStr([Answer->Codigo do Documento],4,1) 
      SERDUP =SubStr([Answer->Codigo do Documento],4,1)
    Case SubStr([Answer->Codigo do Documento],1,1)="X":
      TPDOCTO=[Answer->Codigo do Documento]
      SERDUP =[Answer->Serie do Documento ]
    Case SubStr([Answer->Tipo do Documento],1,3)="CUP":
      TPDOCTO="DUPC" 
      SERDUP =[Answer->Serie do Documento ]
    Case SubStr([Answer->Tipo do Documento],1,2)="NF": 
      TPDOCTO="DUP" ;PadrÆo
      SERDUP =""
    OtherWise:
      TPDOCTO=[Answer->Codigo do Documento]
      SERDUP =[Answer->Serie do Documento ]
  EndSwitch

  AGUARDE("Aguarde, Gerando Duplicata: "+DUPINI+" Total: "+StrVal(WC))

  Duplicata()
  Nota()
  Desdobra()
  Moveto "Answer"

EndScan
Do_It!
ClearAll

EndProc  ; (GeraDup)
                                                                        
;*******************************************************************************
;* Grava Duplicata                                                             *
;*******************************************************************************
Proc Duplicata()
OF_OK=False

If [Answer->Tipo do Documento]<>"CUP"
  Then Moveto "FaturaC"
       Moveto [Numero da OF]
       Locate [Answer->Numero da OF]
       If RetVal
          Then OF_OK=True
       EndIf
EndIf

DUPLIC_OK=True
Moveto "Dupc"
Moveto [Codigo da Empresa]
Locate [Answer->Codigo da Empresa  ], DUPINI, SERDUP
If RetVal
   Then Mensagem("Duplicata: "+DUPINI+" j  Existe, Verificar !")
        DUPLIC_OK=False
        Return
EndIf
End Down
[Codigo da Empresa        ] = [Answer->Codigo da Empresa     ]
[Numero do Documento      ] = DUPINI
[Codigo do Documento      ] = TPDOCTO
[Serie do Documento       ] = SERDUP
[Nome Fantasia Empresa    ] = [Answer->Nome Fantasia Empresa ]
[Data de Emissao          ] = [Answer->Data de Emissao       ]
If Substr([Answer->Descricao Condpagto],1,6)="CONTRA"
   Then [Condicoes Especiais]=[Answer->Descricao Condpagto]
EndIf
[Tipo                     ] = [Answer->Tipo                  ]
[Codigo                   ] = [Answer->Codigo                ]
[Nome Fantasia EmitDest   ] = [Answer->Nome Fantasia EmitDest]

If OF_OK
   Then [Razao Social Fatura      ]=[FaturaC->Razao Social             ]
        [Endereco Fatura          ]=[FaturaC->Endereco                 ]
        [Bairro Fatura            ]=[FaturaC->Bairro                   ]
        [CEP Fatura               ]=[FaturaC->CEP                      ]
        [Cidade Fatura            ]=[FaturaC->Cidade                   ]
        [UF Fatura                ]=[FaturaC->UF                       ]
        [CGC Fatura               ]=[FaturaC->CGC                      ]
        [IE Fatura                ]=[FaturaC->IE                       ]
        [Numero do Pedido         ]=[FaturaC->Numero do Pedido         ]
                                                                        
        Pega_Endereco([FaturaC->Numero da OF])                                                                
        [Endereco de Cobranca     ]=VSD_C_Endereco
        [Bairro de Cobranca       ]=VSD_C_Bairro
        [CEP de Cobranca          ]=VSD_C_CEP
        [Cidade de Cobranca       ]=VSD_C_Cidade
        [UF de Cobranca           ]=VSD_C_UF
Endif

If Not OF_OK Or IsBlank([Razao Social Fatura])
   Then Moveto "\\Sistemas\\Cadastro\\Destinat"
        Moveto [Codigo]
        Locate [Answer->Codigo]
        If RetVal
           Then Moveto "Dupc"
                [Razao Social Fatura]=[\Sistemas\Cadastro\Destinat->Razao Social]
                [Endereco Fatura    ]=[\Sistemas\Cadastro\Destinat->Endereco    ]
                [Bairro Fatura      ]=[\Sistemas\Cadastro\Destinat->Bairro      ]
                [CEP Fatura         ]=[\Sistemas\Cadastro\Destinat->CEP         ]
                [Cidade Fatura      ]=[\Sistemas\Cadastro\Destinat->Cidade      ]
                [UF Fatura          ]=[\Sistemas\Cadastro\Destinat->UF          ]
                [CGC Fatura         ]=[\Sistemas\Cadastro\Destinat->CGC         ]
                [IE Fatura          ]=[\Sistemas\Cadastro\Destinat->IE          ]
        EndIf

        Moveto "\\Sistemas\\Cadastro\\End_Cob"
        Moveto [Codigo]
        Locate [Answer->Codigo]
        If RetVal
           Then Moveto "Dupc"
                [Endereco de Cobranca]=[\Sistemas\Cadastro\End_Cob->Endereco de Cobranca]
                [Bairro de Cobranca  ]=[\Sistemas\Cadastro\End_Cob->Bairro de Cobranca  ]
                [CEP de Cobranca     ]=[\Sistemas\Cadastro\End_Cob->CEP de Cobranca     ]
                [Cidade de Cobranca  ]=[\Sistemas\Cadastro\End_Cob->Cidade de Cobranca  ]
                [UF de Cobranca      ]=[\Sistemas\Cadastro\End_Cob->UF de Cobranca      ]
        EndIf
        Moveto "DupC"
EndIf

[Codigo da Destinacao     ] = [Answer->Codigo da Destinacao     ]
[Descricao da Destinacao  ] = [Answer->Descricao da Destinacao  ]
[Codigo do Representante  ] = [Answer->Codigo do Representante  ]
[Nome Fantasia Represent  ] = [Answer->Nome Fantasia Represent  ]
[Comissao do Representante] = [Answer->Comissao do Representante]
[Pedido Cliente           ] = "NF/"+[Answer->Numero do Documento]
[Valor Nota Fiscal        ] = [Answer->Valor Nota Fiscal]

If [Answer->Forma de Pagamento]="BO"
   Then [Duplicata Emitida  ]="S"
        [Promissoria Emitida]="S"
EndIf
If [Answer->Forma de Pagamento]="NP"
   Then [Duplicata Emitida  ]="S"
        [Boleta Emitida     ]="S"
EndIf

Controle_Dia()
EndProc  ; (Duplicata)

;*******************************************************************************
;* Rotina                                                                      *
;*******************************************************************************
Proc Pega_Endereco(PARAM)
Private PARAM

VSD_E_Endereco=""
VSD_E_Bairro  =""
VSD_E_CEP     =""
VSD_E_Cidade  =""
VSD_E_UF      =""

VSD_C_Endereco=""
VSD_C_Bairro  =""
VSD_C_CEP     =""
VSD_C_Cidade  =""
VSD_C_UF      =""    

GetRecord "\\Sistemas\\Vendas\\FaturaCC" PARAM To REG_ENTCOB
If RetVal
   Then VSD_E_Endereco=REG_ENTCOB["Endereco de Entrega"]
        VSD_E_Bairro  =REG_ENTCOB["Bairro de Entrega"]
        VSD_E_CEP     =REG_ENTCOB["CEP de Entrega"]
        VSD_E_Cidade  =REG_ENTCOB["Cidade de Entrega"]
        VSD_E_UF      =REG_ENTCOB["UF de Entrega"]

        VSD_C_Endereco=REG_ENTCOB["Endereco de Cobranca"]
        VSD_C_Bairro  =REG_ENTCOB["Bairro de Cobranca"]
        VSD_C_CEP     =REG_ENTCOB["CEP de Cobranca"]
        VSD_C_Cidade  =REG_ENTCOB["Cidade de Cobranca"]
        VSD_C_UF      =REG_ENTCOB["UF de Cobranca"] 
EndIf   
 
EndProc ;Pega_Endereco() 

;*******************************************************************************
;* Grava Desdobramentos                                                        *
;*******************************************************************************
Proc Desdobra()

NC_CTA=""
NC_COD=""
If Not DUPLIC_OK
   Then Return
EndIf

Moveto "NotaV"
Moveto [Codigo da Empresa]
Locate [Answer->Codigo da Empresa],[Answer->Numero do Documento],[Answer->Serie do Documento]
If Not RetVal
   Then Return
EndIf

NPARC=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]
      NPARC=NPARC+1
      Skip
      If EOT()
         Then QuitLoop
      Endif
EndWhile

i=0
Moveto "NotaV"
Moveto [Codigo da Empresa]
Locate [Answer->Codigo da Empresa],[Answer->Numero do Documento],[Answer->Serie do Documento]
While [Codigo da Empresa  ]=[Answer->Codigo da Empresa] And
      [Numero do Documento]=[Answer->Numero do Documento] And
      [Serie do Documento ]=[Answer->Serie do Documento]

   Moveto "P_Cartao"
   Moveto [Codigo_Empresa]
   Locate [Notav->Codigo da Empresa],[Notav->Nome do Cartao]
   If retval
     Then
          NC_COD   =[Codigo Destinat         ]
          NC_NDV   =[Numero Dias Vencimento  ]
          NC_ADM   =[Tx_Descto_Administradora]
          NC_CTA   =[Codigo da Conta         ]

          Moveto "DupC"
          [Codigo             ] = NC_COD
          [Codigo da Conta    ] = NC_CTA
          [Codigo da Empresa  ] = [Answer->Codigo da Empresa]

          Moveto "\\Sistemas\\Cadastro\\Destinat"
          Moveto [Codigo]
          Locate NC_COD
          If RetVal
             Then Moveto "Dupc"
                  [Razao Social Fatura]=[\Sistemas\Cadastro\Destinat->Razao Social]
                  [Endereco Fatura    ]=[\Sistemas\Cadastro\Destinat->Endereco    ]
                  [Bairro Fatura      ]=[\Sistemas\Cadastro\Destinat->Bairro      ]
                  [CEP Fatura         ]=[\Sistemas\Cadastro\Destinat->CEP         ]
                  [Cidade Fatura      ]=[\Sistemas\Cadastro\Destinat->Cidade      ]
                  [UF Fatura          ]=[\Sistemas\Cadastro\Destinat->UF          ]
                  [CGC Fatura         ]=[\Sistemas\Cadastro\Destinat->CGC         ]
                  [IE Fatura          ]=[\Sistemas\Cadastro\Destinat->IE          ]
          EndIf

          Moveto "\\Sistemas\\Cadastro\\End_Cob"
          Moveto [Codigo]
          Locate NC_COD
          If RetVal
             Then Moveto "Dupc"
                  [Endereco de Cobranca]=[\Sistemas\Cadastro\End_Cob->Endereco de Cobranca]
                  [Bairro de Cobranca  ]=[\Sistemas\Cadastro\End_Cob->Bairro de Cobranca  ]
                  [CEP de Cobranca     ]=[\Sistemas\Cadastro\End_Cob->CEP de Cobranca     ]
                  [Cidade de Cobranca  ]=[\Sistemas\Cadastro\End_Cob->Cidade de Cobranca  ]
                  [UF de Cobranca      ]=[\Sistemas\Cadastro\End_Cob->UF de Cobranca      ]
          EndIf

          Moveto "Notav"
      Else
          Moveto "Notav"
          Mensagem("Empresa/CartÆo: "+[Notav->Codigo da Empresa]+"/"+[Notav->Nome do Cartao]+" sem parametros !")

          Skip
          If EOT()
            Then QuitLoop
            Else Loop
          Endif
   EndIf  

   i=i+1
   Moveto "DupI"
   End
   Down
   [Codigo da Empresa        ] = [Dupc->Codigo da Empresa  ]
   [Numero do Documento      ] = [Dupc->Numero do Documento]
   [Serie do Documento       ] = [Dupc->Serie do Documento ]
   If NPARC=1
      Then [Ordem do Documento]=""
      Else [Ordem do Documento]=CHR(64+i)
   EndIf

   If [NotaV->Data]=[Dupc->Data de Emissao]
      Then [Data Vencimento ]=[Dupc->Data de Emissao]+NC_NDV
      Else [Data Vencimento ]=[NotaV->Data]
   EndIf
   [Valor Duplicata ]=[NotaV->Valor]
   [Valor Duplicata ]=[Valor Duplicata]-(([Valor Duplicata]*NC_ADM)/100)

   [Taxa de Juros            ] = TAXA
   [Tipo Taxa de Juros       ] = VSDGFORMA

   If VSDGFORMA="A"
      Then [NDias Taxa de Juros]=365
   Endif
   If VSDGFORMA="M"
      Then [NDias Taxa de Juros]=30
   Endif
   If VSDGFORMA="D"
      Then [NDias Taxa de Juros]=1
   Endif
   [Valor da Comissao]=[NotaV->Valor da Comissao]
   UnLockRecord

   Moveto "NotaV"
   Skip
   If EOT()
      Then QuitLoop
   Endif

EndWhile
EndProc  ;  (Desdobra)

;*******************************************************************************
;* Grava Relacao de Notas                                                      *
;*******************************************************************************
Proc Nota()
If Not DUPLIC_OK
   Then Return
Endif

Moveto "DupNF"
End
Down
[Codigo da Empresa        ] = [Dupc->Codigo da Empresa    ]
[Numero do Documento      ] = [Dupc->Numero do Documento  ]
[Serie do Documento       ] = [Dupc->Serie do Documento   ]
[Sequencia                ] = "01"
[Numero da Nota           ] = [Answer->Numero do Documento]
[Serie da Nota            ] = [Answer->Serie do Documento ]
[Valor da Nota Fiscal     ] = [Answer->Valor Nota Fiscal  ]
UnLockRecord

EndProc  ; (Nota)

;*******************************************************************************
;* Rotina do ShowDialog                                                        *
;*******************************************************************************
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_DTINI"         : Campo="TG_EMPRESA"
            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 Not IsBlank(VSDGEMPRESA)
                            Then GetRecord "\\Sistemas\\Vendas\\P_Fatura" VSDGEMPRESA To REG_PFATURA
                                 If RetVal
                                    Then VSDGGVV=REG_PFATURA["Gera_Duplicatas_AVista"]
                                    Else Mensagem("N„o esta Configurado os Parametros para Empresa !")
                                 EndIf
                         EndIf
                         Campo="TG_DTINI"
                    Case Campo="TG_DTINI"   :
                         If Not IsBlank(VSDGDTINI)
                            Then Campo="TG_DTFIM"
                         Endif
                    Case Campo="TG_DTFIM"   :
                         If Not IsBlank(VSDGDTFIM)
                            Then Campo="YES"
                         EndIf
                  EndSwitch
          EndIf
          RefreshDialog
   EndSwitch
EndIf
Switch
  Case Campo="TG_EMPRESA":
       MSG_CAMPO="Informe o Codigo da Empresa"
  Case Campo="TG_DTINI":
       MSG_CAMPO="Informe a Data Inicial"
  Case Campo="TG_DTFIM":
       MSG_CAMPO="Informe a Data Final"
Endswitch
Monta_Prompt(MSG_CAMPO,TECLA)
Return Temp
EndProc

;*******************************************************************************
;* ROTINA PRINCIPAL                                                            *
;*******************************************************************************
AutoLib="\\Sistemas\\Cadastro\\Bib_Show,\\Sistemas\\Cadastro\\Bibliot"
If Not IsAssigned(SYS_CHAPA_USUARIO)   Then SYS_CHAPA_USUARIO="9999" EndIf
If Not IsAssigned(SYS_NIVEL_USUARIO)   Then SYS_NIVEL_USUARIO="S"    EndIf
If Not IsAssigned(SYS_NOME_USUARIO)    Then SYS_NOME_USUARIO=""      EndIf
If Not IsAssigned(SYS_CODIGO_CLIENTE)  Then SYS_CODIGO_CLIENTE=""    EndIf
LimpAguarde()

sys_valor()

VSDGDTINI    =BlankDate()
VSDGDTFIM    =BlankDate()
VSDGTAXA     =""
VSDGFORMA    =""
VSDGDESCFORMA=""
VSDGGVV      =""
VSDGDESCGVV  =""
TAXA         =BlankNum()
While True

  ShowDialog "Gerac„o de Duplicatas - N§.DUP=N§NF Cart”es Cr‚dito" 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 09 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 "Per¡odo Referente de" For "TG_DTINI"
    Accept @ 03,03 Width 13 "D"  Picture "#[#];.##;.##[##]" Tag "TG_DTINI" To VSDGDTINI
    Label  @ 03,16 "at‚" For "TG_DTFIM"
    Accept @ 03,21 Width 13 "D"  Picture "#[#];.##;.##[##]" Tag "TG_DTFIM" To VSDGDTFIM

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

  EndDialog
  If Not RetVal Then QuitLoop EndIf

  If IsBlank(VSDGDTINI)
     Then Mensagem("Data Inicial Invalida !")
          Loop
  EndIf

  If IsBlank(VSDGDTFIM)
     Then Mensagem("Data Final Invalida !")
          Loop
  EndIf

  Seleciona()

  If IsEmpty("Answer")
     Then MENSAGEM("N„o existem registros a processar")
          Loop
  EndIf

  If CANCELADO
     Then 
          Mensagem("Procedimento abortado, duplicatas nÆo foram geradas !")
          Loop
     else
          GeraDup()
          Mensagem("Fim da Opera‡„o !")       
  EndIf

EndWhile
ClearAll
Release Vars All
Release Procs All
