;** GDPadr2 ********************************************************************
;*  Geracao de Duplicatas  - Numero Duplicata <> Numero Nota                   *
;*******************************************************************************
;Autor           : Vise Informatica (VISERP)
;Desenvolvido    : 05/06/1997 por Anivel Augusto Rodrigues
;Alterado em     : 03/09/2004 por Jos‚ Lu¡s Ameno da Silva
;Motivo Alteracao: PrivDir
;Alterado em     : 19/03/2007 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes DPS2 MinasLack
;Alterado em     : 06/08/2007 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes TPDOCTO LOCATE
;Ultima Alteracao: 14/08/2007 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes Deleta_Arquivo
;Ultima Alteracao: 03/10/2007 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes Tecnomar
;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: 29/01/2008 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes CUP
;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: 19/09/2012 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes Substitui‡Æo Editor novo arquivo por FileWrite

;*******************************************************************************
;* Rotina de Geracao de Duplicatas                                             *
;*******************************************************************************
Proc Seleciona()
AGUARDE("Aguarde, Relacionando Notas")
ClearAll

{Ask} {Destin}
Moveto [Codigo da Destinacao] Example "destin"
Moveto [Gera Duplicata      ] TypeIn "S"

{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 [Tipo Movimento Estoque ] TypeIn "S"
If VSDGGVV="N"
   Then Moveto [Tipo de Pagamento] TypeIn "P"
EndIf
Do_It!
ClearAll


If SYS_CODIGO_CLIENTE="0117"
   Then {Ask} {Answer} TypeIn "Fast Delete"
        Moveto [Tipo de Pagamento ] TypeIn "P"
        Moveto [Forma de Pagamento] TypeIn "CP"
        Do_It!
        ClearAll
EndIf

If IsEmpty("Answer")
   Then Return
EndIf

CopyForm "NotaC" "F" "Answer" "F"

View "DupNF"
CoEdit "Answer" SetHighLight Current Record 23 Field 31
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
  [Situacao]=""
  Down

EndWhile
If IsEmpty("Answer")
   Then Do_It!
        ClearAll
        Return
EndIf

CANCELADO=False
Home
PickForm "F"
While True

      Prompt " ESC=Cancelar  F2=Gerar  F4=Agrupar  F5=Desagrupar  Del=Excluir"

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

      Switch
      Case RetVal="DEL":
           Del
      Case RetVal="F2":
           QuitLoop
      Case RetVal="ESC":
           CANCELADO=True
           QuitLoop
      Case RetVal="F4":
           [Situacao]="A"
      Case RetVal="F5":
           [Situacao]=""
      EndSwitch

EndWhile
Do_It!
ClearAll

EndProc

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

Tabela=Cria_Temp(PrivDir())
Copy "Answer" Tabela
WC=0

For cci From 1 To 2
  Switch
    Case cci=1:
      {Ask} TypeIn Tabela Enter Check
      Moveto [Situacao] TypeIn "Blank"
      Do_It!
      ClearAll
      If IsEmpty("Answer")
         Then Loop
      EndIf

      Sort "Answer" On "Codigo da Empresa", "Numero do Documento", "Serie do Documento"
      ClearAll
    Case cci=2:
      {Ask} TypeIn Tabela Enter Check
      Moveto [Situacao] TypeIn "Not Blank"
      Do_It!
      ClearAll
      If IsEmpty("Answer")
         Then Loop
      EndIf

      Sort "Answer" On "Codigo da Empresa", "Nome Fantasia EmitDest", "Codigo",
                       "Numero do Documento", "Serie do Documento"
      ClearAll
  EndSwitch

  Array DtNota[15]
  Array VrNota[15]
  Array VrComi[15]
  For i From 1 to 15
    DtNota[i]=BlankDate()
    VrNota[i]=0
    VrComi[i]=0
  EndFor

  View "DupC"
  View "DupI"
  View "DupNF"
  View "FaturaC"
  View "NotaV"
  View "NumeroDp"
  View "\\Sistemas\\Cadastro\\Destinat"
  View "\\Sistemas\\Cadastro\\End_cob"
  Coedit "Answer"

  CODCLI="****"
  VAR_INICIO=True
  PRO_CANCEL=False

  Scan
    If PRO_CANCEL then QuitLoop EndIf

    WC=WC+1

    If [Situacao]=""
       Then Duplicata()
            Nota()
            Desdobra()
            Moveto "Answer"
            Loop
    EndIf

    If [Codigo]<>CODCLI
       Then If Not VAR_INICIO
               Then Desdobra()
            EndIf
            VAR_INICIO=False
            Moveto "Answer"
            DUPINI=AlinhM(StrVal(DUPINI), 6)
            CODCLI=[Codigo]
            Duplicata()
    EndIf
    Nota()

    Moveto "Answer"

  EndScan
  If [Situacao]="A"
     Then Desdobra()
  EndIf
  Do_It!
  ClearAll

EndFor
Delete Tabela
EndProc

;*******************************************************************************
;* Grava Duplicata                                                             *
;*******************************************************************************
Proc Duplicata()

Switch
  	Case SubStr([Answer->Codigo do Documento],1,4)="NFE9":
        TPDOCTO="DPE9" 
        SERDUP ="900"
    Case SubStr([Answer->Codigo do Documento],1,3)="NFE":
        TPDOCTO="DPE1" 
        SERDUP ="1"
    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
 
Moveto "NumeroDp"
Moveto [Codigo da Empresa]
Locate [Answer->Codigo da Empresa], TPDOCTO
If Not RetVal
   Then Mensagem("Controle da numera‡„o p/ duplicatas n„o informado !// Duplicata n„o gerada !//Processo Cancelado !")
        DUPLIC_OK=False
        PRO_CANCEL=True
        Return
EndIf
While True
  If Not IsLockRecord()
     Then QuitLoop
  EndIf
EndWhile
DUPINI=AlinhM(StrVal([Proximo Numero]),6)

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, ""
If RetVal
   Then Mensagem("Duplicata: "+DUPINI+" j  Existe, Verificar !")
        DUPLIC_OK=False
        Return
EndIf

End Down
[Codigo da Conta          ] = VSDGCONTA
[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 ]
If VSDGOPCAO="N"
   Then [Data de Emissao  ] = [Answer->Data de Emissao       ]
   Else [Data de Emissao  ] = VSDGDTREF
EndIf
[Tipo                     ] = [Answer->Tipo                  ]
If Substr([Answer->Descricao Condpagto],1,6)="CONTRA"
   Then [Condicoes Especiais]=[Answer->Descricao Condpagto]
EndIf
[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                       ]
        [Endereco de Cobranca     ]=[FaturaC->Endereco de Cobranca     ]
        [Bairro de Cobranca       ]=[FaturaC->Bairro de Cobranca       ]
        [CEP de Cobranca          ]=[FaturaC->CEP de Cobranca          ]
        [Cidade de Cobranca       ]=[FaturaC->Cidade de Cobranca       ]
        [UF de Cobranca           ]=[FaturaC->UF de Cobranca           ]
        [Numero do Pedido         ]=[FaturaC->Numero do Pedido         ]
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]
[Numero do Pedido         ] = [Answer->Numero do Pedido         ]
[Numero_Carregamento      ] = [Answer->Numero_Carregamento      ]

