

; Script fora de uso, verificar quem precisa e analisar !!
;Ultima Alteracao: 31/08/2017 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes           

return


;** GeraOFCR **************************************************************************
;*  Monta Nota Fiscal dos Cupons em Aberto (Contas a Receber)                         *
;**************************************************************************************
;Autor           : Vise Informatica (VISERP)
;Desenvolvido    : 10/09/2004 por Jos‚ Lu¡s Ameno da Silva
;Ultima Alteracao: 20/12/2004 por Anivel Augusto Rodrigues
;Motivo Alteracao: Round Impostos
;Ultima Alteracao: 19/10/2007 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes Cupom
;Ultima Alteracao: 25/08/2015 por Kamila Gomes 
;Motivo Alteracao: Altera‡Æo no processo dos Numero do Lan‡amento - Numero_Lancamento()
;Ultima Alteracao: 07/12/2015 por Anivel Augusto Rodrigues
;Motivo Alteracao: exclusao referencia ao campo INSS
;Ultima Alteracao: 27/05/2016 por Bruno Carvalho 
;Motivo Alteracao: Alterado NUM_LANCTO = PROXLANCTO_NLANC -> Padroniza‡Æo da rotina de Numero_Lancamento()
;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 para Selecionar Registros                                            *
;*******************************************************************************
Proc Seleciona()
ClearAll

{Ask} {\\Sistemas\\CtaRec\\Duplic}
Moveto [Codigo da Empresa      ] Check TypeIn "~VSDGEMPRESA"
Moveto [Numero do Documento    ] Check
Moveto [Tipo do Documento      ] TypeIn "CUP.."
Moveto [Serie do Documento     ] Check
Moveto [Data de Emissao        ] Check TypeIn ">=~VSDGDTINI,<=~VSDGDTFIM"
Moveto [Codigo do Destinatario ] TypeIn "~VSDGDESTINAT"
Moveto [Saldo do Documento     ] TypeIn ">0.01"
Do_It!
ClearAll

If IsEmpty("Answer")
   Then Return
EndIf

OBS_NF=""
Wc=""
View "Answer"
If NRecords("Answer")=1
   Then OBS_NF="Conforme Cupom Fiscal-> "+[Numero do Documento]
   Else Scan
          If RecNo()=1
             Then Wc=[Numero do Documento]
             Else Wc=Wc+", "+[Numero do Documento]
          EndIf
         EndScan
         OBS_NF="Conforme Cupons Fiscais-> "+Wc
EndIf
ClearAll

{Ask} {Answer}
Moveto [Codigo da Empresa      ] Example "emp"
Moveto [Numero do Documento    ] Example "numero"
Moveto [Serie do Documento     ] Example "serie"
Moveto [Data de Emissao        ] Check
{Ask} {NotaI} Check
Moveto [Codigo da Empresa      ] Example "emp"
Moveto [Numero do Documento    ] Example "numero"
Moveto [Serie do Documento     ] Example "serie"
Do_It!
ClearAll

{Ask} {Answer}
Moveto [Data de Emissao         ] Check
Moveto [Codigo do Item          ] Check
Moveto [Quantidade              ] TypeIn "Calc Sum as Quantidade"
Moveto [Preco Unitario          ] Check
Moveto [Tributacao de IPI       ] Check
Moveto [Aliquota Reduzida BCIPI ] Check
Moveto [Aliquota de IPI         ] Check
Moveto [Tributacao de ICMS      ] Check
Moveto [Aliquota Reduzida BCICMS] Check
Moveto [Aliquota de ICMS        ] Check
Moveto [Tributacao de ISSQN     ] Check
Moveto [Aliquota de ISSQN       ] Check
Do_It!
ClearAll

EndProc  ; (Seleciona)

;*******************************************************************************
;* Rotina Geracao dos Dados da FaturaI,FaturaC                                 *
;*******************************************************************************
Proc Gera_NF()

SEQ = 1
CoEdit "Answer","FaturaI","FaturaC","Destin"

Moveto "FaturaC"
While True
  End
  Moveto [Numero da OF]
  If Numero_Lancamento("Interno","")
     Then ORDFAT = PROXLANCTO_NLANC
          Release Vars PROXLANCTO_NLANC
  EndIf
  Moveto [Numero da OF]
  Locate ORDFAT
  If Not Retval
     Then End Down
          [Numero da OF]=ORDFAT
          If Not IsLockRecord()
             Then QuitLoop
          EndIf
  EndIf
EndWhile

