;* GeraCob*********************************************************************
;*                Cadastro de Tipos de Contrato                                *
;*******************************************************************************
;Autor           : Vise Informatica (VISERP)
;Desenvolvido  em: 14/11/2016 por Rafael Matos 
;Ultima Alteracao: 28/12/2016 por Rafael Matos
;Motivo Alteracao: Ajustes ShowDialog TG_DESTINAT
;Ultima Alteracao: 26/04/2018 por Bruno Carvalho
;Motivo Alteracao: Ajustes p/ [Data de Nascimento] ser consultada pela Destinat

;*******************************************************************************
;* Rotina p/ Selecionar Registros                                              *
;*******************************************************************************
Proc SELECIONA()
DTFINAL=(Primeiro_Dia_Data(VSDGDTREF)-1)
DTINI  =(Ultimo_Dia_Data(VSDGDTREF)+1)

{Ask} TypeIn "\\Sistemas\\Geec\\Contrato" Enter Check
Moveto [Codigo da Empresa      ] TypeIn "~VSDGEMPRESA.."
Moveto [Codigo                 ] Example "clie" TypeIn"!, ~VSDGDESTINAT.."
Moveto [Codigo_TpContrato      ] TypeIn "~VSDGTPCONTRATO.."
Moveto [Codigo_GrupoVencimento ] TypeIn "~VSDGGRPVENC.."
Moveto [PeriodoContratoFinal   ] TypeIn ">~DTFINAL or blank"
Moveto [PeriodoContratoInicial ] TypeIn "<~DTINI"
Moveto [ContratoInativo        ] TypeIn "Not S"

{Ask} TypeIn "\\Sistemas\\Cadastro\\Destinat" Enter
Moveto [Codigo                 ] Example "clie"
Moveto [Data de Nascimento     ] Check 

Do_It!
ClearAll
EndProc

;*******************************************************************************
;* Rotina p/ Gerar CobtmpC e CobtmpI                                           *
;*******************************************************************************
proc geracobranca()

Empty("Cobtmpi")
Empty("Cobtmpc")

sort "Answer" On "Codigo","Numero_Contrato"
ClearAll

clieant="****"
ndoc   =""
NR     = NRecords("Answer")
NP     = 0
NC     = 0