;*** Implementado em 21/01/2004 *****
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()
SEQ_NOTA=0
AGUARDE("Aguarde, Gerando Duplicata: "+DUPINI+" Total: "+StrVal(WC))
EndProc

;*******************************************************************************
;* Grava Desdobramentos                                                        *
;*******************************************************************************
Proc Desdobra()
If Not DUPLIC_OK
   Then Return
EndIf

NPARC=0
For i From 1 To 15
  If Not IsBlank(DtNota[i])
     Then NPARC=NPARC+1
  EndIf
EndFor

sq=0
Moveto "DupI"
For i From 1 To 15
  If IsBlank(DtNota[i]) Then Loop EndIf
  While True
    ii=i
    For v From 1 To 15
      If Not IsBlank(DtNota[v]) And
         DtNota[v]<=DtNota[ii]
         Then ii=v
      EndIf
    EndFor
    sq=sq+1
    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(65+(sq-1))
    EndIf

    [Data Vencimento  ]=DtNota[ii]
    [Valor Duplicata  ]=VrNota[ii]
    [Valor da Comissao]=VrComi[ii]

    [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
    UnLockRecord

    DtNota[ii]=BlankDate()
    If IsBlank(DtNota[i]) Then QuitLoop EndIf
  EndWhile
EndFor

For i From 1 to 15
  DtNota[i]=BlankDate()
  VrNota[i]=0
  VrComi[i]=0
EndFor

Moveto "NumeroDp"
[Proximo Numero]=[Proximo Numero]+1
UnLockRecord

Moveto "DupI"
EndProc

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

SEQ_NOTA=SEQ_NOTA+1
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                ] = AlinhM(StrVal(SEQ_NOTA),2)
[Numero da Nota           ] = [Answer->Numero do Documento ]
[Serie da Nota            ] = [Answer->Serie do Documento  ]
[Valor da Nota Fiscal     ] = [Answer->Valor Nota Fiscal   ]
UnLockRecord