SEQ=1
Moveto "Answer"
Scan
  Moveto "FaturaI"
  End
  Down
  [Numero da OF            ]=ORDFAT
  [Item da OF              ]=SEQ
  [Numero Pedido_Orcamento ]=""
  [Codigo do Item          ]=[Answer->Codigo do Item]
  [Quantidade              ]=[Answer->Quantidade    ]
  [Preco Unitario          ]=[Answer->Preco Unitario]
  [Preco Total             ]=Round([Answer->Quantidade]*[Answer->Preco Unitario],2)
  [Preco Unitario Tabela   ]=[Preco Unitario]
  [Tributacao de IPI       ]=[Answer->Tributacao de IPI       ]
  [Aliquota Reduzida BCIPI ]=[Answer->Aliquota Reduzida BCIPI ]
  [Aliquota de IPI         ]=[Answer->Aliquota de IPI         ]
  [Valor do IPI            ]=Round(([Preco Total]*[Aliquota de IPI])/100,2)
  [Tributacao de ICMS      ]=[Answer->Tributacao de ICMS      ]
  [Aliquota Reduzida BCICMS]=[Answer->Aliquota Reduzida BCICMS]
  [Aliquota de ICMS        ]=[Answer->Aliquota de ICMS        ]
  [Valor do ICMS           ]=Round(([Preco Total]*[Aliquota de ICMS])/100,2)
  [Tributacao de ISSQN     ]=[Answer->Tributacao de ISSQN     ]
  [Aliquota de ISSQN       ]=[Answer->Aliquota de ISSQN       ]
  [Valor do ISSQN          ]=Round(([Preco Total]*[Aliquota de ISSQN])/100,2)
  SEQ=SEQ+1
  Moveto "Answer"
EndScan

Moveto "FaturaC"
Moveto [Numero da OF]
Locate ORDFAT
[Codigo                   ]=VSDGDESTINAT
[Codigo da Empresa        ]=VSDGEMPRESA
[Nome Fantasia Empresa    ]=VSDGNOMEMP
[Data de Emissao          ]=[Answer->Data de Emissao  ] 
[Data de Saida            ]=Today()
[Hora de Saida            ]=Time()

Moveto "Destin"
Moveto [Descricao da Destinacao]
Locate "FATURA CUPOM"
If Retval
   Then CODDEST = [Codigo da Destinacao]
   Else CODDEST = ""
EndIf

Moveto "FaturaC"
[Codigo da Destinacao     ]=CODDEST
[Descricao da Destinacao  ]=[Destin->Descricao da Destinacao]

If IsBlank([Observacao na Nota Fiscal])
   Then [Observacao na Nota Fiscal]=OBS_NF
   Else [Observacao na Nota Fiscal]=[Observacao na Nota Fiscal]+" "+OBS_NF
EndIf
Do_It!
ClearAll

EndProc  ; (Gera_NF)

;*******************************************************************************
;* 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_DTINI"         : Campo="TG_DESTINAT"
            Case Campo="TG_DTFIM"         : Campo="TG_DTINI"
            Case Campo="YES" Or Campo="NO": Campo="TG_DESTINAT"
          EndSwitch
     Case Evento["KeyCode"] = 13:
          Temp=False
          If Checa_TAG()
             Then Switch
                    Case Campo="TG_EMPRESA":
                         If Not IsBlank(VSDGEMPRESA)
                            Then Campo="TG_DESTINAT"
                            Else VSDGNOMEMP=""
                         EndIf
                    Case Campo="TG_DESTINAT":
                         If Not IsBlank(VSDGDESTINAT)
                            Then Campo="TG_DTINI"
                            Else VSDGNOMDEST=""
                         EndIf
                    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 a Empresa"
  Case Campo="TG_DESTINAT":
       MSG_CAMPO="Informe o Cliente"
  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\\Bibliot,\\Sistemas\\Cadastro\\Bib_Show,\\Sistemas\\Vendas\\Bib_Fat"

LimpAguarde()

VSDGEMPRESA  = ""
VSDGNOMEMP   = ""
VSDGDESTINAT = ""
VSDGNOMDEST  = ""
VSDGDTINI    = BlankDate()
VSDGDTFIM    = BlankDate()
ClearAll

While True

  ShowDialog "Relaciona Cupons Fiscais para montar Nota Fiscal" Proc "SD_Dialog"
  Trigger "OPEN","ARRIVE"
  Key "F1","ENTER","ESC","TAB"
   @ 05,12   Height 11 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 "Per¡odo Referente de" For "TG_DTINI"
    Accept @ 05,03 Width 13 "D"  Picture "#[#];.##;.##[##]" Tag "TG_DTINI" To VSDGDTINI
    Label  @ 05,16 "at‚" For "TG_DTFIM"
    Accept @ 05,21 Width 13 "D"  Picture "#[#];.##;.##[##]" Tag "TG_DTFIM" To VSDGDTFIM

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

  EndDialog
  If Not RetVal Then QuitLoop EndIf

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

  AGUARDE("Aguarde, gerando dados")
  Seleciona()

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

  Gera_NF()
  MSG="Anote o N£mero da OF gerada:// //"
  MSG=MSG+ORDFAT+"//"
  Mensagem(MSG)

  ClearAll
  If IsTable("Answer")
     Then Delete "Answer"
  EndIf

EndWhile
ClearAll
Release Vars All
Release Procs All