View "\\Sistemas\\Cadastro\\Destinat"
View "ContratV"
View "CobtmpC"
View "CobtmpI"
View "\\Sistemas\\Ctarec\\Duplic"
Coedit "Answer"
scan
  Barra(NR, RecNo())
  Aguarde("Aguarde, Processando "+BARRA_STRING)

  If [Answer->Codigo]<>clieant
     then
          If clieant <> "****"
             Then excluircob()
          EndIf  
          
          clieant=[Answer->Codigo]
          ndoc   =[Answer->Codigo]+"/"+alinhm(strval(month(vsdgdtref)),2)+substr(strval(year(vsdgdtref)),3,2)
          nc     =0

          Moveto "\\Sistemas\\Ctarec\\Duplic"
          Moveto [Codigo da Empresa]
          Locate IndexOrder by "Inddup1" VSDGEMPRESA,"REC",ndoc
          If RetVal 
            Then 
                 REG_ACHOUCOB = true
                 grava_erro(ndoc)
            Else 
                  REG_ACHOUCOB = false
                 
                  moveto "cobtmpc"
                  end
                  down
                  [Numero do Documento  ]=ndoc
                  [Codigo               ]=[Answer->Codigo               ]
                  [Codigo da Empresa    ]=[Answer->Codigo da Empresa    ]
                  [Nome Fantasia Empresa]=[Answer->Nome Fantasia Empresa]
                  [Data de Nascimento   ]=[Answer->Data de Nascimento   ]
                  [FaturadoAntecipado   ]=[Answer->FaturadoAntecipado   ]
                  [DiaVencimento        ]=[Answer->DiaVencimento        ]
                  [Data Referente       ]=VSDGDTREF
                  
                  moveto "\\Sistemas\\Cadastro\\Destinat"
                  moveto [Codigo]
                  locate [Answer->Codigo]
                  if not retval
                     then msg="Cliente nÆo cadastrado !// //"
                          msg=msg+[Answer->Codigo]+" - "+[Answer->Razao Social]+"// //"
                          msg=msg+"Verificar no cadastro de clientes !"
                          Mensagem(msg)
                     else
                          moveto "cobtmpc"
                          [Razao Social         ]=[\sistemas\cadastro\destinat->Razao Social     ]
                          [Bairro               ]=[\sistemas\cadastro\destinat->Bairro           ]
                          [Endereco             ]=[\sistemas\cadastro\destinat->Endereco         ]
                          [CEP                  ]=[\sistemas\cadastro\destinat->CEP              ]
                          [Cidade               ]=[\sistemas\cadastro\destinat->Cidade           ]
                          [UF                   ]=[\sistemas\cadastro\destinat->UF               ]
                          [CGC                  ]=[\sistemas\cadastro\destinat->CGC              ]
                          [Telefone             ]=[\sistemas\cadastro\destinat->Telefone         ]
                          [Celular              ]=[\sistemas\cadastro\destinat->Celular          ]
                          [Codigo da Rota       ]=[\sistemas\cadastro\destinat->Codigo da Rota   ]
                          [Descricao da Rota    ]=[\sistemas\cadastro\destinat->Descricao da Rota]
                  endif   
                  
                  moveto "cobtmpc"
                  Controle_Dia()
                  unlockrecord
          EndIf
  EndIf

  If Not REG_ACHOUCOB
    Then
        ssit=""
        vvr =[Answer->Valor_TpContrato]   
        
        If [Answer->FaturadoAntecipado]="S" 
               Then 
                    ssit="PAGO"
                    vvr =0   
               
                    NP=0
                    moveto "Contratv"   
                    moveto [Numero_Contrato]
                    locate [answer->Numero_Contrato]
                    if retval
                       then  GERACOBRANCA = true
                             While [Numero_Contrato] = [answer->Numero_Contrato]
                                  NP=NP+1     
                             
                                  if NP=1
                                     then
                                          if Year(VSDGDTREF) < Year([Data])  or 
                                             ( Year(VSDGDTREF) = Year([Data]) and Month(VSDGDTREF) < Month([Data]) )
                                             then GERACOBRANCA = false
                                                  Quitloop 
                                          endif                                              
                                  endif   

                                  if Month(VSDGDTREF) = Month([Data]) and
                                      Year(VSDGDTREF) =  Year([Data])
                                     then ssit = "Parcela " + Strval(Numval([Sequencia])) + "/"
                                          vvr  = [Valor]
                                  endif

                                  skip
                                  if eot() Then Quitloop EndIf     
                            EndWhile
                            If not GERACOBRANCA
                               then moveto "Answer"
                                    loop
                            endIf
                            if ssit <> "PAGO" Then ssit = ssit + strval(NP) EndIf 
                    EndIf 
        EndIf
        
        moveto "cobtmpc"
        [Valor Total]=[Valor Total]+vvr

              
        moveto "cobtmpi"
        end
        down   
        [Numero do Documento        ]=ndoc
        [Numero_Contrato            ]=[Answer->Numero_Contrato          ]
        [Codigo                     ]=[Answer->Codigo                   ]
        [Razao Social               ]=[Answer->Razao Social             ]
        [Codigo_TpContrato          ]=[Answer->Codigo_TpContrato        ]
        [Descricao_TpContrato       ]=[Answer->Descricao_TpContrato     ]
        [CobtmpI->Situacao          ]=ssit
        [CobtmpI->Valor_TpContrato  ]=vvr                                
        [Codigo do Representante    ]=[Answer->Codigo do Representante  ]
        [Nome Fantasia Represent    ]=[Answer->Nome Fantasia Represent  ]
        [PeriodoContratoInicial     ]=[Answer->PeriodoContratoInicial   ]
        [PeriodoContratoFinal       ]=[Answer->PeriodoContratoFinal     ]
        [DataProspeccaoContrato     ]=[Answer->DataProspeccaoContrato   ]
        [Forma de Pagamento         ]=[Answer->Forma de Pagamento       ]
        [Codigo_GrupoVencimento     ]=[Answer->Codigo_GrupoVencimento   ]
        [Descricao_GrupoVencimento  ]=[Answer->Descricao_GrupoVencimento]
        [DiaVencimento              ]=[Answer->DiaVencimento            ]
        [FaturadoAntecipado         ]=[Answer->FaturadoAntecipado       ]
        [ContratoInativo            ]=[Answer->ContratoInativo          ]
        [DataContratoInativado      ]=[Answer->DataContratoInativado    ]
        [ObservacaoContrato         ]=[Answer->ObservacaoContrato       ]
        [ObservacaoRecibo           ]=[Answer->ObservacaoRecibo         ]
        Controle_Dia()          
        unlockrecord
        
        nc=nc+1
  EndIf
 
  Moveto "Answer"