Moveto "DupC"
[Valor Nota Fiscal]=[Valor Nota Fiscal]+[Answer->Valor Nota Fiscal]

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

           For i From 1 To 15
             If IsBlank(DtNota[i])
                Then DtNota[i]=[Data             ]
                     VrNota[i]=[Valor            ]
                     VrComi[i]=[Valor da Comissao]
                     QuitLoop
                Else If DtNota[i]=[Data]
                        Then VrNota[i]=VrNota[i]+[Valor            ]
                             VrComi[i]=VrComi[i]+[Valor da Comissao]
                             QuitLoop
                     EndIf
             EndIf
           EndFor
           Skip
           If EOT()
              Then QuitLoop
           Endif
        EndWhile
EndIf
Moveto "DupC"
EndProc

;************************************
;* ROTINA PARA Ler/Gravacao Opcao   *
;************************************
Proc ConfOpcoes(Opcao)
Private Opcao
Switch
  Case Opcao="Ler":
       If IsFile("GD_0001.sc")
           Then Play "GD_0001"
           Else VSDGOPCAO=""
       EndIf
  Case Opcao="Gravar":
       FileWrite        "GD_0001.sc" From ";****** Variaveis de Configura‡„o DTGERACAO FATURA"+"\n"
       FileWrite Append "GD_0001.sc" From "VSDGOPCAO="+Chr(34)+VSDGOPCAO+Chr(34)+"\n"
EndSwitch
EndProc ;

;*******************************************************************************
;* 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_CONTA"         : Campo="TG_EMPRESA"
            Case Campo="TG_DTINI"         : Campo="TG_CONTA"
            Case Campo="TG_DTFIM"         : Campo="TG_DTINI"
            Case Campo="TG_TAXA"          : Campo="TG_DTFIM"
            Case Campo="TG_FORMA"         : Campo="TG_TAXA"
            Case Campo="TG_GVV"           :
                 If IsBlank(VSDGTAXA)
                    Then Campo="TG_TAXA"
                    Else Campo="TG_FORMA"
                 EndIf
            Case Campo="TG_OPCAO"         : Campo="TG_GVV"
            Case Campo="TG_DTREF"         : Campo="TG_OPCAO"
            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
                                 EMP_OK=True

                                 View NoWindow "P_Fatura"
                                 Moveto [Codigo_Empresa]
                                 Locate VSDGEMPRESA
                                 If RetVal
                                    Then VSDGCONTA  =[Codigo_Conta_Caixa      ]
                                         VSDGTAXA   =[Duplicata_TxJuros       ]
                                         VSDGFORMA  =[Duplicata_Forma_TxJuros ]
                                         VSDGGVV    =[Gera_Duplicatas_AVista  ]
                                    Else Mensagem("N„o esta Configurado os Parametros para Empresa !")
                                         EMP_OK=False
                                 EndIf
                                 ClearImage

                                 View NoWindow "NumeroDP"
                                 Moveto [Codigo da Empresa]
                                 Locate VSDGEMPRESA, "DUP"
                                 If RetVal
                                    Then VSDGPROXFAT=AlinhM(StrVal([Proximo Numero]),6)
                                    Else Mensagem("Controle da numera‡„o p/ duplicatas n„o informado para Empresa !")
                                         EMP_OK=False
                                 EndIf
                                 ClearImage

                                 If EMP_OK
                                    Then Campo="TG_CONTA"
                                 EndIf
                         EndIf
                    Case Campo="TG_CONTA":
                         If Not IsBlank(VSDGCONTA)
                            Then Campo="TG_DTINI"
                         EndIf
                    Case Campo="TG_DTINI"   :
                         If Not IsBlank(VSDGDTINI)
                            Then Campo="TG_DTFIM"
                         Endif
                    Case Campo="TG_DTFIM"   :
                         If Not IsBlank(VSDGDTFIM)
                            Then Campo="TG_TAXA"
                         EndIf
                    Case Campo="TG_TAXA":
                         VSDGTAXA=ControlValue("TG_TAXA")
                         If Not IsBlank(VSDGTAXA)
                            Then TAXA=NumVal(VSDGTAXA)
                                 Campo="TG_FORMA"
                            Else VSDGFORMA    =""
                                 VSDGDESCFORMA=""
                                  Campo="TG_GVV"
                         EndIf
                    Case Campo="TG_FORMA":
                         VSDGFORMA=ControlValue("TG_FORMA")
                         If Not IsBlank(VSDGFORMA)
                            Then Switch
                                   Case VSDGFORMA="D":
                                        VSDGDESCFORMA="Dia"
                                   Case VSDGFORMA="M":
                                        VSDGDESCFORMA="Mes"
                                   Case VSDGFORMA="A":
                                        VSDGDESCFORMA="Ano"
                                   OtherWise:
                                        VSDGFORMA    =""
                                        VSDGDESCFORMA=""
                                 EndSwitch
                                 Campo="TG_GVV"
                            Else VSDGDESCFORMA=""
                         EndIf
                    Case Campo="TG_GVV": Campo="TG_OPCAO"
                         VSDGGVV=ControlValue("TG_GVV")
                         Switch
                           Case VSDGGVV="S":
                                VSDGDESCGVV="SIM"
                           Case VSDGGVV="N":
                                VSDGDESCGVV="NAO"
                           OtherWise:
                                VSDGGVV    ="N"
                                VSDGDESCGVV="NAO"
                         EndSwitch
                    Case Campo="TG_OPCAO": Campo="YES"
                         VSDGOPCAO=ControlValue("TG_OPCAO")
                         Switch
                           Case VSDGOPCAO="N": VSDGDESCOPCAO="DT FATURA=DT EMISSAO NF"
                                               VSDGDTREF=BlankDate()
                           Case VSDGOPCAO="I": VSDGDESCOPCAO="DT FATURA=DT INFORMADA"
                                               If IsBlank(VSDGDTREF)
                                                  Then VSDGDTREF=Today()
                                               EndIf
                                               CAMPO="TG_DTREF"
                           OtherWise         : VSDGDESCOPCAO=""
                                               Campo="TG_OPCAO"
                         EndSwitch
                    Case Campo="TG_DTREF": Campo="YES"
                  EndSwitch
          EndIf
          RefreshDialog
   EndSwitch
EndIf
Switch
  Case Campo="TG_EMPRESA":
       MSG_CAMPO="Informe o Codigo da Empresa"
  Case Campo="TG_CONTA":
       MSG_CAMPO="Informe o Codigo da Conta"
  Case Campo="TG_DTINI":
       MSG_CAMPO="Informe a Data Inicial"
  Case Campo="TG_DTFIM":
       MSG_CAMPO="Informe a Data Final"
  Case Campo="TG_TAXA":
       MSG_CAMPO="Branco=Nulo"
  Case Campo="TG_FORMA":
       MSG_CAMPO="D=Diario, M=Mensal, A=Anual"
  Case Campo="TG_GVV":
       MSG_CAMPO="Em Branco=N„o, S=Sim, N=N„o "
  Case Campo="TG_OPCAO":
     MSG_CAMPO="Op‡„o: N=Data igual DtEmiss„o NF   I=Informar Data Gera‡„o"
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()