EndScan
excluircob()

do_it!
clearAll   
EndProc


proc excluircob()

if nc=0
   then 
        Moveto "cobtmpc"
        Moveto [codigo]
        locate clieant
        If retval
           Then del
        EndIf
endif

moveto "Answer"

endproc


;*******************************************************************************
;* Rotina Para Gravar Erros                                                    *
;*******************************************************************************
proc grava_erro(ndoc)

If Not ENCONTRADO_INCONSISTENCIA
  Then  
       NLINHA = 66
       FileWrite ARQIMP From Chr(27)+Chr(120)+Chr(48)+Chr(15)
       
EndIf  

If NLINHA >64 
   Then 
        If ENCONTRADO_INCONSISTENCIA
          Then FileWrite Append ARQIMP From "\f"
          NPAGINA = NPAGINA+1
        EndIf
        NLINHA=4
        gera_cabecalho()
                                     
EndIf


FileWrite Append ARQIMP From Format("W11",[Numero do Documento]) +Spaces(2) + Format("W4",[Answer->Codigo]) + Spaces(1) + 
                                               Format("W37",[Answer->Razao Social]) + Spaces(2)   + Format("W15",strval([Valor do Documento]))  + 
                                               Spaces(2) +  Format("W14",[Numero do Lancamento]) + Spaces(2) +Format("D13",[Data_Inclusao]) +"\n"
NLINHA = NLINHA + 1          
ENCONTRADO_INCONSISTENCIA=True

endproc


;*******************************************************************************
;* Rotina Para Criar Cabe‡alho                                                 *
;*******************************************************************************
proc gera_cabecalho()

FileWrite Append ARQIMP From "\n" 
FileWrite Append ARQIMP From Fill("-",132)
                             + "\n"+Spaces(78)+ "EmissÆo: " + Format("D13",Today()) + "-" + Time() + Spaces(6) + "Pg.: " + StrVal(NPAGINA) + "\n"
                             + Fill("-",132)
                             + "\n\n"+Format("W132,AC","Relat¢rio de Lan‡amentos que j  constam no Contas a Receber") + "\n\n"
                                                                                      
FileWrite Append ARQIMP From "N§Documento" + Spaces(2) + "Cliente"    +Spaces(37)+"Valor Documento" +Spaces(2) + 
                             "N§Lan‡amentoCR" +Spaces(2) + "DtInclusaoCR" + "\n"