ConfOpcoes("Ler")

VSDGDTINI    =BlankDate()
VSDGDTFIM    =BlankDate()
VSDGDTREF    =BlankDate()
VSDGTAXA     =""
VSDGFORMA    =""
VSDGDESCFORMA=""
VSDGGVV      =""
VSDGDESCGVV  =""
TAXA         =BlankNum()
VSDGPROXFAT  =""
VSDGDESCOPCAO=""

While True

  ShowDialog "Gerac„o de Duplicatas - N§.Duplicata<>N§.Nota" 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 16 Width 55

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

    Label  @ 02,00 "Conta"  For "TG_CONTA"
    Accept @ 03,01 Width 07 "A4"  Picture "#*#" Tag "TG_CONTA"    To VSDGCONTA
    Accept @ 03,09 Width 23 "A20" Picture "!*!" Tag "TG_NOMCONTA" To VSDGNOMCONTA

    Label  @ 02,35 "Prox. Fatura" For "TG_PROXFAT"
    Accept @ 03,36 Width 09 "A6"  Picture "######" Tag "TG_PROXFAT" To VSDGPROXFAT

    Label  @ 04,00 "Per¡odo Referente" For "TG_DTINI"
    Label  @ 05,00 "de" For "TG_DTINI"
    Accept @ 05,04 Width 13 "D"  Picture "#[#];.##;.##[##]" Tag "TG_DTINI" To VSDGDTINI
    Label  @ 05,17 "at‚" For "TG_DTFIM"
    Accept @ 05,22 Width 13 "D"  Picture "#[#];.##;.##[##]" Tag "TG_DTFIM" To VSDGDTFIM

    Label  @ 06,00 "Taxa de Juros"  For "TG_TAXA"
    Accept @ 06,20 Width 09 "A7"  Picture "#*#.[##]" Tag "TG_TAXA"    To VSDGTAXA

    Label  @ 07,00 "Tipo Taxa de Juros"  For "TG_FORMA"
    Accept @ 07,20 Width 04 "A1"  Picture "D,M,A" Tag "TG_FORMA"    To VSDGFORMA
    Accept @ 07,24 Width 05 "A3"  Picture "!*!" Tag "TG_DESCFORMA"    To VSDGDESCFORMA

    Label  @ 08,00 "Gera Venda a Vista"  For "TG_GVV"
    Accept @ 08,20 Width 04 "A1"  Picture "S,N" Tag "TG_GVV"    To VSDGGVV
    Accept @ 08,24 Width 05 "A3"  Picture "!*!" Tag "TG_DESCGVV"    To VSDGDESCGVV

    Label  @ 09,00 "Op‡„o p/ Data Emiss„o da Fatura" For "TG_OPCAO"
    Accept @ 10,01 Width 04 "A1"  Picture "N,I" Tag "TG_OPCAO" To VSDGOPCAO
    Accept @ 10,06 Width 26 "A25"  Picture "!*!" Tag "TG_DESCOPCAO" To VSDGDESCOPCAO

    Label  @ 09,35 "Data Gera‡„o" For "TG_DTREF"
    Accept @ 10,36 Width 13 "D"  Picture "#[#];.##;.##[##]" Tag "TG_DTREF" To VSDGDTREF

    Pushbutton @ 12,14 width 11 "~O~k"      OK     Default Value "Ok" Tag "YES" To BottonValue
    Pushbutton @ 12,28 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 Not CANCELADO
     Then GeraDup()
  EndIf

  ConfOpcoes("Gravar")
  Mensagem("Fim da Opera‡„o !")

  Echo Normal
  Echo Off

EndWhile
ClearAll
Release Vars All
Release Procs All