FileWrite Append ARQIMP From Fill("-",11) + Spaces(2) + Fill("-",42) +Spaces(2) + Fill("-",15)
                             +Spaces(2) +  Fill("-",14)    +Spaces(2) +  Fill("-",12)  + "\n"

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_TPCONTRATO"        : Campo="TG_DESTINAT"
            Case Campo="TG_GRPVENC"           : Campo="TG_TPCONTRATO"
            Case Campo="TG_DTREF"             : Campo="TG_GRPVENC"
            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"      : Campo="TG_DESTINAT"
                    Case Campo="TG_DESTINAT"     : Campo="TG_TPCONTRATO"   
                    Case Campo="TG_TPCONTRATO"   : Campo="TG_GRPVENC"
                    Case Campo="TG_GRPVENC"      : Campo="TG_DTREF"
                    Case Campo="TG_DTREF"        : Campo="YES"
              EndSwitch
          EndIf
          RefreshDialog
   EndSwitch
EndIf
Switch
  Case Campo="":
     MSG_CAMPO=""
  Case Campo="TG_EMPRESA":
     MSG_CAMPO="Informe uma empresa"           
Endswitch
Monta_Prompt(MSG_CAMPO,TECLA)
Return Temp
EndProc

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

VSDGEMPRESA   =""
VSDGDESTINAT  =""
VSDGTPCONTRATO=""
VSDGGRPVENC   =""
VSDGDTREF     =BlankDate()
DISPOSITIVO_OPCAO="V"

While True
  ShowDialog "Gera Movimenta‡„o de Cobran‡a/Loca‡„o" Proc "SD_Dialog"
  Trigger "OPEN","ARRIVE"
  Key "F1","ENTER","ESC",
      -104, -105, -106, -107, -108, -109, -110, -111, -112, -113, -139, -140  
   @ 05,12   Height 15 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_NOMEMP" 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 "Tipo do Contrato"  For "TG_TPCONTRATO"
    Accept @ 05,01 Width 07 "A6"  Picture "[&,#][#*#]" Tag "TG_TPCONTRATO" To VSDGTPCONTRATO
    Accept @ 05,09 Width 25 "A20" Picture "!*!" Tag "TG_NOMTPCONTRATO"  To VSDGNOMTPCONTRATO

    Label  @ 06,00 "Grupo de Vencimento"  For "TG_GRPVENC"
    Accept @ 07,01 Width 07 "A4"  Picture "[&,#][#*#]" Tag "TG_GRPVENC" To VSDGGRPVENC
    Accept @ 07,09 Width 25 "A20" Picture "!*!" Tag "TG_NOMGRPVENC"  To VSDGNOMGRPVENC

    Label  @ 08,00 "Data Referente" For "TG_DTREF"
    Accept @ 09,01 Width 13 "D"  Picture "#[#];.##;.##[##]" Tag "TG_DTREF" To VSDGDTREF

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

  EndDialog
  If Not RetVal Then QuitLoop EndIf
  If Isblank(VSDGEMPRESA) or VSDGEMPRESA="0000"
    Then FastMsg("Empresa Inv lida !")
          Loop
  EndIf  
  
  ENCONTRADO_INCONSISTENCIA = false
  NPAGINA = 1
  
    
  SELECIONA()
  AGUARDE("Aguarde, Processando")
  
  If IsEmpty("Answer")
     Then MENSAGEM("N„o Existem Registros a Processar!")
          Loop
  EndIf
  
  ARQIMP = PrivDir()+"Temperro.txt"
  geracobranca()
  
  If ENCONTRADO_INCONSISTENCIA = true
  Then While True 
         Mensagem("Foi detectado lan‡amentos j  gerados no Contas a Receber//Ser  impresso um relat¢rio para conferˆncia")
         DISPOSITIVO()
         If ok="N" Then QuitLoop EndIF
         ImpriArq(ARQIMP)
         QuitLoop
       EndWhile 
  EndIF
  
  mensagem("Fim do processo !")
  Delete "Answer"
  
EndWhile
ClearAll
Release Vars All
Release Procs All
